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

Reply via email to