Annotation of win32/sql/mysql/include/mysql_com.h, revision 1.1.1.1

1.1       parser      1: /* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
                      2:    This file is public domain and comes with NO WARRANTY of any kind */
                      3: 
                      4: /*
                      5: ** Common definition between mysql server & client
                      6: */
                      7: 
                      8: #ifndef _mysql_com_h
                      9: #define _mysql_com_h
                     10: 
                     11: #ifdef __cplusplus
                     12: extern "C" {
                     13: #endif
                     14: 
                     15: #define NAME_LEN       64              /* Field/table name length */
                     16: #define HOSTNAME_LENGTH 60
                     17: #define USERNAME_LENGTH 16
                     18: 
                     19: #define LOCAL_HOST     "localhost"
                     20: #define LOCAL_HOST_NAMEDPIPE "."
                     21: 
                     22: #ifndef _CUSTOMCONFIG_
                     23: #define MYSQL_PORT     3306            /* Alloced by ISI for MySQL */
                     24: #else
                     25: #include "custom_conf.h"
                     26: #endif
                     27: 
                     28: #define MYSQL_UNIX_ADDR "/tmp/mysql.sock"
                     29: #if defined(__EMX__) || defined(__OS2__)
                     30: #undef MYSQL_UNIX_ADDR
                     31: #define MYSQL_OS2_ADDR "\\socket\\MySQL"
                     32: #define MYSQL_UNIX_ADDR MYSQL_OS2_ADDR
                     33: #endif
                     34: #if defined(__WIN32__) && !defined( _CUSTOMCONFIG_)
                     35: #define MYSQL_NAMEDPIPE "MySQL"
                     36: #define MYSQL_SERVICENAME "MySql"
                     37: #endif /* __WIN32__ */
                     38: 
                     39: enum enum_server_command {COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY,
                     40:                          COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB,COM_REFRESH,
                     41:                          COM_SHUTDOWN,COM_STATISTICS,
                     42:                          COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL,
                     43:                          COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT,
                     44:                          COM_CHANGE_USER};
                     45: 
                     46: #define NOT_NULL_FLAG  1               /* Field can't be NULL */
                     47: #define PRI_KEY_FLAG   2               /* Field is part of a primary key */
                     48: #define UNIQUE_KEY_FLAG 4              /* Field is part of a unique key */
                     49: #define MULTIPLE_KEY_FLAG 8            /* Field is part of a key */
                     50: #define BLOB_FLAG      16              /* Field is a blob */
                     51: #define UNSIGNED_FLAG  32              /* Field is unsigned */
                     52: #define ZEROFILL_FLAG  64              /* Field is zerofill */
                     53: #define BINARY_FLAG    128
                     54: /* The following are only sent to new clients */
                     55: #define ENUM_FLAG      256             /* field is an enum */
                     56: #define AUTO_INCREMENT_FLAG 512                /* field is a autoincrement field */
                     57: #define TIMESTAMP_FLAG 1024            /* Field is a timestamp */
                     58: #define SET_FLAG       2048            /* field is a set */
                     59: #define PART_KEY_FLAG  16384           /* Intern; Part of some key */
                     60: #define GROUP_FLAG     32768           /* Intern: Group field */
                     61: #define UNIQUE_FLAG    65536           /* Intern: Used by sql_yacc */
                     62: 
                     63: #define REFRESH_GRANT          1       /* Refresh grant tables */
                     64: #define REFRESH_LOG            2       /* Start on new log file */
                     65: #define REFRESH_TABLES         4       /* close all tables */
                     66: #define REFRESH_HOSTS          8       /* Flush host cache */
                     67: #define REFRESH_STATUS         16      /* Flush status variables */
                     68: #define REFRESH_FAST           32768   /* Intern flag */
                     69: 
                     70: #define CLIENT_LONG_PASSWORD   1       /* new more secure passwords */
                     71: #define CLIENT_FOUND_ROWS      2       /* Found instead of affected rows */
                     72: #define CLIENT_LONG_FLAG       4       /* Get all column flags */
                     73: #define CLIENT_CONNECT_WITH_DB 8       /* One can specify db on connect */
                     74: #define CLIENT_NO_SCHEMA       16      /* Don't allow database.table.column */
                     75: #define CLIENT_COMPRESS                32      /* Can use compression protocol */
                     76: #define CLIENT_ODBC            64      /* Odbc client */
                     77: #define CLIENT_LOCAL_FILES     128     /* Can use LOAD DATA LOCAL */
                     78: #define CLIENT_IGNORE_SPACE    256     /* Ignore spaces before '(' */
                     79: #define CLIENT_CHANGE_USER     512     /* Support the mysql_change_user() */
                     80: #define CLIENT_INTERACTIVE     1024    /* This is an interactive client */
                     81: #define CLIENT_SSL              2048     /* Switch to SSL after handshake */
                     82: #define CLIENT_IGNORE_SIGPIPE   4096     /* IGNORE sigpipes */
                     83: 
                     84: #define MYSQL_ERRMSG_SIZE      200
                     85: #define NET_READ_TIMEOUT       30              /* Timeout on read */
                     86: #define NET_WRITE_TIMEOUT      60              /* Timeout on write */
                     87: #define NET_WAIT_TIMEOUT       8*60*60         /* Wait for new query */
                     88: 
                     89: #ifndef Vio_defined
                     90: #define Vio_defined
                     91: #ifdef HAVE_VIO
                     92: class Vio;                                     /* Fill Vio class in C++ */
                     93: #else
                     94: struct st_vio;                                 /* Only C */
                     95: typedef struct st_vio Vio;
                     96: #endif
                     97: #endif
                     98: 
                     99: typedef struct st_net {
                    100:   Vio* vio;
                    101:   //my_socket fd;                                      /* For Perl DBI/dbd */
                    102:   int fcntl;
                    103:   unsigned char *buff,*buff_end,*write_pos,*read_pos;
                    104:   char last_error[MYSQL_ERRMSG_SIZE];
                    105:   unsigned int last_errno,max_packet,timeout,pkt_nr;
                    106:   my_bool error,return_errno,compress;
                    107: 
                    108:   unsigned long remain_in_buf,length, buf_length, where_b;
                    109:   my_bool more;
                    110:   char save_char;
                    111: } NET;
                    112: 
                    113: #define packet_error ((unsigned int) -1)
                    114: 
                    115: enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
                    116:                        FIELD_TYPE_SHORT,  FIELD_TYPE_LONG,
                    117:                        FIELD_TYPE_FLOAT,  FIELD_TYPE_DOUBLE,
                    118:                        FIELD_TYPE_NULL,   FIELD_TYPE_TIMESTAMP,
                    119:                        FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24,
                    120:                        FIELD_TYPE_DATE,   FIELD_TYPE_TIME,
                    121:                        FIELD_TYPE_DATETIME, FIELD_TYPE_YEAR,
                    122:                        FIELD_TYPE_NEWDATE,
                    123:                        FIELD_TYPE_ENUM=247,
                    124:                        FIELD_TYPE_SET=248,
                    125:                        FIELD_TYPE_TINY_BLOB=249,
                    126:                        FIELD_TYPE_MEDIUM_BLOB=250,
                    127:                        FIELD_TYPE_LONG_BLOB=251,
                    128:                        FIELD_TYPE_BLOB=252,
                    129:                        FIELD_TYPE_VAR_STRING=253,
                    130:                        FIELD_TYPE_STRING=254
                    131: };
                    132: 
                    133: #define FIELD_TYPE_CHAR FIELD_TYPE_TINY                /* For compability */
                    134: #define FIELD_TYPE_INTERVAL FIELD_TYPE_ENUM    /* For compability */
                    135: 
                    136: extern unsigned long max_allowed_packet;
                    137: extern unsigned long net_buffer_length;
                    138: 
                    139: #define net_new_transaction(net) ((net)->pkt_nr=0)
                    140: 
                    141: int    my_net_init(NET *net, Vio* vio);
                    142: void   net_end(NET *net);
                    143: void   net_clear(NET *net);
                    144: int    net_flush(NET *net);
                    145: int    my_net_write(NET *net,const char *packet,unsigned long len);
                    146: int    net_write_command(NET *net,unsigned char command,const char *packet,
                    147:                          unsigned long len);
                    148: int    net_real_write(NET *net,const char *packet,unsigned long len);
                    149: unsigned int   my_net_read(NET *net);
                    150: 
                    151: struct rand_struct {
                    152:   unsigned long seed1,seed2,max_value;
                    153:   double max_value_dbl;
                    154: };
                    155: 
                    156:   /* The following is for user defined functions */
                    157: 
                    158: enum Item_result {STRING_RESULT,REAL_RESULT,INT_RESULT};
                    159: 
                    160: typedef struct st_udf_args
                    161: {
                    162:   unsigned int arg_count;              /* Number of arguments */
                    163:   enum Item_result *arg_type;          /* Pointer to item_results */
                    164:   char **args;                         /* Pointer to argument */
                    165:   unsigned long *lengths;              /* Length of string arguments */
                    166:   char *maybe_null;                    /* Set to 1 for all maybe_null args */
                    167: } UDF_ARGS;
                    168: 
                    169:   /* This holds information about the result */
                    170: 
                    171: typedef struct st_udf_init
                    172: {
                    173:   my_bool maybe_null;                  /* 1 if function can return NULL */
                    174:   unsigned int decimals;               /* for real functions */
                    175:   unsigned int max_length;             /* For string functions */
                    176:   char   *ptr;                         /* free pointer for function data */
                    177:   my_bool const_item;                  /* 0 if result is independent of arguments */
                    178: } UDF_INIT;
                    179: 
                    180:   /* Constants when using compression */
                    181: #define NET_HEADER_SIZE 4              /* standard header size */
                    182: #define COMP_HEADER_SIZE 3             /* compression header extra size */
                    183: 
                    184:   /* Prototypes to password functions */
                    185: 
                    186: void randominit(struct rand_struct *,unsigned long seed1,
                    187:                unsigned long seed2);
                    188: double rnd(struct rand_struct *);
                    189: void make_scrambled_password(char *to,const char *password);
                    190: void get_salt_from_password(unsigned long *res,const char *password);
                    191: void make_password_from_salt(char *to, unsigned long *hash_res);
                    192: char *scramble(char *to,const char *message,const char *password,
                    193:               my_bool old_ver);
                    194: my_bool check_scramble(const char *, const char *message,
                    195:                       unsigned long *salt,my_bool old_ver);
                    196: char *get_tty_password(char *opt_message);
                    197: void hash_password(unsigned long *result, const char *password);
                    198: 
                    199: /* Some other useful functions */
                    200: 
                    201: void my_init(void);
                    202: void load_defaults(const char *conf_file, const char **groups,
                    203:                   int *argc, char ***argv);
                    204: 
                    205: #define NULL_LENGTH ((unsigned long) ~0) /* For net_store_length */
                    206: 
                    207: #ifdef __WIN32__
                    208: #define socket_errno WSAGetLastError()
                    209: #else
                    210: #define socket_errno errno
                    211: #endif
                    212: 
                    213: #ifdef __cplusplus
                    214: }
                    215: #endif
                    216: #endif

E-mail: