Enum SqlTypeFamily

All Implemented Interfaces:
Serializable, Comparable<SqlTypeFamily>, Constable, RelDataTypeFamily

public enum SqlTypeFamily extends Enum<SqlTypeFamily> implements 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().

  • Enum Constant Details

  • Method Details

    • values

      public static SqlTypeFamily[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      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.)
      name - the name of the enum constant to be returned.
      the enum constant with the specified name
      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.
      jdbcType - the JDBC type of interest
      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.

    • getTypeNames

      public Collection<SqlTypeName> getTypeNames()
      Returns the collection of SqlTypeNames included in this family.
    • getDefaultConcreteType

      public @Nullable RelDataType getDefaultConcreteType(RelDataTypeFactory factory)
      Return the default RelDataType that belongs to this family.
    • contains

      public boolean contains(RelDataType type)