I have found an odd bit of code that crashes Perl.
It seems like a bug in SQLite's load extension interface (via sqlite_create_aggregate). A bit of poking suggests that the problem manifests in the destructor (under Perl_sv_clean_objs).
So far, I have reproduced the bug on linux (5.10.0) and Strawberry perl (5.16.3) running on Win XP. I actually get two different error messages depending on if I save to disk or not.
#!/usr/bin/perl use warnings; use strict; use DBI; use Data::Dumper; unlink('file.sq3'); # Start fresh my $dbh = DBI->connect("dbi:SQLite:dbname=file.sq3","",""); $dbh->sqlite_create_aggregate( "median", 1, 'MyMedian' ); Data::populate(); if (1) { # You may get different errors if you detach/re-attach $dbh->disconnect(); undef $dbh; $dbh = DBI->connect("dbi:SQLite:dbname=file.sq3","",""); $dbh->sqlite_create_aggregate( "median", 1, 'MyMedian' ); } print Dumper( $dbh->selectall_arrayref( "SELECT median(D) from DD group by length(D) %2" )); package MyMedian; sub new { bless [],shift} sub step{ push @{$_[0]},$_[1] if (defined $_[1]) } sub finalize { my @Ary = sort { $a <=> $b } @{$_[0]}; scalar (@Ary) or return undef; return 0.5 *($Ary[$#Ary / 2] + $Ary[($#Ary+1) / 2]); } 1; package Data; sub populate { $dbh->do("CREATE TABLE DD (D REAL);"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.405999999995402)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.152000000001863)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.152000000001863)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.152000000001863)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0100000000020373)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.165999999997439)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.165999999997439)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.165999999997439)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00800000000162981)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00800000000162981)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163999999997031)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163999999997031)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.00600000000122236)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.161999999996624)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.192999999999302)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.224000000001979)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.160000000003492)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.160000000003492)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.125)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.889000000002852)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0930000000007567)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.10899999999674)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.156000000002678)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0129999999990105)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0129999999990105)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.15400000000227)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.15400000000227)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.182999999997264)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.165000000000873)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.165000000000873)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.180999999996857)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.165000000000873)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.148000000001048)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.178999999996449)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.178999999996449)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.178999999996449)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.453000000001339)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.858000000000175)"); $dbh->do("insert into DD values (0.0029999999969732)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.141999999999825)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (-0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0129999999990105)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.169000000001688)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.169000000001688)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.169000000001688)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.184000000001106)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.167000000001281)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.197999999996682)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.197999999996682)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.561000000001513)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.654999999998836)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.146999999997206)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.146999999997206)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.146999999997206)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.146999999997206)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.129999999997381)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.129999999997381)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.129999999997381)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.0029999999969732)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (-0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (-0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.35899999999674)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.375)"); $dbh->do("insert into DD values (0.0100000000020373)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0100000000020373)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.10399999999936)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.150999999998021)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.213000000003376)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00800000000162981)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163999999997031)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163999999997031)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.196000000003551)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.196000000003551)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00600000000122236)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131000000001222)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131000000001222)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131000000001222)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131000000001222)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.112999999997555)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.129000000000815)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.129000000000815)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.129000000000815)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127000000000407)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127000000000407)"); $dbh->do("insert into DD values (0.0159999999959837)"); $dbh->do("insert into DD values (0.142999999996391)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.142999999996391)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0140000000028522)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.169999999998254)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.184999999997672)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.152000000001863)"); $dbh->do("insert into DD values (0.0159999999959837)"); $dbh->do("insert into DD values (0.230000000003201)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0100000000020373)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.103000000002794)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.197000000000116)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.197000000000116)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.213000000003376)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00800000000162981)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.13300000000163)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.13300000000163)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.13300000000163)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.211000000002969)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00600000000122236)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00600000000122236)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.177000000003318)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.177000000003318)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.192999999999302)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.0310000000026776)"); $dbh->do("insert into DD values (0.00400000000081491)"); $dbh->do("insert into DD values (0.436999999998079)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00200000000040745)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.110999999997148)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.127000000000407)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.141999999999825)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.139999999999418)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.139999999999418)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.139999999999418)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.139999999999418)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0129999999990105)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.107000000003609)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.107000000003609)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.107000000003609)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.15400000000227)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.120000000002619)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.120000000002619)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.120000000002619)"); $dbh->do("insert into DD values (0.0159999999959837)"); $dbh->do("insert into DD values (0.135999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0310000000026776)"); $dbh->do("insert into DD values (0.0720000000001164)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0780000000013388)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0469999999986612)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.281000000002678)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.114000000001397)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.114000000001397)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.129999999997381)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0029999999969732)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.144000000000233)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.144000000000233)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.125999999996566)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (-0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.124000000003434)"); $dbh->do("insert into DD values (0.0159999999959837)"); $dbh->do("insert into DD values (0.139999999999418)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.171000000002095)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.186000000001513)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0599999999976717)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0599999999976717)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0599999999976717)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0599999999976717)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0599999999976717)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.010999999998603)"); $dbh->do("insert into DD values (0.374000000003434)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00899999999819556)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.133999999998196)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.133999999998196)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.148999999997613)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00699999999778811)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131999999997788)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131999999997788)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.131999999997788)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.146999999997206)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00499999999738066)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.144999999996799)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.161000000000058)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.161000000000058)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0029999999969732)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.142999999996391)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.142999999996391)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.158999999999651)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.158999999999651)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.14100000000326)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.218999999997322)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.218999999997322)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (-0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (-0.000999999996565748)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.233000000000175)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.247999999999593)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.591000000000349)"); $dbh->do("insert into DD values (0.0160000000032596)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.137000000002445)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.137000000002445)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.137000000002445)"); $dbh->do("insert into DD values (0.0159999999959837)"); $dbh->do("insert into DD values (0.0100000000020373)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0100000000020373)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.135000000002037)"); $dbh->do("insert into DD values (0.0309999999954016)"); $dbh->do("insert into DD values (0.135000000002037)"); $dbh->do("insert into DD values (0.0309999999954016)"); $dbh->do("insert into DD values (0.135000000002037)"); $dbh->do("insert into DD values (0.0780000000013388)"); $dbh->do("insert into DD values (0.0029999999969732)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.127999999996973)"); $dbh->do("insert into DD values (0.0149999999994179)"); $dbh->do("insert into DD values (0.142999999996391)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00800000000162981)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.00800000000162981)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163000000000466)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163000000000466)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.163000000000466)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.0120000000024447)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.152999999998428)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.167999999997846)"); $dbh->do("insert into DD values (0.0)"); $dbh->do("insert into DD values (0.16)"); }

I get errors like:
$VAR1 = bless( { 'FetchHashKeyName' => 'NAME', 'TraceLevel' => 0, 'ImplementorClass' => 'DBD::SQLite::db', 'State' => \undef, 'Username' => '', 'Errstr' => \undef, 'ChildHandles' => [ bless( {}, 'DBI::st' ) ], 'Driver' => bless( { 'Attribution' => 'DBD::SQLite by + Matt Sergeant et al', 'FetchHashKeyName' => 'NAME', 'TraceLevel' => 0, 'ImplementorClass' => 'DBD::SQLi +te::dr', 'State' => \undef, 'Version' => '1.37', 'Errstr' => \undef, 'ChildHandles' => [ undef, bless( {}, ' +DBI::db' ) ], 'Name' => 'SQLite', 'Err' => \undef }, 'DBI::dr' ), 'Name' => 'dbname=file.sq3', 'Statement' => 'SELECT median(D) from DD group by le +ngth(D) %2', 'dbi_connect_closure' => sub { "DUMMY" }, 'Err' => \undef }, 'DBI::db' ); Bus error

A historical note: I initially hit an issue "freeing memory" when loading a saved database from disk. In my original example, my GROUP BY was on either a textual or integer column, yielding different errors. I believe the included example captures the issue -- but there actually be more than 1 issue here. Hopefully someone with better knowledge of perl internals will be able to shed some light on the matter. aschweig

In reply to SQLite and Custom Aggregates by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.