You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Chinmay Kulkarni (Jira)" <ji...@apache.org> on 2020/10/28 20:54:00 UTC
[jira] [Assigned] (PHOENIX-6030) When
phoenix.allow.system.catalog.rollback=true, a view still sees data for
columns that were dropped from its parent view
[ https://issues.apache.org/jira/browse/PHOENIX-6030?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chinmay Kulkarni reassigned PHOENIX-6030:
-----------------------------------------
Assignee: Chinmay Kulkarni
> When phoenix.allow.system.catalog.rollback=true, a view still sees data for columns that were dropped from its parent view
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-6030
> URL: https://issues.apache.org/jira/browse/PHOENIX-6030
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 5.0.0, 4.15.0
> Reporter: Chinmay Kulkarni
> Assignee: Chinmay Kulkarni
> Priority: Blocker
> Fix For: 5.1.0, 4.16.0
>
>
> Start a 4.x server with phoenix.allow.system.catalog.rollback=true, phoenix.system.catalog.splittable=false. Connect to it from a 4.x client with phoenix.allow.system.catalog.rollback=true. Run the following from the 4.x client:
> {code:sql}
> CREATE TABLE IF NOT EXISTS T (A INTEGER PRIMARY KEY, B INTEGER, C VARCHAR, D INTEGER);
> CREATE VIEW IF NOT EXISTS V (VA INTEGER, VB INTEGER) AS SELECT * FROM T WHERE B=200;
> UPSERT INTO V(A,B,C,D,VA,VB) VALUES (2, 200, 'def', -20, 91, 101);
> SELECT * FROM T;
> +----+------+------+------+
> | A | B | C | D |
> +----+------+------+------+
> | 2 | 200 | def | -20 |
> +----+------+------+------+
> SELECT * FROM V;
> +----+------+------+------+-----+------+
> | A | B | C | D | VA | VB |
> +----+------+------+------+-----+------+
> | 2 | 200 | def | -20 | 91 | 101 |
> +----+------+------+------+-----+------+
> -- as expected
> -- below view can be either a tenant-specific view or a global view, as long as its parent is V.
> CREATE VIEW V_t001 AS SELECT * FROM V;
> ALTER VIEW V DROP COLUMN VA;
> SELECT * FROM V;
> +----+------+------+------+------+
> | A | B | C | D | VB |
> +----+------+------+------+------+
> | 2 | 200 | def | -20 | 101 |
> +----+------+------+------+------+
> -- We shouldn't see VA below since it was dropped from the parent
> SELECT * FROM V_T001;
> +----+------+------+------+-----+------+
> | A | B | C | D | VA | VB |
> +----+------+------+------+-----+------+
> | 2 | 200 | def | -20 | 91 | 101 |
> +----+------+------+------+-----+------+
> {code}
> If rollback is enabled, we prevent adding/dropping a column to/from a *table* that has child views (see [this|https://github.com/apache/phoenix/blob/2fcb8541c9dd7317e62239bd208ff4377ba794e2/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L2602-L2615]). However, we don't prevent adding/dropping columns to/from a *view* that has child views (see [here|https://github.com/apache/phoenix/blob/2fcb8541c9dd7317e62239bd208ff4377ba794e2/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L2591]). Either we should also prevent column mutations in case of views that have children or make sure that dropped columns don't show up when querying a child view.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)