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