You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by Ryan Shanks <ry...@softcomcorp.com> on 2018/03/20 20:28:34 UTC

Issue with order by clause for custom StoragePlugin

Hi!

I am trying to learn how to write a custom StoragePlugin. My 
StoragePlugin currently takes 3 parameters: the type name, a file name 
and if its enabled. The file contains a schema describing my data 
source, which currently is just an xml file with test values while I 
learn more. Currently I have my plugin able to execute basic queries, 
but it fails when I try an "ORDER BY" clause. I was hoping someone might 
be able to provide some insight into why this might be or maybe point me 
in the right direction. I am not sure what information is helpful for 
determining the issue so please let me know what I can provide if the 
below is not enough.

This works:

SELECT loginName FROM test1.`Users`;

But this does not work:

SELECT loginName FROM test1.`Users` ORDER BY loginName;


Below is the error I obtain with the order by query:

org.apache.drill.common.exceptions.UserException: SYSTEM ERROR: 
ExpressionParsingException: Expression has syntax error! line 1:0:no 
viable alternative at input '{'

Fragment 3:0

[Error Id: eba80b35-d8b8-483c-ab03-726c135cc7f2 on ubuntu:31010]
     at 
org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:586) 
~[drill-common-1.12.0.jar:1.12.0]
     at 
org.apache.drill.exec.work.fragment.FragmentExecutor.sendFinalState(FragmentExecutor.java:301) 
[drill-java-exec-1.12.0.jar:1.12.0]
     at 
org.apache.drill.exec.work.fragment.FragmentExecutor.cleanup(FragmentExecutor.java:160) 
[drill-java-exec-1.12.0.jar:1.12.0]
     at 
org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:267) 
[drill-java-exec-1.12.0.jar:1.12.0]
     at 
org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38) 
[drill-common-1.12.0.jar:1.12.0]
     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[na:1.8.0_161]
     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[na:1.8.0_161]
     at java.lang.Thread.run(Thread.java:748) [na:1.8.0_161]
Caused by: com.fasterxml.jackson.databind.JsonMappingException: 
Expression has syntax error! line 1:0:no viable alternative at input '{' 
(through reference chain: 
org.apache.drill.exec.physical.config.SingleSender["child"]->org.apache.drill.exec.physical.config.Project["child"]->org.apache.drill.rest.storage.plugin.RestSubScan["columns"]->java.util.ArrayList[0])
     at 
com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:379) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:351) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:308) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:259) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:495) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:465) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:384) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:493) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:465) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:384) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:493) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:465) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:384) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:63) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1579) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1200) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     at 
org.apache.drill.exec.planner.PhysicalPlanReader.readFragmentRoot(PhysicalPlanReader.java:101) 
~[drill-java-exec-1.12.0.jar:1.12.0]
     at 
org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:205) 
[drill-java-exec-1.12.0.jar:1.12.0]
     ... 4 common frames omitted
Caused by: 
org.apache.drill.common.exceptions.ExpressionParsingException: 
Expression has syntax error! line 1:0:no viable alternative at input '{'
     at 
org.apache.drill.common.expression.parser.ExprParser.displayRecognitionError(ExprParser.java:169) 
~[drill-logical-1.12.0.jar:1.12.0]
     at 
org.antlr.runtime.BaseRecognizer.reportError(BaseRecognizer.java:186) 
~[antlr-runtime-3.4.jar:na]
     at 
org.apache.drill.common.expression.parser.ExprParser.expression(ExprParser.java:3063) 
~[drill-logical-1.12.0.jar:1.12.0]
     at 
org.apache.drill.common.expression.parser.ExprParser.parse(ExprParser.java:206) 
~[drill-logical-1.12.0.jar:1.12.0]
     at 
org.apache.drill.common.expression.SchemaPath.parseFromString(SchemaPath.java:133) 
~[drill-logical-1.12.0.jar:1.12.0]
     at 
org.apache.drill.common.expression.SchemaPath$De.deserialize(SchemaPath.java:275) 
~[drill-logical-1.12.0.jar:1.12.0]
     at 
org.apache.drill.common.expression.SchemaPath$De.deserialize(SchemaPath.java:267) 
~[drill-logical-1.12.0.jar:1.12.0]
     at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:287) 
~[jackson-databind-2.7.9.1.jar:2.7.9.1]
     ... 44 common frames omitted

Thank you!

- Ryan