[ https://issues.apache.org/jira/browse/PHOENIX-4855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Josh Elser reopened PHOENIX-4855: --------------------------------- Compilation broken on master with this change.. > 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 > Fix For: 4.15.0, 5.1.0 > > Attachments: PHOENIX-4855-4.x-HBase-1.3-v2.patch, > 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)