private void init0()

in modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/fun/IgniteSqlOperatorTable.java [482:755]


    private void init0() {
        ImmutableList.Builder<SqlOperator> definedOperatorsBuilder =
                ImmutableList.builder();
        // Set operators.
        definedOperatorsBuilder.add(SqlStdOperatorTable.UNION);
        definedOperatorsBuilder.add(SqlStdOperatorTable.UNION_ALL);
        definedOperatorsBuilder.add(SqlStdOperatorTable.EXCEPT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.EXCEPT_ALL);
        definedOperatorsBuilder.add(SqlStdOperatorTable.INTERSECT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.INTERSECT_ALL);

        // Logical.
        definedOperatorsBuilder.add(SqlStdOperatorTable.AND);
        definedOperatorsBuilder.add(SqlStdOperatorTable.OR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NOT);

        // Comparisons.
        definedOperatorsBuilder.add(LESS_THAN);
        definedOperatorsBuilder.add(LESS_THAN_OR_EQUAL);
        definedOperatorsBuilder.add(GREATER_THAN);
        definedOperatorsBuilder.add(GREATER_THAN_OR_EQUAL);
        definedOperatorsBuilder.add(EQUALS);
        definedOperatorsBuilder.add(NOT_EQUALS);
        definedOperatorsBuilder.add(SqlStdOperatorTable.BETWEEN);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NOT_BETWEEN);

        // Arithmetic.
        definedOperatorsBuilder.add(PLUS);
        definedOperatorsBuilder.add(MINUS);
        definedOperatorsBuilder.add(MULTIPLY);
        definedOperatorsBuilder.add(DIVIDE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.DIVIDE_INTEGER); // Used internally.
        definedOperatorsBuilder.add(PERCENT_REMAINDER);
        definedOperatorsBuilder.add(SqlStdOperatorTable.UNARY_MINUS);
        definedOperatorsBuilder.add(SqlStdOperatorTable.UNARY_PLUS);

        // Aggregates.
        definedOperatorsBuilder.add(SqlStdOperatorTable.COUNT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SUM);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SUM0);
        definedOperatorsBuilder.add(SqlStdOperatorTable.AVG);
        definedOperatorsBuilder.add(DECIMAL_DIVIDE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.MIN);
        definedOperatorsBuilder.add(SqlStdOperatorTable.MAX);
        definedOperatorsBuilder.add(SqlStdOperatorTable.ANY_VALUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SINGLE_VALUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.FILTER);

        definedOperatorsBuilder.add(EVERY);
        definedOperatorsBuilder.add(SOME);

        // IS ... operator.
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NULL);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_NULL);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_TRUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_TRUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_FALSE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_FALSE);
        definedOperatorsBuilder.add(IS_DISTINCT_FROM);
        definedOperatorsBuilder.add(IS_NOT_DISTINCT_FROM);

        // LIKE and SIMILAR.
        definedOperatorsBuilder.add(SqlStdOperatorTable.LIKE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NOT_LIKE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SIMILAR_TO);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NOT_SIMILAR_TO);

        // NULLS ordering.
        definedOperatorsBuilder.add(SqlStdOperatorTable.NULLS_FIRST);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NULLS_LAST);
        definedOperatorsBuilder.add(SqlStdOperatorTable.DESC);

        // Exists.
        definedOperatorsBuilder.add(SqlStdOperatorTable.EXISTS);

        // String functions.
        definedOperatorsBuilder.add(SqlStdOperatorTable.UPPER);
        definedOperatorsBuilder.add(SqlStdOperatorTable.LOWER);
        definedOperatorsBuilder.add(SqlStdOperatorTable.INITCAP);
        definedOperatorsBuilder.add(SqlLibraryOperators.TO_BASE64);
        definedOperatorsBuilder.add(SqlLibraryOperators.FROM_BASE64);
        definedOperatorsBuilder.add(SqlLibraryOperators.MD5);
        definedOperatorsBuilder.add(SqlLibraryOperators.SHA1);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SUBSTRING);
        definedOperatorsBuilder.add(SqlLibraryOperators.LEFT);
        definedOperatorsBuilder.add(SqlLibraryOperators.RIGHT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.REPLACE);
        definedOperatorsBuilder.add(SqlLibraryOperators.TRANSLATE3);
        definedOperatorsBuilder.add(SqlLibraryOperators.CHR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CHAR_LENGTH);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CHARACTER_LENGTH);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CONCAT);
        definedOperatorsBuilder.add(SqlLibraryOperators.CONCAT_FUNCTION);
        definedOperatorsBuilder.add(SqlStdOperatorTable.OVERLAY);
        definedOperatorsBuilder.add(SqlStdOperatorTable.POSITION);
        definedOperatorsBuilder.add(SqlStdOperatorTable.ASCII);
        definedOperatorsBuilder.add(SqlLibraryOperators.REPEAT);
        definedOperatorsBuilder.add(SqlLibraryOperators.SPACE);
        definedOperatorsBuilder.add(SqlLibraryOperators.STRCMP);
        definedOperatorsBuilder.add(SqlLibraryOperators.SOUNDEX);
        definedOperatorsBuilder.add(SqlLibraryOperators.DIFFERENCE);
        definedOperatorsBuilder.add(SqlLibraryOperators.REVERSE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.TRIM);
        definedOperatorsBuilder.add(SqlLibraryOperators.LTRIM);
        definedOperatorsBuilder.add(SqlLibraryOperators.RTRIM);
        definedOperatorsBuilder.add(SUBSTR);

        // Math functions.
        definedOperatorsBuilder.add(SqlStdOperatorTable.MOD); // Arithmetic remainder.
        definedOperatorsBuilder.add(SqlStdOperatorTable.EXP); // Euler's number e raised to the power of a value.
        definedOperatorsBuilder.add(SqlStdOperatorTable.POWER);
        definedOperatorsBuilder.add(SqlStdOperatorTable.LN); // Natural logarithm.
        definedOperatorsBuilder.add(SqlStdOperatorTable.LOG10); // The base 10 logarithm.
        definedOperatorsBuilder.add(SqlStdOperatorTable.ABS); // Absolute value.
        definedOperatorsBuilder.add(SqlStdOperatorTable.RAND); // Random.
        definedOperatorsBuilder.add(SqlStdOperatorTable.RAND_INTEGER); // Integer random.
        definedOperatorsBuilder.add(SqlStdOperatorTable.ACOS); // Arc cosine.
        definedOperatorsBuilder.add(SqlStdOperatorTable.ASIN); // Arc sine.
        definedOperatorsBuilder.add(SqlStdOperatorTable.ATAN); // Arc tangent.
        definedOperatorsBuilder.add(SqlStdOperatorTable.ATAN2); // Angle from coordinates.
        definedOperatorsBuilder.add(SqlStdOperatorTable.SQRT); // Square root.
        definedOperatorsBuilder.add(SqlStdOperatorTable.CBRT); // Cube root.
        definedOperatorsBuilder.add(SqlStdOperatorTable.COS); // Cosine
        definedOperatorsBuilder.add(SqlLibraryOperators.COSH); // Hyperbolic cosine.
        definedOperatorsBuilder.add(SqlStdOperatorTable.COT); // Cotangent.
        definedOperatorsBuilder.add(SqlStdOperatorTable.DEGREES); // Radians to degrees.
        definedOperatorsBuilder.add(SqlStdOperatorTable.RADIANS); // Degrees to radians.
        definedOperatorsBuilder.add(ROUND); // Fixes return type scale.
        definedOperatorsBuilder.add(SqlStdOperatorTable.SIGN);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SIN); // Sine.
        definedOperatorsBuilder.add(SqlLibraryOperators.SINH); // Hyperbolic sine.
        definedOperatorsBuilder.add(SqlStdOperatorTable.TAN); // Tangent.
        definedOperatorsBuilder.add(SqlLibraryOperators.TANH); // Hyperbolic tangent.
        definedOperatorsBuilder.add(TRUNCATE); // Fixes return type scale.
        definedOperatorsBuilder.add(SqlStdOperatorTable.PI);

        // Date and time.
        definedOperatorsBuilder.add(SqlStdOperatorTable.DATETIME_PLUS);
        definedOperatorsBuilder.add(SqlStdOperatorTable.MINUS_DATE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.EXTRACT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.FLOOR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CEIL);
        definedOperatorsBuilder.add(SqlStdOperatorTable.TIMESTAMP_ADD);
        definedOperatorsBuilder.add(SqlStdOperatorTable.TIMESTAMP_DIFF);
        definedOperatorsBuilder.add(SqlStdOperatorTable.LAST_DAY);
        definedOperatorsBuilder.add(SqlLibraryOperators.DAYNAME);
        definedOperatorsBuilder.add(SqlLibraryOperators.MONTHNAME);
        definedOperatorsBuilder.add(SqlStdOperatorTable.DAYOFMONTH);
        definedOperatorsBuilder.add(SqlStdOperatorTable.DAYOFWEEK);
        definedOperatorsBuilder.add(SqlStdOperatorTable.DAYOFYEAR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.YEAR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.QUARTER);
        definedOperatorsBuilder.add(SqlStdOperatorTable.MONTH);
        definedOperatorsBuilder.add(SqlStdOperatorTable.WEEK);
        definedOperatorsBuilder.add(SqlStdOperatorTable.HOUR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.MINUTE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.SECOND);
        definedOperatorsBuilder.add(SqlLibraryOperators.TIMESTAMP_SECONDS); // Seconds since 1970-01-01 to timestamp.
        definedOperatorsBuilder.add(SqlLibraryOperators.TIMESTAMP_MILLIS); // Milliseconds since 1970-01-01 to timestamp.
        definedOperatorsBuilder.add(SqlLibraryOperators.TIMESTAMP_MICROS); // Microseconds since 1970-01-01 to timestamp.
        definedOperatorsBuilder.add(SqlLibraryOperators.UNIX_SECONDS); // Timestamp to seconds since 1970-01-01.
        definedOperatorsBuilder.add(SqlLibraryOperators.UNIX_MILLIS); // Timestamp to milliseconds since 1970-01-01.
        definedOperatorsBuilder.add(SqlLibraryOperators.UNIX_MICROS); // Timestamp to microseconds since 1970-01-01.
        definedOperatorsBuilder.add(SqlLibraryOperators.UNIX_DATE); // Date to days since 1970-01-01.
        definedOperatorsBuilder.add(SqlLibraryOperators.DATE_FROM_UNIX_DATE); // Days since 1970-01-01 to date.
        definedOperatorsBuilder.add(SqlLibraryOperators.DATE); // String to date.

        // POSIX REGEX.
        definedOperatorsBuilder.add(SqlStdOperatorTable.POSIX_REGEX_CASE_INSENSITIVE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.POSIX_REGEX_CASE_SENSITIVE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NEGATED_POSIX_REGEX_CASE_INSENSITIVE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NEGATED_POSIX_REGEX_CASE_SENSITIVE);
        definedOperatorsBuilder.add(SqlLibraryOperators.REGEXP_REPLACE_2);
        definedOperatorsBuilder.add(SqlLibraryOperators.REGEXP_REPLACE_3);
        definedOperatorsBuilder.add(SqlLibraryOperators.REGEXP_REPLACE_4);
        definedOperatorsBuilder.add(SqlLibraryOperators.REGEXP_REPLACE_5);
        definedOperatorsBuilder.add(SqlLibraryOperators.REGEXP_REPLACE_6);

        // Collections.
        definedOperatorsBuilder.add(SqlStdOperatorTable.MAP_VALUE_CONSTRUCTOR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.ARRAY_VALUE_CONSTRUCTOR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.ITEM);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CARDINALITY);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_EMPTY);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_EMPTY);

        // TODO https://issues.apache.org/jira/browse/IGNITE-19332
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MAP_QUERY);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.ARRAY_QUERY);

        // Multiset.
        // TODO https://issues.apache.org/jira/browse/IGNITE-15551
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_VALUE);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_QUERY);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.SLICE);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.ELEMENT);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.STRUCT_ACCESS);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MEMBER_OF);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.IS_A_SET);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_A_SET);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_INTERSECT_DISTINCT);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_INTERSECT);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_EXCEPT_DISTINCT);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_EXCEPT);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_UNION_DISTINCT);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.MULTISET_UNION);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.SUBMULTISET_OF);
        // definedOperatorsBuilder.add(SqlStdOperatorTable.NOT_SUBMULTISET_OF);

        // Other functions and operators.
        definedOperatorsBuilder.add(SqlStdOperatorTable.ROW);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CAST);
        definedOperatorsBuilder.add(SqlLibraryOperators.INFIX_CAST);
        definedOperatorsBuilder.add(SqlStdOperatorTable.COALESCE);
        definedOperatorsBuilder.add(SqlLibraryOperators.NVL);
        definedOperatorsBuilder.add(SqlStdOperatorTable.NULLIF);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CASE);
        definedOperatorsBuilder.add(SqlLibraryOperators.DECODE);
        definedOperatorsBuilder.add(SqlLibraryOperators.LEAST);
        definedOperatorsBuilder.add(SqlLibraryOperators.GREATEST);
        definedOperatorsBuilder.add(SqlLibraryOperators.COMPRESS);
        definedOperatorsBuilder.add(OCTET_LENGTH);
        definedOperatorsBuilder.add(SqlStdOperatorTable.DEFAULT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.REINTERPRET);

        // XML Operators.
        definedOperatorsBuilder.add(SqlLibraryOperators.EXTRACT_VALUE);
        definedOperatorsBuilder.add(SqlLibraryOperators.XML_TRANSFORM);
        definedOperatorsBuilder.add(SqlLibraryOperators.EXTRACT_XML);
        definedOperatorsBuilder.add(SqlLibraryOperators.EXISTS_NODE);

        // JSON Operators
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_TYPE_OPERATOR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_VALUE_EXPRESSION);
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_VALUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_QUERY);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_TYPE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_EXISTS);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_DEPTH);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_KEYS);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_PRETTY);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_LENGTH);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_REMOVE);
        definedOperatorsBuilder.add(SqlLibraryOperators.JSON_STORAGE_SIZE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_OBJECT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.JSON_ARRAY);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_JSON_VALUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_JSON_OBJECT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_JSON_ARRAY);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_JSON_SCALAR);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_JSON_VALUE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_JSON_OBJECT);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_JSON_ARRAY);
        definedOperatorsBuilder.add(SqlStdOperatorTable.IS_NOT_JSON_SCALAR);

        // Aggregate functions.
        definedOperatorsBuilder.add(SqlInternalOperators.LITERAL_AGG);

        // Current time functions.
        definedOperatorsBuilder.add(CURRENT_TIMESTAMP);
        definedOperatorsBuilder.add(SqlStdOperatorTable.CURRENT_DATE);
        definedOperatorsBuilder.add(SqlStdOperatorTable.LOCALTIME);
        definedOperatorsBuilder.add(SqlStdOperatorTable.LOCALTIMESTAMP);

        // Ignite specific operators
        definedOperatorsBuilder.add(LENGTH);
        definedOperatorsBuilder.add(SYSTEM_RANGE);
        definedOperatorsBuilder.add(TYPEOF);
        definedOperatorsBuilder.add(LEAST2);
        definedOperatorsBuilder.add(GREATEST2);
        definedOperatorsBuilder.add(RAND_UUID);

        setOperators(buildIndex(definedOperatorsBuilder.build()));
    }