[ https://issues.apache.org/jira/browse/PHOENIX-1311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15228219#comment-15228219 ]
ASF GitHub Bot commented on PHOENIX-1311: ----------------------------------------- Github user ankitsinghal commented on a diff in the pull request: https://github.com/apache/phoenix/pull/153#discussion_r58701167 --- 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 -- yes .. Now, I'm throwing exception if schema is set in connection. > 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)