Thread: More details on Database corruption
Hi, I managed to recreate a simple example that's crashing postgres. I am running on a DEC Alpha with Digital Unix Version 4.0d and Postgres 3.2. I tried this example several times, on several databases and it crashes every time. We also re-built Postgres and still did not work. Here's the example. Can anybody please help? Thank you... George K. /***** INPUT FILE: hist.sql *******/ drop table tasks; CREATE TABLE tasks ( task INT4 NOT NULL, job INT4 NOT NULL, Version1 CHAR(6) DEFAULT '', Version2 CHAR(6) DEFAULT '', Version3 CHAR(6) DEFAULT '', Version4 CHAR(6) DEFAULT '', Version5 CHAR(6) DEFAULT '' ); INSERT INTO tasks (task, job) VALUES (1, 1); select * from tasks; update tasks set version1='1',version2='2', version3='3', version4='4', version5='5' where task=1; select * from tasks; /****** OUTPUT FROM pgsql **********/ test=> \i hist.sql drop table tasks; DROP CREATE TABLE tasks ( task INT4 NOT NULL, job INT4 NOT NULL, Version1 CHAR(6) DEFAULT '', Version2 CHAR(6) DEFAULT '', Version3 CHAR(6) DEFAULT '', Version4 CHAR(6) DEFAULT '', Version5 CHAR(6) DEFAULT '' ); CREATE INSERT INTO tasks (task, job) VALUES (1, 1); INSERT 4410388 1 select * from tasks; task|job|version1|version2|version3|version4|version5 ----+---+--------+--------+--------+--------+-------- 1| 1| | | | | (1 row) update tasks set version1='1',version2='2', version3='3', version4='4', version5='5' where task=1; UPDATE 1 select * from tasks; FATAL: unrecognized data from the backend. It probably dumped core. FATAL: unrecognized data from the backend. It probably dumped core. EOF test=> --ELM904013936-3186-0_ --ELM904013936-3186-0_--
It seems to be the same for me... But I can see "tasks" table after restarting of psql, so it doesn't crash the data files. What can be usefull is the messages in the server.log file: Too Large Allocation Request ... File: mcxt.c Line: 232 I don't know the code of PG, but we can ask PG "gurus" ... Dimitri On Thu, 13 Aug 1998, you wrote: >Hi, > >I managed to recreate a simple example that's crashing postgres. I am >running on a DEC Alpha with Digital Unix Version 4.0d and Postgres >3.2. I tried this example several times, on several databases and it >crashes every time. We also re-built Postgres and still did not work. >Here's the example. Can anybody please help? > >Thank you... >George K. >/***** INPUT FILE: hist.sql *******/ > >drop table tasks; >CREATE TABLE tasks ( >task INT4 NOT NULL, >job INT4 NOT NULL, >Version1 CHAR(6) DEFAULT '', >Version2 CHAR(6) DEFAULT '', >Version3 CHAR(6) DEFAULT '', >Version4 CHAR(6) DEFAULT '', >Version5 CHAR(6) DEFAULT '' >); > >INSERT INTO tasks (task, job) VALUES (1, 1); >select * from tasks; >update tasks set version1='1',version2='2', version3='3', version4='4', >version5='5' where task=1; >select * from tasks; > > >/****** OUTPUT FROM pgsql **********/ >test=> \i hist.sql >drop table tasks; >DROP >CREATE TABLE tasks ( >task INT4 NOT NULL, >job INT4 NOT NULL, >Version1 CHAR(6) DEFAULT '', >Version2 CHAR(6) DEFAULT '', >Version3 CHAR(6) DEFAULT '', >Version4 CHAR(6) DEFAULT '', >Version5 CHAR(6) DEFAULT '' >); >CREATE > >INSERT INTO tasks (task, job) VALUES (1, 1); >INSERT 4410388 1 >select * from tasks; >task|job|version1|version2|version3|version4|version5 >----+---+--------+--------+--------+--------+-------- > 1| 1| | | | | >(1 row) > >update tasks set version1='1',version2='2', version3='3', version4='4', >version5='5' where task=1; >UPDATE 1 >select * from tasks; >FATAL: unrecognized data from the backend. It probably dumped core. >FATAL: unrecognized data from the backend. It probably dumped core. > >EOF >test=> -- ===================================================== Dimitri KRAVTCHUK (dim) Sun Microsystems Benchmark Engineer France dimitri@France.Sun.COM =====================================================
On Thu, 13 Aug 1998, George Kousi wrote: > CREATE TABLE tasks ( > task INT4 NOT NULL, > job INT4 NOT NULL, > Version1 CHAR(6) DEFAULT '', > Version2 CHAR(6) DEFAULT '', > Version3 CHAR(6) DEFAULT '', > Version4 CHAR(6) DEFAULT '', > Version5 CHAR(6) DEFAULT '' > ); A zero-length string ('') is not a valid default value for a CHAR(6). I replaced it with ' ' (six blanks) and all runs fine. I run 6.3.1 on Linux 2.0.27 and your script fails on the first insert without corruption problems. I don't know why it only fails on update on your system. Regards - guido ------------------------------------------------------------------------ // Guido Carlo Piazzi Accompagnatore naturalistico // gpiazzi@nemo.it Visitate il sito WWW.ParcoDelTicino.Pmn.It ------------------------------------------------------------------------