com php-src: Merge remote-tracking branch 'origin/PHP-5.6' into str_size_and_int64_56_backport: ext/curl/ interface.c ext/pdo_pgsql/pdo_pgsql.c
ext/pdo_pgs ql/pgsql_driver.c ext/pdo_pgsql/pgsql_statement.c ext/pdo_pgsql/php_pdo_pgsql_int.h
| From: | Anatol Belski | Date: | Wed, 12 Mar 2014 08:02:39 +0000 |
| Subject: | com php-src: Merge remote-tracking branch 'origin/PHP-5.6' into str_size_and_int64_56_backport: ext/curl/ interface.c ext/pdo_pgsql/pdo_pgsql.c ext/pdo_pgs ql/pgsql_driver.c ext/pdo_pgsql/pgsql_statement.c ext/pdo_pgsql/php_pdo_pgsql_int.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-76453@lists.php.net to get a copy of this message | ||
Commit: 63d06ce9b025817142470b5910d42f745b7b852c
Author: Anatol Belski <ab@php.net> Wed, 12 Mar 2014 09:02:39 +0100
Parents: f224455520bc9343d749fc051e9c09614f861571 1241a63931069cf061bd74c9594c9a960c382fa6
Branches: str_size_and_int64_56_backport
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=63d06ce9b025817142470b5910d42f745b7b852c
Log:
Merge remote-tracking branch 'origin/PHP-5.6' into str_size_and_int64_56_backport
* origin/PHP-5.6:
Updated NEWS
Added new PDO::PGSQL_ATTR_DISABLE_PREPARES that uses PQexecParams
Deprecated PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT
Drop PDO support for extremely old libpq versions
Fix compile error with theoretically supported versions of libcurl < 7.12.3.
Conflicts:
ext/pdo_pgsql/pdo_pgsql.c
ext/pdo_pgsql/pgsql_driver.c
Changed paths:
MM ext/curl/interface.c
MM ext/pdo_pgsql/pdo_pgsql.c
MM ext/pdo_pgsql/pgsql_driver.c
MM ext/pdo_pgsql/pgsql_statement.c
MM ext/pdo_pgsql/php_pdo_pgsql_int.h
Diff:
diff --cc ext/pdo_pgsql/pdo_pgsql.c
index 05b8cc9,fe003f8..fc7aa82
--- a/ext/pdo_pgsql/pdo_pgsql.c
+++ b/ext/pdo_pgsql/pdo_pgsql.c
@@@ -85,12 -85,13 +85,13 @@@ ZEND_GET_MODULE(pdo_pgsql
*/
PHP_MINIT_FUNCTION(pdo_pgsql)
{
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT",
PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT);
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_ATTR_DISABLE_PREPARES",
PDO_PGSQL_ATTR_DISABLE_PREPARES);
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_IDLE", (long)PGSQL_TRANSACTION_IDLE);
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_ACTIVE",
(long)PGSQL_TRANSACTION_ACTIVE);
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_INTRANS",
(long)PGSQL_TRANSACTION_INTRANS);
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_INERROR",
(long)PGSQL_TRANSACTION_INERROR);
- REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_UNKNOWN",
(long)PGSQL_TRANSACTION_UNKNOWN);
+ REGISTER_PDO_CLASS_CONST_INT("PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT",
PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT);
++ REGISTER_PDO_CLASS_CONST_INT("PGSQL_ATTR_DISABLE_PREPARES",
PDO_PGSQL_ATTR_DISABLE_PREPARES);
+ REGISTER_PDO_CLASS_CONST_INT("PGSQL_TRANSACTION_IDLE",
(php_int_t)PGSQL_TRANSACTION_IDLE);
+ REGISTER_PDO_CLASS_CONST_INT("PGSQL_TRANSACTION_ACTIVE",
(php_int_t)PGSQL_TRANSACTION_ACTIVE);
+ REGISTER_PDO_CLASS_CONST_INT("PGSQL_TRANSACTION_INTRANS",
(php_int_t)PGSQL_TRANSACTION_INTRANS);
+ REGISTER_PDO_CLASS_CONST_INT("PGSQL_TRANSACTION_INERROR",
(php_int_t)PGSQL_TRANSACTION_INERROR);
+ REGISTER_PDO_CLASS_CONST_INT("PGSQL_TRANSACTION_UNKNOWN",
(php_int_t)PGSQL_TRANSACTION_UNKNOWN);
php_pdo_register_driver(&pdo_pgsql_driver);
return SUCCESS;
diff --cc ext/pdo_pgsql/pgsql_driver.c
index 7fd6886,96f6fa7..b5b3799
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@@ -220,12 -220,11 +220,11 @@@ static int pgsql_handle_preparer(pdo_db
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
pdo_pgsql_stmt *S = ecalloc(1, sizeof(pdo_pgsql_stmt));
int scrollable;
- #if HAVE_PQPREPARE
int ret;
char *nsql = NULL;
- int nsql_len = 0;
+ php_size_t nsql_len = 0;
int emulate = 0;
- #endif
+ int execute_only = 0;
S->H = H;
stmt->driver_data = S;
@@@ -239,19 -238,21 +238,21 @@@
efree(S->cursor_name);
}
spprintf(&S->cursor_name, 0, "pdo_crsr_%08x", ++H->stmt_counter);
- #if HAVE_PQPREPARE
emulate = 1;
- #endif
- }
-
- #if HAVE_PQPREPARE
- else if (driver_options) {
- if (pdo_attr_ival(driver_options, PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT,
H->disable_native_prepares TSRMLS_CC) == 1 ||
- pdo_attr_ival(driver_options, PDO_ATTR_EMULATE_PREPARES, H->emulate_prepares TSRMLS_CC) ==
1) {
+ } else if (driver_options) {
- if (pdo_attr_lval(driver_options, PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT,
H->disable_native_prepares TSRMLS_CC) == 1) {
++ if (pdo_attr_ival(driver_options, PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT,
H->disable_native_prepares TSRMLS_CC) == 1) {
+ php_error_docref(NULL TSRMLS_CC, E_DEPRECATED,
"PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT is deprecated, use
PDO::ATTR_EMULATE_PREPARES instead");
+ emulate = 1;
+ }
- if (pdo_attr_lval(driver_options, PDO_ATTR_EMULATE_PREPARES, H->emulate_prepares TSRMLS_CC)
== 1) {
++ if (pdo_attr_ival(driver_options, PDO_ATTR_EMULATE_PREPARES, H->emulate_prepares TSRMLS_CC)
== 1) {
emulate = 1;
}
- if (pdo_attr_lval(driver_options, PDO_PGSQL_ATTR_DISABLE_PREPARES, H->disable_prepares
TSRMLS_CC) == 1) {
++ if (pdo_attr_ival(driver_options, PDO_PGSQL_ATTR_DISABLE_PREPARES, H->disable_prepares
TSRMLS_CC) == 1) {
+ execute_only = 1;
+ }
} else {
emulate = H->disable_native_prepares || H->emulate_prepares;
+ execute_only = H->disable_prepares;
}
if (!emulate && PQprotocolVersion(H->server) > 2) {
@@@ -289,9 -292,9 +292,9 @@@ static php_int_t pgsql_handle_doer(pdo_
{
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
PGresult *res;
- long ret = 1;
+ php_int_t ret = 1;
ExecStatusType qs;
-
+
if (!(res = PQexec(H->server, sql))) {
/* fatal error */
pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
@@@ -579,15 -570,15 +574,15 @@@ static PHP_METHOD(PDO, pgsqlCopyFromArr
PQclear(pgsql_result);
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(pg_rows), &pos);
while (zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), (void **) &tmp, &pos) ==
SUCCESS) {
- int query_len;
+ php_size_t query_len;
convert_to_string_ex(tmp);
-
+
- if (buffer_len < Z_STRLEN_PP(tmp)) {
- buffer_len = Z_STRLEN_PP(tmp);
+ if (buffer_len < Z_STRSIZE_PP(tmp)) {
+ buffer_len = Z_STRSIZE_PP(tmp);
query = erealloc(query, buffer_len + 2); /* room for \n\0 */
}
- memcpy(query, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
- query_len = Z_STRLEN_PP(tmp);
+ memcpy(query, Z_STRVAL_PP(tmp), Z_STRSIZE_PP(tmp));
+ query_len = Z_STRSIZE_PP(tmp);
if (query[query_len - 1] != '\n') {
query[query_len++] = '\n';
}
@@@ -1122,15 -1113,16 +1117,16 @@@ static int pdo_pgsql_set_attr(pdo_dbh_
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
switch (attr) {
- #if HAVE_PQPREPARE
case PDO_ATTR_EMULATE_PREPARES:
- H->emulate_prepares = Z_LVAL_P(val);
+ H->emulate_prepares = Z_IVAL_P(val);
return 1;
case PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT:
+ php_error_docref(NULL TSRMLS_CC, E_DEPRECATED,
"PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT is deprecated, use
PDO::ATTR_EMULATE_PREPARES instead");
- H->disable_native_prepares = Z_LVAL_P(val);
+ H->disable_native_prepares = Z_IVAL_P(val);
return 1;
- #endif
-
+ case PDO_PGSQL_ATTR_DISABLE_PREPARES:
- H->disable_prepares = Z_LVAL_P(val);
++ H->disable_prepares = Z_IVAL_P(val);
+ return 1;
default:
return 0;
}
diff --cc ext/pdo_pgsql/pgsql_statement.c
index 930b7f9,35e69a3..8d0cbec
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@@ -321,12 -323,12 +324,12 @@@ static int pgsql_stmt_param_hook(pdo_st
return 1;
} else {
int len;
-
+
SEPARATE_ZVAL_IF_NOT_REF(¶m->parameter);
Z_TYPE_P(param->parameter) = IS_STRING;
-
+
if ((len = php_stream_copy_to_mem(stm, &Z_STRVAL_P(param->parameter),
PHP_STREAM_COPY_ALL, 0)) > 0) {
- Z_STRLEN_P(param->parameter) = len;
+ Z_STRSIZE_P(param->parameter) = len;
} else {
ZVAL_EMPTY_STRING(param->parameter);
}
@@@ -583,9 -580,9 +581,9 @@@ static int pgsql_stmt_get_column_meta(p
if (colno >= stmt->column_count) {
return FAILURE;
}
-
+
array_init(return_value);
- add_assoc_long(return_value, "pgsql:oid", S->cols[colno].pgsql_type);
+ add_assoc_int(return_value, "pgsql:oid", S->cols[colno].pgsql_type);
/* Fetch metadata from Postgres system catalogue */
spprintf(&q, 0, "SELECT TYPNAME FROM PG_TYPE WHERE OID=%u",
S->cols[colno].pgsql_type);