You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@phoenix.apache.org by "Tulasi P (JIRA)" <ji...@apache.org> on 2018/08/02 22:27:00 UTC

[jira] [Comment Edited] (PHOENIX-4791) Array elements are nullified with joins

    [ https://issues.apache.org/jira/browse/PHOENIX-4791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16567518#comment-16567518 ] 

Tulasi P edited comment on PHOENIX-4791 at 8/2/18 10:26 PM:
------------------------------------------------------------

{quote}Take a look at RegionScannerFactory.getWrappedScanner() and in particular the replaceArrayIndexElement() method.
{quote}
It looks like *replaceArrayIndexElement()* is doing the correct thing?
{code:java}
Input List<Cell> result =
[
  [cell: 123/0:_0/1530140066898/Put/vlen=1/seqid=224, key: 123, family: 0, qualifier: _0, value: x], 
  [cell: 123/0:ARR_COLUMN/1530140066898/Put/vlen=5/seqid=224, key: 123, family: 0, qualifier: ARR_COLUMN, value: pqrst]
]

Modified List<Cell> result = 
[
  [cell: 123/0:_0/1530140066898/Put/vlen=1/seqid=224, key: 123, family: 0, qualifier: _0, value: x], 
  [cell: 123/_v:\x00\x00\x00\x02/LATEST_TIMESTAMP/Put/vlen=5/seqid=0, key: 123, family: _v, qualifier: 2, value: pqt^@^G]
]
{code}
In the example, replaceArrayIndexElement is correctly removing the cell associated with the full array (value = pqrst) and replacing it with a new array of selected elements (value = pqt).

 


was (Author: tulasip):
bq. Take a look at RegionScannerFactory.getWrappedScanner() and in particular the replaceArrayIndexElement() method.

It looks like *replaceArrayIndexElement()* is doing the correct thing?
{code}
Input List<Cell> result =    [[cell: 123/0:_0/1530140066898/Put/vlen=1/seqid=224, key: 123, family: 0, qualifier: _0, value: x], [cell: 123/0:ARR_COLUMN/1530140066898/Put/vlen=5/seqid=224, key: 123, family: 0, qualifier: ARR_COLUMN, value: pqrst]]
Modified List<Cell> result = [[cell: 123/0:_0/1530140066898/Put/vlen=1/seqid=224, key: 123, family: 0, qualifier: _0, value: x], [cell: 123/_v:\x00\x00\x00\x02/LATEST_TIMESTAMP/Put/vlen=5/seqid=0, key: 123, family: _v, qualifier: 2, value: pqt^@^G]]
{code}
In the example, replaceArrayIndexElement is correctly removing the cell associated with the full array (value = pqrst) and replacing it with a new array of selected elements (value = pqt).

 

> Array elements are nullified with joins
> ---------------------------------------
>
>                 Key: PHOENIX-4791
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4791
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.11.0, 4.12.0, 4.13.0, 4.14.0
>            Reporter: Tulasi P
>            Priority: Major
>             Fix For: 4.15.0
>
>
> Returning elements of an array from a table that is part of a join causes array elements to be nullified.
> {noformat}
> create table array_test_1 (id integer not null primary key, arr tinyint[5]); 
> upsert into array_test_1 values (1001, array[0, 0, 0, 0, 0]); 
> upsert into array_test_1 values (1002, array[0, 0, 0, 0, 1]); 
> upsert into array_test_1 values (1003, array[0, 0, 0, 1, 1]); 
> upsert into array_test_1 values (1004, array[0, 0, 1, 1, 1]); 
> upsert into array_test_1 values (1005, array[1, 1, 1, 1, 1]);
> {noformat}
>  
> {noformat}
> create table test_table_1 (id integer not null primary key, val varchar); 
> upsert into test_table_1 values (1001, 'abc'); 
> upsert into test_table_1 values (1002, 'def'); 
> upsert into test_table_1 values (1003, 'ghi');{noformat}
> {noformat}
> 0: jdbc:phoenix:localhost> select t1.id, t2.val, t1.arr[1], t1.arr[2], t1.arr[3] from array_test_1 as t1 join test_table_1 as t2 on t1.id = t2.id; 
> +--------+---------+---------+------------------------+---------------+ 
> | T1.ID  | T2.VAL  | ARRAY_ELEM(T1.ARR, 1)  | ARRAY_ELEM(T1.ARR, 2)  | ARRAY_ELEM(T1.ARR, 3)  | 
> +--------+---------+---------+-----------------+------------------------+ 
> | 1001   | abc     | null  | null | null | 
> | 1002   | def     | null   | null | null |
>  | 1003   | ghi     | null  | null | null |
>  +--------+---------+--------+------------------------+-----------------+ 
> 3 rows selected (0.056 seconds)
> {noformat}
> However, directly selecting array elements from the array returns data correctly.
> {noformat}
> 0: jdbc:phoenix:localhost> select [t1.id, t1.arr[1], t1.arr[2], t1.arr[3] from array_test_1 as t1;
> +-------+--------+-------------+-------------+
> |  ID   | ARRAY_ELEM(ARR, 1)  | ARRAY_ELEM(ARR, 2)  | ARRAY_ELEM(ARR, 3)  |
> +-------+--------+-------------+-------------+
> | 1001  | 0 | 0 | 0 |
> | 1002  | 0 | 0 | 0 |
> | 1003  | 0 | 0 | 0 |
> | 1004  | 0 | 0 | 1 |
> | 1005  | 1 | 1 | 1 |
> +-------+-------+--------------+--------------+
> 5 rows selected (0.044 seconds)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)