mysqlnd_enum_n_def.h 20 KB

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