CVS update: php3/functions

From: Date: Tue, 30 Mar 1999 10:20:15 +0000
Subject: CVS update: php3/functions
Groups: php.dev 
Request: Send a blank email to php-dev+get-4830@lists.php.net to get a copy of this message
Date: Tuesday March 30, 1999 @ 5:20 Author: thies Update of /repository/php3/functions In directory asf:/u/temp/cvs-serv16700 Modified Files: oci8.c php3_oci8.h Log Message: some cleanup, persistend connections still are NOT great!!! Index: php3/functions/oci8.c diff -c php3/functions/oci8.c:1.69 php3/functions/oci8.c:1.70 *** php3/functions/oci8.c:1.69 Mon Mar 15 14:04:36 1999 --- php3/functions/oci8.c Tue Mar 30 05:20:15 1999 *************** *** 33,39 **** #define OCI8_USE_EMALLOC 0 /* set this to 1 if you want to use the php memory manager! */ ! /* $Id: oci8.c,v 1.69 1999/03/15 19:04:36 thies Exp $ */ /* TODO list: * --- 33,39 ---- #define OCI8_USE_EMALLOC 0 /* set this to 1 if you want to use the php memory manager! */ ! /* $Id: oci8.c,v 1.70 1999/03/30 10:20:15 thies Exp $ */ /* TODO list: * *************** *** 426,431 **** --- 426,433 ---- int php3_rshutdown_oci8() { + oci8_debug("php3_rshutdown_oci8"); + /* XXX free all statements, rollback all outstanding transactions */ return SUCCESS; } *************** *** 512,519 **** { OCI8_TLS_VARS; ! oci8_debug("oci8_free_stmt: id=%d last_query=\"%s\".",statement->id, ! (statement->last_query?(char*)statement->last_query:"???")); if (statement->pStmt) { OCIHandleFree(statement->pStmt, OCI_HTYPE_STMT); --- 514,524 ---- { OCI8_TLS_VARS; ! oci8_debug("oci8_free_stmt: id=%d last_query=\"%s\" conn=%d persistent=%d.", ! statement->id, ! (statement->last_query?(char*)statement->last_query:"???"), ! statement->conn->id, ! statement->conn->persistent); if (statement->pStmt) { OCIHandleFree(statement->pStmt, OCI_HTYPE_STMT); *************** *** 590,609 **** static void oci8_close_conn(oci8_connection *connection) { - int persistent = 0; - OCI8_TLS_VARS; ! oci8_debug("oci8_close_conn: id=%d persistent=%d",connection->id,persistent); ! ! _php3_hash_destroy(connection->descriptors); ! if (persistent) { ! free(connection->descriptors); ! } else { ! efree(connection->descriptors); } connection->open = 0; oci8_error(connection->pError,"OCISessionEnd", --- 595,616 ---- static void oci8_close_conn(oci8_connection *connection) { OCI8_TLS_VARS; ! oci8_debug("oci8_close_conn: id=%d persistent=%d",connection->id,connection->persistent); ! if (connection->descriptors) { ! _php3_hash_destroy(connection->descriptors); } + if (connection->descriptors) { + if (connection->persistent) { + free(connection->descriptors); + } else { + efree(connection->descriptors); + } + } + connection->open = 0; oci8_error(connection->pError,"OCISessionEnd", *************** *** 626,632 **** OCI8_GLOBAL(php3_oci8_module).num_links--; ! if (persistent) { free(connection); } else { efree(connection); --- 633,639 ---- OCI8_GLOBAL(php3_oci8_module).num_links--; ! if (connection->persistent) { free(connection); } else { efree(connection); *************** *** 910,916 **** statement->conn = connection; statement->id = php3_list_insert(statement, OCI8_GLOBAL(php3_oci8_module).le_stmt); ! oci8_debug("oci8_parse \"%s\" id=%d",query,statement->id); return statement->id; } --- 917,927 ---- statement->conn = connection; statement->id = php3_list_insert(statement, OCI8_GLOBAL(php3_oci8_module).le_stmt); ! oci8_debug("oci8_parse \"%s\" id=%d conn=%d persistent=%d", ! query, ! statement->id, ! statement->conn->id, ! statement->conn->persistent); return statement->id; } *************** *** 1537,1543 **** (ub4) OCI_ATTR_USERNAME, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_USERNAME", error); ! goto ERROR; } if (OCIAttrSet((dvoid *) session->pSession, --- 1548,1554 ---- (ub4) OCI_ATTR_USERNAME, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_USERNAME", error); ! goto CLEANUP; } if (OCIAttrSet((dvoid *) session->pSession, *************** *** 1547,1553 **** (ub4) OCI_ATTR_PASSWORD, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_PASSWORD", error); ! goto ERROR; } if (OCIAttrSet((dvoid *) session->pServiceContext, --- 1558,1564 ---- (ub4) OCI_ATTR_PASSWORD, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_PASSWORD", error); ! goto CLEANUP; } if (OCIAttrSet((dvoid *) session->pServiceContext, *************** *** 1557,1563 **** (ub4) OCI_ATTR_SERVER, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_SERVER", error); ! goto ERROR; } if (OCISessionBegin(session->pServiceContext, --- 1568,1574 ---- (ub4) OCI_ATTR_SERVER, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_SERVER", error); ! goto CLEANUP; } if (OCISessionBegin(session->pServiceContext, *************** *** 1566,1572 **** (ub4) OCI_CRED_RDBMS, (ub4) OCI_DEFAULT)) { oci8_error(session->pError, "OCISessionBegin", error); ! goto ERROR; } if (OCIAttrSet((dvoid *) session->pServiceContext, --- 1577,1583 ---- (ub4) OCI_CRED_RDBMS, (ub4) OCI_DEFAULT)) { oci8_error(session->pError, "OCISessionBegin", error); ! goto CLEANUP; } if (OCIAttrSet((dvoid *) session->pServiceContext, *************** *** 1576,1590 **** (ub4) OCI_ATTR_SESSION, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_SESSION", error); ! goto ERROR; } session->id = php3_list_insert(session, OCI8_GLOBAL(php3_oci8_module).le_session); return session; ! ERROR: efree(session); return 0; } --- 1587,1602 ---- (ub4) OCI_ATTR_SESSION, session->pError)) { oci8_error(session->pError, "OCIAttrSet OCI_ATTR_SESSION", error); ! goto CLEANUP; } session->id = php3_list_insert(session, OCI8_GLOBAL(php3_oci8_module).le_session); return session; ! CLEANUP: efree(session); + return 0; } *************** *** 1659,1665 **** text *username, *password, *dbname; pval *userParam, *passParam, *dbParam; ub4 username_len, password_len, dbname_len; ! oci8_connection *connection; sword error; char *hashed_details; int hashed_details_length; --- 1671,1677 ---- text *username, *password, *dbname; pval *userParam, *passParam, *dbParam; ub4 username_len, password_len, dbname_len; ! oci8_connection *connection = 0; sword error; char *hashed_details; int hashed_details_length; *************** *** 1704,1711 **** if (_php3_hash_find(plist, hashed_details, hashed_details_length+1, (void **) &le)==SUCCESS) { /* got you!!! */ if (le->type != OCI8_GLOBAL(php3_oci8_module).le_pconn) { ! efree(hashed_details); ! RETURN_FALSE; } /* XXX we should do something like an ping here to check for dead connections!!! */ --- 1716,1722 ---- if (_php3_hash_find(plist, hashed_details, hashed_details_length+1, (void **) &le)==SUCCESS) { /* got you!!! */ if (le->type != OCI8_GLOBAL(php3_oci8_module).le_pconn) { ! goto CLEANUP; } /* XXX we should do something like an ping here to check for dead connections!!! */ *************** *** 1714,1732 **** oci8_debug("oci8_do_connect: persistent connection id=%d",connection->id); - RETVAL_LONG(connection->id); efree(hashed_details); ! return; } else { if (OCI8_GLOBAL(php3_oci8_module).max_links!=-1 && OCI8_GLOBAL(php3_oci8_module).num_links>=OCI8_GLOBAL(php3_oci8_module).max_links) { php3_error(E_WARNING,"OCI8: Too many open links (%d)",OCI8_GLOBAL(php3_oci8_module).num_links); ! efree(hashed_details); ! RETURN_FALSE; } if (OCI8_GLOBAL(php3_oci8_module).max_persistent!=-1 && OCI8_GLOBAL(php3_oci8_module).num_persistent>=OCI8_GLOBAL(php3_oci8_module).max_persistent) { php3_error(E_WARNING,"OCI8: Too many open persistent links (%d)",OCI8_GLOBAL(php3_oci8_module).num_persistent); ! efree(hashed_details); ! RETURN_FALSE; } /* fall thru an go ahead */ --- 1725,1741 ---- oci8_debug("oci8_do_connect: persistent connection id=%d",connection->id); efree(hashed_details); ! ! RETURN_LONG(connection->id); } else { if (OCI8_GLOBAL(php3_oci8_module).max_links!=-1 && OCI8_GLOBAL(php3_oci8_module).num_links>=OCI8_GLOBAL(php3_oci8_module).max_links) { php3_error(E_WARNING,"OCI8: Too many open links (%d)",OCI8_GLOBAL(php3_oci8_module).num_links); ! goto CLEANUP; } if (OCI8_GLOBAL(php3_oci8_module).max_persistent!=-1 && OCI8_GLOBAL(php3_oci8_module).num_persistent>=OCI8_GLOBAL(php3_oci8_module).max_persistent) { php3_error(E_WARNING,"OCI8: Too many open persistent links (%d)",OCI8_GLOBAL(php3_oci8_module).num_persistent); ! goto CLEANUP; } /* fall thru an go ahead */ *************** *** 1745,1750 **** --- 1754,1761 ---- if (connection == NULL) { RETURN_OUT_OF_MEMORY; } + + connection->persistent = persistent; /* Set up the Oracle environment. */ *************** *** 1766,1796 **** error = OCIAttrSet((dvoid *) connection->pSession,(ub4) OCI_HTYPE_SESSION, (dvoid *) username, (ub4) username_len, (ub4) OCI_ATTR_USERNAME, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_USERNAME", error); ! RETURN_FALSE; } error = OCIAttrSet((dvoid *) connection->pSession,(ub4) OCI_HTYPE_SESSION, (dvoid *) password, (ub4) password_len, (ub4) OCI_ATTR_PASSWORD, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_PASSWORD", error); ! RETURN_FALSE; } error = OCIAttrSet((dvoid *)connection->pServiceContext, (ub4) OCI_HTYPE_SVCCTX,(dvoid *) connection->pServer, (ub4) 0, (ub4) OCI_ATTR_SERVER, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_SERVER", error); ! RETURN_FALSE; } error = OCISessionBegin(connection->pServiceContext,connection->pError,connection->pSession, (ub4) OCI_CRED_RDBMS, (ub4) OCI_DEFAULT); if (error) { oci8_error(connection->pError, "OCISessionBegin", error); ! RETURN_FALSE; } error = OCIAttrSet((dvoid *)connection->pServiceContext,(ub4) OCI_HTYPE_SVCCTX, (dvoid *) connection->pSession, (ub4) 0, (ub4) OCI_ATTR_SESSION, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_SESSION", error); ! RETURN_FALSE; } connection->open = 1; --- 1777,1807 ---- error = OCIAttrSet((dvoid *) connection->pSession,(ub4) OCI_HTYPE_SESSION, (dvoid *) username, (ub4) username_len, (ub4) OCI_ATTR_USERNAME, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_USERNAME", error); ! goto CLEANUP; } error = OCIAttrSet((dvoid *) connection->pSession,(ub4) OCI_HTYPE_SESSION, (dvoid *) password, (ub4) password_len, (ub4) OCI_ATTR_PASSWORD, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_PASSWORD", error); ! goto CLEANUP; } error = OCIAttrSet((dvoid *)connection->pServiceContext, (ub4) OCI_HTYPE_SVCCTX,(dvoid *) connection->pServer, (ub4) 0, (ub4) OCI_ATTR_SERVER, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_SERVER", error); ! goto CLEANUP; } error = OCISessionBegin(connection->pServiceContext,connection->pError,connection->pSession, (ub4) OCI_CRED_RDBMS, (ub4) OCI_DEFAULT); if (error) { oci8_error(connection->pError, "OCISessionBegin", error); ! goto CLEANUP; } error = OCIAttrSet((dvoid *)connection->pServiceContext,(ub4) OCI_HTYPE_SVCCTX, (dvoid *) connection->pSession, (ub4) 0, (ub4) OCI_ATTR_SESSION, connection->pError); if (error) { oci8_error(connection->pError, "OCIAttrSet OCI_ATTR_SESSION", error); ! goto CLEANUP; } connection->open = 1; *************** *** 1804,1810 **** if (!connection->descriptors || _php3_hash_init(connection->descriptors, 13, NULL,(void (*)(void *))oci8_free_descr, 0) == FAILURE) { /* out of memory */ ! RETURN_FALSE; } OCI8_GLOBAL(php3_oci8_module).num_links++; --- 1815,1821 ---- if (!connection->descriptors || _php3_hash_init(connection->descriptors, 13, NULL,(void (*)(void *))oci8_free_descr, 0) == FAILURE) { /* out of memory */ ! goto CLEANUP; } OCI8_GLOBAL(php3_oci8_module).num_links++; *************** *** 1818,1825 **** if (_php3_hash_update(plist, hashed_details, hashed_details_length+1, (void *) &new_le, sizeof(list_entry), NULL)==FAILURE) { /* XXX close connection here */ ! efree(hashed_details); ! RETURN_FALSE; } OCI8_GLOBAL(php3_oci8_module).num_persistent++; --- 1829,1835 ---- if (_php3_hash_update(plist, hashed_details, hashed_details_length+1, (void *) &new_le, sizeof(list_entry), NULL)==FAILURE) { /* XXX close connection here */ ! goto CLEANUP; } OCI8_GLOBAL(php3_oci8_module).num_persistent++; *************** *** 1828,1840 **** connection->id = php3_list_insert(connection, OCI8_GLOBAL(php3_oci8_module).le_conn); } ! oci8_debug("OCILogon: new connection id=%d",connection->id); efree(hashed_details); OCI8_GLOBAL(php3_oci8_module).num_links++; ! RETVAL_LONG(connection->id); } /* }}} */ --- 1838,1861 ---- connection->id = php3_list_insert(connection, OCI8_GLOBAL(php3_oci8_module).le_conn); } ! oci8_debug("OCILogon: new connection id=%d persistent=%d",connection->id,connection->persistent); efree(hashed_details); OCI8_GLOBAL(php3_oci8_module).num_links++; + + RETURN_LONG(connection->id); + + CLEANUP: + if (hashed_details) { + efree(hashed_details); + } + + if (connection) { + oci8_close_conn(connection); + } ! RETURN_FALSE; } /* }}} */ *************** *** 1900,1906 **** define->type = ocitype; define->pval = var; ! RETVAL_TRUE; } /* }}} */ --- 1921,1927 ---- define->type = ocitype; define->pval = var; ! RETURN_TRUE; } /* }}} */ *************** *** 2024,2030 **** RETURN_FALSE; } ! RETVAL_TRUE; } /* }}} */ --- 2045,2051 ---- RETURN_FALSE; } ! RETURN_TRUE; } /* }}} */ *************** *** 2346,2352 **** if (outcol == NULL) { RETURN_FALSE; } ! RETVAL_STRINGL(outcol->name, outcol->name_len, 1); } /* }}} */ --- 2367,2374 ---- if (outcol == NULL) { RETURN_FALSE; } ! ! RETURN_STRINGL(outcol->name, outcol->name_len, 1); } /* }}} */ *************** *** 2373,2379 **** if (outcol == NULL) { RETURN_FALSE; } ! RETVAL_LONG(outcol->size4); } /* }}} */ --- 2395,2401 ---- if (outcol == NULL) { RETURN_FALSE; } ! RETURN_LONG(outcol->size4); } /* }}} */ *************** *** 2464,2472 **** RETURN_FALSE; } if (outcol->indicator == -1) { ! RETVAL_TRUE; } else { ! RETVAL_FALSE; } } --- 2486,2494 ---- RETURN_FALSE; } if (outcol->indicator == -1) { ! RETURN_TRUE; } else { ! RETURN_FALSE; } } *************** *** 2519,2527 **** } if (oci8_execute(statement, "OCIExecute",execmode)) { ! RETVAL_TRUE; } else { ! RETVAL_FALSE; } } --- 2541,2549 ---- } if (oci8_execute(statement, "OCIExecute",execmode)) { ! RETURN_TRUE; } else { ! RETURN_FALSE; } } *************** *** 2547,2555 **** RETURN_FALSE; } if (oci8_fetch(statement, nrows, "OCIFetch")) { ! RETVAL_TRUE; } else { ! RETVAL_FALSE; } } --- 2569,2577 ---- RETURN_FALSE; } if (oci8_fetch(statement, nrows, "OCIFetch")) { ! RETURN_TRUE; } else { ! RETURN_FALSE; } } *************** *** 2616,2622 **** } } ! RETVAL_LONG(statement->ncolumns); } /* }}} */ --- 2638,2644 ---- } } ! RETURN_LONG(statement->ncolumns); } /* }}} */ *************** *** 2683,2689 **** efree(columns); efree(outarrs); ! RETVAL_LONG(rows); } /* }}} */ --- 2705,2711 ---- efree(columns); efree(outarrs); ! RETURN_LONG(rows); } /* }}} */ *************** *** 2708,2714 **** php3_list_delete(stmt->value.lval); ! RETVAL_TRUE; } /* }}} */ --- 2730,2736 ---- php3_list_delete(stmt->value.lval); ! RETURN_TRUE; } /* }}} */ *************** *** 2743,2752 **** } if (php3_list_delete(index) == SUCCESS) { ! RETVAL_TRUE; } else { oci8_debug("OCILogoff: php3_list_delete failed."); ! RETVAL_FALSE; } } --- 2765,2774 ---- } if (php3_list_delete(index) == SUCCESS) { ! RETURN_TRUE; } else { oci8_debug("OCILogoff: php3_list_delete failed."); ! RETURN_FALSE; } } *************** *** 2838,2846 **** if (session) { ! RETVAL_LONG(session->id); } else { ! RETVAL_FALSE; } } --- 2860,2868 ---- if (session) { ! RETURN_LONG(session->id); } else { ! RETURN_FALSE; } } *************** *** 2947,2953 **** if (statement == NULL) { RETURN_FALSE; } ! RETVAL_LONG(statement->ncolumns); } /* }}} */ --- 2969,2975 ---- if (statement == NULL) { RETURN_FALSE; } ! RETURN_LONG(statement->ncolumns); } /* }}} */ *************** *** 2973,2979 **** RETURN_FALSE; } ! RETVAL_LONG(oci8_parse(connection, query->value.str.val, query->value.str.len, list)); --- 2995,3001 ---- RETURN_FALSE; } ! RETURN_LONG(oci8_parse(connection, query->value.str.val, query->value.str.len, list)); *************** *** 3042,3048 **** oci8_error(connection->pError, "OCIServerVersion", error); RETURN_FALSE; } ! RETVAL_STRING(version,1); } /* }}} */ --- 3064,3070 ---- oci8_error(connection->pError, "OCIServerVersion", error); RETURN_FALSE; } ! RETURN_STRING(version,1); } /* }}} */ Index: php3/functions/php3_oci8.h diff -c php3/functions/php3_oci8.h:1.34 php3/functions/php3_oci8.h:1.35 *** php3/functions/php3_oci8.h:1.34 Mon Mar 15 14:04:36 1999 --- php3/functions/php3_oci8.h Tue Mar 30 05:20:15 1999 *************** *** 68,73 **** --- 68,74 ---- typedef struct { int id; + int persistent; OCIEnv *pEnv; OCIServer *pServer; OCISvcCtx *pServiceContext; *************** *** 166,172 **** /* this one has to be changed to include persistent connections as well */ # define OCI8_SERVER_TYPE(x) (((x)==OCI8_GLOBAL(php3_oci8_module).le_server) || ((x)==OCI8_GLOBAL(php3_oci8_module).le_pserver)) ! # define OCI8_CONN_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_conn) # define OCI8_PCONN_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_pconn) # define OCI8_STMT_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_stmt) # define OCI8_DESCR_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_descr) --- 167,173 ---- /* this one has to be changed to include persistent connections as well */ # define OCI8_SERVER_TYPE(x) (((x)==OCI8_GLOBAL(php3_oci8_module).le_server) || ((x)==OCI8_GLOBAL(php3_oci8_module).le_pserver)) ! # define OCI8_CONN_TYPE(x) (((x)==OCI8_GLOBAL(php3_oci8_module).le_conn) || ((x)==OCI8_GLOBAL(php3_oci8_module).le_pconn)) # define OCI8_PCONN_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_pconn) # define OCI8_STMT_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_stmt) # define OCI8_DESCR_TYPE(x) ((x)==OCI8_GLOBAL(php3_oci8_module).le_descr) -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#4830) next »