Dmitry Lychagin created ASTERIXDB-2446:
------------------------------------------

             Summary: Improve exception thrown for duplicate column names in 
SELECT clause
                 Key: ASTERIXDB-2446
                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2446
             Project: Apache AsterixDB
          Issue Type: Improvement
          Components: COMP - Compiler
            Reporter: Dmitry Lychagin
            Assignee: Dmitry Lychagin


The error message thrown when there're duplicate column names in the select 
clause is confusing. It's IllegalStateException inside HyracksDataException

Query: select t as a, 2 as a from range(1,10) t

Exception:

org.apache.hyracks.api.exceptions.HyracksDataException: 
java.lang.IllegalStateException: ASX0013: Duplicate field name "a"
 at 
org.apache.hyracks.api.exceptions.HyracksDataException.create(HyracksDataException.java:51)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:68)
 ~[classes/:?]
 at 
org.apache.hyracks.api.dataflow.EnforceFrameWriter.close(EnforceFrameWriter.java:113)
 ~[classes/:?]
 at org.apache.hyracks.api.util.CleanupUtils.close(CleanupUtils.java:66) 
~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:65)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.std.StreamLimitRuntimeFactory$1.close(StreamLimitRuntimeFactory.java:131)
 ~[classes/:?]
 at 
org.apache.hyracks.api.dataflow.EnforceFrameWriter.close(EnforceFrameWriter.java:113)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.std.EmptyTupleSourceRuntimeFactory$1.close(EmptyTupleSourceRuntimeFactory.java:61)
 ~[classes/:?]
 at 
org.apache.hyracks.api.dataflow.EnforceFrameWriter.close(EnforceFrameWriter.java:113)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor$SourcePushRuntime.initialize(AlgebricksMetaOperatorDescriptor.java:111)
 ~[classes/:?]
 at 
org.apache.hyracks.api.rewriter.runtime.SuperActivityOperatorNodePushable.lambda$runInParallel$0(SuperActivityOperatorNodePushable.java:212)
 ~[classes/:?]
 at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_161]
 at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_161]
 at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_161]
 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.IllegalStateException: ASX0013: Duplicate field name "a"
 at 
org.apache.asterix.om.types.runtime.RuntimeRecordTypeInfo.reset(RuntimeRecordTypeInfo.java:108)
 ~[classes/:?]
 at org.apache.asterix.builders.RecordBuilder.reset(RecordBuilder.java:113) 
~[classes/:?]
 at 
org.apache.asterix.runtime.evaluators.common.ClosedRecordConstructorEvalFactory$ClosedRecordConstructorEval.evaluate(ClosedRecordConstructorEvalFactory.java:77)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.std.AssignRuntimeFactory$1.produceTuple(AssignRuntimeFactory.java:159)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.std.AssignRuntimeFactory$1.nextFrame(AssignRuntimeFactory.java:128)
 ~[classes/:?]
 at 
org.apache.hyracks.api.dataflow.EnforceFrameWriter.nextFrame(EnforceFrameWriter.java:76)
 ~[classes/:?]
 at 
org.apache.hyracks.dataflow.common.comm.io.AbstractFrameAppender.write(AbstractFrameAppender.java:93)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushAndReset(AbstractOneInputOneOutputOneFramePushRuntime.java:74)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushIfNotFailed(AbstractOneInputOneOutputOneFramePushRuntime.java:80)
 ~[classes/:?]
 at 
org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:60)
 ~[classes/:?]
 ... 13 more
Caused by: org.apache.asterix.common.exceptions.RuntimeDataException: ASX0013: 
Duplicate field name "a"
 at 
org.apache.asterix.om.types.runtime.RuntimeRecordTypeInfo.reset(RuntimeRecordTypeInfo.java:104)
 ~[classes/:?]
 at org.apache.asterix.builders.RecordBuilder.reset(RecordBuilder.java:113) 
~[classes/:?]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to