Chinmay Kulkarni created PHOENIX-6142:
-----------------------------------------

             Summary: Make DDL operations resilient to orphan parent->child 
linking rows in SYSTEM.CHILD_LINK
                 Key: PHOENIX-6142
                 URL: https://issues.apache.org/jira/browse/PHOENIX-6142
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.15.0, 5.0.0
            Reporter: Chinmay Kulkarni
            Assignee: Chinmay Kulkarni
             Fix For: 5.1.0, 4.16.0


We are targeting PHOENIX-6141 for 4.17. Until we have it, we should aim at 
making DDL operations resilient to orphan parent->child linking rows. DDL 
operations identified which can fail due to orphan rows are:
 # Any ALTER TABLE ADD/DROP/SET calls on the base table T will fail if there 
are orphan links from T to some already dropped view. This happens because the 
call to 
[MetaDataEndpointImpl.findAllChildViews()|https://github.com/apache/phoenix/blob/fece8e69b9c03c80db7a0801d99e5de31fe15ffa/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L2142]
 from 
[MetaDataEndpointImpl.mutateColumn()|https://github.com/apache/phoenix/blob/fece8e69b9c03c80db7a0801d99e5de31fe15ffa/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L259]
 fails with a TableNotFoundException.
 # Any DROP TABLE/VIEW call without CASCADE will fail even though there are 
actually no child views since the orphan rows wrongly indicate that there are 
child views.
 # During the upgrade path for UpgradeUtil.syncUpdateCacheFreqAllIndexes(), we 
will just ignore any orphan views (for ex, see 
[this|https://github.com/apache/phoenix/blob/fece8e69b9c03c80db7a0801d99e5de31fe15ffa/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java#L1368-L1374]),
 but the call to UpgradeUtil.upgradeTable() will fail with a 
TableNotFoundException for each orphan view.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to