[
https://issues.apache.org/jira/browse/PHOENIX-2058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14612820#comment-14612820
]
James Taylor commented on PHOENIX-2058:
---------------------------------------
Ah, good catch. That code is in MetaDataEndpointImpl.addRowsToChildView here:
{code}
// Set the ordinal position of the new column.
byte[] ordinalPositionBytes = new
byte[PInteger.INSTANCE.getByteSize()];
int ordinalPositionOfNewCol =
oldNumberOfColsInIndex + deltaNumPkColsSoFar;
PInteger.INSTANCE.getCodec().encodeInt(ordinalPositionOfNewCol,
ordinalPositionBytes, 0);
indexColumnDefinitionPut.addColumn(PhoenixDatabaseMetaData.TABLE_FAMILY_BYTES,
PhoenixDatabaseMetaData.ORDINAL_POSITION_BYTES, ordinalPositionBytes);
{code}
You'll also want to take this into account for the amount that the column count
is incremented by here:
{code}
// increase the column count
int newColumnCount = index.getColumns().size() +
deltaNumPkColsSoFar;
byte[] newColumnCountPtr = new
byte[PInteger.INSTANCE.getByteSize()];
PInteger.INSTANCE.getCodec().encodeInt(newColumnCount,
newColumnCountPtr, 0);
indexHeaderRowMutation.addColumn(PhoenixDatabaseMetaData.TABLE_FAMILY_BYTES,
PhoenixDatabaseMetaData.COLUMN_COUNT_BYTES,
newColumnCountPtr);
{code}
> Check for existence and compatibility of columns being added in view
> --------------------------------------------------------------------
>
> Key: PHOENIX-2058
> URL: https://issues.apache.org/jira/browse/PHOENIX-2058
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: Thomas D'Silva
> Attachments: PHOENIX-2058-WIP.patch
>
>
> One check I realized we're not doing, but need to do, is ensuring that the
> column being added by the base table doesn't already exist in the view. If
> the column does already exist, ideally we can allow the addition to the base
> table if the type matches and the scale is null or >= existing scale and the
> maxLength is null or >= existing maxLength. Also, if a column is a PK column
> and it already exists in the view, the position in the PK must match.
> The fact that we've materialized a PTable for the view should make the
> addition of this check easier.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)