phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas D'Silva (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (PHOENIX-4855) Continue to write base table column metadata when creating a view in order to support rollback
Date Fri, 31 Aug 2018 01:40:00 GMT

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

Thomas D'Silva updated PHOENIX-4855:
------------------------------------
    Attachment: PHOENIX-4855-4.x-HBase-1.3.patch

> Continue to write base table column metadata when creating a view in order to support
rollback
> ----------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-4855
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4855
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Thomas D'Silva
>            Assignee: Thomas D'Silva
>            Priority: Major
>         Attachments: PHOENIX-4855-4.x-HBase-1.3.patch
>
>
> Currently we filter out the parent table columns while creating a view. If we have to
support rollback we still need to write the parent table column metadata. 
> Instead of this we should filter out the duplicate columns in {{MetaDataEndpointImpl.combineColumns}}
> {code}
> // Here we are passed the parent's columns to add to a view, PHOENIX-3534 allows for
a splittable
>             // System.Catalog thus we only store the columns that are new to the view,
not the parents columns,
>             // thus here we remove everything that is ORDINAL.POSITION <= baseColumnCount
and update the
>             // ORDINAL.POSITIONS to be shifted accordingly.
>             // TODO PHOENIX-4767 remove the following code that removes the base table
column metadata in the next release 
>             if (PTableType.VIEW.equals(tableType) && !ViewType.MAPPED.equals(viewType))
{
>                 boolean isSalted = MetaDataUtil.getSaltBuckets(tableMetadata, GenericKeyValueBuilder.INSTANCE,
new ImmutableBytesWritable()) > 0;
>                 int baseColumnCount = MetaDataUtil.getBaseColumnCount(tableMetadata)
- (isSalted ? 1 : 0);
>                 if (baseColumnCount > 0) {
>                     Iterator<Mutation> mutationIterator = tableMetadata.iterator();
>                     while (mutationIterator.hasNext()) {
>                         Mutation mutation = mutationIterator.next();
>                         // if not null and ordinal position < base column count remove
this mutation
>                         ImmutableBytesWritable ptr = new ImmutableBytesWritable();
>                         MetaDataUtil.getMutationValue(mutation, PhoenixDatabaseMetaData.ORDINAL_POSITION_BYTES,
>                             GenericKeyValueBuilder.INSTANCE, ptr);
>                         if (MetaDataUtil.getMutationValue(mutation, PhoenixDatabaseMetaData.ORDINAL_POSITION_BYTES,
>                             GenericKeyValueBuilder.INSTANCE, ptr)) {
>                             int ordinalValue = PInteger.INSTANCE.getCodec().decodeInt(ptr,
SortOrder.ASC);
>                             if (ordinalValue <= baseColumnCount) {
>                                 mutationIterator.remove();
>                             } else {
>                                 if (mutation instanceof Put) {
>                                     byte[] ordinalPositionBytes = new byte[PInteger.INSTANCE.getByteSize()];
>                                     int newOrdinalValue = ordinalValue - baseColumnCount;
>                                     PInteger.INSTANCE.getCodec()
>                                         .encodeInt(newOrdinalValue, ordinalPositionBytes,
0);
>                                     byte[] family = Iterables.getOnlyElement(mutation.getFamilyCellMap().keySet());
>                                     MetaDataUtil.mutatePutValue((Put) mutation, family,
PhoenixDatabaseMetaData.ORDINAL_POSITION_BYTES, ordinalPositionBytes);
>                                 }
>                             }
>                         }
>                     }
>                 }
>             }
> {code}



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

Mime
View raw message