[jira] [Updated] (PHOENIX-1077) Exception thrown when executing an IN list of Row Value Constructors against salted tables.

2014-07-11 Thread Samarth Jain (JIRA)

 [ 
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.

2014-07-11 Thread Samarth Jain (JIRA)

 [ 
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.

2014-07-11 Thread Kyle Buzsaki (JIRA)

 [ 
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)