📄 mysqlnd.h
字号:
/* +----------------------------------------------------------------------+ | PHP Version 6 | +----------------------------------------------------------------------+ | Copyright (c) 2006-2007 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Georg Richter <georg@mysql.com> | | Andrey Hristov <andrey@mysql.com> | | Ulf Wendel <uwendel@mysql.com> | +----------------------------------------------------------------------+*//* $Id: header,v 1.17 2006/01/01 13:09:48 sniper Exp $ */#ifndef MYSQLND_H#define MYSQLND_H/* This forces inlining some accessor functions */#define MYSQLND_USE_OPTIMISATIONS 1/* #define MYSQLND_STRING_TO_INT_CONVERSION *//* This force mysqlnd to do a single (or more depending on ammount of data) non-blocking read() calls before sending a command to the server. Useful for debugging, if previous function hasn't consumed all the output sent to it - like stmt_send_long_data() error because the data was larger that max_allowed_packet_size, and COM_STMT_SEND_LONG_DATA by protocol doesn't use response packets, thus letting the next command to fail miserably, if the connector implementor is not aware of this deficiency. Should be off on production systems, if of course measured performance degradation is not minimal.*/#define MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND 1#include "portability.h"#ifdef ZTS#include "TSRM.h"#endif#define MYSQLND_VERSION "mysqlnd 5.0.1-beta - 070402 - $Revision: 321 $"#define MYSQLND_VERSION_ID 50001#ifdef PHP_WIN32#define MYSQLND_LLU_SPEC "%I64u"#define MYSQLND_LL_SPEC "%I64d"#ifndef L64#define L64(x) x##i64#endiftypedef unsigned __int64 my_uint64;typedef __int64 my_int64;typedef unsigned __int64 mynd_ulonglong;typedef __int64 mynd_longlong;#else#define MYSQLND_LLU_SPEC "%llu"#define MYSQLND_LL_SPEC "%lld"#ifndef L64#define L64(x) x##LL#endiftypedef unsigned long long my_uint64;typedef long long my_int64;typedef unsigned long long mynd_ulonglong;typedef long long mynd_longlong;#endif#define MYSQLND_ERRMSG_SIZE 512#define MYSQLND_SQLSTATE_LENGTH 5#define MYSQLND_SQLSTATE_NULL "00000"#define MYSQLND_SERVER_QUERY_NO_GOOD_INDEX_USED 16#define MYSQLND_SERVER_QUERY_NO_INDEX_USED 32#define MYSQLND_NO_DATA 100#define MYSQLND_DATA_TRUNCATED 101#define SHA1_MAX_LENGTH 20#define SCRAMBLE_LENGTH 20#define SCRAMBLE_LENGTH_323 8#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */#define CLIENT_LONG_FLAG 4 /* Get all column flags */#define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */#define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */#define CLIENT_COMPRESS 32 /* Can use compression protocol */#define CLIENT_ODBC 64 /* Odbc client */#define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */#define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */#define CLIENT_PROTOCOL_41 512 /* New 4.1 protocol */#define CLIENT_INTERACTIVE 1024 /* This is an interactive client */#define CLIENT_SSL 2048 /* Switch to SSL after handshake */#define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */#define CLIENT_TRANSACTIONS 8192 /* Client knows about transactions */#define CLIENT_RESERVED 16384 /* Old flag for 4.1 protocol */#define CLIENT_SECURE_CONNECTION 32768 /* New 4.1 authentication */#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */#define CLIENT_MULTI_RESULTS (1UL << 17) /* Enable/disable multi-results */enum{ MYSQLND_FETCH_ASSOC = 1, MYSQLND_FETCH_NUM = 2, MYSQLND_FETCH_BOTH = 1|2,};/* Follow libmysql convention */typedef enum func_status{ PASS = 0, FAIL = 1,} enum_func_status;typedef enum mysqlnd_query_type{ QUERY_UPSERT, QUERY_SELECT, QUERY_LOAD_LOCAL} enum_mysqlnd_query_type;typedef enum mysqlnd_res_type{ MYSQLND_RES_NORMAL = 1, MYSQLND_RES_PS} enum_mysqlnd_res_type;typedef enum mysqlnd_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, MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE = 200#ifdef MYSQLND_STRING_TO_INT_CONVERSION ,MYSQLND_OPT_INT_AND_YEAR_AS_INT = 201#endif} enum_mysqlnd_option;typedef enum mysqlnd_field_types{ MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG, MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE, MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP, MYSQL_TYPE_LONGLONG, MYSQL_TYPE_INT24, MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR, MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR, MYSQL_TYPE_BIT, MYSQL_TYPE_NEWDECIMAL=246, MYSQL_TYPE_ENUM=247, MYSQL_TYPE_SET=248, MYSQL_TYPE_TINY_BLOB=249, MYSQL_TYPE_MEDIUM_BLOB=250, MYSQL_TYPE_LONG_BLOB=251, MYSQL_TYPE_BLOB=252, MYSQL_TYPE_VAR_STRING=253, MYSQL_TYPE_STRING=254, MYSQL_TYPE_GEOMETRY=255} enum_mysqlnd_field_types;/* Please update this if there is a new type after MYSQL_TYPE_GEOMETRY */#define MYSQL_TYPE_LAST MYSQL_TYPE_GEOMETRYtypedef enum mysqlnd_server_option{ MYSQL_OPTION_MULTI_STATEMENTS_ON, MYSQL_OPTION_MULTI_STATEMENTS_OFF} enum_mysqlnd_server_option;#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 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 PART_KEY_FLAG 16384#define GROUP_FLAG 32768#define NUM_FLAG 32768#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)/* see mysqlnd_charset.c for more information */#define MYSQLND_BINARY_CHARSET_NR 63/* /-----> CONN_CLOSE <---------------\ | ^ \ | | \ CONN_READY -> CONN_QUERY_SENT -> CONN_FETCHING_DATA ^ | \-------------------------------------/*/typedef enum mysqlnd_connection_state{ CONN_ALLOCED = 0, CONN_READY, CONN_QUERY_SENT, CONN_FETCHING_DATA, CONN_NEXT_RESULT_PENDING, CONN_QUIT_SENT, /* object is "destroyed" at this stage */} enum_mysqlnd_connection_state;typedef enum mysqlnd_stmt_state { MYSQLND_STMT_INITTED = 0, MYSQLND_STMT_PREPARED, MYSQLND_STMT_EXECUTED, MYSQLND_STMT_WAITING_USE_OR_STORE, MYSQLND_STMT_USE_OR_STORE_CALLED, MYSQLND_STMT_USER_FETCHING, /* fetch_row_buff or fetch_row_unbuf */} enum_mysqlnd_stmt_state;typedef enum param_bind_flags { MYSQLND_PARAM_BIND_BLOB_USED = 1} enum_param_bind_flags;/* PS */enum mysqlnd_stmt_attr{ STMT_ATTR_UPDATE_MAX_LENGTH, STMT_ATTR_CURSOR_TYPE, STMT_ATTR_PREFETCH_ROWS};enum myslqnd_cursor_type{ CURSOR_TYPE_NO_CURSOR= 0, CURSOR_TYPE_READ_ONLY= 1, CURSOR_TYPE_FOR_UPDATE= 2, CURSOR_TYPE_SCROLLABLE= 4};typedef enum mysqlnd_connection_close_type{ MYSQLND_CLOSE_EXPLICIT = 0, MYSQLND_CLOSE_IMPLICIT, MYSQLND_CLOSE_DISCONNECTED, MYSQLND_CLOSE_LAST /* for checking, should always be last */} enum_connection_close_type;typedef enum mysqlnd_collected_stats { STAT_BYTES_SENT, STAT_BYTES_RECEIVED, STAT_PACKETS_SENT, STAT_PACKETS_RECEIVED, STAT_PROTOCOL_OVERHEAD_IN, STAT_PROTOCOL_OVERHEAD_OUT, STAT_RSET_QUERY, STAT_NON_RSET_QUERY, STAT_NO_INDEX_USED, STAT_BAD_INDEX_USED, STAT_BUFFERED_SETS, STAT_UNBUFFERED_SETS, STAT_PS_BUFFERED_SETS, STAT_PS_UNBUFFERED_SETS, STAT_FLUSHED_NORMAL_SETS, STAT_FLUSHED_PS_SETS, STAT_ROWS_FETCHED_FROM_SERVER, STAT_ROWS_FETCHED_FROM_CLIENT, STAT_ROWS_SKIPPED, STAT_COPY_ON_WRITE_SAVED, STAT_COPY_ON_WRITE_PERFORMED, STAT_CMD_BUFFER_TOO_SMALL, STAT_CONNECT_SUCCESS, STAT_CONNECT_FAILURE, STAT_CONNECT_REUSED, STAT_CLOSE_EXPLICIT, STAT_CLOSE_IMPLICIT, STAT_CLOSE_DISCONNECT, STAT_CLOSE_IN_MIDDLE, STAT_FREE_RESULT_EXPLICIT, STAT_FREE_RESULT_IMPLICIT, STAT_STMT_CLOSE_EXPLICIT, STAT_STMT_CLOSE_IMPLICIT, STAT_LAST /* Should be always the last */} enum_mysqlnd_collected_stats;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -