You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Taewoo Kim (JIRA)" <ji...@apache.org> on 2018/02/22 20:23:00 UTC
[jira] [Created] (ASTERIXDB-2296)
AbstractIntroduceAccessMethodRule.getFieldNameFromSubTree() cannot handle
AUnionType
Taewoo Kim created ASTERIXDB-2296:
-------------------------------------
Summary: 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
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)