Tim Bunce wrote:
> 
> I'd rather not go that way (I don't like solutions that require
> mangling the sql in odd ways).

Hmm, ok then.
 

> I think I'd rather optionally ignore placeholders named ':old' and ':new'.
> Also, I think there was a patch floating around that optionally
> disabled :foo style placeholders. That would also suffice.

Ok, here it is, it ignores and passes through stuff that starts out like
a : placeholder and ends with a ., as far as I know there is no use for
a dot right after a placeholder so this ought to be 100% safe and
transparent.

This means that there is no need to have :: in the SAPDB code, whee!


--- orig/DBD-ODBC-0.29/dbdimp.c Thu Nov  8 10:48:01 2001
+++ DBD-ODBC-0.29/dbdimp.c      Tue Dec  4 19:51:27 2001
@@ -183,16 +183,15 @@
      * and level 2+ just to indicate that we are trying SQLConnect.
      */
     if (!SQL_ok(rc)) {
+       if (DBIS->debug > 3) {
 #ifdef DBD_ODBC_NO_SQLDRIVERCONNECT
        PerlIO_printf(DBILOGFP, "SQLDriverConnect unsupported.\n");
 #else
-       if (DBIS->debug > 3) {
            PerlIO_printf(DBILOGFP, "SQLDriverConnect failed:\n");
            AllODBCErrors(imp_dbh->henv, imp_dbh->hdbc, 0, 1);
-       }
-
 #endif /* DriverConnect supported */
-
+       }
+
        if (DBIS->debug >= 2)
            PerlIO_printf(DBILOGFP, "SQLConnect '%s', '%s', '%s'\n",
dbname, uid, pwd);

@@ -488,18 +487,27 @@
            while(isDIGIT(*src))
                *p++ = *src++;
            *p = 0;
+
            style = 1;
        }
        else if (isALNUM(*src)) {       /* ':foo'       */
            char *p = name;
-           *dest++ = '?';

            while(isALNUM(*src))        /* includes '_' */
                *p++ = *src++;
            *p = 0;
+
+           if (*src == '.') { /* Ignore :new.field, for sapdb triggers
*/
+               *dest++ = ':';
+               strcpy(dest, name);
+               dest += strlen(name);
+               continue;
+           }
+
+           *dest++ = '?';
            style = 2;
        }

-- 
 Regards Flemming Frandsen aka. Dion/Swamp http://dion.swamp.dk

Reply via email to