[
https://issues.apache.org/jira/browse/PHOENIX-3056?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15366684#comment-15366684
]
James Taylor commented on PHOENIX-3056:
---------------------------------------
Good point, [~lhofhansl]. That's a general problem for deletes from a table
while its indexes are being built. Any ideas? In theory, a client could delay
major compaction in this situation. Or maybe there's some HBase feature that
could help us here?
> Rows cannot be deleted from immutable table when in building state
> ------------------------------------------------------------------
>
> Key: PHOENIX-3056
> URL: https://issues.apache.org/jira/browse/PHOENIX-3056
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.7.0
> Reporter: Brian Esserlieu
> Assignee: James Taylor
> Priority: Minor
> Fix For: 4.8.0
>
> Attachments: PHOENIX-3056_wip.patch
>
>
> Repro:
> DROP TABLE IF EXISTS TEST_TABLE;
> CREATE TABLE IF NOT EXISTS TEST_TABLE (
> pk1 VARCHAR NOT NULL,
> pk2 VARCHAR NOT NULL,
> pk3 VARCHAR
> CONSTRAINT PK PRIMARY KEY
> (
> pk1,
> pk2,
> pk3
> )
> ) MULTI_TENANT=true,IMMUTABLE_ROWS=true;
> CREATE INDEX TEST_INDEX ON TEST_TABLE (pk3, pk2) ASYNC;
> upsert into TEST_TABLE (pk1, pk2, pk3) values ('a', '1', 'value1');
> upsert into TEST_TABLE (pk1, pk2, pk3) values ('a', '2', 'value2');
> select * from test_table;
> delete from TEST_TABLE where pk1 = 'a';
> When I run the above I get the following error on the delete statement:
> "Error: ERROR 1027 (42Y86): All columns referenced in a WHERE clause must be
> available in every index for a table with immutable rows. tableName=TEST_TABLE
> SQLState: 42Y86
> ErrorCode: 1027
> Error occurred in:
> delete from TEST_TABLE where pk1 = 'a'"
> Notice the SQL works simply by removing the ASYNC keyword from the index
> creation statement.
> The error message should reflect that the index is being created so deletes
> are blocked until that completes.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)