home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2001 May / SGI Freeware 2001 May - Disc 1.iso / dist / fw_mysql.idb / usr / freeware / include / mysql / mysql_com.h.z / mysql_com.h
Encoding:
C/C++ Source or Header  |  1999-10-18  |  6.3 KB  |  197 lines

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