diff options
author | Anatol Belski <ab@php.net> | 2016-12-18 21:55:30 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2016-12-18 21:55:30 +0100 |
commit | f077ada348565387beb08a521121e3def566daf8 (patch) | |
tree | fc094e84a7534f65c3d8c086eb28a009f7d3bd97 | |
parent | 7371c46518ff94858d5be20e334ebfd59e12ca3e (diff) | |
parent | cf46ac1179376f58895feb6ed914b03bea19e295 (diff) | |
download | php-git-f077ada348565387beb08a521121e3def566daf8.tar.gz |
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
Cursor is not opened on singleton selects.
fix arg spec and datatype, follow up on 73594
-rw-r--r-- | ext/pdo_firebird/firebird_statement.c | 4 | ||||
-rw-r--r-- | ext/pdo_firebird/tests/bug_aaa.phpt | 19 | ||||
-rw-r--r-- | ext/standard/dns_win32.c | 4 |
3 files changed, 23 insertions, 4 deletions
diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c index f719ecc36d..64968428bd 100644 --- a/ext/pdo_firebird/firebird_statement.c +++ b/ext/pdo_firebird/firebird_statement.c @@ -152,8 +152,8 @@ static int firebird_stmt_execute(pdo_stmt_t *stmt) /* {{{ */ } *S->name = 0; - S->cursor_open = (S->out_sqlda.sqln > 0); /* A cursor is opened, when more than zero columns returned */ - S->exhausted = !S->cursor_open; + S->cursor_open = S->out_sqlda.sqln && (S->statement_type != isc_info_sql_stmt_exec_procedure); + S->exhausted = !S->out_sqlda.sqln; /* There are data to fetch */ return 1; } while (0); diff --git a/ext/pdo_firebird/tests/bug_aaa.phpt b/ext/pdo_firebird/tests/bug_aaa.phpt new file mode 100644 index 0000000000..821d59afd2 --- /dev/null +++ b/ext/pdo_firebird/tests/bug_aaa.phpt @@ -0,0 +1,19 @@ +--TEST-- +PDO_Firebird: cursor should not be marked as opened on singleton statements +--SKIPIF-- +<?php if (!extension_loaded('interbase') || !extension_loaded('pdo_firebird')) die('skip'); ?> +--FILE-- +<?php +require 'testdb.inc'; +$C = new PDO('firebird:dbname='.$test_base, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]) or die; +@$C->exec('drop table ta_table'); +$C->exec('create table ta_table (id integer)'); +$S = $C->prepare('insert into ta_table (id) values (:id) returning id'); +$S->execute(['id' => 1]); +$S->execute(['id' => 2]); +unset($S); +unset($C); +echo 'OK'; +?> +--EXPECT-- +OK
\ No newline at end of file diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c index f28977ab6a..17f2e5434e 100644 --- a/ext/standard/dns_win32.c +++ b/ext/standard/dns_win32.c @@ -347,12 +347,12 @@ PHP_FUNCTION(dns_get_record) { char *hostname; size_t hostname_len; - long type_param = PHP_DNS_ANY; + zend_long type_param = PHP_DNS_ANY; zval *authns = NULL, *addtl = NULL; int type, type_to_fetch, first_query = 1, store_results = 1; zend_bool raw = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|lz!z!b", + if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|lz/!z/!b", &hostname, &hostname_len, &type_param, &authns, &addtl, &raw) == FAILURE) { return; } |