[ 
https://issues.apache.org/jira/browse/PHOENIX-7636?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani updated PHOENIX-7636:
----------------------------------
    Description: 
While creating CDC object on table with case-sensitive pk columns, the CDC 
PTable definition does not include case-sensitive pk columns of the data table. 
Therefore, reading of the CDC records fails as the query optimizer cannot 
select any plan.

e.g. 

SQL statements:
{code:java}
CREATE TABLE XYZ."test.table" ("key1" VARCHAR NOT NULL, COL BSON CONSTRAINT pk 
PRIMARY KEY ("key1"));

CREATE CDC "CDC_test.table" on XYZ."test.table";

UPSERT INTO XYZ."test.table" VALUES (?,?);

SELECT /*+ CDC_INCLUDE(PRE, POST) */ *  FROM XYZ."CDC_test.table" WHERE 
PARTITION_ID() = ?  AND PHOENIX_ROW_TIMESTAMP() >= CAST(CAST(? AS BIGINT) AS 
TIMESTAMP) LIMIT ?;{code}
causes
{code:java}
Caused by: 
org.apache.phoenix.schema.RowValueConstructorOffsetNotCoercibleException: ERROR 
2014 (INT16): Row Value Constructor Offset Not Coercible to a Primary or 
Indexed RowKey. No table or index could be coerced to the PK as the offset. Or 
an uncovered index was attempted
        at 
org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlansForSingleFlatQuery(QueryOptimizer.java:331)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlans(QueryOptimizer.java:142)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:120) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:106) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:392) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:360) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:360)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:342)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:197)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.ddb.service.GetRecordsService.getRecords(GetRecordsService.java:71)
 ~[classes/:?]
        at org.apache.phoenix.ddb.rest.RootResource.get(RootResource.java:196) 
~[classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_362]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_362]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_362]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_362]{code}

  was:
While creating CDC object on table with case-sensitive pk columns, the CDC 
PTable definition does not include case-sensitive pk columns of the data table. 
Therefore, reading of the CDC records fails as the query optimizer cannot 
select any plan.

e.g. 

SQL statements 

 
{code:java}
CREATE TABLE XYZ."test.table" ("key1" VARCHAR NOT NULL, COL BSON CONSTRAINT pk 
PRIMARY KEY ("key1"));

CREATE CDC "CDC_test.table" on XYZ."test.table";

UPSERT INTO XYZ."test.table" VALUES (?,?);

SELECT /*+ CDC_INCLUDE(PRE, POST) */ *  FROM XYZ."CDC_test.table" WHERE 
PARTITION_ID() = ?  AND PHOENIX_ROW_TIMESTAMP() >= CAST(CAST(? AS BIGINT) AS 
TIMESTAMP) LIMIT ?;{code}
 

 

 
{code:java}
Caused by: 
org.apache.phoenix.schema.RowValueConstructorOffsetNotCoercibleException: ERROR 
2014 (INT16): Row Value Constructor Offset Not Coercible to a Primary or 
Indexed RowKey. No table or index could be coerced to the PK as the offset. Or 
an uncovered index was attempted
        at 
org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlansForSingleFlatQuery(QueryOptimizer.java:331)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlans(QueryOptimizer.java:142)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:120) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:106) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:392) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:360) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) 
~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:360)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:342)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:197)
 ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
        at 
org.apache.phoenix.ddb.service.GetRecordsService.getRecords(GetRecordsService.java:71)
 ~[classes/:?]
        at org.apache.phoenix.ddb.rest.RootResource.get(RootResource.java:196) 
~[classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_362]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_362]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_362]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_362]{code}
 

 

 


> CDC on table with case-sensitive pk fails to read partition records
> -------------------------------------------------------------------
>
>                 Key: PHOENIX-7636
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7636
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Viraj Jasani
>            Assignee: Viraj Jasani
>            Priority: Major
>             Fix For: 5.3.0
>
>
> While creating CDC object on table with case-sensitive pk columns, the CDC 
> PTable definition does not include case-sensitive pk columns of the data 
> table. Therefore, reading of the CDC records fails as the query optimizer 
> cannot select any plan.
> e.g. 
> SQL statements:
> {code:java}
> CREATE TABLE XYZ."test.table" ("key1" VARCHAR NOT NULL, COL BSON CONSTRAINT 
> pk PRIMARY KEY ("key1"));
> CREATE CDC "CDC_test.table" on XYZ."test.table";
> UPSERT INTO XYZ."test.table" VALUES (?,?);
> SELECT /*+ CDC_INCLUDE(PRE, POST) */ *  FROM XYZ."CDC_test.table" WHERE 
> PARTITION_ID() = ?  AND PHOENIX_ROW_TIMESTAMP() >= CAST(CAST(? AS BIGINT) AS 
> TIMESTAMP) LIMIT ?;{code}
> causes
> {code:java}
> Caused by: 
> org.apache.phoenix.schema.RowValueConstructorOffsetNotCoercibleException: 
> ERROR 2014 (INT16): Row Value Constructor Offset Not Coercible to a Primary 
> or Indexed RowKey. No table or index could be coerced to the PK as the 
> offset. Or an uncovered index was attempted
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlansForSingleFlatQuery(QueryOptimizer.java:331)
>  ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.getApplicablePlans(QueryOptimizer.java:142)
>  ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:120) 
> ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:106) 
> ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:392) 
> ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:360) 
> ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) 
> ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:360)
>  ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:342)
>  ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:197)
>  ~[phoenix-core-client-5.3.0-sfdc-13.0.24.jar:5.3.0-sfdc-13.0.24]
>       at 
> org.apache.phoenix.ddb.service.GetRecordsService.getRecords(GetRecordsService.java:71)
>  ~[classes/:?]
>       at org.apache.phoenix.ddb.rest.RootResource.get(RootResource.java:196) 
> ~[classes/:?]
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[?:1.8.0_362]
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[?:1.8.0_362]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[?:1.8.0_362]
>       at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_362]{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to