cvs: php4 /ext/pgsql config.m4 pgsql.c
| From: | Yasuo Ohgaki | Date: | Fri, 29 Mar 2002 11:24:54 +0000 |
| Subject: | cvs: php4 /ext/pgsql config.m4 pgsql.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-10761@lists.php.net to get a copy of this message | ||
yohgaki Fri Mar 29 06:24:54 2002 EDT
Modified files:
/php4/ext/pgsql config.m4 pgsql.c
Log:
Fix build failure with PostgreSQL 6.5.x
# I'll merge this to 4.2.0 branch later
Index: php4/ext/pgsql/config.m4
diff -u php4/ext/pgsql/config.m4:1.28 php4/ext/pgsql/config.m4:1.29
--- php4/ext/pgsql/config.m4:1.28 Tue Mar 12 11:31:48 2002
+++ php4/ext/pgsql/config.m4 Fri Mar 29 06:24:54 2002
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.28 2002/03/12 16:31:48 sas Exp $
+dnl $Id: config.m4,v 1.29 2002/03/29 11:24:54 yohgaki Exp $
dnl
AC_DEFUN(PHP_PGSQL_CHECK_FUNCTIONS,[
@@ -50,6 +50,7 @@
old_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -L$PGSQL_LIBDIR"
AC_CHECK_LIB(pq, PQescapeString,AC_DEFINE(HAVE_PQESCAPE,1,[ ]))
+ AC_CHECK_LIB(pq, PQsetnonblocking,AC_DEFINE(HAVE_PQSETNONBLOCKING,1,[ ]))
AC_CHECK_LIB(pq, PQcmdTuples,AC_DEFINE(HAVE_PQCMDTUPLES,1,[ ]))
AC_CHECK_LIB(pq, PQoidValue,AC_DEFINE(HAVE_PQOIDVALUE,1,[ ]))
AC_CHECK_LIB(pq, PQclientEncoding,AC_DEFINE(HAVE_PQCLIENTENCODING,1,[ ]))
Index: php4/ext/pgsql/pgsql.c
diff -u php4/ext/pgsql/pgsql.c:1.163 php4/ext/pgsql/pgsql.c:1.164
--- php4/ext/pgsql/pgsql.c:1.163 Tue Mar 26 03:49:36 2002
+++ php4/ext/pgsql/pgsql.c Fri Mar 29 06:24:54 2002
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.163 2002/03/26 08:49:36 yohgaki Exp $ */
+/* $Id: pgsql.c,v 1.164 2002/03/29 11:24:54 yohgaki Exp $ */
#include <stdlib.h>
@@ -48,6 +48,12 @@
#define PGSQL_ESCAPE_STRING 1
#define PGSQL_ESCAPE_BYTEA 2
+#if HAVE_PQSETNONBLOCKING
+#define PQ_SETNONBLOCKING(pg_link, flag) PQsetnonblocking(pg_link, flag)
+#else
+#define PQ_SETNONBLOCKING(pg_link, flag) 0
+#endif
+
#define CHECK_DEFAULT_LINK(x) if (x == -1) { php_error(E_WARNING, "%s() no PostgreSQL link
opened yet", get_active_function_name(TSRMLS_C)); }
/* {{{ pgsql_functions[]
@@ -253,13 +259,18 @@
return 0;
link = (PGconn *) rsrc->ptr;
+
+ if (PQ_SETNONBLOCKING(link, 0)) {
+ php_error(E_NOTICE,"PostgreSQL cannot set connection to blocking mode");
+ return -1;
+ }
- PQsetnonblocking(link, 0);
while ((res = PQgetResult(link))) {
PQclear(res);
}
PGG(ignore_notices) = 1;
- PQexec(link,"BEGIN;ROLLBACK;");
+ res = PQexec(link,"BEGIN;ROLLBACK;");
+ PQclear(res);
PGG(ignore_notices) = 0;
return 0;
@@ -845,7 +856,11 @@
ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL link", le_link,
le_plink);
convert_to_string_ex(query);
- PQsetnonblocking(pgsql, 0);
+ if (PQ_SETNONBLOCKING(pgsql, 0)) {
+ php_error(E_NOTICE,"%s() cannot set connection to blocking mode",
+ get_active_function_name(TSRMLS_C));
+ RETURN_FALSE;
+ }
while ((pgsql_result = PQgetResult(pgsql))) {
PQclear(pgsql_result);
leftover = 1;
@@ -1418,7 +1433,7 @@
ZEND_FETCH_RESOURCE(pg_result, pgsql_result_handle *, result, -1, "PostgreSQL result",
le_result);
pgsql_result = pg_result->result;
-#if HAVE_PQOIDVALUE
+#ifdef HAVE_PQOIDVALUE
Z_LVAL_P(return_value) = (int) PQoidValue(pgsql_result);
if (Z_LVAL_P(return_value) == InvalidOid) {
RETURN_FALSE;
@@ -1985,7 +2000,7 @@
}
/* }}} */
-#if HAVE_PQCLIENTENCODING
+#ifdef HAVE_PQCLIENTENCODING
/* {{{ proto int pg_set_client_encoding([resource connection,] string encoding)
Set client encoding */
PHP_FUNCTION(pg_set_client_encoding)
@@ -2357,7 +2372,7 @@
}
/* }}} */
-#if HAVE_PQESCAPE
+#ifdef HAVE_PQESCAPE
/* {{{ proto string pg_escape_string(string data)
Escape string for text/char type */
PHP_FUNCTION(pg_escape_string)
@@ -2404,6 +2419,7 @@
zval *result;
PGresult *pgsql_result;
pgsql_result_handle *pg_result;
+ char *err = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r",
&result) == FAILURE) {
@@ -2416,7 +2432,8 @@
if (!pgsql_result) {
RETURN_FALSE;
}
- RETURN_STRING(PQresultErrorMessage(pgsql_result),1);
+ err = (char *)PQresultErrorMessage(pgsql_result);
+ RETURN_STRING(err,1);
}
/* }}} */
@@ -2483,7 +2500,7 @@
ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link,
le_plink);
- if (PQsetnonblocking(pgsql, 1)) {
+ if (PQ_SETNONBLOCKING(pgsql, 1)) {
php_error(E_NOTICE,"%s() cannot set connection to nonblocking mode",
get_active_function_name(TSRMLS_C));
RETURN_FALSE;
@@ -2506,7 +2523,7 @@
get_active_function_name(TSRMLS_C));
break;
}
- if (PQsetnonblocking(pgsql, 0)) {
+ if (PQ_SETNONBLOCKING(pgsql, 0)) {
php_error(E_NOTICE,"%s() cannot set connection to blocking mode",
get_active_function_name(TSRMLS_C));
}
@@ -2549,7 +2566,7 @@
ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link,
le_plink);
- if (PQsetnonblocking(pgsql, 1)) {
+ if (PQ_SETNONBLOCKING(pgsql, 1)) {
php_error(E_NOTICE,"%s() cannot set connection to nonblocking mode",
get_active_function_name(TSRMLS_C));
RETURN_FALSE;
@@ -2565,7 +2582,7 @@
if (!PQsendQuery(pgsql, query)) {
RETURN_FALSE;
}
- if (PQsetnonblocking(pgsql, 0)) {
+ if (PQ_SETNONBLOCKING(pgsql, 0)) {
php_error(E_NOTICE,"%s() cannot set connection to blocking mode",
get_active_function_name(TSRMLS_C));
}