]> granicus.if.org Git - php/commitdiff
MFH. 6.5.3 libpq build fix.
authorYasuo Ohgaki <yohgaki@php.net>
Sat, 30 Mar 2002 23:23:58 +0000 (23:23 +0000)
committerYasuo Ohgaki <yohgaki@php.net>
Sat, 30 Mar 2002 23:23:58 +0000 (23:23 +0000)
ext/pgsql/pgsql.c

index 46798f19eadd849e381f2e4b88a05857fcd92870..225e3e4b3728ac596ec14bcf44076736b67e0e37 100644 (file)
 #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 @@ static int _rollback_transactions(zend_rsrc_list_entry *rsrc TSRMLS_DC)
                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 @@ PHP_MINIT_FUNCTION(pgsql)
        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 @@ PHP_FUNCTION(pg_query)
        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 @@ PHP_FUNCTION(pg_last_oid)
        
        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 @@ PHP_FUNCTION(pg_client_encoding)
 #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 @@ PHP_FUNCTION(pg_copy_from)
 }
 /* }}} */
 
-#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 @@ PHP_FUNCTION(pg_result_error)
        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 @@ PHP_FUNCTION(pg_result_error)
 
        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 @@ static void php_pgsql_do_async(INTERNAL_FUNCTION_PARAMETERS, int entry_type)
 
        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 @@ static void php_pgsql_do_async(INTERNAL_FUNCTION_PARAMETERS, int entry_type)
                                          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 @@ PHP_FUNCTION(pg_send_query)
 
        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 @@ PHP_FUNCTION(pg_send_query)
        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));
        }