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: