123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632 |
- #ifndef _mysql_com_h
- #define _mysql_com_h
- #include "binary_log_types.h"
- #include "my_command.h"
- #define HOSTNAME_LENGTH 60
- #define SYSTEM_CHARSET_MBMAXLEN 3
- #define FILENAME_CHARSET_MBMAXLEN 5
- #define NAME_CHAR_LEN 64
- #define USERNAME_CHAR_LENGTH 32
- #define USERNAME_CHAR_LENGTH_STR "32"
- #ifndef NAME_LEN
- #define NAME_LEN (NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN)
- #endif
- #define USERNAME_LENGTH (USERNAME_CHAR_LENGTH*SYSTEM_CHARSET_MBMAXLEN)
- #define CONNECT_STRING_MAXLEN 1024
- #define MYSQL_AUTODETECT_CHARSET_NAME "auto"
- #define SERVER_VERSION_LENGTH 60
- #define SQLSTATE_LENGTH 5
- #define TABLE_COMMENT_INLINE_MAXLEN 180
- #define TABLE_COMMENT_MAXLEN 2048
- #define COLUMN_COMMENT_MAXLEN 1024
- #define INDEX_COMMENT_MAXLEN 1024
- #define TABLE_PARTITION_COMMENT_MAXLEN 1024
- #define MAX_PACKET_LENGTH (256L*256L*256L-1)
- #define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
- #define LOCAL_HOST "localhost"
- #define LOCAL_HOST_NAMEDPIPE "."
- #if defined(_WIN32)
- #define MYSQL_NAMEDPIPE "MySQL"
- #define MYSQL_SERVICENAME "MySQL"
- #endif
- #define FRM_GCOL_HEADER_SIZE 4
- #define GENERATED_COLUMN_EXPRESSION_MAXLEN 65535 - FRM_GCOL_HEADER_SIZE
- #define SCRAMBLE_LENGTH 20
- #define AUTH_PLUGIN_DATA_PART_1_LENGTH 8
- #define SCRAMBLED_PASSWORD_CHAR_LENGTH (SCRAMBLE_LENGTH*2+1)
- #define NOT_NULL_FLAG 1
- #define PRI_KEY_FLAG 2
- #define UNIQUE_KEY_FLAG 4
- #define MULTIPLE_KEY_FLAG 8
- #define BLOB_FLAG 16
- #define UNSIGNED_FLAG 32
- #define ZEROFILL_FLAG 64
- #define BINARY_FLAG 128
- #define ENUM_FLAG 256
- #define AUTO_INCREMENT_FLAG 512
- #define TIMESTAMP_FLAG 1024
- #define SET_FLAG 2048
- #define NO_DEFAULT_VALUE_FLAG 4096
- #define ON_UPDATE_NOW_FLAG 8192
- #define NUM_FLAG 32768
- #define PART_KEY_FLAG 16384
- #define GROUP_FLAG 32768
- #define UNIQUE_FLAG 65536
- #define BINCMP_FLAG 131072
- #define GET_FIXED_FIELDS_FLAG (1 << 18)
- #define FIELD_IN_PART_FUNC_FLAG (1 << 19)
- #define FIELD_IN_ADD_INDEX (1 << 20)
- #define FIELD_IS_RENAMED (1<< 21)
- #define FIELD_FLAGS_STORAGE_MEDIA 22
- #define FIELD_FLAGS_STORAGE_MEDIA_MASK (3 << FIELD_FLAGS_STORAGE_MEDIA)
- #define FIELD_FLAGS_COLUMN_FORMAT 24
- #define FIELD_FLAGS_COLUMN_FORMAT_MASK (3 << FIELD_FLAGS_COLUMN_FORMAT)
- #define FIELD_IS_DROPPED (1<< 26)
- #define EXPLICIT_NULL_FLAG (1<< 27)
- #define REFRESH_GRANT 1
- #define REFRESH_LOG 2
- #define REFRESH_TABLES 4
- #define REFRESH_HOSTS 8
- #define REFRESH_STATUS 16
- #define REFRESH_THREADS 32
- #define REFRESH_SLAVE 64
- #define REFRESH_MASTER 128
- #define REFRESH_ERROR_LOG 256
- #define REFRESH_ENGINE_LOG 512
- #define REFRESH_BINARY_LOG 1024
- #define REFRESH_RELAY_LOG 2048
- #define REFRESH_GENERAL_LOG 4096
- #define REFRESH_SLOW_LOG 8192
- #define REFRESH_READ_LOCK 16384
- #define REFRESH_FAST 32768
- #define REFRESH_QUERY_CACHE 65536
- #define REFRESH_QUERY_CACHE_FREE 0x20000L
- #define REFRESH_DES_KEY_FILE 0x40000L
- #define REFRESH_USER_RESOURCES 0x80000L
- #define REFRESH_FOR_EXPORT 0x100000L
- #define REFRESH_OPTIMIZER_COSTS 0x200000L
- #define CLIENT_LONG_PASSWORD 1
- #define CLIENT_FOUND_ROWS 2
- #define CLIENT_LONG_FLAG 4
- #define CLIENT_CONNECT_WITH_DB 8
- #define CLIENT_NO_SCHEMA 16
- #define CLIENT_COMPRESS 32
- #define CLIENT_ODBC 64
- #define CLIENT_LOCAL_FILES 128
- #define CLIENT_IGNORE_SPACE 256
- #define CLIENT_PROTOCOL_41 512
- #define CLIENT_INTERACTIVE 1024
- #define CLIENT_SSL 2048
- #define CLIENT_IGNORE_SIGPIPE 4096
- #define CLIENT_TRANSACTIONS 8192
- #define CLIENT_RESERVED 16384
- #define CLIENT_RESERVED2 32768
- #define CLIENT_MULTI_STATEMENTS (1UL << 16)
- #define CLIENT_MULTI_RESULTS (1UL << 17)
- #define CLIENT_PS_MULTI_RESULTS (1UL << 18)
- #define CLIENT_PLUGIN_AUTH (1UL << 19)
- #define CLIENT_CONNECT_ATTRS (1UL << 20)
- #define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL << 21)
- #define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS (1UL << 22)
- #define CLIENT_SESSION_TRACK (1UL << 23)
- #define CLIENT_DEPRECATE_EOF (1UL << 24)
- #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
- #define CLIENT_REMEMBER_OPTIONS (1UL << 31)
- #ifdef HAVE_COMPRESS
- #define CAN_CLIENT_COMPRESS CLIENT_COMPRESS
- #else
- #define CAN_CLIENT_COMPRESS 0
- #endif
- #define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD \
- | CLIENT_FOUND_ROWS \
- | CLIENT_LONG_FLAG \
- | CLIENT_CONNECT_WITH_DB \
- | CLIENT_NO_SCHEMA \
- | CLIENT_COMPRESS \
- | CLIENT_ODBC \
- | CLIENT_LOCAL_FILES \
- | CLIENT_IGNORE_SPACE \
- | CLIENT_PROTOCOL_41 \
- | CLIENT_INTERACTIVE \
- | CLIENT_SSL \
- | CLIENT_IGNORE_SIGPIPE \
- | CLIENT_TRANSACTIONS \
- | CLIENT_RESERVED \
- | CLIENT_RESERVED2 \
- | CLIENT_MULTI_STATEMENTS \
- | CLIENT_MULTI_RESULTS \
- | CLIENT_PS_MULTI_RESULTS \
- | CLIENT_SSL_VERIFY_SERVER_CERT \
- | CLIENT_REMEMBER_OPTIONS \
- | CLIENT_PLUGIN_AUTH \
- | CLIENT_CONNECT_ATTRS \
- | CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA \
- | CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS \
- | CLIENT_SESSION_TRACK \
- | CLIENT_DEPRECATE_EOF \
- )
- #define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \
- & ~CLIENT_COMPRESS) \
- & ~CLIENT_SSL_VERIFY_SERVER_CERT)
- #define SERVER_STATUS_IN_TRANS 1
- #define SERVER_STATUS_AUTOCOMMIT 2
- #define SERVER_MORE_RESULTS_EXISTS 8
- #define SERVER_QUERY_NO_GOOD_INDEX_USED 16
- #define SERVER_QUERY_NO_INDEX_USED 32
- #define SERVER_STATUS_CURSOR_EXISTS 64
- #define SERVER_STATUS_LAST_ROW_SENT 128
- #define SERVER_STATUS_DB_DROPPED 256
- #define SERVER_STATUS_NO_BACKSLASH_ESCAPES 512
- #define SERVER_STATUS_METADATA_CHANGED 1024
- #define SERVER_QUERY_WAS_SLOW 2048
- #define SERVER_PS_OUT_PARAMS 4096
- #define SERVER_STATUS_IN_TRANS_READONLY 8192
- #define SERVER_SESSION_STATE_CHANGED (1UL << 14)
- #define SERVER_STATUS_CLEAR_SET (SERVER_QUERY_NO_GOOD_INDEX_USED| \
- SERVER_QUERY_NO_INDEX_USED|\
- SERVER_MORE_RESULTS_EXISTS|\
- SERVER_STATUS_METADATA_CHANGED |\
- SERVER_QUERY_WAS_SLOW |\
- SERVER_STATUS_DB_DROPPED |\
- SERVER_STATUS_CURSOR_EXISTS|\
- SERVER_STATUS_LAST_ROW_SENT|\
- SERVER_SESSION_STATE_CHANGED)
- #define MYSQL_ERRMSG_SIZE 512
- #define NET_READ_TIMEOUT 30
- #define NET_WRITE_TIMEOUT 60
- #define NET_WAIT_TIMEOUT 8*60*60
- #define ONLY_KILL_QUERY 1
- struct st_vio;
- typedef struct st_vio Vio;
- #define MAX_TINYINT_WIDTH 3
- #define MAX_SMALLINT_WIDTH 5
- #define MAX_MEDIUMINT_WIDTH 8
- #define MAX_INT_WIDTH 10
- #define MAX_BIGINT_WIDTH 20
- #define MAX_CHAR_WIDTH 255
- #define MAX_BLOB_WIDTH 16777216
- typedef struct st_net {
- Vio *vio;
- unsigned char *buff,*buff_end,*write_pos,*read_pos;
- my_socket fd;
-
- unsigned long remain_in_buf,length, buf_length, where_b;
- unsigned long max_packet,max_packet_size;
- unsigned int pkt_nr,compress_pkt_nr;
- unsigned int write_timeout, read_timeout, retry_count;
- int fcntl;
- unsigned int *return_status;
- unsigned char reading_or_writing;
- char save_char;
- my_bool unused1;
- my_bool unused2;
- my_bool compress;
- my_bool unused3;
-
-
- unsigned char *unused;
- unsigned int last_errno;
- unsigned char error;
- my_bool unused4;
- my_bool unused5;
-
- char last_error[MYSQL_ERRMSG_SIZE];
-
- char sqlstate[SQLSTATE_LENGTH+1];
-
- void *extension;
- } NET;
- #define packet_error (~(unsigned long) 0)
- #define CLIENT_MULTI_QUERIES CLIENT_MULTI_STATEMENTS
- #define FIELD_TYPE_DECIMAL MYSQL_TYPE_DECIMAL
- #define FIELD_TYPE_NEWDECIMAL MYSQL_TYPE_NEWDECIMAL
- #define FIELD_TYPE_TINY MYSQL_TYPE_TINY
- #define FIELD_TYPE_SHORT MYSQL_TYPE_SHORT
- #define FIELD_TYPE_LONG MYSQL_TYPE_LONG
- #define FIELD_TYPE_FLOAT MYSQL_TYPE_FLOAT
- #define FIELD_TYPE_DOUBLE MYSQL_TYPE_DOUBLE
- #define FIELD_TYPE_NULL MYSQL_TYPE_NULL
- #define FIELD_TYPE_TIMESTAMP MYSQL_TYPE_TIMESTAMP
- #define FIELD_TYPE_LONGLONG MYSQL_TYPE_LONGLONG
- #define FIELD_TYPE_INT24 MYSQL_TYPE_INT24
- #define FIELD_TYPE_DATE MYSQL_TYPE_DATE
- #define FIELD_TYPE_TIME MYSQL_TYPE_TIME
- #define FIELD_TYPE_DATETIME MYSQL_TYPE_DATETIME
- #define FIELD_TYPE_YEAR MYSQL_TYPE_YEAR
- #define FIELD_TYPE_NEWDATE MYSQL_TYPE_NEWDATE
- #define FIELD_TYPE_ENUM MYSQL_TYPE_ENUM
- #define FIELD_TYPE_SET MYSQL_TYPE_SET
- #define FIELD_TYPE_TINY_BLOB MYSQL_TYPE_TINY_BLOB
- #define FIELD_TYPE_MEDIUM_BLOB MYSQL_TYPE_MEDIUM_BLOB
- #define FIELD_TYPE_LONG_BLOB MYSQL_TYPE_LONG_BLOB
- #define FIELD_TYPE_BLOB MYSQL_TYPE_BLOB
- #define FIELD_TYPE_VAR_STRING MYSQL_TYPE_VAR_STRING
- #define FIELD_TYPE_STRING MYSQL_TYPE_STRING
- #define FIELD_TYPE_CHAR MYSQL_TYPE_TINY
- #define FIELD_TYPE_INTERVAL MYSQL_TYPE_ENUM
- #define FIELD_TYPE_GEOMETRY MYSQL_TYPE_GEOMETRY
- #define FIELD_TYPE_BIT MYSQL_TYPE_BIT
-
- #define MYSQL_SHUTDOWN_KILLABLE_CONNECT (unsigned char)(1 << 0)
- #define MYSQL_SHUTDOWN_KILLABLE_TRANS (unsigned char)(1 << 1)
- #define MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE (unsigned char)(1 << 2)
- #define MYSQL_SHUTDOWN_KILLABLE_UPDATE (unsigned char)(1 << 3)
- enum mysql_enum_shutdown_level {
-
- SHUTDOWN_DEFAULT = 0,
-
- SHUTDOWN_WAIT_CONNECTIONS= MYSQL_SHUTDOWN_KILLABLE_CONNECT,
-
- SHUTDOWN_WAIT_TRANSACTIONS= MYSQL_SHUTDOWN_KILLABLE_TRANS,
-
- SHUTDOWN_WAIT_UPDATES= MYSQL_SHUTDOWN_KILLABLE_UPDATE,
-
- SHUTDOWN_WAIT_ALL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1),
-
- SHUTDOWN_WAIT_CRITICAL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1) + 1,
-
- KILL_QUERY= 254,
- KILL_CONNECTION= 255
- };
- enum enum_cursor_type
- {
- CURSOR_TYPE_NO_CURSOR= 0,
- CURSOR_TYPE_READ_ONLY= 1,
- CURSOR_TYPE_FOR_UPDATE= 2,
- CURSOR_TYPE_SCROLLABLE= 4
- };
- enum enum_mysql_set_option
- {
- MYSQL_OPTION_MULTI_STATEMENTS_ON,
- MYSQL_OPTION_MULTI_STATEMENTS_OFF
- };
- enum enum_session_state_type
- {
- SESSION_TRACK_SYSTEM_VARIABLES,
- SESSION_TRACK_SCHEMA,
- SESSION_TRACK_STATE_CHANGE,
- SESSION_TRACK_GTIDS,
- SESSION_TRACK_TRANSACTION_CHARACTERISTICS,
- SESSION_TRACK_TRANSACTION_STATE
- };
- #define SESSION_TRACK_BEGIN SESSION_TRACK_SYSTEM_VARIABLES
- #define SESSION_TRACK_END SESSION_TRACK_TRANSACTION_STATE
- #define IS_SESSION_STATE_TYPE(T) \
- (((int)(T) >= SESSION_TRACK_BEGIN) && ((T) <= SESSION_TRACK_END))
- #define net_new_transaction(net) ((net)->pkt_nr=0)
- #ifdef __cplusplus
- extern "C" {
- #endif
- my_bool my_net_init(NET *net, Vio* vio);
- void my_net_local_init(NET *net);
- void net_end(NET *net);
- void net_clear(NET *net, my_bool check_buffer);
- void net_claim_memory_ownership(NET *net);
- my_bool net_realloc(NET *net, size_t length);
- my_bool net_flush(NET *net);
- my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
- my_bool net_write_command(NET *net,unsigned char command,
- const unsigned char *header, size_t head_len,
- const unsigned char *packet, size_t len);
- my_bool net_write_packet(NET *net, const unsigned char *packet, size_t length);
- unsigned long my_net_read(NET *net);
- #ifdef MY_GLOBAL_INCLUDED
- void my_net_set_write_timeout(NET *net, uint timeout);
- void my_net_set_read_timeout(NET *net, uint timeout);
- #endif
- struct rand_struct {
- unsigned long seed1,seed2,max_value;
- double max_value_dbl;
- };
- #ifdef __cplusplus
- }
- #endif
-
- enum Item_result {STRING_RESULT=0, REAL_RESULT, INT_RESULT, ROW_RESULT,
- DECIMAL_RESULT};
- typedef struct st_udf_args
- {
- unsigned int arg_count;
- enum Item_result *arg_type;
- char **args;
- unsigned long *lengths;
- char *maybe_null;
- char **attributes;
- unsigned long *attribute_lengths;
- void *extension;
- } UDF_ARGS;
-
- typedef struct st_udf_init
- {
- my_bool maybe_null;
- unsigned int decimals;
- unsigned long max_length;
- char *ptr;
- my_bool const_item;
- void *extension;
- } UDF_INIT;
-
- #define NET_HEADER_SIZE 4
- #define COMP_HEADER_SIZE 3
-
- #ifdef __cplusplus
- extern "C" {
- #endif
- void randominit(struct rand_struct *, unsigned long seed1,
- unsigned long seed2);
- double my_rnd(struct rand_struct *);
- void create_random_string(char *to, unsigned int length, struct rand_struct *rand_st);
- void hash_password(unsigned long *to, const char *password, unsigned int password_len);
- void make_scrambled_password_323(char *to, const char *password);
- void scramble_323(char *to, const char *message, const char *password);
- my_bool check_scramble_323(const unsigned char *reply, const char *message,
- unsigned long *salt);
- void get_salt_from_password_323(unsigned long *res, const char *password);
- void make_password_from_salt_323(char *to, const unsigned long *salt);
- void make_scrambled_password(char *to, const char *password);
- void scramble(char *to, const char *message, const char *password);
- my_bool check_scramble(const unsigned char *reply, const char *message,
- const unsigned char *hash_stage2);
- void get_salt_from_password(unsigned char *res, const char *password);
- void make_password_from_salt(char *to, const unsigned char *hash_stage2);
- char *octet2hex(char *to, const char *str, unsigned int len);
- my_bool generate_sha256_scramble(unsigned char *dst, size_t dst_size,
- const char *src, size_t src_size, const char *rnd,
- size_t rnd_size);
- char *get_tty_password(const char *opt_message);
- const char *mysql_errno_to_sqlstate(unsigned int mysql_errno);
- my_bool my_thread_init(void);
- void my_thread_end(void);
- #ifdef MY_GLOBAL_INCLUDED
- ulong STDCALL net_field_length(uchar **packet);
- ulong STDCALL net_field_length_checked(uchar **packet, ulong max_length);
- my_ulonglong net_field_length_ll(uchar **packet);
- uchar *net_store_length(uchar *pkg, ulonglong length);
- unsigned int net_length_size(ulonglong num);
- unsigned int net_field_length_size(const unsigned char *pos);
- #endif
- #ifdef __cplusplus
- }
- #endif
- #define NULL_LENGTH ((unsigned long) ~0)
- #define MYSQL_STMT_HEADER 4
- #define MYSQL_LONG_DATA_HEADER 6
- #define NOT_FIXED_DEC 31
- #endif
|