Annotation of embedaddon/php/ext/mysqli/tests/mysqli_change_user_set_names.phpt, revision 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>