This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/master by this push:
     new 90ccbb0  [CALCITE-4216] Make 
org.apache.calcite.rel.type.RelDataType#getFamily non-nullable
90ccbb0 is described below

commit 90ccbb01ae3060def7ad73bbd5af45b6c1a64b99
Author: Vladimir Sitnikov <[email protected]>
AuthorDate: Wed Sep 2 00:31:51 2020 +0300

    [CALCITE-4216] Make org.apache.calcite.rel.type.RelDataType#getFamily 
non-nullable
---
 .../java/org/apache/calcite/rel/type/RelDataType.java    |  2 +-
 .../org/apache/calcite/sql/type/AbstractSqlType.java     | 16 +++++++---------
 .../java/org/apache/calcite/sql/type/ObjectSqlType.java  | 15 ++++++---------
 3 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataType.java 
b/core/src/main/java/org/apache/calcite/rel/type/RelDataType.java
index 47b1bc2..07223dc 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataType.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataType.java
@@ -223,7 +223,7 @@ public interface RelDataType {
    * Gets a canonical object representing the family of this type. Two values
    * can be compared if and only if their types are in the same family.
    *
-   * @return canonical object representing type family
+   * @return canonical object representing type family, never null
    */
   RelDataTypeFamily getFamily();
 
diff --git 
a/core/src/main/java/org/apache/calcite/sql/type/AbstractSqlType.java 
b/core/src/main/java/org/apache/calcite/sql/type/AbstractSqlType.java
index e75bdb7..25013b3 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/AbstractSqlType.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/AbstractSqlType.java
@@ -57,23 +57,21 @@ public abstract class AbstractSqlType
 
   //~ Methods ----------------------------------------------------------------
 
-  // implement RelDataType
-  public SqlTypeName getSqlTypeName() {
+  @Override public SqlTypeName getSqlTypeName() {
     return typeName;
   }
 
-  // implement RelDataType
-  public boolean isNullable() {
+  @Override public boolean isNullable() {
     return isNullable;
   }
 
-  // implement RelDataType
-  public RelDataTypeFamily getFamily() {
-    return typeName.getFamily();
+  @Override public RelDataTypeFamily getFamily() {
+    SqlTypeFamily family = typeName.getFamily();
+    // If typename does not have family, treat the current type as the only 
member its family
+    return family != null ? family : this;
   }
 
-  // implement RelDataType
-  public RelDataTypePrecedenceList getPrecedenceList() {
+  @Override public RelDataTypePrecedenceList getPrecedenceList() {
     RelDataTypePrecedenceList list =
         SqlTypeExplicitPrecedenceList.getListForType(this);
     if (list != null) {
diff --git a/core/src/main/java/org/apache/calcite/sql/type/ObjectSqlType.java 
b/core/src/main/java/org/apache/calcite/sql/type/ObjectSqlType.java
index 2cf929e..e5901ca 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/ObjectSqlType.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/ObjectSqlType.java
@@ -65,26 +65,23 @@ public class ObjectSqlType extends AbstractSqlType {
     this.family = family;
   }
 
-  // implement RelDataType
-  public RelDataTypeComparability getComparability() {
+  @Override public RelDataTypeComparability getComparability() {
     return comparability;
   }
 
-  // override AbstractSqlType
-  public SqlIdentifier getSqlIdentifier() {
+  @Override public SqlIdentifier getSqlIdentifier() {
     return sqlIdentifier;
   }
 
-  // override AbstractSqlType
-  public RelDataTypeFamily getFamily() {
+  @Override public RelDataTypeFamily getFamily() {
     // each UDT is in its own lonely family, until one day when
     // we support inheritance (at which time also need to implement
     // getPrecedenceList).
-    return family;
+    RelDataTypeFamily family = this.family;
+    return family != null ? family : this;
   }
 
-  // implement RelDataTypeImpl
-  protected void generateTypeString(StringBuilder sb, boolean withDetail) {
+  @Override protected void generateTypeString(StringBuilder sb, boolean 
withDetail) {
     // TODO jvs 10-Feb-2005:  proper quoting; dump attributes withDetail?
     sb.append("ObjectSqlType(");
     sb.append(sqlIdentifier.toString());

Reply via email to