mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
ext/pdo_firebird: Do not implement new constants in PDO core (#14995)
This commit is contained in:
parent
b3a4a6b1e1
commit
4cb82b039e
6 changed files with 43 additions and 48 deletions
|
@ -504,9 +504,9 @@ PHP 8.4 UPGRADE NOTES
|
||||||
. getAttribute, enabled to get values of FB_ATTR_DATE_FORMAT, FB_ATTR_TIME_FORMAT,
|
. getAttribute, enabled to get values of FB_ATTR_DATE_FORMAT, FB_ATTR_TIME_FORMAT,
|
||||||
FB_ATTR_TIMESTAMP_FORMAT.
|
FB_ATTR_TIMESTAMP_FORMAT.
|
||||||
. Added new attributes to specify transaction isolation level and access mode.
|
. Added new attributes to specify transaction isolation level and access mode.
|
||||||
Along with these, five constants (PDO::FB_TRANSACTION_ISOLATION_LEVEL,
|
Along with these, five constants (Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL,
|
||||||
PDO::FB_READ_COMMITTED, PDO::FB_REPEATABLE_READ, PDO::FB_SERIALIZABLE,
|
Pdo\Firebird::READ_COMMITTED, Pdo\Firebird::REPEATABLE_READ,
|
||||||
PDO::FB_WRITABLE_TRANSACTION) have been added.
|
Pdo\Firebird::SERIALIZABLE, Pdo\Firebird::WRITABLE_TRANSACTION) have been added.
|
||||||
. When using persistent connections, there is now a liveness check in the
|
. When using persistent connections, there is now a liveness check in the
|
||||||
constructor.
|
constructor.
|
||||||
. The content that is built changes depending on the value of FB_API_VER in
|
. The content that is built changes depending on the value of FB_API_VER in
|
||||||
|
|
|
@ -1080,8 +1080,8 @@ static bool pdo_firebird_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val
|
||||||
*/
|
*/
|
||||||
H->txn_isolation_level = lval;
|
H->txn_isolation_level = lval;
|
||||||
} else {
|
} else {
|
||||||
zend_value_error("PDO::FB_TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level "
|
zend_value_error("Pdo\\Firebird::TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level "
|
||||||
"(PDO::FB_READ_COMMITTED, PDO::FB_REPEATABLE_READ, or PDO::FB_SERIALIZABLE)");
|
"(Pdo\\Firebird::READ_COMMITTED, Pdo\\Firebird::REPEATABLE_READ, or Pdo\\Firebird::SERIALIZABLE)");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1318,8 +1318,8 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /*
|
||||||
) {
|
) {
|
||||||
H->txn_isolation_level = txn_isolation_level;
|
H->txn_isolation_level = txn_isolation_level;
|
||||||
} else {
|
} else {
|
||||||
zend_value_error("PDO::FB_TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level "
|
zend_value_error("Pdo\\Firebird::TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level "
|
||||||
"(PDO::FB_READ_COMMITTED, PDO::FB_REPEATABLE_READ, or PDO::FB_SERIALIZABLE)");
|
"(Pdo\\Firebird::READ_COMMITTED, Pdo\\Firebird::REPEATABLE_READ, or Pdo\\Firebird::SERIALIZABLE)");
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,11 +60,6 @@ PHP_MINIT_FUNCTION(pdo_firebird) /* {{{ */
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_DATE_FORMAT", (zend_long) PDO_FB_ATTR_DATE_FORMAT);
|
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_DATE_FORMAT", (zend_long) PDO_FB_ATTR_DATE_FORMAT);
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_TIME_FORMAT", (zend_long) PDO_FB_ATTR_TIME_FORMAT);
|
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_TIME_FORMAT", (zend_long) PDO_FB_ATTR_TIME_FORMAT);
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_TIMESTAMP_FORMAT", (zend_long) PDO_FB_ATTR_TIMESTAMP_FORMAT);
|
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_TIMESTAMP_FORMAT", (zend_long) PDO_FB_ATTR_TIMESTAMP_FORMAT);
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_TRANSACTION_ISOLATION_LEVEL", (zend_long) PDO_FB_TRANSACTION_ISOLATION_LEVEL);
|
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_READ_COMMITTED", (zend_long) PDO_FB_READ_COMMITTED);
|
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_REPEATABLE_READ", (zend_long) PDO_FB_REPEATABLE_READ);
|
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_SERIALIZABLE", (zend_long) PDO_FB_SERIALIZABLE);
|
|
||||||
REGISTER_PDO_CLASS_CONST_LONG("FB_WRITABLE_TRANSACTION", (zend_long) PDO_FB_WRITABLE_TRANSACTION);
|
|
||||||
|
|
||||||
if (FAILURE == php_pdo_register_driver(&pdo_firebird_driver)) {
|
if (FAILURE == php_pdo_register_driver(&pdo_firebird_driver)) {
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
|
|
|
@ -29,11 +29,11 @@ foreach ($values as $value) {
|
||||||
PDO_FIREBIRD_TEST_USER,
|
PDO_FIREBIRD_TEST_USER,
|
||||||
PDO_FIREBIRD_TEST_PASS,
|
PDO_FIREBIRD_TEST_PASS,
|
||||||
[
|
[
|
||||||
PDO::FB_WRITABLE_TRANSACTION => $value['val'],
|
Pdo\Firebird::WRITABLE_TRANSACTION => $value['val'],
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION) === $value['val']) {
|
if ($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION) === $value['val']) {
|
||||||
echo "OK: {$value['label']}\n";
|
echo "OK: {$value['label']}\n";
|
||||||
} else {
|
} else {
|
||||||
echo "NG: {$value['label']}\n";
|
echo "NG: {$value['label']}\n";
|
||||||
|
@ -54,8 +54,8 @@ $dbh = new PDO(
|
||||||
$dbh->query("CREATE TABLE {$table} (val INT)");
|
$dbh->query("CREATE TABLE {$table} (val INT)");
|
||||||
|
|
||||||
echo "writable\n";
|
echo "writable\n";
|
||||||
var_dump($dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, true));
|
var_dump($dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, true));
|
||||||
if ($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION) === true) {
|
if ($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION) === true) {
|
||||||
echo "OK: writable\n";
|
echo "OK: writable\n";
|
||||||
} else {
|
} else {
|
||||||
echo "NG: writable\n";
|
echo "NG: writable\n";
|
||||||
|
@ -67,8 +67,8 @@ var_dump($r->fetchAll());
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
echo "readonly\n";
|
echo "readonly\n";
|
||||||
var_dump($dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, false));
|
var_dump($dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, false));
|
||||||
if ($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION) === false) {
|
if ($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION) === false) {
|
||||||
echo "OK: readonly\n";
|
echo "OK: readonly\n";
|
||||||
} else {
|
} else {
|
||||||
echo "NG: readonly\n";
|
echo "NG: readonly\n";
|
||||||
|
@ -84,47 +84,47 @@ var_dump($r->fetchAll());
|
||||||
echo "\n";
|
echo "\n";
|
||||||
echo "========== Set attr in setAttribute while transaction ==========\n";
|
echo "========== Set attr in setAttribute while transaction ==========\n";
|
||||||
|
|
||||||
$dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, true);
|
$dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, true);
|
||||||
$dbh->beginTransaction();
|
$dbh->beginTransaction();
|
||||||
|
|
||||||
echo "writable to writable\n";
|
echo "writable to writable\n";
|
||||||
try {
|
try {
|
||||||
$dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, true);
|
$dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, true);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
echo $e->getMessage()."\n";
|
echo $e->getMessage()."\n";
|
||||||
}
|
}
|
||||||
var_dump($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION));
|
var_dump($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION));
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
echo "writable to readonly\n";
|
echo "writable to readonly\n";
|
||||||
try {
|
try {
|
||||||
$dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, false);
|
$dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, false);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
echo $e->getMessage()."\n";
|
echo $e->getMessage()."\n";
|
||||||
}
|
}
|
||||||
var_dump($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION));
|
var_dump($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION));
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
$dbh->commit();
|
$dbh->commit();
|
||||||
$dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, false);
|
$dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, false);
|
||||||
$dbh->beginTransaction();
|
$dbh->beginTransaction();
|
||||||
|
|
||||||
echo "readonly to writable\n";
|
echo "readonly to writable\n";
|
||||||
try {
|
try {
|
||||||
$dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, true);
|
$dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, true);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
echo $e->getMessage()."\n";
|
echo $e->getMessage()."\n";
|
||||||
}
|
}
|
||||||
var_dump($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION));
|
var_dump($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION));
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
echo "readonly to readonly\n";
|
echo "readonly to readonly\n";
|
||||||
try {
|
try {
|
||||||
$dbh->setAttribute(PDO::FB_WRITABLE_TRANSACTION, false);
|
$dbh->setAttribute(Pdo\Firebird::WRITABLE_TRANSACTION, false);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
echo $e->getMessage()."\n";
|
echo $e->getMessage()."\n";
|
||||||
}
|
}
|
||||||
var_dump($dbh->getAttribute(PDO::FB_WRITABLE_TRANSACTION));
|
var_dump($dbh->getAttribute(Pdo\Firebird::WRITABLE_TRANSACTION));
|
||||||
|
|
||||||
unset($dbh);
|
unset($dbh);
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -15,9 +15,9 @@ $dbh = getDbConnection();
|
||||||
unset($dbh);
|
unset($dbh);
|
||||||
|
|
||||||
$levelStrs = [
|
$levelStrs = [
|
||||||
'PDO::FB_READ_COMMITTED',
|
'Pdo\\Firebird::READ_COMMITTED',
|
||||||
'PDO::FB_REPEATABLE_READ',
|
'Pdo\\Firebird::REPEATABLE_READ',
|
||||||
'PDO::FB_SERIALIZABLE',
|
'Pdo\\Firebird::SERIALIZABLE',
|
||||||
];
|
];
|
||||||
|
|
||||||
echo "========== Set attr in construct ==========\n";
|
echo "========== Set attr in construct ==========\n";
|
||||||
|
@ -29,11 +29,11 @@ foreach ($levelStrs as $levelStr) {
|
||||||
PDO_FIREBIRD_TEST_USER,
|
PDO_FIREBIRD_TEST_USER,
|
||||||
PDO_FIREBIRD_TEST_PASS,
|
PDO_FIREBIRD_TEST_PASS,
|
||||||
[
|
[
|
||||||
PDO::FB_TRANSACTION_ISOLATION_LEVEL => $level,
|
Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL => $level,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($dbh->getAttribute(PDO::FB_TRANSACTION_ISOLATION_LEVEL) === $level) {
|
if ($dbh->getAttribute(Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL) === $level) {
|
||||||
echo "OK: {$levelStr}\n";
|
echo "OK: {$levelStr}\n";
|
||||||
} else {
|
} else {
|
||||||
echo "NG: {$levelStr}\n";
|
echo "NG: {$levelStr}\n";
|
||||||
|
@ -49,7 +49,7 @@ try {
|
||||||
PDO_FIREBIRD_TEST_USER,
|
PDO_FIREBIRD_TEST_USER,
|
||||||
PDO_FIREBIRD_TEST_PASS,
|
PDO_FIREBIRD_TEST_PASS,
|
||||||
[
|
[
|
||||||
PDO::FB_TRANSACTION_ISOLATION_LEVEL => PDO::ATTR_AUTOCOMMIT, // Invalid value
|
Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL => PDO::ATTR_AUTOCOMMIT, // Invalid value
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
|
@ -70,9 +70,9 @@ $dbh = new PDO(
|
||||||
foreach ($levelStrs as $levelStr) {
|
foreach ($levelStrs as $levelStr) {
|
||||||
$level = constant($levelStr);
|
$level = constant($levelStr);
|
||||||
|
|
||||||
var_dump($dbh->setAttribute(PDO::FB_TRANSACTION_ISOLATION_LEVEL, $level));
|
var_dump($dbh->setAttribute(Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL, $level));
|
||||||
|
|
||||||
if ($dbh->getAttribute(PDO::FB_TRANSACTION_ISOLATION_LEVEL) === $level) {
|
if ($dbh->getAttribute(Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL) === $level) {
|
||||||
echo "OK: {$levelStr}\n";
|
echo "OK: {$levelStr}\n";
|
||||||
} else {
|
} else {
|
||||||
echo "NG: {$levelStr}\n";
|
echo "NG: {$levelStr}\n";
|
||||||
|
@ -81,7 +81,7 @@ foreach ($levelStrs as $levelStr) {
|
||||||
|
|
||||||
echo "Invalid value\n";
|
echo "Invalid value\n";
|
||||||
try {
|
try {
|
||||||
$dbh->setAttribute(PDO::FB_TRANSACTION_ISOLATION_LEVEL, PDO::ATTR_AUTOCOMMIT); // Invalid value
|
$dbh->setAttribute(Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL, PDO::ATTR_AUTOCOMMIT); // Invalid value
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
echo $e->getMessage()."\n";
|
echo $e->getMessage()."\n";
|
||||||
}
|
}
|
||||||
|
@ -90,18 +90,18 @@ unset($dbh);
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
========== Set attr in construct ==========
|
========== Set attr in construct ==========
|
||||||
OK: PDO::FB_READ_COMMITTED
|
OK: Pdo\Firebird::READ_COMMITTED
|
||||||
OK: PDO::FB_REPEATABLE_READ
|
OK: Pdo\Firebird::REPEATABLE_READ
|
||||||
OK: PDO::FB_SERIALIZABLE
|
OK: Pdo\Firebird::SERIALIZABLE
|
||||||
Invalid value
|
Invalid value
|
||||||
PDO::FB_TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level (PDO::FB_READ_COMMITTED, PDO::FB_REPEATABLE_READ, or PDO::FB_SERIALIZABLE)
|
Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level (Pdo\Firebird::READ_COMMITTED, Pdo\Firebird::REPEATABLE_READ, or Pdo\Firebird::SERIALIZABLE)
|
||||||
|
|
||||||
========== Set attr in setAttribute ==========
|
========== Set attr in setAttribute ==========
|
||||||
bool(true)
|
bool(true)
|
||||||
OK: PDO::FB_READ_COMMITTED
|
OK: Pdo\Firebird::READ_COMMITTED
|
||||||
bool(true)
|
bool(true)
|
||||||
OK: PDO::FB_REPEATABLE_READ
|
OK: Pdo\Firebird::REPEATABLE_READ
|
||||||
bool(true)
|
bool(true)
|
||||||
OK: PDO::FB_SERIALIZABLE
|
OK: Pdo\Firebird::SERIALIZABLE
|
||||||
Invalid value
|
Invalid value
|
||||||
PDO::FB_TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level (PDO::FB_READ_COMMITTED, PDO::FB_REPEATABLE_READ, or PDO::FB_SERIALIZABLE)
|
Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL must be a valid transaction isolation level (Pdo\Firebird::READ_COMMITTED, Pdo\Firebird::REPEATABLE_READ, or Pdo\Firebird::SERIALIZABLE)
|
||||||
|
|
|
@ -51,7 +51,7 @@ $dbh = new PDO(
|
||||||
PDO_FIREBIRD_TEST_DSN,
|
PDO_FIREBIRD_TEST_DSN,
|
||||||
PDO_FIREBIRD_TEST_USER,
|
PDO_FIREBIRD_TEST_USER,
|
||||||
PDO_FIREBIRD_TEST_PASS,
|
PDO_FIREBIRD_TEST_PASS,
|
||||||
[PDO::FB_TRANSACTION_ISOLATION_LEVEL => PDO::FB_READ_COMMITTED]
|
[Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL => Pdo\Firebird::READ_COMMITTED]
|
||||||
);
|
);
|
||||||
echo "begin transaction\n";
|
echo "begin transaction\n";
|
||||||
$dbh->beginTransaction();
|
$dbh->beginTransaction();
|
||||||
|
@ -74,7 +74,7 @@ $dbh = new PDO(
|
||||||
PDO_FIREBIRD_TEST_DSN,
|
PDO_FIREBIRD_TEST_DSN,
|
||||||
PDO_FIREBIRD_TEST_USER,
|
PDO_FIREBIRD_TEST_USER,
|
||||||
PDO_FIREBIRD_TEST_PASS,
|
PDO_FIREBIRD_TEST_PASS,
|
||||||
[PDO::FB_TRANSACTION_ISOLATION_LEVEL => PDO::FB_REPEATABLE_READ]
|
[Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL => Pdo\Firebird::REPEATABLE_READ]
|
||||||
);
|
);
|
||||||
echo "begin transaction\n";
|
echo "begin transaction\n";
|
||||||
$dbh->beginTransaction();
|
$dbh->beginTransaction();
|
||||||
|
@ -104,7 +104,7 @@ $dbh = new PDO(
|
||||||
PDO_FIREBIRD_TEST_DSN,
|
PDO_FIREBIRD_TEST_DSN,
|
||||||
PDO_FIREBIRD_TEST_USER,
|
PDO_FIREBIRD_TEST_USER,
|
||||||
PDO_FIREBIRD_TEST_PASS,
|
PDO_FIREBIRD_TEST_PASS,
|
||||||
[PDO::FB_TRANSACTION_ISOLATION_LEVEL => PDO::FB_SERIALIZABLE]
|
[Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL => Pdo\Firebird::SERIALIZABLE]
|
||||||
);
|
);
|
||||||
echo "begin transaction\n";
|
echo "begin transaction\n";
|
||||||
$dbh->beginTransaction();
|
$dbh->beginTransaction();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue