Subject Fb1.5 RC7 CS: Pointer page vanished from DPM_next (249);
Author Marco Wobben
Support,

Below is the initial mail I've posted in the develop and support group a few
weeks back. Ann Harrison acknowledged anything mentioning "software consistency
check" is definitely a bug.

I have found no bug report in SourceForge for it, and I see much talk about the
latest RC8, and nothing about this issue. Is somebody registering this bug
somewhere? (Note that my findings show that this bug is present still in RC8.)

Kind reminder,
Marco Wobben.

----

I have encountered a serious problem with Firebird 1.5 RC7 Classic
Server. Inserting a large number of rows in a table corrupts the
database. The problem is only detected once selections are made or when
a backup is made.

The table is filled by a client app using IBPP as connection software.
It pumps roughly about 800.000.000 rows into the table (specs below).
The final database size is appoximately 80GB.

I have tried various options which made no difference:
* One big transaction (took about 26 hours)
* One transaction per 2000 rows (almost twice as slow)
* ForceWrites on and off

Below are details. Any help is welcome.

Last few lines from the gbak (verbose) operation which show the failure to
backup the current database:

gbak: ....
gbak: 449200000 records written
gbak: 449220000 records written
gbak: 449240000 records written
gbak: 449260000 records written
gbak: ERROR: internal gds software consistency check (pointer page
vanished from DPM_next (249))
gbak: ERROR: gds_$receive failed
gbak: Exiting before completion due to errors
gbak: ERROR: internal gds software consistency check (can't continue
after bugcheck)

The tail of firebird.log shows the following:

littlebeast (Client) Thu Jan 8 02:57:16 2004
SCH_validate -- not entered

littlebeast (Client) Thu Jan 8 02:57:16 2004
SCH_validate -- not entered

littlebeast Thu Jan 8 04:21:56 2004
Database: /var/firebird/data/db.fdb
internal gds software consistency check (pointer page vanished
from DPM_next (249))

The database looks like this: (Note that I don't require modelling
support, because I need this data to convert it into a properly
structured relational model. That's why I need the rowkey mentioned in
the q table.)

create database '/var/firebird/data/db.fdb' PAGE_SIZE 16384;

default character set none;

create table q
(
id integer not null,
moment timestamp not null,
l numeric(16,4),
v integer,
o numeric(16,4),
h numeric(16,4),
lo numeric(16,4),
b numeric(16,4),
a numeric(16,4),
t integer,
rowkey integer not null,
primary key (rowkey)
);

create generator rowkey_gen;

create trigger q_bi0 for q
active before insert position 0
as
begin
new.rowkey = gen_id(rowkey_gen, 1);
end

The system configuration on which Firebird is installed:
* RedHat 8.0
* Filesystem ext3
* 1GB swapspace
* 2.8GHz Pentium4
* 512k cache
* 512MB Ram
* 250GB IDE disk