Skip to content

Commit 65fc63b

Browse files
committed
Deprecate driver specific PDO constants
1 parent 6009b8a commit 65fc63b

17 files changed

+344
-56
lines changed

ext/pdo/php_pdo.h

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
#define PHP_PDO_H
1919

2020
#include "zend.h"
21+
#include "Zend/zend_compile.h"
22+
#include "Zend/zend_API.h"
23+
#include "Zend/zend_attributes.h"
2124

2225
PHPAPI extern zend_module_entry pdo_module_entry;
2326
#define phpext_pdo_ptr &pdo_module_entry
@@ -50,8 +53,47 @@ PHP_MINIT_FUNCTION(pdo);
5053
PHP_MSHUTDOWN_FUNCTION(pdo);
5154
PHP_MINFO_FUNCTION(pdo);
5255

53-
#define REGISTER_PDO_CLASS_CONST_LONG(const_name, value) \
54-
zend_declare_class_constant_long(php_pdo_get_dbh_ce(), const_name, sizeof(const_name)-1, (zend_long)value);
56+
static inline void pdo_declare_deprecated_class_constant_long(
57+
zend_class_entry *ce, const char *name, zend_long value,
58+
zend_string *since, const char *message) {
59+
60+
zval zvalue;
61+
ZVAL_LONG(&zvalue, value);
62+
63+
zend_string *name_str = zend_string_init_interned(name, strlen(name), true);
64+
65+
zend_class_constant *constant = zend_declare_class_constant_ex(
66+
ce, name_str, &zvalue,
67+
ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL);
68+
69+
zend_attribute *attr = zend_add_class_constant_attribute(ce, constant,
70+
ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED),
71+
1 + (message != NULL));
72+
73+
attr->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
74+
ZVAL_STR(&attr->args[0].value, since);
75+
76+
if (message) {
77+
zend_string *message_str = zend_string_init_interned(message, strlen(message), true);
78+
79+
attr->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
80+
ZVAL_STR(&attr->args[1].value, message_str);
81+
}
82+
}
83+
84+
/* Declare a constant deprecated in 8.5 */
85+
#define REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_85(const_name, value) \
86+
pdo_declare_deprecated_class_constant_long(php_pdo_get_dbh_ce(), \
87+
const_name, (zend_long)value, \
88+
ZSTR_KNOWN(ZEND_STR_8_DOT_5), NULL)
89+
90+
/* Declare one of the constants deprecated in https://wiki.php.net/rfc/deprecations_php_8_5
91+
* "Deprecate driver specific PDO constants and methods" */
92+
#define REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(name, old_prefix, new_prefix, value) \
93+
pdo_declare_deprecated_class_constant_long(php_pdo_get_dbh_ce(), \
94+
old_prefix name, (zend_long)value, \
95+
ZSTR_KNOWN(ZEND_STR_8_DOT_5), \
96+
"use " new_prefix name " instead")
5597

5698
#define LONG_CONST(c) (zend_long) c
5799

ext/pdo_dblib/pdo_dblib.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,15 +190,18 @@ PHP_RSHUTDOWN_FUNCTION(pdo_dblib)
190190
return SUCCESS;
191191
}
192192

193+
#define REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
194+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "DBLIB_", "Pdo\\Dblib::", value)
195+
193196
PHP_MINIT_FUNCTION(pdo_dblib)
194197
{
195-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_CONNECTION_TIMEOUT", (long) PDO_DBLIB_ATTR_CONNECTION_TIMEOUT);
196-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_QUERY_TIMEOUT", (long) PDO_DBLIB_ATTR_QUERY_TIMEOUT);
197-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER", (long) PDO_DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER);
198-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_VERSION", (long) PDO_DBLIB_ATTR_VERSION);
199-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_TDS_VERSION", (long) PDO_DBLIB_ATTR_TDS_VERSION);
200-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_SKIP_EMPTY_ROWSETS", (long) PDO_DBLIB_ATTR_SKIP_EMPTY_ROWSETS);
201-
REGISTER_PDO_CLASS_CONST_LONG("DBLIB_ATTR_DATETIME_CONVERT", (long) PDO_DBLIB_ATTR_DATETIME_CONVERT);
198+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_CONNECTION_TIMEOUT", (long) PDO_DBLIB_ATTR_CONNECTION_TIMEOUT);
199+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_QUERY_TIMEOUT", (long) PDO_DBLIB_ATTR_QUERY_TIMEOUT);
200+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_STRINGIFY_UNIQUEIDENTIFIER", (long) PDO_DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER);
201+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_VERSION", (long) PDO_DBLIB_ATTR_VERSION);
202+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_TDS_VERSION", (long) PDO_DBLIB_ATTR_TDS_VERSION);
203+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SKIP_EMPTY_ROWSETS", (long) PDO_DBLIB_ATTR_SKIP_EMPTY_ROWSETS);
204+
REGISTER_PDO_DBLIB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DATETIME_CONVERT", (long) PDO_DBLIB_ATTR_DATETIME_CONVERT);
202205

203206
if (FAIL == dbinit()) {
204207
return FAILURE;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
PDO_dblib: PHP 8.5 deprecations
3+
--EXTENSIONS--
4+
pdo_dblib
5+
--FILE--
6+
<?php
7+
8+
var_dump(
9+
PDO::DBLIB_ATTR_CONNECTION_TIMEOUT,
10+
PDO::DBLIB_ATTR_QUERY_TIMEOUT,
11+
PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER,
12+
PDO::DBLIB_ATTR_VERSION,
13+
PDO::DBLIB_ATTR_TDS_VERSION,
14+
PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS,
15+
PDO::DBLIB_ATTR_DATETIME_CONVERT,
16+
);
17+
18+
?>
19+
--EXPECTF--
20+
Deprecated: Constant PDO::DBLIB_ATTR_CONNECTION_TIMEOUT is deprecated since 8.5, use Pdo\Dblib::ATTR_CONNECTION_TIMEOUT instead in %s on line %d
21+
22+
Deprecated: Constant PDO::DBLIB_ATTR_QUERY_TIMEOUT is deprecated since 8.5, use Pdo\Dblib::ATTR_QUERY_TIMEOUT instead in %s on line %d
23+
24+
Deprecated: Constant PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER is deprecated since 8.5, use Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER instead in %s on line %d
25+
26+
Deprecated: Constant PDO::DBLIB_ATTR_VERSION is deprecated since 8.5, use Pdo\Dblib::ATTR_VERSION instead in %s on line %d
27+
28+
Deprecated: Constant PDO::DBLIB_ATTR_TDS_VERSION is deprecated since 8.5, use Pdo\Dblib::ATTR_TDS_VERSION instead in %s on line %d
29+
30+
Deprecated: Constant PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS is deprecated since 8.5, use Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETS instead in %s on line %d
31+
32+
Deprecated: Constant PDO::DBLIB_ATTR_DATETIME_CONVERT is deprecated since 8.5, use Pdo\Dblib::ATTR_DATETIME_CONVERT instead in %s on line %d
33+
int(1000)
34+
int(1001)
35+
int(1002)
36+
int(1003)
37+
int(1004)
38+
int(1005)
39+
int(1006)

ext/pdo_firebird/pdo_firebird.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ zend_module_entry pdo_firebird_module_entry = { /* {{{ */
5555
ZEND_GET_MODULE(pdo_firebird)
5656
#endif
5757

58+
#define REGISTER_PDO_FB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
59+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "FB_", "Pdo\\Firebird::", value)
60+
5861
PHP_MINIT_FUNCTION(pdo_firebird) /* {{{ */
5962
{
60-
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_DATE_FORMAT", (zend_long) PDO_FB_ATTR_DATE_FORMAT);
61-
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_TIME_FORMAT", (zend_long) PDO_FB_ATTR_TIME_FORMAT);
62-
REGISTER_PDO_CLASS_CONST_LONG("FB_ATTR_TIMESTAMP_FORMAT", (zend_long) PDO_FB_ATTR_TIMESTAMP_FORMAT);
63+
REGISTER_PDO_FB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DATE_FORMAT", (zend_long) PDO_FB_ATTR_DATE_FORMAT);
64+
REGISTER_PDO_FB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_TIME_FORMAT", (zend_long) PDO_FB_ATTR_TIME_FORMAT);
65+
REGISTER_PDO_FB_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_TIMESTAMP_FORMAT", (zend_long) PDO_FB_ATTR_TIMESTAMP_FORMAT);
6366

6467
if (FAILURE == php_pdo_register_driver(&pdo_firebird_driver)) {
6568
return FAILURE;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
--TEST--
2+
PDO_firebird: PHP 8.5 deprecations
3+
--EXTENSIONS--
4+
pdo_firebird
5+
--FILE--
6+
<?php
7+
8+
var_dump(
9+
PDO::FB_ATTR_DATE_FORMAT,
10+
PDO::FB_ATTR_TIME_FORMAT,
11+
PDO::FB_ATTR_TIMESTAMP_FORMAT,
12+
);
13+
14+
?>
15+
--EXPECTF--
16+
Deprecated: Constant PDO::FB_ATTR_DATE_FORMAT is deprecated since 8.5, use Pdo\Firebird::ATTR_DATE_FORMAT instead in %s on line %d
17+
18+
Deprecated: Constant PDO::FB_ATTR_TIME_FORMAT is deprecated since 8.5, use Pdo\Firebird::ATTR_TIME_FORMAT instead in %s on line %d
19+
20+
Deprecated: Constant PDO::FB_ATTR_TIMESTAMP_FORMAT is deprecated since 8.5, use Pdo\Firebird::ATTR_TIMESTAMP_FORMAT instead in %s on line %d
21+
int(1000)
22+
int(1001)
23+
int(1002)

ext/pdo_mysql/pdo_mysql.c

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -112,37 +112,40 @@ PHP_INI_END()
112112

113113
/* true global environment */
114114

115+
#define REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
116+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "MYSQL_", "Pdo\\Mysql::", value)
117+
115118
/* {{{ PHP_MINIT_FUNCTION */
116119
static PHP_MINIT_FUNCTION(pdo_mysql)
117120
{
118121
REGISTER_INI_ENTRIES();
119122

120-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (zend_long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY);
121-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (zend_long)PDO_MYSQL_ATTR_LOCAL_INFILE);
122-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (zend_long)PDO_MYSQL_ATTR_INIT_COMMAND);
123+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_USE_BUFFERED_QUERY", (zend_long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY);
124+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_LOCAL_INFILE", (zend_long)PDO_MYSQL_ATTR_LOCAL_INFILE);
125+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_INIT_COMMAND", (zend_long)PDO_MYSQL_ATTR_INIT_COMMAND);
123126
#ifndef PDO_USE_MYSQLND
124-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (zend_long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
125-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (zend_long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
126-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (zend_long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
127+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_MAX_BUFFER_SIZE", (zend_long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
128+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_READ_DEFAULT_FILE", (zend_long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
129+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_READ_DEFAULT_GROUP", (zend_long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
127130
#endif
128-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_COMPRESS", (zend_long)PDO_MYSQL_ATTR_COMPRESS);
129-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (zend_long)PDO_ATTR_EMULATE_PREPARES);
130-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_FOUND_ROWS", (zend_long)PDO_MYSQL_ATTR_FOUND_ROWS);
131-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_IGNORE_SPACE", (zend_long)PDO_MYSQL_ATTR_IGNORE_SPACE);
132-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_KEY", (zend_long)PDO_MYSQL_ATTR_SSL_KEY);
133-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CERT", (zend_long)PDO_MYSQL_ATTR_SSL_CERT);
134-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CA", (zend_long)PDO_MYSQL_ATTR_SSL_CA);
135-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CAPATH", (zend_long)PDO_MYSQL_ATTR_SSL_CAPATH);
136-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CIPHER", (zend_long)PDO_MYSQL_ATTR_SSL_CIPHER);
131+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_COMPRESS", (zend_long)PDO_MYSQL_ATTR_COMPRESS);
132+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DIRECT_QUERY", (zend_long)PDO_ATTR_EMULATE_PREPARES);
133+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_FOUND_ROWS", (zend_long)PDO_MYSQL_ATTR_FOUND_ROWS);
134+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_IGNORE_SPACE", (zend_long)PDO_MYSQL_ATTR_IGNORE_SPACE);
135+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SSL_KEY", (zend_long)PDO_MYSQL_ATTR_SSL_KEY);
136+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SSL_CERT", (zend_long)PDO_MYSQL_ATTR_SSL_CERT);
137+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SSL_CA", (zend_long)PDO_MYSQL_ATTR_SSL_CA);
138+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SSL_CAPATH", (zend_long)PDO_MYSQL_ATTR_SSL_CAPATH);
139+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SSL_CIPHER", (zend_long)PDO_MYSQL_ATTR_SSL_CIPHER);
137140
#if MYSQL_VERSION_ID > 50605 || defined(PDO_USE_MYSQLND)
138-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SERVER_PUBLIC_KEY", (zend_long)PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY);
141+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SERVER_PUBLIC_KEY", (zend_long)PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY);
139142
#endif
140-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MULTI_STATEMENTS", (zend_long)PDO_MYSQL_ATTR_MULTI_STATEMENTS);
143+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_MULTI_STATEMENTS", (zend_long)PDO_MYSQL_ATTR_MULTI_STATEMENTS);
141144
#ifdef PDO_USE_MYSQLND
142-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_VERIFY_SERVER_CERT", (zend_long)PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT);
145+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_SSL_VERIFY_SERVER_CERT", (zend_long)PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT);
143146
#endif
144147
#if MYSQL_VERSION_ID >= 80021 || defined(PDO_USE_MYSQLND)
145-
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE_DIRECTORY", (zend_long)PDO_MYSQL_ATTR_LOCAL_INFILE_DIRECTORY);
148+
REGISTER_PDO_MYSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_LOCAL_INFILE_DIRECTORY", (zend_long)PDO_MYSQL_ATTR_LOCAL_INFILE_DIRECTORY);
146149
#endif
147150

148151
#ifdef PDO_USE_MYSQLND
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
--TEST--
2+
PDO_mysql: PHP 8.5 deprecations
3+
--EXTENSIONS--
4+
pdo_mysql
5+
--SKIPIF--
6+
<?php
7+
if (!defined('Pdo\\Mysql::ATTR_SSL_VERIFY_SERVER_CERT')) {
8+
die('skip requires mysqlnd');
9+
}
10+
?>
11+
--FILE--
12+
<?php
13+
14+
var_dump(
15+
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,
16+
PDO::MYSQL_ATTR_LOCAL_INFILE,
17+
PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY,
18+
PDO::MYSQL_ATTR_INIT_COMMAND,
19+
PDO::MYSQL_ATTR_COMPRESS,
20+
PDO::MYSQL_ATTR_DIRECT_QUERY,
21+
PDO::MYSQL_ATTR_FOUND_ROWS,
22+
PDO::MYSQL_ATTR_IGNORE_SPACE,
23+
PDO::MYSQL_ATTR_SSL_KEY,
24+
PDO::MYSQL_ATTR_SSL_CERT,
25+
PDO::MYSQL_ATTR_SSL_CA,
26+
PDO::MYSQL_ATTR_SSL_CAPATH,
27+
PDO::MYSQL_ATTR_SSL_CIPHER,
28+
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT,
29+
PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY,
30+
PDO::MYSQL_ATTR_MULTI_STATEMENTS,
31+
);
32+
33+
?>
34+
--EXPECTF--
35+
Deprecated: Constant PDO::MYSQL_ATTR_USE_BUFFERED_QUERY is deprecated since 8.5, use Pdo\Mysql::ATTR_USE_BUFFERED_QUERY instead in %s on line %d
36+
37+
Deprecated: Constant PDO::MYSQL_ATTR_LOCAL_INFILE is deprecated since 8.5, use Pdo\Mysql::ATTR_LOCAL_INFILE instead in %s on line %d
38+
39+
Deprecated: Constant PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY is deprecated since 8.5, use Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY instead in %s on line %d
40+
41+
Deprecated: Constant PDO::MYSQL_ATTR_INIT_COMMAND is deprecated since 8.5, use Pdo\Mysql::ATTR_INIT_COMMAND instead in %s on line %d
42+
43+
Deprecated: Constant PDO::MYSQL_ATTR_COMPRESS is deprecated since 8.5, use Pdo\Mysql::ATTR_COMPRESS instead in %s on line %d
44+
45+
Deprecated: Constant PDO::MYSQL_ATTR_DIRECT_QUERY is deprecated since 8.5, use Pdo\Mysql::ATTR_DIRECT_QUERY instead in %s on line %d
46+
47+
Deprecated: Constant PDO::MYSQL_ATTR_FOUND_ROWS is deprecated since 8.5, use Pdo\Mysql::ATTR_FOUND_ROWS instead in %s on line %d
48+
49+
Deprecated: Constant PDO::MYSQL_ATTR_IGNORE_SPACE is deprecated since 8.5, use Pdo\Mysql::ATTR_IGNORE_SPACE instead in %s on line %d
50+
51+
Deprecated: Constant PDO::MYSQL_ATTR_SSL_KEY is deprecated since 8.5, use Pdo\Mysql::ATTR_SSL_KEY instead in %s on line %d
52+
53+
Deprecated: Constant PDO::MYSQL_ATTR_SSL_CERT is deprecated since 8.5, use Pdo\Mysql::ATTR_SSL_CERT instead in %s on line %d
54+
55+
Deprecated: Constant PDO::MYSQL_ATTR_SSL_CA is deprecated since 8.5, use Pdo\Mysql::ATTR_SSL_CA instead in %s on line %d
56+
57+
Deprecated: Constant PDO::MYSQL_ATTR_SSL_CAPATH is deprecated since 8.5, use Pdo\Mysql::ATTR_SSL_CAPATH instead in %s on line %d
58+
59+
Deprecated: Constant PDO::MYSQL_ATTR_SSL_CIPHER is deprecated since 8.5, use Pdo\Mysql::ATTR_SSL_CIPHER instead in %s on line %d
60+
61+
Deprecated: Constant PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT is deprecated since 8.5, use Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT instead in %s on line %d
62+
63+
Deprecated: Constant PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY is deprecated since 8.5, use Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY instead in %s on line %d
64+
65+
Deprecated: Constant PDO::MYSQL_ATTR_MULTI_STATEMENTS is deprecated since 8.5, use Pdo\Mysql::ATTR_MULTI_STATEMENTS instead in %s on line %d
66+
int(1000)
67+
int(1001)
68+
int(1014)
69+
int(1002)
70+
int(1003)
71+
int(20)
72+
int(1004)
73+
int(1005)
74+
int(1006)
75+
int(1007)
76+
int(1008)
77+
int(1009)
78+
int(1010)
79+
int(1013)
80+
int(1011)
81+
int(1012)

ext/pdo_odbc/pdo_odbc.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ zend_ulong pdo_odbc_pool_on = SQL_CP_OFF;
6161
zend_ulong pdo_odbc_pool_mode = SQL_CP_ONE_PER_HENV;
6262
#endif
6363

64+
#define REGISTER_PDO_ODBC_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
65+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "ODBC_", "Pdo\\Odbc::", value)
66+
6467
/* {{{ PHP_MINIT_FUNCTION */
6568
PHP_MINIT_FUNCTION(pdo_odbc)
6669
{
@@ -101,11 +104,11 @@ PHP_MINIT_FUNCTION(pdo_odbc)
101104

102105
register_pdo_odbc_symbols(module_number);
103106

104-
REGISTER_PDO_CLASS_CONST_LONG("ODBC_ATTR_USE_CURSOR_LIBRARY", PDO_ODBC_ATTR_USE_CURSOR_LIBRARY);
105-
REGISTER_PDO_CLASS_CONST_LONG("ODBC_ATTR_ASSUME_UTF8", PDO_ODBC_ATTR_ASSUME_UTF8);
106-
REGISTER_PDO_CLASS_CONST_LONG("ODBC_SQL_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED);
107-
REGISTER_PDO_CLASS_CONST_LONG("ODBC_SQL_USE_DRIVER", SQL_CUR_USE_DRIVER);
108-
REGISTER_PDO_CLASS_CONST_LONG("ODBC_SQL_USE_ODBC", SQL_CUR_USE_ODBC);
107+
REGISTER_PDO_ODBC_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_USE_CURSOR_LIBRARY", PDO_ODBC_ATTR_USE_CURSOR_LIBRARY);
108+
REGISTER_PDO_ODBC_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_ASSUME_UTF8", PDO_ODBC_ATTR_ASSUME_UTF8);
109+
REGISTER_PDO_ODBC_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("SQL_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED);
110+
REGISTER_PDO_ODBC_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("SQL_USE_DRIVER", SQL_CUR_USE_DRIVER);
111+
REGISTER_PDO_ODBC_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("SQL_USE_ODBC", SQL_CUR_USE_ODBC);
109112

110113
pdo_odbc_ce = register_class_Pdo_Odbc(pdo_dbh_ce);
111114
pdo_odbc_ce->create_object = pdo_dbh_new;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
--TEST--
2+
PDO_odbc: PHP 8.5 deprecations
3+
--EXTENSIONS--
4+
pdo_odbc
5+
--FILE--
6+
<?php
7+
8+
var_dump(
9+
PDO::ODBC_ATTR_USE_CURSOR_LIBRARY,
10+
PDO::ODBC_ATTR_ASSUME_UTF8,
11+
PDO::ODBC_SQL_USE_IF_NEEDED,
12+
PDO::ODBC_SQL_USE_DRIVER,
13+
PDO::ODBC_SQL_USE_ODBC,
14+
);
15+
16+
?>
17+
--EXPECTF--
18+
Deprecated: Constant PDO::ODBC_ATTR_USE_CURSOR_LIBRARY is deprecated since 8.5, use Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY instead in %s on line %d
19+
20+
Deprecated: Constant PDO::ODBC_ATTR_ASSUME_UTF8 is deprecated since 8.5, use Pdo\Odbc::ATTR_ASSUME_UTF8 instead in %s on line %d
21+
22+
Deprecated: Constant PDO::ODBC_SQL_USE_IF_NEEDED is deprecated since 8.5, use Pdo\Odbc::SQL_USE_IF_NEEDED instead in %s on line %d
23+
24+
Deprecated: Constant PDO::ODBC_SQL_USE_DRIVER is deprecated since 8.5, use Pdo\Odbc::SQL_USE_DRIVER instead in %s on line %d
25+
26+
Deprecated: Constant PDO::ODBC_SQL_USE_ODBC is deprecated since 8.5, use Pdo\Odbc::SQL_USE_ODBC instead in %s on line %d
27+
int(1000)
28+
int(1001)
29+
int(0)
30+
int(2)
31+
int(1)

ext/pdo_pgsql/pdo_pgsql.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,18 @@ PHP_METHOD(Pdo_Pgsql, setNoticeCallback)
175175

176176
/* true global environment */
177177

178+
#define REGISTER_PDO_PGSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
179+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "PGSQL_", "Pdo\\Pgsql::", value)
180+
178181
/* {{{ PHP_MINIT_FUNCTION */
179182
PHP_MINIT_FUNCTION(pdo_pgsql)
180183
{
181-
REGISTER_PDO_CLASS_CONST_LONG("PGSQL_ATTR_DISABLE_PREPARES", PDO_PGSQL_ATTR_DISABLE_PREPARES);
182-
REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_IDLE", (zend_long)PGSQL_TRANSACTION_IDLE);
183-
REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_ACTIVE", (zend_long)PGSQL_TRANSACTION_ACTIVE);
184-
REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_INTRANS", (zend_long)PGSQL_TRANSACTION_INTRANS);
185-
REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_INERROR", (zend_long)PGSQL_TRANSACTION_INERROR);
186-
REGISTER_PDO_CLASS_CONST_LONG("PGSQL_TRANSACTION_UNKNOWN", (zend_long)PGSQL_TRANSACTION_UNKNOWN);
184+
REGISTER_PDO_PGSQL_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DISABLE_PREPARES", PDO_PGSQL_ATTR_DISABLE_PREPARES);
185+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_85("PGSQL_TRANSACTION_IDLE", (zend_long)PGSQL_TRANSACTION_IDLE);
186+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_85("PGSQL_TRANSACTION_ACTIVE", (zend_long)PGSQL_TRANSACTION_ACTIVE);
187+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_85("PGSQL_TRANSACTION_INTRANS", (zend_long)PGSQL_TRANSACTION_INTRANS);
188+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_85("PGSQL_TRANSACTION_INERROR", (zend_long)PGSQL_TRANSACTION_INERROR);
189+
REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_85("PGSQL_TRANSACTION_UNKNOWN", (zend_long)PGSQL_TRANSACTION_UNKNOWN);
187190

188191
PdoPgsql_ce = register_class_Pdo_Pgsql(pdo_dbh_ce);
189192
PdoPgsql_ce->create_object = pdo_dbh_new;

0 commit comments

Comments
 (0)