[ https://issues.apache.org/jira/browse/PHOENIX-5107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chinmay Kulkarni updated PHOENIX-5107: -------------------------------------- Description: Steps to repro: {{create immutable table t1 (a varchar, b integer primary key) IMMUTABLE_STORAGE_SCHEME = SINGLE_CELL_ARRAY_WITH_OFFSETS, COLUMN_ENCODED_BYTES = 1;}} {{upsert into t1 (a, b, dyn1 integer) values('ready', 10, 3);}} {{upsert into t1 (a, b, dyn1 integer, dyn2 varchar) values('steady', 20, 4, 'dummy1');}} {{upsert into t1 (a, b, dyn1 integer, dyn2 varchar, dyn3 integer) values('go', 30, 5, 'dummy2', 7);}} {{select a, b, dyn1, dyn2 from t1 (dyn1 integer, dyn2 varchar);}} The select query above throws the underlying exception: *org.apache.phoenix.schema.PTable$QualifierEncodingScheme$InvalidQualifierBytesException: Invalid number of qualifier bytes. Expected length: 4. Actual: 4* at org.apache.phoenix.schema.PTable$QualifierEncodingScheme.getReservedQualifier(PTable.java:524) at org.apache.phoenix.schema.PTable$QualifierEncodingScheme.access$300(PTable.java:293) at org.apache.phoenix.schema.PTable$QualifierEncodingScheme$2.decode(PTable.java:332) at org.apache.phoenix.expression.SingleCellColumnExpression.<init>(SingleCellColumnExpression.java:82) at org.apache.phoenix.schema.ColumnRef.newColumnExpression(ColumnRef.java:131) at org.apache.phoenix.schema.ColumnRef.newColumnExpression(ColumnRef.java:111) at org.apache.phoenix.execute.TupleProjector.<init>(TupleProjector.java:98) at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:589) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:510) at org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:195) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:155) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:490) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:456) at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:302) at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:291) at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:290) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:283) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:1793) was: Steps to repro: {{create immutable table t1 (a varchar, b integer primary key) IMMUTABLE_STORAGE_SCHEME = SINGLE_CELL_ARRAY_WITH_OFFSETS, COLUMN_ENCODED_BYTES = 1;}} {{upsert into t1 (a, b, dyn1 integer) values('ready', 10, 3);}} {{upsert into t1 (a, b, dyn1 integer, dyn2 varchar) values('steady', 20, 4, 'chinmay');}} {{upsert into t1 (a, b, dyn1 integer, dyn2 varchar, dyn3 integer) values('go', 30, 5, 'kulkarni', 7);}} {{select a, b, dyn1, dyn2 from t1 (dyn1 integer, dyn2 varchar);}} The select query above throws the underlying exception: org.apache.phoenix.schema.PTable$QualifierEncodingScheme$InvalidQualifierBytesException: Invalid number of qualifier bytes. Expected length: 4. Actual: 4 at org.apache.phoenix.schema.PTable$QualifierEncodingScheme.getReservedQualifier(PTable.java:524) at org.apache.phoenix.schema.PTable$QualifierEncodingScheme.access$300(PTable.java:293) at org.apache.phoenix.schema.PTable$QualifierEncodingScheme$2.decode(PTable.java:332) at org.apache.phoenix.expression.SingleCellColumnExpression.<init>(SingleCellColumnExpression.java:82) at org.apache.phoenix.schema.ColumnRef.newColumnExpression(ColumnRef.java:131) at org.apache.phoenix.schema.ColumnRef.newColumnExpression(ColumnRef.java:111) at org.apache.phoenix.execute.TupleProjector.<init>(TupleProjector.java:98) at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:589) at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:510) at org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:195) at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:155) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:490) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:456) at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:302) at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:291) at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:290) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:283) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:1793) > Querying dynamic columns for an immutable table with > SINGLE_CELL_ARRAY_WITH_OFFSETS storage scheme throws an exception > ---------------------------------------------------------------------------------------------------------------------- > > Key: PHOENIX-5107 > URL: https://issues.apache.org/jira/browse/PHOENIX-5107 > Project: Phoenix > Issue Type: Bug > Reporter: Chinmay Kulkarni > Priority: Major > > Steps to repro: > > {{create immutable table t1 (a varchar, b integer primary key) > IMMUTABLE_STORAGE_SCHEME = SINGLE_CELL_ARRAY_WITH_OFFSETS, > COLUMN_ENCODED_BYTES = 1;}} > {{upsert into t1 (a, b, dyn1 integer) values('ready', 10, 3);}} > {{upsert into t1 (a, b, dyn1 integer, dyn2 varchar) values('steady', 20, 4, > 'dummy1');}} > {{upsert into t1 (a, b, dyn1 integer, dyn2 varchar, dyn3 integer) > values('go', 30, 5, 'dummy2', 7);}} > {{select a, b, dyn1, dyn2 from t1 (dyn1 integer, dyn2 varchar);}} > > The select query above throws the underlying exception: > > *org.apache.phoenix.schema.PTable$QualifierEncodingScheme$InvalidQualifierBytesException: > Invalid number of qualifier bytes. Expected length: 4. Actual: 4* > at > org.apache.phoenix.schema.PTable$QualifierEncodingScheme.getReservedQualifier(PTable.java:524) > at > org.apache.phoenix.schema.PTable$QualifierEncodingScheme.access$300(PTable.java:293) > at > org.apache.phoenix.schema.PTable$QualifierEncodingScheme$2.decode(PTable.java:332) > at > org.apache.phoenix.expression.SingleCellColumnExpression.<init>(SingleCellColumnExpression.java:82) > at > org.apache.phoenix.schema.ColumnRef.newColumnExpression(ColumnRef.java:131) > at > org.apache.phoenix.schema.ColumnRef.newColumnExpression(ColumnRef.java:111) > at org.apache.phoenix.execute.TupleProjector.<init>(TupleProjector.java:98) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:589) > at > org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:510) > at > org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:195) > at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:155) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:490) > at > org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:456) > at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:302) > at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:291) > at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:290) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:283) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:1793) -- This message was sent by Atlassian JIRA (v7.6.3#76005)