[ https://issues.apache.org/jira/browse/PHOENIX-1709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14352585#comment-14352585 ] daniel meng edited comment on PHOENIX-1709 at 3/9/15 6:01 AM: -------------------------------------------------------------- hi, [~jamestaylor] i find two issues after apply v2.patch 1. WHERE (pk1, pk2) IN ((1, 2), (2, 3)) AND pk2 = 4 will compile as FULL SCAN, but it should be DEGENERATE SCAN 2. when the table is a multi-tenant table and the tenant column data type is not fixed length. the RowKeySchema's iterator can not be use directly on iterating primary key RCVs. because the first next() will skip one byte for SEPERATOR. i made a new v3.patch based on v2.patch was (Author: daniel.m): i find two issues after apply v2.patch 1. WHERE (pk1, pk2) IN ((1, 2), (2, 3)) AND pk2 = 4 will compile as FULL SCAN, but it should be DEGENERATE SCAN 2. when the table is a multi-tenant table and the tenant column data type is not fixed length. the RowKeySchema's iterator can not be use directly on iterating primary key RCVs. because the first next() will skip one byte for SEPERATOR. i made a new v3.patch based on v2.patch > And expression of primary key RVCs can not compile > -------------------------------------------------- > > Key: PHOENIX-1709 > URL: https://issues.apache.org/jira/browse/PHOENIX-1709 > Project: Phoenix > Issue Type: Bug > Reporter: James Taylor > Assignee: James Taylor > Attachments: PHOENIX-1709.patch, PHOENIX-1709_v2.patch, PHOENIX-1709_v3.patch > > > 1 . create table t (a integer not null, b integer not null, c integer > constraint pk primary key (a,b)); > 2. select c from t where a in (1,2) and b = 3 and (a,b) in ( (1,2) , (1,3)); > I got exception on compile : > java.lang.IllegalArgumentException > at > com.google.common.base.Preconditions.checkArgument(Preconditions.java:76) > at > org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor$KeySlot.inter > sect(WhereOptimizer.java:955) > at > org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.intersectSlot > s(WhereOptimizer.java:506) > at > org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.andKeySlots(W > hereOptimizer.java:551) > at > org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.visitLeave(Wh > ereOptimizer.java:725) > at > org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.visitLeave(Wh > ereOptimizer.java:349) > at > org.apache.phoenix.expression.AndExpression.accept(AndExpression.java:100) > at > org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOpti > mizer.java:117) > at > org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.ja > va:324) > at > org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:132) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePl > an(PhoenixStatement.java:296) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePl > an(PhoenixStatement.java:284) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:208) > at > org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:204) > at > org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.j > ava:54) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java: > 204) > at > org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:967) > at sqlline.SqlLine$Commands.execute(SqlLine.java:3673) > at sqlline.SqlLine$Commands.sql(SqlLine.java:3584) > at sqlline.SqlLine.dispatch(SqlLine.java:821) > at sqlline.SqlLine.begin(SqlLine.java:699) > at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441) > at sqlline.SqlLine.main(SqlLine.java:424) -- This message was sent by Atlassian JIRA (v6.3.4#6332)