thanks for the help,
I tried one ot the workarounds noted in
http://rt.cpan.org/NoAuth/Bug.html?id=14595
which had you force the data type to SQL_BLOB
this makes things work!! horray!!
I included the complete test program for reference to others
---- code snippit ----
use DBI qw(:sql_types);
print "original slurped file size $fn=".length($data)."\n";;
{
my $sth = $dbh->prepare("INSERT or replace INTO foo (nm, val) VALUES (?, ?)");
$sth->bind_param(1, $fn);
$sth->bind_param(2, $data, {TYPE => SQL_BLOB});
$sth->execute();
$sth->finish;
}
--- complete test program ---
#!/usr/bin/perl -w
#
# jim dodgen 2005
use Carp;
use DBI;
use DBI qw(:sql_types);
use strict;
my %attr = (PrintError => 1,
RaiseError => 0,
AutoCommit => 0);
my $dbh = DBI->connect("dbi:SQLite:slurp.db","","",\%attr);
if (!defined($dbh))
{
croak("could not connect to db");
}
{
my $sth = $dbh->prepare("drop table foo");
if (defined $sth)
{
$sth->execute();
$sth->finish;
}
}
{
my $sth = $dbh->prepare("create table foo (nm, val, primary key (nm))");
$sth->execute();
$sth->finish;
}
undef $/;
my ($fn) = @ARGV; # name of big file
open (IN, $fn);
my $data = <IN>; # slurp complete file into variable
close IN;
print "original slurped file size $fn=".length($data)."\n";;
{
my $sth = $dbh->prepare("INSERT or replace INTO foo (nm, val) VALUES (?, ?)");
$sth->bind_param(1, $fn);
$sth->bind_param(2, $data, {TYPE => SQL_BLOB});
$sth->execute();
$sth->finish;
}
undef $data; # JUST TO FREE SOME SPACE
my $max = $dbh->selectrow_array("SELECT MAX(LENGTH(val)) FROM foo");
$dbh->{LongReadLen} = $max+10;
print "largest BLOB $max\n";
{
my $sth = $dbh->prepare("select nm, val from foo where nm = ?");
my $stat = $sth->execute($fn);
my ($nm, $out) = $sth->fetchrow_array;
$sth->finish;
print "size of $nm BLOB returned from query ".length($out)."\n";
open (NEW1, ">out_".$fn);
binmode NEW1;
print NEW1 $out;
close NEW1;
}
$dbh->commit;
$dbh->disconnect;