[ 
https://issues.apache.org/jira/browse/PHOENIX-3534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16493874#comment-16493874
 ] 

ASF GitHub Bot commented on PHOENIX-3534:
-----------------------------------------

GitHub user twdsilva opened a pull request:

    https://github.com/apache/phoenix/pull/303

    PHOENIX-3534 Support multi region SYSTEM.CATALOG table

    
    This patch adds two new LinkTypes EXCLUDED_COLUMNS (used to represent a 
column that has been dropped) and VIEW_INDEX_PARENT_TABLE (used to link an 
index on a view to its parent). Views and view indexes no longer store columns 
derived from their ancestors in their metadata. When they are resolved the 
ancestors are looked up and added to the PTable that is returned to the client 
(see combineColumns in MetadataEndpointImpl). The PTable in the server side 
metadata cache only stores the  columns created in the view/view index and not 
derived columns. 
    We do not propagate metadata changes made to a parent to all its children.  
While adding  columns to a base table, we no longer lock all the children in 
the view hierarchy, we only validate that the columns being added does not 
conflict with an existing base table column. We also don't lock children while 
dropping a parent table column. When dropping a parent column we also drop any 
view indexes that need the column. This patch does not handle the case when 
there are concurrent changes (eg. adding a conflicting column or creating a new 
view index that requires a parent column that is being dropped). That will be 
handled in a follow-up patch. 
    While dropping a parent table, we don't drop all the child views metadata. 
This metadata needs to be cleaned-up (maybe at compaction time?) which will be 
handled in a follow-up patch. 
    
    There are a few test failures I am working through, which I will fix soon 
and update the PR. 
    @JamesRTaylor can you please review?
    
    FYI @karanmehta93  @ChinmaySKulkarni 


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/twdsilva/phoenix PHOENIX-3534

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/phoenix/pull/303.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #303
    
----
commit a7712e3977830ffe715a2caaa577eb5cdb071e90
Author: rgidwani <rgidwani@...>
Date:   2017-03-17T19:21:56Z

    Starting work on splittable System.Catalog

commit 220849fff34211a4b6356200365afe81d639cfc1
Author: rgidwani <rgidwani@...>
Date:   2017-03-20T20:44:54Z

    Removed all references to multi-region System.Catalog for 
TableViewFinderResult

commit 356cd43e20be0d01c7ef5f97a9b9d26e213a140d
Author: rgidwani <rgidwani@...>
Date:   2017-03-31T23:11:59Z

    Create table work, still trying to get rid of all columns

commit e01adb5f1c45d43a684371dcbf39eadbc381f9d2
Author: rgidwani <rgidwani@...>
Date:   2017-04-04T20:33:07Z

    Create table and read views work now

commit 19c7ce54dcd1616ca8b8a7078fa8fc738e70f4f4
Author: rgidwani <rgidwani@...>
Date:   2017-04-04T20:35:30Z

    Fixed the test - moving on to add drop columns

commit ab20f8da00145cc527c6f78dc7d493df7ac2f1b0
Author: rgidwani <rgidwani@...>
Date:   2017-04-04T22:59:10Z

    getting tests and add column to work

commit ec3574453e8fae662a271f4340f82eaf90f52ce2
Author: rgidwani <rgidwani@...>
Date:   2017-04-05T23:02:29Z

    Figuring out the delete logic and refactoring the old tests

commit 7d4133034b7167a7919eb9dd4ab19533ae9300ea
Author: rgidwani <rgidwani@...>
Date:   2017-04-11T22:25:32Z

    Added proto timestamp and exluded values to pcolumn also took care of 
additive case where we take lower timestamp

commit adfc5ce7f9e7f55f801b5b8af5f414fd7ff96c23
Author: rgidwani <rgidwani@...>
Date:   2017-04-28T23:02:27Z

    Drop Column Work in Progress, need to figure out how to resolve the combine 
logic for excluded columns

commit 24414bd942055769b68943d93e19013777ff7299
Author: rgidwani <rgidwani@...>
Date:   2017-05-01T22:32:35Z

    Alter view drop column works!

commit 13b6e520e3f7a81bb257c7fe68bae81ededa6c99
Author: rgidwani <rgidwani@...>
Date:   2017-05-12T22:55:49Z

    Drop Cascade and create check completed, need to test

commit 0313ceee0b0a7515323dc0fc402a6eac76786155
Author: rgidwani <rgidwani@...>
Date:   2017-05-15T20:40:14Z

    Drop cascade seems to work

commit 590689f3243a388ae528850c3240427ff49a640c
Author: rgidwani <rgidwani@...>
Date:   2017-05-15T21:13:30Z

    Phoenix 3534" to "PHOENIX-3534 Support multi region SYSTEM.CATALOG table

commit 96c0570bfcd767ad2342fb2fa22142eceed2b4eb
Author: rgidwani <rgidwani@...>
Date:   2017-05-24T19:32:05Z

    Fixing up a few things, resolving read columns for child views doesn't 
always seem to work

commit ca64a0b36f5bf33c8ed3169096fce08ac768d695
Author: rgidwani <rgidwani@...>
Date:   2017-05-31T23:00:31Z

    Adding in the child view constants

commit ac59c72784aff0478d9a481db5729827e0ba3cce
Author: rgidwani <rgidwani@...>
Date:   2017-05-31T23:00:31Z

    Adding in the child view constants

commit 4d0ba3ac71812ed6bf79e383d7a7ab0ab8089287
Author: rgidwani <rgidwani@...>
Date:   2017-06-16T19:06:24Z

    Merge branch 'splittableCatalog' into PHOENIX-3534
    
    Conflicts:
        
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
        
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/WhereConstantParser.java
        
phoenix-core/src/test/java/org/apache/phoenix/coprocessor/MetaDataEndpointImplTest.java

commit c2addd458dbb69542871ce10efc4a041a85d325d
Author: Thomas <tdsilva@...>
Date:   2017-06-19T18:08:13Z

    test fixes

commit 91270753ea7c3197eed1694c47cf8691833677ba
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-09-14T21:55:46Z

    Merge branch 'master' of https://github.com/apache/phoenix into PHOENIX-3534

commit a4b64f01be6b0e21edab95753267666b3b4b7a39
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-09-15T03:13:36Z

    Remove unnessarch txn manager in ConnectionlessQueryServicesImpl

commit f1ea6621355152dcce236412cd5762e76097ffbc
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-09-15T03:15:07Z

    Merge branch 'master' into PHOENIX-3534

commit 571e88b1ee3da6e2bc64236e87e6e19130a588d0
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-05T23:15:00Z

    Rename link to VIEW_INDEX_PARENT

commit 308d2a89b819736122547febfddf96c7d98801ce
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-06T05:26:05Z

    Merge remote-tracking branch 'upstream/master' into PHOENIX-3534

commit f0e96705d3903c55b5449b09d15c4e3f128bf1ed
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-07T02:59:26Z

    fixed tests

commit 53fd995361a8a651247bd330ff1f36823c427f27
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-19T20:10:33Z

    add missing files

commit dcddc060bc789bd391302289659584c85baf2031
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-20T03:58:45Z

    add view index to parent links during upgrade

commit 508aa4bcf7e32d36e8f040bfb06b9de0ff8881d7
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-21T03:25:48Z

    fix tests

commit c32dfbbef5887885b9d003128d86bea9cb62327e
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-21T03:56:07Z

    fix test failures

commit abd98d92355c52cbc2c4264a70217ad2f46bb7d1
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-21T03:57:25Z

    Merge remote-tracking branch 'upstream/master' into PHOENIX-3534

commit 7c32d46dc721b3f0ab44e27521e8df569bead4d9
Author: Thomas D'Silva <tdsilva@...>
Date:   2017-10-26T22:18:13Z

    minor

----


> Support multi region SYSTEM.CATALOG table
> -----------------------------------------
>
>                 Key: PHOENIX-3534
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3534
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: James Taylor
>            Assignee: Thomas D'Silva
>            Priority: Major
>         Attachments: PHOENIX-3534-wip.patch
>
>
> Currently Phoenix requires that the SYSTEM.CATALOG table is single region 
> based on the server-side row locks being held for operations that impact a 
> table and all of it's views. For example, adding/removing a column from a 
> base table pushes this change to all views.
> As an alternative to making the SYSTEM.CATALOG transactional (PHOENIX-2431), 
> when a new table is created we can do a lazy cleanup  of any rows that may be 
> left over from a failed DDL call (kudos to [~lhofhansl] for coming up with 
> this idea). To implement this efficiently, we'd need to also do PHOENIX-2051 
> so that we can efficiently find derived views.
> The implementation would rely on an optimistic concurrency model based on 
> checking our sequence numbers for each table/view before/after updating. Each 
> table/view row would be individually locked for their change (metadata for a 
> view or table cannot span regions due to our split policy), with the sequence 
> number being incremented under lock and then returned to the client.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to