phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas D'Silva (JIRA)" <>
Subject [jira] [Updated] (PHOENIX-2795) Support auto partition for views
Date Wed, 27 Apr 2016 20:57:13 GMT


Thomas D'Silva updated PHOENIX-2795:
    Attachment: PHOENIX-2795-v2.patch


Thanks for the feedback. When there is no where clause there will be no VIEW_STATEMENT and
I was not handling this correctly. I fixed this by always setting the view where if the auto
partition attribute is true so we always generate a Put and never a Delete if the view where
is null. On the server side the view statement cell gets set correctly. I also added a test
for this. 
I don't need to remove existing VIEW_STATEMENT and VIEW_CONSTANT cells if I add the updated
cells to the end of the list. I modified the code to use MetaDataUtil.getMutationValue() to
look up the cell for VIEW_STATEMENT.

The tableHeaderRow put is always the first put in the tableMetaData list (even of the table
is multi-tenant). The autoPartitionColumn put is the 2nd or 3rd put (depending on if the table
has a tenantId column or not). 

> Support auto partition for views
> --------------------------------
>                 Key: PHOENIX-2795
>                 URL:
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: James Taylor
>            Assignee: Thomas D'Silva
>              Labels: argus
>             Fix For: 4.8.0
>         Attachments: PHOENIX-2795-v2.patch, PHOENIX-2795.patch
> When a view or base table is created, we should have an string AUTO_PARTITION_SEQ parameter
on CREATE TABLE which uses a sequence based on the argument on the server side to generate
a WHERE clause with the first PK column and the unique identifier from the sequence.
> For example:
> {code}
> CREATE SEQUENCE metric_id_seq;
> CREATE TABLE metric_table (metric_id INTEGER, val DOUBLE) AUTO_PARTITION_SEQ=metric_id_seq;
> CREATE VIEW my_view1 AS SELECT * FROM base_table;
> {code}
> would tack on a WHERE clause base on the next value in a sequence, logically like this:
> {code}
> WHERE partition_id =  NEXT VALUE FROM metric_id_seq
> {code}
> It's important that the sequence be generated *after* the check for the existence of
the view so that we don't burn sequence values needlessly if the view already exists.

This message was sent by Atlassian JIRA

View raw message