Subject: | New libsqlite segfaults on relatively benign SQL |
Attached is a complete standalone test. Works on 1.40, segfaults on 1.41_01.
Cheers
Subject: | sqlite_crash.t |
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect('DBI:SQLite::memory:', undef, undef, { RaiseError => 1, AutoCommit => 1 });
$dbh->do($_) for (
'CREATE TABLE "twokeys" (
"artist" integer NOT NULL,
"cd" integer NOT NULL,
PRIMARY KEY ("artist", "cd")
)',
'CREATE TABLE "fourkeys" (
"foo" integer NOT NULL,
"bar" integer NOT NULL,
"hello" integer NOT NULL,
"goodbye" integer NOT NULL,
"sensors" character(10) NOT NULL,
"read_count" int,
PRIMARY KEY ("foo", "bar", "hello", "goodbye")
)',
'CREATE TABLE "fourkeys_to_twokeys" (
"f_foo" integer NOT NULL,
"f_bar" integer NOT NULL,
"f_hello" integer NOT NULL,
"f_goodbye" integer NOT NULL,
"t_artist" integer NOT NULL,
"t_cd" integer NOT NULL,
"autopilot" character NOT NULL,
"pilot_sequence" integer,
PRIMARY KEY ("f_foo", "f_bar", "f_hello", "f_goodbye", "t_artist", "t_cd")
)',
'INSERT INTO fourkeys ( bar, foo, goodbye, hello, read_count, sensors) VALUES ( 1, 1, 1, 1, 1, 1 )',
'INSERT INTO twokeys ( artist, cd) VALUES ( 1, 1 )',
'INSERT INTO fourkeys_to_twokeys ( autopilot, f_bar, f_foo, f_goodbye, f_hello, pilot_sequence, t_artist, t_cd) VALUES ( 1, 1, 1, 1, 1, 1, 1, 1 )',
'DELETE FROM fourkeys_to_twokeys WHERE f_bar = 1 AND f_foo = 1 AND f_goodbye = 1 AND f_hello = 1 AND t_artist = 1 AND t_cd = 1'
);
print "\nok 1 - All good\n1..1\n"