Re: [Libdbi-drivers-devel] oracle driver has no error checking

2007-11-06 Thread Balazs Scheidler

On Tue, 2007-11-06 at 09:40 +0100, Markus Hoenicka wrote:
 Hi,
 
 I'll be happy to apply any patch that adds the missing error checks.  
 Unfortunately I won't be able to verify that it works as I don't have  
 access to Oracle. I'd appreciate if anyone else with an Oracle  
 installation could test-drive the patches, just to make sure.
 
 Let me know when you have a working patch.

This one actually worked for me, for my limited needs.

Some additional cleanup would be useful though. (it logs a lot of things to 
stderr for instance).

diff --git a/drivers/oracle/dbd_oracle.c b/drivers/oracle/dbd_oracle.c
index 2796cd6..b034a2f 100755
--- a/drivers/oracle/dbd_oracle.c
+++ b/drivers/oracle/dbd_oracle.c
@@ -95,12 +95,13 @@ int dbd_connect(dbi_conn_t *conn)
const char *username =  dbi_conn_get_option(conn, username);
const char *password =  dbi_conn_get_option(conn, password);
const char *sid  =  dbi_conn_get_option(conn, dbname);
+   sword status;
   
if(! sid ) sid = getenv(ORACLE_SID);
 
/* OCI Environment Allocation */
 
-   if(OCIEnvCreate ((OCIEnv **) (Oconn-env), OCI_OBJECT, (dvoid *)0, 0, 
0, 0, (size_t)0, (dvoid **)0)) {
+   if(OCIEnvCreate ((OCIEnv **) (Oconn-env), OCI_DEFAULT, (dvoid *)0, 0, 
0, 0, (size_t)0, (dvoid **)0)) {
_dbd_internal_error_handler(conn, Connect::Unable to 
initialize environment, 0);
return -2;
}
@@ -119,8 +120,9 @@ int dbd_connect(dbi_conn_t *conn)
_dbd_internal_error_handler(conn, Connect::Unable to allocate 
SERVICE handlers., 0);
return -2;
}
-   if( OCILogon(Oconn-env, Oconn-err, (Oconn-svc), (CONST OraText*) 
username, 
-strlen(username),(CONST OraText*) password, 
strlen(password), sid, strlen(sid))) {
+   if( (status = OCILogon(Oconn-env, Oconn-err, (Oconn-svc), (CONST 
OraText*) username, 
+strlen(username),(CONST OraText*) password, 
strlen(password), sid, strlen(sid {
+   _checkerr(Oconn-err, status);
_dbd_internal_error_handler(conn, Connect::Unable to login to 
the database., 0);
return -2;
}
@@ -290,17 +292,22 @@ dbi_result_t *dbd_query_null(dbi_conn_t *conn, const char 
unsigned *statement, s

if( OCIStmtPrepare(stmt, Oconn-err, (char  *) statement,
   (ub4) st_length, (ub4) OCI_NTV_SYNTAX, (ub4) 
OCI_DEFAULT)) {
+OCIHandleFree(stmt, OCI_HTYPE_STMT);
return NULL;
}

OCIAttrGet(stmt, OCI_HTYPE_STMT, (dvoid *) stmttype,
   (ub4 *) 0, (ub4) OCI_ATTR_STMT_TYPE, Oconn-err);

-   OCIStmtExecute(Oconn-svc, stmt, Oconn-err, 
+   status = OCIStmtExecute(Oconn-svc, stmt, Oconn-err, 
   (ub4) (stmttype == OCI_STMT_SELECT ? 0 : 1), 
   (ub4) 0, (CONST OCISnapshot *) NULL, (OCISnapshot *) 
NULL, 
   MY_OCI_STMT_SCROLLABLE_READONLY);
 
+   if( status != OCI_SUCCESS) {
+OCIHandleFree(stmt, OCI_HTYPE_STMT);
+   return NULL;
+   }

if( stmttype == OCI_STMT_SELECT) { 
 
@@ -355,7 +362,6 @@ dbi_result_t *dbd_query_null(dbi_conn_t *conn, const char 
unsigned *statement, s
 OCIAttrGet(param, (ub4) OCI_DTYPE_PARAM,
otype,(ub4 *) 0, (ub4) OCI_ATTR_DATA_TYPE,
(OCIError *) Oconn-err  );
-fprintf(stderr, ***%s()-%d\n, __func__, otype);
 
 OCIAttrGet((dvoid*) param, (ub4) OCI_DTYPE_PARAM,
(dvoid**) col_name,(ub4 *) col_name_len, (ub4) 
OCI_ATTR_NAME,


-- 
Bazsi


-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
Libdbi-drivers-devel mailing list
Libdbi-drivers-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libdbi-drivers-devel


Re: [Libdbi-drivers-devel] oracle driver has no error checking

2007-11-06 Thread Markus Hoenicka
Hi,

I've applied your patch, or rather, I tried to. For reasons which are
beyond me patch refused 3 out of 4 hunks. I've applied them
manually. Could you please check the current cvs version (1.21)
whether it works ok, just to make sure I didn't screw up anything.

regards,
Markus

Balazs Scheidler writes:
  This one actually worked for me, for my limited needs.
  

-- 
Markus Hoenicka
[EMAIL PROTECTED]
(Spam-protected email: replace the quadrupeds with mhoenicka)
http://www.mhoenicka.de


-
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now  http://get.splunk.com/
___
Libdbi-drivers-devel mailing list
Libdbi-drivers-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libdbi-drivers-devel