📄 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; either version 2 of the License, or (at your option) any later version. 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 */#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_com.h"#include "mysql_version.h"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)#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)typedef struct st_mysql_field { char *name; /* Name of column */ 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 *def; /* Default value (set by mysql_list_fields) */ unsigned long length; /* Width of column */ unsigned long max_length; /* Max width of selected set */ unsigned int flags; /* Div flags */ unsigned int decimals; /* Number of decimals in field */ enum enum_field_types type; /* Type of field. Se 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 */#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#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0)typedef struct st_mysql_rows { struct st_mysql_rows *next; /* list of rows */ MYSQL_ROW data;} MYSQL_ROWS;typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */#include "my_alloc.h"typedef struct st_mysql_data { my_ulonglong rows; unsigned int fields; MYSQL_ROWS *data; MEM_ROOT alloc;} MYSQL_DATA;struct st_mysql_options { unsigned int connect_timeout,client_flag; unsigned int port; char *host,*init_command,*user,*password,*unix_socket,*db; 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 */ 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;};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};enum mysql_status { MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT};/* 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 st_mysql { NET net; /* Communication parameters */ gptr connector_fd; /* ConnectorFd for SSL */ char *host,*user,*passwd,*unix_socket,*server_version,*host_info, *info,*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; /* Used by mysqlshow */ unsigned long thread_id; /* Id for connection in server */ unsigned long packet_length; unsigned int port,client_flag,server_capabilities; unsigned int protocol_version; unsigned int field_count; unsigned int server_status; unsigned int server_language; 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 */ char scramble_buff[9]; /* 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; struct st_mysql* last_used_slave; /* needed for round-robin slave pick */ /* needed for send/read/store/use result to work correctly with replication */ struct st_mysql* last_used_con;} MYSQL;typedef struct st_mysql_res { my_ulonglong row_count; MYSQL_FIELD *fields; MYSQL_DATA *data; MYSQL_ROWS *data_cursor; unsigned long *lengths; /* column lengths of current row */ MYSQL *handle; /* for unbuffered reads */ MEM_ROOT field_alloc; unsigned int field_count, current_field; MYSQL_ROW row; /* If unbuffered read */ MYSQL_ROW current_row; /* buffer to current row */ my_bool eof; /* Used by mysql_fetch_row */} MYSQL_RES;#define MAX_MYSQL_MANAGER_ERR 256 #define MAX_MYSQL_MANAGER_MSG 256#define MANAGER_OK 200#define MANAGER_INFO 250#define MANAGER_ACCESS 401#define MANAGER_CLIENT_ERR 450#define MANAGER_INTERNAL_ERR 500
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -