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

Maksim Zhuravkov updated IGNITE-24294:
--------------------------------------
    Summary: IgniteCatalog API. Table's IndexDefinition reports incorrect 
name/sorting of index column   (was: IgniteCatalog API. Table's IndexDefinition 
reports incorrect sorting of index column)

> IgniteCatalog API. Table's IndexDefinition reports incorrect name/sorting of 
> index column 
> ------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-24294
>                 URL: https://issues.apache.org/jira/browse/IGNITE-24294
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>            Reporter: Maksim Zhuravkov
>            Priority: Major
>              Labels: ignite-3
>
> Created an index with a column with ASC direction but a method that returns 
> table definition and indices returns DEFAULT instead.
> Reproducer:
> {code:java}
> @Test
>     public void test() {
>         sql("CREATE SCHEMA s1");
>         sql("CREATE TABLE s1.c1 ("
>                 + "id INT PRIMARY KEY,"
>                 + "val1 INT,"
>                 + "val2 INT"
>                 + ")");
>         sql("CREATE INDEX s1_c1_idx1 ON s1.c1 USING HASH (val1)");
>         sql("CREATE INDEX s1_c1_idx2 ON s1.c1 USING SORTED (val1 desc, val2 
> asc)");
>         TableDefinition definition = 
> catalog().tableDefinition(QualifiedName.of("S1", "C1"));
>         for (var row : sql("SELECT * FROM SYSTEM.INDEXES WHERE 
> table_name='C1'")) {
>             System.err.println(row);
>         }
>         List<IndexDefinition> indexes = definition.indexes();
>         assertNotNull(indexes);
>         assertEquals(2, indexes.size());
>         System.err.println(indexes.get(0).name());
>         System.err.println(indexes.get(1).name());
>         List<IndexDefinition> sortedDefs = new ArrayList<>(indexes);
>         sortedDefs.sort(Comparator.comparing(IndexDefinition::name));
>         {
>             IndexDefinition index = sortedDefs.get(0);
>             assertEquals("S1_C1_IDX1", index.name());
>             assertEquals(IndexType.HASH, index.type());
>             List<ColumnSorted> columns = index.columns();
>             assertEquals(List.of(
>                     ColumnSorted.column("VAL1")
>             ), columns);
>         }
>         {
>             IndexDefinition index = sortedDefs.get(1);
>             assertEquals("S1_C1_IDX2", index.name());
>             assertEquals(IndexType.SORTED, index.type());
>             List<ColumnSorted> columns = index.columns();
>             assertEquals(List.of(
>                     ColumnSorted.column("VAL1", SortOrder.DESC),
>                     ColumnSorted.column("VAL2", SortOrder.ASC)
>             ), columns);
>         }
>     }
> {code}
> Output:
> {noformat}
> [20, S1_C1_IDX2, 17, C1, 16, S1, SORTED, false, VAL1 DESC, VAL2 ASC, 
> AVAILABLE]
> [18, C1_PK, 17, C1, 16, S1, HASH, true, ID, AVAILABLE]
> [19, S1_C1_IDX1, 17, C1, 16, S1, HASH, false, VAL1, AVAILABLE]
> {noformat}
> Error:
> {noformat}
> org.opentest4j.AssertionFailedError: 
> Expected :[ColumnSorted{columnName='VAL1', sortOrder=DESC}, 
> ColumnSorted{columnName='VAL2', sortOrder=ASC}]
> Actual   :[ColumnSorted{columnName='VAL1 DESC', sortOrder=DEFAULT}, 
> ColumnSorted{columnName='VAL2 ASC', sortOrder=DEFAULT}]
> {noformat}



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

Reply via email to