[
https://issues.apache.org/jira/browse/PHOENIX-1311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15225327#comment-15225327
]
ASF GitHub Bot commented on PHOENIX-1311:
-----------------------------------------
Github user samarthjain commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/153#discussion_r58468877
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java ---
@@ -1279,4 +1304,129 @@ public static boolean truncateStats(HTableInterface
metaTable, HTableInterface s
}
return false;
}
+
+ public static void mapTableToNamespace(HBaseAdmin admin,
HTableInterface metatable, String srcTableName,
+ String destTableName, ReadOnlyProps props, Long ts, String
phoenixTableName, PTableType pTableType)
+ throws SnapshotCreationException,
IllegalArgumentException, IOException, InterruptedException,
+ SQLException {
+ srcTableName = SchemaUtil.normalizeIdentifier(srcTableName);
+ if (!SchemaUtil.isNamespaceMappingEnabled(
+ SchemaUtil.isSystemTable(srcTableName.getBytes()) ?
PTableType.SYSTEM : null,
+ props)) { throw new
IllegalArgumentException(SchemaUtil.isSystemTable(srcTableName.getBytes())
+ ? "For system table " +
QueryServices.IS_SYSTEM_TABLE_MAPPED_TO_NAMESPACE
+ + " also needs to be enabled along with "
+ QueryServices.IS_NAMESPACE_MAPPING_ENABLED
+ : QueryServices.IS_NAMESPACE_MAPPING_ENABLED + "
is not enabled"); }
+
+ if (PTableType.TABLE.equals(pTableType) ||
PTableType.INDEX.equals(pTableType)) {
+ admin.snapshot(srcTableName, srcTableName);
+ admin.cloneSnapshot(srcTableName.getBytes(),
destTableName.getBytes());
+ admin.disableTable(srcTableName);
+ admin.deleteTable(srcTableName);
+ }
+ if (phoenixTableName == null) {
+ phoenixTableName = srcTableName;
+ }
+ Put put = new Put(SchemaUtil.getTableKey(null,
SchemaUtil.getSchemaNameFromFullName(phoenixTableName),
+ SchemaUtil.getTableNameFromFullName(phoenixTableName)),
ts);
+ put.addColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES,
PhoenixDatabaseMetaData.IS_NAMESPACE_MAPPED_BYTES,
+ PBoolean.INSTANCE.toBytes(Boolean.TRUE));
+ metatable.put(put);
+ }
+
+ public static void mapTableToNamespace(HBaseAdmin admin,
HTableInterface metatable, String tableName,
+ ReadOnlyProps props, Long ts) throws
SnapshotCreationException, IllegalArgumentException, IOException,
+ InterruptedException, SQLException {
+ String destTablename = SchemaUtil
+
.normalizeIdentifier(SchemaUtil.getPhysicalTableName(tableName,
props).getNameAsString());
+ mapTableToNamespace(admin, metatable, tableName, destTablename,
props, ts, null, PTableType.TABLE);
+ }
+
+ public static void upgradeTable(PhoenixConnection conn, String
srcTable) throws SQLException,
+ SnapshotCreationException, IllegalArgumentException,
IOException, InterruptedException {
+ ReadOnlyProps readOnlyProps = conn.getQueryServices().getProps();
+ if (conn.getClientInfo(PhoenixRuntime.TENANT_ID_ATTRIB) != null) {
throw new SQLException(
--- End diff --
What if the connection has schema property set? Should we report an error.
Looks like currently we are ignoring it.
> HBase namespaces surfaced in phoenix
> ------------------------------------
>
> Key: PHOENIX-1311
> URL: https://issues.apache.org/jira/browse/PHOENIX-1311
> Project: Phoenix
> Issue Type: New Feature
> Reporter: nicolas maillard
> Assignee: Ankit Singhal
> Priority: Minor
> Fix For: 4.8.0
>
> Attachments: PHOENIX-1311.docx, PHOENIX-1311_v1.patch,
> PHOENIX-1311_v2.patch, PHOENIX-1311_wip.patch, PHOENIX-1311_wip_2.patch
>
>
> Hbase (HBASE-8015) has the concept of namespaces in the form of
> myNamespace:MyTable it would be great if Phoenix leveraged this feature to
> give a database like feature on top of the table.
> Maybe to stay close to Hbase it could also be a create DB:Table...
> or DB.Table which is a more standard annotation?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)