Annotation of embedaddon/php/ext/mysqli/tests/mysqli_constants.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: Constants exported by ext/mysqli
3: --SKIPIF--
4: <?php
5: require_once('skipif.inc');
6: require_once('skipifemb.inc');
7: require_once('skipifconnectfailure.inc');
8: ?>
9: --FILE--
10: <?php
11: require("connect.inc");
12: require("table.inc");
13:
14: $php_version = (int)str_replace('.', '', PHP_VERSION);
15: $constants = get_defined_constants(true);
16: sort($constants);
17:
18: $expected_constants = array(
19: 'MYSQLI_READ_DEFAULT_GROUP' => true,
20: 'MYSQLI_READ_DEFAULT_FILE' => true,
21: 'MYSQLI_OPT_CONNECT_TIMEOUT' => true,
22: 'MYSQLI_OPT_LOCAL_INFILE' => true,
23: 'MYSQLI_INIT_COMMAND' => true,
24: 'MYSQLI_CLIENT_SSL' => true,
25: "MYSQLI_CLIENT_COMPRESS" => true,
26: "MYSQLI_CLIENT_INTERACTIVE" => true,
27: "MYSQLI_CLIENT_IGNORE_SPACE" => true,
28: "MYSQLI_CLIENT_NO_SCHEMA" => true,
29: "MYSQLI_CLIENT_FOUND_ROWS" => true,
30: "MYSQLI_STORE_RESULT" => true,
31: "MYSQLI_USE_RESULT" => true,
32: "MYSQLI_ASSOC" => true,
33: "MYSQLI_NUM" => true,
34: "MYSQLI_BOTH" => true,
35: "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH" => true,
36: "MYSQLI_NOT_NULL_FLAG" => true,
37: "MYSQLI_PRI_KEY_FLAG" => true,
38: "MYSQLI_UNIQUE_KEY_FLAG" => true,
39: "MYSQLI_MULTIPLE_KEY_FLAG" => true,
40: "MYSQLI_BLOB_FLAG" => true,
41: "MYSQLI_UNSIGNED_FLAG" => true,
42: "MYSQLI_ZEROFILL_FLAG" => true,
43: "MYSQLI_AUTO_INCREMENT_FLAG" => true,
44: "MYSQLI_TIMESTAMP_FLAG" => true,
45: "MYSQLI_SET_FLAG" => true,
46: "MYSQLI_NUM_FLAG" => true,
47: "MYSQLI_ENUM_FLAG" => true,
48: "MYSQLI_BINARY_FLAG" => true,
49: "MYSQLI_PART_KEY_FLAG" => true,
50: "MYSQLI_GROUP_FLAG" => true,
51: "MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED"=> true,
52: "MYSQLI_SERVER_QUERY_NO_INDEX_USED" => true,
53:
54: "MYSQLI_TYPE_DECIMAL" => true,
55: "MYSQLI_TYPE_TINY" => true,
56: "MYSQLI_TYPE_SHORT" => true,
57: "MYSQLI_TYPE_LONG" => true,
58: "MYSQLI_TYPE_FLOAT" => true,
59: "MYSQLI_TYPE_DOUBLE" => true,
60: "MYSQLI_TYPE_NULL" => true,
61: "MYSQLI_TYPE_TIMESTAMP" => true,
62: "MYSQLI_TYPE_LONGLONG" => true,
63: "MYSQLI_TYPE_INT24" => true,
64: "MYSQLI_TYPE_DATE" => true,
65: "MYSQLI_TYPE_TIME" => true,
66: "MYSQLI_TYPE_DATETIME" => true,
67: "MYSQLI_TYPE_YEAR" => true,
68: "MYSQLI_TYPE_NEWDATE" => true,
69: "MYSQLI_TYPE_ENUM" => true,
70: "MYSQLI_TYPE_SET" => true,
71: "MYSQLI_TYPE_TINY_BLOB" => true,
72: "MYSQLI_TYPE_MEDIUM_BLOB" => true,
73: "MYSQLI_TYPE_LONG_BLOB" => true,
74: "MYSQLI_TYPE_BLOB" => true,
75: "MYSQLI_TYPE_VAR_STRING" => true,
76: "MYSQLI_TYPE_STRING" => true,
77: "MYSQLI_TYPE_CHAR" => true,
78: "MYSQLI_TYPE_INTERVAL" => true,
79: "MYSQLI_TYPE_GEOMETRY" => true,
80: "MYSQLI_NO_DATA" => true,
81: "MYSQLI_REPORT_INDEX" => true,
82: "MYSQLI_REPORT_STRICT" => true,
83: "MYSQLI_REPORT_ALL" => true,
84: "MYSQLI_REPORT_ERROR" => true,
85: "MYSQLI_REPORT_OFF" => true,
86: "MYSQLI_SET_CHARSET_NAME" => true,
87: "MYSQLI_SET_CHARSET_DIR" => true,
88: "MYSQLI_REFRESH_GRANT" => true,
89: "MYSQLI_REFRESH_LOG" => true,
90: "MYSQLI_REFRESH_TABLES" => true,
91: "MYSQLI_REFRESH_HOSTS" => true,
92: "MYSQLI_REFRESH_STATUS" => true,
93: "MYSQLI_REFRESH_THREADS" => true,
94: "MYSQLI_REFRESH_SLAVE" => true,
95: "MYSQLI_REFRESH_MASTER" => true,
96: "MYSQLI_DEBUG_TRACE_ENABLED" => true,
97: );
98:
99: /* depends on the build - experimental */
100: if ($IS_MYSQLND && defined('MYSQLI_OPT_INT_AND_FLOAT_NATIVE')) {
101: $expected_constants['MYSQLI_OPT_INT_AND_FLOAT_NATIVE'] = true;
102: }
103:
104: if ($IS_MYSQLND || defined('MYSQLI_REFRESH_BACKUP_LOG')) {
105: $expected_constants['MYSQLI_REFRESH_BACKUP_LOG'] = true;
106: }
107:
108: if ($IS_MYSQLND) {
109: $version = 50007 + 1;
110: $expected_constants['MYSQLI_OPT_NET_CMD_BUFFER_SIZE'] = true;
111: $expected_constants['MYSQLI_OPT_NET_READ_BUFFER_SIZE'] = true;
112: $expected_constants['MYSQLI_ASYNC'] = true;
113:
114: $expected_constants['MYSQLI_SERVER_PS_OUT_PARAMS'] = true;
115: } else {
116: $version = mysqli_get_client_version();
117: }
118:
119: if (($version > 51122 && $version < 60000) || ($version > 60003) || $IS_MYSQLND) {
120: $expected_constants['MYSQLI_ON_UPDATE_NOW_FLAG'] = true;
121: }
122:
123: /* First introduced in MySQL 6.0, backported to MySQL 5.5 */
124: if ($version >= 50500 || $IS_MYSQLND) {
125: $expected_constants['MYSQLI_SERVER_QUERY_WAS_SLOW'] = true;
126: }
127:
128: if ($version > 50002) {
129: $expected_constants = array_merge($expected_constants, array(
130: "MYSQLI_TYPE_NEWDECIMAL" => true,
131: "MYSQLI_TYPE_BIT" => true,
132: ));
133: }
134:
135: if ($version > 50002 || $IS_MYSQLND) {
136: $expected_constants['MYSQLI_NO_DEFAULT_VALUE_FLAG'] = true;
137: }
138:
139: if ($version > 50003) {
140: $expected_constants = array_merge($expected_constants, array(
141: "MYSQLI_STMT_ATTR_CURSOR_TYPE" => true,
142: "MYSQLI_CURSOR_TYPE_NO_CURSOR" => true,
143: "MYSQLI_CURSOR_TYPE_READ_ONLY" => true,
144: "MYSQLI_CURSOR_TYPE_FOR_UPDATE" => true,
145: "MYSQLI_CURSOR_TYPE_SCROLLABLE" => true,
146: ));
147: }
148:
149: if ($version > 50007) {
150: $expected_constants = array_merge($expected_constants, array(
151: "MYSQLI_STMT_ATTR_PREFETCH_ROWS" => true,
152: ));
153: }
154:
155: if ($version > 50110 || $IS_MYSQLND) {
156: $expected_constants['MYSQLI_OPT_SSL_VERIFY_SERVER_CERT'] = true;
157: }
158:
159: /* pretty dump test, but that is the best way to mimic mysql.c */
160: if (defined('MYSQLI_DATA_TRUNCATED'))
161: $expected_constants["MYSQLI_DATA_TRUNCATED"] = true;
162:
163: if (defined('MYSQLI_SERVER_PS_OUT_PARAMS'))
164: $expected_constants["MYSQLI_SERVER_PS_OUT_PARAMS"] = true;
165:
166: if (!$IS_MYSQLND) {
167: /* libmysql only */
168:
169: /* are they available in all versions of ext/mysqli ?
170: ... no we must have removed them at some point - for BC, weakening the test
171: */
172: if (defined("MYSQLI_RPL_MASTER")) {
173: $expected_constants["MYSQLI_RPL_MASTER"] = true;
174: $expected_constants["MYSQLI_RPL_SLAVE"] = true;
175: $expected_constants["MYSQLI_RPL_ADMIN"] = true;
176: }
177: }
178:
1.1.1.2 ! misho 179: if (($IS_MYSQLND && version_compare(PHP_VERSION, ' 5.4.12-dev', '>=')) || (!$IS_MYSQLND && ($version > 50610))) {
! 180: /* could be that MySQL/libmysql 5.6.9 had the flag already but it was no stable release */
! 181: $expected_constants["MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS"] = true;
! 182: }
1.1 misho 183:
184: $unexpected_constants = array();
185:
186: foreach ($constants as $group => $consts) {
187: foreach ($consts as $name => $value) {
188: if (stristr($name, 'mysqli')) {
189: $name = strtoupper($name);
190: if (isset($expected_constants[$name])) {
191: unset($expected_constants[$name]);
192: } else {
193: $unexpected_constants[$name] = $name;
194: }
195: }
196: }
197: }
198:
199: if (!empty($unexpected_constants)) {
200: printf("Dumping list of unexpected constants\n");
201: var_dump($unexpected_constants);
202: }
203:
204: if (!empty($expected_constants)) {
205: printf("Dumping list of missing constants\n");
206: var_dump($expected_constants);
207: }
208:
209: print "done!";
210: ?>
211: --EXPECTF--
212: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>