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 <maryann....@gmail.com>
Authored: Mon Oct 3 12:01:56 2016 -0700
Committer: maryannxue <maryann....@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());
         }

Reply via email to