From: Nikita Popov Date: Thu, 17 Sep 2020 14:05:33 +0000 (+0200) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e9ac7d27ba4870d8c07de97e1fb4bd7e2b8aadb4;p=php Merge branch 'PHP-7.4' * PHP-7.4: Fix mysqli_release_savepoint() on mysqlnd --- e9ac7d27ba4870d8c07de97e1fb4bd7e2b8aadb4 diff --cc ext/mysqli/mysqli_nonapi.c index 47079e0a3e,582ce79553..03e975462e --- a/ext/mysqli/mysqli_nonapi.c +++ b/ext/mysqli/mysqli_nonapi.c @@@ -1237,20 -1248,20 +1237,20 @@@ PHP_FUNCTION(mysqli_release_savepoint MY_MYSQL *mysql; zval *mysql_link; char * name = NULL; - size_t name_len = -1; + size_t name_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Os", &mysql_link, mysqli_link_class_entry, &name, &name_len) == FAILURE) { - return; + RETURN_THROWS(); } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - if (!name || !name_len) { - php_error_docref(NULL, E_WARNING, "Savepoint name cannot be empty"); - RETURN_FALSE; + if (name_len == 0) { + zend_argument_value_error(ERROR_ARG_POS(2), "cannot be empty"); + RETURN_THROWS(); } -#if !defined(MYSQLI_USE_MYSQLND) +#ifndef MYSQLI_USE_MYSQLND if (mysqli_savepoint_libmysql(mysql->mysql, name, TRUE)) { #else - if (FAIL == mysqlnd_savepoint(mysql->mysql, name)) { + if (FAIL == mysqlnd_release_savepoint(mysql->mysql, name)) { #endif RETURN_FALSE; } diff --cc ext/mysqli/tests/mysqli_release_savepoint.phpt index fa46366e7c,8f395ef6f8..76afa7a312 --- a/ext/mysqli/tests/mysqli_release_savepoint.phpt +++ b/ext/mysqli/tests/mysqli_release_savepoint.phpt @@@ -15,50 -15,61 +15,50 @@@ if (!have_innodb($link) ?> --FILE-- getMessage() . \PHP_EOL; + } - if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - printf("[003] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n", - $host, $user, $db, $port, $socket); + if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) + printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - $name = array(); - if (!is_null($tmp = @mysqli_release_savepoint($link, $name))) - printf("[004] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); + if (!mysqli_query($link, 'CREATE TABLE test(id INT) ENGINE = InnoDB')) + printf("[008] Cannot create test table, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - if (!is_null($tmp = @mysqli_release_savepoint($link, 'foo', $link))) - printf("[005] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp); + if (true !== ($tmp = mysqli_autocommit($link, false))) + printf("[009] Cannot turn off autocommit, expecting true, got %s/%s\n", gettype($tmp), $tmp); - if (false !== ($tmp = mysqli_release_savepoint($link, ''))) - printf("[006] Expecting false, got %s/%s\n", gettype($tmp), $tmp); + /* note that there is no savepoint my... */ - if (true !== ($tmp = mysqli_release_savepoint($link, 'my'))) ++ if (false !== ($tmp = mysqli_release_savepoint($link, 'my'))) + printf("[010] Got %s - [%d] %s\n", var_dump($tmp, true), mysqli_errno($link), mysqli_error($link)); - if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) - printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1)')) + printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - if (!mysqli_query($link, 'CREATE TABLE test(id INT) ENGINE = InnoDB')) - printf("[008] Cannot create test table, [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + $tmp = mysqli_commit($link); + if ($tmp !== true) + printf("[012] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); - if (true !== ($tmp = mysqli_autocommit($link, false))) - printf("[009] Cannot turn off autocommit, expecting true, got %s/%s\n", gettype($tmp), $tmp); + if (true !== ($tmp = mysqli_savepoint($link, 'my'))) + printf("[013] Got %s - [%d] %s\n", var_dump($tmp, true), mysqli_errno($link), mysqli_error($link)); - /* note that there is no savepoint my... */ - if (false !== ($tmp = mysqli_release_savepoint($link, 'my'))) - printf("[010] Got %s - [%d] %s\n", var_dump($tmp, true), mysqli_errno($link), mysqli_error($link)); + $res = mysqli_query($link, "SELECT * FROM test"); + var_dump($res->fetch_assoc()); - if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1)')) - printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + if (true !== ($tmp = mysqli_release_savepoint($link, 'my'))) + printf("[014] Got %s - [%d] %s\n", var_dump($tmp, true), mysqli_errno($link), mysqli_error($link)); - $tmp = mysqli_commit($link); - if ($tmp !== true) - printf("[012] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); - - if (true !== ($tmp = mysqli_savepoint($link, 'my'))) - printf("[013] Got %s - [%d] %s\n", var_dump($tmp, true), mysqli_errno($link), mysqli_error($link)); - - $res = mysqli_query($link, "SELECT * FROM test"); - var_dump($res->fetch_assoc()); - - if (true !== ($tmp = mysqli_release_savepoint($link, 'my'))) - printf("[014] Got %s - [%d] %s\n", var_dump($tmp, true), mysqli_errno($link), mysqli_error($link)); - - print "done!"; + print "done!"; ?> --CLEAN--