[
https://issues.apache.org/jira/browse/PHOENIX-5236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18065200#comment-18065200
]
Xavier Fernandis commented on PHOENIX-5236:
-------------------------------------------
And as referenced as https://issues.apache.org/jira/browse/PHOENIX-4816
There is a workaround for this of using COLUMN_ENCODED_BYTES=NONE when creating
the table.
*With the workaround*
0: jdbc:phoenix:> DROP TABLE IF EXISTS test_workaround CASCADE;
>
No rows affected (0.002 seconds)
0: jdbc:phoenix:> CREATE TABLE test_workaround (
. . . . . . . .)> id VARCHAR PRIMARY KEY,
. . . . . . . .)> name VARCHAR
. . . . . . . .)> ) COLUMN_ENCODED_BYTES=NONE;
No rows affected (0.636 seconds)
0: jdbc:phoenix:> UPSERT INTO test_workaround(id, name, city VARCHAR,
department VARCHAR, age INTEGER)
. . . .semicolon> VALUES ('1', 'John Doe', 'Chennai', 'Engineering', 30);
. . . . . . . . >
. . . . . . . . > UPSERT INTO test_workaround(id, name, city VARCHAR,
department VARCHAR, age INTEGER)
. . . .semicolon> VALUES ('2', 'Jane Smith', 'Mumbai', 'Marketing', 28);
. . . . . . . . >
. . . . . . . . > UPSERT INTO test_workaround(id, name, city VARCHAR,
department VARCHAR, age INTEGER)
. . . .semicolon> VALUES ('3', 'Bob Wilson', 'Bangalore', 'Engineering', 35);
>
1 row affected (0.005 seconds)
1 row affected (0.003 seconds)
1 row affected (0.003 seconds)
0: jdbc:phoenix:> SELECT id, name, city, department
. . . .semicolon> FROM test_workaround(city VARCHAR, department VARCHAR)
. . . .semicolon> WHERE city = 'Chennai' AND department = 'Engineering';
+----+----------+---------+-------------+
| ID | NAME | CITY | DEPARTMENT |
+----+----------+---------+-------------+
| 1 | John Doe | Chennai | Engineering |
+----+----------+---------+-------------+
1 row selected (0.014 seconds)
0: jdbc:phoenix:> SELECT id, name, city, department, age
. . . .semicolon> FROM test_workaround(city VARCHAR, department VARCHAR, age
INTEGER)
. . . .semicolon> WHERE city = 'Chennai' AND department = 'Engineering' AND age
> 25;
>
+----+----------+---------+-------------+-----+
| ID | NAME | CITY | DEPARTMENT | AGE |
+----+----------+---------+-------------+-----+
| 1 | John Doe | Chennai | Engineering | 30 |
+----+----------+---------+-------------+-----+
*Without the workaround*
1 row selected (0.012 seconds)
0: jdbc:phoenix:> DROP TABLE IF EXISTS test_no_workaround CASCADE;
>
No rows affected (0.948 seconds)
0: jdbc:phoenix:> CREATE TABLE test_no_workaround (
. . . . . . . .)> id VARCHAR PRIMARY KEY,
. . . . . . . .)> name VARCHAR
. . . . . . . .)> );
No rows affected (0.63 seconds)
0: jdbc:phoenix:> UPSERT INTO test_no_workaround(id, name, city VARCHAR,
department VARCHAR, age INTEGER)
. . . .semicolon> VALUES ('1', 'John Doe', 'Chennai', 'Engineering', 30);
. . . . . . . . >
. . . . . . . . > UPSERT INTO test_no_workaround(id, name, city VARCHAR,
department VARCHAR, age INTEGER)
. . . .semicolon> VALUES ('2', 'Jane Smith', 'Mumbai', 'Marketing', 28);
. . . . . . . . >
. . . . . . . . > UPSERT INTO test_no_workaround(id, name, city VARCHAR,
department VARCHAR, age INTEGER)
. . . .semicolon> VALUES ('3', 'Bob Wilson', 'Bangalore', 'Engineering', 35);
>
1 row affected (0.006 seconds)
1 row affected (0.004 seconds)
1 row affected (0.003 seconds)
0: jdbc:phoenix:> SELECT id, name, city, department
. . . .semicolon> FROM test_no_workaround(city VARCHAR, department VARCHAR)
. . . .semicolon> WHERE city = 'Chennai' AND department = 'Engineering';
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:549)
at
org.apache.phoenix.schema.PTable$QualifierEncodingScheme.access$400(PTable.java:318)
at
org.apache.phoenix.schema.PTable$QualifierEncodingScheme$3.decode(PTable.java:398)
at
org.apache.phoenix.filter.MultiEncodedCQKeyValueComparisonFilter$1.visit(MultiEncodedCQKeyValueComparisonFilter.java:182)
at
org.apache.phoenix.filter.MultiEncodedCQKeyValueComparisonFilter$1.visit(MultiEncodedCQKeyValueComparisonFilter.java:179)
at
org.apache.phoenix.expression.KeyValueColumnExpression.accept(KeyValueColumnExpression.java:143)
at
org.apache.phoenix.expression.BaseExpression.acceptChildren(BaseExpression.java:244)
at
org.apache.phoenix.expression.ComparisonExpression.accept(ComparisonExpression.java:370)
at
org.apache.phoenix.expression.BaseExpression.acceptChildren(BaseExpression.java:244)
at
org.apache.phoenix.expression.AndExpression.accept(AndExpression.java:99)
at
org.apache.phoenix.filter.MultiEncodedCQKeyValueComparisonFilter.initFilter(MultiEncodedCQKeyValueComparisonFilter.java:196)
at
org.apache.phoenix.filter.MultiEncodedCQKeyValueComparisonFilter.<init>(MultiEncodedCQKeyValueComparisonFilter.java:103)
at
org.apache.phoenix.compile.WhereCompiler.setScanFilter(WhereCompiler.java:354)
at
org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:173)
at
org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:118)
at
org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:739)
at
org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:667)
at
org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:249)
at
org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:178)
at
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:547)
at
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:510)
at
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:314)
at
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:303)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:302)
at
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:295)
at
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:2061)
at sqlline.Commands.executeSingleQuery(Commands.java:1054)
at sqlline.Commands.execute(Commands.java:1003)
at sqlline.Commands.sql(Commands.java:967)
at sqlline.SqlLine.dispatch(SqlLine.java:734)
at sqlline.SqlLine.begin(SqlLine.java:541)
at sqlline.SqlLine.start(SqlLine.java:267)
at sqlline.SqlLine.main(SqlLine.java:206)
0: jdbc:phoenix:>
> Multiple dynamic columns in WHERE clause is not working
> -------------------------------------------------------
>
> Key: PHOENIX-5236
> URL: https://issues.apache.org/jira/browse/PHOENIX-5236
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.14.0
> Reporter: Chandrasekar
> Priority: Major
>
> When the query uses multiple dynamic columns in the WHERE clause it's
> failing. Consider the following example:
>
> CREATE TABLE CITY (ID INTEGER, NAME VARCHAR CONSTRAINT PK PRIMARY KEY (ID))
> And the following upserts:
> UPSERT INTO CITY (ID, NAME, POPULATION INTEGER, DISTRICT VARCHAR) VALUES (1,
> 'XYZ', 1000, 'XYZ')
> UPSERT INTO CITY (ID, NAME, POPULATION INTEGER) VALUES (2, 'ABC', 2000)
>
> And now when the following query is executed:
> SELECT ID, NAME FROM CITY (POPULATION INTEGER, DISTRICT VARCHAR) WHERE
> DISTRICT IS NULL AND POPULATION > 1000
> It throws the following exception:
> org.apache.phoenix.schema.PTable$QualifierEncodingScheme$InvalidQualifierBytesException:
> Invalid number of qualifier bytes. Expected length: 2. Actual: 8
> Even comparing different dynamic columns is not working. For example in the
> same table, following upsert is executed:
> UPSERT INTO CITY (ID, NAME, CURRENT_POPULATION INTEGER) VALUES (2, 'ABC',
> 2000)
> And when the following query is executed:
> SELECT ID, NAME FROM CITY (POPULATION INTEGER, CURRENT_POPULATION INTEGER)
> WHERE POPULATION != CURRENT_POPULATION
> It again throws the same error (
> org.apache.phoenix.schema.PTable$QualifierEncodingScheme$InvalidQualifierBytesException:
> Invalid number of qualifier bytes. Expected length: 2. Actual: 10)
> Does phoenix allows querying by conditions on multiple dynamic columns? The
> phoenix version used is 4.14.0 and HBase version is 1.4.8.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)