[
https://issues.apache.org/jira/browse/IGNITE-24294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov reassigned IGNITE-24294:
-----------------------------------------
Assignee: Maksim Zhuravkov
> 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
> Assignee: 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)