Actually this seems an issue with SQLite 3.2. DBD::SQLite 1.09 uses
3.2.2. And it is reproducible with the Java wrapper over 3.2.1. A
statement like

       SELECT 'a

which should be a syntax error, doubles the last character, returning
(in this example) a row with one column 'aa'.


On 10/20/05, Adriano Ferreira <[EMAIL PROTECTED]> wrote:
> While developing, I gave DBD::SQLite a bad SQL statement like "select
> 'eek" (quoted string not terminated). It worked and gave a weird
> answer. Is that something I should be expecting? Some oddity of
> SQLite?
>
> The following test script was run
>         #!/usr/bin/perl
>
>         use DBI;
>         use DBD::SQLite;
>         use Test::More tests => 5;
>
>         diag("\$DBI::VERSION: $DBI::VERSION, \$DBD::SQLite::VERSION:
> $DBD::SQLite::VERSION\n");
>
>         my $dbh = DBI->connect('dbi:SQLite:dbname=t.db');
>         ok($dbh, 'defined $dbh');
>
>         # this is bad SQL
>         my $sql = "select 'eek";
>         my $sth = $dbh->prepare($sql);
>         ok($sth, "defined \$sth (SQL: $sql) ?!");
>         ok($sth->execute, "execute ok ?!");
>         my @row = $sth->fetchrow_array;
>         is(scalar @row, 1, 'one column fetched');
>         is($row[0], 'eekk', 'returning "eekk", arghh!');
>
> and gave the output
>
>         $ perl bug.pl
>         1..5
>         # $DBI::VERSION: 1.48, $DBD::SQLite::VERSION: 1.09
>         ok 1 - defined $dbh
>         ok 2 - defined $sth (SQL: select 'eek) ?!
>         ok 3 - execute ok ?!
>         ok 4 - one column fetched
>         ok 5 - returning "eekk", arghh!
>
> $ perl -v
> This is perl, v5.8.7 built for cygwin-thread-multi-64int
>
> $ uname -a
> CYGWIN_NT-5.0 INF-020 1.5.18(0.132/4/2) 2005-07-02 20:30 i686 unknown
> unknown Cygwin
>

Reply via email to