asautins                Wed Apr 25 10:48:31 2001 EDT

  Modified files:              
    /php4/ext/oci8      oci8.c 
  Log:
  
  
      Collections cleanup
         - Removed date specific methods.  Dates work consistently with
           the rest of the oci8 code.
         - Removed unused variables from collection code.
         - RETURN_FALSE on all errors.
         - fix error prints to php_error.
  
  
Index: php4/ext/oci8/oci8.c
diff -u php4/ext/oci8/oci8.c:1.119 php4/ext/oci8/oci8.c:1.120
--- php4/ext/oci8/oci8.c:1.119  Mon Apr 23 04:54:02 2001
+++ php4/ext/oci8/oci8.c        Wed Apr 25 10:48:30 2001
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: oci8.c,v 1.119 2001/04/23 11:54:02 thies Exp $ */
+/* $Id: oci8.c,v 1.120 2001/04/25 17:48:30 asautins Exp $ */
 
 /* TODO list:
  *
@@ -47,6 +47,8 @@
  * - make $lob->savefile use O_BINARY
  * - line 2728: ub4 length = -1; needs fixing
  * - delay OCIInitialize() as far as we can.
+ * - add PHP Array <-> OCICollection conversion
+ * - add Collection iterator object for INDEX BY tables
  */
 
 /* {{{ includes & stuff */
@@ -223,9 +225,6 @@
 PHP_FUNCTION(ocicollsize);
 PHP_FUNCTION(ocicollmax);
 PHP_FUNCTION(ocicolltrim);
-PHP_FUNCTION(ocicolldategetelem);
-PHP_FUNCTION(ocicolldateassignelem);
-PHP_FUNCTION(ocicolldateappendelem);
 #endif
 
 #define OCI_GET_STMT(statement,value) \
@@ -309,9 +308,6 @@
     PHP_FE(ocifreecoll,      NULL)
     PHP_FE(ocicollappend,    NULL)
     PHP_FE(ocicollgetelem,   NULL)
-    PHP_FE(ocicolldategetelem,NULL)
-    PHP_FE(ocicolldateassignelem,NULL)
-    PHP_FE(ocicolldateappendelem,NULL)
     PHP_FE(ocicollassignelem,NULL)
     PHP_FE(ocicollassign,    NULL)
     PHP_FE(ocicollsize,      NULL)
@@ -342,9 +338,6 @@
 static zend_function_entry php_oci_coll_class_functions[] = {
     PHP_FALIAS(append,        ocicollappend,  NULL)
     PHP_FALIAS(getelem,       ocicollgetelem, NULL)
-    PHP_FALIAS(dategetelem,   ocicolldategetelem, NULL)
-    PHP_FALIAS(dateassignelem,   ocicolldateassignelem, NULL)
-    PHP_FALIAS(dateappendelem,   ocicolldateappendelem, NULL)
     PHP_FALIAS(assignelem,    ocicollassignelem, NULL)
     PHP_FALIAS(assign,        ocicollassign,  NULL)
     PHP_FALIAS(size,          ocicollsize,    NULL)
@@ -584,7 +577,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "OCI8 Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.119 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.120 $");
 #ifndef PHP_WIN32
        php_info_print_table_row(2, "Oracle Version", PHP_OCI8_VERSION );
        php_info_print_table_row(2, "Compile-time ORACLE_HOME", PHP_OCI8_DIR );
@@ -4294,7 +4287,7 @@
 
 
 /* {{{ proto string ocifreecoll(object lob)
-   Deletes collection */
+   Deletes collection object*/
 
 PHP_FUNCTION(ocifreecoll)
 {
@@ -4307,7 +4300,8 @@
         inx = _oci_get_ocicoll(id,&coll);
         if (inx) {
                        /*
-                        * Do we need to free the object? 
+                        * Do we need to free the object?
+                        * 
                         */
                        connection = coll->conn;
             oci_debug("OCIfreecoll: coll=%d",inx);
@@ -4316,7 +4310,7 @@
         }
     }
 
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
 
@@ -4332,10 +4326,9 @@
        OCIString *ocistr = (OCIString *)0;
        OCIInd new_ind = OCI_IND_NOTNULL;
        OCIDate dt;
-    char *buffer;
     int inx;
        double ndx;
-    ub4 loblen;
+
        OCILS_FETCH();
 
     if ((id = getThis()) != 0) {
@@ -4352,11 +4345,12 @@
                   case OCI_TYPECODE_DATE:
                           convert_to_string_ex(arg);
                           connection->error = OCIDateFromText(connection->pError,
-                                                                                      
             (*arg)->value.str.val,
-                                                                                      
                 (*arg)->value.str.len,
-                                                                                      
                 0,0,0,0,&dt);
+                                                                                      
+            (*arg)->value.str.val,
+                                                                                      
+            (*arg)->value.str.len,
+                                                                                      
+            0,0,0,0,&dt);
                           if (connection->error) {
                                   oci_error(connection->pError, "OCIDateFromText", 
connection->error);
+                                  RETURN_FALSE;
                           }
                           connection->error = OCICollAppend(OCI(pEnv), 
                                                                                       
          connection->pError, 
@@ -4365,17 +4359,20 @@
                                                                                       
          (OCIColl *) coll->coll);               
                           if (connection->error) {
                                   oci_error(connection->pError, "OCICollAppend", 
connection->error);
+                                  RETURN_FALSE;
                           }
+                          RETURN_TRUE;
                           break;
                   case OCI_TYPECODE_VARCHAR2 :
                           convert_to_string_ex(arg);
                           connection->error = OCIStringAssignText(OCI(pEnv),
-                                                                  connection->pError,
-                                                                  
(*arg)->value.str.val,
-                                                                  
(*arg)->value.str.len,
-                                                                  &ocistr);
+                                                                                      
+                    connection->pError,
+                                                                                      
+                    (*arg)->value.str.val,
+                                                                                      
+                    (*arg)->value.str.len,
+                                                                                      
+                    &ocistr);
                           if (connection->error) {
                                   oci_error(connection->pError, 
"OCIStringAssignText", connection->error);
+                                  RETURN_FALSE;
                           }
                           connection->error = OCICollAppend(OCI(pEnv), 
                                                                                       
          connection->pError, 
@@ -4384,7 +4381,9 @@
                                                                                       
          (OCIColl *) coll->coll);               
                           if (connection->error) {
                                   oci_error(connection->pError, "OCICollAppend", 
connection->error);
+                                  RETURN_FALSE;
                           }
+                          RETURN_TRUE;
                           break;
                   case OCI_TYPECODE_UNSIGNED16 :                       /* UNSIGNED 
SHORT  */
                   case OCI_TYPECODE_UNSIGNED32 :                        /* UNSIGNED 
LONG  */
@@ -4400,9 +4399,10 @@
                           convert_to_double_ex(arg);
                           ndx = (double)(*arg)->value.dval;
                           connection->error = 
OCINumberFromReal(connection->pError,&ndx,
-                                                                                      
                 sizeof(double),&num);
+                                                                                      
+                  sizeof(double),&num);
                           if (connection->error) {
                                   oci_error(connection->pError, "OCINumberFromReal", 
connection->error);
+                                  RETURN_FALSE;
                           }
 
                           connection->error = OCICollAppend(OCI(pEnv), 
@@ -4410,337 +4410,48 @@
                                                                                       
          (dvoid *) &num,
                                                                                       
          (dvoid *) &new_ind,
                                                                                       
          (OCIColl *) coll->coll);               
+                          RETURN_TRUE;
                           break;
                }
        }
 
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
 
-/* {{{ proto string ocicolldategetelem(object collection,ndx,[format],[lang])
+/* {{{ proto string ocicollgetelem(object collection,ndx)
    Retrieve the value at collection index ndx */
-
-PHP_FUNCTION(ocicolldategetelem)
-{
-    zval *id,**arg,**fmt,**lang;
-    oci_connection *connection;
-    oci_collection *coll;
-    OCINumber num;
-       OCIInd new_ind = OCI_IND_NOTNULL;
-    char *buffer;
-    ub4  ndx;
-    ub4 loblen;
-    int i;
-    dvoid *elem;
-    dvoid *elemind;
-    boolean exists;
-    OCIString *ocistr = (OCIString *)0;
-    text *str;
-    char buff[1024];
-       int len;
-       double         dnum;
-    int ac = ZEND_NUM_ARGS(), inx;
-       char *ocifmt;
-       int  ocifmt_len;
-       char *ocilang;
-       int ocilang_len;
-       OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
-
-               if(coll->element_typecode != OCI_TYPECODE_DATE) {
-               php_error(E_WARNING, "Collection is not of date datatype");
-                       RETURN_FALSE;
-               }
-               
-               if (ac < 1 || ac > 3 || zend_get_parameters_ex(ac, &arg, &fmt, &lang) 
== FAILURE) {
-                       WRONG_PARAM_COUNT;
-               }
-
-        convert_to_long_ex(arg);
-               if(ac > 1) {
-                       convert_to_string_ex(fmt);
-                       ocifmt = (*fmt)->value.str.val;
-                       ocifmt_len = (*fmt)->value.str.len;
-               } else {
-                       ocifmt = 0;
-                       ocifmt_len = 0;
-               }
-
-               if(ac > 2) {
-                       convert_to_string_ex(lang);
-                       ocilang = (*lang)->value.str.val;
-                       ocilang_len = (*lang)->value.str.len;
-               } else {
-                       ocilang = 0;
-                       ocilang_len = 0;
-               }
-               ndx = (*arg)->value.lval;
-
-        connection = coll->conn;
-
-               connection->error = OCICollGetElem(OCI(pEnv),
-                                                                                  
connection->pError,
-                                                                                  
coll->coll,
-                                                                                  ndx,
-                                                                                  
&exists,
-                                                                                  
&elem,
-                                                                                  
&elemind);
-               if (connection->error) {
-                       oci_error(connection->pError, "OCICollGetElem", 
connection->error);
-               }
-               len = 1024;
-               connection->error = OCIDateToText(connection->pError,
-                                                                                 elem,
-                                                                                 
ocifmt, /* fmt */
-                                                                                 
ocifmt_len, /* fmt_length */
-                                                                                 
ocilang, /* lang_name */
-                                                                                 
ocilang_len, /* lang_length */
-                                                                                 
&len,buff);
-               if (connection->error) {
-                       oci_error(connection->pError, "OCIDateToText", 
connection->error);
-               }
-               RETURN_STRINGL(buff,len,1);
-       }
-
-  RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto string ocicolldateassignelem(object collection,ndx,val,[format],[lang])
-   assign value at collection index ndx */
-
-PHP_FUNCTION(ocicolldateassignelem)
+PHP_FUNCTION(ocicollgetelem)
 {
-    zval *id,**arg,**val,**fmt,**lang;
-    oci_connection *connection;
-    oci_collection *coll;
-    OCINumber num;
-       OCIInd new_ind = OCI_IND_NOTNULL;
-    char *buffer;
-    ub4  ndx;
-    ub4 loblen;
-    int i;
-    dvoid *elem;
-    dvoid *elemind;
-    boolean exists;
-    OCIString *ocistr = (OCIString *)0;
-       OCIDate dt;
-    text *str;
-    char buff[1024];
+       zval *id,**arg;
+       oci_connection *connection;
+       oci_collection *coll;
+       ub4  ndx;
+       int inx;
+       dvoid *elem;
+       dvoid *elemind;
+       boolean exists;
+       OCIString *ocistr = (OCIString *)0;
+       text *str;
+       char buff[1024];
        int len;
-       double         dnum;
-    int ac = ZEND_NUM_ARGS(), inx;
-       char *ocifmt;
-       int  ocifmt_len;
-       char *ocilang;
-       int ocilang_len;
-       OCILS_FETCH();
-
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
-
-               if(coll->element_typecode != OCI_TYPECODE_DATE) {
-               php_error(E_WARNING, "Collection is not of date datatype");
-                       RETURN_FALSE;
-               }
-               
-               if (ac < 2 || ac > 5 || zend_get_parameters_ex(ac, &arg, &val,&fmt, 
&lang) == FAILURE) {
-                       WRONG_PARAM_COUNT;
-               }
-
-        convert_to_long_ex(arg);
-        convert_to_string_ex(val);
-               if(ac > 2) {
-                       convert_to_string_ex(fmt);
-                       ocifmt = (*fmt)->value.str.val;
-                       ocifmt_len = (*fmt)->value.str.len;
-               } else {
-                       ocifmt = 0;
-                       ocifmt_len = 0;
-               }
-
-               if(ac > 3) {
-                       convert_to_string_ex(lang);
-                       ocilang = (*lang)->value.str.val;
-                       ocilang_len = (*lang)->value.str.len;
-               } else {
-                       ocilang = 0;
-                       ocilang_len = 0;
-               }
-               ndx = (*arg)->value.lval;
-
-        connection = coll->conn;
-               convert_to_string_ex(val);
-
-               if((*val)->value.str.len == 7 && 
!strncmp((*val)->value.str.val,"SYSDATE",7)) {
-                       connection->error = OCIDateSysDate(connection->pError,&dt);
-                       if (connection->error) {
-                               oci_error(connection->pError, "OCIDateSysDate", 
connection->error);
-                       }
-               } else {
-                       connection->error = OCIDateFromText(connection->pError,
-                                                                                      
         (*val)->value.str.val,
-                                                                                      
         (*val)->value.str.len,
-                                                                                      
         ocifmt,ocifmt_len,ocilang,ocilang_len,&dt);
-                       if (connection->error) {
-                               oci_error(connection->pError, "OCIDateFromText", 
connection->error);
-                       }
-               }
+       double dnum;
 
-               connection->error = OCICollAssignElem(OCI(pEnv),
-                                                                                      
   connection->pError,
-                                                                                      
   ndx,
-                                                                                      
   (dword *)&dt,
-                                                                                      
   &new_ind,
-                                                                                      
   coll->coll);
-               if (connection->error) {
-                       oci_error(connection->pError, "OCIAssignElem", 
connection->error);
-               }
-
-               RETURN_TRUE;
-       }
-
-  RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto string ocicolldateappendelem(object collection,val,[format],[lang])
-   assign value at collection index ndx */
-
-PHP_FUNCTION(ocicolldateappendelem)
-{
-    zval *id,**arg,**fmt,**lang;
-    oci_connection *connection;
-    oci_collection *coll;
-    OCINumber num;
-       OCIInd new_ind = OCI_IND_NOTNULL;
-    char *buffer;
-    ub4  ndx;
-    ub4 loblen;
-    int i;
-    dvoid *elem;
-    dvoid *elemind;
-    boolean exists;
-    OCIString *ocistr = (OCIString *)0;
-       OCIDate dt;
-    text *str;
-    char buff[1024];
-       int len;
-       double         dnum;
-    int ac = ZEND_NUM_ARGS(), inx;
-       char *ocifmt;
-       int  ocifmt_len;
-       char *ocilang;
-       int ocilang_len;
        OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
-
-               if(coll->element_typecode != OCI_TYPECODE_DATE) {
-               php_error(E_WARNING, "Collection is not of date datatype");
+       if ((id = getThis()) != 0) {
+               if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
                        RETURN_FALSE;
                }
-               
-               if (ac < 1 || ac > 3 || zend_get_parameters_ex(ac, &arg, &fmt, &lang) 
== FAILURE) {
+               if (zend_get_parameters_ex(1, &arg) == FAILURE) {
                        WRONG_PARAM_COUNT;
                }
-
-               if(ac > 1) {
-                       convert_to_string_ex(fmt);
-                       ocifmt = (*fmt)->value.str.val;
-                       ocifmt_len = (*fmt)->value.str.len;
-               } else {
-                       ocifmt = 0;
-                       ocifmt_len = 0;
-               }
-
-               if(ac > 2) {
-                       convert_to_string_ex(lang);
-                       ocilang = (*lang)->value.str.val;
-                       ocilang_len = (*lang)->value.str.len;
-               } else {
-                       ocilang = 0;
-                       ocilang_len = 0;
-               }
-        connection = coll->conn;
-
-               convert_to_string_ex(arg);
-               if((*arg)->value.str.len == 7 && 
!strncmp((*arg)->value.str.val,"SYSDATE",7)) {
-                       connection->error = OCIDateSysDate(connection->pError,&dt);
-                       if (connection->error) {
-                               oci_error(connection->pError, "OCIDateSysDate", 
connection->error);
-                       }
-               } else {
-                       connection->error = OCIDateFromText(connection->pError,
-                                                                                      
         (*arg)->value.str.val,
-                                                                                      
         (*arg)->value.str.len,
-                                                                                      
         ocifmt,ocifmt_len,ocilang,ocilang_len,&dt);
-                       if (connection->error) {
-                               oci_error(connection->pError, "OCIDateFromText", 
connection->error);
-                       }
-               }
-               connection->error = OCICollAppend(OCI(pEnv),
-                                                                                 
connection->pError,
-                                                                                 &dt,
-                                                                                 
&new_ind,
-                                                                                 
coll->coll);
-               if (connection->error) {
-                       oci_error(connection->pError, "OCICollAppend", 
connection->error);
-               }
-               RETURN_TRUE;
-       }
-
-  RETURN_FALSE;
-}
-/* }}} */
-
-/* {{{ proto string ocicollgetelem(object collection,ndx,[format],[lang])
-   Retrieve the value at collection index ndx */
-
-PHP_FUNCTION(ocicollgetelem)
-{
-    zval *id,**arg,**dt_format,**lang;
-    oci_connection *connection;
-    oci_collection *coll;
-    OCINumber num;
-       OCIInd new_ind = OCI_IND_NOTNULL;
-    char *buffer;
-    ub4  ndx;
-    int inx;
-    ub4 loblen;
-    int i;
-    dvoid *elem;
-    dvoid *elemind;
-    boolean exists;
-    OCIString *ocistr = (OCIString *)0;
-    text *str;
-    char buff[1024];
-       int len;
-       double         dnum;
-       OCILS_FETCH();
-
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
-        if (zend_get_parameters_ex(1, &arg) == FAILURE) {
-            WRONG_PARAM_COUNT;
-        }
 
-        convert_to_long_ex(arg);
+               convert_to_long_ex(arg);
                ndx = (*arg)->value.lval;
 
-        connection = coll->conn;
+               connection = coll->conn;
 
                connection->error = OCICollGetElem(OCI(pEnv),
                                                                                   
connection->pError,
@@ -4751,6 +4462,7 @@
                                                                                   
&elemind);
                if (connection->error) {
                        oci_error(connection->pError, "OCICollGetElem", 
connection->error);
+                       RETURN_FALSE;
                }
                switch(coll->element_typecode) {
                   case OCI_TYPECODE_DATE:
@@ -4769,76 +4481,69 @@
                           RETURN_STRINGL(str,strlen(str),1);
                           break;
                   case OCI_TYPECODE_UNSIGNED16 :                       /* UNSIGNED 
SHORT  */
-                  case OCI_TYPECODE_UNSIGNED32 :                        /* UNSIGNED 
LONG  */
-                  case OCI_TYPECODE_REAL :                                     /* 
REAL    */
-                  case OCI_TYPECODE_DOUBLE :                                   /* 
DOUBLE  */
-                  case OCI_TYPECODE_INTEGER :                                     /* 
INT  */
-                  case OCI_TYPECODE_SIGNED16 :                                  /* 
SHORT  */
-                  case OCI_TYPECODE_SIGNED32 :                                   /* 
LONG  */
-                  case OCI_TYPECODE_DECIMAL :                                 /* 
DECIMAL  */
-                  case OCI_TYPECODE_FLOAT :                                   /* 
FLOAT    */
-                  case OCI_TYPECODE_NUMBER :                                  /* 
NUMBER   */
-                  case OCI_TYPECODE_SMALLINT :                                /* 
SMALLINT */
+                  case OCI_TYPECODE_UNSIGNED32 :                       /* UNSIGNED 
+LONG  */
+                  case OCI_TYPECODE_REAL :                             /* REAL    */
+                  case OCI_TYPECODE_DOUBLE :                           /* DOUBLE  */
+                  case OCI_TYPECODE_INTEGER :                          /* INT  */
+                  case OCI_TYPECODE_SIGNED16 :                         /* SHORT  */
+                  case OCI_TYPECODE_SIGNED32 :                         /* LONG  */
+                  case OCI_TYPECODE_DECIMAL :                          /* DECIMAL  */
+                  case OCI_TYPECODE_FLOAT :                            /* FLOAT    */
+                  case OCI_TYPECODE_NUMBER :                           /* NUMBER   */
+                  case OCI_TYPECODE_SMALLINT :                         /* SMALLINT */
                           connection->error = OCINumberToReal(connection->pError, 
                                                                                       
            (CONST OCINumber *) elem,
-                                                                         (uword) 
sizeof(dnum), (dvoid *) &dnum);
+                                                                                      
+            (uword) sizeof(dnum), (dvoid *) &dnum);
                           if (connection->error) {
                                   oci_error(connection->pError, "OCINumberToReal", 
connection->error);
+                                  RETURN_FALSE;
                           }
                           RETURN_DOUBLE(dnum);
                           break;
                }
        }
 
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
+
 /* {{{ proto string ocicollassign(object collection,object)
    Assign a collection from another existing collection */
 
 PHP_FUNCTION(ocicollassign)
 {
-    zval *id,**from;
-    oci_connection *connection;
-    oci_collection *coll,*from_coll;
-    OCINumber num;
-       OCIInd new_ind = OCI_IND_NOTNULL;
-    char *buffer;
-    ub4  ndx;
-    int inx;
-    ub4 loblen;
-    int i;
-    boolean exists;
-    OCIString *ocistr = (OCIString *)0;
-    text *str;
-    char buff[1024];
-       double         dnum;
+       zval *id,**from;
+       oci_connection *connection;
+       oci_collection *coll,*from_coll;
+       int inx;
+
        OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
+       if ((id = getThis()) != 0) {
+               if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
+                       RETURN_FALSE;
+               }
 
-        if (zend_get_parameters_ex(1, &from) == FAILURE) {
-            WRONG_PARAM_COUNT;
-        }
+               if (zend_get_parameters_ex(1, &from) == FAILURE) {
+                       WRONG_PARAM_COUNT;
+               }
 
                if ((inx = _oci_get_ocicoll(*from,&from_coll)) == 0) {
                        RETURN_FALSE;
                }
 
-        connection = coll->conn;
+               connection = coll->conn;
 
                connection->error = OCICollAssign(OCI(pEnv),connection->pError,
                                                                                  
from_coll->coll,coll->coll);
                if (connection->error) {
                        oci_error(connection->pError, "OCICollAssignElem", 
connection->error);
+                       RETURN_FALSE;
                }
                RETURN_TRUE;
        }
 
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
 
@@ -4847,117 +4552,116 @@
 
 PHP_FUNCTION(ocicollassignelem)
 {
-    zval *id,**index,**val;
-    oci_connection *connection;
-    oci_collection *coll;
-    OCINumber num;
+       zval *id,**index,**val;
+       oci_connection *connection;
+       oci_collection *coll;
+       OCINumber num;
        OCIInd new_ind = OCI_IND_NOTNULL;
-    char *buffer;
-    ub4  ndx;
-    int inx;
-    ub4 loblen;
-    int i;
-    boolean exists;
-    OCIString *ocistr = (OCIString *)0;
+       ub4  ndx;
+       int inx;
+       OCIString *ocistr = (OCIString *)0;
        OCIDate dt;
-    text *str;
-    char buff[1024];
-       double         dnum;
+       double  dnum;
+
        OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
+       if ((id = getThis()) != 0) {
+               if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
+                       RETURN_FALSE;
+               }
 
-        if (zend_get_parameters_ex(2, &index,&val) == FAILURE) {
-            WRONG_PARAM_COUNT;
-        }
+               if (zend_get_parameters_ex(2, &index,&val) == FAILURE) {
+                       WRONG_PARAM_COUNT;
+               }
 
-        convert_to_long_ex(index);
+               convert_to_long_ex(index);
                ndx = (*index)->value.lval;
 
-        connection = coll->conn;
+               connection = coll->conn;
                                                                                       
   
                if (connection->error) {
                        oci_error(connection->pError, "OCICollAssignElem", 
connection->error);
+                       RETURN_FALSE;
                }
                switch(coll->element_typecode) {
                   case OCI_TYPECODE_DATE:
                           convert_to_string_ex(val);
                           connection->error = OCIDateFromText(connection->pError,
-                                                                                      
             (*val)->value.str.val,
-                                                                                      
                 (*val)->value.str.len,
-                                                                                      
                 0,0,0,0,&dt);
+                                                                                      
+            (*val)->value.str.val,
+                                                                                      
+            (*val)->value.str.len,
+                                                                                      
+            0,0,0,0,&dt);
                           if (connection->error) {
                                   oci_error(connection->pError, "OCIDateFromText", 
connection->error);
+                                  RETURN_FALSE;
                           }
                           connection->error = OCICollAssignElem(OCI(pEnv),
-                                                                                      
   connection->pError,
-                                                                                      
   ndx,
-                                                                                      
   (dword *)&dt,
-                                                                                      
   &new_ind,
-                                                                                      
   coll->coll);
+                                                                                      
+                  connection->pError,
+                                                                                      
+                  ndx,
+                                                                                      
+                  (dword *)&dt,
+                                                                                      
+                  &new_ind,
+                                                                                      
+                  coll->coll);
                           if (connection->error) {
-                                  oci_error(connection->pError, "OCIAssignElem", 
connection->error);
+                                  oci_error(connection->pError, "OCICollAssignElem", 
+connection->error);
+                                  RETURN_FALSE;
                           }
                           break;
                   case OCI_TYPECODE_VARCHAR2 :
                           convert_to_string_ex(val);
                           connection->error = OCIStringAssignText(OCI(pEnv),
-                                                                  connection->pError,
-                                                                  
(*val)->value.str.val,
-                                                                  
(*val)->value.str.len,
-                                                                  &ocistr);
+                                                                                      
+                    connection->pError,
+                                                                                      
+                    (*val)->value.str.val,
+                                                                                      
+                    (*val)->value.str.len,
+                                                                                      
+                    &ocistr);
                           if (connection->error) {
                                   oci_error(connection->pError, 
"OCIStringAssignText", connection->error);
+                                  RETURN_FALSE;
                           }
                           connection->error = OCICollAssignElem(OCI(pEnv),
-                                                                                      
   connection->pError,
-                                                                                      
   ndx,
-                                                                                      
   (dword *)ocistr,
-                                                                                      
   &new_ind,
-                                                                                      
   coll->coll);
+                                                                                      
+                  connection->pError,
+                                                                                      
+                  ndx,
+                                                                                      
+                  (dword *)ocistr,
+                                                                                      
+                  &new_ind,
+                                                                                      
+                  coll->coll);
                           if (connection->error) {
-                                  oci_error(connection->pError, "OCIAssignElem", 
connection->error);
+                                  oci_error(connection->pError, "OCICollAssignElem", 
+connection->error);
+                                  RETURN_FALSE;
                           }
                           RETURN_TRUE;
                           break;
                   case OCI_TYPECODE_UNSIGNED16 :                       /* UNSIGNED 
SHORT  */
-                  case OCI_TYPECODE_UNSIGNED32 :                        /* UNSIGNED 
LONG  */
-                  case OCI_TYPECODE_REAL :                                     /* 
REAL    */
-                  case OCI_TYPECODE_DOUBLE :                                   /* 
DOUBLE  */
-                  case OCI_TYPECODE_INTEGER :                                     /* 
INT  */
-                  case OCI_TYPECODE_SIGNED16 :                                  /* 
SHORT  */
-                  case OCI_TYPECODE_SIGNED32 :                                   /* 
LONG  */
-                  case OCI_TYPECODE_DECIMAL :                                 /* 
DECIMAL  */
-                  case OCI_TYPECODE_FLOAT :                                   /* 
FLOAT    */
-                  case OCI_TYPECODE_NUMBER :                                  /* 
NUMBER   */
-                  case OCI_TYPECODE_SMALLINT :                                /* 
SMALLINT */
+                  case OCI_TYPECODE_UNSIGNED32 :                       /* UNSIGNED 
+LONG  */
+                  case OCI_TYPECODE_REAL :                             /* REAL    */
+                  case OCI_TYPECODE_DOUBLE :                           /* DOUBLE  */
+                  case OCI_TYPECODE_INTEGER :                          /* INT  */
+                  case OCI_TYPECODE_SIGNED16 :                         /* SHORT  */
+                  case OCI_TYPECODE_SIGNED32 :                         /* LONG  */
+                  case OCI_TYPECODE_DECIMAL :                          /* DECIMAL  */
+                  case OCI_TYPECODE_FLOAT :                            /* FLOAT    */
+                  case OCI_TYPECODE_NUMBER :                           /* NUMBER   */
+                  case OCI_TYPECODE_SMALLINT :                         /* SMALLINT */
                           convert_to_double_ex(val);
                           dnum = (double)(*val)->value.dval;
                           connection->error = 
OCINumberFromReal(connection->pError,&dnum,
-                                                                                      
                 sizeof(double),&num);
+                                                                                      
+                  sizeof(double),&num);
                           if (connection->error) {
                                   oci_error(connection->pError, "OCINumberFromReal", 
connection->error);
+                                  RETURN_FALSE;
                           }
                           connection->error = OCICollAssignElem(OCI(pEnv),
-                                                                                      
   connection->pError,
-                                                                                      
   ndx,
-                                                                                      
   (dword *)&num,
-                                                                                      
   &new_ind,
-                                                                                      
   coll->coll);
+                                                                                      
+                  connection->pError,
+                                                                                      
+                  ndx,
+                                                                                      
+                  (dword *)&num,
+                                                                                      
+                  &new_ind,
+                                                                                      
+                  coll->coll);
                           if (connection->error) {
-                                  oci_error(connection->pError, "OCIAssignElem", 
connection->error);
+                                  oci_error(connection->pError, "OCICollAssignElem", 
+connection->error);
+                                  RETURN_FALSE;
                           }
                           RETURN_TRUE;
                           break;
                }
-
-
        }
-
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
 
@@ -4966,44 +4670,50 @@
 
 PHP_FUNCTION(ocicollsize)
 {
-    zval *id,**arg;
-    oci_collection *coll;
+       zval *id;
+       oci_connection *connection;
+       oci_collection *coll;
        sb4 sz;
-    int inx;
+       int inx;
+
        OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
-               OCICollSize(OCI(pEnv),coll->conn->pError,coll->coll,&sz);
+       if ((id = getThis()) != 0) {
+               if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
+                       RETURN_FALSE;
+               }
+               connection = coll->conn;
+               connection->error = 
+OCICollSize(OCI(pEnv),coll->conn->pError,coll->coll,&sz);
+               if (connection->error) {
+                       oci_error(connection->pError, "OCICollSize", 
+connection->error);
+                       RETURN_FALSE;
+               }
                RETURN_LONG(sz);
        }
-
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
+
 /* {{{ proto string ocicollmax(object collection)
    Return the max value of a collection.  For a 
    varray this is the maximum length of the array */
 
 PHP_FUNCTION(ocicollmax)
 {
-    zval *id,**arg;
-    oci_collection *coll;
+       zval *id;
+       oci_collection *coll;
        sb4 sz;
-    int inx;
+       int inx;
        OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
+       if ((id = getThis()) != 0) {
+               if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
+                       RETURN_FALSE;
+               }
                sz = OCICollMax(OCI(pEnv),coll->coll);
                RETURN_LONG(sz);
        }
-
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
 
@@ -5012,29 +4722,28 @@
 
 PHP_FUNCTION(ocicolltrim)
 {
-    zval *id,**arg;
-    oci_collection *coll;
-       sb4 sz;
-    int inx;
+       zval *id,**arg;
+       oci_collection *coll;
+       int inx;
+
        OCILS_FETCH();
 
-    if ((id = getThis()) != 0) {
-        if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
-            RETURN_FALSE;
-        }
-        if (zend_get_parameters_ex(1, &arg) == FAILURE) {
-            WRONG_PARAM_COUNT;
-        }
-        convert_to_long_ex(arg);
+       if ((id = getThis()) != 0) {
+               if ((inx = _oci_get_ocicoll(id,&coll)) == 0) {
+                       RETURN_FALSE;
+               }
+               if (zend_get_parameters_ex(1, &arg) == FAILURE) {
+                       WRONG_PARAM_COUNT;
+               }
+               convert_to_long_ex(arg);
                coll->conn->error = 
OCICollTrim(OCI(pEnv),coll->conn->pError,(*arg)->value.lval,coll->coll);
                if (coll->conn->error) {
                        oci_error(coll->conn->pError, "OCICollTrim", 
coll->conn->error);
+                       RETURN_FALSE;
                }
-               
                RETURN_TRUE;
        }
-
-  RETURN_FALSE;
+       RETURN_FALSE;
 }
 /* }}} */
 
@@ -5049,131 +4758,128 @@
     zval **conn, **tdo;
     oci_connection *connection;
     oci_collection *coll;
-    OCISvcCtx *svchp = 0;
-    int dtype;
-       OCILS_FETCH();
 
-    dtype = OCI_DTYPE_LOB;
+       OCILS_FETCH();
 
     if (zend_get_parameters_ex(2, &conn, &tdo) != SUCCESS) {
         WRONG_PARAM_COUNT;
     }
     convert_to_string_ex(tdo);
 
-   coll = emalloc(sizeof(oci_collection));
+       coll = emalloc(sizeof(oci_collection));
+
+       OCI_GET_CONN(connection,conn);
 
-   OCI_GET_CONN(connection,conn);
+       coll->conn = connection;
+       coll->id = zend_list_insert(coll,le_coll);
+       zend_list_addref(connection->id);
 
-   coll->conn = connection;
-   coll->id = zend_list_insert(coll,le_coll);
-   zend_list_addref(connection->id);
-
-   connection->error = OCITypeByName(OCI(pEnv),
-                       connection->pError,
-                       connection->pServiceContext,
-                       (text *) 0,
-                       (ub4) 0,
-                       (text *) (*tdo)->value.str.val,
-                       (ub4)    (*tdo)->value.str.len,
-                       (CONST text *) 0, (ub4) 0,
-                       OCI_DURATION_SESSION,
-                       OCI_TYPEGET_ALL,
-                       &(coll->tdo));
+       connection->error = OCITypeByName(OCI(pEnv),
+                                                                         
+connection->pError,
+                                                                         
+connection->pServiceContext,
+                                                                         (text *) 0,
+                                                                         (ub4) 0,
+                                                                         (text *) 
+(*tdo)->value.str.val,
+                                                                         (ub4)    
+(*tdo)->value.str.len,
+                                                                         (CONST text 
+*) 0, (ub4) 0,
+                                                                         
+OCI_DURATION_SESSION,
+                                                                         
+OCI_TYPEGET_ALL,
+                                                                         
+&(coll->tdo));
     if (connection->error) {
         oci_error(connection->pError, "OCITypeByName", connection->error);
         RETURN_FALSE;
     }
 
-   connection->error = OCIHandleAlloc(OCI(pEnv), (dvoid **) &dschp1,
-                   (ub4) OCI_HTYPE_DESCRIBE,
-                   (size_t) 0, (dvoid **) 0);
+       connection->error = OCIHandleAlloc(OCI(pEnv), (dvoid **) &dschp1,
+                                                                          (ub4) 
+OCI_HTYPE_DESCRIBE,
+                                                                          (size_t) 0, 
+(dvoid **) 0);
 
     if (connection->error) {
         oci_error(connection->pError, "OCI_HTYPE_DESCRIBE", connection->error);
         RETURN_FALSE;
     }
-   connection->error = OCIDescribeAny(connection->pServiceContext, 
connection->pError, (dvoid *) coll->tdo,
-                  (ub4) 0, OCI_OTYPE_PTR, (ub1)1,
-                  (ub1) OCI_PTYPE_TYPE, dschp1);
+       connection->error = OCIDescribeAny(connection->pServiceContext, 
+connection->pError, (dvoid *) coll->tdo,
+                                                                          (ub4) 0, 
+OCI_OTYPE_PTR, (ub1)1,
+                                                                          (ub1) 
+OCI_PTYPE_TYPE, dschp1);
     if (connection->error) {
         oci_error(connection->pError, "OCI_OTYPE_PTR", connection->error);
         RETURN_FALSE;
     }
 
-   connection->error = OCIAttrGet((dvoid *) dschp1,
-                                  (ub4) OCI_HTYPE_DESCRIBE,
-                                  (dvoid *)&parmp1, (ub4 *)0, 
(ub4)OCI_ATTR_PARAM,connection->pError);
+       connection->error = OCIAttrGet((dvoid *) dschp1,
+                                                                  (ub4) 
+OCI_HTYPE_DESCRIBE,
+                                                                  (dvoid *)&parmp1, 
+(ub4 *)0, (ub4)OCI_ATTR_PARAM,connection->pError);
     if (connection->error) {
         oci_error(connection->pError, "OCI_ATTR_PARAM", connection->error);
         RETURN_FALSE;
     }
 
-   /* get the collection type code of the attribute */
-   connection->error = OCIAttrGet((dvoid*) parmp1, (ub4) OCI_DTYPE_PARAM,
-                      (dvoid*) &(coll->coll_typecode), (ub4 *) 0,
-                      (ub4) OCI_ATTR_COLLECTION_TYPECODE,
-                      connection->pError);
+       /* get the collection type code of the attribute */
+       connection->error = OCIAttrGet((dvoid*) parmp1, (ub4) OCI_DTYPE_PARAM,
+                                                                  (dvoid*) 
+&(coll->coll_typecode), (ub4 *) 0,
+                                                                  (ub4) 
+OCI_ATTR_COLLECTION_TYPECODE,
+                                                                  connection->pError);
     if (connection->error) {
         oci_error(connection->pError, "OCI_ATTR_COLLECTION_TYPECODE", 
connection->error);
         RETURN_FALSE;
     }
 
-   switch(coll->coll_typecode) {
-      case OCI_TYPECODE_VARRAY:
-        connection->error = OCIAttrGet((dvoid*) parmp1,
-                       (ub4) OCI_DTYPE_PARAM,
-                       (dvoid*) &parmp2, (ub4 *) 0,
-                       (ub4) OCI_ATTR_COLLECTION_ELEMENT,
-                       connection->pError);
-        if (connection->error) {
-            oci_error(connection->pError, "OCI_ATTR_COLLECTION_ELEMENT", 
connection->error);
-            RETURN_FALSE;
-        }
-        connection->error =  OCIAttrGet((dvoid*) parmp2,
-                       (ub4) OCI_DTYPE_PARAM,
-                       (dvoid*) &(coll->elem_ref), (ub4 *) 0,
-                       (ub4) OCI_ATTR_REF_TDO,
-                       connection->pError);
-        if (connection->error) {
-            oci_error(connection->pError, "OCI_ATTR_REF_TDO", connection->error);
-            RETURN_FALSE;
-        }
-        connection->error = OCITypeByRef(OCI(pEnv), connection->pError, 
coll->elem_ref,
-                       OCI_DURATION_SESSION,
-                       OCI_TYPEGET_HEADER, &(coll->element_type));
-        if (connection->error) {
-            oci_error(connection->pError, "OCI_TYPEGET_HEADER", connection->error);
-            RETURN_FALSE;
-        }
-
-        connection->error =  OCIAttrGet((dvoid*) parmp2,
-                       (ub4) OCI_DTYPE_PARAM,
-                       (dvoid*) &(coll->element_typecode), (ub4 *) 0,
-                       (ub4) OCI_ATTR_TYPECODE,
-                       connection->pError);
-        if (connection->error) {
-            oci_error(connection->pError, "OCI_ATTR_TYPECODE", connection->error);
-            RETURN_FALSE;
-        }
-        break;
-      default:
-        printf("Unknown Type\n");
-   }    
-
-  /* Create object to hold return table */
-  connection->error = OCIObjectNew(OCI(pEnv), 
-                connection->pError, 
-                connection->pServiceContext, 
-                OCI_TYPECODE_TABLE,
-                coll->tdo, 
-                (dvoid *)0, 
-                OCI_DURATION_DEFAULT,
-                TRUE, 
-                (dvoid **) &(coll->coll));
-     if (connection->error) {
-         oci_error(connection->pError, "OCIObjectNew", connection->error);
-         RETURN_FALSE;
-     }
+       switch(coll->coll_typecode) {
+          case OCI_TYPECODE_VARRAY:
+                  connection->error = OCIAttrGet((dvoid*) parmp1,
+                                                                                 
+(ub4) OCI_DTYPE_PARAM,
+                                                                                 
+(dvoid*) &parmp2, (ub4 *) 0,
+                                                                                 
+(ub4) OCI_ATTR_COLLECTION_ELEMENT,
+                                                                                 
+connection->pError);
+                  if (connection->error) {
+                          oci_error(connection->pError, 
+"OCI_ATTR_COLLECTION_ELEMENT", connection->error);
+                          RETURN_FALSE;
+                  }
+                  connection->error =  OCIAttrGet((dvoid*) parmp2,
+                                                                                  
+(ub4) OCI_DTYPE_PARAM,
+                                                                                  
+(dvoid*) &(coll->elem_ref), (ub4 *) 0,
+                                                                                  
+(ub4) OCI_ATTR_REF_TDO,
+                                                                                  
+connection->pError);
+                  if (connection->error) {
+                          oci_error(connection->pError, "OCI_ATTR_REF_TDO", 
+connection->error);
+                          RETURN_FALSE;
+                  }
+                  connection->error = OCITypeByRef(OCI(pEnv), connection->pError, 
+coll->elem_ref,
+                                                                                      
+ OCI_DURATION_SESSION,
+                                                                                      
+ OCI_TYPEGET_HEADER, &(coll->element_type));
+                  if (connection->error) {
+                          oci_error(connection->pError, "OCI_TYPEGET_HEADER", 
+connection->error);
+                          RETURN_FALSE;
+                  }
+
+                  connection->error =  OCIAttrGet((dvoid*) parmp2,
+                                                                                  
+(ub4) OCI_DTYPE_PARAM,
+                                                                                  
+(dvoid*) &(coll->element_typecode), (ub4 *) 0,
+                                                                                  
+(ub4) OCI_ATTR_TYPECODE,
+                                                                                  
+connection->pError);
+                  if (connection->error) {
+                          oci_error(connection->pError, "OCI_ATTR_TYPECODE", 
+connection->error);
+                          RETURN_FALSE;
+                  }
+                  break;
+          default:
+                  php_error(E_WARNING, "OCINewCollection - Unknown Type %d", 
+coll->coll_typecode);
+       }    
+
+       /* Create object to hold return table */
+       connection->error = OCIObjectNew(OCI(pEnv), 
+                                                                        
+connection->pError, 
+                                                                        
+connection->pServiceContext, 
+                                                                        
+OCI_TYPECODE_TABLE,
+                                                                        coll->tdo, 
+                                                                        (dvoid *)0, 
+                                                                        
+OCI_DURATION_DEFAULT,
+                                                                        TRUE, 
+                                                                        (dvoid **) 
+&(coll->coll));
+       if (connection->error) {
+               oci_error(connection->pError, "OCIObjectNew", connection->error);
+               RETURN_FALSE;
+       }
 
     object_init_ex(return_value, oci_coll_class_entry_ptr);
     add_property_resource(return_value, "collection",coll->id);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to