cvs: php4(PHP_4_2_0) /ext/pgsql pgsql.c
| From: | Yasuo Ohgaki | Date: | Sat, 30 Mar 2002 23:23:58 +0000 |
| Subject: | cvs: php4(PHP_4_2_0) /ext/pgsql pgsql.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-10788@lists.php.net to get a copy of this message | ||
yohgaki Sat Mar 30 18:23:58 2002 EDT
Modified files: (Branch: PHP_4_2_0)
/php4/ext/pgsql pgsql.c
Log:
MFH. 6.5.3 libpq build fix.
Index: php4/ext/pgsql/pgsql.c
diff -u php4/ext/pgsql/pgsql.c:1.150.2.2 php4/ext/pgsql/pgsql.c:1.150.2.3
--- php4/ext/pgsql/pgsql.c:1.150.2.2 Tue Mar 26 19:14:30 2002
+++ php4/ext/pgsql/pgsql.c Sat Mar 30 18:23:58 2002
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.150.2.2 2002/03/27 00:14:30 yohgaki Exp $ */
+/* $Id: pgsql.c,v 1.150.2.3 2002/03/30 23:23:58 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;
@@ -336,9 +347,6 @@
REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT);
- REGISTER_LONG_CONSTANT("PGSQL_ESCAPE_STRING", PGSQL_ESCAPE_STRING, CONST_CS |
CONST_PERSISTENT);
- REGISTER_LONG_CONSTANT("PGSQL_ESCAPE_BYTEA", PGSQL_ESCAPE_BYTEA, CONST_CS |
CONST_PERSISTENT);
-
REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS |
CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS |
CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT);
@@ -849,7 +857,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;
@@ -1422,7 +1434,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;
@@ -2054,8 +2066,7 @@
#define pg_encoding_to_char(x) "SQL_ASCII"
#endif
- Z_STRVAL_P(return_value)
- = (char *) pg_encoding_to_char(PQclientEncoding(pgsql));
+ Z_STRVAL_P(return_value) = (char *) pg_encoding_to_char(PQclientEncoding(pgsql));
Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
Z_STRVAL_P(return_value) = (char *) estrdup(Z_STRVAL_P(return_value));
Z_TYPE_P(return_value) = IS_STRING;
@@ -2359,7 +2370,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)
@@ -2406,6 +2417,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,9 +2428,10 @@
pgsql_result = pg_result->result;
if (!pgsql_result) {
- RETURN_FALSE;
+ RETURN_FALSE;
}
- RETURN_STRING(PQresultErrorMessage(pgsql_result),1);
+ err = (char *)PQresultErrorMessage(pgsql_result);
+ RETURN_STRING(err,1);
}
/* }}} */
@@ -2485,7 +2498,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;
@@ -2508,7 +2521,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));
}
@@ -2551,7 +2564,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;
@@ -2567,7 +2580,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));
}