Evgeny Stanilovsky created IGNITE-28598:
-------------------------------------------

             Summary: Calcite engine. Indexes from NO_INDEX hint still can be 
used in plan
                 Key: IGNITE-28598
                 URL: https://issues.apache.org/jira/browse/IGNITE-28598
             Project: Ignite
          Issue Type: Improvement
    Affects Versions: 2.17, 2.18
            Reporter: Evgeny Stanilovsky
             Fix For: 2.19


Indexes from NO_INDEX hint still can be fount in execution plan.
For example, if we try to involve only "T1_IDX" scan:

{noformat}
    @Test
    public void testNoIndexHint() {
        executeSql("CREATE TABLE t1(i2 INTEGER, i3 INTEGER)");

        for (int i = 0; i < 100; ++i)
            executeSql("INSERT INTO t1 VALUES (?, ?)", i, i);

        executeSql("CREATE INDEX t1_idx ON t1(i3)");

        assertQuery("SELECT /*+ NO_INDEX(_key_PK), 
DISABLE_RULE('LogicalTableScanConverterRule') */ i3 FROM t1 where i2=2 or i3=2")
            .matches(QueryChecker.containsIndexScan("PUBLIC", "T1", "T1_IDX"))
            .check();
    }
{noformat}

It will fail.
Seems it`s due to case sensitivity comparison bug present in:
org.apache.ignite.internal.processors.query.calcite.rule.logical.ExposeIndexRule#processHints




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to