cjj2010 commented on code in PR #4689:
URL: https://github.com/apache/calcite/pull/4689#discussion_r2625504110


##########
site/_docs/reference.md:
##########
@@ -2819,272 +2819,274 @@ BigQuery's type system uses confusingly different 
names for types and functions:
 In the following:
 * *func* is a lambda argument.
 
-| C | Operator syntax                                | Description
-|:- |:-----------------------------------------------|:-----------
-| p | expr :: type                                   | Casts *expr* to *type*
-| m | expr1 <=> expr2                                | Whether two values are 
equal, treating null values as the same, and it's similar to `IS NOT DISTINCT 
FROM`
-| p | ACOSD(numeric)                                 | Returns the inverse 
cosine of *numeric* in degrees as a double. Returns NaN if *numeric* is NaN. 
Fails if *numeric* is less than -1.0 or greater than 1.0.
-| * | ACOSH(numeric)                                 | Returns the inverse 
hyperbolic cosine of *numeric*
-| o s | ADD_MONTHS(date, numMonths)                  | Returns the date that 
is *numMonths* after *date*
-| h s | ARRAY([expr [, expr ]*])                     | Construct an array in 
Apache Spark. The function allows users to use `ARRAY()` to create an empty 
array
-| s | ARRAY_APPEND(array, element)                   | Appends an *element* to 
the end of the *array* and returns the result. Type of *element* should be 
similar to type of the elements of the *array*. If the *array* is null, the 
function will return null. If an *element* that is null, the null *element* 
will be added to the end of the *array*
-| s | ARRAY_COMPACT(array)                           | Removes null values 
from the *array*
-| b | ARRAY_CONCAT(array [, array ]*)                | Concatenates one or 
more arrays. If any input argument is `NULL` the function returns `NULL`
-| s | ARRAY_CONTAINS(array, element)                 | Returns true if the 
*array* contains the *element*
-| h s | ARRAY_DISTINCT(array)                        | Removes duplicate 
values from the *array* that keeps ordering of elements
-| h s | ARRAY_EXCEPT(array1, array2)                 | Returns an array of the 
elements in *array1* but not in *array2*, without duplicates
-| s | ARRAY_INSERT(array, pos, element)              | Places *element* into 
index *pos* of *array*. Array index start at 1, or start from the end if index 
is negative. Index above array size appends the array, or prepends the array if 
index is negative, with `NULL` elements.
-| h s | ARRAY_INTERSECT(array1, array2)              | Returns an array of the 
elements in the intersection of *array1* and *array2*, without duplicates
-| h s | ARRAY_JOIN(array, delimiter [, nullText ])   | Synonym for 
`ARRAY_TO_STRING`
-| b | ARRAY_LENGTH(array)                            | Synonym for 
`CARDINALITY`
-| h s | ARRAY_MAX(array)                             | Returns the maximum 
value in the *array*
-| h s | ARRAY_MIN(array)                             | Returns the minimum 
value in the *array*
-| s | ARRAY_POSITION(array, element)                 | Returns the (1-based) 
index of the first *element* of the *array* as long
-| h s | ARRAY_REMOVE(array, element)                 | Remove all elements 
that equal to *element* from the *array*
-| s | ARRAY_PREPEND(array, element)                  | Appends an *element* to 
the beginning of the *array* and returns the result. Type of *element* should 
be similar to type of the elements of the *array*. If the *array* is null, the 
function will return null. If an *element* that is null, the null *element* 
will be added to the beginning of the *array*
-| s | ARRAY_REPEAT(element, count)                   | Returns the array 
containing element count times.
-| b | ARRAY_REVERSE(array)                           | Reverses elements of 
*array*
-| s | ARRAY_SIZE(array)                              | Synonym for 
`CARDINALITY`
-| h | ARRAY_SLICE(array, start, length)              | Returns the subset or 
range of elements.
-| b | ARRAY_TO_STRING(array, delimiter [, nullText ])| Returns a concatenation 
of the elements in *array* as a STRING and take *delimiter* as the delimiter. 
If the *nullText* parameter is used, the function replaces any `NULL` values in 
the array with the value of *nullText*. If the *nullText* parameter is not 
used, the function omits the `NULL` value and its preceding delimiter. Returns 
`NULL` if any argument is `NULL`
-| h s | ARRAY_UNION(array1, array2)                  | Returns an array of the 
elements in the union of *array1* and *array2*, without duplicates
-| s | ARRAYS_OVERLAP(array1, array2)                 | Returns true if *array1 
contains at least a non-null element present also in *array2*. If the arrays 
have no common element and they are both non-empty and either of them contains 
a null element null is returned, false otherwise
-| s | ARRAYS_ZIP(array [, array ]*)                  | Returns a merged 
*array* of structs in which the N-th struct contains all N-th values of input 
arrays
-| s | SORT_ARRAY(array [, ascendingOrder])           | Sorts the *array* in 
ascending or descending order according to the natural ordering of the array 
elements. The default order is ascending if *ascendingOrder* is not specified. 
Null elements will be placed at the beginning of the returned array in 
ascending order or at the end of the returned array in descending order
-| p | ASIND(numeric)                                 | Returns the inverse 
sine of *numeric* in degrees as a double. Returns NaN if *numeric* is NaN. 
Fails if *numeric* is less than -1.0 or greater than 1.0.
-| * | ASINH(numeric)                                 | Returns the inverse 
hyperbolic sine of *numeric*
-| p | ATAND(numeric)                                 | Returns the inverse 
tangent of *numeric* in degrees as a double. Returns NaN if *numeric* is NaN.
-| * | ATANH(numeric)                                 | Returns the inverse 
hyperbolic tangent of *numeric*
-| * | BITAND(value1, value2)                         | Returns the bitwise AND 
of *value1* and *value2*. *value1* and *value2* must both be integer or binary 
values. Binary values must be of the same length.
-| * | BITOR(value1, value2)                          | Returns the bitwise OR 
of *value1* and *value2*. *value1* and *value2* must both be integer or binary 
values. Binary values must be of the same length.
-| * | BITXOR(value1, value2)                         | Returns the bitwise XOR 
of *value1* and *value2*. *value1* and *value2* must both be integer or binary 
values. Binary values must be of the same length.
-| * | LEFTSHIFT(value1, value2) | Returns the result of left-shifting *value1* 
by *value2* bits. *value1* can be integer, unsigned integer, or binary. For 
binary, the result has the same length as *value1*. The shift amount *value2* 
is normalized using modulo arithmetic based on the bit width of *value1*. For 
integers, this uses modulo 32; for binary types, it uses modulo (8 × 
byte_length). Negative shift amounts are converted to equivalent positive 
shifts through this modulo operation. For example, `LEFTSHIFT(1, -2)` returns 
`1073741824` (equivalent to `1 << 30`), and `LEFTSHIFT(8, -1)` returns `0` due 
to overflow.
-| * | BITNOT(value)                                  | Returns the bitwise NOT 
of *value*. *value* must be either an integer type or a binary value.
-| f | BITAND_AGG(value)                              | Equivalent to 
`BIT_AND(value)`
-| f | BITOR_AGG(value)                               | Equivalent to 
`BIT_OR(value)`
-| * | BITCOUNT(value)                                | Returns the bitwise 
COUNT of *value* or NULL if *value* is NULL. *value* must be and integer or 
binary value.
-| b s | BIT_COUNT(integer)                           | Returns the bitwise 
COUNT of *integer* or NULL if *integer* is NULL
-| m | BIT_COUNT(numeric)                             | Returns the bitwise 
COUNT of the integer portion of *numeric* or NULL if *numeric* is NULL
-| b m s | BIT_COUNT(binary)                          | Returns the bitwise 
COUNT of *binary* or NULL if *binary* is NULL
-| s | BIT_LENGTH(binary)                             | Returns the bit length 
of *binary*
-| s | BIT_LENGTH(string)                             | Returns the bit length 
of *string*
-| s | BIT_GET(value, position)                       | Returns the bit (0 or 
1) value at the specified *position* of numeric *value*. The positions are 
numbered from right to left, starting at zero. The *position* argument cannot 
be negative
-| b | CEIL(value)                                    | Similar to standard 
`CEIL(value)` except if *value* is an integer type, the return type is a double
-| m s | CHAR(integer)                                | Returns the character 
whose ASCII code is *integer* % 256, or null if *integer* &lt; 0
-| b o p r | CHR(integer)                             | Returns the character 
whose UTF-8 code is *integer*
-| b | CODE_POINTS_TO_BYTES(integers)                 | Converts *integers*, an 
array of integers between 0 and 255 inclusive, into bytes; throws error if any 
element is out of range
-| b | CODE_POINTS_TO_STRING(integers)                | Converts *integers*, an 
array of integers between 0 and 0xD7FF or between 0xE000 and 0x10FFFF 
inclusive, into string; throws error if any element is out of range
-| o r | CONCAT(string, string)                       | Concatenates two 
strings, returns null only when both string arguments are null, otherwise 
treats null as empty string
-| b m | CONCAT(string [, string ]*)                  | Concatenates one or 
more strings, returns null if any of the arguments is null
-| p q | CONCAT(string [, string ]*)                  | Concatenates one or 
more strings, null is treated as empty string
-| m | CONCAT_WS(separator, str1 [, string ]*)        | Concatenates one or 
more strings, returns null only when separator is null, otherwise treats null 
arguments as empty strings
-| p | CONCAT_WS(separator, any [, any ]*)            | Concatenates all but 
the first argument, returns null only when separator is null, otherwise treats 
null arguments as empty strings
-| q | CONCAT_WS(separator, str1, str2 [, string ]*)  | Concatenates two or 
more strings, requires at least 3 arguments (up to 254), treats null arguments 
as empty strings
-| s | CONCAT_WS(separator [, string \| array(string)]*)  | Concatenates one or 
more strings or arrays. Besides the separator, other arguments can include 
strings or string arrays. returns null only when separator is null, treats 
other null arguments as empty strings
-| m | COMPRESS(string)                               | Compresses a string 
using zlib compression and returns the result as a binary string
-| b | CONTAINS_SUBSTR(expression, string [ , json_scope =&gt; json_scope_value 
]) | Returns whether *string* exists as a substring in *expression*. Optional 
*json_scope* argument specifies what scope to search if *expression* is in JSON 
format. Returns NULL if a NULL exists in *expression* that does not result in a 
match
-| q | CONVERT(type, expression [ , style ])          | Equivalent to 
`CAST(expression AS type)`; ignores the *style* operand
-| o | CONVERT(string, destCharSet[, srcCharSet])     | Converts *string* from 
*srcCharSet* to *destCharSet*. If the *srcCharSet* parameter is not specified, 
then it uses the default CharSet
-| r | CONVERT_TIMEZONE(tz1, tz2, datetime)           | Converts the timezone 
of *datetime* from *tz1* to *tz2*
-| p | COSD(numeric)                                  | Returns the cosine of 
*numeric* in degrees as a double. Returns NaN if *numeric* is NaN. Fails if 
*numeric* is greater than the maximum double value.
-| * | COSH(numeric)                                  | Returns the hyperbolic 
cosine of *numeric*
-| * | COTH(numeric)                                  | Returns the hyperbolic 
cotangent of *numeric*
-| s h | CRC32(string)                                | Calculates a cyclic 
redundancy check value for string or binary argument and returns bigint value
-| * | CSC(numeric)                                   | Returns the cosecant of 
*numeric* in radians
-| * | CSCH(numeric)                                  | Returns the hyperbolic 
cosecant of *numeric*
-| b | CURRENT_DATETIME([ timeZone ])                 | Returns the current 
time as a TIMESTAMP from *timezone*
-| m | DAYNAME(datetime)                              | Returns the name, in 
the connection's locale, of the weekday in *datetime*; for example, for a 
locale of en, it will return 'Sunday' for both DATE '2020-02-10' and TIMESTAMP 
'2020-02-10 10:10:10', and for a locale of zh, it will return '星期日'
-| b | DATE(timestamp)                                | Extracts the DATE from 
a *timestamp*
-| b | DATE(timestampLtz)                             | Extracts the DATE from 
*timestampLtz* (an instant; BigQuery's TIMESTAMP type), assuming UTC
-| b | DATE(timestampLtz, timeZone)                   | Extracts the DATE from 
*timestampLtz* (an instant; BigQuery's TIMESTAMP type) in *timeZone*
-| b | DATE(string)                                   | Equivalent to 
`CAST(string AS DATE)`
-| b | DATE(year, month, day)                         | Returns a DATE value 
for *year*, *month*, and *day* (all of type INTEGER)
-| q r f | DATEADD(timeUnit, integer, datetime)       | Equivalent to 
`TIMESTAMPADD(timeUnit, integer, datetime)`
-| q r f | DATEDIFF(timeUnit, datetime, datetime2)    | Equivalent to 
`TIMESTAMPDIFF(timeUnit, datetime, datetime2)`
-| q | DATEPART(timeUnit, datetime)                   | Equivalent to 
`EXTRACT(timeUnit FROM  datetime)`
-| b | DATETIME(date, time)                           | Converts *date* and 
*time* to a TIMESTAMP
-| b | DATETIME(date)                                 | Converts *date* to a 
TIMESTAMP value (at midnight)
-| b | DATETIME(date, timeZone)                       | Converts *date* to a 
TIMESTAMP value (at midnight), in *timeZone*
-| b | DATETIME(year, month, day, hour, minute, second) | Creates a TIMESTAMP 
for *year*, *month*, *day*, *hour*, *minute*, *second* (all of type INTEGER)
-| b | DATETIME_ADD(timestamp, interval)              | Returns the TIMESTAMP 
value that occurs *interval* after *timestamp*
-| b | DATETIME_DIFF(timestamp, timestamp2, timeUnit) | Returns the whole 
number of *timeUnit* between *timestamp* and *timestamp2*
-| b | DATETIME_SUB(timestamp, interval)              | Returns the TIMESTAMP 
that occurs *interval* before *timestamp*
-| b | DATETIME_TRUNC(timestamp, timeUnit)            | Truncates *timestamp* 
to the granularity of *timeUnit*, rounding to the beginning of the unit
-| b s | DATE_FROM_UNIX_DATE(integer)                 | Returns the DATE that 
is *integer* days after 1970-01-01
-| p r | DATE_PART(timeUnit, datetime)                | Equivalent to 
`EXTRACT(timeUnit FROM  datetime)`
-| b | DATE_ADD(date, interval)                       | Returns the DATE value 
that occurs *interval* after *date*
-| s h | DATE_ADD(date, numDays)                      | Returns the DATE that 
is *numDays* after *date*
-| b | DATE_DIFF(date, date2, timeUnit)               | Returns the whole 
number of *timeUnit* between *date* and *date2*
-| b | DATE_SUB(date, interval)                       | Returns the DATE value 
that occurs *interval* before *date*
-| s h | DATE_SUB(date, numDays)                      | Returns the DATE that 
is *numDays* before *date*
-| b | DATE_TRUNC(date, timeUnit)                     | Truncates *date* to the 
granularity of *timeUnit*, rounding to the beginning of the unit
-| o r s h | DECODE(value, value1, result1 [, valueN, resultN ]* [, default ]) 
| Compares *value* to each *valueN* value one by one; if *value* is equal to a 
*valueN*, returns the corresponding *resultN*, else returns *default*, or NULL 
if *default* is not specified
-| p r | DIFFERENCE(string, string)                   | Returns a measure of 
the similarity of two strings, namely the number of character positions that 
their `SOUNDEX` values have in common: 4 if the `SOUNDEX` values are same and 0 
if the `SOUNDEX` values are totally different
-| f s | ENDSWITH(string1, string2)                   | Returns whether 
*string2* is a suffix of *string1*
-| b | ENDS_WITH(string1, string2)                    | Equivalent to 
`ENDSWITH(string1, string2)`
-| s | EXISTS(array, func)                            | Returns whether a 
predicate *func* holds for one or more elements in the *array*
-| o | EXISTSNODE(xml, xpath, [, namespaces ])        | Determines whether 
traversal of a XML document using a specified xpath results in any nodes. 
Returns 0 if no nodes remain after applying the XPath traversal on the document 
fragment of the element or elements matched by the XPath expression. Returns 1 
if any nodes remain. The optional namespace value that specifies a default 
mapping or namespace mapping for prefixes, which is used when evaluating the 
XPath expression.
-| o | EXTRACT(xml, xpath, [, namespaces ])           | Returns the XML 
fragment of the element or elements matched by the XPath expression. The 
optional namespace value that specifies a default mapping or namespace mapping 
for prefixes, which is used when evaluating the XPath expression
-| m | EXTRACTVALUE(xml, xpathExpr))                  | Returns the text of the 
first text node which is a child of the element or elements matched by the 
XPath expression.
-| h s | FACTORIAL(integer)                           | Returns the factorial 
of *integer*, the range of *integer* is [0, 20]. Otherwise, returns NULL
-| h s | FIND_IN_SET(matchStr, textStr)               | Returns the index 
(1-based) of the given *matchStr* in the comma-delimited *textStr*. Returns 0, 
if the given *matchStr* is not found or if the *matchStr* contains a comma. For 
example, FIND_IN_SET('bc', 'a,bc,def') returns 2
-| b | FLOOR(value)                                   | Similar to standard 
`FLOOR(value)` except if *value* is an integer type, the return type is a double
-| b | FORMAT_DATE(string, date)                      | Formats *date* 
according to the specified format *string*
-| b | FORMAT_DATETIME(string, timestamp)             | Formats *timestamp* 
according to the specified format *string*
-| h s | FORMAT_NUMBER(value, decimalVal)             | Formats the number 
*value* like '#,###,###.##', rounded to decimal places *decimalVal*. If 
*decimalVal* is 0, the result has no decimal point or fractional part
-| h s | FORMAT_NUMBER(value, format)                 | Formats the number 
*value* to MySQL's FORMAT *format*, like '#,###,###.##0.00'
-| b | FORMAT_TIME(string, time)                      | Formats *time* 
according to the specified format *string*
-| b | FORMAT_TIMESTAMP(string timestamp)             | Formats *timestamp* 
according to the specified format *string*
-| s | GETBIT(value, position)                        | Equivalent to 
`BIT_GET(value, position)`
-| b o p r s h | GREATEST(expr [, expr ]*)            | Returns the greatest of 
the expressions
-| b h s | IF(condition, value1, value2)              | Returns *value1* if 
*condition* is TRUE, *value2* otherwise
-| b s | IFNULL(value1, value2)                       | Equivalent to 
`NVL(value1, value2)`
-| p | string1 ILIKE string2 [ ESCAPE string3 ]       | Whether *string1* 
matches pattern *string2*, ignoring case (similar to `LIKE`)
-| p | string1 NOT ILIKE string2 [ ESCAPE string3 ]   | Whether *string1* does 
not match pattern *string2*, ignoring case (similar to `NOT LIKE`)
-| b h o | INSTR(string, substring [, from [, occurrence ] ]) | Returns the 
position of *substring* in *string*, searching starting at *from* (default 1), 
and until locating the nth *occurrence* (default 1) of *substring*
-| b h m o | INSTR(string, substring)                   | Equivalent to 
`POSITION(substring IN string)`
-| b | IS_INF(value)                                  | Returns whether *value* 
is infinite
-| b | IS_NAN(value)                                  | Returns whether *value* 
is NaN
-| m | JSON_TYPE(jsonValue)                           | Returns a string value 
indicating the type of *jsonValue*
-| m | JSON_DEPTH(jsonValue)                          | Returns an integer 
value indicating the depth of *jsonValue*
-| m | JSON_PRETTY(jsonValue)                         | Returns a 
pretty-printing of *jsonValue*
-| m | JSON_LENGTH(jsonValue [, path ])               | Returns a integer 
indicating the length of *jsonValue*
-| m | JSON_INSERT(jsonValue, path, val [, path, val ]*) | Returns a JSON 
document insert a data of *jsonValue*, *path*, *val*
-| m | JSON_KEYS(jsonValue [, path ])                 | Returns a string 
indicating the keys of a JSON *jsonValue*
-| m | JSON_REMOVE(jsonValue, path [, path ])         | Removes data from 
*jsonValue* using a series of *path* expressions and returns the result
-| m | JSON_REPLACE(jsonValue, path, val [, path, val ]*)  | Returns a JSON 
document replace a data of *jsonValue*, *path*, *val*
-| m | JSON_SET(jsonValue, path, val [, path, val ]*) | Returns a JSON document 
set a data of *jsonValue*, *path*, *val*
-| m | JSON_STORAGE_SIZE(jsonValue)                   | Returns the number of 
bytes used to store the binary representation of *jsonValue*
-| b o p r s h | LEAST(expr [, expr ]* )                | Returns the least of 
the expressions
-| b m p r s | LEFT(string, length)                   | Returns the leftmost 
*length* characters from the *string*
-| f r s | LEN(string)                                | Equivalent to 
`CHAR_LENGTH(string)`
-| b f h p r s | LENGTH(string)                       | Equivalent to 
`CHAR_LENGTH(string)`
-| h s | LEVENSHTEIN(string1, string2)                | Returns the Levenshtein 
distance between *string1* and *string2*
-| b | LOG(numeric1 [, base ])                        | Returns the logarithm 
of *numeric1* to base *base*, or base e if *base* is not present, or error if 
*numeric1* is 0 or negative
-| m s h | LOG([, base ], numeric1)                   | Returns the logarithm 
of *numeric1* to base *base*, or base e if *base* is not present, or null if 
*numeric1* is 0 or negative
-| p | LOG([, base ], numeric1 )                      | Returns the logarithm 
of *numeric1* to base *base*, or base 10 if *numeric1* is not present, or error 
if *numeric1* is 0 or negative
-| m s | LOG2(numeric)                                | Returns the base 2 
logarithm of *numeric*
-| s | LOG1P(numeric)                                 | Returns the natural 
logarithm of 1 plus *numeric*
-| b o p r s h | LPAD(string, length [, pattern ])    | Returns a string or 
bytes value that consists of *string* prepended to *length* with *pattern*
-| b | TO_BASE32(string)                              | Converts the *string* 
to base-32 encoded form and returns an encoded string
-| b | FROM_BASE32(string)                            | Returns the decoded 
result of a base-32 *string* as a string
-| m | TO_BASE64(string)                              | Converts the *string* 
to base-64 encoded form and returns a encoded string
-| b m | FROM_BASE64(string)                          | Returns the decoded 
result of a base-64 *string* as a string. If the input argument is an invalid 
base-64 *string* the function returns `NULL`
-| h | BASE64(string)                                 | Converts the *string* 
to base-64 encoded form and returns a encoded string
-| h | UNBASE64(string)                               | Returns the decoded 
result of a base-64 *string* as a string. If the input argument is an invalid 
base-64 *string* the function returns `NULL`
-| h s | HEX(string)                                  | Converts *string* into 
a hexadecimal varchar
-| b | TO_HEX(binary)                                 | Converts *binary* into 
a hexadecimal varchar
-| b | FROM_HEX(varchar)                              | Converts a 
hexadecimal-encoded *varchar* into bytes
-| s h | BIN(BIGINT)                                  | Converts a *bigint* 
into bytes string
-| b o p r s h | LTRIM(string)                        | Returns *string* with 
all blanks removed from the start
-| s | MAP()                                          | Returns an empty map
-| s | MAP(key, value [, key, value]*)                | Returns a map with the 
given *key*/*value* pairs
-| s | MAP_CONCAT(map [, map]*)                       | Concatenates one or 
more maps. If any input argument is `NULL` the function returns `NULL`. Note 
that calcite is using the LAST_WIN strategy
-| s | MAP_CONTAINS_KEY(map, key)                     | Returns whether *map* 
contains *key*
-| s | MAP_ENTRIES(map)                               | Returns the entries of 
the *map* as an array, the order of the entries is not defined
-| s | MAP_KEYS(map)                                  | Returns the keys of the 
*map* as an array, the order of the entries is not defined
-| s | MAP_VALUES(map)                                | Returns the values of 
the *map* as an array, the order of the entries is not defined
-| s | MAP_FROM_ARRAYS(array1, array2)                | Returns a map created 
from an *array1* and *array2*. Note that the lengths of two arrays should be 
the same and calcite is using the LAST_WIN strategy
-| s | MAP_FROM_ENTRIES(arrayOfRows)                  | Returns a map created 
from an arrays of row with two fields. Note that the number of fields in a row 
must be 2. Note that calcite is using the LAST_WIN strategy
-| s | STR_TO_MAP(string [, stringDelimiter [, keyValueDelimiter]]) | Returns a 
map after splitting the *string* into key/value pairs using delimiters. Default 
delimiters are ',' for *stringDelimiter* and ':' for *keyValueDelimiter*. Note 
that calcite is using the LAST_WIN strategy
-| s | SUBSTRING_INDEX(string, delim, count)          | Returns the substring 
from *string* before *count* occurrences of the delimiter *delim*. If *count* 
is positive, everything to the left of the final delimiter (counting from the 
left) is returned. If *count* is negative, everything to the right of the final 
delimiter (counting from the right) is returned. The function substring_index 
performs a case-sensitive match when searching for *delim*.
-| p r | STRING_TO_ARRAY(string, delimiter [, nullString ]) | Returns a 
one-dimensional string[] array by splitting the input string value into 
subvalues using the specified string value as the "delimiter". Optionally, 
allows a specified string value to be interpreted as NULL.
-| b m p r s h | MD5(string)                          | Calculates an MD5 
128-bit checksum of *string* and returns it as a hex string
-| m | MONTHNAME(date)                                | Returns the name, in 
the connection's locale, of the month in *datetime*; for example, for a locale 
of en, it will return 'February' for both DATE '2020-02-10' and TIMESTAMP 
'2020-02-10 10:10:10', and for a locale of zh, it will return '二月'
-| o r s | NVL(value1, value2)                        | Returns *value1* if 
*value1* is not null, otherwise *value2*
-| o r s | NVL2(value1, value2, value3)               | Returns *value2* if 
*value1* is not null, otherwise *value3*
-| b | OFFSET(index)                                  | When indexing an array, 
wrapping *index* in `OFFSET` returns the value at the 0-based *index*; throws 
error if *index* is out of bounds
-| b | ORDINAL(index)                                 | Similar to `OFFSET` 
except *index* begins at 1
-| b | PARSE_DATE(format, string)                     | Uses format specified 
by *format* to convert *string* representation of date to a DATE value
-| b | PARSE_DATETIME(format, string)                 | Uses format specified 
by *format* to convert *string* representation of datetime to a TIMESTAMP value
-| b | PARSE_TIME(format, string)                     | Uses format specified 
by *format* to convert *string* representation of time to a TIME value
-| b | PARSE_TIMESTAMP(format, string[, timeZone])    | Uses format specified 
by *format* to convert *string* representation of timestamp to a TIMESTAMP WITH 
LOCAL TIME ZONE value in *timeZone*
-| h s | PARSE_URL(urlString, partToExtract [, keyToExtract] ) | Returns the 
specified *partToExtract* from the *urlString*. Valid values for 
*partToExtract* include HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and 
USERINFO. *keyToExtract* specifies which query to extract. If the first 
argument is an invalid url *string* the function returns `NULL`
-| b s | POW(numeric1, numeric2)                      | Returns *numeric1* 
raised to the power *numeric2*
-| b c h q m o f s p r | POWER(numeric1, numeric2) | Returns *numeric1* raised 
to the power of *numeric2*
-| p r | RANDOM()                                     | Generates a random 
double between 0 and 1 inclusive
-| s | REGEXP(string, regexp)                         | Equivalent to `string1 
RLIKE string2`
-| b | REGEXP_CONTAINS(string, regexp)                | Returns whether 
*string* is a partial match for the *regexp*
-| b | REGEXP_EXTRACT(string, regexp [, position [, occurrence]]) | Returns the 
substring in *string* that matches the *regexp*, starting search at *position* 
(default 1), and until locating the nth *occurrence* (default 1). Returns NULL 
if there is no match
-| b | REGEXP_EXTRACT_ALL(string, regexp)             | Returns an array of all 
substrings in *string* that matches the *regexp*. Returns an empty array if 
there is no match
+| C | Operator syntax                                                          
        | Description

Review Comment:
   Just my idea's MD plugin helped automatically format it, it has been 
restored and fixed. Thank you again for pointing it out



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to