[
https://issues.apache.org/jira/browse/ASTERIXDB-2296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Taewoo Kim reassigned ASTERIXDB-2296:
-------------------------------------
Assignee: Taewoo Kim
> AbstractIntroduceAccessMethodRule.getFieldNameFromSubTree() cannot handle
> AUnionType
> ------------------------------------------------------------------------------------
>
> Key: ASTERIXDB-2296
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-2296
> Project: Apache AsterixDB
> Issue Type: Bug
> Reporter: Taewoo Kim
> Assignee: Taewoo Kim
> Priority: Major
>
> DDL
> {code:java}
> drop dataverse twitter if exists;
> create dataverse twitter if not exists;
> use twitter;
> create type typeUser if not exists as open {
> id: int64,
> name: string,
> screen_name : string,
> profile_image_url : string?,
> lang : string,
> location: string,
> create_at: date,
> description: string,
> followers_count: int32,
> friends_count: int32,
> statues_count: int64
> };
> create type typePlace if not exists as open{
> country : string,
> country_code : string,
> full_name : string,
> id : string,
> name : string,
> place_type : string,
> bounding_box : rectangle
> };
> create type typeGeoTag if not exists as open {
> stateID: int32,
> stateName: string,
> countyID: int32,
> countyName: string,
> cityID: int32?,
> cityName: string?
> };
> create type typeTweet if not exists as open {
> create_at : datetime,
> id: int64,
> text: string,
> in_reply_to_status : int64,
> in_reply_to_user : int64,
> favorite_count : int64,
> coordinate: point?,
> retweet_count : int64,
> lang : string,
> is_retweet: boolean,
> hashtags : {{ string }} ?,
> user_mentions : {{ int64 }} ? ,
> user : typeUser,
> place : typePlace?,
> geo_tag: typeGeoTag
> };
> create dataset ds_tweet(typeTweet) if not exists primary key id with filter
> on create_at with
> {"merge-policy":
> {"name":"prefix","parameters":
> {"max-mergable-component-size":134217728,
> "max-tolerance-component-count":10}
> }
> };
> create index text_idx if not exists on ds_tweet(text) type fulltext;
> {code}
> The following SQL++ query doesn't work based on the above DDL. This is
> because "place" is an optional field so that its type if AUnionType that
> contains ARecordType, not ARecordType itself.
> {code:java}
> select t.`place`.`bounding_box` as `place.bounding_box`,t.`user`.`id` as
> `user.id`,t.`id` as `id`,
> t.`coordinate` as `coordinate`,t.`create_at` as `create_at`
> from twitter.ds_tweet t
> where t.`create_at` >= datetime('2018-02-22T10:53:07.888Z') and t.`create_at`
> < datetime('2018-02-22T18:50:39.301Z')
> and ftcontains(t.`text`, ['francisco'], {'mode':'all'}) and
> t.`geo_tag`.`stateID` in [ 37,51,24,11 ]
> order by t.`create_at` desc
> limit 2147483647
> offset 0;
> {code}
> An exception:
> {code:java}
> 11:23:01.827 [QueryTranslator] INFO
> org.apache.asterix.app.translator.QueryTranslator -
> org.apache.asterix.om.types.AUnionType cannot be cast to
> org.apache.asterix.om.types.ARecordType
> java.lang.ClassCastException: org.apache.asterix.om.types.AUnionType cannot
> be cast to org.apache.asterix.om.types.ARecordType
> at
> org.apache.asterix.optimizer.rules.am.AbstractIntroduceAccessMethodRule.getFieldNameFromSubTree(AbstractIntroduceAccessMethodRule.java:877)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.AbstractIntroduceAccessMethodRule.fillFieldNamesInTheSubTree(AbstractIntroduceAccessMethodRule.java:973)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:412)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.checkAndApplyTheSelectTransformation(IntroduceSelectAccessMethodRule.java:327)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.optimizer.rules.am.IntroduceSelectAccessMethodRule.rewritePre(IntroduceSelectAccessMethodRule.java:167)
> ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:91)
> ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController.rewriteWithRuleCollection(SequentialFixpointRuleController.java:53)
> ~[algebricks-compiler-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:102)
> ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:82)
> ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:90)
> ~[algebricks-compiler-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:269)
> ~[asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:1897)
> ~[asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$20(QueryTranslator.java:2373)
> [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator$$Lambda$141/916493385.compile(Unknown
> Source) [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:2496)
> [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:2406)
> [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:2385)
> [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:381)
> [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at org.apache.asterix.api.http.server.ApiServlet.post(ApiServlet.java:168)
> [asterix-app-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]
> at
> org.apache.hyracks.http.server.AbstractServlet.handle(AbstractServlet.java:92)
> [hyracks-http-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:71)
> [hyracks-http-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:56)
> [hyracks-http-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at
> org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:37)
> [hyracks-http-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> [?:1.8.0]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> [?:1.8.0]
> at java.lang.Thread.run(Thread.java:744) [?:1.8.0]{code}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)