Index corruption when add data in long-key-indexed field
--------------------------------------------------------
Key: CORE-4904
URL: http://tracker.firebirdsql.org/browse/CORE-4904
Project: Firebird Core
Issue Type: Bug
Components: Engine
Affects Versions: 3.0 RC 1
Reporter: Pavel Zotov
Config:
===
Servermode = SuperClassic
RemoteServicePort = 3330
DefaultDbCachePages = 512
BugCheckAbort=1
AuthClient = Legacy_Auth,Srp,Win_Sspi
AuthServer = Legacy_Auth,Srp
UserManager = Legacy_UserManager
WireCrypt = Disabled
FileSystemCacheThreshold = 65536K
LockMemSize = 64M
LockHashSlots = 22111
MaxUserTraceLogSize = 99999
TempCacheLimit = 2147483647
TempDirectories = /tmp/firebird
===
Create new database, make its FW = OFF and set sweep interval = 100 (one
hundred).
Run ISQL so that it will show prompt (i.e. do NOT add '-i <file.sql>' in its
command line).
Then do:
SQL> in file.sql;
-- and wait until it finish. After finish do not continue in this window
"commit / rollback" and do not close it.
file.sql:
===
===
recreate sequence g;
recreate table fix(id int primary key, s varchar(1000) unique);
insert into fix
select row_number()over(), rpad('', 1000, uuid_to_char(gen_uuid()))
from rdb$types,(select 1 i from rdb$types rows 10) rows 1000;
commit;
insert into fix
select row_number()over(), rpad('', 1000, uuid_to_char(gen_uuid()))
from rdb$types,(select 1 i from rdb$types rows 10) rows 1000;
set list on;
select 'Started at '||current_time msg from rdb$database;
select * from mon$database;
set term ^;
execute block as
declare n int = 500;
begin
while (n>0) do
begin
in autonomous transaction do
execute statement '
merge into fix t
using (
select row_number()over() id, rpad('''', 1000,
uuid_to_char(gen_uuid())) s
from rdb$types,(select 1 i from rdb$types rows 10) rows 1000
) s on t.id = s.id
when matched then update set t.s = s.s
'
;
n = n - 1 + 0*gen_id(g,1);
end
end
^
set term ;^
select 'Done at '||current_time msg from rdb$database;
===
After ISQL show 'Done at ...' and returns to prompt, create another window and
move database into shutdown state: gfix -shut full -force 0 <database.fdb>
Then return .fdb to ONLINE and make re-connect in ISQL. It will force sweep to
start.
After this sweep will finish, run validation using FBSVCMGR:
fbsvcmgr host/port:service_mgr user sysdba password masterkey action_validate
dbname <database.fdb>
On LI-V3.0.0.31942 (build of 28-29 july 2015) I got every time on this step:
Index 2 is corrupt on page 21580 level 0 at offset 5100. File:
/opt/fb30snap/src/jrd/validation.cpp, line: 2052
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel