You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2016/10/03 19:02:04 UTC
phoenix git commit: Code refine
Repository: phoenix
Updated Branches:
refs/heads/calcite 17888a272 -> 1193e5afe
Code refine
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1193e5af
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1193e5af
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1193e5af
Branch: refs/heads/calcite
Commit: 1193e5afe6dae631d107c605616e4f78df1600bf
Parents: 17888a2
Author: maryannxue <ma...@gmail.com>
Authored: Mon Oct 3 12:01:56 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Mon Oct 3 12:01:56 2016 -0700
----------------------------------------------------------------------
.../apache/phoenix/calcite/CalciteUtils.java | 31 ++++++++++++++++++--
.../apache/phoenix/calcite/PhoenixTable.java | 25 ++--------------
2 files changed, 32 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/1193e5af/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
index df348c9..ae143f7 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
@@ -21,6 +21,7 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.rex.RexCall;
import org.apache.calcite.rex.RexCorrelVariable;
import org.apache.calcite.rex.RexDynamicParam;
@@ -144,7 +145,7 @@ public class CalciteUtils {
}
@SuppressWarnings("rawtypes")
- public static PDataType relDataTypeToPDataType(RelDataType relDataType) {
+ public static PDataType relDataTypeToPDataType(final RelDataType relDataType) {
SqlTypeName sqlTypeName = relDataType.getSqlTypeName();
final boolean isArrayType = sqlTypeName == SqlTypeName.ARRAY;
if (isArrayType) {
@@ -161,7 +162,33 @@ public class CalciteUtils {
}
return PDataType.fromTypeId(ordinal + (isArrayType ? PDataType.ARRAY_TYPE_BASE : 0));
}
-
+
+ @SuppressWarnings("rawtypes")
+ public static RelDataType pDataTypeToRelDataType(
+ final RelDataTypeFactory typeFactory, final PDataType pDataType,
+ final Integer maxLength, final Integer scale, final Integer arraySize) {
+ final boolean isArrayType = pDataType.isArrayType();
+ final PDataType baseType = isArrayType ?
+ PDataType.fromTypeId(pDataType.getSqlType() - PDataType.ARRAY_TYPE_BASE)
+ : pDataType;
+ final int sqlTypeId = baseType.getResultSetSqlType();
+ final PDataType normalizedBaseType = PDataType.fromTypeId(sqlTypeId);
+ final SqlTypeName sqlTypeName = SqlTypeName.valueOf(normalizedBaseType.getSqlTypeName());
+ RelDataType type;
+ if (maxLength != null && scale != null) {
+ type = typeFactory.createSqlType(sqlTypeName, maxLength, scale);
+ } else if (maxLength != null) {
+ type = typeFactory.createSqlType(sqlTypeName, maxLength);
+ } else {
+ type = typeFactory.createSqlType(sqlTypeName);
+ }
+ if (isArrayType) {
+ type = typeFactory.createArrayType(type, arraySize == null ? -1 : arraySize);
+ }
+
+ return type;
+ }
+
public static JoinType convertJoinType(JoinRelType type) {
JoinType ret = null;
switch (type) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/1193e5af/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java
index 905441f..fb9f9c0 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java
@@ -124,34 +124,15 @@ public class PhoenixTable extends AbstractTable implements TranslatableTable {
return tableMapping.getMappedColumns();
}
- @SuppressWarnings("rawtypes")
@Override
public RelDataType getRowType(RelDataTypeFactory typeFactory) {
final RelDataTypeFactory.FieldInfoBuilder builder = typeFactory.builder();
final List<PColumn> columns = tableMapping.getMappedColumns();
for (int i = 0; i < columns.size(); i++) {
PColumn pColumn = columns.get(i);
- final PDataType baseType =
- pColumn.getDataType().isArrayType() ?
- PDataType.fromTypeId(pColumn.getDataType().getSqlType() - PDataType.ARRAY_TYPE_BASE)
- : pColumn.getDataType();
- final int sqlTypeId = baseType.getResultSetSqlType();
- final PDataType pDataType = PDataType.fromTypeId(sqlTypeId);
- final SqlTypeName sqlTypeName1 = SqlTypeName.valueOf(pDataType.getSqlTypeName());
- final Integer maxLength = pColumn.getMaxLength();
- final Integer scale = pColumn.getScale();
- RelDataType type;
- if (maxLength != null && scale != null) {
- type = typeFactory.createSqlType(sqlTypeName1, maxLength, scale);
- } else if (maxLength != null) {
- type = typeFactory.createSqlType(sqlTypeName1, maxLength);
- } else {
- type = typeFactory.createSqlType(sqlTypeName1);
- }
- if (pColumn.getDataType().isArrayType()) {
- final Integer arraySize = pColumn.getArraySize();
- type = typeFactory.createArrayType(type, arraySize == null ? -1 : arraySize);
- }
+ RelDataType type = CalciteUtils.pDataTypeToRelDataType(
+ typeFactory, pColumn.getDataType(), pColumn.getMaxLength(),
+ pColumn.getScale(), pColumn.getArraySize());
builder.add(pColumn.getName().getString(), type);
builder.nullable(pColumn.isNullable());
}