mysqlnd_enum_n_def.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. /*
  2. +----------------------------------------------------------------------+
  3. | PHP Version 5 |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 2006-2016 The PHP Group |
  6. +----------------------------------------------------------------------+
  7. | This source file is subject to version 3.01 of the PHP license, |
  8. | that is bundled with this package in the file LICENSE, and is |
  9. | available through the world-wide-web at the following url: |
  10. | http://www.php.net/license/3_01.txt |
  11. | If you did not receive a copy of the PHP license and are unable to |
  12. | obtain it through the world-wide-web, please send a note to |
  13. | license@php.net so we can mail you a copy immediately. |
  14. +----------------------------------------------------------------------+
  15. | Authors: Andrey Hristov <andrey@mysql.com> |
  16. | Ulf Wendel <uwendel@mysql.com> |
  17. | Georg Richter <georg@mysql.com> |
  18. +----------------------------------------------------------------------+
  19. */
  20. /* $Id$ */
  21. #ifndef MYSQLND_ENUM_N_DEF_H
  22. #define MYSQLND_ENUM_N_DEF_H
  23. #ifndef TRUE
  24. #define TRUE 1
  25. #endif
  26. #ifndef FALSE
  27. #define FALSE 0
  28. #endif
  29. #define MYSQLND_MIN_COMPRESS_LEN 0
  30. #define MYSQLND_MAX_PACKET_SIZE (256L*256L*256L-1)
  31. #define MYSQLND_ASSEMBLED_PACKET_MAX_SIZE 3UL*1024UL*1024UL*1024UL
  32. #define MYSQLND_DEFAULT_AUTH_PROTOCOL "mysql_native_password"
  33. #define MYSQLND_ERRMSG_SIZE 512
  34. #define MYSQLND_SQLSTATE_LENGTH 5
  35. #define MYSQLND_SQLSTATE_NULL "00000"
  36. #define MYSQLND_MAX_ALLOWED_USER_LEN 252 /* 63 char * 4byte . MySQL supports now only 16 char, but let it be forward compatible */
  37. #define MYSQLND_MAX_ALLOWED_DB_LEN 1024 /* 256 char * 4byte. MySQL supports now only 64 char in the tables, but on the FS could be different. Forward compatible. */
  38. #define MYSQLND_NET_CMD_BUFFER_MIN_SIZE 4096
  39. #define MYSQLND_NET_CMD_BUFFER_MIN_SIZE_STR "4096"
  40. #define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */
  41. #define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */
  42. #define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */
  43. #define SERVER_QUERY_NO_GOOD_INDEX_USED 16
  44. #define SERVER_QUERY_NO_INDEX_USED 32
  45. /*
  46. The server was able to fulfill the clients request and opened a
  47. read-only non-scrollable cursor for a query. This flag comes
  48. in reply to COM_STMT_EXECUTE and COM_STMT_FETCH commands.
  49. */
  50. #define SERVER_STATUS_CURSOR_EXISTS 64
  51. /*
  52. This flag is sent when a read-only cursor is exhausted, in reply to
  53. COM_STMT_FETCH command.
  54. */
  55. #define SERVER_STATUS_LAST_ROW_SENT 128
  56. #define SERVER_STATUS_DB_DROPPED 256 /* A database was dropped */
  57. #define SERVER_STATUS_NO_BACKSLASH_ESCAPES 512
  58. #define SERVER_QUERY_WAS_SLOW 2048
  59. #define SERVER_PS_OUT_PARAMS 4096
  60. #define MYSQLND_NO_DATA 100
  61. #define MYSQLND_DATA_TRUNCATED 101
  62. #define SHA1_MAX_LENGTH 20
  63. #define SCRAMBLE_LENGTH 20
  64. #define SCRAMBLE_LENGTH_323 8
  65. #define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
  66. #define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */
  67. #define CLIENT_LONG_FLAG 4 /* Get all column flags */
  68. #define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */
  69. #define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */
  70. #define CLIENT_COMPRESS 32 /* Can use compression protocol */
  71. #define CLIENT_ODBC 64 /* Odbc client */
  72. #define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */
  73. #define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */
  74. #define CLIENT_PROTOCOL_41 512 /* New 4.1 protocol */
  75. #define CLIENT_INTERACTIVE 1024 /* This is an interactive client */
  76. #define CLIENT_SSL 2048 /* Switch to SSL after handshake */
  77. #define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */
  78. #define CLIENT_TRANSACTIONS 8192 /* Client knows about transactions */
  79. #define CLIENT_RESERVED 16384 /* Old flag for 4.1 protocol */
  80. #define CLIENT_SECURE_CONNECTION 32768 /* New 4.1 authentication */
  81. #define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */
  82. #define CLIENT_MULTI_RESULTS (1UL << 17) /* Enable/disable multi-results */
  83. #define CLIENT_PS_MULTI_RESULTS (1UL << 18) /* Multi-results in PS-protocol */
  84. #define CLIENT_PLUGIN_AUTH (1UL << 19) /* Client supports plugin authentication */
  85. #define CLIENT_CONNECT_ATTRS (1UL << 20) /* Client supports connection attributes */
  86. #define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL << 21) /* Enable authentication response packet to be larger than 255 bytes. */
  87. #define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS (1UL << 22) /* Don't close the connection for a connection with expired password. */
  88. #define CLIENT_SESSION_TRACK (1UL << 23) /* Extended OK */
  89. /*
  90. This is a mysqlnd extension. CLIENT_ODBC is not used anyway. We will reuse it for our case and translate it to not using SSL peer verification
  91. */
  92. #define CLIENT_SSL_DONT_VERIFY_SERVER_CERT CLIENT_ODBC
  93. #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
  94. #define CLIENT_REMEMBER_OPTIONS (1UL << 31)
  95. #define MYSQLND_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_TRANSACTIONS | \
  96. CLIENT_PROTOCOL_41 | CLIENT_SECURE_CONNECTION | \
  97. CLIENT_MULTI_RESULTS | CLIENT_LOCAL_FILES | CLIENT_PLUGIN_AUTH)
  98. #define MYSQLND_NET_FLAG_USE_COMPRESSION 1
  99. #define TRANS_START_NO_OPT 0
  100. #define TRANS_START_WITH_CONSISTENT_SNAPSHOT 1
  101. #define TRANS_START_READ_WRITE 2
  102. #define TRANS_START_READ_ONLY 4
  103. #define TRANS_COR_NO_OPT 0
  104. #define TRANS_COR_AND_CHAIN 1
  105. #define TRANS_COR_AND_NO_CHAIN 2
  106. #define TRANS_COR_RELEASE 4
  107. #define TRANS_COR_NO_RELEASE 8
  108. typedef enum mysqlnd_extension
  109. {
  110. MYSQLND_MYSQL = 0,
  111. MYSQLND_MYSQLI
  112. } enum_mysqlnd_extension;
  113. enum
  114. {
  115. MYSQLND_FETCH_ASSOC = 1,
  116. MYSQLND_FETCH_NUM = 2,
  117. MYSQLND_FETCH_BOTH = 1|2
  118. };
  119. /* Follow libmysql convention */
  120. typedef enum func_status
  121. {
  122. PASS = 0,
  123. FAIL = 1
  124. } enum_func_status;
  125. typedef enum mysqlnd_query_type
  126. {
  127. QUERY_UPSERT,
  128. QUERY_SELECT,
  129. QUERY_LOAD_LOCAL
  130. } enum_mysqlnd_query_type;
  131. typedef enum mysqlnd_res_type
  132. {
  133. MYSQLND_RES_NORMAL = 1,
  134. MYSQLND_RES_PS_BUF,
  135. MYSQLND_RES_PS_UNBUF
  136. } enum_mysqlnd_res_type;
  137. typedef enum mysqlnd_option
  138. {
  139. MYSQL_OPT_CONNECT_TIMEOUT,
  140. MYSQL_OPT_COMPRESS,
  141. MYSQL_OPT_NAMED_PIPE,
  142. MYSQL_INIT_COMMAND,
  143. MYSQL_READ_DEFAULT_FILE,
  144. MYSQL_READ_DEFAULT_GROUP,
  145. MYSQL_SET_CHARSET_DIR,
  146. MYSQL_SET_CHARSET_NAME,
  147. MYSQL_OPT_LOCAL_INFILE,
  148. MYSQL_OPT_PROTOCOL,
  149. MYSQL_SHARED_MEMORY_BASE_NAME,
  150. MYSQL_OPT_READ_TIMEOUT,
  151. MYSQL_OPT_WRITE_TIMEOUT,
  152. MYSQL_OPT_USE_RESULT,
  153. MYSQL_OPT_USE_REMOTE_CONNECTION,
  154. MYSQL_OPT_USE_EMBEDDED_CONNECTION,
  155. MYSQL_OPT_GUESS_CONNECTION,
  156. MYSQL_SET_CLIENT_IP,
  157. MYSQL_SECURE_AUTH,
  158. MYSQL_REPORT_DATA_TRUNCATION,
  159. MYSQL_OPT_RECONNECT,
  160. MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
  161. MYSQL_PLUGIN_DIR,
  162. MYSQL_DEFAULT_AUTH,
  163. MYSQL_OPT_CONNECT_ATTR_RESET,
  164. MYSQL_OPT_CONNECT_ATTR_ADD,
  165. MYSQL_OPT_CONNECT_ATTR_DELETE,
  166. MYSQL_SERVER_PUBLIC_KEY,
  167. MYSQL_ENABLE_CLEARTEXT_PLUGIN,
  168. MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
  169. MYSQLND_DEPRECATED_ENUM1 = 200,
  170. #ifdef MYSQLND_STRING_TO_INT_CONVERSION
  171. MYSQLND_OPT_INT_AND_FLOAT_NATIVE = 201,
  172. #endif
  173. MYSQLND_OPT_NET_CMD_BUFFER_SIZE = 202,
  174. MYSQLND_OPT_NET_READ_BUFFER_SIZE = 203,
  175. MYSQLND_OPT_SSL_KEY = 204,
  176. MYSQLND_OPT_SSL_CERT = 205,
  177. MYSQLND_OPT_SSL_CA = 206,
  178. MYSQLND_OPT_SSL_CAPATH = 207,
  179. MYSQLND_OPT_SSL_CIPHER = 208,
  180. MYSQLND_OPT_SSL_PASSPHRASE = 209,
  181. MYSQLND_OPT_MAX_ALLOWED_PACKET = 210,
  182. MYSQLND_OPT_AUTH_PROTOCOL = 211
  183. } enum_mysqlnd_option;
  184. typedef enum mysqlnd_protocol_type
  185. {
  186. MYSQL_PROTOCOL_DEFAULT = 0,
  187. MYSQL_PROTOCOL_TCP, /* all, supported */
  188. MYSQL_PROTOCOL_SOCKET, /* unix, supported */
  189. MYSQL_PROTOCOL_PIPE, /* win32, not-supported */
  190. MYSQL_PROTOCOL_MEMORY, /* win32, not-supported */
  191. MYSQL_PROTOCOL_LAST
  192. } enum_mysqlnd_protocol_type;
  193. typedef enum mysqlnd_field_types
  194. {
  195. MYSQL_TYPE_DECIMAL = 0,
  196. MYSQL_TYPE_TINY = 1,
  197. MYSQL_TYPE_SHORT = 2,
  198. MYSQL_TYPE_LONG = 3,
  199. MYSQL_TYPE_FLOAT = 4,
  200. MYSQL_TYPE_DOUBLE = 5,
  201. MYSQL_TYPE_NULL = 6,
  202. MYSQL_TYPE_TIMESTAMP= 7,
  203. MYSQL_TYPE_LONGLONG = 8,
  204. MYSQL_TYPE_INT24 = 9,
  205. MYSQL_TYPE_DATE = 10,
  206. MYSQL_TYPE_TIME = 11,
  207. MYSQL_TYPE_DATETIME = 12,
  208. MYSQL_TYPE_YEAR = 13,
  209. MYSQL_TYPE_NEWDATE = 14,
  210. MYSQL_TYPE_VARCHAR = 15,
  211. MYSQL_TYPE_BIT = 16,
  212. MYSQL_TYPE_JSON=245,
  213. MYSQL_TYPE_NEWDECIMAL=246,
  214. MYSQL_TYPE_ENUM=247,
  215. MYSQL_TYPE_SET=248,
  216. MYSQL_TYPE_TINY_BLOB=249,
  217. MYSQL_TYPE_MEDIUM_BLOB=250,
  218. MYSQL_TYPE_LONG_BLOB=251,
  219. MYSQL_TYPE_BLOB=252,
  220. MYSQL_TYPE_VAR_STRING=253,
  221. MYSQL_TYPE_STRING=254,
  222. MYSQL_TYPE_GEOMETRY=255
  223. } enum_mysqlnd_field_types;
  224. /* Please update this if there is a new type after MYSQL_TYPE_GEOMETRY */
  225. #define MYSQL_TYPE_LAST MYSQL_TYPE_GEOMETRY
  226. typedef enum mysqlnd_server_option
  227. {
  228. MYSQL_OPTION_MULTI_STATEMENTS_ON,
  229. MYSQL_OPTION_MULTI_STATEMENTS_OFF
  230. } enum_mysqlnd_server_option;
  231. #define FIELD_TYPE_DECIMAL MYSQL_TYPE_DECIMAL
  232. #define FIELD_TYPE_NEWDECIMAL MYSQL_TYPE_NEWDECIMAL
  233. #define FIELD_TYPE_TINY MYSQL_TYPE_TINY
  234. #define FIELD_TYPE_SHORT MYSQL_TYPE_SHORT
  235. #define FIELD_TYPE_LONG MYSQL_TYPE_LONG
  236. #define FIELD_TYPE_FLOAT MYSQL_TYPE_FLOAT
  237. #define FIELD_TYPE_DOUBLE MYSQL_TYPE_DOUBLE
  238. #define FIELD_TYPE_NULL MYSQL_TYPE_NULL
  239. #define FIELD_TYPE_TIMESTAMP MYSQL_TYPE_TIMESTAMP
  240. #define FIELD_TYPE_LONGLONG MYSQL_TYPE_LONGLONG
  241. #define FIELD_TYPE_INT24 MYSQL_TYPE_INT24
  242. #define FIELD_TYPE_DATE MYSQL_TYPE_DATE
  243. #define FIELD_TYPE_TIME MYSQL_TYPE_TIME
  244. #define FIELD_TYPE_DATETIME MYSQL_TYPE_DATETIME
  245. #define FIELD_TYPE_YEAR MYSQL_TYPE_YEAR
  246. #define FIELD_TYPE_NEWDATE MYSQL_TYPE_NEWDATE
  247. #define FIELD_TYPE_ENUM MYSQL_TYPE_ENUM
  248. #define FIELD_TYPE_SET MYSQL_TYPE_SET
  249. #define FIELD_TYPE_JSON MYSQL_TYPE_JSON
  250. #define FIELD_TYPE_TINY_BLOB MYSQL_TYPE_TINY_BLOB
  251. #define FIELD_TYPE_MEDIUM_BLOB MYSQL_TYPE_MEDIUM_BLOB
  252. #define FIELD_TYPE_LONG_BLOB MYSQL_TYPE_LONG_BLOB
  253. #define FIELD_TYPE_BLOB MYSQL_TYPE_BLOB
  254. #define FIELD_TYPE_VAR_STRING MYSQL_TYPE_VAR_STRING
  255. #define FIELD_TYPE_STRING MYSQL_TYPE_STRING
  256. #define FIELD_TYPE_CHAR MYSQL_TYPE_TINY
  257. #define FIELD_TYPE_INTERVAL MYSQL_TYPE_ENUM
  258. #define FIELD_TYPE_GEOMETRY MYSQL_TYPE_GEOMETRY
  259. #define FIELD_TYPE_BIT MYSQL_TYPE_BIT
  260. #define NOT_NULL_FLAG 1
  261. #define PRI_KEY_FLAG 2
  262. #define UNIQUE_KEY_FLAG 4
  263. #define MULTIPLE_KEY_FLAG 8
  264. #define BLOB_FLAG 16
  265. #define UNSIGNED_FLAG 32
  266. #define ZEROFILL_FLAG 64
  267. #define BINARY_FLAG 128
  268. #define ENUM_FLAG 256
  269. #define AUTO_INCREMENT_FLAG 512
  270. #define TIMESTAMP_FLAG 1024
  271. #define SET_FLAG 2048
  272. #define NO_DEFAULT_VALUE_FLAG 4096
  273. #define ON_UPDATE_NOW_FLAG 8192
  274. #define PART_KEY_FLAG 16384
  275. #define GROUP_FLAG 32768
  276. #define NUM_FLAG 32768
  277. #define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
  278. #define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)
  279. #define IS_BLOB(n) ((n) & BLOB_FLAG)
  280. #define IS_NUM(t) ((t) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR || (t) == FIELD_TYPE_NEWDECIMAL)
  281. /* see mysqlnd_charset.c for more information */
  282. #define MYSQLND_BINARY_CHARSET_NR 63
  283. /*
  284. /-----> CONN_CLOSE <---------------\
  285. | ^ \
  286. | | \
  287. CONN_READY -> CONN_QUERY_SENT -> CONN_FETCHING_DATA
  288. ^ |
  289. \-------------------------------------/
  290. */
  291. typedef enum mysqlnd_connection_state
  292. {
  293. CONN_ALLOCED = 0,
  294. CONN_READY = 1,
  295. CONN_QUERY_SENT = 2,
  296. CONN_SENDING_LOAD_DATA = 3,
  297. CONN_FETCHING_DATA = 4,
  298. CONN_NEXT_RESULT_PENDING = 5,
  299. CONN_QUIT_SENT = 6 /* object is "destroyed" at this stage */
  300. } enum_mysqlnd_connection_state;
  301. typedef enum mysqlnd_stmt_state
  302. {
  303. MYSQLND_STMT_INITTED = 0,
  304. MYSQLND_STMT_PREPARED = 1,
  305. MYSQLND_STMT_EXECUTED = 2,
  306. MYSQLND_STMT_WAITING_USE_OR_STORE = 3,
  307. MYSQLND_STMT_USE_OR_STORE_CALLED = 4,
  308. MYSQLND_STMT_USER_FETCHING = 5/* fetch_row_buff or fetch_row_unbuf */
  309. } enum_mysqlnd_stmt_state;
  310. typedef enum param_bind_flags
  311. {
  312. MYSQLND_PARAM_BIND_BLOB_USED = 1
  313. } enum_param_bind_flags;
  314. /* PS */
  315. enum mysqlnd_stmt_attr
  316. {
  317. STMT_ATTR_UPDATE_MAX_LENGTH,
  318. STMT_ATTR_CURSOR_TYPE,
  319. STMT_ATTR_PREFETCH_ROWS
  320. };
  321. enum myslqnd_cursor_type
  322. {
  323. CURSOR_TYPE_NO_CURSOR= 0,
  324. CURSOR_TYPE_READ_ONLY= 1,
  325. CURSOR_TYPE_FOR_UPDATE= 2,
  326. CURSOR_TYPE_SCROLLABLE= 4
  327. };
  328. typedef enum mysqlnd_connection_close_type
  329. {
  330. MYSQLND_CLOSE_EXPLICIT = 0,
  331. MYSQLND_CLOSE_IMPLICIT,
  332. MYSQLND_CLOSE_DISCONNECTED,
  333. MYSQLND_CLOSE_LAST /* for checking, should always be last */
  334. } enum_connection_close_type;
  335. typedef enum mysqlnd_collected_stats
  336. {
  337. STAT_BYTES_SENT,
  338. STAT_BYTES_RECEIVED,
  339. STAT_PACKETS_SENT,
  340. STAT_PACKETS_RECEIVED,
  341. STAT_PROTOCOL_OVERHEAD_IN,
  342. STAT_PROTOCOL_OVERHEAD_OUT,
  343. STAT_BYTES_RECEIVED_OK,
  344. STAT_BYTES_RECEIVED_EOF,
  345. STAT_BYTES_RECEIVED_RSET_HEADER,
  346. STAT_BYTES_RECEIVED_RSET_FIELD_META,
  347. STAT_BYTES_RECEIVED_RSET_ROW,
  348. STAT_BYTES_RECEIVED_PREPARE_RESPONSE,
  349. STAT_BYTES_RECEIVED_CHANGE_USER,
  350. STAT_PACKETS_SENT_CMD,
  351. STAT_PACKETS_RECEIVED_OK,
  352. STAT_PACKETS_RECEIVED_EOF,
  353. STAT_PACKETS_RECEIVED_RSET_HEADER,
  354. STAT_PACKETS_RECEIVED_RSET_FIELD_META,
  355. STAT_PACKETS_RECEIVED_RSET_ROW,
  356. STAT_PACKETS_RECEIVED_PREPARE_RESPONSE,
  357. STAT_PACKETS_RECEIVED_CHANGE_USER,
  358. STAT_RSET_QUERY,
  359. STAT_NON_RSET_QUERY,
  360. STAT_NO_INDEX_USED,
  361. STAT_BAD_INDEX_USED,
  362. STAT_QUERY_WAS_SLOW,
  363. STAT_BUFFERED_SETS,
  364. STAT_UNBUFFERED_SETS,
  365. STAT_PS_BUFFERED_SETS,
  366. STAT_PS_UNBUFFERED_SETS,
  367. STAT_FLUSHED_NORMAL_SETS,
  368. STAT_FLUSHED_PS_SETS,
  369. STAT_PS_PREPARED_NEVER_EXECUTED,
  370. STAT_PS_PREPARED_ONCE_USED,
  371. STAT_ROWS_FETCHED_FROM_SERVER_NORMAL,
  372. STAT_ROWS_FETCHED_FROM_SERVER_PS,
  373. STAT_ROWS_BUFFERED_FROM_CLIENT_NORMAL,
  374. STAT_ROWS_BUFFERED_FROM_CLIENT_PS,
  375. STAT_ROWS_FETCHED_FROM_CLIENT_NORMAL_BUF,
  376. STAT_ROWS_FETCHED_FROM_CLIENT_NORMAL_UNBUF,
  377. STAT_ROWS_FETCHED_FROM_CLIENT_PS_BUF,
  378. STAT_ROWS_FETCHED_FROM_CLIENT_PS_UNBUF,
  379. STAT_ROWS_FETCHED_FROM_CLIENT_PS_CURSOR,
  380. STAT_ROWS_AFFECTED_NORMAL,
  381. STAT_ROWS_AFFECTED_PS,
  382. STAT_ROWS_SKIPPED_NORMAL,
  383. STAT_ROWS_SKIPPED_PS,
  384. STAT_COPY_ON_WRITE_SAVED,
  385. STAT_COPY_ON_WRITE_PERFORMED,
  386. STAT_CMD_BUFFER_TOO_SMALL,
  387. STAT_CONNECT_SUCCESS,
  388. STAT_CONNECT_FAILURE,
  389. STAT_CONNECT_REUSED,
  390. STAT_RECONNECT,
  391. STAT_PCONNECT_SUCCESS,
  392. STAT_OPENED_CONNECTIONS,
  393. STAT_OPENED_PERSISTENT_CONNECTIONS,
  394. STAT_CLOSE_EXPLICIT,
  395. STAT_CLOSE_IMPLICIT,
  396. STAT_CLOSE_DISCONNECT,
  397. STAT_CLOSE_IN_MIDDLE,
  398. STAT_FREE_RESULT_EXPLICIT,
  399. STAT_FREE_RESULT_IMPLICIT,
  400. STAT_STMT_CLOSE_EXPLICIT,
  401. STAT_STMT_CLOSE_IMPLICIT,
  402. STAT_MEM_EMALLOC_COUNT,
  403. STAT_MEM_EMALLOC_AMOUNT,
  404. STAT_MEM_ECALLOC_COUNT,
  405. STAT_MEM_ECALLOC_AMOUNT,
  406. STAT_MEM_EREALLOC_COUNT,
  407. STAT_MEM_EREALLOC_AMOUNT,
  408. STAT_MEM_EFREE_COUNT,
  409. STAT_MEM_EFREE_AMOUNT,
  410. STAT_MEM_MALLOC_COUNT,
  411. STAT_MEM_MALLOC_AMOUNT,
  412. STAT_MEM_CALLOC_COUNT,
  413. STAT_MEM_CALLOC_AMOUNT,
  414. STAT_MEM_REALLOC_COUNT,
  415. STAT_MEM_REALLOC_AMOUNT,
  416. STAT_MEM_FREE_COUNT,
  417. STAT_MEM_FREE_AMOUNT,
  418. STAT_MEM_ESTRNDUP_COUNT,
  419. STAT_MEM_STRNDUP_COUNT,
  420. STAT_MEM_ESTRDUP_COUNT,
  421. STAT_MEM_STRDUP_COUNT,
  422. STAT_TEXT_TYPE_FETCHED_NULL,
  423. STAT_TEXT_TYPE_FETCHED_BIT,
  424. STAT_TEXT_TYPE_FETCHED_INT8,
  425. STAT_TEXT_TYPE_FETCHED_INT16,
  426. STAT_TEXT_TYPE_FETCHED_INT24,
  427. STAT_TEXT_TYPE_FETCHED_INT32,
  428. STAT_TEXT_TYPE_FETCHED_INT64,
  429. STAT_TEXT_TYPE_FETCHED_DECIMAL,
  430. STAT_TEXT_TYPE_FETCHED_FLOAT,
  431. STAT_TEXT_TYPE_FETCHED_DOUBLE,
  432. STAT_TEXT_TYPE_FETCHED_DATE,
  433. STAT_TEXT_TYPE_FETCHED_YEAR,
  434. STAT_TEXT_TYPE_FETCHED_TIME,
  435. STAT_TEXT_TYPE_FETCHED_DATETIME,
  436. STAT_TEXT_TYPE_FETCHED_TIMESTAMP,
  437. STAT_TEXT_TYPE_FETCHED_STRING,
  438. STAT_TEXT_TYPE_FETCHED_JSON,
  439. STAT_TEXT_TYPE_FETCHED_BLOB,
  440. STAT_TEXT_TYPE_FETCHED_ENUM,
  441. STAT_TEXT_TYPE_FETCHED_SET,
  442. STAT_TEXT_TYPE_FETCHED_GEOMETRY,
  443. STAT_TEXT_TYPE_FETCHED_OTHER,
  444. STAT_BINARY_TYPE_FETCHED_NULL,
  445. STAT_BINARY_TYPE_FETCHED_BIT,
  446. STAT_BINARY_TYPE_FETCHED_INT8,
  447. STAT_BINARY_TYPE_FETCHED_INT16,
  448. STAT_BINARY_TYPE_FETCHED_INT24,
  449. STAT_BINARY_TYPE_FETCHED_INT32,
  450. STAT_BINARY_TYPE_FETCHED_INT64,
  451. STAT_BINARY_TYPE_FETCHED_DECIMAL,
  452. STAT_BINARY_TYPE_FETCHED_FLOAT,
  453. STAT_BINARY_TYPE_FETCHED_DOUBLE,
  454. STAT_BINARY_TYPE_FETCHED_DATE,
  455. STAT_BINARY_TYPE_FETCHED_YEAR,
  456. STAT_BINARY_TYPE_FETCHED_TIME,
  457. STAT_BINARY_TYPE_FETCHED_DATETIME,
  458. STAT_BINARY_TYPE_FETCHED_TIMESTAMP,
  459. STAT_BINARY_TYPE_FETCHED_STRING,
  460. STAT_BINARY_TYPE_FETCHED_BLOB,
  461. STAT_BINARY_TYPE_FETCHED_ENUM,
  462. STAT_BINARY_TYPE_FETCHED_SET,
  463. STAT_BINARY_TYPE_FETCHED_GEOMETRY,
  464. STAT_BINARY_TYPE_FETCHED_OTHER,
  465. STAT_INIT_COMMAND_EXECUTED_COUNT,
  466. STAT_INIT_COMMAND_FAILED_COUNT,
  467. STAT_COM_QUIT,
  468. STAT_COM_INIT_DB,
  469. STAT_COM_QUERY,
  470. STAT_COM_FIELD_LIST,
  471. STAT_COM_CREATE_DB,
  472. STAT_COM_DROP_DB,
  473. STAT_COM_REFRESH,
  474. STAT_COM_SHUTDOWN,
  475. STAT_COM_STATISTICS,
  476. STAT_COM_PROCESS_INFO,
  477. STAT_COM_CONNECT,
  478. STAT_COM_PROCESS_KILL,
  479. STAT_COM_DEBUG,
  480. STAT_COM_PING,
  481. STAT_COM_TIME,
  482. STAT_COM_DELAYED_INSERT,
  483. STAT_COM_CHANGE_USER,
  484. STAT_COM_BINLOG_DUMP,
  485. STAT_COM_TABLE_DUMP,
  486. STAT_COM_CONNECT_OUT,
  487. STAT_COM_REGISTER_SLAVE,
  488. STAT_COM_STMT_PREPARE,
  489. STAT_COM_STMT_EXECUTE,
  490. STAT_COM_STMT_SEND_LONG_DATA,
  491. STAT_COM_STMT_CLOSE,
  492. STAT_COM_STMT_RESET,
  493. STAT_COM_SET_OPTION,
  494. STAT_COM_STMT_FETCH,
  495. STAT_COM_DAEMON,
  496. STAT_BYTES_RECEIVED_PURE_DATA_TEXT,
  497. STAT_BYTES_RECEIVED_PURE_DATA_PS,
  498. STAT_LAST /* Should be always the last */
  499. } enum_mysqlnd_collected_stats;
  500. /* Enums */
  501. enum mysqlnd_packet_type
  502. {
  503. PROT_GREET_PACKET= 0,
  504. PROT_AUTH_PACKET,
  505. PROT_AUTH_RESP_PACKET,
  506. PROT_CHANGE_AUTH_RESP_PACKET,
  507. PROT_OK_PACKET,
  508. PROT_EOF_PACKET,
  509. PROT_CMD_PACKET,
  510. PROT_RSET_HEADER_PACKET,
  511. PROT_RSET_FLD_PACKET,
  512. PROT_ROW_PACKET,
  513. PROT_STATS_PACKET,
  514. PROT_PREPARE_RESP_PACKET,
  515. PROT_CHG_USER_RESP_PACKET,
  516. PROT_SHA256_PK_REQUEST_PACKET,
  517. PROT_SHA256_PK_REQUEST_RESPONSE_PACKET,
  518. PROT_LAST /* should always be last */
  519. };
  520. /*
  521. After adding new elements please update
  522. `mysqlnd_command_to_text` in mysqlnd_wireprotocol.c
  523. */
  524. enum php_mysqlnd_server_command
  525. {
  526. COM_SLEEP = 0,
  527. COM_QUIT,
  528. COM_INIT_DB,
  529. COM_QUERY,
  530. COM_FIELD_LIST,
  531. COM_CREATE_DB,
  532. COM_DROP_DB,
  533. COM_REFRESH,
  534. COM_SHUTDOWN,
  535. COM_STATISTICS,
  536. COM_PROCESS_INFO,
  537. COM_CONNECT,
  538. COM_PROCESS_KILL,
  539. COM_DEBUG,
  540. COM_PING,
  541. COM_TIME = 15,
  542. COM_DELAYED_INSERT,
  543. COM_CHANGE_USER,
  544. COM_BINLOG_DUMP,
  545. COM_TABLE_DUMP,
  546. COM_CONNECT_OUT = 20,
  547. COM_REGISTER_SLAVE,
  548. COM_STMT_PREPARE = 22,
  549. COM_STMT_EXECUTE = 23,
  550. COM_STMT_SEND_LONG_DATA = 24,
  551. COM_STMT_CLOSE = 25,
  552. COM_STMT_RESET = 26,
  553. COM_SET_OPTION = 27,
  554. COM_STMT_FETCH = 28,
  555. COM_DAEMON = 29,
  556. COM_BINLOG_DUMP_GTID = 30,
  557. COM_RESET_CONNECTION = 31,
  558. COM_STMT_EXECUTE_BATCH = 32,
  559. COM_END
  560. };
  561. #define MYSQLND_DEFAULT_PREFETCH_ROWS (ulong) 1
  562. #define MYSQLND_REFRESH_GRANT 1 /* Refresh grant tables */
  563. #define MYSQLND_REFRESH_LOG 2 /* Start on new log file */
  564. #define MYSQLND_REFRESH_TABLES 4 /* close all tables */
  565. #define MYSQLND_REFRESH_HOSTS 8 /* Flush host cache */
  566. #define MYSQLND_REFRESH_STATUS 16 /* Flush status variables */
  567. #define MYSQLND_REFRESH_THREADS 32 /* Flush thread cache */
  568. #define MYSQLND_REFRESH_SLAVE 64 /* Reset master info and restart slave */
  569. #define MYSQLND_REFRESH_MASTER 128 /* Remove all bin logs in the index */
  570. #define MYSQLND_REFRESH_BACKUP_LOG 0x200000L
  571. #define MYSQLND_STORE_PS 1
  572. #define MYSQLND_STORE_NO_COPY 2
  573. #define MYSQLND_STORE_COPY 4
  574. enum mysqlnd_buffered_type
  575. {
  576. MYSQLND_BUFFERED_TYPE_ZVAL = 1,
  577. MYSQLND_BUFFERED_TYPE_C
  578. };
  579. #define MYSQLND_CLIENT_NO_FLAG 0
  580. #define MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA 1
  581. #endif /* MYSQLND_ENUM_N_DEF_H */
  582. /*
  583. * Local variables:
  584. * tab-width: 4
  585. * c-basic-offset: 4
  586. * End:
  587. * vim600: noet sw=4 ts=4 fdm=marker
  588. * vim<600: noet sw=4 ts=4
  589. */