You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "davidson hutton (JIRA)" <ji...@apache.org> on 2015/07/21 19:39:04 UTC

[jira] [Created] (PHOENIX-2134) Secondary index on existing hbase table not updating

davidson hutton created PHOENIX-2134:
----------------------------------------

             Summary: Secondary index on existing hbase table not updating
                 Key: PHOENIX-2134
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2134
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.3.1
         Environment: hbase 1.0.0 ; CDH 5.4.0; Centos 6.6
            Reporter: davidson hutton


We are trying to use a phoenix secondary index on an existing hbase table.
When we insert a row in the underlying hbase table, the new row is not inserted in the phoenix secondary index.
If we drop the secondary phoenix index, the 3rd row is visible in phoenix.

Hbase is from 1.0.0 (installed as part of Cloudera 5.4.0)
Phoenix is 4.3.0-1 (downloaded from Cloudera)

Define hbase table from shell and put 2 rows.

hbase(main):040:0> create 't1', {NAME => 'cf1', VERSIONS => 1}
0 row(s) in 0.4200 seconds

=> Hbase::Table - t1
hbase(main):041:0> put 't1','r1','cf1:c1','r1cf1c1value'
0 row(s) in 0.0150 seconds

hbase(main):042:0> put 't1','r2','cf1:c1','r2cf1c1value'
0 row(s) in 0.0100 seconds

hbase(main):043:0> put 't1','r2','cf1:c2','r2cf1c2value'
0 row(s) in 0.0080 seconds

scan 't1'
ROW                       COLUMN+CELL
 r1                       column=cf1:c1, timestamp=1437498142975, value=r1cf1c1value
 r2                       column=cf1:c1, timestamp=1437498151146, value=r2cf1c1value
 r2                       column=cf1:c2, timestamp=1437498162417, value=r2cf1c2value
2 row(s) in 0.0280 seconds

Create phoenix table on top of hbase table.

0: jdbc:phoenix:localhost> create table "t1" (pk VARCHAR PRIMARY KEY, "cf1"."c1" VARCHAR, "cf1"."c2" VARCHAR)
. . . . . . . . . . . . .> ;
2 rows affected (5.436 seconds)
0: jdbc:phoenix:localhost> select * from "t1";
+------------------------------------------+-----------------------------------+
|                    PK                    |                    c1             |
+------------------------------------------+-----------------------------------+
| r1                                       | r1cf1c1value                      |
| r2                                       | r2cf1c1value                      |
+------------------------------------------+-----------------------------------+
2 rows selected (0.446 seconds)
0: jdbc:phoenix:localhost>

See the rows Phoenix added to hbase table

hbase(main):048:0> scan 't1'
ROW                       COLUMN+CELL
 r1                       column=cf1:_0, timestamp=1437498142975, value=
 r1                       column=cf1:c1, timestamp=1437498142975, value=r1cf1c1value
 r2                       column=cf1:_0, timestamp=1437498162417, value=
 r2                       column=cf1:c1, timestamp=1437498151146, value=r2cf1c1value
 r2                       column=cf1:c2, timestamp=1437498162417, value=r2cf1c2value
2 row(s) in 0.0230 seconds

Create index on table

0: jdbc:phoenix:localhost> create index "t1_index" on "t1" ("cf1"."c1");

Verify index exists and is usable

0: jdbc:phoenix:localhost> explain select "c1" from "t1" where "cf1"."c1"='r2cf1c1value';
+------------------------------------------+
|                   PLAN                   |
+------------------------------------------+
| CLIENT 1-CHUNK PARALLEL 1-WAY RANGE SCAN OVER t1_index ['r2cf1c1value'] |
|     SERVER FILTER BY FIRST KEY ONLY      |
+------------------------------------------+
2 rows selected (0.039 seconds)

0: jdbc:phoenix:localhost> select "c1" from "t1" where "cf1"."c1"='r2cf1c1value';
+------------------------------------------+
|                    c1                    |
+------------------------------------------+
| r2cf1c1value                             |
+------------------------------------------+
1 row selected (0.062 seconds)
0: jdbc:phoenix:localhost>

Put 3rd row in hbase table

hbase(main):057:0> put 't1','r3','cf1:c1','r3cf1c1value'
0 row(s) in 0.0080 seconds

hbase(main):058:0> scan 't1'
ROW                       COLUMN+CELL
 r1                       column=cf1:_0, timestamp=1437498559626, value=
 r1                       column=cf1:c1, timestamp=1437498559626, value=r1cf1c1value
 r2                       column=cf1:_0, timestamp=1437498570189, value=
 r2                       column=cf1:c1, timestamp=1437498564413, value=r2cf1c1value
 r2                       column=cf1:c2, timestamp=1437498570189, value=r2cf1c2value
 r3                       column=cf1:c1, timestamp=1437498929197, value=r3cf1c1value
3 row(s) in 0.0150 seconds

Use secondary index to get 3rd row

0: jdbc:phoenix:localhost> select "c1" from "t1" where "cf1"."c1"='r3cf1c1value';
+------------------------------------------+
|                    c1                    |
+------------------------------------------+
+------------------------------------------+
No rows selected (0.051 seconds)

Scan index from hbase to verify 3rd row not in index

hbase(main):059:0> scan 't1_index'
ROW                       COLUMN+CELL
 r1cf1c1value\x00r1       column=0:_0, timestamp=1437498705264, value=
 r2cf1c1value\x00r2       column=0:_0, timestamp=1437498705264, value=
2 row(s) in 0.0180 seconds

Drop secondary index and select 3rd row.

0: jdbc:phoenix:localhost> drop index "t1_index" on "t1"
. . . . . . . . . . . . .> ;
No rows affected (1.634 seconds)
0: jdbc:phoenix:localhost> select "c1" from "t1" where "cf1"."c1"='r3cf1c1value';
+------------------------------------------+
|                    c1                    |
+------------------------------------------+
| r3cf1c1value                             |
+------------------------------------------+
1 row selected (0.209 seconds)




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)