Maksim Zhuravkov created IGNITE-19882:
-----------------------------------------

             Summary: Sql. Queries that access columns of type DECIMAL do not 
pick index, when compared with INT/BIGINT.
                 Key: IGNITE-19882
                 URL: https://issues.apache.org/jira/browse/IGNITE-19882
             Project: Ignite
          Issue Type: Bug
          Components: sql
    Affects Versions: 3.0.0-beta1
            Reporter: Maksim Zhuravkov


When decimal column is compared with literal/dynamic parameter of integral 
numeric type, index is not picked:

{code:java}
sql("CREATE TABLE t_dec (ID INTEGER PRIMARY KEY, VAL DECIMAL(5,3))");
sql("CREATE INDEX t_dec_idx ON t_dec(VAL)");

sql("INSERT INTO t_dec VALUES (1, 42)");

// 1 passes
assertQuery("SELECT id FROM t_dec WHERE val = 42.000")
                .matches(containsIndexScan("PUBLIC", "T_DEC", "T_DEC_IDX"))
                .returns(1)
                .check();

// 2 passes
assertQuery("SELECT id FROM t_dec WHERE val = 42::DECIMAL(5,3)")
   .matches(containsIndexScan("PUBLIC", "T_DEC", "T_DEC_IDX"))
   .returns(1)
   .check();

// 3 fails
assertQuery("SELECT id FROM t_dec WHERE val = 42")
  .matches(containsIndexScan("PUBLIC", "T_DEC", "T_DEC_IDX"))
  .returns(1)
  .check();

// 4 fails
assertQuery("SELECT id FROM t_dec WHERE val = ?")
  .withParams(42)
  .matches(containsIndexScan("PUBLIC", "T_DEC", "T_DEC_IDX"))
  .returns(1)
  .check();

// 5 fails
assertQuery("SELECT id FROM t_dec WHERE val = ?")
  .withParams(42L)
  .matches(containsIndexScan("PUBLIC", "T_DEC", "T_DEC_IDX"))
  .returns(1)
  .check();

{code}

Expected behaviour: Queries 3, 4, 5 should use an index.




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

Reply via email to