[ 
https://issues.apache.org/jira/browse/IGNITE-28598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vyacheslav Koptilin updated IGNITE-28598:
-----------------------------------------
    Description: 
Indexes from NO_INDEX hint still can be found in the 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

  was:
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



> 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
>            Priority: Major
>              Labels: ignite-2, ise
>             Fix For: 2.19
>
>
> Indexes from NO_INDEX hint still can be found in the 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