diff --git a/src/modules/Oracle/oracle.c b/src/modules/Oracle/oracle.c index d34e0c55a1400d314aeb25e7a2edf86cfe3de7c9..59ad2f4e9a1b563b7b7f9a07d175bc0bfd164569 100644 --- a/src/modules/Oracle/oracle.c +++ b/src/modules/Oracle/oracle.c @@ -1,5 +1,5 @@ /* - * $Id: oracle.c,v 1.33 2000/04/04 20:32:38 hubbe Exp $ + * $Id: oracle.c,v 1.34 2000/04/04 20:37:00 hubbe Exp $ * * Pike interface to Oracle databases. * @@ -41,13 +41,13 @@ #include <oci.h> #include <math.h> -RCSID("$Id: oracle.c,v 1.33 2000/04/04 20:32:38 hubbe Exp $"); +RCSID("$Id: oracle.c,v 1.34 2000/04/04 20:37:00 hubbe Exp $"); #define BLOB_FETCH_CHUNK 16384 -/* #define ORACLE_DEBUG */ -#define ORACLE_USE_THREADS +#define ORACLE_DEBUG +/* #define ORACLE_USE_THREADS*/ #define SERIALIZE_CONNECT #ifndef ORACLE_USE_THREADS @@ -144,11 +144,23 @@ DEFINE_MUTEX(oracle_serialization_mutex); #define PARENTOF(X) ((X)->parent) +#ifdef PIKE_DEBUG +static struct object *do_check_prog(struct object *o, struct program *p, char *prog) +{ + if(get_storage(o,p) != o->storage) + fatal("Wrong program, expected %s!\n",prog); + return o; +} +#define check_prog(X,Y) do_check_prog((X),Y,#Y) +#else +#define check_prog(X,Y) (X) +#endif + #define THIS_DBCON ((struct dbcon *)(CURRENT_STORAGE)) -#define THIS_QUERY_DBCON ((struct dbcon *)(PARENTOF( THISOBJ )->storage)) -#define THIS_RESULT_DBCON ((struct dbcon *)(PARENTOF(PARENTOF( THISOBJ ))->storage)) +#define THIS_QUERY_DBCON ((struct dbcon *)(check_prog(PARENTOF(THISOBJ),oracle_program)->storage)) +#define THIS_RESULT_DBCON ((struct dbcon *)(check_prog(PARENTOF(PARENTOF( THISOBJ )),oracle_program)->storage)) #define THIS_QUERY ((struct dbquery *)(CURRENT_STORAGE)) -#define THIS_RESULT_QUERY ((struct dbquery *)(PARENTOF(THISOBJ )->storage)) +#define THIS_RESULT_QUERY ((struct dbquery *)(check_prog(PARENTOF(THISOBJ ),compile_query_program)->storage)) #define THIS_RESULT ((struct dbresult *)(CURRENT_STORAGE)) #define THIS_RESULTINFO ((struct dbresultinfo *)(CURRENT_STORAGE)) #define THIS_DBDATE ((struct dbdate *)(CURRENT_STORAGE)) @@ -878,7 +890,7 @@ static void f_fetch_row(INT32 args) struct dbcon *dbcon = THIS_RESULT_DBCON; #ifdef ORACLE_DEBUG -/* fprintf(stderr,"%s ..",__FUNCTION__); */ + fprintf(stderr,"%s ..",__FUNCTION__); #endif pop_n_elems(args); @@ -890,11 +902,17 @@ static void f_fetch_row(INT32 args) } THREADS_ALLOW(); +#ifdef ORACLE_DEBUG + fprintf(stderr,"OCIStmtFetch\n"); +#endif rc=OCIStmtFetch(dbquery->statement, dbcon->error_handle, 1, OCI_FETCH_NEXT, OCI_DEFAULT); +#ifdef ORACLE_DEBUG + fprintf(stderr,"OCIStmtFetch done\n"); +#endif THREADS_DISALLOW(); if(rc==OCI_NO_DATA) @@ -917,7 +935,6 @@ static void f_fetch_row(INT32 args) info=(struct dbresultinfo *)(dbquery->field_info->item[i].u.object->storage); /* Extract data from 'info' */ - push_inout_value(& info->data); } }