summaryrefslogtreecommitdiff
path: root/ext/pgsql/pgsql.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2017-12-15 15:35:07 +0100
committerAnatol Belski <ab@php.net>2017-12-15 15:35:07 +0100
commit2515b7a0d9139be28cb9994b8b3a571ecb13185f (patch)
tree92891201b8a1f4009fb95c43f411569a006b25d0 /ext/pgsql/pgsql.c
parent9baf84e513eddab4479f794643eae0ab05491fee (diff)
parent171f1baff1116f646ea6a860fa7c4ea84f2772ea (diff)
downloadphp-git-2515b7a0d9139be28cb9994b8b3a571ecb13185f.tar.gz
Merge branch 'PHP-7.2'
* PHP-7.2: Fixed bug #75671 pg_version() crashes when called on a connection to cockroach
Diffstat (limited to 'ext/pgsql/pgsql.c')
-rw-r--r--ext/pgsql/pgsql.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 416dba2cd8..06142f2bba 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -1658,26 +1658,21 @@ static void php_pgsql_get_link_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type
/* 8.0 or grater supports protorol version 3 */
char *tmp;
add_assoc_string(return_value, "server", (char*)PQparameterStatus(pgsql, "server_version"));
- tmp = (char*)PQparameterStatus(pgsql, "server_encoding");
- add_assoc_string(return_value, "server_encoding", tmp);
- tmp = (char*)PQparameterStatus(pgsql, "client_encoding");
- add_assoc_string(return_value, "client_encoding", tmp);
- tmp = (char*)PQparameterStatus(pgsql, "is_superuser");
- add_assoc_string(return_value, "is_superuser", tmp);
- tmp = (char*)PQparameterStatus(pgsql, "session_authorization");
- add_assoc_string(return_value, "session_authorization", tmp);
- tmp = (char*)PQparameterStatus(pgsql, "DateStyle");
- add_assoc_string(return_value, "DateStyle", tmp);
- tmp = (char*)PQparameterStatus(pgsql, "IntervalStyle");
- add_assoc_string(return_value, "IntervalStyle", tmp ? tmp : "");
- tmp = (char*)PQparameterStatus(pgsql, "TimeZone");
- add_assoc_string(return_value, "TimeZone", tmp ? tmp : "");
- tmp = (char*)PQparameterStatus(pgsql, "integer_datetimes");
- add_assoc_string(return_value, "integer_datetimes", tmp ? tmp : "");
- tmp = (char*)PQparameterStatus(pgsql, "standard_conforming_strings");
- add_assoc_string(return_value, "standard_conforming_strings", tmp ? tmp : "");
- tmp = (char*)PQparameterStatus(pgsql, "application_name");
- add_assoc_string(return_value, "application_name", tmp ? tmp : "");
+
+#define PHP_PQ_COPY_PARAM(_x) tmp = (char*)PQparameterStatus(pgsql, _x); \
+ if(tmp) add_assoc_string(return_value, _x, tmp); \
+ else add_assoc_null(return_value, _x);
+
+ PHP_PQ_COPY_PARAM("server_encoding");
+ PHP_PQ_COPY_PARAM("client_encoding");
+ PHP_PQ_COPY_PARAM("is_superuser");
+ PHP_PQ_COPY_PARAM("session_authorization");
+ PHP_PQ_COPY_PARAM("DateStyle");
+ PHP_PQ_COPY_PARAM("IntervalStyle");
+ PHP_PQ_COPY_PARAM("TimeZone");
+ PHP_PQ_COPY_PARAM("integer_datetimes");
+ PHP_PQ_COPY_PARAM("standard_conforming_strings");
+ PHP_PQ_COPY_PARAM("application_name");
}
#endif
#endif