yohgaki         Sun Oct 13 05:37:27 2002 EDT

  Modified files:              
    /php4/ext/pgsql     pgsql.c php_pgsql.h 
  Log:
  Introduce connect_type option to pg_connect().
  pg_connect(conn_str, conn_type) is allowed. 
  @Added PGSQL_CONNECT_FORCE_NEW option to pg_connect() (Yasuo)
  # If you have better idea about constant name(s), let me know.
  
  
Index: php4/ext/pgsql/pgsql.c
diff -u php4/ext/pgsql/pgsql.c:1.232 php4/ext/pgsql/pgsql.c:1.233
--- php4/ext/pgsql/pgsql.c:1.232        Sat Oct 12 23:00:47 2002
+++ php4/ext/pgsql/pgsql.c      Sun Oct 13 05:37:27 2002
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
  */
  
-/* $Id: pgsql.c,v 1.232 2002/10/13 03:00:47 yohgaki Exp $ */
+/* $Id: pgsql.c,v 1.233 2002/10/13 09:37:27 yohgaki Exp $ */
 
 #include <stdlib.h>
 
@@ -381,6 +381,8 @@
        le_result = zend_register_list_destructors_ex(_free_result, NULL, "pgsql 
result", module_number);
        le_lofp = zend_register_list_destructors_ex(_free_ptr, NULL, "pgsql large 
object", module_number);
        le_string = zend_register_list_destructors_ex(_free_ptr, NULL, "pgsql string", 
module_number);
+       /* For connection option */
+       REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, 
+CONST_CS | CONST_PERSISTENT);
        /* For pg_fetch_array() */
        REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT);
@@ -489,9 +491,9 @@
        PGconn *pgsql;
        smart_str str = {0};
        zval **args[5];
-       int i;
+       int i, connect_type = 0;
 
-       if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() == 2 || ZEND_NUM_ARGS() > 5
+       if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 5
                        || zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == 
FAILURE) {
                WRONG_PARAM_COUNT;
        }
@@ -508,6 +510,9 @@
 
        if (ZEND_NUM_ARGS() == 1) { /* new style, using connection string */
                connstring = Z_STRVAL_PP(args[0]);
+       } else if (ZEND_NUM_ARGS() == 2 ) { /* Safe to add conntype_option, since 2 
+args was illegal */
+               convert_to_long_ex(args[1]);
+               connect_type = Z_LVAL_PP(args[1]);
        } else {
                host = Z_STRVAL_PP(args[0]);
                port = Z_STRVAL_PP(args[1]);
@@ -596,7 +601,7 @@
                        pgsql = (PGconn *) le->ptr;
                }
                ZEND_REGISTER_RESOURCE(return_value, pgsql, le_plink);
-       } else {
+       } else { // Non persistent connection
                list_entry *index_ptr,new_index_ptr;
                
                /* first we check the hash for the hashed_details key.  if it exists,
@@ -604,7 +609,8 @@
                 * if it doesn't, open a new pgsql link, add it to the resource list,
                 * and add a pointer to it with hashed_details as the key.
                 */
-               if (zend_hash_find(&EG(regular_list),str.c,str.len+1,(void **) 
&index_ptr)==SUCCESS) {
+               if (!(connect_type & PGSQL_CONNECT_FORCE_NEW)
+                       && zend_hash_find(&EG(regular_list),str.c,str.len+1,(void **) 
+&index_ptr)==SUCCESS) {
                        int type,link;
                        void *ptr;
 
@@ -678,7 +684,7 @@
 /* }}} */
 #endif
 
-/* {{{ proto resource pg_connect([string connection_string] | [string host, string 
port [, string options [, string tty,]] string database)
+/* {{{ proto resource pg_connect(string connection_string[, int connect_type] | 
+[string host, string port [, string options [, string tty,]]] string database)
    Open a PostgreSQL connection */
 PHP_FUNCTION(pg_connect)
 {
@@ -686,7 +692,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource pg_pconnect([string connection_string] | [string host, string 
port [, string options [, string tty,]] string database)
+/* {{{ proto resource pg_pconnect(string connection_string | [string host, string 
+port [, string options [, string tty,]]] string database)
    Open a persistent PostgreSQL connection */
 PHP_FUNCTION(pg_pconnect)
 {
Index: php4/ext/pgsql/php_pgsql.h
diff -u php4/ext/pgsql/php_pgsql.h:1.53 php4/ext/pgsql/php_pgsql.h:1.54
--- php4/ext/pgsql/php_pgsql.h:1.53     Sat Oct 12 23:00:48 2002
+++ php4/ext/pgsql/php_pgsql.h  Sun Oct 13 05:37:27 2002
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
  
-/* $Id: php_pgsql.h,v 1.53 2002/10/13 03:00:48 yohgaki Exp $ */
+/* $Id: php_pgsql.h,v 1.54 2002/10/13 09:37:27 yohgaki Exp $ */
 
 #ifndef PHP_PGSQL_H
 #define PHP_PGSQL_H
@@ -140,6 +140,8 @@
 PHP_FUNCTION(pg_delete);
 PHP_FUNCTION(pg_select);
 
+/* connection options - ToDo: Add async connection option */
+#define PGSQL_CONNECT_FORCE_NEW     (1<<1)
 /* php_pgsql_convert options */
 #define PGSQL_CONV_IGNORE_DEFAULT   (1<<1)     /* Do not use DEAFULT value by 
removing field from returned array */
 #define PGSQL_CONV_FORCE_NULL       (1<<2)     /* Convert to NULL if string is null 
string */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to