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