[
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)