============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================
Your name : Jason Holt
Your email address : [EMAIL PROTECTED]
System Configuration
---------------------
Architecture (example: Intel Pentium) : AMD K6-2
Operating System (example: Linux 2.0.26 ELF) : Linux (RedHat 5.2)
PostgreSQL version (example: PostgreSQL-6.5) : PostgreSQL-6.5
Compiler used (example: gcc 2.8.0) : gcc 2.7.2.3
Please enter a FULL description of your problem:
------------------------------------------------
Certain sequences of insert / select statements of varying sizes
crash the backend and corrupt the table. From then on, select doesn't
work on that table, though usually it can be dropped. Occasionally the
backend will actually hang instead of dying.
Please describe a way to repeat the problem. Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------
This perl code repeatably starts having trouble at this point when
starting from a newly created and vacuumed table foo( bar text );
...
7369
8369
DBD::Pg::st execute failed: ERROR: Tuple is too big: size 8408
52
1052
2052
3052
4052
Backend message type 0x44 arrived while idle
DBD::Pg::db selectrow_array failed: Backend message type 0x44 arrived
while idle
5052
DBD::Pg::st execute failed: PQsendQuery() -- There is no connection to the
backend.
DBD::Pg::db selectrow_array failed: PQsendQuery() -- There is no
connection to the backend.
...
Here's the (slow, storage-intensive) routine:
#!/usr/bin/perl
use DBI;
$dbh = DBI->connect('dbi:Pg:', 'jason', 'whatever', { AutoCommit => 1 })
or die "$DBI::errstr";
$sth = $dbh->prepare("insert into foo(bar) values(?)");
$| = 1;
for($i = 0 ; $i < 9000; $i++) {
# The script dies sooner or later depending on what you % by
$foo = 'x' x (($i * 1000) % 9317);
print length($foo), "\n";
$sth->execute($foo);
# Removing this line makes the script not fail
$bar = $dbh->selectrow_array('select * from foo');
}
If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------