You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Chinmay Kulkarni (JIRA)" <ji...@apache.org> on 2019/01/21 19:20:01 UTC

[jira] [Updated] (PHOENIX-5107) Querying dynamic columns for an immutable table with SINGLE_CELL_ARRAY_WITH_OFFSETS storage scheme throws an exception

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