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

Reply via email to