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)