Hi all.

I have a question about how Firebird internally updates a record.

 

Here an example:

Create table test(cod integer, name varchar(50))

Commit;

 

Insert into test(cod, name) values (1, 'Big description 1');

Insert into test(cod, name) values (2, 'Big description 2');

Insert into test(cod, name) values (3, 'Big description 3');

Commit;

 

Delete from teste where cod=2;

Commit;

 

At this point when I inspect the FDB with an hex editor I can see 3 record
on Page record (0x05).

There are 3 entries in the "struct dpg_repeater". Two of them with offset
and length and one (for record cod=2) with both offset and length 0.

 

Whell, next I insert a new record:

Insert into test(cod, name) values (2, 'Small 2');

Commit;

 

After that I reinspect the FDB file and it not REUSE the old record that
contains "Big description 2". It stays here and a NEW record was create to
hold the new record 2 that are SMALL than old record.

 

Why? Why Firebird does not reutilize that space?

I tested with only one connection in a test database with only this table.

Thanks, Fabiano.

 

 



[Non-text portions of this message have been removed]

Reply via email to