Author: byterock
Date: Fri Oct 31 08:07:55 2008
New Revision: 12016

Modified:
   dbd-oracle/trunk/Changes
   dbd-oracle/trunk/Oracle.pm
   dbd-oracle/trunk/oci8.c

Log:
 Fix for rt.cpan.org Ticket #=38267 Inserts/Updates to BLOB's via synonyms 
fails from John Scoles also a fix for pod text
 

Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes    (original)
+++ dbd-oracle/trunk/Changes    Fri Oct 31 08:07:55 2008
@@ -1,4 +1,5 @@
 =head1 Changes in DBD-Oracle 1.23(svn rev #####) 
+  Fix for rt.cpan.org Ticket #=38267: Inserts/Updates to BLOB's via synonyms 
fails from John Scoles
   Fix for rt.cpan.org Ticket #=39603 build problem and fix missing functions 
in oci.def from Zolt�n Sebesty�n
   Fix for rt.cpan.org Ticket #=39374 Makefile.PL: error when reducing echo 
messages from make from Tippa
   Fix for rt.cpan.org Ticket #=39232 binding large XMLTYPE fails on 64-bit 
perl from Jeff Klein 

Modified: dbd-oracle/trunk/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/Oracle.pm  (original)
+++ dbd-oracle/trunk/Oracle.pm  Fri Oct 31 08:07:55 2008
@@ -3811,7 +3811,7 @@
 
 For example, assume you have the existing PL/SQL Package :
 
-CREATE OR REPLACE PACKAGE Array_Example AS
+  CREATE OR REPLACE PACKAGE Array_Example AS
     --
     TYPE tRec IS RECORD (
         Col1    NUMBER,
@@ -3822,25 +3822,25 @@
     --
     FUNCTION Array_Func RETURN taRec ;
     --
-END Array_Example ;
+  END Array_Example ;
 
-CREATE OR REPLACE PACKAGE BODY Array_Example AS
---
-FUNCTION Array_Func RETURN taRec AS
---
+  CREATE OR REPLACE PACKAGE BODY Array_Example AS
+  --
+  FUNCTION Array_Func RETURN taRec AS
+  --
     l_Ret       taRec ;
---
-BEGIN
+  --
+  BEGIN
     FOR i IN 1 .. 5 LOOP
         l_Ret (i).Col1 := i ;
         l_Ret (i).Col2 := 'Row : ' || i ;
         l_Ret (i).Col3 := TRUNC (SYSDATE) + i ;
     END LOOP ;
     RETURN l_Ret ;
-END ;
---
-END Array_Example ;
-/
+  END ;
+  --
+  END Array_Example ;
+  /
 
 Currently, there is no way to directly call the function
 Array_Example.Array_Func from DBI.  However, by making the following relatively

Modified: dbd-oracle/trunk/oci8.c
==============================================================================
--- dbd-oracle/trunk/oci8.c     (original)
+++ dbd-oracle/trunk/oci8.c     Fri Oct 31 08:07:55 2008
@@ -3403,6 +3403,7 @@
     if (status == OCI_SUCCESS) { /* There is a synonym, get the schema */
        char *syn_schema=NULL, *syn_name=NULL;
        char new_tablename[100];
+
        ub4 syn_schema_len = 0, syn_name_len = 0,tn_len;
        OCIAttrGet_log_stat(imp_sth->dschp,  OCI_HTYPE_DESCRIBE,
                                  &parmhp, 0, OCI_ATTR_PARAM, errhp, status);
@@ -3412,11 +3413,12 @@
                              &syn_name, &syn_name_len, OCI_ATTR_OBJ_NAME, 
errhp, status);
                OCIAttrGet_log_stat(parmhp, OCI_DTYPE_PARAM,
                              &tablename, &tn_len, OCI_ATTR_NAME, errhp, 
status);
-               strcpy(new_tablename,syn_schema);
-               strcat(new_tablename, ".");
-       strncat(new_tablename, tablename,tn_len);
-           tablename=new_tablename;
 
+               strncpy(new_tablename,syn_schema,syn_schema_len);
+               new_tablename[syn_schema_len+1] = '\0';
+               new_tablename[syn_schema_len]='.';
+               strncat(new_tablename, tablename,tn_len);
+           tablename=new_tablename;
            if (DBIS->debug >= 3 || dbd_verbose >= 3)
                        PerlIO_printf(DBILOGFP, "       lob refetching a 
synonym named=%s for %s \n", syn_name,tablename);
     }

Reply via email to