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)