[jira] [Updated] (PHOENIX-1077) Exception thrown when executing an IN list of Row Value Constructors against salted tables.
[ https://issues.apache.org/jira/browse/PHOENIX-1077?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Samarth Jain updated PHOENIX-1077: -- Description: 1) Table - Salted. Query - IN list of RVCs. Result - fails with exception. Details: Table DDL - CREATE TABLE t (pk1 varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (pk1,pk2,pk3)) SALT_BUCKETS=4 Query - select pk1, pk2, pk3 from t WHERE (pk1, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Exception: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:199) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157) at org.apache.phoenix.end2end.RowValueConstructorIT.testInListOfRVC5(RowValueConstructorIT.java:1078) 2) Most likely related to 1) Table - multi-tenant and salted. Query - IN list of RVCs. Result - Fails with exception. Details: Base Table DDL - CREATE TABLE t (tenantId varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (tenantId,pk2,pk3)) SALT_BUCKETS=4, MULTI_TENANT=true Tenant View DDL - CREATE VIEW t_view (tenant_col VARCHAR) AS SELECT * FROM t Query using global connection : select pk2, pk3 from t WHERE (tenantId, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Stacktrace: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:199) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157) at org.apache.phoenix.end2end.RowValueConstructorIT.testInListOfRVC4(RowValueConstructorIT.java:1042) was: IN list of row value constructors doesn't work when queried against tenant views for multi-tenant phoenix tables. Consider this test (added in TenantSpecificTablesDMLIT.java) {code} public void testRVCOnTenantSpecificTable() throws Exception { Connection conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL); try { conn.setAutoCommit(true); conn.createStatement().executeUpdate(upsert into + TENANT_TABLE_NAME + (id, user) values (1, 'BonA')); conn.createStatement().executeUpdate(upsert into + TENANT_TABLE_NAME + (id, user) values (2, 'BonB')); conn.createStatement().executeUpdate(upsert into + TENANT_TABLE_NAME + (id, user) values (3, 'BonC')); conn.close(); conn = nextConnection(PHOENIX_JDBC_TENANT_SPECIFIC_URL); PreparedStatement stmt = conn.prepareStatement(select id from + TENANT_TABLE_NAME + WHERE (id, user) IN ((?, ?), (?, ?), (?, ?))); stmt.setInt(1, 1); stmt.setString(2, BonA); stmt.setInt(3, 2); stmt.setString(4, BonB); stmt.setInt(5, 3); stmt.setString(6, BonC); ResultSet rs = stmt.executeQuery(); assertTrue(rs.next()); assertEquals(1, rs.getInt(1)); assertTrue(rs.next());
[jira] [Updated] (PHOENIX-1077) Exception thrown when executing an IN list of Row Value Constructors against salted tables.
[ https://issues.apache.org/jira/browse/PHOENIX-1077?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Samarth Jain updated PHOENIX-1077: -- Description: {code} 1) Table - Salted. Query - IN list of RVCs. Result - fails with exception. Details: Table DDL - CREATE TABLE t (pk1 varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (pk1,pk2,pk3)) SALT_BUCKETS=4 Query - select pk1, pk2, pk3 from t WHERE (pk1, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Exception: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:199) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157) at org.apache.phoenix.end2end.RowValueConstructorIT.testInListOfRVC5(RowValueConstructorIT.java:1078) 2) Most likely related to 1) Table - multi-tenant and salted. Query - IN list of RVCs. Result - Fails with exception. Details: Base Table DDL - CREATE TABLE t (tenantId varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (tenantId,pk2,pk3)) SALT_BUCKETS=4, MULTI_TENANT=true Tenant View DDL - CREATE VIEW t_view (tenant_col VARCHAR) AS SELECT * FROM t Query using global connection : select pk2, pk3 from t WHERE (tenantId, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Stacktrace: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:199) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157) at org.apache.phoenix.end2end.RowValueConstructorIT.testInListOfRVC4(RowValueConstructorIT.java:1042) {code} was: 1) Table - Salted. Query - IN list of RVCs. Result - fails with exception. Details: Table DDL - CREATE TABLE t (pk1 varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (pk1,pk2,pk3)) SALT_BUCKETS=4 Query - select pk1, pk2, pk3 from t WHERE (pk1, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Exception: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1)
[jira] [Updated] (PHOENIX-1077) Exception thrown when executing an IN list of Row Value Constructors against salted tables.
[ https://issues.apache.org/jira/browse/PHOENIX-1077?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kyle Buzsaki updated PHOENIX-1077: -- Attachment: PHOENIX-1077.patch Attaching fix. Please commit, [~elilevine] or [~jamestaylor]. Exception thrown when executing an IN list of Row Value Constructors against salted tables. --- Key: PHOENIX-1077 URL: https://issues.apache.org/jira/browse/PHOENIX-1077 Project: Phoenix Issue Type: Bug Affects Versions: 3.0.0, 4.0.0, 5.0.0 Reporter: Samarth Jain Assignee: Kyle Buzsaki Attachments: PHOENIX-1077.patch {code} 1) Table - Salted. Query - IN list of RVCs. Result - fails with exception. Details: Table DDL - CREATE TABLE t (pk1 varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (pk1,pk2,pk3)) SALT_BUCKETS=4 Query - select pk1, pk2, pk3 from t WHERE (pk1, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Exception: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:199) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157) at org.apache.phoenix.end2end.RowValueConstructorIT.testInListOfRVC5(RowValueConstructorIT.java:1078) 2) Most likely related to 1) Table - multi-tenant and salted. Query - IN list of RVCs. Result - Fails with exception. Details: Base Table DDL - CREATE TABLE t (tenantId varchar(5) NOT NULL, pk2 varchar(5) NOT NULL, pk3 INTEGER NOT NULL, c1 INTEGER constraint pk primary key (tenantId,pk2,pk3)) SALT_BUCKETS=4, MULTI_TENANT=true Tenant View DDL - CREATE VIEW t_view (tenant_col VARCHAR) AS SELECT * FROM t Query using global connection : select pk2, pk3 from t WHERE (tenantId, pk2, pk3) IN ((?, ?, ?), (?, ?, ?)) Stacktrace: java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.phoenix.schema.ValueSchema.getField(ValueSchema.java:300) at org.apache.phoenix.util.ScanUtil.setKey(ScanUtil.java:260) at org.apache.phoenix.compile.ScanRanges.getPointKeys(ScanRanges.java:185) at org.apache.phoenix.compile.ScanRanges.create(ScanRanges.java:61) at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:224) at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:105) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:260) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:128) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:264) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:199) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157) at org.apache.phoenix.end2end.RowValueConstructorIT.testInListOfRVC4(RowValueConstructorIT.java:1042) {code} -- This message was sent by Atlassian JIRA (v6.2#6252)