Adding 2nd condition in WHERE which containing RDB$DBKEY leads to NATURAL plan
------------------------------------------------------------------------------
Key: CORE-4492
URL: http://tracker.firebirdsql.org/browse/CORE-4492
Project: Firebird Core
Issue Type: Bug
Reporter: Pavel Zotov
SQL> set plan only;
Test-1a:
======
SQL> select count(*) from rdb$database where rdb$db_key = 1;
PLAN (RDB$DATABASE INDEX ()) // Ok
Test-1b:
======
SQL> select count(*) from rdb$database where rdb$db_key in (1,2);
PLAN (RDB$DATABASE NATURAL) // Bad
SQL> quit;
Also, consider the following cases (they seems not related with showed above
but I don`t want to create separate ticket for these RDB$DB_KEY problems):
-- ::: NB::: make reconnect now to ensure that set planonly = OFF
Test-2a:
======
SQL> out /dev/null;
SQL> select count(*) from rdb$database where rdb$db_key is null;
Trace:
=====
1 records fetched
0 ms, 6 fetch(es)
Table Natural
********************************************
RDB$DATABASE 1
(despite that result is 0, FB *does* scans - we can see here fetches > 0).
Test-2b:
=======
SQL> select count(*) from rdb$database where rdb$db_key = cast(null as char(8)
character set octets);
Trace:
=====
select count(*) from rdb$database where rdb$db_key = cast(null as char(8)
character set octets)
1 records fetched
0 ms
Where statistics with RDB$DATABASE ?
(the same result will be for this: select count(*) from rdb$database where
rdb$db_key = cast('ABC' as char(8) character set octets); )
Test 2-c:
=======
SQL> select count(*) from rdb$database where rdb$db_key = cast('1234' as
char(8) character set octets);
Statement 6835:
-------------------------------------------------------------------------------
select count(*) from rdb$database where rdb$db_key = cast('1234' as char(8)
character set octets)
1 records fetched
0 ms, 302 fetch(es)
Table Natural Index Update Insert
Delete Backout Purge Expunge
***************************************************************************************************************
RDB$PAGES 148
Again no RDB$DATABASE in statistics but why RDB$PAGES appears here ?
PS. Reproduced on both FB 2.5 and 3.0.
--
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