Rushabh Shah created PHOENIX-7271:
-------------------------------------
Summary: Always resolve table before DDL operations.
Key: PHOENIX-7271
URL: https://issues.apache.org/jira/browse/PHOENIX-7271
Project: Phoenix
Issue Type: Sub-task
Reporter: Rushabh Shah
After we set the UCF = NEVER to all tables, we are validating last ddl
timestamps for read and write queries.
For DDL operations, we are reading the PTable from the client side cache.
In some cases, after the DDL operations we are updating/invalidating the cache
for the table which is being altered but we don't invalidate the cache for the
parent table (in case of views) or indexes.
When column encoding is set to true, we increment the seq number for base
physical table (for views) whenever we create a view. Refer
[here|https://github.com/apache/phoenix/blob/master/phoenix-core-client/src/main/java/org/apache/phoenix/schema/MetaDataClient.java#L2924-L2931]
for more details. Once the create view command is executed successfully, we
only add the view to the cache but we don't update the base table in the cache.
This can cause an inconsistency when we use the same cached PTable object for
next DDL operations on the base table.
Solutions:
1. Validate last ddl timestamps for table, view hierarchy and indexes for every
DDL operations like we do for read and write queries.
2. Always resolve the table, view hierarchy and indexes for every DDL
operation. It will have the same effect as UCF is set to ALWAYS but just for
DDL operations.
I would prefer option#2 since that will guarantee we always get the latest
Ptable object for DDL operations.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)