Enum SqlConformanceEnum

    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
      BABEL
      Conformance value that allows anything supported by any dialect.
      DEFAULT
      Calcite's default SQL behavior.
      LENIENT
      Conformance value that allows just about everything supported by Calcite.
      MYSQL_5
      Conformance value that instructs Calcite to use SQL semantics consistent with MySQL version 5.x.
      ORACLE_10
      Conformance value that instructs Calcite to use SQL semantics consistent with Oracle version 10.
      ORACLE_12
      Conformance value that instructs Calcite to use SQL semantics consistent with Oracle version 12.
      PRAGMATIC_2003
      Conformance value that instructs Calcite to use SQL semantics consistent with the SQL:2003 standard, but ignoring its more inconvenient or controversial dicta.
      PRAGMATIC_99
      Conformance value that instructs Calcite to use SQL semantics consistent with the SQL:99 standard, but ignoring its more inconvenient or controversial dicta.
      SQL_SERVER_2008
      Conformance value that instructs Calcite to use SQL semantics consistent with Microsoft SQL Server version 2008.
      STRICT_2003
      Conformance value that instructs Calcite to use SQL semantics strictly consistent with the SQL:2003 standard.
      STRICT_92
      Conformance value that instructs Calcite to use SQL semantics strictly consistent with the SQL:92 standard.
      STRICT_99
      Conformance value that instructs Calcite to use SQL semantics strictly consistent with the SQL:99 standard.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private SqlConformanceEnum()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean allowExplicitRowValueConstructor()
      Whether to allow SQL syntax "ROW(expr1, expr2, expr3)".
      boolean allowExtend()
      Whether to allow mixing table columns with extended columns in INSERT (or UPSERT).
      boolean allowExtendedTrim()
      Whether TRIM should support more than one trim character.
      boolean allowGeometry()
      Whether to allow geo-spatial extensions, including the GEOMETRY type.
      boolean allowNiladicParentheses()
      Whether to allow parentheses to be specified in calls to niladic functions and procedures (that is, functions and procedures with no parameters).
      boolean isApplyAllowed()
      Whether CROSS APPLY and OUTER APPLY operators are allowed in the parser.
      boolean isBangEqualAllowed()
      Whether the bang-equal token != is allowed as an alternative to <> in the parser.
      boolean isFromRequired()
      Whether FROM clause is required in a SELECT statement.
      boolean isGroupByAlias()
      Whether to allow aliases from the SELECT clause to be used as column names in the GROUP BY clause.
      boolean isGroupByOrdinal()
      Whether GROUP BY 2 is interpreted to mean 'group by the 2nd column in the select list'.
      boolean isHavingAlias()
      Whether to allow aliases from the SELECT clause to be used as column names in the HAVING clause.
      boolean isInsertSubsetColumnsAllowed()
      Whether to allow INSERT (or UPSERT) with no column list but fewer values than the target table.
      boolean isLiberal()
      Whether this dialect supports features from a wide variety of dialects.
      boolean isLimitStartCountAllowed()
      Whether to allow the SQL syntax "LIMIT start, count".
      boolean isMinusAllowed()
      Whether MINUS is allowed as an alternative to EXCEPT in the parser.
      boolean isPercentRemainderAllowed()
      Whether the "%" operator is allowed by the parser as an alternative to the mod function.
      boolean isSortByAlias()
      Whether 'ORDER BY x' is interpreted to mean 'sort by the select list item whose alias is x' even if there is a column called x.
      boolean isSortByAliasObscures()
      Whether "empno" is invalid in "select empno as x from emp order by empno" because the alias "x" obscures it.
      boolean isSortByOrdinal()
      Whether 'ORDER BY 2' is interpreted to mean 'sort by the 2nd column in the select list'.
      boolean shouldConvertRaggedUnionTypesToVarying()
      Whether the least restrictive type of a number of CHAR types of different lengths should be a VARCHAR type.
      static SqlConformanceEnum valueOf​(java.lang.String name)
      Returns the enum constant of this type with the specified name.
      static SqlConformanceEnum[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      • Methods inherited from class java.lang.Enum

        clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Enum Constant Detail

      • LENIENT

        public static final SqlConformanceEnum LENIENT
        Conformance value that allows just about everything supported by Calcite.
      • BABEL

        public static final SqlConformanceEnum BABEL
        Conformance value that allows anything supported by any dialect. Even more liberal than LENIENT.
      • STRICT_92

        public static final SqlConformanceEnum STRICT_92
        Conformance value that instructs Calcite to use SQL semantics strictly consistent with the SQL:92 standard.
      • STRICT_99

        public static final SqlConformanceEnum STRICT_99
        Conformance value that instructs Calcite to use SQL semantics strictly consistent with the SQL:99 standard.
      • PRAGMATIC_99

        public static final SqlConformanceEnum PRAGMATIC_99
        Conformance value that instructs Calcite to use SQL semantics consistent with the SQL:99 standard, but ignoring its more inconvenient or controversial dicta.
      • MYSQL_5

        public static final SqlConformanceEnum MYSQL_5
        Conformance value that instructs Calcite to use SQL semantics consistent with MySQL version 5.x.
      • ORACLE_10

        public static final SqlConformanceEnum ORACLE_10
        Conformance value that instructs Calcite to use SQL semantics consistent with Oracle version 10.
      • STRICT_2003

        public static final SqlConformanceEnum STRICT_2003
        Conformance value that instructs Calcite to use SQL semantics strictly consistent with the SQL:2003 standard.
      • PRAGMATIC_2003

        public static final SqlConformanceEnum PRAGMATIC_2003
        Conformance value that instructs Calcite to use SQL semantics consistent with the SQL:2003 standard, but ignoring its more inconvenient or controversial dicta.
      • SQL_SERVER_2008

        public static final SqlConformanceEnum SQL_SERVER_2008
        Conformance value that instructs Calcite to use SQL semantics consistent with Microsoft SQL Server version 2008.
    • Constructor Detail

      • SqlConformanceEnum

        private SqlConformanceEnum()
    • Method Detail

      • values

        public static SqlConformanceEnum[] 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 (SqlConformanceEnum c : SqlConformanceEnum.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static SqlConformanceEnum valueOf​(java.lang.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:
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        java.lang.NullPointerException - if the argument is null
      • isLiberal

        public boolean isLiberal()
        Description copied from interface: SqlConformance
        Whether this dialect supports features from a wide variety of dialects. This is enabled for the Babel parser, disabled otherwise.
        Specified by:
        isLiberal in interface SqlConformance
      • isGroupByAlias

        public boolean isGroupByAlias()
        Description copied from interface: SqlConformance
        Whether to allow aliases from the SELECT clause to be used as column names in the GROUP BY clause.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5; false otherwise.

        Specified by:
        isGroupByAlias in interface SqlConformance
      • isGroupByOrdinal

        public boolean isGroupByOrdinal()
        Description copied from interface: SqlConformance
        Whether GROUP BY 2 is interpreted to mean 'group by the 2nd column in the select list'.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5; false otherwise.

        Specified by:
        isGroupByOrdinal in interface SqlConformance
      • isHavingAlias

        public boolean isHavingAlias()
        Description copied from interface: SqlConformance
        Whether to allow aliases from the SELECT clause to be used as column names in the HAVING clause.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5; false otherwise.

        Specified by:
        isHavingAlias in interface SqlConformance
      • isSortByAliasObscures

        public boolean isSortByAliasObscures()
        Description copied from interface: SqlConformance
        Whether "empno" is invalid in "select empno as x from emp order by empno" because the alias "x" obscures it.

        Among the built-in conformance levels, true in STRICT_92; false otherwise.

        Specified by:
        isSortByAliasObscures in interface SqlConformance
      • isMinusAllowed

        public boolean isMinusAllowed()
        Description copied from interface: SqlConformance
        Whether MINUS is allowed as an alternative to EXCEPT in the parser.

        Among the built-in conformance levels, true in BABEL, LENIENT, ORACLE_10; ORACLE_12; false otherwise.

        Note: MySQL does not support MINUS or EXCEPT (as of version 5.5).

        Specified by:
        isMinusAllowed in interface SqlConformance
      • isPercentRemainderAllowed

        public boolean isPercentRemainderAllowed()
        Description copied from interface: SqlConformance
        Whether the "%" operator is allowed by the parser as an alternative to the mod function.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5; false otherwise.

        Specified by:
        isPercentRemainderAllowed in interface SqlConformance
      • isApplyAllowed

        public boolean isApplyAllowed()
        Description copied from interface: SqlConformance
        Whether CROSS APPLY and OUTER APPLY operators are allowed in the parser.

        APPLY invokes a table-valued function for each row returned by a table expression. It is syntactic sugar:

        • SELECT * FROM emp CROSS APPLY TABLE(promote(empno)
          is equivalent to
          SELECT * FROM emp CROSS JOIN LATERAL TABLE(promote(empno)
        • SELECT * FROM emp OUTER APPLY TABLE(promote(empno)
          is equivalent to
          SELECT * FROM emp LEFT JOIN LATERAL TABLE(promote(empno) ON true

        Among the built-in conformance levels, true in BABEL, LENIENT, SQL_SERVER_2008; ORACLE_12; false otherwise.

        Specified by:
        isApplyAllowed in interface SqlConformance
      • isInsertSubsetColumnsAllowed

        public boolean isInsertSubsetColumnsAllowed()
        Description copied from interface: SqlConformance
        Whether to allow INSERT (or UPSERT) with no column list but fewer values than the target table.

        The N values provided are assumed to match the first N columns of the table, and for each of the remaining columns, the default value of the column is used. It is an error if any of these columns has no default value.

        The default value of a column is specified by the DEFAULT clause in the CREATE TABLE statement, or is NULL if the column is not declared NOT NULL.

        Among the built-in conformance levels, true in BABEL, LENIENT, PRAGMATIC_99, PRAGMATIC_2003; false otherwise.

        Specified by:
        isInsertSubsetColumnsAllowed in interface SqlConformance
      • allowNiladicParentheses

        public boolean allowNiladicParentheses()
        Description copied from interface: SqlConformance
        Whether to allow parentheses to be specified in calls to niladic functions and procedures (that is, functions and procedures with no parameters).

        For example, CURRENT_DATE is a niladic system function. In standard SQL it must be invoked without parentheses:

        VALUES CURRENT_DATE

        If allowNiladicParentheses, the following syntax is also valid:

        VALUES CURRENT_DATE()

        Of the popular databases, MySQL, Apache Phoenix and VoltDB allow this behavior; Apache Hive, HSQLDB, IBM DB2, Microsoft SQL Server, Oracle, PostgreSQL do not.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5; false otherwise.

        Specified by:
        allowNiladicParentheses in interface SqlConformance
      • allowExplicitRowValueConstructor

        public boolean allowExplicitRowValueConstructor()
        Description copied from interface: SqlConformance
        Whether to allow SQL syntax "ROW(expr1, expr2, expr3)".

        The equivalent syntax in standard SQL is "(expr1, expr2, expr3)".

        Standard SQL does not allow this because the type is not well-defined. However, PostgreSQL allows this behavior.

        Standard SQL allows row expressions in other contexts, for instance inside VALUES clause.

        Among the built-in conformance levels, true in DEFAULT, LENIENT; false otherwise.

        Specified by:
        allowExplicitRowValueConstructor in interface SqlConformance
      • allowExtend

        public boolean allowExtend()
        Description copied from interface: SqlConformance
        Whether to allow mixing table columns with extended columns in INSERT (or UPSERT).

        For example, suppose that the declaration of table T has columns A and B, and you want to insert data of column C INTEGER not present in the table declaration as an extended column. You can specify the columns in an INSERT statement as follows:

        INSERT INTO T (A, B, C INTEGER) VALUES (1, 2, 3)

        Among the built-in conformance levels, true in BABEL, LENIENT; false otherwise.

        Specified by:
        allowExtend in interface SqlConformance
      • isLimitStartCountAllowed

        public boolean isLimitStartCountAllowed()
        Description copied from interface: SqlConformance
        Whether to allow the SQL syntax "LIMIT start, count".

        The equivalent syntax in standard SQL is "OFFSET start ROW FETCH FIRST count ROWS ONLY", and in PostgreSQL "LIMIT count OFFSET start".

        MySQL and CUBRID allow this behavior.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5; false otherwise.

        Specified by:
        isLimitStartCountAllowed in interface SqlConformance
      • shouldConvertRaggedUnionTypesToVarying

        public boolean shouldConvertRaggedUnionTypesToVarying()
        Description copied from interface: SqlConformance
        Whether the least restrictive type of a number of CHAR types of different lengths should be a VARCHAR type. And similarly BINARY to VARBINARY.

        For example, consider the query

        SELECT 'abcde' UNION SELECT 'xyz'

        The input columns have types CHAR(5) and CHAR(3), and we need a result type that is large enough for both:

        • Under strict SQL:2003 behavior, its column has type CHAR(5), and the value in the second row will have trailing spaces.
        • With lenient behavior, its column has type VARCHAR(5), and the values have no trailing spaces.

        Among the built-in conformance levels, true in PRAGMATIC_99, PRAGMATIC_2003, MYSQL_5; ORACLE_10; ORACLE_12; SQL_SERVER_2008; false otherwise.

        Specified by:
        shouldConvertRaggedUnionTypesToVarying in interface SqlConformance
      • allowExtendedTrim

        public boolean allowExtendedTrim()
        Description copied from interface: SqlConformance
        Whether TRIM should support more than one trim character.

        For example, consider the query

        SELECT TRIM('eh' FROM 'hehe__hehe')

        Under strict behavior, if the length of trim character is not 1, TRIM throws an exception, and the query fails. However many implementations (in databases such as MySQL and SQL Server) trim all the characters, resulting in a return value of '__'.

        Among the built-in conformance levels, true in BABEL, LENIENT, MYSQL_5, SQL_SERVER_2008; false otherwise.

        Specified by:
        allowExtendedTrim in interface SqlConformance