Taewoo Kim created ASTERIXDB-2437: ------------------------------------- Summary: Index-only plan cannot be generated for a composite index if both fields are used and only one field is returned. Key: ASTERIXDB-2437 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2437 Project: Apache AsterixDB Issue Type: Bug Reporter: Taewoo Kim
When there is a composite index, if both fields are used in the select condition and only one field is returned, the compiler generates an exception. DDL and query: {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; create index create_at_status_count_idx on ds_tweet(user.create_at, user.statues_count); select value count(first.create_at) from ( select t.user.create_at, t.user.statues_count, t.id from ds_tweet t where t.user.create_at >= date_from_unix_time_in_days(10000) and t.user.create_at < date_from_unix_time_in_days(12000) and t.user.statues_count >= 0 and t.user.statues_count < 1000000 ) first; {code} Exception: {code:java} org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: Could not infer type for variable '$$57'. at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.visitVariableReferenceExpression(SetClosedRecordConstructorsRule.java:170) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.visitVariableReferenceExpression(SetClosedRecordConstructorsRule.java:77) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression.accept(VariableReferenceExpression.java:93) ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.visitFunctionCallExpression(SetClosedRecordConstructorsRule.java:150) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.visitFunctionCallExpression(SetClosedRecordConstructorsRule.java:77) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.hyracks.algebricks.core.algebra.visitors.AbstractConstVarFunVisitor.visitScalarFunctionCallExpression(AbstractConstVarFunVisitor.java:39) ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT] at org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression.accept(ScalarFunctionCallExpression.java:55) ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.visitFunctionCallExpression(SetClosedRecordConstructorsRule.java:150) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.visitFunctionCallExpression(SetClosedRecordConstructorsRule.java:77) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.hyracks.algebricks.core.algebra.visitors.AbstractConstVarFunVisitor.visitScalarFunctionCallExpression(AbstractConstVarFunVisitor.java:39) ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT] at org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression.accept(ScalarFunctionCallExpression.java:55) ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule$SettingClosedRecordVisitor.transform(SetClosedRecordConstructorsRule.java:91) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT] at org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator.acceptExpressionTransform(SelectOperator.java:83) ~[algebricks-core-0.3.4-SNAPSHOT.jar:0.3.4-SNAPSHOT] at org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule.rewritePost(SetClosedRecordConstructorsRule.java:70) ~[asterix-algebra-0.9.4-SNAPSHOT.jar:0.9.4-SNAPSHOT]{code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)