DBD-Illustra
view release on metacpan or search on metacpan
levelstr,errmsg
);
break;
case MI_Alerter_Fire_Msg:
/* Alerter fired or dropped */
levelstr=mi_alert_status(cb_data)==MI_ALERTER_DROPPED ? "dropped" : "fired";
if(dbis->debug >= 3)
fprintf(DBILOGFP,
"DBD::Illustra callback MI_Alerter_Fire_Msg(%s): %s\n",
levelstr,mi_alert_name(cb_data)
);
break;
case MI_Xact_State_Change:{
mi_integer oldlevel,newlevel;
/* XXX; We might want to do something clever eventually... */
switch(elevel=mi_xact_state(cb_data)){
case MI_XACT_BEGIN:
levelstr="Started";
break;
case MI_XACT_END:
levelstr="Ended";
break;
case MI_XACT_ABORT:
levelstr="Aborted";
break;
default:
levelstr="unknown";
}
mi_xact_levels(cb_data,&oldlevel,&newlevel);
if(dbis->debug >= 3)
fprintf(DBILOGFP,
"DBD::Illustra callback MI_Xact_State_Change(%s): Old: %d, New: %d\n",
levelstr,oldlevel,newlevel
);
} break;
case MI_Delivery_Status_Msg:
case MI_Query_Interrupt_Ack:
case MI_Print:
case MI_Request:
case MI_Tape_Request:
default:
Perl_warn("XXX Caught unknown callback: %d\n",type);
}
}
/* Called when driver first loaded */
void dbd_init(dbistate_t* dbistate){
DBIS=dbistate; /* Initialize the DBI macros */
/* Register the global callback handler.
* We have to call this before any other mi_ functions
*/
mi_add_callback(MI_All_Events,all_callback,0);
/* Disable pointer checks, because they don't seem to work */
{
MI_PARAMETER_INFO pinfo;
mi_get_parameter_info(&pinfo);
pinfo.callbacks_enabled=1;
pinfo.pointer_checks_enabled=0;
mi_set_parameter_info(&pinfo);
}
}
int dbd_discon_all(SV* drh,imp_drh_t* imp_drh){
if(dbis->debug>=4)
fprintf(DBILOGFP,"ill_discon_all called\n");
/* XXX This is just copied from DBD::Oracle, like DBI::DBD says... */
if (!dirty && !SvTRUE(perl_get_sv("DBI::PERL_ENDING",0))) {
sv_setiv(DBIc_ERR(imp_drh), (IV)1);
sv_setpv(DBIc_ERRSTR(imp_drh),
(char*)"disconnect_all not implemented");
DBIh_EVENT2(drh, ERROR_event,
DBIc_ERR(imp_drh), DBIc_ERRSTR(imp_drh));
return FALSE;
}
if (perl_destruct_level)
perl_destruct_level = 0;
return FALSE;
}
/* Connect to a database */
int dbd_db_login(SV *dbh,imp_dbh_t *imp_dbh,char *dbname,char *uid,char *pwd){
if(dbis->debug>=4)
fprintf(DBILOGFP,"ill_db_login called\n");
/* Connect to database */
if((imp_dbh->conn=mi_open(dbname,uid,pwd))==NULL){
do_error(dbh,0,"Can't connect");
return FALSE;
}
DBIc_IMPSET_on(imp_dbh); /* imp_dbh is set up */
DBIc_ACTIVE_on(imp_dbh); /* call disconnect before freeing */
DBIc_set(imp_dbh,DBIcf_AutoCommit,1); /* Default is AutoCommit on */
imp_dbh->st_active=0; /* No active statement */
return TRUE;
}
/* $dbh->commit */
int dbd_db_commit(SV *dbh,imp_dbh_t *imp_dbh){
if(dbis->debug>=2)
fprintf(DBILOGFP,"DBD::Illustra::dbd_db_commit\n");
return exec_query(dbh,imp_dbh,"commit work;");
}
/* $dbh->rollback */
int dbd_db_rollback(SV *dbh,imp_dbh_t *imp_dbh){
if(dbis->debug>=2)
fprintf(DBILOGFP,"DBD::Illustra::dbd_db_rollback\n");
return exec_query(dbh,imp_dbh,"rollback work;");
}
/* Disconnect from database */
int dbd_db_disconnect(SV *dbh,imp_dbh_t *imp_dbh){
( run in 0.641 second using v1.01-cache-2.11-cpan-5a3173703d6 )