Author: byterock
Date: Fri Jun 18 19:30:46 2010
New Revision: 14171
Modified:
dbd-oracle/branches/DRCP_1.25/dbdimp.c
dbd-oracle/branches/DRCP_1.25/dbdimp.h
dbd-oracle/branches/DRCP_1.25/oci8.c
dbd-oracle/branches/DRCP_1.25/ocitrace.h
Log:
just a check in for end of day
Modified: dbd-oracle/branches/DRCP_1.25/dbdimp.c
==============================================================================
--- dbd-oracle/branches/DRCP_1.25/dbdimp.c (original)
+++ dbd-oracle/branches/DRCP_1.25/dbdimp.c Fri Jun 18 19:30:46 2010
@@ -44,9 +44,7 @@
int oci_warn = 0; /* show oci warnings */
int ora_objects = 0; /* get oracle embedded objects as instance of DBD::Oracle::Object */
int ora_ncs_buff_mtpl = 4; /* a mulitplyer for ncs clob buffers */
-#ifdef ORA_OCI_112
-int ora_drcp = 0; /* Use DRCP connection 11.2 and above only*/
-#endif
+
/* bitflag constants for figuring out how to handle utf8 for array binds */
#define ARRAY_BIND_NATIVE 0x01
#define ARRAY_BIND_UTF8 0x02
@@ -391,7 +389,7 @@
#ifdef ORA_OCI_112
/*check to see if the user is connecting with DRCP */
if (DBD_ATTRIB_TRUE(attr,"ora_drcp",8,svp))
- DBD_ATTRIB_GET_IV( attr, "ora_drcp", 8, svp, ora_drcp);
+ imp_dbh->using_drcp = 1;
#endif
/* check to see if DBD_verbose or ora_verbose is set*/
if (DBD_ATTRIB_TRUE(attr,"dbd_verbose",11,svp))
@@ -750,7 +748,7 @@
return 0;
}
- OCIAttrGet_log_stat(imp_dbh->svchp, OCI_HTYPE_SVCCTX, &imp_dbh->authp, NULL,
+ OCIAttrGet_log_stat(imp_dbh->svchp, OCI_HTYPE_SVCCTX, &imp_dbh->seshp, NULL,
OCI_ATTR_SESSION, imp_dbh->errhp, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status,
@@ -769,23 +767,20 @@
imp_dbh->proc_handles = 0;
OCIHandleAlloc_ok(imp_dbh->envhp, &imp_dbh->srvhp, OCI_HTYPE_SERVER, status);
- OCIHandleAlloc_ok(imp_dbh->envhp, &imp_dbh->svchp, OCI_HTYPE_SVCCTX, status);
- OCIServerAttach_log_stat(imp_dbh, dbname,OCI_DEFAULT, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCIServerAttach");
OCIHandleFree_log_stat(imp_dbh->srvhp, OCI_HTYPE_SERVER, status);
- OCIHandleFree_log_stat(imp_dbh->svchp, OCI_HTYPE_SVCCTX, status);
OCIHandleFree_log_stat(imp_dbh->errhp, OCI_HTYPE_ERROR, status);
return 0;
}
OCIAttrSet_log_stat( imp_dbh->svchp, OCI_HTYPE_SVCCTX, imp_dbh->srvhp,
(ub4) 0, OCI_ATTR_SERVER, imp_dbh->errhp, status);
- OCIHandleAlloc_ok(imp_dbh->envhp, &imp_dbh->authp, OCI_HTYPE_SESSION, status);
{
SV **sess_mode_type_sv;
ub4 sess_mode_type = OCI_DEFAULT;
+ ub4 cred_type = ora_parse_uid(imp_dbh, &uid, &pwd);
DBD_ATTRIB_GET_IV(attr, "ora_session_mode",16, sess_mode_type_sv, sess_mode_type);
@@ -794,10 +789,10 @@
#ifdef ORA_OCI_112
-PerlIO_printf(DBILOGFP,"ora_drcp=%d\n",ora_drcp);
-
- if (ora_drcp) { /* connect uisng a DRCP */
-
+PerlIO_printf(DBILOGFP,"imp_dbh->using_drcp=%d\n",imp_dbh->using_drcp);
+dbd_verbose=15;
+ if (imp_dbh->using_drcp) { /* connect uisng a DRCP */
+ ub4 purity = OCI_ATTR_PURITY_SELF;
OCIHandleAlloc_ok(imp_dbh->envhp, &imp_dbh->poolhp, OCI_HTYPE_SPOOL, status);
PerlIO_printf(DBILOGFP,"OCIHandleAlloc_ok status=%s\n",oci_status_name(status));
OCISessionPoolCreate_log_stat(imp_dbh->envhp,
@@ -817,20 +812,38 @@
status);
if (status != OCI_SUCCESS) {
+
oci_error(dbh, imp_dbh->errhp, status, "OCISessionPoolCreate");
OCIServerDetach_log_stat(imp_dbh->srvhp, imp_dbh->errhp, OCI_DEFAULT, status);
- OCIHandleFree_log_stat(imp_dbh->authp, OCI_HTYPE_SESSION,status);
+ OCIHandleFree_log_stat(imp_dbh->poolhp, OCI_HTYPE_SPOOL,status);
+ OCIHandleFree_log_stat(imp_dbh->srvhp, OCI_HTYPE_SERVER, status);
+ OCIHandleFree_log_stat(imp_dbh->errhp, OCI_HTYPE_ERROR, status);
+ return 0;
+ }
+ OCIHandleAlloc_ok(imp_dbh->envhp, &imp_dbh->authp, OCI_HTYPE_AUTHINFO, status);
+
+ OCIAttrSet_log_stat(imp_dbh->authp, (ub4) OCI_HTYPE_AUTHINFO,
+ &purity, (ub4) 0,(ub4) OCI_ATTR_PURITY, imp_dbh->errhp, status);
+
+ OCISessionGet_log_stat(imp_dbh->envhp, imp_dbh->errhp, &imp_dbh->svchp, imp_dbh->authp,
+ imp_dbh->pool_name, (ub4)strlen((char *)imp_dbh->pool_name), status);
+
+ if (status != OCI_SUCCESS) {
+
+ oci_error(dbh, imp_dbh->errhp, status, "OCISessionGet");
+ OCIServerDetach_log_stat(imp_dbh->srvhp, imp_dbh->errhp, OCI_DEFAULT, status);
+ OCIHandleFree_log_stat(imp_dbh->poolhp, OCI_HTYPE_SPOOL,status);
OCIHandleFree_log_stat(imp_dbh->srvhp, OCI_HTYPE_SERVER, status);
OCIHandleFree_log_stat(imp_dbh->errhp, OCI_HTYPE_ERROR, status);
- OCIHandleFree_log_stat(imp_dbh->svchp, OCI_HTYPE_SVCCTX, status);
return 0;
}
}
else {
- ub4 cred_type = ora_parse_uid(imp_dbh, &uid, &pwd);
-
#endif
- OCISessionBegin_log_stat( imp_dbh->svchp, imp_dbh->errhp, imp_dbh->authp,cred_type, sess_mode_type, status);
+
+ OCIServerAttach_log_stat(imp_dbh, dbname,OCI_DEFAULT, status);
+ OCIHandleAlloc_ok(imp_dbh->envhp, &imp_dbh->seshp, OCI_HTYPE_SESSION, status);
+ OCISessionBegin_log_stat( imp_dbh->svchp, imp_dbh->errhp, imp_dbh->seshp,cred_type, sess_mode_type, status);
if (status == OCI_SUCCESS_WITH_INFO) {
/* eg ORA-28011: the account will expire soon; change your password now */
oci_error(dbh, imp_dbh->errhp, status, "OCISessionBegin");
@@ -1003,7 +1016,7 @@
if (refcnt == 1 && !imp_dbh->proc_handles) {
sword s_se, s_sd;
- OCISessionEnd_log_stat(imp_dbh->svchp, imp_dbh->errhp, imp_dbh->authp,
+ OCISessionEnd_log_stat(imp_dbh->svchp, imp_dbh->errhp, imp_dbh->seshp,
OCI_DEFAULT, s_se);
if (s_se) oci_error(dbh, imp_dbh->errhp, s_se, "OCISessionEnd");
OCIServerDetach_log_stat(imp_dbh->srvhp, imp_dbh->errhp, OCI_DEFAULT, s_sd);
@@ -1064,7 +1077,7 @@
}
#ifdef ORA_OCI_112
else if (kl==8 && strEQ(key, "ora_drcp") ) {
- ora_drcp = SvIV (valuesv);
+ imp_dbh->using_drcp = 1;
}
#endif
else if (kl==20 && strEQ(key, "ora_oci_success_warn") ) {
Modified: dbd-oracle/branches/DRCP_1.25/dbdimp.h
==============================================================================
--- dbd-oracle/branches/DRCP_1.25/dbdimp.h (original)
+++ dbd-oracle/branches/DRCP_1.25/dbdimp.h Fri Jun 18 19:30:46 2010
@@ -38,11 +38,13 @@
OCIError *errhp;
OCIServer *srvhp;
OCISvcCtx *svchp;
- OCISession *authp;
+ OCISession *seshp;
#ifdef ORA_OCI_112
+ OCIAuthInfo *authp;
OCISPool *poolhp;
text *pool_name;
ub4 pool_namel;
+ bool using_drcp;
#endif
int proc_handles; /* If true, srvhp, svchp, and authp handles
are owned by ProC and must not be freed. */
@@ -270,9 +272,6 @@
extern int oci_warn;
extern int ora_objects;
extern int ora_ncs_buff_mtpl;
-#ifdef ORA_OCI_112
-extern int ora_drcp;
-#endif
extern ub2 charsetid;
extern ub2 ncharsetid;
extern ub2 us7ascii_csid;
Modified: dbd-oracle/branches/DRCP_1.25/oci8.c
==============================================================================
--- dbd-oracle/branches/DRCP_1.25/oci8.c (original)
+++ dbd-oracle/branches/DRCP_1.25/oci8.c Fri Jun 18 19:30:46 2010
@@ -335,6 +335,7 @@
case OCI_HTYPE_SESSION: return "OCI_HTYPE_SESSION";
case OCI_HTYPE_CPOOL: return "OCI_HTYPE_CPOOL";
case OCI_HTYPE_SPOOL: return "OCI_HTYPE_SPOOL";
+ /*case OCI_HTYPE_AUTHINFO: return "OCI_HTYPE_AUTHINFO";*/
/* Descriptors */
case OCI_DTYPE_LOB: return "OCI_DTYPE_LOB";
case OCI_DTYPE_SNAP: return "OCI_DTYPE_SNAP";
@@ -412,7 +413,7 @@
switch (attr) {
/*=============================Attribute Types===============================*/
-
+ case OCI_ATTR_PURITY: return "OCI_ATTR_PURITY"; /* for DRCP session purity */
case OCI_ATTR_FNCODE: return "OCI_ATTR_FNCODE"; /* the OCI function code */
case OCI_ATTR_OBJECT: return "OCI_ATTR_OBJECT"; /* is the environment initialized in object mode */
case OCI_ATTR_NONBLOCKING_MODE: return "OCI_ATTR_NONBLOCKING_MODE"; /* non blocking mode */
@@ -838,7 +839,8 @@
case OCI_HTYPE_ERROR: return imp_dbh->errhp;
case OCI_HTYPE_SERVER: return imp_dbh->srvhp;
case OCI_HTYPE_SVCCTX: return imp_dbh->svchp;
- case OCI_HTYPE_SESSION: return imp_dbh->authp;
+ case OCI_HTYPE_SESSION: return imp_dbh->seshp;
+ /*case OCI_HTYPE_AUTHINFO:return imp_dbh->authp;*/
}
croak("Can't get OCI handle type %d from DBI database handle", handle_type);
if( flags ) {/* For GCC not to warn on unused parameter */}
@@ -851,7 +853,7 @@
{
dTHX;
switch(handle_type) {
- case OCI_HTYPE_ENV: return imp_sth->envhp;
+ case OCI_HTYPE_ENV: return imp_sth->envhp;
case OCI_HTYPE_ERROR: return imp_sth->errhp;
case OCI_HTYPE_SERVER: return imp_sth->srvhp;
case OCI_HTYPE_SVCCTX: return imp_sth->svchp;
@@ -3874,14 +3876,24 @@
return OCI_CRED_EXT;
}
- OCIAttrSet_log_stat(imp_dbh->authp, OCI_HTYPE_SESSION,
+ if (imp_dbh->using_drcp){
+ OCIAttrSet_log_stat(imp_dbh->authp, OCI_HTYPE_SESSION,
*uidp, strlen(*uidp),
(ub4) OCI_ATTR_USERNAME, imp_dbh->errhp, status);
- OCIAttrSet_log_stat(imp_dbh->authp, OCI_HTYPE_SESSION,
+ OCIAttrSet_log_stat(imp_dbh->authp, OCI_HTYPE_SESSION,
(strlen(*pwdp)) ? *pwdp : NULL, strlen(*pwdp),
(ub4) OCI_ATTR_PASSWORD, imp_dbh->errhp, status);
+ }
+ else {
+ OCIAttrSet_log_stat(imp_dbh->seshp, OCI_HTYPE_SESSION,
+ *uidp, strlen(*uidp),
+ (ub4) OCI_ATTR_USERNAME, imp_dbh->errhp, status);
+ OCIAttrSet_log_stat(imp_dbh->seshp, OCI_HTYPE_SESSION,
+ (strlen(*pwdp)) ? *pwdp : NULL, strlen(*pwdp),
+ (ub4) OCI_ATTR_PASSWORD, imp_dbh->errhp, status);
+ }
return OCI_CRED_RDBMS;
}
@@ -3894,8 +3906,8 @@
/* XXX should possibly create new session before ending the old so */
/* that if the new one can't be created, the old will still work. */
OCISessionEnd_log_stat(imp_dbh->svchp, imp_dbh->errhp,
- imp_dbh->authp, OCI_DEFAULT, status); /* XXX check status here?*/
- OCISessionBegin_log_stat( imp_dbh->svchp, imp_dbh->errhp, imp_dbh->authp,
+ imp_dbh->seshp, OCI_DEFAULT, status); /* XXX check status here?*/
+ OCISessionBegin_log_stat( imp_dbh->svchp, imp_dbh->errhp, imp_dbh->seshp,
ora_parse_uid(imp_dbh, &uid, &pwd), (ub4) OCI_DEFAULT, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCISessionBegin");
Modified: dbd-oracle/branches/DRCP_1.25/ocitrace.h
==============================================================================
--- dbd-oracle/branches/DRCP_1.25/ocitrace.h (original)
+++ dbd-oracle/branches/DRCP_1.25/ocitrace.h Fri Jun 18 19:30:46 2010
@@ -36,11 +36,26 @@
If done well the log will read like a compilable program.
*/
+#define OCISessionPoolDestroy_log_stat(ph, errhp,stat )\
+ stat =OCISessionPoolDestroy(ph, errhp,OCI_DEFAULT);\
+ (DBD_OCI_TRACEON) \
+ ? PerlIO_printf(DBD_OCI_TRACEFP,\
+ "%sOCISessionPoolDestroy(ph=%p)=%s\n",\
+ OciTp, ph,oci_status_name(stat)),stat \
+ : stat
+#define OCISessionGet_log_stat(envhp, errhp, sh, ah,pn,pnl,stat)\
+ stat =OCISessionGet(envhp, errhp, sh, ah,pn,pnl,NULL,0, NULL, NULL, NULL, OCI_SESSGET_SPOOL);\
+ (DBD_OCI_TRACEON) \
+ ? PerlIO_printf(DBD_OCI_TRACEFP,\
+ "%sOCISessionGet(envhp=%p,sh=%p,ah=%p,pn=%p,pnl=%d)=%s\n",\
+ OciTp, envhp,sh,ah,pn,pnl,oci_status_name(stat)),stat \
+ : stat
+
#define OCISessionPoolCreate_log_stat(envhp,errhp,ph,pn,pnl,dbn,dbl,sn,sm,si,un,unl,pw,pwl,stat)\
stat =OCISessionPoolCreate(envhp,errhp,ph,pn,pnl,dbn,dbl,sn,sm,si,un,unl,pw,pwl,OCI_DEFAULT);\
- (!DBD_OCI_TRACEON) \
+ (DBD_OCI_TRACEON) \
? PerlIO_printf(DBD_OCI_TRACEFP,\
- "%sOCISessionPoolCreate(envhp=%p,ph=%p,pn=%s,pnl=%d,min=%d,max=%d,incr=%d, un=%s,unl=%d,pw=%s,pwl=%d)=%s\n",\
+ "%sOCISessionPoolCreate(envhp=%p,ph=%p,pn=%p,pnl=%p,min=%d,max=%d,incr=%d, un=%s,unl=%d,pw=%s,pwl=%d)=%s\n",\
OciTp, envhp,ph,pn,pnl,sn,sm,si,un,unl,pw,pwl,oci_status_name(stat)),stat \
: stat
@@ -355,7 +370,7 @@
#define OCIHandleAlloc_log_stat(ph,hp,t,xs,ump,stat) \
stat=OCIHandleAlloc(ph,hp,t,xs,ump); \
- (!DBD_OCI_TRACEON) ? PerlIO_printf(DBD_OCI_TRACEFP, \
+ (DBD_OCI_TRACEON) ? PerlIO_printf(DBD_OCI_TRACEFP, \
"%sHandleAlloc(%p,%p,%s,%lu,%p)=%s\n", \
OciTp, (void*)ph,(void*)hp,oci_hdtype_name(t),ul_t(xs),(void*)ump, \
oci_status_name(stat)),stat : stat
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.