[
https://issues.apache.org/jira/browse/PHOENIX-5559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lars Hofhansl updated PHOENIX-5559:
-----------------------------------
Description:
Update: Since I uncovered more problems here, I changed the title.
This fixes the following three issues:
1. PHOENIX-5550, local index is not correctly built when data existed in the
data table.
2. Index ids are correctly generated on the client, so that index updates for
different indexes are written into the same index.
3. Stale boundary cache is not correctly detected in some cases (namely when
the scan already was in the second daughter region and that daugthter region is
the last region.)
All of these happen when short view index ids are used (which is the default).
The included test covers all three scenarios.
Was:
{code:java}
phoenix: CREATE TABLE test (pk INTEGER PRIMARY KEY, v1 INTEGER, v2 integer);
No rows affected (1.389 seconds)
phoenix: create local index l1 on test(v1);
1 row affected (11.343 seconds)
phoenix: create local index l2 on test(v1);
1 row affected (5.107 seconds)
phoenix: UPSERT INTO test VALUES(2,2,2);
1 row affected (0.037 seconds)
hbase: scan 'TEST'
ROW COLUMN+CELL
\x00\x00\xC1\x03\x00\x80\x00\x00\x02 column=L#0:\x00\x00\x00\x00,
timestamp=1572842063925, value=x
\x80\x00\x00\x02 column=0:\x00\x00\x00\x00,
timestamp=1572842063925, value=x
\x80\x00\x00\x02 column=0:\x80\x0B,
timestamp=1572842063925, value=\x80\x00\x00\x02
\x80\x00\x00\x02 column=0:\x80\x0C,
timestamp=1572842063925, value=\x80\x00\x00\x02
2 row(s) in 0.0190 seconds{code}
There should be two index rows.
And in fact there are with phoenix.index.longViewIndex.enabled set to true,
there are correctly two different index entries for both of the local indexes.
[~gjacoby] [~rajeshbabu]
was:
{code:java}
phoenix: CREATE TABLE test (pk INTEGER PRIMARY KEY, v1 INTEGER, v2 integer);
No rows affected (1.389 seconds)
phoenix: create local index l1 on test(v1);
1 row affected (11.343 seconds)
phoenix: create local index l2 on test(v1);
1 row affected (5.107 seconds)
phoenix: UPSERT INTO test VALUES(2,2,2);
1 row affected (0.037 seconds)
hbase: scan 'TEST'
ROW COLUMN+CELL
\x00\x00\xC1\x03\x00\x80\x00\x00\x02 column=L#0:\x00\x00\x00\x00,
timestamp=1572842063925, value=x
\x80\x00\x00\x02 column=0:\x00\x00\x00\x00,
timestamp=1572842063925, value=x
\x80\x00\x00\x02 column=0:\x80\x0B,
timestamp=1572842063925, value=\x80\x00\x00\x02
\x80\x00\x00\x02 column=0:\x80\x0C,
timestamp=1572842063925, value=\x80\x00\x00\x02
2 row(s) in 0.0190 seconds{code}
There should be two index rows.
And in fact there are with phoenix.index.longViewIndex.enabled set to true,
there are correctly two different index entries for both of the local indexes.
[~gjacoby] [~rajeshbabu]
> Fix remaining issues with Long viewIndexIds
> -------------------------------------------
>
> Key: PHOENIX-5559
> URL: https://issues.apache.org/jira/browse/PHOENIX-5559
> Project: Phoenix
> Issue Type: Improvement
> Affects Versions: 4.15.0, 5.1.0
> Reporter: Lars Hofhansl
> Assignee: Lars Hofhansl
> Priority: Blocker
> Fix For: 4.15.0, 5.1.0
>
> Attachments: 5559-4.x-HBase-1.5-v2.txt, 5559-4.x-HBase-1.5.txt,
> 5559-4.x-HBase-1.5.txt, 5559-test.txt
>
>
> Update: Since I uncovered more problems here, I changed the title.
> This fixes the following three issues:
> 1. PHOENIX-5550, local index is not correctly built when data existed in the
> data table.
> 2. Index ids are correctly generated on the client, so that index updates for
> different indexes are written into the same index.
> 3. Stale boundary cache is not correctly detected in some cases (namely when
> the scan already was in the second daughter region and that daugthter region
> is the last region.)
> All of these happen when short view index ids are used (which is the
> default). The included test covers all three scenarios.
> Was:
> {code:java}
> phoenix: CREATE TABLE test (pk INTEGER PRIMARY KEY, v1 INTEGER, v2 integer);
> No rows affected (1.389 seconds)
> phoenix: create local index l1 on test(v1);
> 1 row affected (11.343 seconds)
> phoenix: create local index l2 on test(v1);
> 1 row affected (5.107 seconds)
> phoenix: UPSERT INTO test VALUES(2,2,2);
> 1 row affected (0.037 seconds)
> hbase: scan 'TEST'
> ROW COLUMN+CELL
>
> \x00\x00\xC1\x03\x00\x80\x00\x00\x02 column=L#0:\x00\x00\x00\x00,
> timestamp=1572842063925, value=x
>
> \x80\x00\x00\x02 column=0:\x00\x00\x00\x00,
> timestamp=1572842063925, value=x
>
> \x80\x00\x00\x02 column=0:\x80\x0B,
> timestamp=1572842063925, value=\x80\x00\x00\x02
>
> \x80\x00\x00\x02 column=0:\x80\x0C,
> timestamp=1572842063925, value=\x80\x00\x00\x02
>
> 2 row(s) in 0.0190 seconds{code}
> There should be two index rows.
> And in fact there are with phoenix.index.longViewIndex.enabled set to true,
> there are correctly two different index entries for both of the local indexes.
> [~gjacoby] [~rajeshbabu]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)