This was reported just a few days ago on rt cpan

http://rt.cpan.org/Public/Bug/Display.html?id=35353

I fixed it and checked it in.  It will be in release 1.22 of DBD::Oracle

cheers
John Scoles
> With Oracle having finally come out with native Intel drivers for
> MacOS, I tried to install these to get rid of having to use a Rosetta-
> ized version of perl to run Oracle things through, but kept running
> into a problem where sometimes bind variables would work, and
> sometimes I would get things like:
>
> ORA-00911: invalid character (DBD ERROR: error possibly near <*>
> indicator at char 77 in '
>       SELECT
>               System_User_ID,
>               '1' Hey
>       FROM
>               System_User
>       WHERE
>               Login LIKE <*>? ESCAPE '\'
>
> After more investigation, I determined that any query that contained a
> literal quote would die like this, and any query that did not was
> fine.  It seems that there is an error in dbdimp.c where is_literal is
> defined as a bool but then used as a char.  This triggers the
> behavior, at least GCC 4.0.1 on the Mac and possibly other GCC4
> platforms, where is_literal will get the value 1, and not the value of
> the literal type, so that the end of the literal is never seen.  The
> following patches this so that the behavior is correct and things work:
>
> *** dbdimp.c.orig     Mon Apr 28 12:08:50 2008
> --- dbdimp.c  Mon Apr 28 12:09:07 2008
> ***************
> *** 1096,1102 ****
>    {
>       dTHX;
>        D_imp_dbh_from_sth;
> !     bool in_literal = FALSE;
>        char in_comment = '\0';
>        char *src, *start, *dest;
>        phs_t phs_tpl;
> --- 1096,1102 ----
>    {
>       dTHX;
>        D_imp_dbh_from_sth;
> !     char in_literal = '\0';
>        char in_comment = '\0';
>        char *src, *start, *dest;
>        phs_t phs_tpl;
>
> -- Matt
>


Reply via email to