Annotation of embedaddon/php/ext/mysqli/tests/mysqli_change_user_set_names.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: mysqli_change_user() - SET NAMES
3: --SKIPIF--
4: <?php
5: require_once('skipif.inc');
6: require_once('skipifemb.inc');
7: require_once('skipifconnectfailure.inc');
8:
9: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
10: die(sprintf("skip [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
11:
12: if (!$res = mysqli_query($link, 'SELECT version() AS server_version'))
13: die(sprintf("skip [%d] %s\n", mysqli_errno($link), mysqli_error($link)));
14:
15: $tmp = mysqli_fetch_assoc($res);
16: mysqli_free_result($res);
17: $version = explode('.', $tmp['server_version']);
18: if (empty($version))
19: die(sprintf("skip Cannot determine server version, we need MySQL Server 4.1+ for the test!"));
20:
21: if ($version[0] <= 4 && $version[1] < 1)
22: die(sprintf("skip We need MySQL Server 4.1+ for the test!"));
23: ?>
24: --FILE--
25: <?php
26: require_once('connect.inc');
27:
28: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
29: printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
30:
31: if (!$res = mysqli_query($link, "SHOW CHARACTER SET LIKE 'latin%'"))
32: printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
33:
34: $charsets = array();
35: while ($row = mysqli_fetch_assoc($res))
36: $charsets[$row['Charset']] = $row['Default collation'];
37:
38: mysqli_free_result($res);
39: if (!mysqli_query($link, 'SET NAMES DEFAULT'))
40: printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
41:
42: if (!$res = mysqli_query($link, 'SELECT
43: @@character_set_client AS charset_client,
44: @@character_set_connection AS charset_connection,
45: @@character_set_results AS charset_results,
46: @@collation_connection AS collation_connection,
47: @@collation_database AS collation_database,
48: @@collation_server AS collation_server'))
49: printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
50:
51: if (!$defaults = mysqli_fetch_assoc($res))
52: printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
53: mysqli_free_result($res);
54:
55: $not_changed = $defaults;
56: foreach ($charsets as $charset => $collation) {
57:
58: if (isset($not_changed['charset_client']) &&
59: $charset != $not_changed['charset_client'] &&
60: mysqli_query($link, sprintf("SET @@character_set_client = '%s'", $charset)))
61: unset($not_changed['charset_client']);
62:
63: if (isset($not_changed['charset_connection']) &&
64: $charset != $not_changed['charset_connection'] &&
65: mysqli_query($link, sprintf("SET @@character_connection = '%s'", $charset)))
66: unset($not_changed['charset_connection']);
67:
68: if (isset($not_changed['charset_results']) &&
69: $charset != $not_changed['charset_results'] &&
70: mysqli_query($link, sprintf("SET @@character_set_results = '%s'", $charset)))
71: unset($not_changed['charset_results']);
72:
73: if (isset($not_changed['collation_connection']) &&
74: $collation != $not_changed['collation_connection'] &&
75: mysqli_query($link, sprintf("SET @@collation_connection = '%s'", $collation)))
76: unset($not_changed['collation_connection']);
77:
78: if (isset($not_changed['collation_database']) &&
79: $collation != $not_changed['collation_database'] &&
80: mysqli_query($link, sprintf("SET @@collation_database = '%s'", $collation)))
81: unset($not_changed['collation_database']);
82:
83: if (isset($not_changed['collation_server']) &&
84: $collation != $not_changed['collation_server'] &&
85: mysqli_query($link, sprintf("SET @@collation_server = '%s'", $collation)))
86: unset($not_changed['collation_server']);
87:
88: if (empty($not_changed))
89: break;
90: }
91:
92: if (!$res = mysqli_query($link, 'SELECT
93: @@character_set_client AS charset_client,
94: @@character_set_connection AS charset_connection,
95: @@character_set_results AS charset_results,
96: @@collation_connection AS collation_connection,
97: @@collation_database AS collation_database,
98: @@collation_server AS collation_server'))
99: printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
100:
101: if (!$modified = mysqli_fetch_assoc($res))
102: printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
103: mysqli_free_result($res);
104:
105: if ($modified == $defaults)
106: printf("[008] Not all settings have been changed\n");
107:
108: // LAST_INSERT_ID should be reset
109: mysqli_change_user($link, $user, $passwd, $db);
110:
111: if (!$res = mysqli_query($link, 'SELECT
112: @@character_set_client AS charset_client,
113: @@character_set_connection AS charset_connection,
114: @@character_set_results AS charset_results,
115: @@collation_connection AS collation_connection,
116: @@collation_database AS collation_database,
117: @@collation_server AS collation_server'))
118: printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
119:
120: if (!$new = mysqli_fetch_assoc($res))
121: printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
122: mysqli_free_result($res);
123:
124: if ($new == $modified) {
125: printf("[011] Charsets/collations have not been reset.\n");
126: printf("Got:\n");
127: var_dump($new);
128: printf("Expected:\n");
129: var_dump($defaults);
130: }
131:
132: if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1)) {
133: // charsets cannot take any other value but utf8 in unicode mode
134: $defaults['charset_client'] = 'utf8';
135: $defaults['charset_connection'] = 'utf8';
136: $defaults['charset_results'] = 'utf8';
137: $defaults['collation_connection'] = 'utf8_general_ci';
138: }
139:
140: if ($new != $defaults) {
141: printf("[012] Charsets/collations have not been reset to their defaults.\n");
142: printf("Got:\n");
143: var_dump($new);
144: printf("Expected:\n");
145: var_dump($defaults);
146: }
147:
148: if (!is_object($charset = mysqli_get_charset($link)))
149: printf("[013] Expecting object/std_class, got %s/%s\n", gettype($charset), $charset);
150:
151: if ($charset->charset != $defaults['charset_connection'])
152: printf("[014] Expecting connection charset to be %s got %s\n",
153: $defaults['charset_connection'],
154: $charset->charset);
155:
156: if ($charset->collation != $defaults['collation_connection'])
157: printf("[015] Expecting collation to be %s got %s\n",
158: $defaults['collation_connection'],
159: $charset->collation);
160:
161: mysqli_close($link);
162: print "done!";
163: ?>
164: --EXPECTF--
165: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>