svn: /pecl/mysqlnd_ms/trunk/ mysqlnd_ms.c tests/mysqlnd_ms_gtid_invalid_on_commit.phpt

From: Date: Mon, 05 Dec 2011 18:19:36 +0000
Subject: svn: /pecl/mysqlnd_ms/trunk/ mysqlnd_ms.c tests/mysqlnd_ms_gtid_invalid_on_commit.phpt
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-17268@lists.php.net to get a copy of this message
uw Mon, 05 Dec 2011 18:19:36 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=320452 Log: Use same error type as for other config issues, e.g. wrong port Changed paths: U pecl/mysqlnd_ms/trunk/mysqlnd_ms.c A pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_gtid_invalid_on_commit.phpt Modified: pecl/mysqlnd_ms/trunk/mysqlnd_ms.c =================================================================== --- pecl/mysqlnd_ms/trunk/mysqlnd_ms.c 2011-12-05 18:11:41 UTC (rev 320451) +++ pecl/mysqlnd_ms/trunk/mysqlnd_ms.c 2011-12-05 18:19:36 UTC (rev 320452) @@ -628,12 +628,11 @@ json_value = mysqlnd_ms_config_json_string_from_section(g_trx_section, SECT_G_TRX_ON_COMMIT, sizeof(SECT_G_TRX_ON_COMMIT) - 1, 0, &entry_exists, &entry_is_list TSRMLS_CC); if (entry_exists && json_value) { if (entry_is_list) { - /* TODO: Do we want to use E_ERROR ? */ char error_buf[128]; snprintf(error_buf, sizeof(error_buf), MYSQLND_MS_ERROR_PREFIX " '%s' from '%s' must be a string", SECT_G_TRX_ON_COMMIT, SECT_G_TRX_NAME); error_buf[sizeof(error_buf) - 1] = '\0'; SET_CLIENT_ERROR(MYSQLND_MS_ERROR_INFO(conn), CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, error_buf); - php_error_docref(NULL TSRMLS_CC, E_ERROR, "%s", error_buf); + php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "%s", error_buf); } else { json_value_len = strlen(json_value); trx->on_commit = mnd_pestrndup(json_value, json_value_len, persistent); @@ -645,12 +644,11 @@ json_value = mysqlnd_ms_config_json_string_from_section(g_trx_section, SECT_G_TRX_FETCH_LAST_GTID, sizeof(SECT_G_TRX_FETCH_LAST_GTID) - 1, 0, &entry_exists, &entry_is_list TSRMLS_CC); if (entry_exists && json_value) { if (entry_is_list) { - /* TODO: Do we want to use E_ERROR ? */ char error_buf[128]; snprintf(error_buf, sizeof(error_buf), MYSQLND_MS_ERROR_PREFIX " '%s' from '%s' must be a string", SECT_G_TRX_FETCH_LAST_GTID, SECT_G_TRX_NAME); error_buf[sizeof(error_buf) - 1] = '\0'; SET_CLIENT_ERROR(MYSQLND_MS_ERROR_INFO(conn), CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, error_buf); - php_error_docref(NULL TSRMLS_CC, E_ERROR, "%s", error_buf); + php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "%s", error_buf); } else { json_value_len = strlen(json_value); trx->fetch_last_gtid = mnd_pestrndup(json_value, json_value_len, persistent); @@ -662,12 +660,11 @@ json_value = mysqlnd_ms_config_json_string_from_section(g_trx_section, SECT_G_TRX_CHECK_FOR_GTID, sizeof(SECT_G_TRX_CHECK_FOR_GTID) - 1, 0, &entry_exists, &entry_is_list TSRMLS_CC); if (entry_exists && json_value) { if (entry_is_list) { - /* TODO: Do we want to use E_ERROR ? */ char error_buf[128]; snprintf(error_buf, sizeof(error_buf), MYSQLND_MS_ERROR_PREFIX " '%s' from '%s' must be a string", SECT_G_TRX_CHECK_FOR_GTID, SECT_G_TRX_NAME); error_buf[sizeof(error_buf) - 1] = '\0'; SET_CLIENT_ERROR(MYSQLND_MS_ERROR_INFO(conn), CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, error_buf); - php_error_docref(NULL TSRMLS_CC, E_ERROR, "%s", error_buf); + php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "%s", error_buf); } else { json_value_len = strlen(json_value); trx->check_for_gtid = mnd_pestrndup(json_value, json_value_len, persistent); Added: pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_gtid_invalid_on_commit.phpt =================================================================== --- pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_gtid_invalid_on_commit.phpt (rev 0) +++ pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_gtid_invalid_on_commit.phpt 2011-12-05 18:19:36 UTC (rev 320452) @@ -0,0 +1,82 @@ +--TEST-- +GTID, config, invalid on_commit +--SKIPIF-- +<?php +if (version_compare(PHP_VERSION, '5.3.99-dev', '<')) + die(sprintf("SKIP Requires PHP >= 5.3.99, using " . PHP_VERSION)); + +require_once('skipif.inc'); + require_once("connect.inc"); + +_skipif_check_extensions(array("mysqli")); +_skipif_connect($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket); +_skipif_connect($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket); + +include_once("util.inc"); +$sql = mst_get_gtid_sql($db); + +$settings = array( + "myapp" => array( + 'master' => array( + "master1" => array( + 'host' => $emulated_master_host_only, + 'port' => (int)$emulated_master_port, + 'socket' => $emulated_master_socket, + ), + ), + 'slave' => array( + "slave1" => array( + 'host' => $emulated_slave_host_only, + 'port' => (int)$emulated_slave_port, + 'socket' => $emulated_slave_socket, + ), + ), + + 'global_transaction_id_injection' => array( + 'on_commit' => array($sql['update']), + ), + + 'lazy_connections' => 1, + 'trx_stickiness' => 'disabled', + 'filters' => array( + "roundrobin" => array(), + ), + ), + +); +if ($error = mst_create_config("test_mysqlnd_ms_gtid_invalid_on_commit.ini", $settings)) + die(sprintf("SKIP %s\n", $error)); +?> +--INI-- +mysqlnd_ms.enable=1 +mysqlnd_ms.ini_file=test_mysqlnd_ms_gtid_invalid_on_commit.ini +--FILE-- +<?php + require_once("connect.inc"); + require_once("util.inc"); + + $link = mst_mysqli_connect("myapp", $user, $passwd, $db, $port, $socket); + if (mysqli_connect_errno()) { + printf("[002] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); + } + /* we need an extra non-MS link for checking GTID. If we use MS link, the check itself will change GTID */ + $emulated_master_link = mst_mysqli_connect($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket); + + /* auto commit on (default) */ + $gtid = mst_mysqli_fetch_gtid(3, $emulated_master_link, $db); + mst_mysqli_query(4, $link, "SET @myrole = 'Master'"); + $new_gtid = mst_mysqli_fetch_gtid(6, $emulated_master_link, $db); + if ($new_gtid <= $gtid) { + printf("[007] GTID has not been incremented on master in auto commit mode\n"); + } + $gtid = $new_gtid; + + print "done!"; +?> +--CLEAN-- +<?php + if (!unlink("test_mysqlnd_ms_gtid_invalid_on_commit.ini")) + printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_gtid_invalid_on_commit.ini'.\n"); +?> +--EXPECTF-- +Catchable fatal error: mysqli_real_connect(): (mysqlnd_ms) 'on_commit' from 'global_transaction_id_injection' must be a string in %s on line %d \ No newline at end of file

« previous php.pecl.cvs (#17268) next »