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