[ 
https://issues.apache.org/jira/browse/PHOENIX-1673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14660390#comment-14660390
 ] 

ASF GitHub Bot commented on PHOENIX-1673:
-----------------------------------------

Github user JamesRTaylor commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/104#discussion_r36440666
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java ---
    @@ -114,6 +116,7 @@ public static Expression 
pushKeyExpressionsToScan(StatementContext context, Filt
                boolean isMultiTenant = tenantId != null && 
table.isMultiTenant();
                if (isMultiTenant) {
                        tenantId = ScanUtil.padTenantIdIfNecessary(schema, 
isSalted, tenantId);
    --- End diff --
    
    Take a look at ScanUtil.padTenantIdIfNecessary(), as it assumes tenantId is 
a string:
        public static PName padTenantIdIfNecessary(RowKeySchema schema, boolean 
isSalted, PName tenantId) {
            int pkPos = isSalted ? 1 : 0;
            String tenantIdStr = tenantId.getString();
            Field field = schema.getField(pkPos);
            PDataType dataType = field.getDataType();
            boolean isFixedWidth = dataType.isFixedWidth();
            Integer maxLength = field.getMaxLength();
            if (isFixedWidth && maxLength != null) {
                if (tenantIdStr.length() < maxLength) {
                    tenantIdStr = (String)dataType.pad(tenantIdStr, maxLength);
                    return PNameFactory.newName(tenantIdStr);
                }
            }
            return tenantId;
        }
    
    Probably best if your ScanUtil.getTenantIdBytes() function takes into 
account padding as well and we can get rid of this util function (see comment 
below on that).
    



> Allow tenant ID to be of any integral data type
> -----------------------------------------------
>
>                 Key: PHOENIX-1673
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1673
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 4.3.0
>            Reporter: Mark Tse
>              Labels: Newbie, multi-tenant
>             Fix For: 4.4.1
>
>
> When creating multi-tenant tables and views, the column that identifies the 
> tenant (first primary key column) must be of type 'VARCHAR' or 'CHAR'.
> It should be possible to relax this restriction to use any integral data 
> type. The tenant ID from the connection property can be converted based on 
> the data type of the first primary key column.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to