+#ifdef HAVE_PQLIBVERSION
+static void php_pqconn_object_read_lib_version(void *o, zval *return_value)
+{
+ char ver[16];
+ int v = PQlibVersion();
+
+ if (v < 100000) {
+ slprintf(ver, sizeof(ver), "%d.%d.%d", v/10000, v/100%100, v%100);
+ } else {
+ slprintf(ver, sizeof(ver), "%d.%d", v/10000, v%100);
+ }
+ RETVAL_STRING(ver);
+}
+#endif
+static void php_pqconn_object_read_protocol_version(void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+
+ RETVAL_LONG(PQprotocolVersion(obj->intern->conn));
+}
+static void php_pqconn_object_read_server_version(void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+ char ver[16];
+ int v = PQserverVersion(obj->intern->conn);
+
+ if (v < 100000) {
+ slprintf(ver, sizeof(ver), "%d.%d.%d", v/10000, v/100%100, v%100);
+ } else {
+ slprintf(ver, sizeof(ver), "%d.%d", v/10000, v%100);
+ }
+ RETVAL_STRING(ver);
+}
+