📄 mysql.h
字号:
/* Copyright (C) 2000-2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *//* This file defines the client API to MySQL and also the ABI of the dynamically linked libmysqlclient. The ABI should never be changed in a released product of MySQL thus you need to take great care when changing the file. In case the file is changed so the ABI is broken, you must also update the SHAREDLIB_MAJOR_VERSION in configure.in .*/#ifndef _mysql_h#define _mysql_h#ifdef __CYGWIN__ /* CYGWIN implements a UNIX API */#undef WIN#undef _WIN#undef _WIN32#undef _WIN64#undef __WIN__#endif#ifdef __cplusplusextern "C" {#endif#ifndef _global_h /* If not standard header */#include <sys/types.h>#ifdef __LCC__#include <winsock.h> /* For windows */#endiftypedef char my_bool;#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)#define __WIN__#endif#if !defined(__WIN__)#define STDCALL#else#define STDCALL __stdcall#endiftypedef char * gptr;#ifndef my_socket_defined#ifdef __WIN__#define my_socket SOCKET#elsetypedef int my_socket;#endif /* __WIN__ */#endif /* my_socket_defined */#endif /* _global_h */#include "mysql_version.h"#include "mysql_com.h"#include "mysql_time.h"#include "typelib.h"#include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */extern unsigned int mysql_port;extern char *mysql_unix_port;#define CLIENT_NET_READ_TIMEOUT 365*24*3600 /* Timeout on read */#define CLIENT_NET_WRITE_TIMEOUT 365*24*3600 /* Timeout on write */#ifdef __NETWARE__#pragma pack(push, 8) /* 8 byte alignment */#endif#define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)#define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)#define IS_BLOB(n) ((n) & BLOB_FLAG)#define IS_NUM(t) ((t) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR || (t) == FIELD_TYPE_NEWDECIMAL)#define IS_NUM_FIELD(f) ((f)->flags & NUM_FLAG)#define INTERNAL_NUM_FIELD(f) (((f)->type <= FIELD_TYPE_INT24 && ((f)->type != FIELD_TYPE_TIMESTAMP || (f)->length == 14 || (f)->length == 8)) || (f)->type == FIELD_TYPE_YEAR)#define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING)typedef struct st_mysql_field { char *name; /* Name of column */ char *org_name; /* Original column name, if an alias */ char *table; /* Table of column if column was a field */ char *org_table; /* Org table name, if table was an alias */ char *db; /* Database for table */ char *catalog; /* Catalog for table */ char *def; /* Default value (set by mysql_list_fields) */ unsigned long length; /* Width of column (create length) */ unsigned long max_length; /* Max width for selected set */ unsigned int name_length; unsigned int org_name_length; unsigned int table_length; unsigned int org_table_length; unsigned int db_length; unsigned int catalog_length; unsigned int def_length; unsigned int flags; /* Div flags */ unsigned int decimals; /* Number of decimals in field */ unsigned int charsetnr; /* Character set */ enum enum_field_types type; /* Type of field. See mysql_com.h for types */} MYSQL_FIELD;typedef char **MYSQL_ROW; /* return data as array of strings */typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */#ifndef _global_h#if defined(NO_CLIENT_LONG_LONG)typedef unsigned long my_ulonglong;#elif defined (__WIN__)typedef unsigned __int64 my_ulonglong;#elsetypedef unsigned long long my_ulonglong;#endif#endif#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0)/* backward compatibility define - to be removed eventually */#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATEDtypedef struct st_mysql_rows { struct st_mysql_rows *next; /* list of rows */ MYSQL_ROW data; unsigned long length;} MYSQL_ROWS;typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */#include "my_alloc.h"typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;typedef struct st_mysql_data { my_ulonglong rows; unsigned int fields; MYSQL_ROWS *data; MEM_ROOT alloc; /* extra info for embedded library */ struct embedded_query_result *embedded_info;} MYSQL_DATA;enum mysql_option { MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE, MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP, MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE, MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT, MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT, MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION, MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH, MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT, MYSQL_OPT_SSL_VERIFY_SERVER_CERT};struct st_mysql_options { unsigned int connect_timeout, read_timeout, write_timeout; unsigned int port, protocol; unsigned long client_flag; char *host,*user,*password,*unix_socket,*db; struct st_dynamic_array *init_commands; char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name; char *ssl_key; /* PEM key file */ char *ssl_cert; /* PEM cert file */ char *ssl_ca; /* PEM CA file */ char *ssl_capath; /* PEM directory of CA-s? */ char *ssl_cipher; /* cipher to use */ char *shared_memory_base_name; unsigned long max_allowed_packet; my_bool use_ssl; /* if to use SSL or not */ my_bool compress,named_pipe; /* On connect, find out the replication role of the server, and establish connections to all the peers */ my_bool rpl_probe; /* Each call to mysql_real_query() will parse it to tell if it is a read or a write, and direct it to the slave or the master */ my_bool rpl_parse; /* If set, never read from a master, only from slave, when doing a read that is replication-aware */ my_bool no_master_reads;#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY) my_bool separate_thread;#endif enum mysql_option methods_to_use; char *client_ip; /* Refuse client connecting to server if it uses old (pre-4.1.1) protocol */ my_bool secure_auth; /* 0 - never report, 1 - always report (default) */ my_bool report_data_truncation; /* function pointers for local infile support */ int (*local_infile_init)(void **, const char *, void *); int (*local_infile_read)(void *, char *, unsigned int); void (*local_infile_end)(void *); int (*local_infile_error)(void *, char *, unsigned int); void *local_infile_userdata;};enum mysql_status { MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,MYSQL_STATUS_USE_RESULT};enum mysql_protocol_type { MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET, MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY};/* There are three types of queries - the ones that have to go to the master, the ones that go to a slave, and the adminstrative type which must happen on the pivot connectioin*/enum mysql_rpl_type { MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN};typedef struct character_set{ unsigned int number; /* character set number */ unsigned int state; /* character set state */ const char *csname; /* collation name */ const char *name; /* character set name */ const char *comment; /* comment */ const char *dir; /* character set directory */ unsigned int mbminlen; /* min. length for multibyte strings */ unsigned int mbmaxlen; /* max. length for multibyte strings */} MY_CHARSET_INFO;struct st_mysql_methods;struct st_mysql_stmt;typedef struct st_mysql{ NET net; /* Communication parameters */ gptr connector_fd; /* ConnectorFd for SSL */ char *host,*user,*passwd,*unix_socket,*server_version,*host_info,*info; char *db; struct charset_info_st *charset; MYSQL_FIELD *fields; MEM_ROOT field_alloc; my_ulonglong affected_rows; my_ulonglong insert_id; /* id if insert on table with NEXTNR */ my_ulonglong extra_info; /* Not used */ unsigned long thread_id; /* Id for connection in server */ unsigned long packet_length; unsigned int port; unsigned long client_flag,server_capabilities; unsigned int protocol_version; unsigned int field_count; unsigned int server_status; unsigned int server_language; unsigned int warning_count; struct st_mysql_options options; enum mysql_status status; my_bool free_me; /* If free in mysql_close */ my_bool reconnect; /* set to 1 if automatic reconnect */ /* session-wide random string */ char scramble[SCRAMBLE_LENGTH+1]; /* Set if this is the original connection, not a master or a slave we have added though mysql_rpl_probe() or mysql_set_master()/ mysql_add_slave() */ my_bool rpl_pivot; /* Pointers to the master, and the next slave connections, points to itself if lone connection. */ struct st_mysql* master, *next_slave;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -