[
https://issues.apache.org/jira/browse/IGNITE-25896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrey Mashenkov reassigned IGNITE-25896:
-----------------------------------------
Assignee: Andrey Mashenkov
> SQL: "field names not distinct" on a join operation when -ea JVM option is set
> ------------------------------------------------------------------------------
>
> Key: IGNITE-25896
> URL: https://issues.apache.org/jira/browse/IGNITE-25896
> Project: Ignite
> Issue Type: Bug
> Components: sql ai3
> Affects Versions: 3.1
> Reporter: Andrey Khitrin
> Assignee: Andrey Mashenkov
> Priority: Critical
> Labels: ignite-3
> Attachments: ignite3db-0.log, reproduce.sql
>
>
> Steps to reproduce:
> 1. Set the following option in `etc/vars.env`: `IGNITE3_EXTRA_JVM_ARGS="-ea"`.
> 2. Start and initialize a single-node cluster.
> 3. Run a provided SQL file via CLI: `ignite3 sql --file reproduce.sql`
> A file contains the following correct SQL query in the last line:
> {code:sql}
> SELECT C.NAME, P.NAME FROM PUBLIC.CAR AS C LEFT JOIN PUBLIC.PARKING AS P ON
> C.PARKINGID = P.ID ORDER BY C.ID, P.NAME;
> {code}
> Expected result: a file is executed successfully (like it does when we use a
> default empty value for `IGNITE3_EXTRA_JVM_ARGS`).
> Actual result: error when a query is executed:
> {code}
> SQL query execution error
> Failed to fetch query results [curId=123]. Error message: field names not
> distinct: RecordType(VARCHAR(255) NAME, VARCHAR(255) NAME)
> {code}
> Stackrtace on the server side:
> {code}
> 2025-07-14 13:26:33:101 +0500
> [INFO][%defaultNode%sql-planning-pool-3][JdbcQueryCursorHandlerImpl] Failed
> to fetch query results [curId=123].
> org.apache.ignite.sql.SqlException: IGN-CMN-65535 field names not distinct:
> RecordType(VARCHAR(255) NAME, VARCHAR(255) NAME) TraceId:bb336ea9
> at
> org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:73)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareAsync$1(PrepareServiceImpl.java:296)
> at
> java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
> at
> java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
> at
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
> at
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> at java.base/java.lang.Thread.run(Thread.java:840)
> Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 field names
> not distinct: RecordType(VARCHAR(255) NAME, VARCHAR(255) NAME)
> TraceId:bb336ea9
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$mapToPublicException$2(IgniteExceptionMapperUtil.java:88)
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapCheckingResultIsPublic(IgniteExceptionMapperUtil.java:141)
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:110)
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:88)
> at
> org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:63)
> ... 8 more
> Caused by: java.lang.AssertionError: field names not distinct:
> RecordType(VARCHAR(255) NAME, VARCHAR(255) NAME)
> at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31)
> at org.apache.calcite.rel.core.Project.isValid(Project.java:267)
> at org.apache.calcite.rel.core.Project.<init>(Project.java:106)
> at org.apache.calcite.rel.core.Project.<init>(Project.java:117)
> at
> org.apache.ignite.internal.sql.engine.rel.IgniteProject.<init>(IgniteProject.java:76)
> at
> org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:210)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.doOptimize(PrepareServiceImpl.java:726)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$5(PrepareServiceImpl.java:439)
> at
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
> ... 3 more
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)