Annotation of parser3/src/sql/mysql/mySQL32/include/mysql_com.h, revision 1.1

1.1     ! paf         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: