Annotation of embedaddon/php/ext/mysqlnd/mysqlnd_priv.h, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 2006-2012 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: Georg Richter <georg@mysql.com> |
! 16: | Andrey Hristov <andrey@mysql.com> |
! 17: | Ulf Wendel <uwendel@mysql.com> |
! 18: +----------------------------------------------------------------------+
! 19: */
! 20:
! 21: /* $Id: mysqlnd_priv.h 321634 2012-01-01 13:15:04Z felipe $ */
! 22:
! 23: #ifndef MYSQLND_PRIV_H
! 24: #define MYSQLND_PRIV_H
! 25:
! 26: #ifndef Z_ADDREF_P
! 27: /* PHP 5.2, old GC */
! 28: #define Z_ADDREF_P(pz) (++(pz)->refcount)
! 29: #define Z_DELREF_P(pz) (--(pz)->refcount)
! 30: #define Z_REFCOUNT_P(pz) ((pz)->refcount)
! 31: #define Z_SET_REFCOUNT_P(pz, rc) ((pz)->refcount = rc)
! 32: #define Z_REFCOUNT_PP(ppz) Z_REFCOUNT_P(*(ppz))
! 33: #define Z_DELREF_PP(ppz) Z_DELREF_P(*(ppz))
! 34: #endif
! 35:
! 36: #if PHP_MAJOR_VERSION >= 6
! 37: #define MYSQLND_UNICODE 1
! 38: #else
! 39: #define MYSQLND_UNICODE 0
! 40: #endif
! 41:
! 42: #ifdef ZTS
! 43: #include "TSRM.h"
! 44: #endif
! 45:
! 46: #ifndef pestrndup
! 47: #define pestrndup(s, length, persistent) ((persistent)?zend_strndup((s),(length)):estrndup((s),(length)))
! 48: #endif
! 49:
! 50: #define MYSQLND_CLASS_METHOD_TABLE_NAME(class) mysqlnd_##class##_methods
! 51: #define MYSQLND_CLASS_METHODS_START(class) struct st_##class##_methods MYSQLND_CLASS_METHOD_TABLE_NAME(class) = {
! 52: #define MYSQLND_CLASS_METHODS_END }
! 53:
! 54: #if MYSQLND_UNICODE
! 55: #define mysqlnd_array_init(arg, field_count) \
! 56: { \
! 57: ALLOC_HASHTABLE_REL(Z_ARRVAL_P(arg));\
! 58: zend_u_hash_init(Z_ARRVAL_P(arg), (field_count), NULL, ZVAL_PTR_DTOR, 0, 0);\
! 59: Z_TYPE_P(arg) = IS_ARRAY;\
! 60: }
! 61: #else
! 62: #define mysqlnd_array_init(arg, field_count) \
! 63: { \
! 64: ALLOC_HASHTABLE_REL(Z_ARRVAL_P(arg));\
! 65: zend_hash_init(Z_ARRVAL_P(arg), (field_count), NULL, ZVAL_PTR_DTOR, 0); \
! 66: Z_TYPE_P(arg) = IS_ARRAY;\
! 67: }
! 68: #endif
! 69:
! 70:
! 71: #define MYSQLND_DEBUG_DUMP_TIME 1
! 72: #define MYSQLND_DEBUG_DUMP_TRACE 2
! 73: #define MYSQLND_DEBUG_DUMP_PID 4
! 74: #define MYSQLND_DEBUG_DUMP_LINE 8
! 75: #define MYSQLND_DEBUG_DUMP_FILE 16
! 76: #define MYSQLND_DEBUG_DUMP_LEVEL 32
! 77: #define MYSQLND_DEBUG_APPEND 64
! 78: #define MYSQLND_DEBUG_FLUSH 128
! 79: #define MYSQLND_DEBUG_TRACE_MEMORY_CALLS 256
! 80: #define MYSQLND_DEBUG_PROFILE_CALLS 512
! 81:
! 82:
! 83: /* Client Error codes */
! 84: #define CR_UNKNOWN_ERROR 2000
! 85: #define CR_CONNECTION_ERROR 2002
! 86: #define CR_SERVER_GONE_ERROR 2006
! 87: #define CR_OUT_OF_MEMORY 2008
! 88: #define CR_SERVER_LOST 2013
! 89: #define CR_COMMANDS_OUT_OF_SYNC 2014
! 90: #define CR_CANT_FIND_CHARSET 2019
! 91: #define CR_MALFORMED_PACKET 2027
! 92: #define CR_NOT_IMPLEMENTED 2054
! 93: #define CR_NO_PREPARE_STMT 2030
! 94: #define CR_PARAMS_NOT_BOUND 2031
! 95: #define CR_INVALID_PARAMETER_NO 2034
! 96: #define CR_INVALID_BUFFER_USE 2035
! 97:
! 98: #define MYSQLND_EE_FILENOTFOUND 7890
! 99:
! 100: #define UNKNOWN_SQLSTATE "HY000"
! 101:
! 102: #define MAX_CHARSET_LEN 32
! 103:
! 104:
! 105: #define SET_ERROR_AFF_ROWS(s) (s)->upsert_status.affected_rows = (uint64_t) ~0
! 106:
! 107: /* Error handling */
! 108: #define SET_NEW_MESSAGE(buf, buf_len, message, len, persistent) \
! 109: {\
! 110: if ((buf)) { \
! 111: mnd_pefree((buf), (persistent)); \
! 112: } \
! 113: if ((message)) { \
! 114: (buf) = mnd_pestrndup((message), (len), (persistent)); \
! 115: } else { \
! 116: (buf) = NULL; \
! 117: } \
! 118: (buf_len) = (len); \
! 119: }
! 120:
! 121: #define SET_EMPTY_MESSAGE(buf, buf_len, persistent) \
! 122: {\
! 123: if ((buf)) { \
! 124: mnd_pefree((buf), (persistent)); \
! 125: (buf) = NULL; \
! 126: } \
! 127: (buf_len) = 0; \
! 128: }
! 129:
! 130:
! 131: #define SET_EMPTY_ERROR(error_info) \
! 132: { \
! 133: (error_info).error_no = 0; \
! 134: (error_info).error[0] = '\0'; \
! 135: strlcpy((error_info).sqlstate, "00000", sizeof((error_info).sqlstate)); \
! 136: }
! 137:
! 138: #define SET_CLIENT_ERROR(error_info, a, b, c) \
! 139: { \
! 140: (error_info).error_no = (a); \
! 141: strlcpy((error_info).sqlstate, (b), sizeof((error_info).sqlstate)); \
! 142: strlcpy((error_info).error, (c), sizeof((error_info).error)); \
! 143: }
! 144:
! 145: #define SET_OOM_ERROR(error_info) SET_CLIENT_ERROR((error_info), CR_OUT_OF_MEMORY, UNKNOWN_SQLSTATE, mysqlnd_out_of_memory)
! 146:
! 147:
! 148: #define SET_STMT_ERROR(stmt, a, b, c) SET_CLIENT_ERROR((stmt)->error_info, a, b, c)
! 149:
! 150: #define CONN_GET_STATE(c) (c)->m->get_state((c) TSRMLS_CC)
! 151: #define CONN_SET_STATE(c, s) (c)->m->set_state((c), (s) TSRMLS_CC)
! 152:
! 153: /* PS stuff */
! 154: typedef void (*ps_field_fetch_func)(zval *zv, const MYSQLND_FIELD * const field,
! 155: unsigned int pack_len, zend_uchar **row,
! 156: zend_bool everything_as_unicode TSRMLS_DC);
! 157: struct st_mysqlnd_perm_bind {
! 158: ps_field_fetch_func func;
! 159: /* should be signed int */
! 160: int pack_len;
! 161: unsigned int php_type;
! 162: zend_bool is_possibly_blob;
! 163: zend_bool can_ret_as_str_in_uni;
! 164: };
! 165:
! 166: extern struct st_mysqlnd_perm_bind mysqlnd_ps_fetch_functions[MYSQL_TYPE_LAST + 1];
! 167:
! 168: PHPAPI extern const char * const mysqlnd_old_passwd;
! 169: PHPAPI extern const char * const mysqlnd_out_of_sync;
! 170: PHPAPI extern const char * const mysqlnd_server_gone;
! 171: PHPAPI extern const char * const mysqlnd_out_of_memory;
! 172:
! 173: enum_func_status mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_warning TSRMLS_DC);
! 174:
! 175:
! 176:
! 177: void _mysqlnd_init_ps_subsystem();/* This one is private, mysqlnd_library_init() will call it */
! 178: void _mysqlnd_init_ps_fetch_subsystem();
! 179:
! 180: void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field,
! 181: unsigned int pack_len, zend_uchar **row, zend_bool as_unicode,
! 182: unsigned int byte_count TSRMLS_DC);
! 183:
! 184: #endif /* MYSQLND_PRIV_H */
! 185:
! 186:
! 187: /*
! 188: * Local variables:
! 189: * tab-width: 4
! 190: * c-basic-offset: 4
! 191: * End:
! 192: * vim600: noet sw=4 ts=4 fdm=marker
! 193: * vim<600: noet sw=4 ts=4
! 194: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>