gensrc/script/doris_builtins_functions.py (2,100 lines of code) (raw):
#!/usr/bin/env python
# encoding: utf-8
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# This file is copied from
# https://github.com/apache/impala/blob/branch-2.9.0/common/function-registry/impala_functions.py
# and modified by Doris
# This is a list of all the functions that are not auto-generated.
# It contains all the meta data that describes the function.
# The format is:
# [sql aliases], <return_type>, [<args>], <nullable mode>, [template_types]
#
# 'sql aliases' are the function names that can be used from sql. There must be at least
# one per function.
#
# 'nullable mode' reflects whether the return value of the function is null. See @Function.NullableMode
# for the specific mode and meaning.
#
# 'template_types' is for template function just like C++. It is optional list.
# eg. [['element_at', '%element_extract%'], 'V', ['MAP<K, V>', 'K'], 'ALWAYS_NULLABLE', ['K', 'V']],
# 'K' and 'V' is type template and will be specialized at runtime in FE to match specific args.
#
# 'template_types' support variadic template is now support variadic template.
# eg. [['struct'], 'STRUCT<TYPES>', ['TYPES'], 'ALWAYS_NOT_NULLABLE', ['TYPES...']],
# Inspired by C++ std::vector::emplace_back() function. 'TYPES...' is variadic template and will
# be expanded to normal templates at runtime in FE to match variadic args. Please ensure that the
# variadic template is placed at the last position of all templates.
visible_functions = {
# Bit and Byte functions
# For functions corresponding to builtin operators, we can reuse the implementations
"bit" :[
[['bitand'], 'TINYINT', ['TINYINT', 'TINYINT'], ''],
[['bitand'], 'SMALLINT', ['SMALLINT', 'SMALLINT'], ''],
[['bitand'], 'INT', ['INT', 'INT'], ''],
[['bitand'], 'BIGINT', ['BIGINT', 'BIGINT'], ''],
[['bitand'], 'LARGEINT', ['LARGEINT', 'LARGEINT'], ''],
[['bit_count'], 'TINYINT', ['TINYINT'], ''],
[['bit_count'], 'TINYINT', ['SMALLINT'], ''],
[['bit_count'], 'TINYINT', ['INT'], ''],
[['bit_count'], 'TINYINT', ['BIGINT'], ''],
[['bit_count'], 'SMALLINT', ['LARGEINT'], ''],
[['bitor'], 'TINYINT', ['TINYINT', 'TINYINT'], ''],
[['bitor'], 'SMALLINT', ['SMALLINT', 'SMALLINT'], ''],
[['bitor'], 'INT', ['INT', 'INT'], ''],
[['bitor'], 'BIGINT', ['BIGINT', 'BIGINT'], ''],
[['bitor'], 'LARGEINT', ['LARGEINT', 'LARGEINT'], ''],
[['bitxor'], 'TINYINT', ['TINYINT', 'TINYINT'], ''],
[['bitxor'], 'SMALLINT', ['SMALLINT', 'SMALLINT'], ''],
[['bitxor'], 'INT', ['INT', 'INT'], ''],
[['bitxor'], 'BIGINT', ['BIGINT', 'BIGINT'], ''],
[['bitxor'], 'LARGEINT', ['LARGEINT', 'LARGEINT'], ''],
[['bitnot'], 'TINYINT', ['TINYINT'], ''],
[['bitnot'], 'SMALLINT', ['SMALLINT'], ''],
[['bitnot'], 'INT', ['INT'], ''],
[['bitnot'], 'BIGINT', ['BIGINT'], ''],
[['bitnot'], 'LARGEINT', ['LARGEINT'], ''],
[['bit_shift_left'], 'BIGINT', ['BIGINT', 'TINYINT'], ''],
[['bit_shift_right'], 'BIGINT', ['BIGINT', 'TINYINT'], ''],
[['bit_test','bit_test_all'], 'TINYINT', ['TINYINT','TINYINT','...'], ''],
[['bit_test','bit_test_all'], 'TINYINT', ['SMALLINT','SMALLINT','...'], ''],
[['bit_test','bit_test_all'], 'TINYINT', ['INT','INT','...'], ''],
[['bit_test','bit_test_all'], 'TINYINT', ['BIGINT','BIGINT','...'], ''],
[['bit_test','bit_test_all'], 'TINYINT', ['LARGEINT','LARGEINT','...'], '']
],
# map functions
"map": [
[['map'], 'MAP<K, V>', ['K', 'V', '...'], 'ALWAYS_NOT_NULLABLE', ['K', 'V']],
[['element_at', '%element_extract%'], 'V', ['MAP<K, V>', 'K'], 'ALWAYS_NULLABLE', ['K', 'V']],
[['size', 'map_size', 'cardinality'], 'BIGINT', ['MAP<K, V>'], '', ['K', 'V']],
[['map_contains_key'], 'BOOLEAN', ['MAP<K, V>', 'K'], 'CUSTOM', ['K', 'V']],
[['map_contains_value'], 'BOOLEAN', ['MAP<K, V>', 'V'], 'CUSTOM', ['K', 'V']],
#[['map_contains_key_like'], 'BOOLEAN', ['MAP<K, V>', 'K'], '', ['K', 'V']],
[['map_keys'], 'ARRAY<K>', ['MAP<K, V>'], '', ['K', 'V']],
[['map_values'], 'ARRAY<V>', ['MAP<K, V>'], '', ['K', 'V']],
],
# variant functions
"variant": [
[['element_at', '%element_extract%'], 'VARIANT', ['VARIANT', 'VARCHAR'], 'ALWAYS_NULLABLE'],
],
# struct functions
"struct": [
[['struct'], 'STRUCT<TYPES>', ['TYPES'], 'ALWAYS_NOT_NULLABLE', ['TYPES...']],
[['named_struct'], 'ANY_STRUCT_TYPE', ['TYPES'], 'ALWAYS_NOT_NULLABLE', ['TYPES...']],
[['struct_element'], 'ANY_ELEMENT_TYPE', ['ANY_STRUCT_TYPE', 'INT'], 'ALWAYS_NULLABLE', ['TYPES...']],
[['struct_element'], 'ANY_ELEMENT_TYPE', ['ANY_STRUCT_TYPE', 'VARCHAR'], 'ALWAYS_NULLABLE', ['TYPES...']],
],
# array functions
"array": [
[['array'], 'ARRAY', ['BOOLEAN', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['TINYINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['SMALLINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['INT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['BIGINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['LARGEINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DATETIME', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DATE', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DATETIMEV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DATEV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DECIMALV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DECIMAL32', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DECIMAL64', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DECIMAL128', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['FLOAT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['DOUBLE', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['VARCHAR', '...'], 'ALWAYS_NOT_NULLABLE'],
[['array'], 'ARRAY', ['STRING', '...'], 'ALWAYS_NOT_NULLABLE'],
[['element_at', '%element_extract%'], 'T', ['ARRAY<T>', 'BIGINT'], 'ALWAYS_NULLABLE', ['T']],
[['l1_distance'], 'DOUBLE', ['ARRAY_TINYINT', 'ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['l1_distance'], 'DOUBLE', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['l1_distance'], 'DOUBLE', ['ARRAY_INT', 'ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['l1_distance'], 'DOUBLE', ['ARRAY_BIGINT', 'ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['l1_distance'], 'DOUBLE', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['l1_distance'], 'DOUBLE', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['l1_distance'], 'DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_TINYINT', 'ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_INT', 'ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_BIGINT', 'ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['l2_distance'], 'DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_TINYINT', 'ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_INT', 'ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_BIGINT', 'ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['cosine_distance'], 'DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_TINYINT', 'ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_INT', 'ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_BIGINT', 'ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['inner_product'], 'DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_TINYINT', 'ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_INT', 'ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_BIGINT', 'ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATETIME', 'ARRAY_DATETIME'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATE', 'ARRAY_DATE'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DATEV2', 'ARRAY_DATEV2'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DECIMAL32', 'ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DECIMAL64', 'ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_DECIMAL128', 'ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR'], 'ALWAYS_NULLABLE'],
[['arrays_overlap'], 'BOOLEAN', ['ARRAY_STRING', 'ARRAY_STRING'], 'ALWAYS_NULLABLE'],
[['array_contains_all'], 'BOOLEAN', ['ARRAY<T>', 'ARRAY<T>'], '', ['T']],
[['array_contains'], 'BOOLEAN', ['ARRAY<T>', 'T'], 'CUSTOM', ['T']],
[['array_cum_sum'], 'ARRAY_BIGINT', ['ARRAY_TINYINT'], ''],
[['array_cum_sum'], 'ARRAY_BIGINT', ['ARRAY_SMALLINT'], ''],
[['array_cum_sum'], 'ARRAY_BIGINT', ['ARRAY_INT'], ''],
[['array_cum_sum'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_cum_sum'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_cum_sum'], 'ARRAY_DOUBLE', ['ARRAY_FLOAT'], ''],
[['array_cum_sum'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_cum_sum'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_cum_sum'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL32'], ''],
[['array_cum_sum'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL64'], ''],
[['array_cum_sum'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_BOOLEAN'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_TINYINT'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_SMALLINT'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_INT'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_LARGEINT'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DATETIME'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DATE'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DATETIMEV2'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DATEV2'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_FLOAT'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DOUBLE'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DECIMALV2'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DECIMAL32'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DECIMAL64'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_DECIMAL128'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_VARCHAR'], ''],
[['array_enumerate'], 'ARRAY_BIGINT', ['ARRAY_STRING'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_BOOLEAN', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_TINYINT', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_SMALLINT', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_INT', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_LARGEINT', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DATETIME', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DATE', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DATETIMEV2', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DATEV2', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_FLOAT', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DOUBLE', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DECIMALV2', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DECIMAL32', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DECIMAL64', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_DECIMAL128', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_VARCHAR', '...'], ''],
[['array_enumerate_uniq'], 'ARRAY_BIGINT', ['ARRAY_STRING', '...'], ''],
[['countequal'], 'BIGINT', ['ARRAY_BOOLEAN', 'BOOLEAN'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_TINYINT', 'TINYINT'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_SMALLINT', 'SMALLINT'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_INT', 'INT'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_BIGINT', 'BIGINT'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_LARGEINT', 'LARGEINT'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DATETIME', 'DATETIME'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DATE', 'DATE'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DATEV2', 'DATEV2'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_FLOAT', 'FLOAT'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DOUBLE', 'DOUBLE'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DECIMALV2', 'DECIMALV2'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DECIMAL32', 'DECIMAL32'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DECIMAL64', 'DECIMAL64'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_DECIMAL128', 'DECIMAL128'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_VARCHAR', 'VARCHAR'], 'CUSTOM'],
[['countequal'], 'BIGINT', ['ARRAY_STRING', 'STRING'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_BOOLEAN', 'BOOLEAN'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_TINYINT', 'TINYINT'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_SMALLINT', 'SMALLINT'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_INT', 'INT'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_BIGINT', 'BIGINT'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_LARGEINT', 'LARGEINT'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DATETIME', 'DATETIME'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DATE', 'DATE'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DATEV2', 'DATEV2'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_FLOAT', 'FLOAT'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DOUBLE', 'DOUBLE'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DECIMALV2', 'DECIMALV2'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DECIMAL32', 'DECIMAL32'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DECIMAL64', 'DECIMAL64'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_DECIMAL128', 'DECIMAL128'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_VARCHAR', 'VARCHAR'], 'CUSTOM'],
[['array_position'], 'BIGINT', ['ARRAY_STRING', 'STRING'], 'CUSTOM'],
[['cardinality', 'size', 'array_size'], 'BIGINT', ['ARRAY<T>'], '', ['T']],
[['array_distinct'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_distinct'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_distinct'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_distinct'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_distinct'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_distinct'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_distinct'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_distinct'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_distinct'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_distinct'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_distinct'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_distinct'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_distinct'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_distinct'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_distinct'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_distinct'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_distinct'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_distinct'], 'ARRAY_STRING', ['ARRAY_STRING'], ''],
[['array_difference'], 'ARRAY_SMALLINT', ['ARRAY_TINYINT'], ''],
[['array_difference'], 'ARRAY_INT', ['ARRAY_SMALLINT'], ''],
[['array_difference'], 'ARRAY_BIGINT', ['ARRAY_INT'], ''],
[['array_difference'], 'ARRAY_LARGEINT', ['ARRAY_BIGINT'], ''],
[['array_difference'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_difference'], 'ARRAY_DOUBLE', ['ARRAY_FLOAT'], ''],
[['array_difference'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_difference'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_difference'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_difference'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_difference'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_sort'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_sort'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_sort'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_sort'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_sort'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_sort'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_sort'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_sort'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_sort'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_sort'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_sort'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_sort'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_sort'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_sort'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_sort'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_sort'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_sort'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_sort'], 'ARRAY_STRING', ['ARRAY_STRING'], ''],
[['array_reverse_sort'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_reverse_sort'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_reverse_sort'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_reverse_sort'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_reverse_sort'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_reverse_sort'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_reverse_sort'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_reverse_sort'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_reverse_sort'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_reverse_sort'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_reverse_sort'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_reverse_sort'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_reverse_sort'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_reverse_sort'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_reverse_sort'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_reverse_sort'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_reverse_sort'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_reverse_sort'], 'ARRAY_STRING', ['ARRAY_STRING'], ''],
# array_join takes two params
[['array_join'], 'STRING', ['ARRAY_BOOLEAN','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_TINYINT','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_SMALLINT','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_INT','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_BIGINT','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_LARGEINT','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATETIME','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATE','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATETIMEV2','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATEV2','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_FLOAT','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DOUBLE','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMALV2','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMAL32','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMAL64','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMAL128','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_VARCHAR','VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_STRING','VARCHAR'], ''],
# array_join takes three params
[['array_join'], 'STRING', ['ARRAY_BOOLEAN','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_TINYINT','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_SMALLINT','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_INT','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_BIGINT','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_LARGEINT','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATETIME','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATE','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATETIMEV2','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DATEV2','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_FLOAT','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DOUBLE','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMALV2','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMAL32','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMAL64','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_DECIMAL128','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_VARCHAR','VARCHAR', 'VARCHAR'], ''],
[['array_join'], 'STRING', ['ARRAY_STRING','VARCHAR', 'VARCHAR'], ''],
[['array_min'], 'BOOLEAN', ['ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_min'], 'TINYINT', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['array_min'], 'SMALLINT', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_min'], 'INT', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['array_min'], 'BIGINT', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['array_min'], 'LARGEINT', ['ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_min'], 'FLOAT', ['ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DECIMALV2',['ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DECIMAL32',['ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DECIMAL64',['ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DECIMAL128',['ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DATE', ['ARRAY_DATE'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DATETIME', ['ARRAY_DATETIME'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DATEV2', ['ARRAY_DATEV2'], 'ALWAYS_NULLABLE'],
[['array_min'], 'DATETIMEV2', ['ARRAY_DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['array_max'], 'BOOLEAN', ['ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_max'], 'TINYINT', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['array_max'], 'SMALLINT', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_max'], 'INT', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['array_max'], 'BIGINT', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['array_max'], 'LARGEINT', ['ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_max'], 'FLOAT', ['ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DECIMALV2',['ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DECIMAL32',['ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DECIMAL64',['ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DECIMAL128',['ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DATE', ['ARRAY_DATE'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DATETIME', ['ARRAY_DATETIME'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DATEV2', ['ARRAY_DATEV2'], 'ALWAYS_NULLABLE'],
[['array_max'], 'DATETIMEV2', ['ARRAY_DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'BIGINT', ['ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'BIGINT', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'BIGINT', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'BIGINT', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'BIGINT', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'LARGEINT', ['ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'DOUBLE', ['ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'DECIMALV2',['ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'DECIMAL128',['ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'DECIMAL128',['ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_sum'], 'DECIMAL128',['ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DECIMALV2',['ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DECIMAL128',['ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DECIMAL128',['ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_avg'], 'DECIMAL128',['ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DECIMALV2',['ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DECIMAL128',['ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DECIMAL128',['ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_product'], 'DECIMAL128',['ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_remove'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'BOOLEAN'], ''],
[['array_remove'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'TINYINT'], ''],
[['array_remove'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'SMALLINT'], ''],
[['array_remove'], 'ARRAY_INT', ['ARRAY_INT', 'INT'], ''],
[['array_remove'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'BIGINT'], ''],
[['array_remove'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'LARGEINT'], ''],
[['array_remove'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'FLOAT'], ''],
[['array_remove'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'DOUBLE'], ''],
[['array_remove'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'DECIMALV2'], ''],
[['array_remove'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'DECIMAL32'], ''],
[['array_remove'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'DECIMAL64'], ''],
[['array_remove'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'DECIMAL128'], ''],
[['array_remove'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'DATETIME'], ''],
[['array_remove'], 'ARRAY_DATE', ['ARRAY_DATE', 'DATE'], ''],
[['array_remove'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], ''],
[['array_remove'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'DATEV2'], ''],
[['array_remove'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'VARCHAR'], ''],
[['array_remove'], 'ARRAY_STRING', ['ARRAY_STRING', 'STRING'], ''],
[['array_union'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN', '...'], ''],
[['array_union'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'ARRAY_TINYINT', '...'], ''],
[['array_union'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT', '...'], ''],
[['array_union'], 'ARRAY_INT', ['ARRAY_INT', 'ARRAY_INT', '...'], ''],
[['array_union'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'ARRAY_BIGINT', '...'], ''],
[['array_union'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT', '...'], ''],
[['array_union'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'ARRAY_FLOAT', '...'], ''],
[['array_union'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE', '...'], ''],
[['array_union'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2', '...'], ''],
[['array_union'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'ARRAY_DECIMAL32', '...'], ''],
[['array_union'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'ARRAY_DECIMAL64', '...'], ''],
[['array_union'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'ARRAY_DECIMAL128', '...'], ''],
[['array_union'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'ARRAY_DATETIME', '...'], ''],
[['array_union'], 'ARRAY_DATE', ['ARRAY_DATE', 'ARRAY_DATE', '...'], ''],
[['array_union'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2', '...'], ''],
[['array_union'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'ARRAY_DATEV2', '...'], ''],
[['array_union'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR', '...'], ''],
[['array_union'], 'ARRAY_STRING', ['ARRAY_STRING', 'ARRAY_STRING', '...'], ''],
[['array_apply'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'VARCHAR', 'BOOLEAN'], ''],
[['array_apply'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'VARCHAR', 'TINYINT'], ''],
[['array_apply'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'VARCHAR', 'SMALLINT'], ''],
[['array_apply'], 'ARRAY_INT', ['ARRAY_INT', 'VARCHAR', 'INT'], ''],
[['array_apply'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'VARCHAR', 'BIGINT'], ''],
[['array_apply'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'VARCHAR', 'LARGEINT'], ''],
[['array_apply'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'VARCHAR', 'FLOAT'], ''],
[['array_apply'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'VARCHAR', 'DOUBLE'], ''],
[['array_apply'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'VARCHAR', 'DECIMALV2'], ''],
[['array_apply'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'VARCHAR', 'DECIMAL32'], ''],
[['array_apply'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'VARCHAR', 'DECIMAL64'], ''],
[['array_apply'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'VARCHAR', 'DECIMAL128'], ''],
[['array_apply'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'VARCHAR', 'DATETIME'], ''],
[['array_apply'], 'ARRAY_DATE', ['ARRAY_DATE', 'VARCHAR', 'DATE'], ''],
[['array_apply'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'VARCHAR', 'DATETIMEV2'], ''],
[['array_apply'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'VARCHAR', 'DATEV2'], ''],
[['array_concat'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', '...'], ''],
[['array_concat'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', '...'], ''],
[['array_concat'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', '...'], ''],
[['array_concat'], 'ARRAY_INT', ['ARRAY_INT', '...'], ''],
[['array_concat'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', '...'], ''],
[['array_concat'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', '...'], ''],
[['array_concat'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', '...'], ''],
[['array_concat'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', '...'], ''],
[['array_concat'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', '...'], ''],
[['array_concat'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', '...'], ''],
[['array_concat'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', '...'], ''],
[['array_concat'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', '...'], ''],
[['array_concat'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', '...'], ''],
[['array_concat'], 'ARRAY_DATE', ['ARRAY_DATE', '...'], ''],
[['array_concat'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', '...'], ''],
[['array_concat'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', '...'], ''],
[['array_concat'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', '...'], ''],
[['array_concat'], 'ARRAY_STRING', ['ARRAY_STRING', '...'], ''],
[['array_except'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN'], ''],
[['array_except'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'ARRAY_TINYINT'], ''],
[['array_except'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT'], ''],
[['array_except'], 'ARRAY_INT', ['ARRAY_INT', 'ARRAY_INT'], ''],
[['array_except'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'ARRAY_BIGINT'], ''],
[['array_except'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT'], ''],
[['array_except'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'ARRAY_FLOAT'], ''],
[['array_except'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE'], ''],
[['array_except'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], ''],
[['array_except'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'ARRAY_DECIMAL32'], ''],
[['array_except'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'ARRAY_DECIMAL64'], ''],
[['array_except'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'ARRAY_DECIMAL128'], ''],
[['array_except'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'ARRAY_DATETIME'], ''],
[['array_except'], 'ARRAY_DATE', ['ARRAY_DATE', 'ARRAY_DATE'], ''],
[['array_except'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], ''],
[['array_except'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'ARRAY_DATEV2'], ''],
[['array_except'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR'], ''],
[['array_except'], 'ARRAY_STRING', ['ARRAY_STRING', 'ARRAY_STRING'], ''],
[['array_compact'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_compact'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_compact'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_compact'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_compact'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_compact'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_compact'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_compact'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_compact'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_compact'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_compact'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_compact'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_compact'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_compact'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_compact'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_compact'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_compact'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_intersect'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN', '...'], ''],
[['array_intersect'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'ARRAY_TINYINT', '...'], ''],
[['array_intersect'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'ARRAY_SMALLINT', '...'], ''],
[['array_intersect'], 'ARRAY_INT', ['ARRAY_INT', 'ARRAY_INT', '...'], ''],
[['array_intersect'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'ARRAY_BIGINT', '...'], ''],
[['array_intersect'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'ARRAY_LARGEINT', '...'], ''],
[['array_intersect'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'ARRAY_FLOAT', '...'], ''],
[['array_intersect'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'ARRAY_DOUBLE', '...'], ''],
[['array_intersect'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'ARRAY_DECIMALV2', '...'], ''],
[['array_intersect'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'ARRAY_DECIMAL32', '...'], ''],
[['array_intersect'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'ARRAY_DECIMAL64', '...'], ''],
[['array_intersect'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'ARRAY_DECIMAL128', '...'], ''],
[['array_intersect'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'ARRAY_DATETIME', '...'], ''],
[['array_intersect'], 'ARRAY_DATE', ['ARRAY_DATE', 'ARRAY_DATE', '...'], ''],
[['array_intersect'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2', '...'], ''],
[['array_intersect'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'ARRAY_DATEV2', '...'], ''],
[['array_intersect'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'ARRAY_VARCHAR', '...'], ''],
[['array_intersect'], 'ARRAY_STRING', ['ARRAY_STRING', 'ARRAY_STRING', '...'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_INT', ['ARRAY_INT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATE', ['ARRAY_DATE', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_STRING', ['ARRAY_STRING', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_INT', ['ARRAY_INT', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATE', ['ARRAY_DATE', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_STRING', ['ARRAY_STRING', 'BIGINT', 'BIGINT'], ''],
[['array_popback'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_popback'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_popback'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_popback'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_popback'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_popback'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_popback'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_popback'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_popback'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_popback'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_popback'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_popback'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_popback'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_popback'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_popback'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_popback'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_popback'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_popback'], 'ARRAY_STRING', ['ARRAY_STRING'], ''],
[['array_popfront'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_popfront'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_popfront'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_popfront'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_popfront'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_popfront'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_popfront'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_popfront'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_popfront'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_popfront'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_popfront'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_popfront'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_popfront'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_popfront'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_popfront'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_popfront'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_popfront'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_popfront'], 'ARRAY_STRING', ['ARRAY_STRING'], ''],
[['array_filter'], 'ARRAY_BOOLEAN',['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_TINYINT',['ARRAY_TINYINT', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_SMALLINT',['ARRAY_SMALLINT', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_INT',['ARRAY_INT', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_BIGINT',['ARRAY_BIGINT', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_LARGEINT',['ARRAY_LARGEINT', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_FLOAT',['ARRAY_FLOAT', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DOUBLE',['ARRAY_DOUBLE', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_VARCHAR',['ARRAY_VARCHAR', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_STRING',['ARRAY_STRING', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DECIMALV2',['ARRAY_DECIMALV2', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DECIMAL32',['ARRAY_DECIMAL32', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DECIMAL64',['ARRAY_DECIMAL64', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DECIMAL128',['ARRAY_DECIMAL128', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DATETIME',['ARRAY_DATETIME', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DATE',['ARRAY_DATE', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DATETIMEV2',['ARRAY_DATETIMEV2', 'ARRAY_BOOLEAN'], ''],
[['array_filter'], 'ARRAY_DATEV2',['ARRAY_DATEV2', 'ARRAY_BOOLEAN'], ''],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_BOOLEAN'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_TINYINT'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_SMALLINT'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_INT'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_BIGINT'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_LARGEINT'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_FLOAT'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DOUBLE'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_VARCHAR'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_STRING'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DECIMALV2'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DECIMAL32'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DECIMAL64'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DECIMAL128'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DATETIME'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DATE'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DATETIMEV2'], 'CUSTOM', ['K']],
[['array_sortby'], 'ARRAY<K>',['ARRAY<K>', 'ARRAY_DATEV2'], 'CUSTOM', ['K']],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_TINYINT'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_SMALLINT'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_INT'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_BIGINT'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_LARGEINT'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DATETIME'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DATE'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DATETIMEV2'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DATEV2'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_FLOAT'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DOUBLE'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DECIMALV2'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DECIMAL32'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DECIMAL64'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_DECIMAL128'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_VARCHAR'], ''],
[['array_exists'], 'ARRAY_BOOLEAN', ['ARRAY_STRING'], ''],
[['array_first_index'], 'BIGINT', ['ARRAY_BOOLEAN'], 'ALWAYS_NOT_NULLABLE'],
[['array_last_index'], 'BIGINT', ['ARRAY_BOOLEAN'], 'ALWAYS_NOT_NULLABLE'],
[['array_count'], 'BIGINT', ['ARRAY_BOOLEAN'], 'ALWAYS_NOT_NULLABLE'],
[['array_shuffle', 'shuffle'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_STRING', ['ARRAY_STRING'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_INT', ['ARRAY_INT', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATE', ['ARRAY_DATE', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'BIGINT'], ''],
[['array_shuffle', 'shuffle'], 'ARRAY_STRING', ['ARRAY_STRING', 'BIGINT'], ''],
[['array_pushfront'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_INT', ['ARRAY_INT', 'INT'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DATE', ['ARRAY_DATE', 'DATE'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'FLOAT'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['array_pushfront'], 'ARRAY_STRING', ['ARRAY_STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY<T>', ['ARRAY<T>', 'T'], 'ALWAYS_NULLABLE', ['T']],
[['array_pushback'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN', 'BOOLEAN'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_TINYINT', ['ARRAY_TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT', 'SMALLINT'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_INT', ['ARRAY_INT', 'INT'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_BIGINT', ['ARRAY_BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT', 'LARGEINT'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DATETIME', ['ARRAY_DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DATE', ['ARRAY_DATE', 'DATE'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DATEV2', ['ARRAY_DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_FLOAT', ['ARRAY_FLOAT', 'FLOAT'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2', 'DECIMALV2'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32', 'DECIMAL32'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64', 'DECIMAL64'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128', 'DECIMAL128'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['array_pushback'], 'ARRAY_STRING', ['ARRAY_STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['array_with_constant'], 'ARRAY_BOOLEAN', ['BIGINT', 'BOOLEAN'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_TINYINT', ['BIGINT', 'TINYINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_SMALLINT', ['BIGINT','SMALLINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_INT', ['BIGINT', 'INT'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_BIGINT', ['BIGINT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_LARGEINT', ['BIGINT', 'LARGEINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DATETIME', ['BIGINT', 'DATETIME'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DATE', ['BIGINT', 'DATE'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DATETIMEV2', ['BIGINT', 'DATETIMEV2'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DATEV2', ['BIGINT', 'DATEV2'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_FLOAT', ['BIGINT', 'FLOAT'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DOUBLE', ['BIGINT', 'DOUBLE'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DECIMALV2', ['BIGINT', 'DECIMALV2'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DECIMAL32', ['BIGINT', 'DECIMAL32'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DECIMAL64', ['BIGINT', 'DECIMAL64'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DECIMAL128', ['BIGINT', 'DECIMAL128'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_VARCHAR', ['BIGINT', 'VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_STRING', ['BIGINT', 'STRING'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_BOOLEAN', ['BOOLEAN', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_TINYINT', ['TINYINT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_SMALLINT', ['SMALLINT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_INT', ['INT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_BIGINT', ['BIGINT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_LARGEINT', ['LARGEINT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DATETIME', ['DATETIME', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DATE', ['DATE', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DATETIMEV2', ['DATETIMEV2', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DATEV2', ['DATEV2', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_FLOAT', ['FLOAT', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DOUBLE', ['DOUBLE', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DECIMALV2', ['DECIMALV2', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DECIMAL32', ['DECIMAL32', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DECIMAL64', ['DECIMAL64', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_DECIMAL128', ['DECIMAL128', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_VARCHAR', ['VARCHAR', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_repeat'], 'ARRAY_STRING', ['STRING', 'BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['array_range', 'sequence'], 'ARRAY_INT', ['INT'], 'ALWAYS_NULLABLE'],
[['array_range', 'sequence'], 'ARRAY_INT', ['INT', 'INT'], 'ALWAYS_NULLABLE'],
[['array_range', 'sequence'], 'ARRAY_INT', ['INT', 'INT', 'INT'], 'ALWAYS_NULLABLE'],
[['array_range', 'sequence'], 'ARRAY_DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['array_range', 'sequence'], 'ARRAY_DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['array_zip'], 'ARRAY', ['ARRAY<T>', '...'], '', ['T']],
[['array_split'], 'ARRAY_BOOLEAN',['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_TINYINT',['ARRAY_TINYINT', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_SMALLINT',['ARRAY_SMALLINT', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_INT',['ARRAY_INT', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_BIGINT',['ARRAY_BIGINT', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_LARGEINT',['ARRAY_LARGEINT', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_FLOAT',['ARRAY_FLOAT', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DOUBLE',['ARRAY_DOUBLE', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_VARCHAR',['ARRAY_VARCHAR', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_STRING',['ARRAY_STRING', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DECIMALV2',['ARRAY_DECIMALV2', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DECIMAL32',['ARRAY_DECIMAL32', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DECIMAL64',['ARRAY_DECIMAL64', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DECIMAL128',['ARRAY_DECIMAL128', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DATETIME',['ARRAY_DATETIME', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DATE',['ARRAY_DATE', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DATETIMEV2',['ARRAY_DATETIMEV2', 'ARRAY_BOOLEAN'], ''],
[['array_split'], 'ARRAY_DATEV2',['ARRAY_DATEV2', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_BOOLEAN',['ARRAY_BOOLEAN', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_TINYINT',['ARRAY_TINYINT', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_SMALLINT',['ARRAY_SMALLINT', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_INT',['ARRAY_INT', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_BIGINT',['ARRAY_BIGINT', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_LARGEINT',['ARRAY_LARGEINT', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_FLOAT',['ARRAY_FLOAT', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DOUBLE',['ARRAY_DOUBLE', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_VARCHAR',['ARRAY_VARCHAR', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_STRING',['ARRAY_STRING', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DECIMALV2',['ARRAY_DECIMALV2', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DECIMAL32',['ARRAY_DECIMAL32', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DECIMAL64',['ARRAY_DECIMAL64', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DECIMAL128',['ARRAY_DECIMAL128', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DATETIME',['ARRAY_DATETIME', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DATE',['ARRAY_DATE', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DATETIMEV2',['ARRAY_DATETIMEV2', 'ARRAY_BOOLEAN'], ''],
[['array_reverse_split'], 'ARRAY_DATEV2',['ARRAY_DATEV2', 'ARRAY_BOOLEAN'], ''],
# reverse function for string builtin
[['reverse'], 'VARCHAR', ['VARCHAR'], ''],
# reverse function support the longtext
[['reverse'], 'STRING', ['STRING'], ''],
# reverse function support the array type
[['reverse'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], ''],
[['reverse'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], ''],
[['reverse'], 'ARRAY_INT', ['ARRAY_INT'], ''],
[['reverse'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], ''],
[['reverse'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['reverse'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['reverse'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
[['reverse'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
[['reverse'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['reverse'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['reverse'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['reverse'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
[['reverse'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], ''],
[['reverse'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], ''],
[['reverse'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], ''],
[['reverse'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], ''],
[['reverse'], 'ARRAY_STRING', ['ARRAY_STRING'], '']
],
# Timestamp functions
"Timestamp": [
[['unix_timestamp'], 'INT', [], 'ALWAYS_NOT_NULLABLE'],
[['unix_timestamp'], 'INT', ['DATETIME'], 'DEPEND_ON_ARGUMENT'],
[['unix_timestamp'], 'INT', ['DATE'], 'DEPEND_ON_ARGUMENT'],
[['unix_timestamp'], 'DECIMAL64', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'],
[['unix_timestamp'], 'INT', ['DATEV2'], 'DEPEND_ON_ARGUMENT'],
[['unix_timestamp'], 'DECIMAL64', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['unix_timestamp'], 'DECIMAL64', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['from_unixtime'], 'VARCHAR', ['BIGINT'], 'ALWAYS_NULLABLE'],
[['from_unixtime'], 'VARCHAR', ['BIGINT', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['from_unixtime'], 'VARCHAR', ['BIGINT', 'STRING'], 'ALWAYS_NULLABLE'],
[['from_microsecond'], 'DATETIMEV2', ['BIGINT'], 'ALWAYS_NULLABLE'],
[['from_millisecond'], 'DATETIMEV2', ['BIGINT'], 'ALWAYS_NULLABLE'],
[['from_second'], 'DATETIMEV2', ['BIGINT'], 'ALWAYS_NULLABLE'],
[['second_timestamp'], 'BIGINT', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'],
[['millisecond_timestamp'], 'BIGINT', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'],
[['microsecond_timestamp'], 'BIGINT', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'],
[['now', 'current_timestamp', 'localtime', 'localtimestamp'], 'DATETIME', [], 'DEPEND_ON_ARGUMENT'],
[['now', 'current_timestamp', 'localtime', 'localtimestamp'], 'DATETIMEV2', ['INT'], 'DEPEND_ON_ARGUMENT'],
[['curtime', 'current_time'], 'TIME', [], 'ALWAYS_NOT_NULLABLE'],
[['curdate', 'current_date'], 'DATE', [], 'ALWAYS_NOT_NULLABLE'],
[['utc_timestamp'], 'DATETIME', [], 'ALWAYS_NOT_NULLABLE'],
[['timestamp'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['from_days'], 'DATEV2', ['INT'], 'ALWAYS_NULLABLE'],
[['from_days'], 'DATE', ['INT'], 'ALWAYS_NULLABLE'],
[['last_day'], 'DATE', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['last_day'], 'DATE', ['DATE'], 'ALWAYS_NULLABLE'],
[['last_day'], 'DATEV2', ['DATETIMEV2'], ''],
[['last_day'], 'DATEV2', ['DATEV2'], ''],
[['to_monday'], 'DATEV2', ['DATETIMEV2'], ''],
[['to_monday'], 'DATEV2', ['DATEV2'], ''],
[['to_monday'], 'DATE', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['to_monday'], 'DATE', ['DATE'], 'ALWAYS_NULLABLE'],
[['to_days'], 'INT', ['DATE'], 'ALWAYS_NULLABLE'],
[['date_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['date_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['date_trunc'], 'DATETIMEV2', ['DATETIMEV2', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date_trunc'], 'DATETIME', ['DATETIME', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date_trunc'], 'DATEV2', ['DATEV2', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date_trunc'], 'DATE', ['DATE', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['year'], 'SMALLINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['month'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['quarter'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['dayofweek'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['weekday'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['day', 'dayofmonth'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['dayofyear'], 'SMALLINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['weekofyear'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['yearweek'], 'INT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['yearweek'], 'INT', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['week'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['week'], 'TINYINT', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['hour'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['minute'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['second'], 'TINYINT', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['makedate'], 'DATE', ['INT', 'INT'], 'ALWAYS_NULLABLE'],
[['years_add'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['years_sub'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['months_add', 'add_months'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['months_sub'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['weeks_add'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['weeks_sub'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['days_add', 'date_add', 'adddate'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['days_sub', 'date_sub', 'subdate'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['hours_add'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['hours_sub'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['minutes_add'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['minutes_sub'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['seconds_add'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['seconds_sub'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['datediff'], 'INT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['timediff'], 'TIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['date_format'], 'VARCHAR', ['DATETIME', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date_format'], 'VARCHAR', ['DATE', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date', 'to_date'], 'DATE', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['dayname'], 'VARCHAR', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['monthname'], 'VARCHAR', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['convert_tz'], 'DATETIME', ['DATETIME', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['years_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['months_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['weeks_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['days_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['hours_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['minutes_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['seconds_diff'], 'BIGINT', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIME', ['DATETIME', 'INT'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIME', ['DATETIME', 'INT', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['timestamp'], 'DATETIMEV2', ['DATETIMEV2'], ''],
[['to_days'], 'INT', ['DATEV2'], ''],
[['time_to_sec'], 'INT', ['TIME'], ''],
[['time_to_sec'], 'INT', ['TIMEV2'], ''],
[['sec_to_time'], 'TIME', ['INT'], ''],
[['year'], 'SMALLINT', ['DATETIMEV2'], ''],
[['month'], 'TINYINT', ['DATETIMEV2'], ''],
[['quarter'], 'TINYINT', ['DATETIMEV2'], ''],
[['dayofweek'], 'TINYINT', ['DATETIMEV2'], ''],
[['weekday'], 'TINYINT', ['DATETIMEV2'], ''],
[['day', 'dayofmonth'], 'TINYINT', ['DATETIMEV2'], ''],
[['dayofyear'], 'SMALLINT', ['DATETIMEV2'], ''],
[['weekofyear'], 'TINYINT', ['DATETIMEV2'], ''],
[['yearweek'], 'INT', ['DATETIMEV2'], ''],
[['yearweek'], 'INT', ['DATETIMEV2', 'INT'], ''],
[['week'], 'TINYINT', ['DATETIMEV2'], ''],
[['week'], 'TINYINT', ['DATETIMEV2', 'INT'], ''],
[['hour'], 'TINYINT', ['DATETIMEV2'], ''],
[['minute'], 'TINYINT', ['DATETIMEV2'], ''],
[['second'], 'TINYINT', ['DATETIMEV2'], ''],
[['microsecond'], 'INT', ['DATETIMEV2'], ''],
[['year'], 'SMALLINT', ['DATEV2'], ''],
[['month'], 'TINYINT', ['DATEV2'], ''],
[['quarter'], 'TINYINT', ['DATEV2'], ''],
[['dayofweek'], 'TINYINT', ['DATEV2'], ''],
[['weekday'], 'TINYINT', ['DATEV2'], ''],
[['day', 'dayofmonth'], 'TINYINT', ['DATEV2'], ''],
[['dayofyear'], 'SMALLINT', ['DATEV2'], ''],
[['weekofyear'], 'TINYINT', ['DATEV2'], ''],
[['yearweek'], 'INT', ['DATEV2'], ''],
[['yearweek'], 'INT', ['DATEV2', 'INT'], ''],
[['week'], 'TINYINT', ['DATEV2'], ''],
[['week'], 'TINYINT', ['DATEV2', 'INT'], ''],
[['hour'], 'TINYINT', ['DATEV2'], ''],
[['minute'], 'TINYINT', ['DATEV2'], ''],
[['second'], 'TINYINT', ['DATEV2'], ''],
[['years_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['years_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['months_add', 'add_months'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['months_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['weeks_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['weeks_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['days_add', 'date_add', 'adddate'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['days_sub', 'date_sub', 'subdate'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['hours_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['hours_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['minutes_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['minutes_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['seconds_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['seconds_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['microseconds_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['microseconds_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['milliseconds_add'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['milliseconds_sub'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], ''],
[['years_add'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['years_sub'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['months_add', 'add_months'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['months_sub'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['weeks_add'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['weeks_sub'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['days_add', 'date_add', 'adddate'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['days_sub', 'date_sub', 'subdate'], 'DATEV2', ['DATEV2', 'INT'], ''],
[['days_add', 'date_add', 'adddate'], 'DATE', ['DATE', 'INT'], ''],
[['days_sub', 'date_sub', 'subdate'], 'DATE', ['DATE', 'INT'], ''],
[['hours_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['hours_sub'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['minutes_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['minutes_sub'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['seconds_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['seconds_sub'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['microseconds_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['microseconds_sub'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['milliseconds_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['milliseconds_sub'], 'DATETIMEV2', ['DATEV2', 'INT'], ''],
[['datediff'], 'INT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['timediff'], 'TIMEV2', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['datediff'], 'INT', ['DATETIMEV2', 'DATEV2'], ''],
[['timediff'], 'TIMEV2', ['DATETIMEV2', 'DATEV2'], ''],
[['datediff'], 'INT', ['DATEV2', 'DATETIMEV2'], ''],
[['timediff'], 'TIMEV2', ['DATEV2', 'DATETIMEV2'], ''],
[['datediff'], 'INT', ['DATEV2', 'DATEV2'], ''],
[['timediff'], 'TIMEV2', ['DATEV2', 'DATEV2'], ''],
[['str_to_date'], 'DATETIMEV2', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['str_to_date'], 'DATETIMEV2', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['date_format'], 'VARCHAR', ['DATETIMEV2', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date_format'], 'VARCHAR', ['DATEV2', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['date', 'to_date', 'datev2', 'to_datev2'], 'DATEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['dayname'], 'VARCHAR', ['DATETIMEV2'], ''],
[['monthname'], 'VARCHAR', ['DATETIMEV2'], ''],
[['dayname'], 'VARCHAR', ['DATEV2'], ''],
[['monthname'], 'VARCHAR', ['DATEV2'], ''],
[['convert_tz'], 'DATETIMEV2', ['DATETIMEV2', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['years_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['months_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['weeks_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['days_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['hours_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['minutes_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['seconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['microseconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['milliseconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATETIMEV2'], ''],
[['years_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['months_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['weeks_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['days_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['hours_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['minutes_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['seconds_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['microseconds_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['milliseconds_diff'], 'BIGINT', ['DATEV2', 'DATETIMEV2'], ''],
[['years_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['months_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['weeks_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['days_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['hours_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['minutes_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['seconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['microseconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['milliseconds_diff'], 'BIGINT', ['DATETIMEV2', 'DATEV2'], ''],
[['years_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['months_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['weeks_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['days_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['hours_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['minutes_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['seconds_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['microseconds_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['milliseconds_diff'], 'BIGINT', ['DATEV2', 'DATEV2'], ''],
[['year_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['hour_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['hour_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['minute_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['minute_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['second_floor'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['second_ceil'], 'DATETIMEV2', ['DATETIMEV2', 'INT', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['year_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['year_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['month_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['month_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['week_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['week_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['day_floor'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATEV2', ['DATEV2', 'INT'], 'ALWAYS_NULLABLE'],
[['day_ceil'], 'DATEV2', ['DATEV2', 'INT', 'DATEV2'], 'ALWAYS_NULLABLE']
],
# Math builtin functions
# Please make sure functions are ordered by alphabetical order
"Math": [
[['abs'], 'DOUBLE', ['DOUBLE'], ''],
[['abs'], 'FLOAT', ['FLOAT'], ''],
[['abs'], 'LARGEINT', ['LARGEINT'], ''],
[['abs'], 'LARGEINT', ['BIGINT'], ''],
[['abs'], 'INT', ['SMALLINT'], ''],
[['abs'], 'BIGINT', ['INT'], ''],
[['abs'], 'SMALLINT', ['TINYINT'], ''],
[['abs'], 'DECIMALV2', ['DECIMALV2'], ''],
[['abs'], 'DECIMAL32', ['DECIMAL32'], ''],
[['abs'], 'DECIMAL64', ['DECIMAL64'], ''],
[['abs'], 'DECIMAL128', ['DECIMAL128'], ''],
[['acos'], 'DOUBLE', ['DOUBLE'], ''],
[['atan'], 'DOUBLE', ['DOUBLE'], ''],
[['atan2'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], ''],
[['asin'], 'DOUBLE', ['DOUBLE'], ''],
[['bin'], 'VARCHAR', ['BIGINT'], ''],
[['cbrt'], 'DOUBLE', ['DOUBLE'], ''],
[['ceil', 'ceiling', 'dceil'], 'DOUBLE', ['DOUBLE'], ''],
[['ceil', 'ceiling', 'dceil'], 'DOUBLE', ['DOUBLE', 'INT'], ''],
[['ceil', 'ceiling', 'dceil'], 'DECIMAL32', ['DECIMAL32'], ''],
[['ceil', 'ceiling', 'dceil'], 'DECIMAL64', ['DECIMAL64'], ''],
[['ceil', 'ceiling', 'dceil'], 'DECIMAL128', ['DECIMAL128'], ''],
[['ceil', 'dceil'], 'DECIMAL32', ['DECIMAL32', 'INT'], ''],
[['ceil', 'dceil'], 'DECIMAL64', ['DECIMAL64', 'INT'], ''],
[['ceil', 'dceil'], 'DECIMAL128', ['DECIMAL128', 'INT'], ''],
[['conv'], 'VARCHAR', ['BIGINT', 'TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['conv'], 'VARCHAR', ['VARCHAR', 'TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['conv'], 'VARCHAR', ['STRING', 'TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['cos'], 'DOUBLE', ['DOUBLE'], ''],
[['cosh'], 'DOUBLE', ['DOUBLE'], ''],
[['degrees'], 'DOUBLE', ['DOUBLE'], ''],
[['e'], 'DOUBLE', [], 'ALWAYS_NOT_NULLABLE'],
[['exp', 'dexp'], 'DOUBLE', ['DOUBLE'], ''],
[['floor', 'dfloor'], 'DOUBLE', ['DOUBLE'], ''],
[['floor', 'dfloor'], 'DOUBLE', ['DOUBLE', 'INT'], ''],
[['floor', 'dfloor'], 'DECIMAL32', ['DECIMAL32'], ''],
[['floor', 'dfloor'], 'DECIMAL32', ['DECIMAL32', 'INT'], ''],
[['floor', 'dfloor'], 'DECIMAL64', ['DECIMAL64'], ''],
[['floor', 'dfloor'], 'DECIMAL64', ['DECIMAL64', 'INT'], ''],
[['floor', 'dfloor'], 'DECIMAL128', ['DECIMAL128'], ''],
[['floor', 'dfloor'], 'DECIMAL128', ['DECIMAL128', 'INT'], ''],
[['greatest'], 'TINYINT', ['TINYINT', '...'], ''],
[['greatest'], 'SMALLINT', ['SMALLINT', '...'], ''],
[['greatest'], 'INT', ['INT', '...'], ''],
[['greatest'], 'BIGINT', ['BIGINT', '...'], ''],
[['greatest'], 'LARGEINT', ['LARGEINT', '...'], ''],
[['greatest'], 'FLOAT', ['FLOAT', '...'], ''],
[['greatest'], 'DOUBLE', ['DOUBLE', '...'], ''],
[['greatest'], 'DECIMALV2', ['DECIMALV2', '...'], ''],
[['greatest'], 'DECIMAL32', ['DECIMAL32', '...'], ''],
[['greatest'], 'DECIMAL64', ['DECIMAL64', '...'], ''],
[['greatest'], 'DECIMAL128', ['DECIMAL128', '...'], ''],
[['greatest'], 'DATE', ['DATE', '...'], ''],
[['greatest'], 'DATEV2', ['DATEV2', '...'], ''],
[['greatest'], 'DATETIME', ['DATETIME', '...'], ''],
[['greatest'], 'DATETIMEV2', ['DATETIMEV2', '...'], ''],
[['greatest'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['greatest'], 'STRING', ['STRING', '...'], ''],
[['hex'], 'VARCHAR', ['BIGINT'], ''],
[['hex'], 'VARCHAR', ['VARCHAR'], ''],
[['hex'], 'STRING', ['STRING'], ''],
[['ln', 'dlog1'], 'DOUBLE', ['DOUBLE'], 'ALWAYS_NULLABLE'],
[['log'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['log2'], 'DOUBLE', ['DOUBLE'], 'ALWAYS_NULLABLE'],
[['log10', 'dlog10'], 'DOUBLE', ['DOUBLE'], 'ALWAYS_NULLABLE'],
[['least'], 'TINYINT', ['TINYINT', '...'], ''],
[['least'], 'SMALLINT', ['SMALLINT', '...'], ''],
[['least'], 'INT', ['INT', '...'], ''],
[['least'], 'BIGINT', ['BIGINT', '...'], ''],
[['least'], 'LARGEINT', ['LARGEINT', '...'], ''],
[['least'], 'FLOAT', ['FLOAT', '...'], ''],
[['least'], 'DOUBLE', ['DOUBLE', '...'], ''],
[['least'], 'DATE', ['DATE', '...'], ''],
[['least'], 'DATEV2', ['DATEV2', '...'], ''],
[['least'], 'DATETIME', ['DATETIME', '...'], ''],
[['least'], 'DATETIMEV2', ['DATETIMEV2', '...'], ''],
[['least'], 'DECIMALV2', ['DECIMALV2', '...'], ''],
[['least'], 'DECIMAL32', ['DECIMAL32', '...'], ''],
[['least'], 'DECIMAL64', ['DECIMAL64', '...'], ''],
[['least'], 'DECIMAL128', ['DECIMAL128', '...'], ''],
[['least'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['least'], 'STRING', ['STRING', '...'], ''],
[['mod'], 'TINYINT', ['TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['mod'], 'SMALLINT', ['SMALLINT', 'SMALLINT'], 'ALWAYS_NULLABLE'],
[['mod'], 'INT', ['INT', 'INT'], 'ALWAYS_NULLABLE'],
[['mod'], 'BIGINT', ['BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['mod'], 'LARGEINT', ['LARGEINT', 'LARGEINT'], 'ALWAYS_NULLABLE'],
[['mod'], 'DECIMALV2', ['DECIMALV2', 'DECIMALV2'], 'ALWAYS_NULLABLE'],
[['mod'], 'DECIMAL32', ['DECIMAL32', 'DECIMAL32'], 'ALWAYS_NULLABLE'],
[['mod'], 'DECIMAL64', ['DECIMAL64', 'DECIMAL64'], 'ALWAYS_NULLABLE'],
[['mod'], 'DECIMAL128', ['DECIMAL128', 'DECIMAL128'], 'ALWAYS_NULLABLE'],
[['mod', 'fmod'], 'FLOAT', ['FLOAT', 'FLOAT'], 'ALWAYS_NULLABLE'],
[['mod', 'fmod'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['negative'], 'BIGINT', ['BIGINT'], ''],
[['negative'], 'DOUBLE', ['DOUBLE'], ''],
[['negative'], 'DECIMALV2', ['DECIMALV2'], ''],
[['negative'], 'DECIMAL32', ['DECIMAL32'], ''],
[['negative'], 'DECIMAL64', ['DECIMAL64'], ''],
[['negative'], 'DECIMAL128', ['DECIMAL128'], ''],
[['pi'], 'DOUBLE', [], 'ALWAYS_NOT_NULLABLE'],
[['pmod'], 'BIGINT', ['BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['pmod'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['positive'], 'BIGINT', ['BIGINT'], ''],
[['positive'], 'DOUBLE', ['DOUBLE'], ''],
[['positive'], 'DECIMALV2', ['DECIMALV2'], ''],
[['positive'], 'DECIMAL32', ['DECIMAL32'], ''],
[['positive'], 'DECIMAL64', ['DECIMAL64'], ''],
[['positive'], 'DECIMAL128', ['DECIMAL128'], ''],
[['pow', 'power', 'dpow', 'fpow'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], ''],
[['radians'], 'DOUBLE', ['DOUBLE'], ''],
[['rand', 'random'], 'DOUBLE', [], 'ALWAYS_NOT_NULLABLE'],
[['rand', 'random'], 'DOUBLE', ['BIGINT'], ''],
[['rand', 'random'], 'BIGINT', ['BIGINT', 'BIGINT'], ''],
[['round', 'dround'], 'DOUBLE', ['DOUBLE'], ''],
[['round', 'dround'], 'DOUBLE', ['DOUBLE', 'INT'], ''],
[['round', 'dround'], 'DECIMAL32', ['DECIMAL32'], ''],
[['round', 'dround'], 'DECIMAL32', ['DECIMAL32', 'INT'], ''],
[['round', 'dround'], 'DECIMAL64', ['DECIMAL64'], ''],
[['round', 'dround'], 'DECIMAL64', ['DECIMAL64', 'INT'], ''],
[['round', 'dround'], 'DECIMAL128', ['DECIMAL128'], ''],
[['round', 'dround'], 'DECIMAL128', ['DECIMAL128', 'INT'], ''],
[['round_bankers'], 'DOUBLE', ['DOUBLE'], ''],
[['round_bankers'], 'DOUBLE', ['DOUBLE', 'INT'], ''],
[['round_bankers'], 'DECIMAL32', ['DECIMAL32'], ''],
[['round_bankers'], 'DECIMAL32', ['DECIMAL32', 'INT'], ''],
[['round_bankers'], 'DECIMAL64', ['DECIMAL64'], ''],
[['round_bankers'], 'DECIMAL64', ['DECIMAL64', 'INT'], ''],
[['round_bankers'], 'DECIMAL128', ['DECIMAL128'], ''],
[['round_bankers'], 'DECIMAL128', ['DECIMAL128', 'INT'], ''],
[['round_bankers', 'round_bankers'], 'DOUBLE', ['DOUBLE', 'INT'], ''],
[['sign'], 'TINYINT', ['DOUBLE'], ''],
[['sin'], 'DOUBLE', ['DOUBLE'], ''],
[['sqrt', 'dsqrt'], 'DOUBLE', ['DOUBLE'], ''],
[['tan'], 'DOUBLE', ['DOUBLE'], ''],
[['tanh'], 'DOUBLE', ['DOUBLE'], ''],
[['truncate'], 'DOUBLE', ['DOUBLE'], ''],
[['truncate'], 'DOUBLE', ['DOUBLE', 'INT'], ''],
[['truncate'], 'DECIMAL32', ['DECIMAL32', 'INT'], ''],
[['truncate'], 'DECIMAL64', ['DECIMAL64', 'INT'], ''],
[['truncate'], 'DECIMAL128', ['DECIMAL128', 'INT'], ''],
[['unhex'], 'VARCHAR', ['VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['unhex'], 'STRING', ['STRING'], 'DEPEND_ON_ARGUMENT']
],
# Conditional Functions
# Some of these have empty symbols because the BE special-cases them based on the
# function name
"Conditional": [
[['if'], 'BOOLEAN', ['BOOLEAN', 'BOOLEAN', 'BOOLEAN'], 'CUSTOM'],
[['if'], 'TINYINT', ['BOOLEAN', 'TINYINT', 'TINYINT'], 'CUSTOM'],
[['if'], 'SMALLINT', ['BOOLEAN', 'SMALLINT', 'SMALLINT'], 'CUSTOM'],
[['if'], 'INT', ['BOOLEAN', 'INT', 'INT'], 'CUSTOM'],
[['if'], 'BIGINT', ['BOOLEAN', 'BIGINT', 'BIGINT'], 'CUSTOM'],
[['if'], 'LARGEINT', ['BOOLEAN', 'LARGEINT', 'LARGEINT'], 'CUSTOM'],
[['if'], 'FLOAT', ['BOOLEAN', 'FLOAT', 'FLOAT'], 'CUSTOM'],
[['if'], 'DOUBLE', ['BOOLEAN', 'DOUBLE', 'DOUBLE'], 'CUSTOM'],
[['if'], 'DATETIME', ['BOOLEAN', 'DATETIME', 'DATETIME'], 'CUSTOM'],
[['if'], 'DATE', ['BOOLEAN', 'DATE', 'DATE'], 'CUSTOM'],
[['if'], 'DATETIMEV2', ['BOOLEAN', 'DATETIMEV2', 'DATETIMEV2'], 'CUSTOM'],
[['if'], 'DATEV2', ['BOOLEAN', 'DATEV2', 'DATEV2'], 'CUSTOM'],
[['if'], 'DECIMALV2', ['BOOLEAN', 'DECIMALV2', 'DECIMALV2'], 'CUSTOM'],
[['if'], 'DECIMAL32', ['BOOLEAN', 'DECIMAL32', 'DECIMAL32'], 'CUSTOM'],
[['if'], 'DECIMAL64', ['BOOLEAN', 'DECIMAL64', 'DECIMAL64'], 'CUSTOM'],
[['if'], 'DECIMAL128', ['BOOLEAN', 'DECIMAL128', 'DECIMAL128'], 'CUSTOM'],
[['if'], 'BITMAP', ['BOOLEAN', 'BITMAP', 'BITMAP'], 'CUSTOM'],
[['if'], 'HLL', ['BOOLEAN', 'HLL', 'HLL'], 'CUSTOM'],
[['if'], 'JSONB', ['BOOLEAN', 'JSONB', 'JSONB'], 'CUSTOM'],
# The priority of varchar should be lower than decimal in IS_SUPERTYPE_OF mode.
[['if'], 'VARCHAR', ['BOOLEAN', 'VARCHAR', 'VARCHAR'], 'CUSTOM'],
[['if'], 'STRING', ['BOOLEAN', 'STRING', 'STRING'], 'CUSTOM'],
[['if'], 'ARRAY_BOOLEAN', ['BOOLEAN', 'ARRAY_BOOLEAN', 'ARRAY_BOOLEAN'], 'CUSTOM'],
[['if'], 'ARRAY_TINYINT', ['BOOLEAN', 'ARRAY_TINYINT', 'ARRAY_TINYINT'], 'CUSTOM'],
[['if'], 'ARRAY_SMALLINT', ['BOOLEAN', 'ARRAY_SMALLINT', 'ARRAY_SMALLINT'], 'CUSTOM'],
[['if'], 'ARRAY_INT', ['BOOLEAN', 'ARRAY_INT', 'ARRAY_INT'], 'CUSTOM'],
[['if'], 'ARRAY_BIGINT', ['BOOLEAN', 'ARRAY_BIGINT', 'ARRAY_BIGINT'], 'CUSTOM'],
[['if'], 'ARRAY_LARGEINT', ['BOOLEAN', 'ARRAY_LARGEINT', 'ARRAY_LARGEINT'], 'CUSTOM'],
[['if'], 'ARRAY_FLOAT', ['BOOLEAN', 'ARRAY_FLOAT', 'ARRAY_FLOAT'], 'CUSTOM'],
[['if'], 'ARRAY_DOUBLE', ['BOOLEAN', 'ARRAY_DOUBLE', 'ARRAY_DOUBLE'], 'CUSTOM'],
[['if'], 'ARRAY_DATETIME', ['BOOLEAN', 'ARRAY_DATETIME', 'ARRAY_DATETIME'], 'CUSTOM'],
[['if'], 'ARRAY_DATE', ['BOOLEAN', 'ARRAY_DATE', 'ARRAY_DATE'], 'CUSTOM'],
[['if'], 'ARRAY_DATETIMEV2', ['BOOLEAN', 'ARRAY_DATETIMEV2', 'ARRAY_DATETIMEV2'], 'CUSTOM'],
[['if'], 'ARRAY_DATEV2', ['BOOLEAN', 'ARRAY_DATEV2', 'ARRAY_DATEV2'], 'CUSTOM'],
[['if'], 'ARRAY_DECIMALV2', ['BOOLEAN', 'ARRAY_DECIMALV2', 'ARRAY_DECIMALV2'], 'CUSTOM'],
[['if'], 'ARRAY_VARCHAR', ['BOOLEAN', 'ARRAY_VARCHAR', 'ARRAY_VARCHAR'], 'CUSTOM'],
[['if'], 'ARRAY_STRING', ['BOOLEAN', 'ARRAY_STRING', 'ARRAY_STRING'], 'CUSTOM'],
[['nullif'], 'BOOLEAN', ['BOOLEAN', 'BOOLEAN'], 'ALWAYS_NULLABLE'],
[['nullif'], 'TINYINT', ['TINYINT', 'TINYINT'], 'ALWAYS_NULLABLE'],
[['nullif'], 'SMALLINT', ['SMALLINT', 'SMALLINT'], 'ALWAYS_NULLABLE'],
[['nullif'], 'INT', ['INT', 'INT'], 'ALWAYS_NULLABLE'],
[['nullif'], 'BIGINT', ['BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['nullif'], 'LARGEINT', ['LARGEINT', 'LARGEINT'], 'ALWAYS_NULLABLE'],
[['nullif'], 'FLOAT', ['FLOAT', 'FLOAT'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DATETIME', ['DATETIME', 'DATETIME'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DATE', ['DATE', 'DATE'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DATEV2', ['DATEV2', 'DATEV2'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DECIMALV2', ['DECIMALV2', 'DECIMALV2'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DECIMAL32', ['DECIMAL32', 'DECIMAL32'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DECIMAL64', ['DECIMAL64', 'DECIMAL64'], 'ALWAYS_NULLABLE'],
[['nullif'], 'DECIMAL128', ['DECIMAL128', 'DECIMAL128'], 'ALWAYS_NULLABLE'],
# The priority of varchar should be lower than decimal in IS_SUPERTYPE_OF mode.
[['nullif'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['nullif'], 'STRING', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['is_null_pred'], "BOOLEAN", ['T', '...'], 'ALWAYS_NULLABLE', ['T']],
[['is_not_null_pred'], "BOOLEAN", ['T', '...'], 'ALWAYS_NULLABLE', ['T']],
[['ifnull', 'nvl'], 'BOOLEAN', ['BOOLEAN', 'BOOLEAN'], 'CUSTOM'],
[['ifnull', 'nvl'], 'TINYINT', ['TINYINT', 'TINYINT'], 'CUSTOM'],
[['ifnull', 'nvl'], 'SMALLINT', ['SMALLINT', 'SMALLINT'], 'CUSTOM'],
[['ifnull', 'nvl'], 'INT', ['INT', 'INT'], 'CUSTOM'],
[['ifnull', 'nvl'], 'BIGINT', ['BIGINT', 'BIGINT'], 'CUSTOM'],
[['ifnull', 'nvl'], 'LARGEINT', ['LARGEINT', 'LARGEINT'], 'CUSTOM'],
[['ifnull', 'nvl'], 'FLOAT', ['FLOAT', 'FLOAT'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DOUBLE', ['DOUBLE', 'DOUBLE'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DATE', ['DATE', 'DATE'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DATETIME', ['DATETIME', 'DATETIME'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DATETIME', ['DATE', 'DATETIME'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DATETIME', ['DATETIME', 'DATE'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DATEV2', ['DATEV2', 'DATEV2'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DATETIMEV2', ['DATETIMEV2', 'DATETIMEV2'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DECIMALV2', ['DECIMALV2', 'DECIMALV2'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DECIMAL32', ['DECIMAL32', 'DECIMAL32'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DECIMAL64', ['DECIMAL64', 'DECIMAL64'], 'CUSTOM'],
[['ifnull', 'nvl'], 'DECIMAL128', ['DECIMAL128', 'DECIMAL128'], 'CUSTOM'],
[['ifnull', 'nvl'], 'BITMAP', ['BITMAP', 'BITMAP'], 'CUSTOM'],
# The priority of varchar should be lower than decimal in IS_SUPERTYPE_OF mode.
[['ifnull', 'nvl'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], 'CUSTOM'],
[['ifnull', 'nvl'], 'STRING', ['STRING', 'STRING'], 'CUSTOM'],
[['coalesce'], 'BOOLEAN', ['BOOLEAN', '...'], 'CUSTOM'],
[['coalesce'], 'TINYINT', ['TINYINT', '...'], 'CUSTOM'],
[['coalesce'], 'SMALLINT', ['SMALLINT', '...'], 'CUSTOM'],
[['coalesce'], 'INT', ['INT', '...'], 'CUSTOM'],
[['coalesce'], 'BIGINT', ['BIGINT', '...'], 'CUSTOM'],
[['coalesce'], 'LARGEINT', ['LARGEINT', '...'], 'CUSTOM'],
[['coalesce'], 'FLOAT', ['FLOAT', '...'], 'CUSTOM'],
[['coalesce'], 'DOUBLE', ['DOUBLE', '...'], 'CUSTOM'],
[['coalesce'], 'DATETIME', ['DATETIME', '...'], 'CUSTOM'],
[['coalesce'], 'DATE', ['DATE', '...'], 'CUSTOM'],
[['coalesce'], 'DATETIMEV2', ['DATETIMEV2', '...'], 'CUSTOM'],
[['coalesce'], 'DATEV2', ['DATEV2', '...'], 'CUSTOM'],
[['coalesce'], 'DECIMALV2', ['DECIMALV2', '...'], 'CUSTOM'],
[['coalesce'], 'DECIMAL32', ['DECIMAL32', '...'], 'CUSTOM'],
[['coalesce'], 'DECIMAL64', ['DECIMAL64', '...'], 'CUSTOM'],
[['coalesce'], 'DECIMAL128', ['DECIMAL128', '...'], 'CUSTOM'],
[['coalesce'], 'BITMAP', ['BITMAP', '...'], 'CUSTOM'],
# The priority of varchar should be lower than decimal in IS_SUPERTYPE_OF mode.
[['coalesce'], 'VARCHAR', ['VARCHAR', '...'], 'CUSTOM'],
[['coalesce'], 'STRING', ['STRING', '...'], 'CUSTOM'],
# esquery's first arg is suitable for all types
[['esquery'], 'BOOLEAN', ['BOOLEAN', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['TINYINT', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['SMALLINT', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['INT', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['BIGINT', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['LARGEINT', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['FLOAT', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DOUBLE', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DATE', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DATETIME', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['CHAR', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['JSONB', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DECIMALV2', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DECIMAL32', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DECIMAL64', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DECIMAL128', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['TIME', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DATEV2', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['DATETIMEV2', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['TIMEV2', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['ARRAY<T>', 'VARCHAR'], '', ['T']],
[['esquery'], 'BOOLEAN', ['MAP', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['STRING', 'VARCHAR'], ''],
[['esquery'], 'BOOLEAN', ['VARIANT', 'VARCHAR'], ''],
# used for accept graph sql
[['g'], 'BOOLEAN', ['VARCHAR'], '']
],
# String builtin functions
"String": [
[['decode_as_varchar'], 'VARCHAR', ['SMALLINT'], 'DEPEND_ON_ARGUMENT'],
[['decode_as_varchar'], 'VARCHAR', ['INT'], 'DEPEND_ON_ARGUMENT'],
[['decode_as_varchar'], 'VARCHAR', ['BIGINT'], 'DEPEND_ON_ARGUMENT'],
[['decode_as_varchar'], 'VARCHAR', ['LARGEINT'], 'DEPEND_ON_ARGUMENT'],
[['encode_as_smallint'], 'SMALLINT', ['VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['encode_as_int'], 'INT', ['VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['encode_as_bigint'], 'BIGINT', ['VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['encode_as_largeint'], 'LARGEINT', ['VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['substr', 'substring'], 'VARCHAR', ['VARCHAR', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['substr', 'substring'], 'VARCHAR', ['VARCHAR', 'INT', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['mask'], 'STRING', ['STRING', '...'], ''],
[['mask_first_n'], 'STRING', ['STRING'], ''],
[['mask_first_n'], 'STRING', ['STRING', 'INT'], ''],
[['mask_last_n'], 'STRING', ['STRING'], ''],
[['mask_last_n'], 'STRING', ['STRING', 'INT'], ''],
[['strleft', 'left'], 'VARCHAR', ['VARCHAR', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['strright', 'right'], 'VARCHAR', ['VARCHAR', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['ends_with'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], ''],
[['starts_with'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], ''],
[['null_or_empty'], 'BOOLEAN', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['not_null_or_empty'], 'BOOLEAN', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['space'], 'VARCHAR', ['INT'], ''],
[['repeat'], 'VARCHAR', ['VARCHAR', 'INT'], 'ALWAYS_NULLABLE'],
[['lpad'], 'VARCHAR', ['VARCHAR', 'INT', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['rpad'], 'VARCHAR', ['VARCHAR', 'INT', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['append_trailing_char_if_absent'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['length'], 'INT', ['VARCHAR'], ''],
[['crc32'], 'BIGINT', ['VARCHAR'], ''],
[['bit_length'], 'INT', ['VARCHAR'], ''],
[['char_length', 'character_length'], 'INT', ['VARCHAR'], ''],
[['lower', 'lcase'], 'VARCHAR', ['VARCHAR'], ''],
[['upper', 'ucase'], 'VARCHAR', ['VARCHAR'], ''],
[['quote'], 'VARCHAR', ['VARCHAR'], ''],
[['auto_partition_name'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['initcap'], 'VARCHAR', ['VARCHAR'], ''],
[['trim'], 'VARCHAR', ['VARCHAR','VARCHAR'], ''],
[['trim'], 'VARCHAR', ['VARCHAR'], ''],
[['ltrim'], 'VARCHAR', ['VARCHAR'], ''],
[['ltrim'], 'VARCHAR', ['VARCHAR','VARCHAR'], ''],
[['rtrim'], 'VARCHAR', ['VARCHAR'], ''],
[['rtrim'], 'VARCHAR', ['VARCHAR','VARCHAR'], ''],
[['ascii'], 'INT', ['VARCHAR'], ''],
[['instr'], 'INT', ['VARCHAR', 'VARCHAR'], ''],
[['locate'], 'INT', ['VARCHAR', 'VARCHAR'], ''],
[['locate'], 'INT', ['VARCHAR', 'VARCHAR', 'INT'], ''],
[['regexp_extract'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['regexp_replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['regexp_replace_one'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['regexp_extract_all'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['concat'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['elt'], 'VARCHAR', ['INT', 'VARCHAR', '...'], 'ALWAYS_NULLABLE'],
[['elt'], 'STRING', ['INT', 'STRING', '...'], 'ALWAYS_NULLABLE'],
[['replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], ''],
[['concat_ws'], 'VARCHAR', ['VARCHAR', 'VARCHAR', '...'], 'CUSTOM'],
[['concat_ws'], 'VARCHAR', ['VARCHAR', 'ARRAY_VARCHAR'], 'CUSTOM'],
[['find_in_set'], 'INT', ['VARCHAR', 'VARCHAR'], ''],
[['parse_url'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['parse_url'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['money_format'], 'VARCHAR', ['BIGINT'], ''],
[['money_format'], 'VARCHAR', ['LARGEINT'], ''],
[['money_format'], 'VARCHAR', ['DOUBLE'], ''],
[['money_format'], 'VARCHAR', ['DECIMALV2'], ''],
[['money_format'], 'VARCHAR', ['DECIMAL32'], ''],
[['money_format'], 'VARCHAR', ['DECIMAL64'], ''],
[['money_format'], 'VARCHAR', ['DECIMAL128'], ''],
[['split_by_string'],'ARRAY_VARCHAR',['STRING','STRING'], ''],
[['split_by_regexp'],'ARRAY_VARCHAR',['STRING','STRING'], ''],
[['split_by_regexp'],'ARRAY_VARCHAR',['STRING','STRING', 'INT'], ''],
[['split_part'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'INT'], 'ALWAYS_NULLABLE'],
[['substring_index'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['extract_url_parameter'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], ''],
[['url_decode'], 'VARCHAR', ['VARCHAR'], ''],
[['random_bytes'], 'VARCHAR', ['INT'], ''],
[['sub_replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'INT'], 'ALWAYS_NULLABLE'],
[['sub_replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'INT', 'INT'], 'ALWAYS_NULLABLE'],
[['char'], 'VARCHAR', ['VARCHAR', 'INT', '...'], 'ALWAYS_NULLABLE'],
[['strcmp'], 'INT', ['VARCHAR', 'VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['overlay'], 'VARCHAR', ['VARCHAR', 'INT', 'INT', 'VARCHAR'], ''],
[['count_substrings'], 'INT', ['STRING', 'STRING'], 'DEPEND_ON_ARGUMENT'],
[['substr', 'substring'], 'STRING', ['STRING', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['substr', 'substring'], 'STRING', ['STRING', 'INT', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['strleft', 'left'], 'STRING', ['STRING', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['strright', 'right'], 'STRING', ['STRING', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['ends_with'], 'BOOLEAN', ['STRING', 'STRING'], ''],
[['starts_with'], 'BOOLEAN', ['STRING', 'STRING'], ''],
[['null_or_empty'], 'BOOLEAN', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['not_null_or_empty'], 'BOOLEAN', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['space'], 'STRING', ['INT'], ''],
[['repeat'], 'STRING', ['STRING', 'INT'], 'ALWAYS_NULLABLE'],
[['lpad'], 'STRING', ['STRING', 'INT', 'STRING'], 'ALWAYS_NULLABLE'],
[['rpad'], 'STRING', ['STRING', 'INT', 'STRING'], 'ALWAYS_NULLABLE'],
[['format_round'], 'STRING', ['BIGINT'], ''],
[['format_round'], 'STRING', ['LARGEINT'], ''],
[['format_round'], 'STRING', ['DOUBLE', 'INT'], ''],
[['format_round'], 'STRING', ['DECIMAL32', 'INT'], ''],
[['format_round'], 'STRING', ['DECIMAL64', 'INT'], ''],
[['format_round'], 'STRING', ['DECIMAL128', 'INT'], ''],
[['append_trailing_char_if_absent'], 'STRING', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['length'], 'INT', ['STRING'], ''],
[['crc32'], 'BIGINT', ['STRING'], ''],
[['bit_length'], 'INT', ['STRING'], ''],
[['char_length', 'character_length'], 'INT', ['STRING'], ''],
[['lower', 'lcase'], 'STRING', ['STRING'], ''],
[['upper', 'ucase'], 'STRING', ['STRING'], ''],
[['quote'], 'STRING', ['STRING'], ''],
[['trim'], 'STRING', ['STRING'], ''],
[['trim'], 'STRING', ['STRING','STRING'], ''],
[['ltrim'], 'STRING', ['STRING'], ''],
[['ltrim'], 'STRING', ['STRING','STRING'], ''],
[['rtrim'], 'STRING', ['STRING'], ''],
[['rtrim'], 'STRING', ['STRING','STRING'], ''],
[['auto_partition_name'], 'STRING', ['STRING', '...'], ''],
[['ascii'], 'INT', ['STRING'], ''],
[['instr'], 'INT', ['STRING', 'STRING'], ''],
[['locate'], 'INT', ['STRING', 'STRING'], ''],
[['locate'], 'INT', ['STRING', 'STRING', 'INT'], ''],
[['regexp_extract'], 'STRING', ['STRING', 'STRING', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['regexp_replace'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['regexp_replace_one'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['regexp_extract_all'], 'STRING', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['concat'], 'STRING', ['STRING', '...'], ''],
[['replace'], 'STRING', ['STRING', 'STRING', 'STRING'], ''],
[['concat_ws'], 'STRING', ['STRING', 'STRING', '...'], 'CUSTOM'],
[['find_in_set'], 'INT', ['STRING', 'STRING'], ''],
[['parse_url'], 'STRING', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['parse_url'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['money_format'], 'STRING', ['BIGINT'], ''],
[['money_format'], 'STRING', ['LARGEINT'], ''],
[['money_format'], 'STRING', ['DOUBLE'], ''],
[['money_format'], 'STRING', ['DECIMALV2'], ''],
[['money_format'], 'STRING', ['DECIMAL32'], ''],
[['money_format'], 'STRING', ['DECIMAL64'], ''],
[['money_format'], 'STRING', ['DECIMAL128'], ''],
[['split_part'], 'STRING', ['STRING', 'STRING', 'INT'], 'ALWAYS_NULLABLE'],
[['substring_index'], 'STRING', ['STRING', 'STRING', 'INT'], 'DEPEND_ON_ARGUMENT'],
[['url_decode'], 'STRING', ['STRING'], ''],
[['random_bytes'], 'STRING', ['INT'], ''],
[['overlay'], 'STRING', ['STRING', 'INT', 'INT', 'STRING'], ''],
[['strcmp'], 'INT', ['STRING', 'STRING'], 'DEPEND_ON_ARGUMENT']
],
# width_bucket
"Width_Bucket": [
[['width_bucket'], 'BIGINT', ['TINYINT','TINYINT','TINYINT','TINYINT'], ''],
[['width_bucket'], 'BIGINT', ['SMALLINT','SMALLINT','SMALLINT','SMALLINT'], ''],
[['width_bucket'], 'BIGINT', ['INT','INT','INT','INT'], ''],
[['width_bucket'], 'BIGINT', ['BIGINT','BIGINT','BIGINT','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['FLOAT','FLOAT','FLOAT','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DOUBLE','DOUBLE','DOUBLE','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DECIMAL32','DECIMAL32','DECIMAL32','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DECIMAL64','DECIMAL64','DECIMAL64','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DECIMAL128','DECIMAL128','DECIMAL128','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DECIMALV2','DECIMALV2','DECIMALV2','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DATE','DATE','DATE','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DATEV2','DATEV2','DATEV2','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DATETIME','DATETIME','DATETIME','BIGINT'], ''],
[['width_bucket'], 'BIGINT', ['DATETIMEV2','DATETIMEV2','DATETIMEV2','BIGINT'], '']
],
# Utility functions
"Utility": [
[['convert_to'], 'VARCHAR', ['VARCHAR','VARCHAR'], ''],
[['sleep'], 'BOOLEAN', ['INT'], ''],
[['version'], 'VARCHAR', [], 'ALWAYS_NOT_NULLABLE'],
[['field'], 'INT', ['TINYINT', '...'], ''],
[['field'], 'INT', ['SMALLINT', '...'], ''],
[['field'], 'INT', ['INT', '...'], ''],
[['field'], 'INT', ['BIGINT', '...'], ''],
[['field'], 'INT', ['LARGEINT', '...'], ''],
[['field'], 'INT', ['FLOAT', '...'], ''],
[['field'], 'INT', ['DOUBLE', '...'], ''],
[['field'], 'INT', ['DECIMALV2', '...'], ''],
[['field'], 'INT', ['DATEV2', '...'], ''],
[['field'], 'INT', ['DATETIMEV2', '...'], ''],
[['field'], 'INT', ['VARCHAR', '...'], ''],
[['field'], 'INT', ['STRING', '...'], '']
],
# JSON functions
"Json": [
[['jsonb_parse'], 'JSONB', ['VARCHAR'], ''],
[['jsonb_parse_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_parse_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''],
[['jsonb_parse_error_to_invalid'], 'JSONB', ['VARCHAR'], ''],
[['jsonb_parse_nullable'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_parse_nullable_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_parse_nullable_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_parse_nullable_error_to_invalid'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_parse_notnull'], 'JSONB', ['VARCHAR'], ''],
[['jsonb_parse_notnull_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''],
[['jsonb_parse_notnull_error_to_invalid'], 'JSONB', ['VARCHAR'], ''],
[['jsonb_exists_path'], 'BOOLEAN', ['JSONB', 'VARCHAR'], ''],
[['jsonb_exists_path'], 'BOOLEAN', ['JSONB', 'STRING'], ''],
[['jsonb_type'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_type'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_keys'], 'ARRAY_STRING', ['JSONB'], 'ALWAYS_NULLABLE'],
[['jsonb_keys'], 'ARRAY_STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_keys'], 'ARRAY_STRING', ['JSONB'], 'ALWAYS_NULLABLE'],
[['json_keys'], 'ARRAY_STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract'], 'JSONB', ['JSONB', 'VARCHAR', '...'], 'ALWAYS_NULLABLE'],
[['jsonb_extract'], 'JSONB', ['JSONB', 'STRING', '...'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_isnull'], 'BOOLEAN', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_isnull'], 'BOOLEAN', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_bool'], 'BOOLEAN', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_bool'], 'BOOLEAN', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_int'], 'INT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_int'], 'INT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_bigint'], 'BIGINT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_bigint'], 'BIGINT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_largeint'], 'LARGEINT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_largeint'], 'LARGEINT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_double'], 'DOUBLE', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_double'], 'DOUBLE', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_string'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['jsonb_extract_string'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_parse'], 'JSONB', ['VARCHAR'], ''],
[['json_parse_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_parse_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''],
[['json_parse_error_to_invalid'], 'JSONB', ['VARCHAR'], ''],
[['json_parse_nullable'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_parse_nullable_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_parse_nullable_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_parse_nullable_error_to_invalid'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_parse_notnull'], 'JSONB', ['VARCHAR'], ''],
[['json_parse_notnull_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''],
[['json_parse_notnull_error_to_invalid'], 'JSONB', ['VARCHAR'], ''],
[['json_search'], 'JSONB', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_exists_path'], 'BOOLEAN', ['JSONB', 'VARCHAR'], ''],
[['json_exists_path'], 'BOOLEAN', ['JSONB', 'STRING'], ''],
[['json_type'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_type'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_isnull'], 'BOOLEAN', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_isnull'], 'BOOLEAN', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_bool'], 'BOOLEAN', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_bool'], 'BOOLEAN', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_int'], 'INT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_int'], 'INT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_bigint'], 'BIGINT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_bigint'], 'BIGINT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_largeint'], 'LARGEINT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_largeint'], 'LARGEINT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_double'], 'DOUBLE', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_double'], 'DOUBLE', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_extract_string'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract_string'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_length'], 'INT', ['JSONB'], 'ALWAYS_NULLABLE'],
[['json_length'], 'INT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_length'], 'INT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_contains'], 'BOOLEAN', ['JSONB', 'JSONB'], 'ALWAYS_NULLABLE'],
[['json_contains'], 'BOOLEAN', ['JSONB', 'JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_contains'], 'BOOLEAN', ['JSONB', 'JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
# Json functions
[['get_json_int'], 'INT', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_double'], 'DOUBLE', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_string'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_int'], 'INT', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_double'], 'DOUBLE', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_string'], 'STRING', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_bigint'], 'BIGINT', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_bigint'], 'BIGINT', ['STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_string'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_string'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_int'], 'INT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_int'], 'INT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_double'], 'DOUBLE', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_double'], 'DOUBLE', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['get_json_bigint'], 'BIGINT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['get_json_bigint'], 'BIGINT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'],
[['json_array'], 'VARCHAR', ['VARCHAR', '...'], 'ALWAYS_NOT_NULLABLE'],
[['json_object'], 'VARCHAR', ['VARCHAR', '...'], 'ALWAYS_NOT_NULLABLE'],
[['json_quote'], 'VARCHAR', ['VARCHAR'], ''],
[['json_valid'], 'INT', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_contains'], 'BOOLEAN', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_unquote'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['json_extract'], 'VARCHAR', ['VARCHAR', 'VARCHAR', '...'], 'ALWAYS_NULLABLE'],
[['json_extract'], 'STRING', ['STRING', 'STRING', '...'], 'ALWAYS_NULLABLE'],
[['json_insert'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', '...'], ''],
[['json_replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', '...'], ''],
[['json_set'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', '...'], '']
],
#hll function
"Hll": [
[['hll_cardinality'], 'BIGINT', ['HLL'], 'ALWAYS_NOT_NULLABLE'],
[['hll_empty'], 'HLL', [], 'ALWAYS_NOT_NULLABLE'],
[['hll_from_base64'], 'HLL', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['hll_from_base64'], 'HLL', ['STRING'], 'ALWAYS_NULLABLE'],
[['hll_hash'], 'HLL', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['hll_hash'], 'HLL', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['hll_to_base64'], 'STRING', ['HLL'], '']
],
#bitmap function
"Bitmap": [
[['to_bitmap'], 'BITMAP', ['BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['to_bitmap'], 'BITMAP', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['to_bitmap'], 'BITMAP', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['to_bitmap_with_check'], 'BITMAP', ['BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['to_bitmap_with_check'], 'BITMAP', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['to_bitmap_with_check'], 'BITMAP', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_hash'], 'BITMAP', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_hash64'], 'BITMAP', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_hash'], 'BITMAP', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_hash64'], 'BITMAP', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_count'], 'BIGINT', ['BITMAP'], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_and_not_count', 'bitmap_andnot_count'], 'BIGINT', ['BITMAP','BITMAP'], ''],
[['bitmap_empty'], 'BITMAP', [], 'ALWAYS_NOT_NULLABLE'],
[['bitmap_or'], 'BITMAP', ['BITMAP','BITMAP','...'], ''],
[['bitmap_or'], 'BITMAP', ['BITMAP','BITMAP'], ''],
[['bitmap_xor'], 'BITMAP', ['BITMAP','BITMAP','...'], ''],
[['bitmap_xor'], 'BITMAP', ['BITMAP','BITMAP'], ''],
[['bitmap_xor_count'], 'BIGINT', ['BITMAP','BITMAP','...'], ''],
[['bitmap_xor_count'], 'BIGINT', ['BITMAP','BITMAP'], ''],
[['bitmap_not'], 'BITMAP', ['BITMAP','BITMAP'], ''],
[['bitmap_and'], 'BITMAP', ['BITMAP','BITMAP','...'], ''],
[['bitmap_and'], 'BITMAP', ['BITMAP','BITMAP'], ''],
[['bitmap_and_not', 'bitmap_andnot'], 'BITMAP', ['BITMAP','BITMAP'], ''],
[['bitmap_to_string'], 'STRING', ['BITMAP'], ''],
[['bitmap_from_string'], 'BITMAP', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['bitmap_from_string'], 'BITMAP', ['STRING'], 'ALWAYS_NULLABLE'],
[['bitmap_to_base64'], 'STRING', ['BITMAP'], ''],
[['bitmap_from_base64'], 'BITMAP', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['bitmap_from_base64'], 'BITMAP', ['STRING'], 'ALWAYS_NULLABLE'],
[['bitmap_from_array'], 'BITMAP', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['bitmap_from_array'], 'BITMAP', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['bitmap_from_array'], 'BITMAP', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['bitmap_from_array'], 'BITMAP', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['bitmap_contains'], 'BOOLEAN', ['BITMAP','BIGINT'], ''],
[['bitmap_remove'], 'BITMAP', ['BITMAP','BIGINT'], ''],
[['bitmap_has_any'], 'BOOLEAN', ['BITMAP','BITMAP'], ''],
[['bitmap_has_all'], 'BOOLEAN', ['BITMAP','BITMAP'], ''],
[['bitmap_min'], 'BIGINT', ['BITMAP'], 'ALWAYS_NULLABLE'],
[['bitmap_max'], 'BIGINT', ['BITMAP'], 'ALWAYS_NULLABLE'],
[['bitmap_subset_in_range'], 'BITMAP', ['BITMAP', 'BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['bitmap_subset_limit'], 'BITMAP', ['BITMAP', 'BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['bitmap_and_count'], 'BIGINT', ['BITMAP','BITMAP','...'], ''],
[['bitmap_and_count'], 'BIGINT', ['BITMAP','BITMAP'], ''],
[['bitmap_or_count'], 'BIGINT', ['BITMAP','BITMAP','...'], ''],
[['bitmap_or_count'], 'BIGINT', ['BITMAP','BITMAP'], ''],
[['sub_bitmap'], 'BITMAP', ['BITMAP', 'BIGINT', 'BIGINT'], 'ALWAYS_NULLABLE'],
[['bitmap_to_array'], 'ARRAY_BIGINT', ['BITMAP'], '']
],
# quantile_function
"quantile" : [
[['quantile_state_empty'], 'QUANTILE_STATE', [], 'ALWAYS_NOT_NULLABLE'],
[['to_quantile_state'], 'QUANTILE_STATE', ['DOUBLE', 'FLOAT'], 'ALWAYS_NOT_NULLABLE'],
[['quantile_percent'], 'DOUBLE', ['QUANTILE_STATE', 'FLOAT'], 'ALWAYS_NOT_NULLABLE']
],
# hash functions
"Hash": [
[['murmur_hash3_32'], 'INT', ['VARCHAR', '...'], ''],
[['murmur_hash3_32'], 'INT', ['STRING', '...'], ''],
[['murmur_hash3_64'], 'BIGINT', ['VARCHAR', '...'], ''],
[['murmur_hash3_64'], 'BIGINT', ['STRING', '...'], ''],
[['xxhash_32'], 'INT', ['VARCHAR', '...'], ''],
[['xxhash_32'], 'INT', ['STRING', '...'], ''],
[['xxhash_64'], 'BIGINT', ['VARCHAR', '...'], ''],
[['xxhash_64'], 'BIGINT', ['STRING', '...'], '']
],
# aes and base64 function
"aes": [
[['aes_encrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['aes_decrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['aes_encrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['aes_decrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['aes_encrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['aes_decrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['sm4_encrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['sm4_decrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['sm4_encrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['sm4_decrypt'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'],
[['from_base64'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['aes_encrypt'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['aes_decrypt'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['aes_encrypt'], 'STRING', ['STRING', 'STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['aes_decrypt'], 'STRING', ['STRING', 'STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['aes_encrypt'], 'STRING', ['STRING', 'STRING', 'STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['aes_decrypt'], 'STRING', ['STRING', 'STRING', 'STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['sm4_encrypt'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['sm4_decrypt'], 'STRING', ['STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['sm4_encrypt'], 'STRING', ['STRING', 'STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['sm4_decrypt'], 'STRING', ['STRING', 'STRING', 'STRING', 'STRING'], 'ALWAYS_NULLABLE'],
[['from_base64'], 'STRING', ['STRING'], 'ALWAYS_NULLABLE'],
[['to_base64'], 'STRING', ['STRING'], 'DEPEND_ON_ARGUMENT'],
[['to_base64'], 'VARCHAR', ['VARCHAR'], 'DEPEND_ON_ARGUMENT']
],
# for compatable with MySQL
"Compatable": [
[['md5'], 'VARCHAR', ['VARCHAR'], ''],
[['md5sum'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['md5'], 'VARCHAR', ['STRING'], ''],
[['md5sum'], 'VARCHAR', ['STRING', '...'], ''],
[['sm3'], 'VARCHAR', ['VARCHAR'], ''],
[['sm3sum'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['sm3'], 'VARCHAR', ['STRING'], ''],
[['sm3sum'], 'VARCHAR', ['STRING', '...'], ''],
[['sha'], 'VARCHAR', ['VARCHAR'], ''],
[['sha'], 'VARCHAR', ['STRING'], ''],
[['sha1'], 'VARCHAR', ['VARCHAR'], ''],
[['sha1'], 'VARCHAR', ['STRING'], ''],
[['sha2'], 'VARCHAR', ['VARCHAR', 'INT'], ''],
[['sha2'], 'VARCHAR', ['STRING', 'INT'], ''],
],
# geo functions
"Geo": [
[['ST_Point'], 'VARCHAR', ['DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['ST_X'], 'DOUBLE', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_Y'], 'DOUBLE', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_X'], 'DOUBLE', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_Y'], 'DOUBLE', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_Distance_Sphere'], 'DOUBLE', ['DOUBLE', 'DOUBLE', 'DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['ST_Angle_Sphere'], 'DOUBLE', ['DOUBLE', 'DOUBLE', 'DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['ST_Angle'], 'DOUBLE', ['VARCHAR','VARCHAR','VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_Angle'], 'DOUBLE', ['STRING','STRING','STRING'], 'ALWAYS_NULLABLE'],
[['ST_Azimuth'], 'DOUBLE', ['VARCHAR','VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_Azimuth'], 'DOUBLE', ['STRING','STRING'], 'ALWAYS_NULLABLE'],
[['ST_Area_Square_Meters'], 'DOUBLE', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_Area_Square_Meters'], 'DOUBLE', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_Area_Square_Km'], 'DOUBLE', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_Area_Square_Km'], 'DOUBLE', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_AsText', 'ST_AsWKT'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_AsText', 'ST_AsWKT'], 'VARCHAR', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_GeometryFromText', 'ST_GeomFromText'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_GeometryFromText', 'ST_GeomFromText'], 'VARCHAR', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_GeometryFromWkb', 'ST_GeomFromWkb'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_GeometryFromWkb', 'ST_GeomFromWkb'], 'VARCHAR', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_AsBinary'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_AsBinary'], 'VARCHAR', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_LineFromText', 'ST_LineStringFromText'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_LineFromText', 'ST_LineStringFromText'], 'VARCHAR', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_Polygon', 'ST_PolyFromText', 'ST_PolygonFromText'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ST_Polygon', 'ST_PolyFromText', 'ST_PolygonFromText'], 'VARCHAR', ['STRING'], 'ALWAYS_NULLABLE'],
[['ST_Circle'], 'VARCHAR', ['DOUBLE', 'DOUBLE', 'DOUBLE'], 'ALWAYS_NULLABLE'],
[['ST_Contains'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE']
],
# grouping sets functions
"grouping": [
[['grouping_id'], 'BIGINT', ['BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['grouping'], 'BIGINT', ['BIGINT'], 'ALWAYS_NOT_NULLABLE']
],
# url functions
"Url": [
[['domain'], 'STRING', ['STRING'], ''],
[['domain_without_www'], 'STRING', ['STRING'], ''],
[['protocol'], 'STRING', ['STRING'], ''],
[['top_level_domain'], 'STRING', ['STRING'], ''],
[['cut_to_first_significant_subdomain'], 'STRING', ['STRING'], ''],
[['first_significant_subdomain'], 'STRING', ['STRING'], '']
],
# search functions
"Search": [
[['multi_search_all_positions'], 'ARRAY_INT', ['STRING', 'ARRAY_STRING'], 'ALWAYS_NOT_NULLABLE'],
[['multi_match_any'], 'TINYINT', ['STRING', 'ARRAY_STRING'], 'ALWAYS_NOT_NULLABLE'],
[['like'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], ''],
[['rlike'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], ''],
[['regexp'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], '']
],
# tokenizer functions
"Tokenize": [
[['tokenize'],'ARRAY_VARCHAR',['STRING','STRING'], ''],
],
"UUID": [
[['uuid'], 'VARCHAR', [], 'ALWAYS_NOT_NULLABLE'],
[['uuid_numeric'], 'LARGEINT', [], 'ALWAYS_NOT_NULLABLE'],
[['uuid_to_int'], 'LARGEINT', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['uuid_to_int'], 'LARGEINT', ['STRING'], 'ALWAYS_NULLABLE'],
[['int_to_uuid'], 'VARCHAR', ['LARGEINT'], 'DEPEND_ON_ARGUMENT']
],
#ip functions
"IP": [
[['ipv4_num_to_string','inet_ntoa'], 'VARCHAR', ['TINYINT'], 'ALWAYS_NULLABLE'],
[['ipv4_num_to_string','inet_ntoa'], 'VARCHAR', ['SMALLINT'], 'ALWAYS_NULLABLE'],
[['ipv4_num_to_string','inet_ntoa'], 'VARCHAR', ['INT'], 'ALWAYS_NULLABLE'],
[['ipv4_num_to_string','inet_ntoa'], 'VARCHAR', ['BIGINT'], 'ALWAYS_NULLABLE'],
[['ipv4_string_to_num'], 'BIGINT', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['ipv4_string_to_num'], 'BIGINT', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['ipv4_string_to_num_or_default'], 'BIGINT', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['ipv4_string_to_num_or_default'], 'BIGINT', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['ipv4_string_to_num_or_null','inet_aton'], 'BIGINT', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ipv4_string_to_num_or_null','inet_aton'], 'BIGINT', ['STRING'], 'ALWAYS_NULLABLE'],
[['ipv6_num_to_string','inet6_ntoa'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ipv6_num_to_string','inet6_ntoa'], 'STRING', ['STRING'], 'ALWAYS_NULLABLE'],
[['ipv6_num_to_string','inet6_ntoa'], 'VARCHAR', ['IPV6'], 'ALWAYS_NULLABLE'],
[['ipv6_string_to_num'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['ipv6_string_to_num'], 'STRING', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['ipv6_string_to_num_or_default'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['ipv6_string_to_num_or_default'], 'STRING', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['ipv6_string_to_num_or_null','inet6_aton'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ipv6_string_to_num_or_null','inet6_aton'], 'STRING', ['STRING'], 'ALWAYS_NULLABLE'],
[['is_ipv4_compat'], 'BOOLEAN', ['VARCHAR'], ''],
[['is_ipv4_compat'], 'BOOLEAN', ['STRING'], ''],
[['is_ipv4_mapped'], 'BOOLEAN', ['VARCHAR'], ''],
[['is_ipv4_mapped'], 'BOOLEAN', ['STRING'], ''],
[['is_ipv4_string'], 'BOOLEAN', ['VARCHAR'], ''],
[['is_ipv4_string'], 'BOOLEAN', ['STRING'], ''],
[['is_ipv6_string'], 'BOOLEAN', ['VARCHAR'], ''],
[['is_ipv6_string'], 'BOOLEAN', ['STRING'], ''],
[['is_ip_address_in_range'], 'BOOLEAN', ['VARCHAR', 'VARCHAR'], 'DEPEND_ON_ARGUMENT'],
[['is_ip_address_in_range'], 'BOOLEAN', ['STRING', 'STRING'], 'DEPEND_ON_ARGUMENT'],
[['ipv4_cidr_to_range'], 'STRUCT<IPV4, IPV4>', ['IPV4', 'SMALLINT'], 'DEPEND_ON_ARGUMENT'],
[['ipv6_cidr_to_range'], 'STRUCT<IPV6, IPV6>', ['IPV6', 'SMALLINT'], 'DEPEND_ON_ARGUMENT'],
[['ipv6_cidr_to_range'], 'STRUCT<IPV6, IPV6>', ['VARCHAR', 'SMALLINT'], 'DEPEND_ON_ARGUMENT'],
[['ipv6_cidr_to_range'], 'STRUCT<IPV6, IPV6>', ['STRING', 'SMALLINT'], 'DEPEND_ON_ARGUMENT'],
[['to_ipv4'], 'IPV4', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv4'], 'IPV4', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv4_or_default'], 'IPV4', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv4_or_default'], 'IPV4', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv4_or_null'], 'IPV4', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['to_ipv4_or_null'], 'IPV4', ['STRING'], 'ALWAYS_NULLABLE'],
[['to_ipv6'], 'IPV6', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv6'], 'IPV6', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv6_or_default'], 'IPV6', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv6_or_default'], 'IPV6', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['to_ipv6_or_null'], 'IPV6', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['to_ipv6_or_null'], 'IPV6', ['STRING'], 'ALWAYS_NULLABLE'],
[['ipv4_to_ipv6'], 'IPV6', ['IPV4'], 'DEPEND_ON_ARGUMENT'],
[['cut_ipv6'], 'STRING', ['IPV6', 'TINYINT', 'TINYINT'], 'DEPEND_ON_ARGUMENT'],
[['ipv6_from_uint128_string_or_null'], 'IPV6', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['ipv6_from_uint128_string_or_null'], 'IPV6', ['STRING'], 'ALWAYS_NULLABLE']
],
"NonNullalbe": [
[['non_nullable'], 'BOOLEAN', ['BOOLEAN'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'TINYINT', ['TINYINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'SMALLINT', ['SMALLINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'INT', ['INT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'BIGINT', ['BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'LARGEINT', ['LARGEINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'FLOAT', ['FLOAT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DOUBLE', ['DOUBLE'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DATE', ['DATE'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DATEV2', ['DATEV2'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DATETIME', ['DATETIME'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DECIMALV2', ['DECIMALV2'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DECIMAL32', ['DECIMAL32'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DECIMAL64', ['DECIMAL64'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'DECIMAL128', ['DECIMAL128'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'STRING', ['STRING'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'BITMAP', ['BITMAP'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'JSONB', ['JSONB'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_INT', ['ARRAY_INT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DATE', ['ARRAY_DATE'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], 'ALWAYS_NOT_NULLABLE'],
[['non_nullable'], 'ARRAY_STRING', ['ARRAY_STRING'], 'ALWAYS_NOT_NULLABLE']
],
"Nullalbe": [
[['nullable'], 'BOOLEAN', ['BOOLEAN'], 'ALWAYS_NULLABLE'],
[['nullable'], 'TINYINT', ['TINYINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'SMALLINT', ['SMALLINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'INT', ['INT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'BIGINT', ['BIGINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'LARGEINT', ['LARGEINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'FLOAT', ['FLOAT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DOUBLE', ['DOUBLE'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DATE', ['DATE'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DATEV2', ['DATEV2'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DATETIME', ['DATETIME'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DATETIMEV2', ['DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DECIMALV2', ['DECIMALV2'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DECIMAL32', ['DECIMAL32'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DECIMAL64', ['DECIMAL64'], 'ALWAYS_NULLABLE'],
[['nullable'], 'DECIMAL128', ['DECIMAL128'], 'ALWAYS_NULLABLE'],
[['nullable'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
[['nullable'], 'STRING', ['STRING'], 'ALWAYS_NULLABLE'],
[['nullable'], 'BITMAP', ['BITMAP'], 'ALWAYS_NULLABLE'],
[['nullable'], 'JSONB', ['JSONB'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_BOOLEAN', ['ARRAY_BOOLEAN'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_TINYINT', ['ARRAY_TINYINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_SMALLINT', ['ARRAY_SMALLINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_INT', ['ARRAY_INT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_BIGINT', ['ARRAY_BIGINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DATE', ['ARRAY_DATE'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DECIMAL32', ['ARRAY_DECIMAL32'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DECIMAL64', ['ARRAY_DECIMAL64'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_DECIMAL128', ['ARRAY_DECIMAL128'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_VARCHAR', ['ARRAY_VARCHAR'], 'ALWAYS_NULLABLE'],
[['nullable'], 'ARRAY_STRING', ['ARRAY_STRING'], 'ALWAYS_NULLABLE']
],
"Ignore": [
[['ignore'], 'BOOLEAN', ['BOOLEAN', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['TINYINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['SMALLINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['INT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['BIGINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['LARGEINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['FLOAT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DOUBLE', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DATE', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DATEV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DATETIME', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DATETIMEV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DECIMALV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DECIMAL32', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DECIMAL64', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['DECIMAL128', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['VARCHAR', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['STRING', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['BITMAP', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['JSONB', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_BOOLEAN', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_TINYINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_SMALLINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_INT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_BIGINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_LARGEINT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DATETIME', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DATE', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DATETIMEV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DATEV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_FLOAT', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DOUBLE', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DECIMALV2', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DECIMAL32', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DECIMAL64', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_DECIMAL128', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_VARCHAR', '...'], 'ALWAYS_NOT_NULLABLE'],
[['ignore'], 'BOOLEAN', ['ARRAY_STRING', '...'], 'ALWAYS_NOT_NULLABLE']
],
# multi match functions
"MultiMatch": [
[['multi_match'], 'BOOLEAN', ['STRING', '...'], 'ALWAYS_NOT_NULLABLE']
]
}
# Except the following functions, other function will directly return
# null if there is null parameters.
# Functions in this set will handle null values, not just return null.
#
# This set is only used to replace 'functions with null parameters' with NullLiteral
# when applying FoldConstantsRule rules on the FE side.
# TODO(cmy): Are these functions only required to handle null values?
non_null_result_with_null_param_functions = [
'if',
'hll_hash',
'concat_ws',
'ifnull',
'nvl',
'nullif',
'null_or_empty',
'not_null_or_empty'
'coalesce',
'array',
'json_array',
'json_object'
]
# Nondeterministic functions may return different results each time they are called
nondeterministic_functions = [
'rand',
'now',
'current_timestamp',
'localtime',
'localtimestamp',
'curdate',
'current_date',
'curtime',
'current_time',
'utc_timestamp',
'uuid'
]
# This is the subset of ALWAYS_NULLABLE
# The function belongs to @null_result_with_one_null_param_functions,
# as long as one parameter is null, the function must return null.
null_result_with_one_null_param_functions = [
'str_to_date',
'convert_tz',
'pi',
'e',
'divide',
'int_divide',
'pmod',
'mod',
'fmod',
'substr',
'substring',
'overlay',
'strcmp',
'append_trailing_char_if_absent',
'ST_X',
'ST_Y',
'ST_AsText',
'ST_GeometryFromText',
'ST_LineFromText',
'ST_Polygon',
'ST_Contains',
'from_unixtime'
]
invisible_functions = [
]