[ 
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)

Reply via email to