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]