Enum SqlTypeFamily

  • All Implemented Interfaces:
    Serializable, Comparable<SqlTypeFamily>, org.apache.calcite.rel.type.RelDataTypeFamily

    public enum SqlTypeFamily
    extends Enum<SqlTypeFamily>
    implements org.apache.calcite.rel.type.RelDataTypeFamily
    SqlTypeFamily provides SQL type categorization.

    The primary family categorization is a complete disjoint partitioning of SQL types into families, where two types are members of the same primary family iff instances of the two types can be the operands of an SQL equality predicate such as WHERE v1 = v2. Primary families are returned by RelDataType.getFamily().

    There is also a secondary family categorization which overlaps with the primary categorization. It is used in type strategies for more specific or more general categorization than the primary families. Secondary families are never returned by RelDataType.getFamily().

    This class was copied over from Calcite to support variant type(CALCITE-4918). When upgrading to Calcite 1.39.0 version, please remove the entire class.

    • Method Detail

      • values

        public static SqlTypeFamily[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (SqlTypeFamily c : SqlTypeFamily.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static SqlTypeFamily valueOf​(String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
        Parameters:
        name - the name of the enum constant to be returned.
        Returns:
        the enum constant with the specified name
        Throws:
        IllegalArgumentException - if this enum type has no constant with the specified name
        NullPointerException - if the argument is null
      • getFamilyForJdbcType

        public static @Nullable SqlTypeFamily getFamilyForJdbcType​(int jdbcType)
        Gets the primary family containing a JDBC type.
        Parameters:
        jdbcType - the JDBC type of interest
        Returns:
        containing family
      • allowableDifferenceTypes

        public List<SqlTypeFamily> allowableDifferenceTypes()
        For this type family, returns the allow types of the difference between two values of this family.

        Equivalently, given an ORDER BY expression with one key, returns the allowable type families of the difference between two keys.

        Example 1. For ORDER BY empno, a NUMERIC, the difference between two empno values is also NUMERIC.

        Example 2. For ORDER BY hireDate, a DATE, the difference between two hireDate values might be an INTERVAL_DAY_TIME or INTERVAL_YEAR_MONTH.

        The result determines whether a SqlWindow with a RANGE is valid (for example, OVER (ORDER BY empno RANGE 10 is valid because 10 is numeric); and whether a call to PERCENTILE_CONT is valid (for example, PERCENTILE_CONT(0.25) ORDER BY (hireDate)} is valid because hireDate values may be interpolated by adding values of type INTERVAL_DAY_TIME.

      • getDefaultConcreteType

        public @Nullable org.apache.calcite.rel.type.RelDataType getDefaultConcreteType​(org.apache.calcite.rel.type.RelDataTypeFactory factory)
        Return the default RelDataType that belongs to this family.
      • contains

        public boolean contains​(org.apache.calcite.rel.type.RelDataType type)