[ 
https://issues.apache.org/jira/browse/PHOENIX-6032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chinmay Kulkarni reassigned PHOENIX-6032:
-----------------------------------------

    Assignee: Chinmay Kulkarni

> When phoenix.allow.system.catalog.rollback=true, a view still sees data from 
> a column that was dropped
> ------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-6032
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-6032
>             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
> -- drop a parent column from the view
> ALTER VIEW V DROP COLUMN C;
> SELECT * FROM V;
> +------+----+------+------+-----+------+
> |  C   | A  |  B   |  D   | VA  |  VB  |
> +------+----+------+------+-----+------+
> | def  | 2  | 200  | -20  | 91  | 101  |
> +------+----+------+------+-----+------+
> -- Column C can still be seen and its ordering is changed for some reason. If 
> you run the drop column again, it is actually dropped
> ALTER VIEW V DROP COLUMN C;
> SELECT * FROM V;
> +----+------+------+-----+------+
> | A  |  B   |  D   | VA  |  VB  |
> +----+------+------+-----+------+
> | 2  | 200  | -20  | 91  | 101  |
> +----+------+------+-----+------+
> -- Gets dropped when drop column is run a second time.
> {code}
> When splittable SYSTEM.CATALOG rollback is enabled, we store the parent's 
> column metadata along with the view as well. After the first drop column 
> command, metadata for column 'C' of the parent is removed from the view's 
> metadata rows however it is not marked diverged, nor is an EXCLUDED_COLUMN 
> entry made for that column in the view metadata rows.
> Because of this, when resolving the view we potentially keep combining the 
> parent table columns and still get column 'C'. When the second drop column 
> command is issued is when we actually add an EXCLUDED_COLUMN linking row for 
> 'C' in the view metadata.



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

Reply via email to