Initial Commit

This commit is contained in:
Riley Schneider
2025-12-03 16:38:10 +01:00
parent c5e26bf594
commit b732d8d4b5
17680 changed files with 5977495 additions and 2 deletions

View File

@@ -0,0 +1,18 @@
C:\strawberry\perl\vendor\lib\DBD\Oracle.pm
C:\strawberry\perl\vendor\lib\DBD\Oracle\GetInfo.pm
C:\strawberry\perl\vendor\lib\DBD\Oracle\Object.pm
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Aix.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Cygwin.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Hpux.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Linux.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Macos.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Sun.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Vms.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Win32.pod
C:\strawberry\perl\vendor\lib\DBD\Oracle\Troubleshooting\Win64.pod
C:\strawberry\perl\vendor\lib\auto\DBD\Oracle\Oracle.h
C:\strawberry\perl\vendor\lib\auto\DBD\Oracle\Oracle.xs.dll
C:\strawberry\perl\vendor\lib\auto\DBD\Oracle\dbdimp.h
C:\strawberry\perl\vendor\lib\auto\DBD\Oracle\mk.pm
C:\strawberry\perl\vendor\lib\auto\DBD\Oracle\ocitrace.h

View File

@@ -0,0 +1,137 @@
/*
Copyright (c) 1994-2006 Tim Bunce
See the COPYRIGHT section in the Oracle.pm file for terms.
*/
/* ====== Include Oracle Header Files ====== */
#ifndef CAN_PROTOTYPE
#define signed /* Oracle headers use signed */
#endif
/* The following define avoids a problem with Oracle >=7.3 where
* ociapr.h has the line:
* sword obindps(struct cda_def *cursor, ub1 opcode, text *sqlvar, ...
* In some compilers that clashes with perls 'opcode' enum definition.
*/
#define opcode opcode_redefined
/* Hack to fix broken Oracle oratypes.h on OSF Alpha. Sigh. */
#if defined(__osf__) && defined(__alpha)
#ifndef A_OSF
#define A_OSF
#endif
#endif
/* egcs-1.1.2 does not have _int64 */
#if defined(__MINGW32__) || defined(__CYGWIN32__)
#define _int64 long long
#endif
/* ori.h uses 'dirty' as an arg name in prototypes so we use this */
/* hack to prevent ori.h being read (since we don't need it) */
/*#define ORI_ORACLE*/
#include <oci.h>
#include <oratypes.h>
#include <ocidfn.h>
#include <orid.h>
#include <ori.h>
/* ------ end of Oracle include files ------ */
#define NEED_DBIXS_VERSION 93
#define PERL_NO_GET_CONTEXT /*for Threaded Perl */
#include <DBIXS.h> /* installed by the DBI module */
#include "dbdimp.h"
#include "dbivport.h"
#include <dbd_xsh.h> /* installed by the DBI module */
/* These prototypes are for dbdimp.c funcs used in the XS file */
/* These names are #defined to driver specific names in dbdimp.h */
void dbd_init _((dbistate_t *dbistate));
void dbd_init_oci_drh _((imp_drh_t * imp_drh));
void dbd_dr_destroy _((SV *drh, imp_drh_t *imp_drh));
int dbd_db_login _((SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *user, char *pwd));
int dbd_db_do _((SV *sv, char *statement));
int dbd_db_commit _((SV *dbh, imp_dbh_t *imp_dbh));
int dbd_db_rollback _((SV *dbh, imp_dbh_t *imp_dbh));
int dbd_st_bind_col(SV *sth, imp_sth_t *imp_sth, SV *col, SV *ref, IV type, SV *attribs);
int dbd_db_disconnect _((SV *dbh, imp_dbh_t *imp_dbh));
void dbd_db_destroy _((SV *dbh, imp_dbh_t *imp_dbh));
int dbd_db_STORE_attrib _((SV *dbh, imp_dbh_t *imp_dbh, SV *keysv, SV *valuesv));
SV *dbd_db_FETCH_attrib _((SV *dbh, imp_dbh_t *imp_dbh, SV *keysv));
int dbd_st_prepare _((SV *sth, imp_sth_t *imp_sth,
char *statement, SV *attribs));
int dbd_st_rows _((SV *sth, imp_sth_t *imp_sth));
int dbd_st_execute _((SV *sth, imp_sth_t *imp_sth));
int dbd_st_cancel _((SV *sth, imp_sth_t *imp_sth));
AV *dbd_st_fetch _((SV *sth, imp_sth_t *imp_sth));
int dbd_st_finish _((SV *sth, imp_sth_t *imp_sth));
void dbd_st_destroy _((SV *sth, imp_sth_t *imp_sth));
int dbd_st_blob_read _((SV *sth, imp_sth_t *imp_sth,
int field, long offset, long len, SV *destrv, long destoffset));
int dbd_st_STORE_attrib _((SV *sth, imp_sth_t *imp_sth, SV *keysv, SV *valuesv));
SV *dbd_st_FETCH_attrib _((SV *sth, imp_sth_t *imp_sth, SV *keysv));
int dbd_bind_ph _((SV *sth, imp_sth_t *imp_sth,
SV *param, SV *value, IV sql_type, SV *attribs, int is_inout, IV maxlen));
int dbd_db_login6 _((SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *user, char *pwd, SV *attr));
int dbd_describe _((SV *sth, imp_sth_t *imp_sth));
ub4 ora_blob_read_piece _((SV *sth, imp_sth_t *imp_sth, imp_fbh_t *fbh, SV *dest_sv,
long offset, UV len, long destoffset));
ub4 ora_blob_read_mb_piece _((SV *sth, imp_sth_t *imp_sth, imp_fbh_t *fbh, SV *dest_sv,
long offset, ub4 len, long destoffset));
/* Oracle types */
#define ORA_VARCHAR2 1
#define ORA_STRING 5
#define ORA_NUMBER 2
#define ORA_LONG 8
#define ORA_ROWID 11
#define ORA_DATE 12
#define ORA_RAW 23
#define ORA_LONGRAW 24
#define ORA_CHAR 96
#define ORA_CHARZ 97
#define ORA_MLSLABEL 105
#define ORA_CLOB 112
#define ORA_BLOB 113
#define ORA_BFILE 114
#define ORA_RSET 116
#define ORA_VARCHAR2_TABLE 201
#define ORA_NUMBER_TABLE 202
#define ORA_XMLTYPE 108
/* other Oracle not in noraml API defines
most of these are largely undocumented XML functions that are in the API but not defined
not normally found in the defines the prototypes of OCI functions in most clients
Normally can be found in ociap.h (Oracle Call Interface - Ansi Prototypes
) and ocikp.h (functions in K&R style)
They will be added when needed
*/
sword OCIXMLTypeCreateFromSrc( OCISvcCtx *svchp, OCIError *errhp,
OCIDuration dur, ub1 src_type, dvoid *src_ptr,
sb4 ind, OCIXMLType **retInstance );
/* end of Oracle.h */

Binary file not shown.

View File

@@ -0,0 +1,442 @@
/*
Copyright (c) 1994-2006 Tim Bunce
Copyright (c) 2006-2008 John Scoles (The Pythian Group), Canada
See the COPYRIGHT section in the Oracle.pm file for terms.
*/
/* ====== define data types ====== */
typedef struct taf_callback_st taf_callback_t;
struct taf_callback_st {
SV *function; /*User supplied TAF functiomn*/
SV *dbh_ref;
};
typedef struct imp_fbh_st imp_fbh_t;
struct imp_drh_st {
dbih_drc_t com; /* MUST be first element in structure */
OCIEnv *envhp;
bool leak_state;
#ifdef ORA_OCI_112
HV *charset_hv;
HV *pool_hv;
#endif
SV *ora_long;
SV *ora_trunc;
SV *ora_cache;
SV *ora_cache_o; /* for ora_open() cache override */
};
#ifdef ORA_OCI_112
typedef struct session_pool_st session_pool_t;
struct session_pool_st {
OCIEnv *envhp;
OCIError *errhp;
OCISPool *poolhp;
OraText *pool_name;
ub4 pool_namel;
int active_sessions;
};
#endif
/* Define dbh implementor data structure */
struct imp_dbh_st {
dbih_dbc_t com; /* MUST be first element in structure */
#ifdef USE_ITHREADS
int refcnt ; /* keep track of duped handles. MUST be first after com */
struct imp_dbh_st * shared_dbh ; /* pointer to shared space from which to dup and keep refcnt */
SV * shared_dbh_priv_sv ;
#endif
void *(*get_oci_handle) _((imp_dbh_t *imp_dbh, int handle_type, int flags));
OCIEnv *envhp; /* copy of drh pointer */
OCIError *errhp;
OCIServer *srvhp;
OCISvcCtx *svchp;
OCISession *seshp;
#ifdef ORA_OCI_112
session_pool_t *pool;
OraText session_tag[50];
boolean session_tag_found;
bool using_drcp;
text *pool_class;
ub4 pool_classl;
ub4 pool_min;
ub4 pool_max;
ub4 pool_incr;
ub4 pool_rlb;
char *driver_name;/*driver name user defined*/
#endif
SV *taf_function; /*User supplied TAF functiomn*/
taf_callback_t taf_ctx;
char *client_info; /*user defined*/
ub4 client_infol;
char *module_name; /*module user defined */
ub4 module_namel;
char *client_identifier; /*user defined*/
ub4 client_identifierl;
char *action; /*user defined*/
ub4 actionl;
int RowCacheSize; /* both of these are defined by DBI spec*/
int RowsInCache; /* this vaue is RO and cannot be set*/
int ph_type; /* default oratype for placeholders */
ub1 ph_csform; /* default charset for placeholders */
int parse_error_offset; /* position in statement of last error */
int max_nested_cursors; /* limit on cached nested cursors per stmt */
int array_chunk_size; /* the max size for an array bind */
ub4 server_version; /* version of Oracle server */
};
#define DBH_DUP_OFF sizeof(dbih_dbc_t)
#define DBH_DUP_LEN (sizeof(struct imp_dbh_st) - sizeof(dbih_dbc_t))
typedef struct lob_refetch_st lob_refetch_t; /* Define sth implementor data structure */
/*statement structure */
struct imp_sth_st {
dbih_stc_t com; /* MUST be first element in structure */
void *(*get_oci_handle) _((imp_sth_t *imp_sth, int handle_type, int flags));
OCIEnv *envhp; /* copy of dbh pointer */
OCIError *errhp; /* copy of dbh pointer */
OCIServer *srvhp; /* copy of dbh pointer */
OCISvcCtx *svchp; /* copy of dbh pointer */
OCIStmt *stmhp; /* oci statement handle */
OCIDescribe *dschp; /* oci describe handle */
int is_child; /* if this is child from a ref cursor or SP*/
ub2 stmt_type; /* OCIAttrGet OCI_ATTR_STMT_TYPE */
U16 auto_lob; /* use auto lobs*/
int pers_lob; /*use dblink for lobs only for 10g Release 2. or later*/
int clbk_lob; /*use dblink for lobs only for 10g Release 2. or later*/
int piece_lob; /*use piece fetch for lobs*/
ub4 piece_size; /*used in callback to set the size of the piece to get*/
int has_lobs; /*Statement has bound LOBS */
int ret_lobs; /*Statement returns LOBS */
lob_refetch_t *lob_refetch;
int nested_cursor; /* cursors fetched from SELECTs */
AV *bind_tuples; /* Bind tuples in array execute, or NULL */
int rowwise; /* If true, bind_tuples is list of */
/* tuples, otherwise list of columns. */
/* Input Details */
char *statement; /* sql (see sth_scan) */
HV *all_params_hv; /* all params, keyed by name */
AV *out_params_av; /* quick access to inout params */
int ora_pad_empty; /* convert ""->" " when binding */
/* Select Column Output Details */
int done_desc; /* have we described this sth yet ? */
imp_fbh_t *fbh; /* array of imp_fbh_t structs */
char *fbh_cbuf; /* memory for all field names */
int t_dbsize; /* raw data width of a row */
UV long_readlen; /* local copy to handle oraperl */
HV *fbh_tdo_hv; /* hash of row #(0 based) and tdo object name from ora_oci_type_names hash */
/* Select Row Cache Details */
sb4 cache_rows;
int in_cache;
int next_entry;
int eod_errno;
int est_width; /* est'd avg row width on-the-wire */
/* (In/)Out Parameter Details */
bool has_inout_params;
/* execute mode*/
/* will be using this alot later me thinks */
ub4 exe_mode;
/* fetch scrolling values */
int fetch_orient;
int fetch_offset;
int fetch_position;
int prefetch_memory; /* OCI_PREFETCH_MEMORY*/
int prefetch_rows; /* OCI_PREFETCH_ROWS */
/* array fetch: state variables */
int row_cache_off;
int rs_fetch_count; /*fetch count*/
int rs_array_size; /*array size local value for RowCacheSize as I do not want to change RowCacheSize */
int rs_array_num_rows; /* num rows in last fetch */
int rs_array_idx; /* index of current row */
sword rs_array_status; /* status of last fetch */
int RowCacheSize; /* both of these are defined by DBI spec*/
int RowsInCache; /* this vaue is RO and cannot be set*/
};
#define IMP_STH_EXECUTING 0x0001
typedef struct fb_ary_st fb_ary_t; /* field buffer array */
struct fb_ary_st { /* field buffer array EXPERIMENTAL */
ub4 bufl; /* length of data buffer */
ub4 cb_bufl; /* length of piece of data fetched in callback.*/
ub4 piece_count;/*# of pieces retrieved*/
sb2 *aindp; /* null/trunc indicator variable */
ub1 *abuf; /* data buffer (points to sv data) */
ub1 *cb_abuf; /*yet another buffer for picewise callbacks this means I only need to allocate memory once a prepare rather than at each fetch*/
ub2 *arlen; /* length of returned data */
ub2 *arcode; /* field level error status */
};
typedef struct fbh_obj_st fbh_obj_t; /*Ebbedded Object Descriptor */
struct fbh_obj_st { /* embedded object or table will work recursively*/
text *type_name; /*object's name (TDO)*/
ub4 type_namel; /*length of the name*/
OCIParam *parmdp; /*Describe attributes of the object OCI_DTYPE_PARAM*/
OCIParam *parmap; /*Describe attributes of the object OCI_ATTR_COLLECTION_ELEMENT OCI_ATTR_PARAM*/
OCIType *tdo; /*object's TDO handle */
OCITypeCode typecode; /*object's OCI_ATTR_TYPECODE */
OCITypeCode col_typecode; /*if collection this is its OCI_ATTR_COLLECTION_TYPECODE */
OCITypeCode element_typecode; /*if collection this is its element's OCI_ATTR_TYPECODE*/
OCIRef *obj_ref; /*if an embedded object this is ref handle to its TDO*/
OCIInd *obj_ind; /*Null indicator for object */
OCIComplexObject *obj_value; /*the actual value from the DB*/
OCIType *obj_type; /*if an embeded object this is the OCIType returned by a OCIObjectPin*/
ub1 is_final_type; /*object's OCI_ATTR_IS_FINAL_TYPE*/
fbh_obj_t *fields; /*one object for each field/property*/
ub2 field_count; /*The number of fields Not really needed but nice to have*/
fbh_obj_t *next_subtype; /*There is stored information about subtypes for inherited objects*/
AV *value; /*The value to send back to Perl This way there are no memory leaks*/
SV *full_type_name; /*Perl value of full type name = schema_name "." type_name*/
};
struct imp_fbh_st { /* field buffer EXPERIMENTAL */
imp_sth_t *imp_sth; /* 'parent' statement */
int field_num; /* 0..n-1 */
/* Oracle's description of the field */
OCIParam *parmdp;
OCIDefine *defnp;
void *desc_h; /* descriptor if needed (LOBs, cursors etc) */
ub4 desc_t; /* OCI type of descriptor */
ub4 define_mode; /*the normal case for a define*/
int (*fetch_func) _((SV *sth, imp_fbh_t *fbh, SV *dest_sv));
void (*fetch_cleanup) _((SV *sth, imp_fbh_t *fbh));
ub2 dbtype; /* actual type of field (see ftype) */
ub2 dbsize;
ub2 prec; /* XXX docs say ub1 but ub2 is needed */
sb1 scale;
ub1 nullok;
char *name;
SV *name_sv; /* only set for OCI8 */
/* OCI docs say OCI_ATTR_CHAR_USED is ub4, they're wrong */
ub1 len_char_used; /* OCI_ATTR_CHAR_USED */
ub2 len_char_size; /* OCI_ATTR_CHAR_SIZE */
ub2 csid; /* OCI_ATTR_CHARSET_ID */
ub1 csform; /* OCI_ATTR_CHARSET_FORM */
ub4 disize; /* max display/buffer size */
ub4 piece_size; /*used in callback to set the size of the piece to get*/
char *bless; /* for Oracle::OCI style handle data */
void *special; /* hook for special purposes (LOBs etc) */
int pers_lob; /*for persistant lobs 10g Release 2. or later*/
int clbk_lob; /*for persistant lobs 10g Release 2. or later*/
int piece_lob; /*use piecewise fetch for lobs*/
/* Our storage space for the field data as it's fetched */
sword ftype; /* external datatype we wish to get */
IV req_type; /* type passed to bind_col */
UV bind_flags; /* flags passed to bind_col */
fb_ary_t *fb_ary ; /* field buffer array */
/* if this is an embedded object we use this */
fbh_obj_t *obj;
};
/* Placeholder structure */
/* Note: phs_t is serialized into scalar value, and de-serialized then. */
/* Be carefull! */
typedef struct phs_st phs_t; /* scalar placeholder */
struct phs_st { /* scalar placeholder EXPERIMENTAL */
imp_sth_t *imp_sth; /* 'parent' statement */
sword ftype; /* external OCI field type */
SV *sv; /* the scalar holding the value */
U32 sv_type; /* original sv type at time of bind */
ub2 csid_orig; /* original oracle default csid */
ub2 csid; /* 0 for automatic */
ub1 csform; /* 0 for automatic */
ub4 maxdata_size; /* set OCI_ATTR_MAXDATA_SIZE if >0 */
bool is_inout;
IV maxlen; /* max possible len (=allocated buffer) */
/* Note: for array bind = buffer for each entry */
OCIBind *bndhp;
void *desc_h; /* descriptor if needed (LOBs etc) */
ub4 desc_t; /* OCI type of desc_h */
ub4 alen;
ub2 arcode;
int idx; /* 0-based index for ?/:1 style, or -1 */
sb2 indp; /* null indicator */
char *progv;
int(*out_prepost_exec)_((SV *, imp_sth_t *, phs_t *, int pre_exec));
SV *ora_field; /* from attribute (for LOB binds) */
ub4 alen_incnull; /* 0 or 1 if alen should include null */
/* Array bind support */
char *array_buf; /* Temporary buffer = malloc(array_buflen) */
int array_buflen; /* Allocated length of array_buf */
int array_numstruct; /* Number of bound structures in buffer */
OCIInd *array_indicators; /* Indicator array = malloc( array_numallocated * sizeof(OCIInd) ) */
unsigned short *array_lengths; /* Array entries lengths = malloc( array_numallocated * sizeof(unsigned short) ) */
int array_numallocated; /* Allocated number of indicators/lengths */
int ora_maxarray_numentries; /* Number of entries to send allocated to Oracle. (may be less, than total allocated) */
/* Support for different internal C-types, representing Oracle data */
int ora_internal_type; /* Which C-type would be bound instead of SQLT_CHR. */
char name[1]; /* struct is malloc'd bigger as needed */
};
/* ------ define functions and external variables ------ */
extern int ora_fetchtest;
extern int dbd_verbose;
extern int oci_warn;
extern int ora_objects;
extern int ora_ncs_buff_mtpl;
extern ub2 charsetid;
extern ub2 ncharsetid;
extern ub2 us7ascii_csid;
extern ub2 utf8_csid;
extern ub2 al32utf8_csid;
extern ub2 al16utf16_csid;
#define CS_IS_UTF8( cs ) \
( ( cs == utf8_csid ) || ( cs == al32utf8_csid ) )
#define CS_IS_NOT_UTF8_COMPATIBLE( cs ) \
( cs == us7ascii_csid )
#define CS_IS_UTF16( cs ) ( cs == al16utf16_csid )
#define CSFORM_IMPLIED_CSID(csform) \
((csform==SQLCS_NCHAR) ? ncharsetid : charsetid)
#define CSFORM_IMPLIES_UTF8(csform) \
CS_IS_UTF8( CSFORM_IMPLIED_CSID( csform ) )
void dbd_init_oci _((dbistate_t *dbistate));
void dbd_preparse _((imp_sth_t *imp_sth, char *statement));
void dbd_fbh_dump(imp_sth_t *imp_sth, imp_fbh_t *fbh, int i, int aidx);
void ora_free_fbh_contents _((SV *sth, imp_fbh_t *fbh));
void ora_free_templob _((SV *sth, imp_sth_t *imp_sth, OCILobLocator *lobloc));
int ora_dbtype_is_long _((int dbtype));
fb_ary_t *fb_ary_alloc _((ub4 bufl, int size));
fb_ary_t *fb_ary_cb_alloc _((ub4 piece_size,ub4 max_len, int size));
int ora_db_reauthenticate _((SV *dbh, imp_dbh_t *imp_dbh, char *uid, char *pwd));
void dbd_phs_sv_complete _((imp_sth_t *imp_sth, phs_t *phs, SV *sv, I32 debug));
void dbd_phs_avsv_complete _((imp_sth_t *imp_sth, phs_t *phs, I32 index, I32 debug));
int pp_exec_rset _((SV *sth, imp_sth_t *imp_sth, phs_t *phs, int pre_exec));
int pp_rebind_ph_rset_in _((SV *sth, imp_sth_t *imp_sth, phs_t *phs));
#define OTYPE_IS_LONG(t) ((t)==8 || (t)==24 || (t)==94 || (t)==95)
int oci_error_err _((SV *h, OCIError *errhp, sword status, char *what, sb4 force_err));
#define oci_error(h, errhp, status, what) oci_error_err(h, errhp, status, what, 0)
char *oci_stmt_type_name _((int stmt_type));
char *oci_typecode_name _((int typecode));
char *sql_typecode_name _((int dbtype));
char *oci_status_name _((sword status));
char *oci_mode _((ub4 mode));
char *oci_bind_options _((ub4 options));
char *oci_define_options _((ub4 options));
char *oci_hdtype_name _((ub4 hdtype));
char *oci_attr_name _((ub4 attr));
char *oci_exe_mode _((ub4 mode));
char *dbd_yes_no _((int yes_no));
char *oci_col_return_codes _((int rc));
char *oci_csform_name _((ub4 attr));
/*char *oci_sql_function_code_name _((int sqlfncode));
char *oci_ptype_name _((int ptype));*/
int dbd_rebind_ph_lob _((SV *sth, imp_sth_t *imp_sth, phs_t *phs));
int dbd_rebind_ph_nty _((SV *sth, imp_sth_t *imp_sth, phs_t *phs));
int ora_st_execute_array _((SV *sth, imp_sth_t *imp_sth, SV *tuples,
SV *tuples_status, SV *columns, ub4 exe_count, SV *err_count));
SV * ora_create_xml _((SV *dbh, char *source));
void ora_free_lob_refetch _((SV *sth, imp_sth_t *imp_sth));
void dbd_phs_avsv_complete _((imp_sth_t *imp_sth, phs_t *phs, I32 index, I32 debug));
void dbd_phs_sv_complete _((imp_sth_t *imp_sth, phs_t *phs, SV *sv, I32 debug));
int post_execute_lobs _((SV *sth, imp_sth_t *imp_sth, ub4 row_count));
ub4 ora_parse_uid _((imp_dbh_t *imp_dbh, char **uidp, char **pwdp));
char *ora_sql_error _((imp_sth_t *imp_sth, char *msg));
char *ora_env_var(char *name, char *buf, unsigned long size);
#ifdef __CYGWIN32__
void ora_cygwin_set_env(char *name, char *value);
#endif /* __CYGWIN32__ */
sb4 dbd_phs_in _((dvoid *octxp, OCIBind *bindp, ub4 iter, ub4 index,
dvoid **bufpp, ub4 *alenp, ub1 *piecep, dvoid **indpp));
sb4 dbd_phs_out _((dvoid *octxp, OCIBind *bindp, ub4 iter, ub4 index,
dvoid **bufpp, ub4 **alenpp, ub1 *piecep,
dvoid **indpp, ub2 **rcodepp));
sb4 presist_lob_fetch_cbk _((dvoid *octxp, OCIDefine *dfnhp, ub4 iter, dvoid **bufpp,
ub4 **alenpp, ub1 *piecep, dvoid **indpp, ub2 **rcpp));
int dbd_rebind_ph_rset _((SV *sth, imp_sth_t *imp_sth, phs_t *phs));
void * oci_db_handle(imp_dbh_t *imp_dbh, int handle_type, int flags);
void * oci_st_handle(imp_sth_t *imp_sth, int handle_type, int flags);
void fb_ary_free(fb_ary_t *fb_ary);
void rs_array_init(imp_sth_t *imp_sth);
ub4 ora_db_version _((SV *dbh, imp_dbh_t *imp_dbh));
sb4 reg_taf_callback _((SV *dbh, imp_dbh_t *imp_dbh));
/* These defines avoid name clashes for multiple statically linked DBD's */
#define dbd_init ora_init
#define dbd_dr_destroy ora_dr_destroy
#define dbd_db_login ora_db_login
#define dbd_db_login6 ora_db_login6
#define dbd_db_do ora_db_do
#define dbd_db_commit ora_db_commit
#define dbd_db_rollback ora_db_rollback
#define dbd_db_cancel ora_db_cancel
#define dbd_db_disconnect ora_db_disconnect
#define dbd_db_destroy ora_db_destroy
#define dbd_take_imp_data ora_take_imp_data
#define dbd_db_STORE_attrib ora_db_STORE_attrib
#define dbd_db_FETCH_attrib ora_db_FETCH_attrib
#define dbd_st_prepare ora_st_prepare
#define dbd_st_rows ora_st_rows
#define dbd_st_cancel ora_st_cancel
#define dbd_st_execute ora_st_execute
#define dbd_st_fetch ora_st_fetch
#define dbd_st_finish ora_st_finish
#define dbd_st_destroy ora_st_destroy
#define dbd_st_blob_read ora_st_blob_read
#define dbd_st_STORE_attrib ora_st_STORE_attrib
#define dbd_st_FETCH_attrib ora_st_FETCH_attrib
#define dbd_describe ora_describe
#define dbd_bind_ph ora_bind_ph
#define dbd_st_bind_col ora_st_bind_col
#include "ocitrace.h"
/* end */

View File

@@ -0,0 +1,373 @@
$dbd_oracle_mm_opts = {
'clean' => {
'FILES' => 'xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def mk.pm DBD_ORA_OBJ.*'
},
'META_MERGE' => {
'resources' => {
'repository' => {
'url' => 'git://github.com/yanick/DBD-Oracle.git',
'type' => 'git',
'web' => 'http://github.com/yanick/DBD-Oracle/tree'
},
'bugtracker' => 'https://github.com/perl5-dbi/DBD-Oracle/issues',
'homepage' => 'https://metacpan.org/pod/DBD::Oracle'
},
'configure_requires' => {
'DBI' => '1.623'
},
'build_requires' => {
'Test::Simple' => '0.90',
'ExtUtils::MakeMaker' => 0,
'DBI' => '1.623'
}
},
'VERSION_FROM' => 'lib/DBD/Oracle.pm',
'PREREQ_PM' => {
'DBI' => '1.623'
},
'INC' => '-IC:/ora122instant64/sdk/include -IC:/ora122instant64/rdbms/demo -IC:\\strawberry\\perl\\vendor\\lib\\auto\\DBI',
'dist' => {
'SUFFIX' => 'gz',
'PREOP' => '$(MAKE) -f Makefile.old distdir',
'DIST_DEFAULT' => 'clean distcheck disttest tardist',
'COMPRESS' => 'gzip -v9'
},
'DIR' => [],
'NAME' => 'DBD::Oracle',
'LICENSE' => 'perl',
'AUTHOR' => 'Tim Bunce (dbi-users@perl.org)',
'ABSTRACT_FROM' => 'lib/DBD/Oracle.pm',
'DEFINE' => ' -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\\"12.2.0.1.0\\" -DORA_OCI_102 -DORA_OCI_112',
'OBJECT' => '$(O_FILES)',
'LIBS' => [
'-LC:/STRAWB~1/env/USERPR~1/.cpanm/work/1611502183.6156/DBD-Oracle-1.80 -loci'
]
};
$dbd_oracle_mm_self = bless( {
'DESTINSTALLVENDORSCRIPT' => '$(DESTDIR)$(INSTALLVENDORSCRIPT)',
'MM_REVISION' => 75800,
'INC' => '-IC:/ora122instant64/sdk/include -IC:/ora122instant64/rdbms/demo -IC:\\strawberry\\perl\\vendor\\lib\\auto\\DBI',
'VERSION_SYM' => '1_80',
'DIR' => $dbd_oracle_mm_opts->{'DIR'},
'PERL_ARCHLIB' => 'C:\\strawberry\\perl\\lib',
'VENDORARCHEXP' => 'C:\\strawberry\\perl\\vendor\\lib',
'BOOTDEP' => '',
'CCDLFLAGS' => ' ',
'PERLMAINCC' => '$(CC)',
'DIST_CP' => 'best',
'FIXIN' => 'pl2bat.bat',
'DLEXT' => 'xs.dll',
'OBJECT' => '$(O_FILES)',
'CI' => 'ci -u',
'LDDLFLAGS' => '-mdll -s -L"C:\\strawberry\\perl\\lib\\CORE" -L"C:\\strawberry\\c\\lib"',
'UNINSTALL' => '$(ABSPERLRUN) -MExtUtils::Command::MM -e uninstall --',
'DESTINSTALLVENDORARCH' => '$(DESTDIR)$(INSTALLVENDORARCH)',
'FIRST_MAKEFILE' => 'Makefile',
'VENDORPREFIX' => 'C:\\strawberry\\perl\\vendor',
'TARFLAGS' => 'cvf',
'PARENT_NAME' => 'DBD',
'VERSION' => '1.80',
'INST_STATIC' => '$(INST_ARCHAUTODIR)\\$(BASEEXT)$(LIB_EXT)',
'LIB_EXT' => '.a',
'PERL_SRC' => undef,
'VENDORLIBEXP' => 'C:\\strawberry\\perl\\vendor\\lib',
'MAP_TARGET' => 'perl',
'SITEPREFIX' => 'C:\\strawberry\\perl\\site',
'DESTINSTALLSITEARCH' => '$(DESTDIR)$(INSTALLSITEARCH)',
'DESTINSTALLVENDORMAN3DIR' => '$(DESTDIR)$(INSTALLVENDORMAN3DIR)',
'MACROSTART' => '',
'DESTINSTALLMAN1DIR' => '$(DESTDIR)$(INSTALLMAN1DIR)',
'clean' => $dbd_oracle_mm_opts->{'clean'},
'UMASK_NULL' => 'umask 0',
'PREFIX' => '$(VENDORPREFIX)',
'LIBC' => '',
'RM_F' => '$(ABSPERLRUN) -MExtUtils::Command -e rm_f --',
'EXTRALIBS' => '"liboci.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libmoldname.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libkernel32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libuser32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libgdi32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libwinspool.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libcomdlg32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libadvapi32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libshell32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libole32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\liboleaut32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libnetapi32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libuuid.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libws2_32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libmpr.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libwinmm.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libversion.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libodbc32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libodbccp32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libcomctl32.a"',
'DESTINSTALLVENDORBIN' => '$(DESTDIR)$(INSTALLVENDORBIN)',
'PREOP' => '$(NOECHO) $(NOOP)',
'INST_AUTODIR' => '$(INST_LIB)\\auto\\$(FULLEXT)',
'FULLEXT' => 'DBD\\Oracle',
'INSTALLVENDORSCRIPT' => 'C:\\strawberry\\perl\\bin',
'INST_MAN3DIR' => 'blib\\man3',
'MOD_INSTALL' => '$(ABSPERLRUN) -MExtUtils::Install -e "install([ from_to => {@ARGV}, verbose => \'$(VERBINST)\', uninstall_shadows => \'$(UNINST)\', dir_mode => \'$(PERM_DIR)\' ]);" --',
'LDFROM' => '$(OBJECT)',
'AR' => 'ar',
'TOUCH' => '$(ABSPERLRUN) -MExtUtils::Command -e touch --',
'TAR' => 'tar',
'PERL_ARCHIVEDEP' => '$(PERL_INCDEP)\\libperl532.a',
'ABSTRACT_FROM' => 'lib/DBD/Oracle.pm',
'META_MERGE' => $dbd_oracle_mm_opts->{'META_MERGE'},
'ABSPERLRUNINST' => '$(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"',
'MAN1SECTION' => 1,
'INSTALLMAN1DIR' => 'none',
'NAME' => 'DBD::Oracle',
'TO_UNIX' => '$(NOECHO) $(NOOP)',
'EQUALIZE_TIMESTAMP' => '$(ABSPERLRUN) -MExtUtils::Command -e eqtime --',
'DISTNAME' => 'DBD-Oracle',
'COMPRESS' => 'gzip --best',
'DIST_DEFAULT' => 'tardist',
'XS' => {
'Oracle.xs' => 'Oracle.c'
},
'AR_STATIC_ARGS' => 'cr',
'DESTINSTALLVENDORMAN1DIR' => '$(DESTDIR)$(INSTALLVENDORMAN1DIR)',
'VERSION_FROM' => 'lib/DBD/Oracle.pm',
'DLSRC' => 'dl_win32.xs',
'INSTALLSITEARCH' => 'C:\\strawberry\\perl\\site\\lib',
'DESTINSTALLSITESCRIPT' => '$(DESTDIR)$(INSTALLSITESCRIPT)',
'PERL_ARCHIVE_AFTER' => '',
'MM_Win32_VERSION' => '7.58',
'TEST_S' => '$(ABSPERLRUN) -MExtUtils::Command::MM -e test_s --',
'MAN1PODS' => {},
'SUFFIX' => '.gz',
'OSVERS' => '10.0.19042.746',
'NOOP' => 'rem',
'INST_ARCHAUTODIR' => '$(INST_ARCHLIB)\\auto\\$(FULLEXT)',
'HAS_LINK_CODE' => 1,
'DESTINSTALLARCHLIB' => '$(DESTDIR)$(INSTALLARCHLIB)',
'ABSTRACT' => 'Oracle database driver for the DBI module',
'ZIPFLAGS' => '-r',
'LIBS' => $dbd_oracle_mm_opts->{'LIBS'},
'TEST_F' => '$(ABSPERLRUN) -MExtUtils::Command -e test_f --',
'DLBASE' => '$(BASEEXT)',
'INSTALLVENDORLIB' => 'C:\\strawberry\\perl\\vendor\\lib',
'MAN3EXT' => '3',
'XS_VERSION' => '1.80',
'SITELIBEXP' => 'C:\\strawberry\\perl\\site\\lib',
'DEFINE' => ' -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\\"12.2.0.1.0\\" -DORA_OCI_102 -DORA_OCI_112',
'PM' => {
'lib/DBD/Oracle/Troubleshooting/Hpux.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Hpux.pod',
'lib/DBD/Oracle/Troubleshooting/Vms.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Vms.pod',
'lib/DBD/Oracle/Troubleshooting/Linux.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Linux.pod',
'lib/DBD/Oracle/Object.pm' => 'blib\\lib\\DBD\\Oracle\\Object.pm',
'lib/DBD/Oracle.pm' => 'blib\\lib\\DBD\\Oracle.pm',
'lib/DBD/Oracle/Troubleshooting/Win32.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Win32.pod',
'lib/DBD/Oracle/GetInfo.pm' => 'blib\\lib\\DBD\\Oracle\\GetInfo.pm',
'lib/DBD/Oracle/Troubleshooting/Aix.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Aix.pod',
'lib/DBD/Oracle/Troubleshooting/Macos.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Macos.pod',
'lib/DBD/Oracle/Troubleshooting/Cygwin.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Cygwin.pod',
'lib/DBD/Oracle/Troubleshooting.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting.pod',
'mk.pm' => '$(INST_LIB)\\DBD\\mk.pm',
'lib/DBD/Oracle/Troubleshooting/Sun.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Sun.pod',
'lib/DBD/Oracle/Troubleshooting/Win64.pod' => 'blib\\lib\\DBD\\Oracle\\Troubleshooting\\Win64.pod'
},
'PERL_LIB' => 'C:\\strawberry\\perl\\lib',
'INSTALLSITEMAN1DIR' => '$(INSTALLMAN1DIR)',
'ZIP' => 'zip',
'INST_BIN' => 'blib\\bin',
'O_FILES' => [
'Oracle.o',
'dbdimp.o',
'oci8.o'
],
'CC' => 'gcc',
'FULLPERLRUNINST' => '$(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"',
'FULL_AR' => '',
'LD' => 'g++',
'ECHO' => '$(ABSPERLRUN) -l -e "binmode STDOUT, qq{:raw}; print qq{@ARGV}" --',
'INSTALLARCHLIB' => 'C:\\strawberry\\perl\\lib',
'SHAR' => 'shar',
'CCCDLFLAGS' => ' ',
'OSNAME' => 'MSWin32',
'NOECHO' => '@',
'UNINST' => '1',
'CONFIG' => [
'ar',
'cc',
'cccdlflags',
'ccdlflags',
'dlext',
'dlsrc',
'exe_ext',
'full_ar',
'ld',
'lddlflags',
'ldflags',
'libc',
'lib_ext',
'obj_ext',
'osname',
'osvers',
'ranlib',
'sitelibexp',
'sitearchexp',
'so',
'vendorarchexp',
'vendorlibexp'
],
'RESULT' => [
'# This Makefile is for the DBD::Oracle extension to perl.
#
# It was generated automatically by MakeMaker version
# 7.58 (Revision: 75800) from the contents of
# Makefile.PL. Don\'t edit this file, edit Makefile.PL instead.
#
# ANY CHANGES MADE HERE WILL BE LOST!
#
# MakeMaker ARGV: ()
#
',
'# MakeMaker Parameters:
',
'# ABSTRACT_FROM => q[lib/DBD/Oracle.pm]',
'# AUTHOR => [q[Tim Bunce (dbi-users@perl.org)]]',
'# BUILD_REQUIRES => { }',
'# CONFIGURE_REQUIRES => { }',
'# DEFINE => q[ -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\\"12.2.0.1.0\\" -DORA_OCI_102 -DORA_OCI_112]',
'# DIR => []',
'# INC => q[-IC:/ora122instant64/sdk/include -IC:/ora122instant64/rdbms/demo -IC:\\strawberry\\perl\\vendor\\lib\\auto\\DBI]',
'# LIBS => [q[-LC:/STRAWB~1/env/USERPR~1/.cpanm/work/1611502183.6156/DBD-Oracle-1.80 -loci]]',
'# LICENSE => q[perl]',
'# META_MERGE => { build_requires=>{ DBI=>q[1.623], ExtUtils::MakeMaker=>q[0], Test::Simple=>q[0.90] }, configure_requires=>{ DBI=>q[1.623] }, resources=>{ bugtracker=>q[https://github.com/perl5-dbi/DBD-Oracle/issues], homepage=>q[https://metacpan.org/pod/DBD::Oracle], repository=>{ type=>q[git], url=>q[git://github.com/yanick/DBD-Oracle.git], web=>q[http://github.com/yanick/DBD-Oracle/tree] } } }',
'# NAME => q[DBD::Oracle]',
'# OBJECT => q[$(O_FILES)]',
'# PREREQ_PM => { DBI=>q[1.623] }',
'# TEST_REQUIRES => { }',
'# VERSION_FROM => q[lib/DBD/Oracle.pm]',
'# clean => { FILES=>q[xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def mk.pm DBD_ORA_OBJ.*] }',
'# dist => { COMPRESS=>q[gzip -v9], DIST_DEFAULT=>q[clean distcheck disttest tardist], PREOP=>q[$(MAKE) -f Makefile.old distdir], SUFFIX=>q[gz] }',
'
# --- MakeMaker post_initialize section:'
],
'INSTALLBIN' => 'C:\\strawberry\\perl\\bin',
'RANLIB' => 'rem',
'PMLIBPARENTDIRS' => [
'lib'
],
'H' => [
'Oracle.h',
'dbdimp.h',
'dbivport.h',
'ocitrace.h'
],
'INST_LIB' => 'blib\\lib',
'EXE_EXT' => '.exe',
'DOC_INSTALL' => '$(ABSPERLRUN) -MExtUtils::Command::MM -e perllocal_install --',
'PERM_RWX' => 755,
'DESTINSTALLMAN3DIR' => '$(DESTDIR)$(INSTALLMAN3DIR)',
'EXPORT_LIST' => '$(BASEEXT).def',
'INSTALLVENDORMAN3DIR' => '$(INSTALLMAN3DIR)',
'MM_VERSION' => '7.58',
'ABSPERL' => '$(PERL)',
'DESTINSTALLBIN' => '$(DESTDIR)$(INSTALLBIN)',
'CP_NONEMPTY' => '$(ABSPERLRUN) -MExtUtils::Command::MM -e cp_nonempty --',
'TEST_REQUIRES' => {},
'ECHO_N' => '$(ABSPERLRUN) -e "print qq{@ARGV}" --',
'CHMOD' => '$(ABSPERLRUN) -MExtUtils::Command -e chmod --',
'VERSION_MACRO' => 'VERSION',
'MAKEFILE_OLD' => 'Makefile.old',
'DEFINE_VERSION' => '-D$(VERSION_MACRO)=\\"$(VERSION)\\"',
'PERLRUN' => '$(PERL)',
'INST_DYNAMIC' => '$(INST_ARCHAUTODIR)\\$(DLBASE).$(DLEXT)',
'LIBPERL_A' => 'libperl.a',
'CP' => '$(ABSPERLRUN) -MExtUtils::Command -e cp --',
'ABSPERLRUN' => '$(ABSPERL)',
'DESTINSTALLSCRIPT' => '$(DESTDIR)$(INSTALLSCRIPT)',
'INST_BOOT' => '$(INST_ARCHAUTODIR)\\$(BASEEXT).bs',
'DEV_NULL' => '> NUL',
'PL_FILES' => {},
'INSTALLVENDORARCH' => 'C:\\strawberry\\perl\\vendor\\lib',
'PERL_INC' => 'C:\\strawberry\\perl\\lib\\CORE',
'TRUE' => '$(ABSPERLRUN) -e "exit 0" --',
'RCS_LABEL' => 'rcs -Nv$(VERSION_SYM): -q',
'PERM_DIR' => 755,
'FALSE' => '$(ABSPERLRUN) -e "exit 1" --',
'ARGS' => {
'LICENSE' => 'perl',
'NAME' => 'DBD::Oracle',
'ABSTRACT_FROM' => 'lib/DBD/Oracle.pm',
'DEFINE' => ' -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\\"12.2.0.1.0\\" -DORA_OCI_102 -DORA_OCI_112',
'AUTHOR' => [
'Tim Bunce (dbi-users@perl.org)'
],
'LIBS' => $dbd_oracle_mm_opts->{'LIBS'},
'OBJECT' => '$(O_FILES)',
'VERSION_FROM' => 'lib/DBD/Oracle.pm',
'META_MERGE' => $dbd_oracle_mm_opts->{'META_MERGE'},
'UNINST' => '1',
'clean' => $dbd_oracle_mm_opts->{'clean'},
'INC' => '-IC:/ora122instant64/sdk/include -IC:/ora122instant64/rdbms/demo -IC:\\strawberry\\perl\\vendor\\lib\\auto\\DBI',
'PREREQ_PM' => $dbd_oracle_mm_opts->{'PREREQ_PM'},
'dist' => $dbd_oracle_mm_opts->{'dist'},
'DIR' => $dbd_oracle_mm_opts->{'DIR'},
'INSTALLDIRS' => 'vendor'
},
'CONFIGURE_REQUIRES' => {},
'MAKE_APERL_FILE' => 'Makefile.aperl',
'INST_ARCHLIBDIR' => '$(INST_ARCHLIB)\\DBD',
'DESTINSTALLSITEMAN3DIR' => '$(DESTDIR)$(INSTALLSITEMAN3DIR)',
'PERM_RW' => 644,
'DESTDIR' => '',
'XS_VERSION_MACRO' => 'XS_VERSION',
'PERL' => '"C:\\strawberry\\perl\\bin\\perl.exe"',
'PERL_ARCHLIBDEP' => 'C:\\strawberry\\perl\\lib',
'INSTALLPRIVLIB' => 'C:\\strawberry\\perl\\lib',
'INSTALLVENDORMAN1DIR' => '$(INSTALLMAN1DIR)',
'INST_LIBDIR' => '$(INST_LIB)\\DBD',
'BUILD_REQUIRES' => {},
'OBJ_EXT' => '.o',
'INSTALLDIRS' => 'vendor',
'USEMAKEFILE' => '-f',
'DISTVNAME' => 'DBD-Oracle-1.80',
'MAN1EXT' => '1',
'SO' => 'dll',
'INSTALLMAN3DIR' => 'none',
'MKPATH' => '$(ABSPERLRUN) -MExtUtils::Command -e mkpath --',
'POSTOP' => '$(NOECHO) $(NOOP)',
'MAKE' => 'gmake',
'PERLPREFIX' => 'C:\\strawberry\\perl',
'SITEARCHEXP' => 'C:\\strawberry\\perl\\site\\lib',
'VERBINST' => 0,
'LDFLAGS' => '-s -L"C:\\strawberry\\perl\\lib\\CORE" -L"C:\\strawberry\\c\\lib"',
'PERL_INCDEP' => 'C:\\strawberry\\perl\\lib\\CORE',
'INSTALLSCRIPT' => 'C:\\strawberry\\perl\\bin',
'LINKTYPE' => 'dynamic',
'LD_RUN_PATH' => '',
'DESTINSTALLSITELIB' => '$(DESTDIR)$(INSTALLSITELIB)',
'AUTHOR' => $dbd_oracle_mm_self->{'ARGS'}{'AUTHOR'},
'MAKEFILE' => 'Makefile',
'INSTALLSITESCRIPT' => 'C:\\strawberry\\perl\\site\\bin',
'INSTALLSITEMAN3DIR' => '$(INSTALLMAN3DIR)',
'PMLIBDIRS' => [
'lib'
],
'INST_ARCHLIB' => 'blib\\arch',
'MAKEMAKER' => 'C:/strawberry/perl/lib/ExtUtils/MakeMaker.pm',
'BSLOADLIBS' => '',
'DIRFILESEP' => '/',
'NAME_SYM' => 'DBD_Oracle',
'MV' => '$(ABSPERLRUN) -MExtUtils::Command -e mv --',
'DESTINSTALLSITEBIN' => '$(DESTDIR)$(INSTALLSITEBIN)',
'INSTALLSITEBIN' => 'C:\\strawberry\\perl\\site\\bin',
'LICENSE' => 'perl',
'MAN3SECTION' => 3,
'INSTALLSITELIB' => 'C:\\strawberry\\perl\\site\\lib',
'DESTINSTALLVENDORLIB' => '$(DESTDIR)$(INSTALLVENDORLIB)',
'BASEEXT' => 'Oracle',
'INST_SCRIPT' => 'blib\\script',
'PREREQ_PM' => {
'DBI' => '1.623'
},
'SKIPHASH' => {},
'PERLRUNINST' => '$(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"',
'WARN_IF_OLD_PACKLIST' => '$(ABSPERLRUN) -MExtUtils::Command::MM -e warn_if_old_packlist --',
'C' => [
'Oracle.c',
'dbdimp.c',
'oci8.c'
],
'dist' => $dbd_oracle_mm_opts->{'dist'},
'MACROEND' => '',
'PERL_CORE' => 0,
'INSTALLVENDORBIN' => 'C:\\strawberry\\perl\\bin',
'RM_RF' => '$(ABSPERLRUN) -MExtUtils::Command -e rm_rf --',
'INST_MAN1DIR' => 'blib\\man1',
'FULLPERL' => '"C:\\strawberry\\perl\\bin\\perl.exe"',
'DESTINSTALLPRIVLIB' => '$(DESTDIR)$(INSTALLPRIVLIB)',
'FULLPERLRUN' => '$(FULLPERL)',
'PERL_ARCHIVE' => '$(PERL_INC)\\libperl532.a',
'LDLOADLIBS' => '"liboci.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libmoldname.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libkernel32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libuser32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libgdi32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libwinspool.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libcomdlg32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libadvapi32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libshell32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libole32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\liboleaut32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libnetapi32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libuuid.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libws2_32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libmpr.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libwinmm.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libversion.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libodbc32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libodbccp32.a" "C:\\strawberry\\c\\x86_64-w64-mingw32\\lib\\libcomctl32.a"',
'DESTINSTALLSITEMAN1DIR' => '$(DESTDIR)$(INSTALLSITEMAN1DIR)',
'XS_DEFINE_VERSION' => '-D$(XS_VERSION_MACRO)=\\"$(XS_VERSION)\\"',
'MAN3PODS' => {}
}, 'PACK001' );

View File

@@ -0,0 +1,601 @@
#ifndef DBD_OCI_TRACEON
/* OCI functions "wrapped" to produce tracefile dumps (may be handy when giving
diagnostic info to Oracle Support, or just learning about OCI)
Macros are named "_log" as a mnemonic that they log to the tracefile if needed
Macros named "_log_stat" return status in last parameter.
*/
#define DBD_OCI_TRACEON(h) (DBIc_DBISTATE(h)->debug >= 6 || dbd_verbose >= 6)
#define DBD_OCI_TRACEFP(h) (DBIc_LOGPIO(h))
#define OciTp ("\tOCI") /* OCI Trace Prefix */
#define OciTstr(s) ((s) ? (text*)(s) : (text*)"<NULL>")
#define ul_t(v) ((unsigned long)(v))
#define pul_t(v) ((unsigned long *)(v))
#define sl_t(v) ((signed long)(v))
#define psl_t(v) ((signed long *)(v))
/* XXX TO DO
1. Add parenthesis around all macro args. (or do item 4 below case-by-case)
DMG: Partly done, sort of. At least the types all match the doc'd casts, anyway.
2. #define a set of OciTxxx macros for different types of parameters
that would allow
a: casting to be hidden
b: casting easily changed on different platforms (64bit etc)
c: mapping of some type values to strings,
d: return pointed-to value instead of pointer where applicable
How to output arguments that are handles to opaque entities (OCIEnv*, etc)?
Output of pointer address is a quick n' dirty way of identifying
any number of handles that may be allocated.... yuck...
It sure would be nice to give something more mnemonic! (and meaningful!)
XXX Turn pointers into variable names by adding a prefix letter and, where
appropriate an &, thus: "...,&p%ld,...",
If done well the log will read like a compilable program.
*/
#define OCIServerRelease_log_stat(impdbh,sc,errhp,b,bl,ht,ver,stat) \
stat =OCIServerRelease(sc,errhp,b,bl,ht,ver);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCIServerRelease(%p)=%s\n",\
OciTp, sc,oci_status_name(stat)),stat \
: stat
#define OCISessionRelease_log_stat(impdbh,svchp,errhp,tag,tagl,mode,stat) \
stat =OCISessionRelease(svchp, errhp, tag, tagl, mode);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCISessionRelease(svchp=%p,tag=\"%s\",mode=%u)=%s\n",\
OciTp, svchp,tag,mode,oci_status_name(stat)),stat \
: stat
#define OCISessionPoolDestroy_log_stat(impdbh, ph, errhp,stat ) \
stat =OCISessionPoolDestroy(ph, errhp,OCI_DEFAULT);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCISessionPoolDestroy(ph=%p)=%s\n",\
OciTp, ph,oci_status_name(stat)),stat \
: stat
#define OCISessionGet_log_stat(impdbh,envhp,errhp,sh,ah,pn,pnl,tag,tagl,rettag,rettagl,found,stat) \
stat =OCISessionGet(envhp, errhp, sh, ah,pn,pnl,tag,tagl,rettag,rettagl,found, OCI_SESSGET_SPOOL);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCISessionGet(envhp=%p,sh=%p,ah=%p,pn=%p,pnl=%d,tag=\"%s\",found=%d)=%s\n",\
OciTp, envhp,sh,ah,pn,pnl,tag,*found,oci_status_name(stat)),stat \
: stat
#define OCISessionPoolCreate_log_stat(impdbh,envhp,errhp,ph,pn,pnl,dbn,dbl,sn,sm,si,un,unl,pw,pwl,mode,stat) \
stat =OCISessionPoolCreate(envhp,errhp,ph,pn,pnl,dbn,dbl,sn,sm,si,un,unl,pw,pwl,mode);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCISessionPoolCreate(envhp=%p,ph=%p,pn=%p,pnl=%p,min=%d,max=%d,incr=%d, un=%s,unl=%lu,pw=%s,pwl=%lu,mode=%u)=%s\n",\
OciTp, envhp,ph,pn,pnl,sn,sm,si,un,(unsigned long)unl,pw,(unsigned long)pwl,mode,oci_status_name(stat)),stat \
: stat
#if defined(ORA_OCI_102)
#define OCIPing_log_stat(impdbh,sc,errhp,stat) \
stat =OCIPing(sc,errhp,OCI_DEFAULT);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCIPing(%p)=%s\n",\
OciTp, sc,oci_status_name(stat)),stat \
: stat
#endif
#define OCIServerVersion_log_stat(impdbh,sc,errhp,b,bl,ht,stat) \
stat =OCIServerVersion(sc,errhp,b,bl,ht);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCIServerVersion_log_stat(%p,%s)=%s\n",\
OciTp, sc,b,oci_status_name(stat)),stat \
: stat
#define OCIStmtGetPieceInfo_log_stat(impsth,stmhp,errhp,hdlptr,hdltyp,in_out,iter,idx,piece,stat) \
stat =OCIStmtGetPieceInfo(stmhp,errhp,hdlptr,hdltyp,in_out,iter,idx,piece);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIStmtGetPieceInfo_log_stat(%p,%p,%u)=%s\n",\
OciTp, (void*)errhp,fbh,*piece,oci_status_name(stat)),stat \
: stat
#define OCIStmtSetPieceInfo_log_stat(impsth,ptr,errhp,buf,blen,p,indp,rc,stat) \
stat =OCIStmtSetPieceInfo(ptr,OCI_HTYPE_DEFINE,errhp, buf, blen, p,indp,rc);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIStmtSetPieceInfo_log_stat(%p,%p,%d,%p)=%s\n",\
OciTp, (void*)errhp,fbh,piece,blen,oci_status_name(stat)),stat \
: stat
#define OCIDefineDynamic_log_stat(impsth,defnp,errhp,fbh,stat) \
stat =OCIDefineDynamic(defnp,errhp,fbh,(OCICallbackDefine) presist_lob_fetch_cbk );\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIDefineDynamic_log_stat(%p,%p,%p)=%s\n",\
OciTp, (void*)defnp, (void*)errhp,fbh,oci_status_name(stat)),stat \
: stat
#define OCIXMLTypeCreateFromSrc_log_stat(impdbh,svchp,errhp,duration,src_type,src_ptr,ind,xml,stat) \
stat =OCIXMLTypeCreateFromSrc (svchp,errhp,duration,(ub1)src_type,(dvoid *)src_ptr,(sb4)ind, xml);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCIXMLTypeCreateFromSrc_log_stat(%p,%p,%d,%d,%p,%d,%p)=%s\n",\
OciTp, (void*)svchp,(void*)errhp, duration, src_type, src_ptr, ind, xml, oci_status_name(stat)),stat \
: stat
#define OCILobFileIsOpen_log_stat(impdbh,envhp,errhp,loc,is_open,stat) \
stat = OCILobFileIsOpen(envhp,errhp,loc,is_open);\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCILobFileIsOpen_log_stat(%p,%p,%p,%p,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp, loc, is_open, *is_open,oci_status_name(stat)),stat : stat
#define OCILobLocatorIsInit_log_stat(impdbh,envhp,errhp,loc,is_initp,stat) \
stat =OCILobLocatorIsInit (envhp,errhp,loc,is_initp );\
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCILobLocatorIsInit_log_stat(%p,%p,%p,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,loc,*is_initp,oci_status_name(stat)),stat \
: stat
#define OCIObjectPin_log_stat(impsth,envhp,errhp,or,ot,stat) \
stat = OCIObjectPin(envhp,errhp,or,(OCIComplexObject *)0,OCI_PIN_LATEST,OCI_DURATION_TRANS,OCI_LOCK_NONE,ot);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sObjectPin_log_stat(%p,%p,%p,%p)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,or,ot,oci_status_name(stat)),stat \
: stat
/*
#define OCICollGetElem_log_stat(envhp,errhp,v,i,ex,e,ne,stat)\
stat = OCICollGetElem(envhp,errhp, v,i,ex,e,ne);\
(DBD_OCI_TRACEON) \
? PerlIO_printf(DBD_OCI_TRACEFP,\
"%sOCICollGetElem_log_stat(%p,%p,%d,%d,%d,%d,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,v,i,ex,e,ne,oci_status_name(stat)),stat \
: stat
*/
/*
#define OCITableFirst_log_stat(envhp,errhp,v,i,stat)\
stat = OCITableFirst(envhp,errhp,v,i);\
(DBD_OCI_TRACEON) \
? PerlIO_printf(DBD_OCI_TRACEFP,\
"%sOCITableFirst_log_stat(%p,%p,%d,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,v,i,oci_status_name(stat)),stat \
: stat
*/
#define OCIObjectGetAttr_log_stat(impsth,envhp,errhp,instance,nullstruct,tdo,names,lengths,namecount,indexes,indexcount,attrnullstatus,attrnullstruct,attrvalue, attrtdo, stat) \
stat = OCIObjectGetAttr(envhp,errhp,instance,nullstruct,tdo,names,lengths,namecount,indexes,indexcount,attrnullstatus,attrnullstruct,attrvalue,attrtdo); \
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIObjectGetAttr_log_stat(%p,%p,%p,%p,%p,%p,%p,%d,%p,%d,%p,%p,%p,%p)=%s\n",\
OciTp, (void*)envhp,(void*)errhp,instance,nullstruct,tdo,names,lengths,namecount,indexes,indexcount,attrnullstatus,attrnullstruct,attrvalue,attrtdo,oci_status_name(stat)),stat \
: stat
#define OCIIntervalToText_log_stat(impsth,envhp,errhp,di,sb,ln,sl,stat) \
stat = OCIIntervalToText(envhp,errhp, *(OCIInterval**)di,3,3,sb,ln,sl);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIIntervalToText(%p,%p,%p,%s)=%s\n",\
OciTp, (void*)errhp, di,sl,sb,oci_status_name(stat)),stat \
: stat
#define OCIDateTimeToText_log_stat(impsth,envhp,errhp,d,sl,sb,stat) \
stat = OCIDateTimeToText(envhp,errhp, *(OCIDateTime**)d,(CONST text*) 0,(ub1) 0,6, (CONST text*) 0, (ub4) 0,(ub4 *)sl,sb );\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIDateTimeToText(%p,%p,%p,%s)=%s\n",\
OciTp, (void*)errhp, d,sl,sb,oci_status_name(stat)),stat \
: stat
#define OCIDateToText_log_stat(impsth,errhp,d,sl,sb,stat) \
stat = OCIDateToText(errhp, (CONST OCIDate *) d,(CONST text*) 0,(ub1) 0, (CONST text*) 0, (ub4) 0,(ub4 *)sl,sb );\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sDateToText_log_stat(%p,%p,%p,%s)=%s\n",\
OciTp, (void*)errhp, d,sl,sb,oci_status_name(stat)),stat \
: stat
#define OCIIterDelete_log_stat(impsth,envhp,errhp,itr,stat) \
stat = OCIIterDelete(envhp,errhp,itr );\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIIterDelete_log_stat(%p,%p,%p)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,itr,oci_status_name(stat)),stat \
: stat
#define OCIIterCreate_log_stat(impsth,envhp,errhp,coll,itr,stat) \
stat = OCIIterCreate(envhp,errhp,coll,itr);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sIterCreate_log_stat(%p,%p,%p)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,(void*)coll,oci_status_name(stat)),stat \
: stat
/*
#define OCICollSize_log_stat(envhp,errhp,coll,coll_siz,stat)\
stat = OCICollSize(envhp,errhp,(CONST OCIColl *)coll,coll_siz);\
(DBD_OCI_TRACEON) \
? PerlIO_printf(DBD_OCI_TRACEFP,\
"%sOCICollSize_log_stat(%p,%p,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp,oci_status_name(stat)),stat \
: stat
*/
#define OCIDefineObject_log_stat(impsth,defnp,errhp,tdo,eo_buff,eo_ind,stat) \
stat = OCIDefineObject(defnp,errhp,tdo,eo_buff,0,eo_ind, 0);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIDefineObject(%p,%p,%p)=%s\n",\
OciTp, (void*)defnp, (void*)errhp, (void*)tdo,oci_status_name(stat)),stat \
: stat
#define OCITypeByName_log(impsth,envhp,errhp,svchp,sn,snl,tn,tnl,vn,vnl,duration,option,tdo,stat) \
stat = OCITypeByName(envhp,errhp,svchp,sn,snl,tn,tnl,vn,vnl,duration,option,tdo); \
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sTypeByName(%p,%p,%p,%s,%d,%s,%d,\"\",0,%d,%d,%p)=%s\n", \
OciTp, (void*)envhp, (void*)errhp, (void*)svchp, sn,snl,tn,tnl,duration,option,tdo,oci_status_name(stat)), stat \
:stat
#define OCITypeByRef_log_stat(impsth,envhp,errhp,ref,tdo,stat) \
stat = OCITypeByRef(envhp,errhp,ref,OCI_DURATION_TRANS,OCI_TYPEGET_ALL,tdo);\
(DBD_OCI_TRACEON(impsth)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sTypeByRef(%p,%p,%p)=%s\n",\
OciTp, (void*)envhp, (void*)errhp, (void*)ref,oci_status_name(stat)),stat \
: stat
/* added by lab */
#define OCILobCharSetId_log_stat(impxxh, envhp, errhp, locp, csidp, stat ) \
stat = OCILobCharSetId( envhp, errhp, locp, csidp ); \
(DBD_OCI_TRACEON(impxxh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobCharSetId(%p,%p,%p,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp, (void*)locp, *csidp, oci_status_name(stat)),stat \
: stat
/* added by lab */
#define OCILobCharSetForm_log_stat(impxxh, envhp, errhp, locp, formp, stat ) \
stat = OCILobCharSetForm( envhp, errhp, locp, formp ); \
(DBD_OCI_TRACEON(impxxh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobCharSetForm(%p,%p,%p,%d)=%s\n",\
OciTp, (void*)envhp, (void*)errhp, (void*)locp, *formp, oci_status_name(stat)),stat \
: stat
/* added by lab */
#define OCINlsEnvironmentVariableGet_log_stat(impdbh, valp, size, item, charset, rsizep ,stat ) \
stat = OCINlsEnvironmentVariableGet( valp, size, item, charset, rsizep ); \
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sNlsEnvironmentVariableGet(%d,%lu,%d,%d,%lu)=%s\n",\
OciTp, *valp, (unsigned long)size, item, charset, (unsigned long)*rsizep, oci_status_name(stat)),stat \
: stat
/* added by lab */
#define OCIEnvNlsCreate_log_stat(impdbh, envp, mode, ctxp, f1, f2, f3, sz, usremepp ,chset, nchset ,stat ) \
stat = OCIEnvNlsCreate(envp, mode, ctxp, f1, f2, f3, sz, usremepp ,chset, nchset ); \
(DBD_OCI_TRACEON(impdbh)) \
? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sEnvNlsEnvCreate(%p,%s,%d,%d,%p,%p,%p,%d,%p,%d,%d)=%s\n", \
OciTp, (void*)envp, oci_mode(mode),mode, ctxp, (void*)f1, (void*)f2, (void*)f3, sz, (void*)usremepp ,chset, nchset, oci_status_name(stat)),stat \
: stat
#define OCIAttrGet_log_stat(impxxh, th,ht,ah,sp,at,eh,stat) \
stat = OCIAttrGet(th,ht,ah,sp,at,eh); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sAttrGet(%p,%s,%p,%p,%s,%p)=%s\n", \
OciTp, (void*)th,oci_hdtype_name(ht),(void*)ah,pul_t(sp),oci_attr_name(at),(void*)eh,\
oci_status_name(stat)),stat : stat
#define OCIAttrGet_d_log_stat(impsth, th,ht,ah,sp,at,eh,stat) \
stat = OCIAttrGet(th,ht,ah,sp,at,eh); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sAttrGet(%p,%s,%p,%p,%s,%p)=%s\n", \
OciTp, (void*)th,oci_hdtype_name(ht),(void*)ah,pul_t(sp),oci_dtype_attr_name(at),(void*)eh,\
oci_status_name(stat)),stat : stat
#define OCIAttrGet_parmap(imp_sth,dh, ht, p1, l, stat) \
OCIAttrGet_log_stat(imp_sth, dh, ht, \
(void*)(p1), (l), OCI_ATTR_PARAM, imp_sth->errhp, stat)
#define OCIAttrGet_parmdp(imp_sth, parmdp, p1, l, a, stat) \
OCIAttrGet_d_log_stat(imp_sth, parmdp, OCI_DTYPE_PARAM, \
(void*)(p1), (l), (a), imp_sth->errhp, stat)
#define OCIAttrGet_stmhp_stat(imp_sth, p1, l, a, stat) \
OCIAttrGet_log_stat(imp_sth, imp_sth->stmhp, OCI_HTYPE_STMT, \
(void*)(p1), (l), (a), imp_sth->errhp, stat)
#define OCIAttrGet_stmhp_stat2(imp_sth, stmhp, p1, l, a, stat) \
OCIAttrGet_log_stat(imp_sth, stmhp, OCI_HTYPE_STMT, \
(void*)(p1), (l), (a), imp_sth->errhp, stat)
#define OCIAttrSet_log_stat(impxxh,th,ht,ah,s1,a,eh,stat) \
stat=OCIAttrSet(th,ht,ah,s1,a,eh); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sAttrSet(%p,%s, %p,%lu,Attr=%s,%p)=%s\n", \
OciTp, (void*)th,oci_hdtype_name(ht),(void *)ah,ul_t(s1),oci_attr_name(a),(void*)eh, \
oci_status_name(stat)),stat : stat
#define OCIBindByName_log_stat(impsth,sh,bp,eh,p1,pl,v,vs,dt,in,al,rc,mx,cu,md,stat) \
stat=OCIBindByName(sh,bp,eh,p1,pl,v,vs,dt,in,al,rc,mx,cu,md); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sBindByName(%p,%p,%p,\"%s\",placeh_len=%ld,value_p=%p,value_sz=%ld," \
"dty=%u,indp=%p,alenp=%p,rcodep=%p,maxarr_len=%lu,curelep=%p (*=%d),mode=%s,%lu)=%s\n",\
OciTp, (void*)sh,(void*)bp,(void*)eh,p1,sl_t(pl),(void*)(v), \
sl_t(vs),(ub2)(dt),(void*)(in),(ub2*)(al),(ub2*)(rc), \
ul_t((mx)),pul_t((cu)),(cu ? *(int*)cu : 0 ) ,oci_bind_options(md),ul_t((md)), \
oci_status_name(stat)),stat : stat
#define OCIBindArrayOfStruct_log_stat(impsth,bp,ep,sd,si,sl,sr,stat) \
stat=OCIBindArrayOfStruct(bp,ep,sd,si,sl,sr); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sOCIBindArrayOfStruct(%p,%p,%u,%u,%u,%u)=%s\n", \
OciTp,(void*)bp,(void*)ep,sd,si,sl,sr, \
oci_status_name(stat)),stat : stat
#define OCIBindDynamic_log(impsth,bh,eh,icx,cbi,ocx,cbo,stat) \
stat=OCIBindDynamic(bh,eh,icx,cbi,ocx,cbo); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sBindDynamic(%p,%p,%p,%p,%p,%p)=%s\n", \
OciTp, (void*)bh,(void*)eh,(void*)icx,(void*)cbi, \
(void*)ocx,(void*)cbo, \
oci_status_name(stat)),stat : stat
#define OCIDefineByPos_log_stat(impsth,sh,dp,eh,p1,vp,vs,dt,ip,rp,cp,m,stat) \
stat=OCIDefineByPos(sh,dp,eh,p1,vp,vs,dt,ip,rp,cp,m); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sDefineByPos(%p,%p,%p,%lu,%p,%ld,%u,%p,%p,%p,mode=%s,%lu)=%s\n", \
OciTp, (void*)sh,(void*)dp,(void*)eh,ul_t((p1)),(void*)(vp), \
sl_t(vs),(ub2)dt,(void*)(ip),(ub2*)(rp),(ub2*)(cp),oci_define_options(m),ul_t(m), \
oci_status_name(stat)),stat : stat
#define OCIDescribeAny_log_stat(impsth,sh,eh,op,ol,opt,il,ot,dh,stat) \
stat=OCIDescribeAny(sh,eh,op,ol,opt,il,ot,dh); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sDescribeAny(%p,%p,%p,%lu,%u,%u,%u,%p)=%s\n", \
OciTp, (void*)sh,(void*)eh,(void*)op,ul_t(ol), \
(ub1)opt,(ub1)il,(ub1)ot,(void*)dh, \
oci_status_name(stat)),stat : stat
#define OCIDescriptorAlloc_ok(impxxh,envhp, p1, t) \
if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sDescriptorAlloc(%p,%p,%s,0,0)\n", \
OciTp,(void*)envhp,(void*)(p1),oci_hdtype_name(t)); \
if (OCIDescriptorAlloc((envhp), (void**)(p1), (t), 0, 0)==OCI_SUCCESS); \
else croak("OCIDescriptorAlloc (type %d) failed",t)
#define OCIDescriptorFree_log(impxxh,d,t) \
if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sDescriptorFree(%p,%s)\n", OciTp, (void*)d,oci_hdtype_name(t)); \
OCIDescriptorFree(d,t)
#define OCIEnvInit_log_stat(impdbh,ev,md,xm,um,stat) \
stat=OCIEnvInit(ev,md,xm,um); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sEnvInit(%p,%lu,%lu,%p)=%s\n", \
OciTp, (void*)ev,ul_t(md),ul_t(xm),(void*)um, \
oci_status_name(stat)),stat : stat
#define OCIErrorGet_log_stat(impxxh, hp,rn,ss,ep,bp,bs,t, stat) \
((stat = OCIErrorGet(hp,rn,ss,ep,bp,bs,t)), \
((DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sErrorGet(%p,%lu,\"%s\",%p,\"%s\",%lu,%lu)=%s\n", \
OciTp, (void*)hp,ul_t(rn),OciTstr(ss),psl_t(ep), \
bp,ul_t(bs),ul_t(t), oci_status_name(stat)),stat : stat))
#define OCIHandleAlloc_log_stat(impxxh,ph,hp,t,xs,ump,stat) \
stat=OCIHandleAlloc(ph,hp,t,xs,ump); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%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
#define OCIHandleAlloc_ok(impxxh,envhp, p1, t, stat) \
OCIHandleAlloc_log_stat(impxxh,(envhp),(void**)(p1),(t),0,0, stat); \
if (stat==OCI_SUCCESS) ; \
else croak("OCIHandleAlloc(%s) failed",oci_hdtype_name(t))
#define OCIHandleFree_log_stat(impxxh,hp,t,stat) \
stat=OCIHandleFree( (hp), (t)); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sHandleFree(%p,%s)=%s\n",OciTp,(void*)hp,oci_hdtype_name(t), \
oci_status_name(stat)),stat : stat
#define OCILobGetLength_log_stat(impxxh,sh,eh,lh,l,stat) \
stat=OCILobGetLength(sh,eh,lh,l); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobGetLength(%p,%p,%p,%p)=%s\n", \
OciTp, (void*)sh,(void*)eh,(void*)lh,pul_t(l), \
oci_status_name(stat)),stat : stat
#define OCILobGetChunkSize_log_stat(impdbh,sh,eh,lh,cs,stat) \
stat=OCILobGetChunkSize(sh,eh,lh,cs); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sLobGetChunkSize(%p,%p,%p,%p)=%s\n", \
OciTp, (void*)sh,(void*)eh,(void*)lh,pul_t(cs), \
oci_status_name(stat)),stat : stat
#define OCILobFileOpen_log_stat(impxxh,sv,eh,lh,mode,stat) \
stat=OCILobFileOpen(sv,eh,lh,mode); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobFileOpen(%p,%p,%p,%u)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh,(ub1)mode, \
oci_status_name(stat)),stat : stat
#define OCILobFileClose_log_stat(impsth,sv,eh,lh,stat) \
stat=OCILobFileClose(sv,eh,lh); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sLobFileClose(%p,%p,%p)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh, \
oci_status_name(stat)),stat : stat
/*Added by JPS for Jeffrey.Klein*/
#define OCILobCreateTemporary_log_stat(impdbh,sv,eh,lh,csi,csf,lt,ca,dur,stat) \
stat=OCILobCreateTemporary(sv,eh,lh,csi,csf,lt,ca,dur); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sLobCreateTemporary(%p,%p,%p,%lu,%lu,%lu,%lu,%lu)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh, \
ul_t(csi),ul_t(csf),ul_t(lt),ul_t(ca),ul_t(dur), \
oci_status_name(stat)),stat : stat
/*end add*/
#define OCILobFreeTemporary_log_stat(impxxh,sv,eh,lh,stat) \
stat=OCILobFreeTemporary(sv,eh,lh); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobFreeTemporary(%p,%p,%p)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh, \
oci_status_name(stat)),stat : stat
#define OCILobIsTemporary_log_stat(impsth,ev,eh,lh,istemp,stat) \
stat=OCILobIsTemporary(ev,eh,lh,istemp); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sLobIsTemporary(%p,%p,%p,%p)=%s\n", \
OciTp, (void*)ev,(void*)eh,(void*)lh,(void*)istemp, \
oci_status_name(stat)),stat : stat
/*Added by JPS for Jeffrey.Klein */
#define OCILobLocatorAssign_log_stat(impdbh,sv,eh,src,dest,stat) \
stat=OCILobLocatorAssign(sv,eh,src,dest); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sLobLocatorAssign(%p,%p,%p,%p)=%s\n", \
OciTp,(void*)sv,(void*)eh,(void*)src,(void*)dest, \
oci_status_name(stat)),stat : stat
/*end add*/
#define OCILobRead_log_stat(impxxh,sv,eh,lh,am,of,bp,bl,cx,cb,csi,csf,stat) \
stat=OCILobRead(sv,eh,lh,am,of,bp,bl,cx,cb,csi,csf); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobRead(%p,%p,%p,%p,%lu,%p,%lu,%p,%p,%u,%u)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh,pul_t(am),ul_t(of), \
(void*)bp,ul_t(bl),(void*)cx,(void*)cb,(ub2)csi,(ub1)csf, \
oci_status_name(stat)),stat : stat
#define OCILobTrim_log_stat(impxxh,sv,eh,lh,l,stat) \
stat=OCILobTrim(sv,eh,lh,l); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobTrim(%p,%p,%p,%lu)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh,ul_t(l), \
oci_status_name(stat)),stat : stat
#define OCILobWrite_log_stat(impxxh,sv,eh,lh,am,of,bp,bl,p1,cx,cb,csi,csf,stat) \
stat=OCILobWrite(sv,eh,lh,am,of,bp,bl,p1,cx,cb,csi,csf); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobWrite(%p,%p,%p,%p,%lu,%p,%lu,%u,%p,%p,%u,%u)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh,pul_t(am),ul_t(of), \
(void*)bp,ul_t(bl),(ub1)p1, \
(void*)cx,(void*)cb,(ub2)csi,(ub1)csf, \
oci_status_name(stat)),stat : stat
#define OCILobWriteAppend_log_stat(impxxh,sv,eh,lh,am,bp,bl,p1,cx,cb,csi,csf,stat) \
stat=OCILobWriteAppend(sv,eh,lh,am,bp,bl,p1,cx,cb,csi,csf); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sLobWriteAppend(%p,%p,%p,%p,%p,%lu,%u,%p,%p,%u,%u)=%s\n", \
OciTp, (void*)sv,(void*)eh,(void*)lh,pul_t(am), \
(void*)bp,ul_t(bl),(ub1)p1, \
(void*)cx,(void*)cb,(ub2)csi,(ub1)csf, \
oci_status_name(stat)),stat : stat
#define OCIParamGet_log_stat(impsth,hp,ht,eh,pp,ps,stat) \
stat=OCIParamGet(hp,ht,eh,pp,ps); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sParamGet(%p,%lu,%p,%p,%lu,%s)=%s\n", \
OciTp, (void*)hp,ul_t((ht)),(void*)eh,(void*)pp,ul_t(ps), \
oci_hdtype_name(ht),oci_status_name(stat)),stat : stat
#define OCIServerAttach_log_stat(imp_dbh, dbname,md,stat) \
stat=OCIServerAttach( imp_dbh->srvhp, imp_dbh->errhp, \
(text*)dbname, (sb4)strlen(dbname), md); \
(DBD_OCI_TRACEON(imp_dbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(imp_dbh), \
"%sServerAttach(%p, %p, \"%s\", %lu, mode=%s,%lu)=%s\n", \
OciTp, (void*)imp_dbh->srvhp,(void*)imp_dbh->errhp, dbname, \
ul_t(strlen(dbname)), oci_mode(md),ul_t(md),oci_status_name(stat)),stat : stat
#define OCIStmtExecute_log_stat(impsth,sv,st,eh,i,ro,si,so,md,stat) \
stat=OCIStmtExecute(sv,st,eh,i,ro,si,so,md); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sStmtExecute(%p,%p,%p,%lu,%lu,%p,%p,mode=%s,%lu)=%s\n", \
OciTp, (void*)sv,(void*)st,(void*)eh,ul_t((i)), \
ul_t((ro)),(void*)(si),(void*)(so),oci_exe_mode(md),ul_t((md)), \
oci_status_name(stat)),stat : stat
#define OCIStmtFetch_log_stat(impsth,sh,eh,nr,or,os,stat) \
stat=OCIStmtFetch2(sh,eh,nr,or,os,OCI_DEFAULT); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sStmtFetch(%p,%p,%lu,%u,%d)=%s\n", \
OciTp, (void*)sh,(void*)eh,ul_t(nr),(ub2)or,(ub2)os, \
oci_status_name(stat)),stat : stat
#define OCIStmtPrepare_log_stat(impsth,sh,eh,s1,sl,l,m,stat) \
stat=OCIStmtPrepare(sh,eh,s1,sl,l,m); \
(DBD_OCI_TRACEON(impsth)) ? PerlIO_printf(DBD_OCI_TRACEFP(impsth), \
"%sStmtPrepare(%p,%p,'%s',%lu,%lu,%lu)=%s\n", \
OciTp, (void*)sh,(void*)eh,s1,ul_t(sl),ul_t(l),ul_t(m), \
oci_status_name(stat)),stat : stat
#define OCIServerDetach_log_stat(impdbh,sh,eh,md,stat) \
stat=OCIServerDetach(sh,eh,md); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sServerDetach(%p,%p,mode=%s,%lu)=%s\n", \
OciTp, (void*)sh,(void*)eh,oci_mode(md),ul_t(md), \
oci_status_name(stat)),stat : stat
#define OCISessionBegin_log_stat(impdbh,sh,eh,uh,cr,md,stat) \
stat=OCISessionBegin(sh,eh,uh,cr,md); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sSessionBegin(%p,%p,%p,%lu,mode=%s %lu)=%s\n", \
OciTp, (void*)sh,(void*)eh,(void*)uh,ul_t(cr),oci_mode(md),ul_t(md), \
oci_status_name(stat)),stat : stat
#define OCISessionEnd_log_stat(impdbh,sh,eh,ah,md,stat) \
stat=OCISessionEnd(sh,eh,ah,md); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sSessionEnd(%p,%p,%p,mode=%s %lu)=%s\n", \
OciTp, (void*)sh,(void*)eh,(void*)ah,oci_mode(md),ul_t(md), \
oci_status_name(stat)),stat : stat
#define OCITransCommit_log_stat(impxxh,sh,eh,md,stat) \
stat=OCITransCommit(sh,eh,md); \
(DBD_OCI_TRACEON(impxxh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
"%sTransCommit(%p,%p,%lu)=%s\n", \
OciTp, (void*)sh,(void*)eh,ul_t(md), \
oci_status_name(stat)),stat : stat
#define OCITransRollback_log_stat(impdbh,sh,eh,md,stat) \
stat=OCITransRollback(sh,eh,md); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sTransRollback(%p,%p,mode=%s %lu)=%s\n", \
OciTp, (void*)sh,(void*)eh,oci_mode(md),ul_t(md), \
oci_status_name(stat)),stat : stat
#define OCIDBStartup_log_stat(impdbh,svchp,errhp,admhp,mode,flags,stat) \
stat=OCIDBStartup(svchp,errhp,admhp,mode,flags); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCIDBStartup(%p,%p,%p,%u,%u)=%s\n", \
OciTp, (void*)svchp,(void*)errhp,(void*)admhp,mode,flags, \
oci_status_name(stat)),stat : stat
#define OCIDBShutdown_log_stat(impdbh,svchp,errhp,admhp,mode,stat) \
stat=OCIDBShutdown(svchp,errhp,admhp,mode); \
(DBD_OCI_TRACEON(impdbh)) ? PerlIO_printf(DBD_OCI_TRACEFP(impdbh), \
"%sOCIDBShutdown(%p,%p,%p,%u)=%s\n", \
OciTp, (void*)svchp,(void*)errhp,(void*)admhp,mode, \
oci_status_name(stat)),stat : stat
#endif /* !DBD_OCI_TRACEON */