develooper Front page | perl.dbd.oracle.changes | Postings from October 2011

[svn:dbd-oracle] r14948 - dbd-oracle/branches/FAN

From:
byterock
Date:
October 14, 2011 19:51
Subject:
[svn:dbd-oracle] r14948 - dbd-oracle/branches/FAN
Message ID:
20111015025123.1FBB0184B86@xx12.develooper.com
Author: byterock
Date: Fri Oct 14 19:51:21 2011
New Revision: 14948

Modified:
   dbd-oracle/branches/FAN/dbdimp.c
   dbd-oracle/branches/FAN/dbdimp.h
   dbd-oracle/branches/FAN/oci8.c

Log:
a sort of working bit

Modified: dbd-oracle/branches/FAN/dbdimp.c
==============================================================================
--- dbd-oracle/branches/FAN/dbdimp.c	(original)
+++ dbd-oracle/branches/FAN/dbdimp.c	Fri Oct 14 19:51:21 2011
@@ -32,7 +32,6 @@
 #endif
 
 DBISTATE_DECLARE;
-
 int ora_fetchtest;	/* intrnal test only, not thread safe */
 int is_extproc	  	  = 0; /* not ProC but ExtProc.pm */
 int dbd_verbose		  = 0; /* DBD only debugging*/
@@ -203,7 +202,7 @@
 int
 dbd_discon_all(SV *drh, imp_drh_t *imp_drh)
 {
-	dTHR;
+	
 	dTHX;
 	/* The disconnect_all concept is flawed and needs more work */
 	if (!PL_dirty && !SvTRUE(perl_get_sv("DBI::PERL_ENDING",0))) {
@@ -386,7 +385,7 @@
 int
 dbd_db_login6(SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *uid, char *pwd, SV *attr)
 {
-	dTHR;
+	
 	dTHX;
 	sword status;
 	SV **svp;
@@ -438,6 +437,25 @@
     else {
 		OCIAttrSet_log_stat(imp_dbh->seshp,OCI_HTYPE_SESSION,(text*)"DBDO1.28",7,OCI_ATTR_DRIVER_NAME,imp_dbh->errhp, status);
 	}
+
+   /* HA Events */
+
+        imp_dbh->using_ha = 0;
+
+        if (DBD_ATTRIB_TRUE(attr,"ora_ha",6,svp)){
+                imp_dbh->using_ha = 1;
+
+
+                if ((svp=DBD_ATTRIB_GET_SVP(attr, "ora_ha_function",  15)) && SvOK(*svp)) {
+                        STRLEN  svp_len;
+                        if (!SvPOK(*svp))
+                                croak("ora_ha_function is not a string");
+                        imp_dbh->ha_function = (char *) SvPV (*svp, svp_len );
+
+                }
+        }
+
+
 #endif /*ORA_OCI_112*/
 
 	if ((svp=DBD_ATTRIB_GET_SVP(attr, "ora_action", 10)) && SvOK(*svp)) {
@@ -478,6 +496,7 @@
     }
 
     /* TAF Events */
+     
 	imp_dbh->using_taf = 0;
 
 	if (DBD_ATTRIB_TRUE(attr,"ora_taf",7,svp)){
@@ -588,14 +607,11 @@
 dbd_verbose=15;
     if (!imp_dbh->envhp ) {
 		SV **init_mode_sv;
-		ub4 init_mode = OCI_EVENTS|OCI_OBJECT;	/* needed for LOBs (8.0.4)	*/
-		PerlIO_printf(DBILOGFP,"HA OCI_EVENTS=%d.\n", OCI_EVENTS);
-                PerlIO_printf(DBILOGFP,"HA OCI_OBJECT=%d.\n",OCI_OBJECT);
+		ub4 init_mode = OCI_THREADED|OCI_EVENTS|OCI_OBJECT;	/* needed for LOBs (8.0.4)	*/
 
                 DBD_ATTRIB_GET_IV(attr, "ora_init_mode",13, init_mode_sv, init_mode);
 
-PerlIO_printf(DBILOGFP,"HA init mode=%d.\n",init_mode);
-		{
+	        {	
 			size_t rsize = 0;
 			/* Get CLIENT char and nchar charset id values */
 			OCINlsEnvironmentVariableGet_log_stat( &charsetid,(size_t) 0, OCI_NLS_CHARSET_ID, 0, &rsize ,status );
@@ -632,9 +648,11 @@
 			form attribute.
 			}*/
 
-			OCIEnvNlsCreate_log_stat( &imp_dbh->envhp, init_mode, 0, NULL, NULL, NULL, 0, 0,
+			OCIEnvNlsCreate_log_stat( &imp_dbh->envhp,OCI_EVENTS|OCI_THREADED,  (dvoid *)  0,(dvoid * (*)(dvoid *,size_t)) 0, (dvoid * (*)(dvoid *, dvoid *, size_t)) 0,  (void (*)(dvoid *, dvoid *)) 0,  (size_t)0, (dvoid **)0,
 				charsetid, ncharsetid, status );
 
+ PerlIO_printf(DBILOGFP, " well I am here 1\n");
+
 			if (status != OCI_SUCCESS) {
 				oci_error(dbh, NULL, status,
 					"OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var  or PATH (Windows) and or NLS settings, permissions, etc.");
@@ -673,7 +691,8 @@
 				if (new_charsetid) charsetid = new_charsetid;
 				if (new_ncharsetid) ncharsetid = new_ncharsetid;
 				imp_dbh->envhp = NULL;
-				OCIEnvNlsCreate_log_stat( &imp_dbh->envhp, init_mode, 0, NULL, NULL, NULL, 0, 0,
+PerlIO_printf(DBILOGFP, " well I am here 2\n");
+				OCIEnvNlsCreate_log_stat( &imp_dbh->envhp, OCI_EVENTS, 0, NULL, NULL, NULL, 0, 0,
 							charsetid, ncharsetid, status );
 				if (status != OCI_SUCCESS) {
 					oci_error(dbh, NULL, status,
@@ -896,15 +915,7 @@
 
     /* set up TAF callback if wanted */
 
-  
-    status = reg_ha_callback(imp_dbh);
-
-  if (status != OCI_SUCCESS) {
-                        oci_error(dbh, NULL, status,
-                                "Setting ha Callback Failed! ");
-                        return 0;
-                }
-dbd_verbose=0;
+ 
 
     if (imp_dbh->using_taf){
 		bool	can_taf;
@@ -926,6 +937,26 @@
 		}
 	}
 
+#ifdef ORA_OCI_112
+	/* set up HA evnets callback if requested */
+
+         if (imp_dbh->using_ha){
+                
+                if (DBIS->debug >= 4 || dbd_verbose >= 4 ) {
+                	PerlIO_printf(DBILOGFP,"Setting up HA Event Callback!");
+                }
+
+                status = reg_ha_callback(imp_dbh);
+
+                if (status != OCI_SUCCESS) {
+                        oci_error(dbh, NULL, status,
+                                "Setting HA Event Callback Failed! ");
+                        return 0;
+                }
+        }
+
+dbd_verbose =0;
+#endif /* ORA_OCI_112 */
 	return 1;
 }
 
@@ -1027,7 +1058,7 @@
 dbd_db_disconnect(SV *dbh, imp_dbh_t *imp_dbh)
 {
 	dTHX;
-	dTHR;
+	
 	int refcnt = 1 ;
 
 #if defined(USE_ITHREADS) && defined(PERL_MAGIC_shared_scalar)
@@ -1102,6 +1133,18 @@
 
 		}
 #ifdef ORA_OCI_112
+
+                if (imp_dbh->using_ha){
+                        OCIFocbkStruct  ha_failover;
+                        ha_failover.fo_ctx = NULL;
+                        ha_failover.callback_function = NULL;
+                        OCIAttrSet_log_stat(imp_dbh->srvhp, (ub4) OCI_HTYPE_SERVER,
+                                                        (dvoid *) &ha_failover, (ub4) 0,
+                                                        (ub4) OCI_ATTR_FOCBK, imp_dbh->errhp, status);
+
+                }
+                 
+
 		if (imp_dbh->using_drcp) {
 			OCIHandleFree_log_stat(imp_dbh->authp, OCI_HTYPE_SESSION,status);
 			OCISessionPoolDestroy_log_stat(imp_dbh->poolhp, imp_dbh->errhp,status);
@@ -1161,6 +1204,13 @@
 	else if (kl==13 && strEQ(key, "ora_drcp_incr") ) {
 		imp_dbh->pool_incr = SvIV (valuesv);
 	}
+        else if (kl==6 && strEQ(key, "ora_ha") ) {
+                imp_dbh->using_ha = 1;
+        }
+        else if (kl==15 && strEQ(key, "ora_ha_function") ) {
+                        imp_dbh->ha_function = (char *) SvPV (valuesv, vl );
+        }
+
 #endif
 	else if (kl==7 && strEQ(key, "ora_taf") ) {
 		imp_dbh->using_taf = 1;
@@ -1280,6 +1330,12 @@
 	else if (kl==13 && strEQ(key, "ora_drcp_incr") ) {
 		retsv = newSViv(imp_dbh->pool_incr);
 	}
+        else if (kl==6 && strEQ(key, "ora_ha") ) {
+                retsv = newSViv(imp_dbh->using_ha);
+        }
+        else if (kl==15 && strEQ(key, "ora_ha_function") ) {
+                retsv = newSVpv((char *)imp_dbh->ha_function,0);
+        }
 #endif
 	else if (kl==7 && strEQ(key, "ora_taf") ) {
 		retsv = newSViv(imp_dbh->using_taf);
@@ -1357,7 +1413,7 @@
 createxmlfromstring(SV *sth, imp_sth_t *imp_sth, SV *source){
 
 	dTHX;
-	dTHR;
+	
 	OCIXMLType *xml = NULL;
 	STRLEN len;
 	ub4 buflen;
@@ -1641,7 +1697,7 @@
 int ora_realloc_phs_array(phs_t *phs,int newentries, int newbufsize){
 
 	dTHX;
-	dTHR;
+	
 	int i; /* Loop variable */
 	unsigned short *newal;
 
@@ -2608,7 +2664,7 @@
 pp_rebind_ph_rset_in(SV *sth, imp_sth_t *imp_sth, phs_t *phs)
 {
 	dTHX;
-	dTHR;
+	
 	SV * sth_csr = phs->sv;
 	D_impdata(imp_sth_csr, imp_sth_t, sth_csr);
 	sword status;
@@ -2715,7 +2771,7 @@
 
 	}
 	else {		/* post-execute - setup the statement handle */
-		dTHR;
+		dTHX;
 		SV * sth_csr = phs->sv;
 		D_impdata(imp_sth_csr, imp_sth_t, sth_csr);
 
@@ -2758,7 +2814,7 @@
 static int
 dbd_rebind_ph_xml( SV* sth, imp_sth_t *imp_sth, phs_t *phs) {
 dTHX;
-dTHR;
+
 OCIType *tdo = NULL;
 sword status;
  SV* ptr;
@@ -3261,7 +3317,7 @@
 int
 dbd_st_execute(SV *sth, imp_sth_t *imp_sth) /* <= -2:error, >=0:ok row count, (-1=unknown count) */
 {
-	dTHR;
+	
 	dTHX;
 	ub4 row_count = 0;
 	int debug 	  = DBIS->debug;
@@ -3588,7 +3644,7 @@
 	SV *err_count;
 {
 	dTHX;
-	dTHR;
+	
 	ub4 row_count = 0;
 	int debug = DBIS->debug;
 	D_imp_dbh_from_sth;
@@ -3916,7 +3972,7 @@
 int
 dbd_st_finish(SV *sth, imp_sth_t *imp_sth)
 {
-	dTHR;
+	
 	dTHX;
 	D_imp_dbh_from_sth;
 	sword status;

Modified: dbd-oracle/branches/FAN/dbdimp.h
==============================================================================
--- dbd-oracle/branches/FAN/dbdimp.h	(original)
+++ dbd-oracle/branches/FAN/dbdimp.h	Fri Oct 14 19:51:21 2011
@@ -1,17 +1,26 @@
 /*
 	Copyright (c) 1994-2006 Tim Bunce
-	Copyright (c) 2006-2008 John Scoles (The Pythian Group), Canada
-
+	Copyright (c) 2006-2011 John Scoles (The Pythian Group), Canada
+        Copyright (c) 2011  John Scoles
 	See the COPYRIGHT section in the Oracle.pm file for terms.
 
 */
 
 /* ====== define data types ====== */
 
+typedef struct ha_context_st ha_context_t;
+
+struct ha_context_st {
+   PerlInterpreter *ct_perl;
+   char *function;
+};
+
+/*--------------------------TAF Callback Structure ---------------------*/
+
 typedef struct taf_callback_st taf_callback_t;
 
 struct taf_callback_st {
-	char *function; /*User supplied TAF functiomn*/
+	char *function; /*User supplied perl TAF functiomn*/
 	int  sleep;
 };
 
@@ -57,9 +66,12 @@
 	ub4			pool_incr;
 	char		*driver_name;/*driver name user defined*/
 	ub4			driver_namel;
+        bool            using_ha;   
+        ha_context_t    *ha_context;    
+        char	        *ha_function;
 #endif
 	taf_callback_t  *taf_callback;
-    bool		using_taf; /*TAF stuff*/
+	bool		using_taf; /*TAF stuff*/
     char		*taf_function; /*User supplied TAF functiomn*/
     int			taf_sleep;
     char		*client_info;  /*user defined*/
@@ -394,6 +406,7 @@
 
 ub4 ora_db_version _((SV *dbh, imp_dbh_t *imp_dbh));
 sb4 reg_taf_callback _((imp_dbh_t *imp_dbh));
+sb4 reg_ha_callback _((imp_dbh_t *imp_dbh));
 
 /* These defines avoid name clashes for multiple statically linked DBD's	*/
 

Modified: dbd-oracle/branches/FAN/oci8.c
==============================================================================
--- dbd-oracle/branches/FAN/oci8.c	(original)
+++ dbd-oracle/branches/FAN/oci8.c	Fri Oct 14 19:51:21 2011
@@ -493,6 +493,8 @@
 	case OCI_ATTR_SESSION_STATE_CLEARED:     return "OCI_ATTR_SESSION_STATE_CLEARED";     /* session state cleared*/
 	case OCI_ATTR_SESSION_MIGRATED:          return "OCI_ATTR_SESSION_MIGRATED";       /* did session migrate*/
 	case OCI_ATTR_SESSION_PRESERVE_STATE:    return "OCI_ATTR_SESSION_PRESERVE_STATE";    /* preserve session state */
+        case OCI_ATTR_EVTCBK:                     return "OCI_ATTR_EVTCBK";               /* ha callback */
+        case OCI_ATTR_EVTCTX:                     return "OCI_ATTR_EVTCTX";
 #endif
 #ifdef ORA_OCI_112
 	case OCI_ATTR_DRIVER_NAME:               return "OCI_ATTR_DRIVER_NAME";               /* Driver Name */
@@ -1278,34 +1280,105 @@
 
 
 void
-ha_cbk(dvoid *ha_ctx, OCIEvent *eventhp){
-	dTHX;
-	OCIServer 	*srvhp;
-	OCIError 	*errhp;
-	sb4			retcode;
-	OraText 	*hostname;
-	OraText 	*dbname;
-	OraText 	*instname;
-	OraText 	*svcname;
-	OCIDate 	timestmp;
-	OCIEnv 		*envhp = (OCIEnv *)ha_ctx;
-	ub4 		*sizep;
+hacb_fn( dvoid *ha_ctx, OCIEvent *eventhp) {
 
-        if (dbd_verbose >= 5 ) {
-          PerlIO_printf(DBILOGFP,"HA event received.\n");
-        }
+ ha_context_t *ctx =(ha_context_t*)ha_ctx;  
+  dTHXa(ctx->ct_perl);
+  //dTHX;€
+  //dSP;
+//        XPUSHs(sv_2mortal(newSViv(evtsource)));
+//        XPUSHs(sv_2mortal(newSViv(evtstatus)));
+//        PUTBACK;
+//  OCIEnv  *envhp = (OCIEnv *)ha_ctx;
+//  imp_dbh_t  *imp_dbh = (imp_dbh_t*)ha_ctx;
+//  sword status;
+//  OraText *instname;
+ // ub4 sizep;
+   ub4 atrlen;
+  ub4 evtsource, evtstatus;
+  ub4 dbsize, dbdmsize, hostsize, instsize, servicesize, dttmbufsize;
+   char *function;
+printf ("well this far 1\n\n");
+ PERL_SET_CONTEXT(ctx->ct_perl);
+PerlIO_printf(DBILOGFP, " how about this my functio %s",ctx->function);
+//PERL_SET_CONTEXT(my_perl);
+//ENTER;
+//    SAVETMPS;
+
+//    PUSHMARK(SP);
+//dSP;
+//        PUSHMARK(SP);
+//PUTBACK;
+//printf ("well this far imp_dbh perl 1 imp_dbh=%p\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ",imp_dbh);
+//printf (" this is  the p or pointer imp_drh->ha_function=%s ",(char *) imp_dbh->ha_function);
+
+ //  sizep = strlen(imp_dbh->ha_function);
+ //  function= (char*)safemalloc(strlen(imp_dbh->ha_function));
+ //  strcpy((char *)function,imp_dbh->ha_function);
+//printf ("well this far imp_dbh perl function=%d \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ",sizep);
+
+
+// call_pv(cb->function);
+
+/*dbd_verbose=11;
+status = OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&evtsource,
+			     (ub4 *)0,
+			     OCI_ATTR_HA_SOURCE,  imp_dbh->errhp);
+
+//OCI_ATTR_HA_SOURCE
+printf ("well this far status=%d\n\n\n",status);
+
+/*  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&evtsource, 0, OCI_ATTR_HA_SOURCE, imp_dbh->errhp, status);
+dbd_verbose=0;
+
+//
+switch(evtsource)
+    {
+    case OCI_HA_SOURCE_INSTANCE:
+      printf("INSTANCE\n");
+      break;
+    case OCI_HA_SOURCE_DATABASE:
+      printf("DATABASE\n");
+      break;
+    case OCI_HA_SOURCE_NODE:
+      printf("NODE\n");
+      break;
+    case OCI_HA_SOURCE_SERVICE:
+      printf("SERVICE\n");
+      break;
+    case OCI_HA_SOURCE_SERVICE_MEMBER:
+      printf("SERVICE MEMBER\n");
+      break;
+    case OCI_HA_SOURCE_ASM_INSTANCE:
+      printf("ASM INSTANCE\n");
+      break;
+    case OCI_HA_SOURCE_SERVICE_PRECONNECT:
+      printf("SERVICE PRECONNECT\n");
+      break;
+    }
+
+/*
+ checkerr(errhp, OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&evtsource,
+			     (ub4 *)0,
+			     OCI_ATTR_HA_SOURCE, errhp));
+  */
+  /*checkerr(errhp, OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&evtstatus,
+			     (ub4 *)0,
+			     OCI_ATTR_HA_STATUS, errhp));
+**/
+//printf ("well this far evtsource=%d\n\n\n",evtsource);        
+
+ //sleep(10);
 
-	if (OCIHandleAlloc( (dvoid *)envhp, (dvoid **)&errhp,(ub4) OCI_HTYPE_ERROR,(size_t) 0, (dvoid **) 0))
-		return;
 
 
-	if (retcode = OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&srvhp,	(ub4 *)0,	OCI_ATTR_HA_SRVFIRST, errhp)) {
-		PerlIO_printf(DBILOGFP,"error is %d.\n", retcode);
+/*	if (retcode = OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&srvhp,	(ub4 *)0,	OCI_ATTR_HA_SRVFIRST, errhp)) {
+		printf(DBILOGFP,"error is %d.\n", retcode);
 	}
 	else{
 		PerlIO_printf(DBILOGFP,"found first server handle.\n");
 		/*get associated instance name, */
-		if (retcode = OCIAttrGet(srvhp, OCI_HTYPE_SERVER, (dvoid *)&instname,(ub4 *)&sizep,	OCI_ATTR_INSTNAME, errhp)){
+/*		if (retcode = OCIAttrGet(srvhp, OCI_HTYPE_SERVER, (dvoid *)&instname,(ub4 *)&sizep,	OCI_ATTR_INSTNAME, errhp)){
 			PerlIO_printf(DBILOGFP,"error is %d.\n", retcode);
 		}
 		else{
@@ -1322,7 +1395,7 @@
 			PerlIO_printf(DBILOGFP,"found another server handle.\n");
 			/*get associated instance name, */
 
-			if (retcode = OCIAttrGet(srvhp, OCI_HTYPE_SERVER, (dvoid *)&instname,(ub4 *)&sizep,	OCI_ATTR_INSTNAME, errhp)){
+/*			if (retcode = OCIAttrGet(srvhp, OCI_HTYPE_SERVER, (dvoid *)&instname,(ub4 *)&sizep,	OCI_ATTR_INSTNAME, errhp)){
 				PerlIO_printf(DBILOGFP,"error is %d.\n", retcode);
 			}
 			else {
@@ -1331,42 +1404,91 @@
 		}
 	}
 	OCIHandleFree((dvoid *)errhp, OCI_HTYPE_ERROR);
- PerlIO_printf(DBILOGFP,"Finished event callback function.\n");
-	 return;
-
+*/
+	
 }
 
-
+static char *myctx = (char *) "somthing borrowed";
 sb4
 reg_ha_callback( imp_dbh_t *imp_dbh)
 {
-	dTHX;
-	sword 			status;
-/*	taf_callback_t  *cb = NULL;
-/*allocate space for the callback
-	Newz(1, cb, 1, taf_callback_t);
-	cb->function= (char*)safemalloc(strlen(imp_dbh->taf_function));
-	cb->sleep   = imp_dbh->taf_sleep;
-	strcpy((char *)cb->function,imp_dbh->taf_function);
+        dTHX;
+        sword status;
+        ha_context_t  *ctx = NULL;
+/*allocate space for the callback */
+        Newz(1, ctx, 1, ha_context_t);
+        ctx->function= (char*)safemalloc(strlen(imp_dbh->ha_function));
+        ctx->ct_perl   = my_perl;
+        strcpy((char *)ctx->function,imp_dbh->ha_function);
+
+ /*       OCIFocbkStruct  ha_failover;
+        sword                   status;
+        ha_callback_t  *cb = NULL;
+allocate space for the callback 
+        Newz(1, cb, 1, ha_callback_t);
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback  1 \n");
+
+        cb->function= (char*)safemalloc(strlen(imp_dbh->ha_function));
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback 2 \n");
+
+        strcpy((char *)cb->function,imp_dbh->ha_function);
 */
-	if (dbd_verbose >= 5 ) {
-  		PerlIO_printf(DBILOGFP, " In reg_ha_callback\n");
-	}
 
-    OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,
+
+
+/* set the context up as a pointer to the taf callback struct*/
+/*       static char *myctx = (char *) "some context"; */
+
+  		PerlIO_printf(DBILOGFP, " In reg_ha_callback imp_dbh=%p\n",imp_dbh);
+     printf( " In reg_ha_callback as tring imp_dbh->ha_function=%s\n",imp_dbh->ha_function);
+ printf( " In reg_ha_callback as pointer imp_dbh->ha_function=%p\n",imp_dbh->ha_function);
+
+
+ /*       OCIAttrSet_log_stat(imp_dbh->srvhp, OCI_HTYPE_SERVER,(dvoid *)&ha_failover ,0,OCI_ATTR_FOCBK, imp_dbh->errhp, status);*/
+
+/*  PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_FOCBK status=%d\n",status);
+
+         if (status != OCI_SUCCESS){
+                oci_error(imp_dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_FOCBK, HA callback");
+                return 0;
+        }
+   */    
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_FOCBK =%d, OCI_ATTR_EVTCTX=%d\n",OCI_ATTR_EVTCBK,OCI_ATTR_EVTCTX);
+
+         OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,(dvoid *)hacb_fn ,(ub4)0,(ub4)OCI_ATTR_EVTCBK, imp_dbh->errhp, status);
+
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_EVTCBK status=%d\n",status);
+/*
+         if (status != OCI_SUCCESS){
+                oci_error(imp_dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCTX, HA callback");
+
+                return 0;
+        }
+*/
+        OCIAttrSet_log_stat(imp_dbh->envhp, OCI_HTYPE_ENV,ctx,0,OCI_ATTR_EVTCTX, imp_dbh->errhp , status);
+PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_EVTCX status=%d\n",status);
+/*
+         if (status != OCI_SUCCES
+                oci_error(imp_dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCTX, HA callback");
+                return 0;
+        }
+*/
+
+
+/*    OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,
 								(dvoid *) &ha_cbk, (ub4) 0,
 								(ub4) OCI_ATTR_EVTCBK, imp_dbh->errhp, status);
 
-/*	if (status != OCI_SUCCESS){
+	if (status != OCI_SUCCESS){
 		oci_error(dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCBK, HA callback");
 		return 0;
 	}
-*/
+
 
    OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,
 								(dvoid *)imp_dbh->srvhp, (ub4) 0,
 								(ub4) OCI_ATTR_EVTCTX, imp_dbh->errhp, status);
- /*  if (status != OCI_SUCCESS){
+  if (status != OCI_SUCCESS){
 		oci_error(dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCTX, HA callback context");
 		return 0;
 	}
@@ -1551,7 +1673,7 @@
 
 	if( sth ) { /* For GCC not to warn on unused parameter */ }
 	if (sth_nested) {
-	dTHR;
+	dTHX;
 	D_impdata(imp_sth_nested, imp_sth_t, sth_nested);
 		int fields = DBIc_NUM_FIELDS(imp_sth_nested);
 	int i;
@@ -1575,7 +1697,7 @@
 {
 	dTHX;
 	OCIStmt *stmhp_nested = ((OCIStmt **)fbh->fb_ary->abuf)[0];
-	dTHR;
+	
 	D_imp_sth(sth);
 	D_imp_dbh_from_sth;
 	dSP;
@@ -2780,7 +2902,7 @@
 
 
 			if (status==OCI_SUCCESS_WITH_INFO && !DBIc_has(fbh->imp_sth,DBIcf_LongTruncOk)){
-			 	dTHR; 			/* for DBIc_ACTIVE_off	*/
+			 	dTHX; 			/* for DBIc_ACTIVE_off	*/
 				DBIc_ACTIVE_off(fbh->imp_sth);	/* eg finish		*/
 				oci_error(sth, fbh->imp_sth->errhp, status, "OCIStmtFetch, LongReadLen too small and/or LongTruncOk not set");
 			}
@@ -3938,14 +4060,14 @@
 		ora_fetchtest = 0;
 
 		if (status == OCI_NO_DATA) {
-			dTHR; 			/* for DBIc_ACTIVE_off	*/
+			dTHX; 			/* for DBIc_ACTIVE_off	*/
 			DBIc_ACTIVE_off(imp_sth);	/* eg finish		*/
 			if (DBIS->debug >= 3 || dbd_verbose >= 3 || oci_warn)
 				PerlIO_printf(DBILOGFP, "	dbd_st_fetch no-more-data, fetch count=%d\n",imp_sth->rs_fetch_count-1);
 			return Nullav;
 		}
 		if (status != OCI_SUCCESS_WITH_INFO) {
-			dTHR; 			/* for DBIc_ACTIVE_off	*/
+			dTHX; 			/* for DBIc_ACTIVE_off	*/
 			DBIc_ACTIVE_off(imp_sth);	/* eg finish		*/
 			oci_error(sth, imp_sth->errhp, status, "OCIStmtFetch");
 			return Nullav;



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About