Front page | perl.dbd.oracle.changes |
Postings from January 2012
[svn:dbd-oracle] r15080 - dbd-oracle/branches/FAN
From:
byterock
Date:
January 12, 2012 03:34
Subject:
[svn:dbd-oracle] r15080 - dbd-oracle/branches/FAN
Message ID:
20120112113418.9F37F184B9A@xx12.develooper.com
Author: byterock
Date: Thu Jan 12 03:34:17 2012
New Revision: 15080
Modified:
dbd-oracle/branches/FAN/dbdimp.c
dbd-oracle/branches/FAN/dbdimp.h
dbd-oracle/branches/FAN/oci8.c
Log:
just some fixing
Modified: dbd-oracle/branches/FAN/dbdimp.c
==============================================================================
--- dbd-oracle/branches/FAN/dbdimp.c (original)
+++ dbd-oracle/branches/FAN/dbdimp.c Thu Jan 12 03:34:17 2012
@@ -19,7 +19,7 @@
#endif /* __CYGWIN32__ */
#include "Oracle.h"
-
+#include "pthread.h"
/* XXX DBI should provide a better version of this */
@@ -945,7 +945,7 @@
PerlIO_printf(DBILOGFP,"Setting up HA Event Callback!");
}
- status = reg_ha_callback(dbh,imp_dbh);
+ status = reg_ha_callback(imp_dbh);
if (status != OCI_SUCCESS) {
oci_error(dbh, NULL, status,
Modified: dbd-oracle/branches/FAN/dbdimp.h
==============================================================================
--- dbd-oracle/branches/FAN/dbdimp.h (original)
+++ dbd-oracle/branches/FAN/dbdimp.h Thu Jan 12 03:34:17 2012
@@ -408,7 +408,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 _((SV *dbh,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 Thu Jan 12 03:34:17 2012
@@ -1299,15 +1299,28 @@
}
+//pthread_mutex_t mutex;
+
+//static pthread_mutex_t mutex=PHTREAD_MUTEX_INITIALIZER;
+
void
hacb_fn( dvoid *ha_ctx, OCIEvent *eventhp) {
- ha_context_t *ctx =(ha_context_t*)ha_ctx;
- OCIServer *srvhp;
- dTHXa(ctx->ct_perl);
- SV* dbh = ctx->dbh;
- dSP;
+ ha_context_t *ctx =(ha_context_t*)ha_ctx;
imp_dbh_t *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
+ pthread_mutex_t mutex;
+ pthread_mutex_init(&mutex, NULL);
+ pthread_mutex_lock(&mutex);
+ PERL_SET_CONTEXT(ctx->ct_perl);
+ do_ha_perl(imp_dbh,eventhp,ctx->function);
+ pthread_mutex_destroy(&mutex);
+}
+void
+do_ha_perl( imp_dbh_t *imp_dbh, OCIEvent *eventhp,char *function) {
+
+ dTHX;
+ dSP;
+ OCIServer *srvhp;
sword status;
text *event_att;
OCIDateTime *event_ts;
@@ -1315,15 +1328,15 @@
ub4 event_att_len;
ub4 event_code;
HV* ha_event;
- // HV* dbh_h= SvSTASH(SvRV( ctx->dbh));;
AV* servers;
- PERL_SET_CONTEXT(ctx->ct_perl);
ha_event = newHV();
servers = newAV();
PUSHMARK(SP);
+ PerlIO_printf(DBILOGFP, "DBIc_ACTIVE=%d\n",DBIc_ACTIVE(imp_dbh));
+
//sv_bless(dbh,dbh_h);
- if (dbh){
+ /*if (dbh){
PerlIO_printf(DBILOGFP, " dhb is object cb_f=%d\n",sv_isobject(SvRV(dbh)));
}
//PerlIO_printf(DBILOGFP, " dhb isa DBI::db cb_f=%d\n",sv_derived_from(dbh,"DBI::db"));
@@ -1334,7 +1347,7 @@
-
+*/
// PerlIO_printf(DBILOGFP, " dhb isa DBI::db cb_f=%d\n",sv_derived_from(dbh,"DBI::db"));
@@ -1420,17 +1433,17 @@
XPUSHs(sv_2mortal(newRV((SV*)DBIc_MY_H(imp_dbh))));
XPUSHs(sv_2mortal(newRV((SV*)ha_event)));
PUTBACK;
- call_pv(ctx->function, G_DISCARD);
+ call_pv(function, G_DISCARD);
+
}
sb4
-reg_ha_callback(SV *dbh, imp_dbh_t *imp_dbh)
-{
+reg_ha_callback( imp_dbh_t *imp_dbh){
dTHX;
sword status;
ha_context_t *ctx = NULL;
- SV* dbhref = newRV(dbh);// = sv_setref_iv(dbh, "DBI::db");
+ // SV* dbhref = newRV(dbh);// = sv_setref_iv(dbh, "DBI::db");
// = newSVrv((SV*) dbh, "DBI::db");
//newRV_noinc((SV*) dbh);
/*allocate space for the callback */
@@ -1439,10 +1452,8 @@
ctx->ct_perl = my_perl;
ctx->imp_dbh = imp_dbh;
//sv_setref_pv(dbhref,"DBI::db", dbh);
- ctx->dbh = dbhref; //newSVrv( dbh, "DBI::db");
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(dbh,"DBI::db"));
+ // ctx->dbh = dbhref; //newSVrv( dbh, "DBI::db");
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(SvRV(dbhref),"DBI::db"));
@@ -1450,13 +1461,9 @@
//sv_bless(dbhref, gv_stashpv("DBI::db", 0));
strcpy((char *)ctx->function,imp_dbh->ha_function);
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(dbh,"DBI::db"));
-
-
-PerlIO_printf(DBILOGFP, " dhb is object=%d\n",sv_isobject(ctx->dbh));
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(dbh,"DBI::db"));
+PerlIO_printf(DBILOGFP, "reg callback DBIc_ACTIVE=%d\n",DBIc_ACTIVE(imp_dbh));
PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_FOCBK =%d, OCI_ATTR_EVTCTX=%d\n",OCI_ATTR_EVTCBK,OCI_ATTR_EVTCTX);
-
[svn:dbd-oracle] r15080 - dbd-oracle/branches/FAN
by byterock