Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/303#discussion_r191939788
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
---
@@ -1457,28 +1761,69 @@ private static void getSchemaTableNames(Mutation
row, byte[][] schemaTableNames)
schemaTableNames[2] = tName;
}
}
-
+
@Override
public void createTable(RpcController controller, CreateTableRequest
request,
RpcCallback<MetaDataResponse> done) {
MetaDataResponse.Builder builder = MetaDataResponse.newBuilder();
byte[][] rowKeyMetaData = new byte[3][];
byte[] schemaName = null;
byte[] tableName = null;
+ String fullTableName = SchemaUtil.getTableName(schemaName,
tableName);
try {
int clientVersion = request.getClientVersion();
List<Mutation> tableMetadata =
ProtobufUtil.getMutations(request);
MetaDataUtil.getTenantIdAndSchemaAndTableName(tableMetadata,
rowKeyMetaData);
byte[] tenantIdBytes =
rowKeyMetaData[PhoenixDatabaseMetaData.TENANT_ID_INDEX];
schemaName =
rowKeyMetaData[PhoenixDatabaseMetaData.SCHEMA_NAME_INDEX];
tableName =
rowKeyMetaData[PhoenixDatabaseMetaData.TABLE_NAME_INDEX];
+ // TODO before creating a table we need to see if the table
was previously created and then dropped
+ // and clean up any parent->child links or child views
boolean isNamespaceMapped =
MetaDataUtil.isNameSpaceMapped(tableMetadata, GenericKeyValueBuilder.INSTANCE,
new ImmutableBytesWritable());
final IndexType indexType =
MetaDataUtil.getIndexType(tableMetadata, GenericKeyValueBuilder.INSTANCE,
new ImmutableBytesWritable());
+ byte[] parentTenantId = null;
byte[] parentSchemaName = null;
byte[] parentTableName = null;
PTableType tableType =
MetaDataUtil.getTableType(tableMetadata, GenericKeyValueBuilder.INSTANCE, new
ImmutableBytesWritable());
+ ViewType viewType = MetaDataUtil.getViewType(tableMetadata,
GenericKeyValueBuilder.INSTANCE, new ImmutableBytesWritable());
+
+ // 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.
--- End diff --
Important to file and reference a JIRA here to remove the dedup code once
clients have been upgraded to the release in which we no longer send the
duplicate information. Can we stop sending the duplicate info in the same
release that SYSTEM.CATALOG becomes splittable? Seems like yes.
---