[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] [php-src] master: Merge branch 'PHP-7.4' into PHP-8.0
From: Matteo Beccati <noreply () php ! net>
Date: 2021-04-29 10:07:44
Message-ID: ENqeqwN64Dv8aYJNjKYvlLrHIIdn5Rcvw7RNmaACQ () main ! php ! net
[Download RAW message or body]
Author: Matteo Beccati (mbeccati)
Date: 2021-04-29T12:05:49+02:00
Commit: https://github.com/php/php-src/commit/7bc9df4af218b7031a2be7223fa922c4d57d4cac
Raw diff: https://github.com/php/php-src/commit/7bc9df4af218b7031a2be7223fa922c4d57d4cac.diff
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
Revert "Fix #80892: PDO::PARAM_INT is treated the same as PDO::PARAM_STR"
Changed paths:
D ext/pdo_pgsql/tests/bug_80892.phpt
M NEWS
M ext/pdo_pgsql/pgsql_statement.c
Diff:
diff --git a/NEWS b/NEWS
index a5fe5717701b5..2b04f1d25e546 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,10 @@ PHP \
NEWS
- ODBC:
. Fixed bug #80460 (ODBC doesn't account for SQL_NO_TOTAL indicator). (cmb)
+- PDO_pgsql:
+ . Reverted bug fix for #80892 (PDO::PARAM_INT is treated the same as
+ PDO::PARAM_STR). (Matteo)
+
- pgsql:
. Fixed php_pgsql_fd_cast() wrt. php_stream_can_cast(). (cmb)
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index a7b4bc1d8b3fe..21f4c83807ea0 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -52,19 +52,6 @@
#define VARCHARLABEL "varchar"
#define VARCHAROID 1043
-#define PG_INT32_MIN (-0x7FFFFFFF-1)
-#define PG_INT32_MAX (0x7FFFFFFF)
-
-#if defined(_MSC_VER)
-# define strtoll(s, f, b) _atoi64(s)
-#elif !defined(HAVE_STRTOLL)
-# if defined(HAVE_ATOLL)
-# define strtoll(s, f, b) atoll(s)
-# else
-# define strtoll(s, f, b) strtol(s, f, b)
-# endif
-#endif
-
static int pgsql_stmt_dtor(pdo_stmt_t *stmt)
@@ -401,16 +388,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct \
pdo_bound_param_data * S->param_formats[param->paramno] = 0;
}
- if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT) {
- /* we need to check if the number requires bigints */
- long long val = strtoll(Z_STRVAL_P(parameter), NULL, 10);
-
- if (val > PG_INT32_MAX || val < PG_INT32_MIN) {
- S->param_types[param->paramno] = INT8OID;
- } else {
- S->param_types[param->paramno] = INT4OID;
- }
- } else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) {
+ if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) {
S->param_types[param->paramno] = 0;
S->param_formats[param->paramno] = 1;
} else {
diff --git a/ext/pdo_pgsql/tests/bug_80892.phpt b/ext/pdo_pgsql/tests/bug_80892.phpt
deleted file mode 100644
index 8c48b169560a8..0000000000000
--- a/ext/pdo_pgsql/tests/bug_80892.phpt
+++ /dev/null
@@ -1,77 +0,0 @@
---TEST--
-Bug #80892 PDO::PARAM_INT is treated the same as PDO::PARAM_STR
---SKIPIF--
-<?php
-if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not \
loaded');
-require __DIR__ . '/config.inc';
-require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
-PDOTest::skip();
-?>
---FILE--
-<?php
-require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
-
-/** @var PDO $db */
-$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
-$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
-
-$db->exec("CREATE OR REPLACE FUNCTION bug80892 (x bigint) RETURNS varchar AS $$ \
SELECT 'bigint' $$ LANGUAGE sql");
-$db->exec("CREATE OR REPLACE FUNCTION bug80892 (x int) RETURNS varchar AS $$ SELECT \
'int' $$ LANGUAGE sql");
-$db->exec("CREATE OR REPLACE FUNCTION bug80892 (x text) RETURNS varchar AS $$ SELECT \
'text' $$ LANGUAGE sql");
-
-// Sanity check
-var_dump($db->query("SELECT bug80892(2147483648)")->fetchColumn());
-var_dump($db->query("SELECT bug80892(1)")->fetchColumn());
-var_dump($db->query("SELECT bug80892('1')")->fetchColumn());
-
-// No binding
-$stmt = $db->prepare("SELECT bug80892(?)");
-$stmt->execute([1]);
-var_dump($stmt->fetchColumn());
-
-// Bind int value as string
-$stmt = $db->prepare("SELECT bug80892(?)");
-$stmt->bindValue(1, 1, PDO::PARAM_STR);
-$stmt->execute();
-var_dump($stmt->fetchColumn());
-
-// Bind int value as int
-$stmt = $db->prepare("SELECT bug80892(?)");
-$stmt->bindValue(1, 1, PDO::PARAM_INT);
-$stmt->execute();
-var_dump($stmt->fetchColumn());
-
-// Bind string value as int
-$stmt = $db->prepare("SELECT bug80892(?)");
-$stmt->bindValue(1, '1', PDO::PARAM_INT);
-$stmt->execute();
-var_dump($stmt->fetchColumn());
-
-// Bind bigint string value as int
-$stmt = $db->prepare("SELECT bug80892(?)");
-$stmt->bindValue(1, '2147483648', PDO::PARAM_INT);
-$stmt->execute();
-var_dump($stmt->fetchColumn());
-
-// Bind negative bigint (string on 32bit) as int
-$stmt = $db->prepare("SELECT bug80892(?)");
-$stmt->bindValue(1, PHP_INT_SIZE == 4 ? '-33333333333' : -33333333333, \
PDO::PARAM_INT);
-$stmt->execute();
-var_dump($stmt->fetchColumn());
-
-$db->exec("DROP FUNCTION bug80892 (bigint)");
-$db->exec("DROP FUNCTION bug80892 (int)");
-$db->exec("DROP FUNCTION bug80892 (text)");
-
-?>
---EXPECT--
-string(6) "bigint"
-string(3) "int"
-string(4) "text"
-string(4) "text"
-string(4) "text"
-string(3) "int"
-string(3) "int"
-string(6) "bigint"
-string(6) "bigint"
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic