Author: byterock
Date: Wed Mar 19 10:41:04 2008
New Revision: 10955
Modified:
dbd-oracle/branches/dblink/Oracle.pm
dbd-oracle/branches/dblink/Oracle.xs
dbd-oracle/branches/dblink/oci8.c
Log:
well that was easy support for inserts now. All I have do do was add the
SQLT_CHR to the PM and use it on the bind
Modified: dbd-oracle/branches/dblink/Oracle.pm
==============================================================================
--- dbd-oracle/branches/dblink/Oracle.pm (original)
+++ dbd-oracle/branches/dblink/Oracle.pm Wed Mar 19 10:41:04 2008
@@ -22,7 +22,7 @@
ORA_VARCHAR2 ORA_STRING ORA_NUMBER ORA_LONG ORA_ROWID ORA_DATE
ORA_RAW ORA_LONGRAW ORA_CHAR ORA_CHARZ ORA_MLSLABEL ORA_NTY
ORA_CLOB ORA_BLOB ORA_RSET ORA_VARCHAR2_TABLE ORA_NUMBER_TABLE
- SQLT_INT SQLT_FLT XMLType
+ SQLT_INT SQLT_FLT SQLT_CHR
) ],
ora_session_modes => [ qw( ORA_SYSDBA ORA_SYSOPER ) ],
);
Modified: dbd-oracle/branches/dblink/Oracle.xs
==============================================================================
--- dbd-oracle/branches/dblink/Oracle.xs (original)
+++ dbd-oracle/branches/dblink/Oracle.xs Wed Mar 19 10:41:04 2008
@@ -32,7 +32,8 @@
SQLCS_IMPLICIT = SQLCS_IMPLICIT
SQLCS_NCHAR = SQLCS_NCHAR
SQLT_INT = SQLT_INT
- SQLT_FLT = SQLT_FLT
+ SQLT_FLT = SQLT_FLT
+ SQLT_CHR = SQLT_CHR
CODE:
if (!ix) {
if (!name) name = GvNAME(CvGV(cv));
@@ -110,7 +111,7 @@
ST(0) = dbd_bind_ph(sth, imp_sth, param,av_value, sql_type, attribs, TRUE,
maxlen)
? &sv_yes : &sv_no;
}
-
+
void
ora_fetch(sth)
SV * sth
@@ -227,7 +228,7 @@
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
ST(0) = &sv_undef;
return;
- }
+ }
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid,
status );
@@ -429,6 +430,6 @@
dbd_init_oci(DBIS) ;
dbd_init_oci_drh(imp_drh) ;
-
-
+
+
Modified: dbd-oracle/branches/dblink/oci8.c
==============================================================================
--- dbd-oracle/branches/dblink/oci8.c (original)
+++ dbd-oracle/branches/dblink/oci8.c Wed Mar 19 10:41:04 2008
@@ -327,7 +327,7 @@
/* negative value. OCI_ATTR_PREFETCH_MEMORY */
if (!DBIc_ACTIVE(imp_dbh)) {
- oci_error(sth, NULL, OCI_ERROR, "Database disconnected");
+ oci_error(sth, NULL, OCI_ERROR, "Database disconnected");
return 0;
}
@@ -348,22 +348,22 @@
imp_sth->auto_lob = 1;
if (attribs) {
- SV **svp;
- IV ora_auto_lob = 1;
- DBD_ATTRIB_GET_IV( attribs, "ora_parse_lang", 14, svp, oparse_lng);
- DBD_ATTRIB_GET_IV( attribs, "ora_placeholders", 16, svp,
ora_placeholders);
- DBD_ATTRIB_GET_IV( attribs, "ora_auto_lob", 12, svp, ora_auto_lob);
- DBD_ATTRIB_GET_IV( attribs, "ora_dblink_lob", 14, svp,
ora_dblink_lob);
-
- imp_sth->auto_lob = (ora_auto_lob) ? 1 : 0;
- imp_sth->dblink_lob = (ora_auto_lob) ? 1 : 0;
- /* ora_check_sql only works for selects owing to Oracle behaviour */
- DBD_ATTRIB_GET_IV( attribs, "ora_check_sql", 13, svp, ora_check_sql);
+ SV **svp;
+ IV ora_auto_lob = 1;
+ DBD_ATTRIB_GET_IV( attribs, "ora_parse_lang", 14, svp,
oparse_lng);
+ DBD_ATTRIB_GET_IV( attribs, "ora_placeholders", 16, svp,
ora_placeholders);
+ DBD_ATTRIB_GET_IV( attribs, "ora_auto_lob", 12, svp,
ora_auto_lob);
+ DBD_ATTRIB_GET_IV( attribs, "ora_dblink_lob", 14, svp,
ora_dblink_lob);
+
+ imp_sth->auto_lob = (ora_auto_lob) ? 1 : 0;
+ imp_sth->dblink_lob = (ora_auto_lob) ? 1 : 0;
+ /* ora_check_sql only works for selects owing to Oracle
behaviour */
+ DBD_ATTRIB_GET_IV( attribs, "ora_check_sql", 13, svp,
ora_check_sql);
}
/* scan statement for '?', ':1' and/or ':foo' style placeholders */
if (ora_placeholders)
- dbd_preparse(imp_sth, statement);
+ dbd_preparse(imp_sth, statement);
else imp_sth->statement = savepv(statement);
imp_sth->envhp = imp_dbh->envhp;
@@ -401,8 +401,8 @@
DBIc_IMPSET_on(imp_sth);
if (ora_check_sql) {
- if (!dbd_describe(sth, imp_sth))
- return 0;
+ if (!dbd_describe(sth, imp_sth))
+ return 0;
}
else {
/* set initial cache size by memory */
@@ -2245,10 +2245,9 @@
fbh->ftype = fbh->dbtype;
/* do we need some addition size logic here? (lab) */
if (imp_sth->dblink_lob){
- fbh->disize= 2*1022*1024*1024-1; /*2 gig*/
+ fbh->disize= 2*1022*1024*1024-1; /*2 gig -1 so it will not max
out.*/
fbh->ftype=SQLT_CHR;
} else {
-
fbh->disize = fbh->dbsize *10 ; /* XXX! */
fbh->fetch_func = (imp_sth->auto_lob) ?
fetch_func_autolob : fetch_func_getrefpv;
fbh->bless = "OCILobLocatorPtr";