summaryrefslogtreecommitdiffstats
path: root/36.patch
diff options
context:
space:
mode:
Diffstat (limited to '36.patch')
-rw-r--r--36.patch675
1 files changed, 675 insertions, 0 deletions
diff --git a/36.patch b/36.patch
new file mode 100644
index 0000000..147f5ab
--- /dev/null
+++ b/36.patch
@@ -0,0 +1,675 @@
+From 347323b7b551bd7d33f50f71bf73166d3bbbb127 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Fri, 16 Sep 2022 16:45:18 +0200
+Subject: [PATCH 1/3] fix PHP5TO7_ZEND_HASH_FOREACH_STR_KEY_VAL for PHP 8.2
+
+---
+ ext/php_driver.h | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/ext/php_driver.h b/ext/php_driver.h
+index de0b8355..064b842b 100644
+--- a/ext/php_driver.h
++++ b/ext/php_driver.h
+@@ -190,6 +190,19 @@ php5to7_string_compare(php5to7_string s1, php5to7_string s2)
+ #define PHP5TO7_ZEND_HASH_FOREACH_NUM_KEY_VAL(ht, _h, _val) \
+ ZEND_HASH_FOREACH_NUM_KEY_VAL(ht, _h, _val)
+
++#if PHP_VERSION_ID >= 80200
++
++#define PHP5TO7_ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val) \
++ ZEND_HASH_FOREACH(ht, 0); \
++ if (__key) { \
++ (_key) = ZSTR_VAL(__key); \
++ } else { \
++ (_key) = NULL; \
++ } \
++ _val = _z;
++
++#else
++
+ #define PHP5TO7_ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val) \
+ ZEND_HASH_FOREACH(ht, 0); \
+ if (_p->key) { \
+@@ -199,6 +212,8 @@ php5to7_string_compare(php5to7_string s1, php5to7_string s2)
+ } \
+ _val = _z;
+
++#endif
++
+ #define PHP5TO7_ZEND_HASH_FOREACH_END(ht) ZEND_HASH_FOREACH_END()
+
+ #define PHP5TO7_ZEND_HASH_GET_CURRENT_DATA(ht, res) \
+
+From b396aee7428ad5c64f3954d1ee79a7446e9243a2 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Fri, 16 Sep 2022 16:57:03 +0200
+Subject: [PATCH 2/3] Fix __toString prototype on PHP 8.2
+
+---
+ ext/src/Bigint.c | 9 ++++++++-
+ ext/src/Blob.c | 9 ++++++++-
+ ext/src/Date.c | 9 ++++++++-
+ ext/src/Decimal.c | 9 ++++++++-
+ ext/src/Duration.c | 9 ++++++++-
+ ext/src/Float.c | 9 ++++++++-
+ ext/src/Inet.c | 9 ++++++++-
+ ext/src/Smallint.c | 9 ++++++++-
+ ext/src/Time.c | 9 ++++++++-
+ ext/src/Timestamp.c | 9 ++++++++-
+ ext/src/Timeuuid.c | 9 ++++++++-
+ ext/src/Tinyint.c | 9 ++++++++-
+ ext/src/Type.c | 9 ++++++++-
+ ext/src/Type/Collection.c | 9 ++++++++-
+ ext/src/Type/Custom.c | 9 ++++++++-
+ ext/src/Type/Map.c | 9 ++++++++-
+ ext/src/Type/Scalar.c | 9 ++++++++-
+ ext/src/Type/Set.c | 9 ++++++++-
+ ext/src/Type/Tuple.c | 9 ++++++++-
+ ext/src/Type/UserType.c | 9 ++++++++-
+ ext/src/Uuid.c | 9 ++++++++-
+ ext/src/Varint.c | 9 ++++++++-
+ 22 files changed, 176 insertions(+), 22 deletions(-)
+
+diff --git a/ext/src/Bigint.c b/ext/src/Bigint.c
+index d66dae38..c98ed567 100644
+--- a/ext/src/Bigint.c
++++ b/ext/src/Bigint.c
+@@ -371,9 +371,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_num, 0, ZEND_RETURN_VALUE, 1)
+ ZEND_ARG_INFO(0, num)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_bigint_methods[] = {
+ PHP_ME(Bigint, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Bigint, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Bigint, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Bigint, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Bigint, value, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Bigint, add, arginfo_num, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Blob.c b/ext/src/Blob.c
+index 84acc337..d33f2e5f 100644
+--- a/ext/src/Blob.c
++++ b/ext/src/Blob.c
+@@ -101,9 +101,16 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_blob_methods[] = {
+ PHP_ME(Blob, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Blob, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Blob, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Blob, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Blob, bytes, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Blob, toBinaryString, arginfo_none, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Date.c b/ext/src/Date.c
+index 8d4e654d..1107a929 100644
+--- a/ext/src/Date.c
++++ b/ext/src/Date.c
+@@ -180,13 +180,20 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_date_methods[] = {
+ PHP_ME(Date, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+ PHP_ME(Date, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Date, seconds, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Date, toDateTime, arginfo_time, ZEND_ACC_PUBLIC)
+ PHP_ME(Date, fromDateTime, arginfo_datetime, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
+- PHP_ME(Date, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Date, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+
+diff --git a/ext/src/Decimal.c b/ext/src/Decimal.c
+index d2956ef1..b524ed89 100644
+--- a/ext/src/Decimal.c
++++ b/ext/src/Decimal.c
+@@ -490,9 +490,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_num, 0, ZEND_RETURN_VALUE, 1)
+ ZEND_ARG_INFO(0, num)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_decimal_methods[] = {
+ PHP_ME(Decimal, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Decimal, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Decimal, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Decimal, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Decimal, value, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Decimal, scale, arginfo_none, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Duration.c b/ext/src/Duration.c
+index 53ebb43c..677ce9ec 100644
+--- a/ext/src/Duration.c
++++ b/ext/src/Duration.c
+@@ -213,13 +213,20 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo__construct, 0, ZEND_RETURN_VALUE, 3)
+ ZEND_ARG_INFO(0, nanos)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_duration_methods[] = {
+ PHP_ME(Duration, __construct, arginfo__construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(Duration, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Duration, months, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Duration, days, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Duration, nanos, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(Duration, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Duration, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+
+diff --git a/ext/src/Float.c b/ext/src/Float.c
+index cc04fb35..141b65e9 100644
+--- a/ext/src/Float.c
++++ b/ext/src/Float.c
+@@ -346,9 +346,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_num, 0, ZEND_RETURN_VALUE, 1)
+ ZEND_ARG_INFO(0, num)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_float_methods[] = {
+ PHP_ME(Float, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Float, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Float, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Float, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Float, value, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Float, isInfinite, arginfo_none, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Inet.c b/ext/src/Inet.c
+index b2fd4e57..1545be15 100644
+--- a/ext/src/Inet.c
++++ b/ext/src/Inet.c
+@@ -90,9 +90,16 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_inet_methods[] = {
+ PHP_ME(Inet, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Inet, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Inet, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Inet, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Inet, address, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+diff --git a/ext/src/Smallint.c b/ext/src/Smallint.c
+index 3b86ebac..2bdf82b0 100644
+--- a/ext/src/Smallint.c
++++ b/ext/src/Smallint.c
+@@ -403,9 +403,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_num, 0, ZEND_RETURN_VALUE, 1)
+ ZEND_ARG_INFO(0, num)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_smallint_methods[] = {
+ PHP_ME(Smallint, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Smallint, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Smallint, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Smallint, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Smallint, value, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Smallint, add, arginfo_num, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Time.c b/ext/src/Time.c
+index 89f6b022..52c21bcc 100644
+--- a/ext/src/Time.c
++++ b/ext/src/Time.c
+@@ -205,12 +205,19 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_time_methods[] = {
+ PHP_ME(Time, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+ PHP_ME(Time, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Time, seconds, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Time, fromDateTime, arginfo_datetime, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
+- PHP_ME(Time, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Time, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+
+diff --git a/ext/src/Timestamp.c b/ext/src/Timestamp.c
+index bb4cfef4..3e06af0d 100644
+--- a/ext/src/Timestamp.c
++++ b/ext/src/Timestamp.c
+@@ -173,13 +173,20 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_timestamp_methods[] = {
+ PHP_ME(Timestamp, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+ PHP_ME(Timestamp, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Timestamp, time, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Timestamp, microtime, arginfo_microtime, ZEND_ACC_PUBLIC)
+ PHP_ME(Timestamp, toDateTime, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(Timestamp, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Timestamp, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+
+diff --git a/ext/src/Timeuuid.c b/ext/src/Timeuuid.c
+index 37501095..e11a645a 100644
+--- a/ext/src/Timeuuid.c
++++ b/ext/src/Timeuuid.c
+@@ -169,9 +169,16 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_timeuuid_methods[] = {
+ PHP_ME(Timeuuid, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Timeuuid, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Timeuuid, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Timeuuid, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Timeuuid, uuid, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Timeuuid, version, arginfo_none, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Tinyint.c b/ext/src/Tinyint.c
+index cafd1dd6..5510f06b 100644
+--- a/ext/src/Tinyint.c
++++ b/ext/src/Tinyint.c
+@@ -402,9 +402,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_num, 0, ZEND_RETURN_VALUE, 1)
+ ZEND_ARG_INFO(0, num)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_tinyint_methods[] = {
+ PHP_ME(Tinyint, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Tinyint, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Tinyint, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Tinyint, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Tinyint, value, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Tinyint, add, arginfo_num, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Type.c b/ext/src/Type.c
+index 67720bf1..652b9411 100644
+--- a/ext/src/Type.c
++++ b/ext/src/Type.c
+@@ -196,6 +196,13 @@ PHP_METHOD(Type, map)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_types, 0, ZEND_RETURN_VALUE, 0)
+ #if PHP_MAJOR_VERSION >= 8
+ ZEND_ARG_VARIADIC_INFO(0, types)
+@@ -215,7 +222,7 @@ ZEND_END_ARG_INFO()
+
+ static zend_function_entry php_driver_type_methods[] = {
+ PHP_ABSTRACT_ME(Type, name, arginfo_none)
+- PHP_ABSTRACT_ME(Type, __toString, arginfo_none)
++ PHP_ABSTRACT_ME(Type, __toString, arginfo_tostring)
+
+ #define XX_SCALAR_METHOD(name, _) PHP_ME(Type, name, arginfo_none, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC|ZEND_ACC_FINAL)
+ PHP_DRIVER_SCALAR_TYPES_MAP(XX_SCALAR_METHOD)
+diff --git a/ext/src/Type/Collection.c b/ext/src/Type/Collection.c
+index 6c36c6f9..7e1e6cb8 100644
+--- a/ext/src/Type/Collection.c
++++ b/ext/src/Type/Collection.c
+@@ -112,6 +112,13 @@ PHP_METHOD(TypeCollection, create)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_value, 0, ZEND_RETURN_VALUE, 0)
+ #if PHP_MAJOR_VERSION >= 8
+ ZEND_ARG_VARIADIC_INFO(0, value)
+@@ -124,7 +131,7 @@ static zend_function_entry php_driver_type_collection_methods[] = {
+ PHP_ME(TypeCollection, __construct, arginfo_none, ZEND_ACC_PRIVATE)
+ PHP_ME(TypeCollection, name, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeCollection, valueType, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeCollection, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeCollection, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeCollection, create, arginfo_value, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+diff --git a/ext/src/Type/Custom.c b/ext/src/Type/Custom.c
+index c7d11784..f7ce4eb5 100644
+--- a/ext/src/Type/Custom.c
++++ b/ext/src/Type/Custom.c
+@@ -65,6 +65,13 @@ PHP_METHOD(TypeCustom, create)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_value, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_ARG_INFO(0, value)
+ ZEND_END_ARG_INFO()
+@@ -72,7 +79,7 @@ ZEND_END_ARG_INFO()
+ static zend_function_entry php_driver_type_custom_methods[] = {
+ PHP_ME(TypeCustom, __construct, arginfo_none, ZEND_ACC_PRIVATE)
+ PHP_ME(TypeCustom, name, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeCustom, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeCustom, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeCustom, create, arginfo_value, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+diff --git a/ext/src/Type/Map.c b/ext/src/Type/Map.c
+index 0c76e6d5..6f0b67a8 100644
+--- a/ext/src/Type/Map.c
++++ b/ext/src/Type/Map.c
+@@ -128,6 +128,13 @@ PHP_METHOD(TypeMap, create)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_value, 0, ZEND_RETURN_VALUE, 0)
+ #if PHP_MAJOR_VERSION >= 8
+ ZEND_ARG_VARIADIC_INFO(0, value)
+@@ -141,7 +148,7 @@ static zend_function_entry php_driver_type_map_methods[] = {
+ PHP_ME(TypeMap, name, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeMap, keyType, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeMap, valueType, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeMap, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeMap, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeMap, create, arginfo_value, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+diff --git a/ext/src/Type/Scalar.c b/ext/src/Type/Scalar.c
+index e8c19f32..992d1bd1 100644
+--- a/ext/src/Type/Scalar.c
++++ b/ext/src/Type/Scalar.c
+@@ -65,6 +65,13 @@ PHP_METHOD(TypeScalar, create)
+ php_driver_scalar_init(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ }
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
+@@ -75,7 +82,7 @@ ZEND_END_ARG_INFO()
+ static zend_function_entry php_driver_type_scalar_methods[] = {
+ PHP_ME(TypeScalar, __construct, arginfo_none, ZEND_ACC_PRIVATE)
+ PHP_ME(TypeScalar, name, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeScalar, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeScalar, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeScalar, create, arginfo_value, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+diff --git a/ext/src/Type/Set.c b/ext/src/Type/Set.c
+index d1be3065..d97697c6 100644
+--- a/ext/src/Type/Set.c
++++ b/ext/src/Type/Set.c
+@@ -104,6 +104,13 @@ PHP_METHOD(TypeSet, create)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_value, 0, ZEND_RETURN_VALUE, 0)
+ #if PHP_MAJOR_VERSION >= 8
+ ZEND_ARG_VARIADIC_INFO(0, value)
+@@ -116,7 +123,7 @@ static zend_function_entry php_driver_type_set_methods[] = {
+ PHP_ME(TypeSet, __construct, arginfo_none, ZEND_ACC_PRIVATE)
+ PHP_ME(TypeSet, name, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeSet, valueType, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeSet, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeSet, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeSet, create, arginfo_value, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+ };
+diff --git a/ext/src/Type/Tuple.c b/ext/src/Type/Tuple.c
+index 26875cce..13ae7dc2 100644
+--- a/ext/src/Type/Tuple.c
++++ b/ext/src/Type/Tuple.c
+@@ -140,6 +140,13 @@ PHP_METHOD(TypeTuple, create)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_values, 0, ZEND_RETURN_VALUE, 0)
+ #if PHP_MAJOR_VERSION >= 8
+ ZEND_ARG_VARIADIC_INFO(0, values)
+@@ -151,7 +158,7 @@ ZEND_END_ARG_INFO()
+ static zend_function_entry php_driver_type_tuple_methods[] = {
+ PHP_ME(TypeTuple, __construct, arginfo_none, ZEND_ACC_PRIVATE)
+ PHP_ME(TypeTuple, name, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeTuple, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeTuple, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeTuple, types, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeTuple, create, arginfo_values, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+diff --git a/ext/src/Type/UserType.c b/ext/src/Type/UserType.c
+index af324824..f5b5d537 100644
+--- a/ext/src/Type/UserType.c
++++ b/ext/src/Type/UserType.c
+@@ -234,6 +234,13 @@ PHP_METHOD(TypeUserType, create)
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_value, 0, ZEND_RETURN_VALUE, 0)
+ #if PHP_MAJOR_VERSION >= 8
+ ZEND_ARG_VARIADIC_INFO(0, value)
+@@ -256,7 +263,7 @@ static zend_function_entry php_driver_type_user_type_methods[] = {
+ PHP_ME(TypeUserType, name, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeUserType, withKeyspace, arginfo_keyspace, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeUserType, keyspace, arginfo_none, ZEND_ACC_PUBLIC)
+- PHP_ME(TypeUserType, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(TypeUserType, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeUserType, types, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(TypeUserType, create, arginfo_value, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+diff --git a/ext/src/Uuid.c b/ext/src/Uuid.c
+index 71e98a8b..67d99e5c 100644
+--- a/ext/src/Uuid.c
++++ b/ext/src/Uuid.c
+@@ -106,9 +106,16 @@ ZEND_END_ARG_INFO()
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_none, 0, ZEND_RETURN_VALUE, 0)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_uuid_methods[] = {
+ PHP_ME(Uuid, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Uuid, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Uuid, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Uuid, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Uuid, uuid, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Uuid, version, arginfo_none, ZEND_ACC_PUBLIC)
+diff --git a/ext/src/Varint.c b/ext/src/Varint.c
+index 84e70545..d39929f7 100644
+--- a/ext/src/Varint.c
++++ b/ext/src/Varint.c
+@@ -350,9 +350,16 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_num, 0, ZEND_RETURN_VALUE, 1)
+ ZEND_ARG_INFO(0, num)
+ ZEND_END_ARG_INFO()
+
++#if PHP_VERSION_ID >= 80200
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_tostring, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++#else
++#define arginfo_tostring arginfo_none
++#endif
++
+ static zend_function_entry php_driver_varint_methods[] = {
+ PHP_ME(Varint, __construct, arginfo__construct, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
+- PHP_ME(Varint, __toString, arginfo_none, ZEND_ACC_PUBLIC)
++ PHP_ME(Varint, __toString, arginfo_tostring, ZEND_ACC_PUBLIC)
+ PHP_ME(Varint, type, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Varint, value, arginfo_none, ZEND_ACC_PUBLIC)
+ PHP_ME(Varint, add, arginfo_num, ZEND_ACC_PUBLIC)
+
+From 70809383856f46510611b65d15827db3f779f11e Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Fri, 16 Sep 2022 17:13:43 +0200
+Subject: [PATCH 3/3] fix zend_hash_sort usage on PHP 8
+
+---
+ ext/util/hash.c | 17 +++++++++++------
+ ext/util/hash.h | 4 ++++
+ 2 files changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/ext/util/hash.c b/ext/util/hash.c
+index 9ca91349..0fc8c627 100644
+--- a/ext/util/hash.c
++++ b/ext/util/hash.c
+@@ -136,20 +136,25 @@ php_driver_value_compare(zval* zvalue1, zval* zvalue2 TSRMLS_DC) {
+ return 1;
+ }
+
++#if PHP_MAJOR_VERSION < 7
+ int php_driver_data_compare(const void* a, const void* b TSRMLS_DC) {
+ Bucket *f, *s;
+ zval *first, *second;
+
+-#if PHP_MAJOR_VERSION >= 7
+- f = (Bucket *)a;
+- s = (Bucket *)b;
+- first = &f->val;
+- second = &s->val;
+-#else
+ f = *((Bucket **) a);
+ s = *((Bucket **) b);
+ first = *((zval **) f->pData);
+ second = *((zval **) s->pData);
++
++#elif PHP_MAJOR_VERSION < 8
++int php_driver_data_compare(const void *a, const void *b TSRMLS_DC) {
++ zval *first = &((Bucket*)a)->val;
++ zval *second = &((Bucket*)b)->val;
++
++#else
++int php_driver_data_compare(Bucket *a, Bucket *b) {
++ zval *first = &a->val;
++ zval *second = &b->val;
+ #endif
+
+ return php_driver_value_compare(first, second TSRMLS_CC);
+diff --git a/ext/util/hash.h b/ext/util/hash.h
+index 7a6a5487..4433b23c 100644
+--- a/ext/util/hash.h
++++ b/ext/util/hash.h
+@@ -51,7 +51,11 @@ struct php_driver_set_entry_ {
+
+ unsigned php_driver_value_hash(zval* zvalue TSRMLS_DC);
+ int php_driver_value_compare(zval* zvalue1, zval* zvalue2 TSRMLS_DC);
++#if PHP_MAJOR_VERSION < 8
+ int php_driver_data_compare(const void* a, const void* b TSRMLS_DC);
++#else
++int php_driver_data_compare(Bucket *a, Bucket *b);
++#endif
+
+ unsigned php_driver_mpz_hash(unsigned seed, mpz_t n);
+