Есть БД, изначально создана на FB 1.5
Вчера попробовал перевести на 2.0.
Возникла ошибка при индексном поиске
по VARCHAR
Упростил БД до минимума
CREATE DOMAIN DID AS INTEGER NOT NULL;
CREATE DOMAIN DSTRING10N AS VARCHAR(10) DEFAULT '' COLLATE WIN1251_UA;
CREATE TABLE DOC (
ID DID NOT NULL,
NUM_PP DSTRING10N COLLATE WIN1251_UA
);
ALTER TABLE DOC ADD CONSTRAINT PK_DOC PRIMARY KEY (ID);
CREATE INDEX DOC_NUMPP ON DOC (NUM_PP);
-------------
Статистика БД
Database header page information:
Flags 0
Checksum 12345
Generation 71
Page size 16384
ODS version 11.0
Oldest transaction 63
Oldest active 64
Oldest snapshot 64
Next transaction 65
Bumped transaction 1
Sequence number 0
Next attachment ID 0
Implementation ID 16
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Nov 29, 2006 14:34:41
Attributes force write
Variable header data:
Sweep interval: 20000
*END*
Database file sequence:
File D:\GDB\LLK3_1.FDB is the only file
Analyzing database pages ...
DOC (128)
Primary pointer page: 135, Index root page: 136
Average record length: 11.14, total records: 30119
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 94, data page slots: 94, average fill: 55%
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 93
60 - 79% = 0
80 - 99% = 0
Index DOC_NUMPP (1)
Depth: 2, leaf buckets: 7, nodes: 30119
Average data length: 0.16, total dup: 25509, max dup: 254
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 6
Index PK_DOC (0)
Depth: 2, leaf buckets: 12, nodes: 30119
Average data length: 1.77, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 12
------------------
Теперь собственно запрос
select * from doc where (NUM_PP = '') or (NUM_PP is NULL)
Возвращает, в зависимости от размера
страницы от 32 записи для (16K) до ~762 для 1K
Запрос (без использования индексов)
select * from doc where coalesce(NUM_PP,'') = ''
Возвращает, 26819.
select * from doc where (NUM_PP||'' = '') or (NUM_PP||'' is NULL) -
так тоже 26819
Есть архив fbk (rar) 116K
P.S. FB 2.0 Release, WinXP + SP2