Browse Source

ESQL: Split the tests for META FUNCTIONS (#106954)

This splits the tests for META FUNCTIONS into a few tests that fit
better on the screen.

There's an interesting bug in the CSV parser where if you end the last
line with an empty string it'll consider it `null` which we think of as
`null`. I bumped into that and it's caused me some trouble. I had to
work around it here. Thus the assertion changes. Basically `[]` will
force us to parse a list. So we can use `[""]` - a list of just the
empty string - to force the testing framework to spit out an empty
string. We only need this because the empty string is the last item in
the list....
Nik Everett 1 year ago
parent
commit
e6ccaf4aab

+ 1 - 6
x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/CsvAssert.java

@@ -79,12 +79,7 @@ public final class CsvAssert {
         var expectedTypes = expected.columnTypes();
 
         assertThat(
-            format(
-                null,
-                "Different number of columns returned; expected [{}] but actual was [{}]",
-                expectedNames.size(),
-                actualNames.size()
-            ),
+            format(null, "Different number of columns returned; expected {} but actual was {}", expectedNames, actualNames),
             actualNames,
             Matchers.hasSize(expectedNames.size())
         );

+ 18 - 12
x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/CsvTestUtils.java

@@ -353,27 +353,33 @@ public final class CsvTestUtils {
                 List<Object> rowValues = new ArrayList<>(row.size());
                 for (int i = 0; i < row.size(); i++) {
                     String value = row.get(i);
-                    if (value == null || value.trim().equalsIgnoreCase(NULL_VALUE)) {
+                    if (value == null) {
                         rowValues.add(null);
                         continue;
                     }
 
                     value = value.trim();
-                    if (value.startsWith("[") ^ value.endsWith("]")) {
-                        throw new IllegalArgumentException("Incomplete multi-value (opening and closing square brackets) found " + value);
+                    if (value.equalsIgnoreCase(NULL_VALUE)) {
+                        rowValues.add(null);
+                        continue;
                     }
-                    if (value.contains(",") && value.startsWith("[")) {
+                    if (value.startsWith("[")) {
+                        if (false == value.endsWith("]")) {
+                            throw new IllegalArgumentException(
+                                "Incomplete multi-value (opening and closing square brackets) found " + value + " on row " + values.size()
+                            );
+                        }
                         // split on commas but ignoring escaped commas
                         String[] multiValues = value.substring(1, value.length() - 1).split(COMMA_ESCAPING_REGEX);
-                        if (multiValues.length > 0) {
-                            List<Object> listOfMvValues = new ArrayList<>();
-                            for (String mvValue : multiValues) {
-                                listOfMvValues.add(columnTypes.get(i).convert(mvValue.trim().replace(ESCAPED_COMMA_SEQUENCE, ",")));
-                            }
-                            rowValues.add(listOfMvValues);
-                        } else {
-                            rowValues.add(columnTypes.get(i).convert(value.replace(ESCAPED_COMMA_SEQUENCE, ",")));
+                        if (multiValues.length == 1) {
+                            rowValues.add(columnTypes.get(i).convert(multiValues[0].replace(ESCAPED_COMMA_SEQUENCE, ",")));
+                            continue;
+                        }
+                        List<Object> listOfMvValues = new ArrayList<>();
+                        for (String mvValue : multiValues) {
+                            listOfMvValues.add(columnTypes.get(i).convert(mvValue.trim().replace(ESCAPED_COMMA_SEQUENCE, ",")));
                         }
+                        rowValues.add(listOfMvValues);
                     } else {
                         // The value considered here is the one where any potential escaped comma is kept as is (with the escape char)
                         // TODO if we'd want escaped commas outside multi-values fields, we'd have to adjust this value here as well

+ 2 - 2
x-pack/plugin/esql/qa/testFixtures/src/main/resources/docs.csv-spec

@@ -486,8 +486,8 @@ ROW message="[1998-08-10T17:15:42]          [WARN]"
 ;
 
 // tag::dissectEmptyRightPaddingModifier-result[]
-message:keyword  | ts:keyword | level:keyword
-[1998-08-10T17:15:42]          [WARN]|1998-08-10T17:15:42 |WARN
+             message:keyword             |     ts:keyword     |level:keyword
+["[1998-08-10T17:15:42]          [WARN]"]|1998-08-10T17:15:42 |WARN
 // end::dissectEmptyRightPaddingModifier-result[]
 ;
 

+ 324 - 108
x-pack/plugin/esql/qa/testFixtures/src/main/resources/meta.csv-spec

@@ -1,110 +1,3 @@
-# TODO: switch this test to ``&format=csv&delimiter=|` output
-metaFunctions#[skip:-8.13.99]
-meta functions;
-
-       name:keyword      |                        synopsis:keyword          |       argNames:keyword  | argTypes:keyword |             argDescriptions:keyword                |returnType:keyword   |    description:keyword  | optionalArgs:boolean | variadic:boolean | isAggregation:boolean               
-abs                      |"double|integer|long|unsigned_long abs(number:double|integer|long|unsigned_long)"      |number                        |"double|integer|long|unsigned_long"                | "Numeric expression. If `null`, the function returns `null`."                                                 |"double|integer|long|unsigned_long"                    | "Returns the absolute value."                      | false                | false | false
-acos                     |"double acos(number:double|integer|long|unsigned_long)" |number |"double|integer|long|unsigned_long" |"Number between -1 and 1. If `null`, the function returns `null`."  |double |"Returns the {wikipedia}/Inverse_trigonometric_functions[arccosine] of `n` as an angle, expressed in radians." | false                | false | false
-asin                     |"double asin(number:double|integer|long|unsigned_long)" |number |"double|integer|long|unsigned_long" |"Number between -1 and 1. If `null`, the function returns `null`."  |double |"Returns the {wikipedia}/Inverse_trigonometric_functions[arcsine] of the input numeric expression as an angle, expressed in radians." | false                | false | false
-atan                     |"double atan(number:double|integer|long|unsigned_long)" |number |"double|integer|long|unsigned_long" |"Numeric expression. If `null`, the function returns `null`."       |double |"Returns the {wikipedia}/Inverse_trigonometric_functions[arctangent] of the input numeric expression as an angle, expressed in radians." | false                | false | false
-atan2                    |"double atan2(y_coordinate:double|integer|long|unsigned_long, x_coordinate:double|integer|long|unsigned_long)" |[y_coordinate, x_coordinate] |["double|integer|long|unsigned_long", "double|integer|long|unsigned_long"] |["y coordinate. If `null`\, the function returns `null`.", "x coordinate. If `null`\, the function returns `null`."] |double                    | "The {wikipedia}/Atan2[angle] between the positive x-axis and the ray from the origin to the point (x , y) in the Cartesian plane, expressed in radians."                      | [false, false]       | false | false
-auto_bucket              |"double|date auto_bucket(field:integer|long|double|date, buckets:integer, from:integer|long|double|date|string, to:integer|long|double|date|string)"           |[field, buckets, from, to] |["integer|long|double|date", "integer", "integer|long|double|date|string", "integer|long|double|date|string"]      |["", "", "", ""]                                    | "double|date"                    | "Creates human-friendly buckets and returns a datetime value for each row that corresponds to the resulting bucket the row falls into."                      | [false, false, false, false]   | false | false
-avg                      |"double avg(number:double|integer|long)"                                           |number                     |"double|integer|long"                 |   ""                                               |double                    | "The average of a numeric field."                      | false                | false | true
-case                     |"boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version case(condition:boolean, trueValue...:boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version)"                               |[condition, trueValue]             |["boolean", "boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version"]            |["", ""]                                            |"boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version"                    | "Accepts pairs of conditions and values. The function returns the value that belongs to the first condition that evaluates to true."                      | [false, false]       | true | false
-ceil                     |"double|integer|long|unsigned_long ceil(number:double|integer|long|unsigned_long)"     |number                        |"double|integer|long|unsigned_long"                 | "Numeric expression. If `null`, the function returns `null`." | "double|integer|long|unsigned_long"                    | "Round a number up to the nearest integer."                      | false                | false | false
-cidr_match               |"boolean cidr_match(ip:ip, blockX...:keyword|text)"                         |[ip, blockX]             |[ip, "keyword|text"]            |["", "CIDR block to test the IP against."]                                            |boolean                    | "Returns true if the provided IP is contained in one of the provided CIDR blocks."                      | [false, false]       | true | false
-coalesce                 |"boolean|text|integer|keyword|long coalesce(first:boolean|text|integer|keyword|long, ?rest...:boolean|text|integer|keyword|long)"                           |first             | "boolean|text|integer|keyword|long"            | "Expression to evaluate"                                            |"boolean|text|integer|keyword|long"                    | "Returns the first of its arguments that is not null. If all arguments are null, it returns `null`."                      | false       | true | false
-concat                   |"keyword concat(string1:keyword|text, string2...:keyword|text)"                             |[string1, string2]             |["keyword|text", "keyword|text"]            |["", ""]                                            |keyword                    | "Concatenates two or more strings."                      | [false, false]       | true | false
-cos                      |"double cos(angle:double|integer|long|unsigned_long)"      |angle             |"double|integer|long|unsigned_long"                 | "An angle, in radians. If `null`, the function returns `null`."  |double         | "Returns the {wikipedia}/Sine_and_cosine[cosine] of an angle." | false                | false | false
-cosh                     |"double cosh(angle:double|integer|long|unsigned_long)"     |angle             |"double|integer|long|unsigned_long"                 | "An angle, in radians. If `null`, the function returns `null`."  |double         | "Returns the {wikipedia}/Hyperbolic_functions[hyperbolic cosine] of an angle." | false                | false | false
-count                    |"long count(?field:boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version)"                                         |field                     |"boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version"                 | "Column or literal for which to count the number of values."                                                 |long                    | "Returns the total number (count) of input values."                      | true                | false | true
-count_distinct           |"long count_distinct(field:boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|version, ?precision:integer)"                        |[field, precision]             |["boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|version, integer"]            |["Column or literal for which to count the number of distinct values.", ""]                                            |long                    | "Returns the approximate number of distinct values."                      | [false, true]       | false | true
-date_diff                |"integer date_diff(unit:keyword|text, startTimestamp:date, endTimestamp:date)"|[unit, startTimestamp, endTimestamp] |["keyword|text", "date", "date"]  |["A valid date unit", "A string representing a start timestamp", "A string representing an end timestamp"] |integer | "Subtract 2 dates and return their difference in multiples of a unit specified in the 1st argument" | [false, false, false] | false | false
-date_extract             |"long date_extract(datePart:keyword|text, date:date)"                          |[datePart, date]             |["keyword|text", date]            |["Part of the date to extract. Can be: aligned_day_of_week_in_month; aligned_day_of_week_in_year; aligned_week_of_month; aligned_week_of_year; ampm_of_day; clock_hour_of_ampm; clock_hour_of_day; day_of_month; day_of_week; day_of_year; epoch_day; era; hour_of_ampm; hour_of_day; instant_seconds; micro_of_day; micro_of_second; milli_of_day; milli_of_second; minute_of_day; minute_of_hour; month_of_year; nano_of_day; nano_of_second; offset_seconds; proleptic_month; second_of_day; second_of_minute; year; or year_of_era.", "Date expression"]                                            |long                    | "Extracts parts of a date, like year, month, day, hour."                      | [false, false]       | false | false
-date_format              |"keyword date_format(?dateFormat:keyword|text, date:date)"                           |[dateFormat, date]             |["keyword|text", date]            |["A valid date pattern", "Date expression"]                                            |keyword                    | "Returns a string representation of a date, in the provided format."                      | [true, false]       | false | false
-date_parse               |"date date_parse(?datePattern:keyword|text, dateString:keyword|text)"|[datePattern, dateString]|["keyword|text", "keyword|text"]|["A valid date pattern", "A string representing a date"]|date                 |Parses a string into a date value | [true, false]       | false          | false
-date_trunc               |"date date_trunc(interval:keyword, date:date)"                            |[interval, date]             |["keyword", date]            |["Interval; expressed using the timespan literal syntax.", "Date expression"]                                            |date                    | "Rounds down a date to the closest interval."                      | [false, false]       | false | false
-e                        |double e()                                                   | null                    | null             | null                                               |double                    | "Euler’s number."                      | null                 | false | false
-ends_with                |"boolean ends_with(str:keyword|text, suffix:keyword|text)"                             |[str, suffix]             |["keyword|text", "keyword|text"]            |["", ""]                                            |boolean                    | "Returns a boolean that indicates whether a keyword string ends with another string"                      | [false, false]       | false | false
-floor                    |"double|integer|long|unsigned_long floor(number:double|integer|long|unsigned_long)"    |number                       |"double|integer|long|unsigned_long"    | ""                                                 |"double|integer|long|unsigned_long"                    | "Round a number down to the nearest integer."                      | false                | false | false
-greatest                 |"integer|long|double|boolean|keyword|text|ip|version greatest(first:integer|long|double|boolean|keyword|text|ip|version, ?rest...:integer|long|double|boolean|keyword|text|ip|version)"        | first            |"integer|long|double|boolean|keyword|text|ip|version"            |""                                            |"integer|long|double|boolean|keyword|text|ip|version"                    | "Returns the maximum value from many columns."                      | false       | true | false
-least                    |"integer|long|double|boolean|keyword|text|ip|version least(first:integer|long|double|boolean|keyword|text|ip|version, ?rest...:integer|long|double|boolean|keyword|text|ip|version)"        | first           |"integer|long|double|boolean|keyword|text|ip|version"            |""                                            |"integer|long|double|boolean|keyword|text|ip|version"                    | "Returns the minimum value from many columns."                      | false       | true | false
-left                     |"keyword left(string:keyword|text, length:integer)"                |[string, length]         |["keyword|text", "integer"]            |["The string from which to return a substring.", "The number of characters to return."]                                            |keyword                    | "Returns the substring that extracts 'length' chars from 'string' starting from the left."                      | [false, false]       | false | false
-length                   |"integer length(string:keyword|text)"                                        |string                     |"keyword|text"                 | ""                                                 |integer                    | "Returns the character length of a string."                      | false                | false | false
-log                      |"double log(?base:integer|unsigned_long|long|double, number:integer|unsigned_long|long|double)"          |[base, number]                        |["integer|unsigned_long|long|double", "integer|unsigned_long|long|double"]| ["", ""]                                                 |double                    | "Returns the logarithm of a number to a base."                      | [true, false]                | false | false
-log10                    |"double log10(number:double|integer|long|unsigned_long)"          |number                       |"double|integer|long|unsigned_long" | ""                                                 |double                    | "Returns the log base 10."                      | false                | false | false
-ltrim                    |"keyword|text ltrim(string:keyword|text)"                  |string                      |"keyword|text"    | ""                                                 |"keyword|text"       |Removes leading whitespaces from a string.| false | false | false
-max                      |"double|integer|long max(number:double|integer|long)"                                           |number                     |"double|integer|long"                 | ""                                                 |"double|integer|long"                    | "The maximum value of a numeric field."                      | false                | false | true
-median                   |"double|integer|long median(number:double|integer|long)"                                        |number                     |"double|integer|long"                 | ""                                                 |"double|integer|long"                    | "The value that is greater than half of all values and less than half of all values."                      | false                | false | true
-median_absolute_deviation|"double|integer|long median_absolute_deviation(number:double|integer|long)"                     |number                     |"double|integer|long"                 | ""                                                 |"double|integer|long"                    | "The median absolute deviation, a measure of variability."                      | false                | false | true
-min                      |"double|integer|long min(number:double|integer|long)"                                           |number                     |"double|integer|long"                 | ""                                                 |"double|integer|long"                    | "The minimum value of a numeric field."                      | false                | false | true
-mv_avg                   |"double mv_avg(number:double|integer|long|unsigned_long)"                                        |number                     |"double|integer|long|unsigned_long"                 | ""                                                 |double                    | "Converts a multivalued field into a single valued field containing the average of all of the values."                      | false                | false | false
-mv_concat                |"keyword mv_concat(string:text|keyword, delim:text|keyword)" |[string, delim]               |["text|keyword", "text|keyword"] |["values to join", "delimiter"]      |keyword              | "Reduce a multivalued string field to a single valued field by concatenating all values." | [false, false]       | false | false
-mv_count                 |"integer mv_count(field:boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version)" |field      | "boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version" | "" | integer | "Reduce a multivalued field to a single valued field containing the count of values."       | false                | false | false
-mv_dedupe                |"boolean|date|double|integer|ip|keyword|long|text|version mv_dedupe(field:boolean|date|double|integer|ip|keyword|long|text|version)" |field | "boolean|date|double|integer|ip|keyword|long|text|version" | "" |"boolean|date|double|integer|ip|keyword|long|text|version"   | "Remove duplicate values from a multivalued field."                      | false                | false | false
-mv_first                 |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version mv_first(field:boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version)" |field | "boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version" | "" |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"   | "Reduce a multivalued field to a single valued field containing the first value."                      | false                | false | false
-mv_last                  |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version mv_last(field:boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version)" |field | "boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version" | "" |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"   | "Reduce a multivalued field to a single valued field containing the last value."                      | false                | false | false
-mv_max                   |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version mv_max(field:boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version)" |field | "boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version" | "" |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version"      | "Reduce a multivalued field to a single valued field containing the maximum value." | false                | false | false
-mv_median                |"double|integer|long|unsigned_long mv_median(number:double|integer|long|unsigned_long)"                                     |number                     |"double|integer|long|unsigned_long"                 | ""                                                 |"double|integer|long|unsigned_long"                    | "Converts a multivalued field into a single valued field containing the median value."                      | false                | false | false
-mv_min                   |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version mv_min(field:boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version)" |field | "boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version" | "" |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version"      | "Reduce a multivalued field to a single valued field containing the minimum value." | false                | false | false
-mv_slice                 |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|version mv_slice(field:boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|version, start:integer, ?end:integer)" |[field, start, end] | "[boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|version, integer, integer]" | "[A multivalued field, start index, end index (included)]" |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|version"   | "Returns a subset of the multivalued field using the start and end index values."                      | [false, false, true]                | false | false
-mv_sort                  |"boolean|date|double|integer|ip|keyword|long|text|version mv_sort(field:boolean|date|double|integer|ip|keyword|long|text|version, ?order:keyword)" | [field, order] | ["boolean|date|double|integer|ip|keyword|long|text|version", "keyword"] | ["A multivalued field", "sort order"] |"boolean|date|double|integer|ip|keyword|long|text|version"   | "Sorts a multivalued field in lexicographical order."                      | [false, true]                | false | false
-mv_sum                   |"double|integer|long|unsigned_long mv_sum(number:double|integer|long|unsigned_long)"                                        |number                     |"double|integer|long|unsigned_long"                 | ""                                                 |"double|integer|long|unsigned_long"                    | "Converts a multivalued field into a single valued field containing the sum of all of the values."                      | false                | false | false
-mv_zip                   |"keyword mv_zip(string1:keyword|text, string2:keyword|text, ?delim:keyword|text)"          |[string1, string2, delim] | ["keyword|text", "keyword|text", "keyword|text"] | [A multivalued field, A multivalued field, delimiter] | "keyword" | "Combines the values from two multivalued fields with a delimiter that joins them together." | [false, false, true] | false | false
-now                      |date now()                                                 | null                    |null              | null                                               |date                    | "Returns current date and time."                      | null                 | false | false
-percentile               |"double|integer|long percentile(number:double|integer|long, percentile:double|integer|long)"                            |[number, percentile]             |["double|integer|long, double|integer|long"]            |["", ""]                                            |"double|integer|long"                    | "The value at which a certain percentage of observed values occur."                      | [false, false]       | false | true
-pi                       |double pi()                                                  | null                    |  null            | null                                               |double                    | "The ratio of a circle’s circumference to its diameter."                      | null                 | false | false
-pow                      |"double pow(base:double|integer|long|unsigned_long, exponent:double|integer|long|unsigned_long)" |[base, exponent]         |["double|integer|long|unsigned_long", "double|integer|long|unsigned_long"]           |["", ""]                                            |double                    | "Returns the value of a base raised to the power of an exponent."                      | [false, false]       | false | false
-replace                  |"keyword replace(string:keyword|text, regex:keyword|text, newString:keyword|text)"                       | [string, regex, newString]      | ["keyword|text", "keyword|text", "keyword|text"]        |["", "", ""]                                        |keyword                    | "The function substitutes in the string any match of the regular expression with the replacement string."                      | [false, false, false]| false  | false
-right                    |"keyword right(string:keyword|text, length:integer)"     |[string, length]         |["keyword|text", "integer"]            |["", ""]                                            |keyword                    | "Return the substring that extracts length chars from the string starting from the right."                      | [false, false]       | false | false
-round                    |"double round(number:double, ?decimals:integer)"                                 |[number, decimals]             |["double", "integer"]            |["The numeric value to round", "The number of decimal places to round to. Defaults to 0."]                                            |double                    | "Rounds a number to the closest number with the specified number of digits."                      | [false, true]       | false | false
-rtrim                    |"keyword|text rtrim(string:keyword|text)"                  |string                      |"keyword|text"    | ""                                                 |"keyword|text"       |Removes trailing whitespaces from a string.| false | false | false
-sin                      |"double sin(angle:double|integer|long|unsigned_long)"      |angle            |"double|integer|long|unsigned_long" | "An angle, in radians. If `null`, the function returns `null`."                        | double             | "Returns ths {wikipedia}/Sine_and_cosine[Sine] trigonometric function of an angle." | false                | false            | false
-sinh                     |"double sinh(angle:double|integer|long|unsigned_long)"     |angle            |"double|integer|long|unsigned_long" | "An angle, in radians. If `null`, the function returns `null`." | double             | "Returns the {wikipedia}/Hyperbolic_functions[hyperbolic sine] of an angle."                                   | false                | false            | false
-split                    |"keyword split(string:keyword|text, delim:keyword|text)"                                 |[string, delim]             |["keyword|text", "keyword|text"]            |["", ""]                                            |keyword                    | "Split a single valued string into multiple strings."                      | [false, false]       | false | false
-sqrt                     |"double sqrt(number:double|integer|long|unsigned_long)"     |number                       |"double|integer|long|unsigned_long"                 | ""                                                 |double                    | "Returns the square root of a number."                      | false                | false | false
-st_centroid              |"geo_point|cartesian_point st_centroid(field:geo_point|cartesian_point)" |field  |"geo_point|cartesian_point"                         | ""                                                 |"geo_point|cartesian_point"   | "The centroid of a spatial field."                      | false                | false | true
-st_contains              |"boolean st_contains(geomA:geo_point|cartesian_point|geo_shape|cartesian_shape, geomB:geo_point|cartesian_point|geo_shape|cartesian_shape)"   |[geomA, geomB] |["geo_point|cartesian_point|geo_shape|cartesian_shape", "geo_point|cartesian_point|geo_shape|cartesian_shape"] |["Geometry column name or variable of geometry type", "Geometry column name or variable of geometry type"] |boolean | "Returns whether the first geometry contains the second geometry."  | [false, false] | false | false
-st_intersects            |"boolean st_intersects(geomA:geo_point|cartesian_point|geo_shape|cartesian_shape, geomB:geo_point|cartesian_point|geo_shape|cartesian_shape)" |[geomA, geomB] |["geo_point|cartesian_point|geo_shape|cartesian_shape", "geo_point|cartesian_point|geo_shape|cartesian_shape"] |["Geometry column name or variable of geometry type", "Geometry column name or variable of geometry type"] |boolean | "Returns whether the two geometries or geometry columns intersect." | [false, false] | false | false
-st_within                |"boolean st_within(geomA:geo_point|cartesian_point|geo_shape|cartesian_shape, geomB:geo_point|cartesian_point|geo_shape|cartesian_shape)"     |[geomA, geomB] |["geo_point|cartesian_point|geo_shape|cartesian_shape", "geo_point|cartesian_point|geo_shape|cartesian_shape"] |["Geometry column name or variable of geometry type", "Geometry column name or variable of geometry type"] |boolean | "Returns whether the first geometry is within the second geometry." | [false, false] | false | false
-st_x                     |"double st_x(point:geo_point|cartesian_point)"                           |point  |"geo_point|cartesian_point"                         | ""                                                 |double                        | "Extracts the x-coordinate from a point geometry."      | false                | false | false
-st_y                     |"double st_y(point:geo_point|cartesian_point)"                           |point  |"geo_point|cartesian_point"                         | ""                                                 |double                        | "Extracts the y-coordinate from a point geometry."      | false                | false | false
-starts_with              |"boolean starts_with(str:keyword|text, prefix:keyword|text)"                           |[str, prefix]             |["keyword|text", "keyword|text"]            |["", ""]                                            |boolean                    | "Returns a boolean that indicates whether a keyword string starts with another string"                      | [false, false]       | false | false
-substring                |"keyword substring(string:keyword|text, start:integer, ?length:integer)"                     |[string, start, length]       |["keyword|text", "integer", "integer"]         |["", "", ""]                                        |keyword                    | "Returns a substring of a string, specified by a start position and an optional length"                      | [false, false, true]| false | false
-sum                      |"long sum(number:double|integer|long)"                                          |number                     |"double|integer|long"                 | ""                                                 |long                    | "The sum of a numeric field."                      | false                | false | true
-tan                      |"double tan(angle:double|integer|long|unsigned_long)"      |angle                       |"double|integer|long|unsigned_long"           | "An angle, in radians. If `null`, the function returns `null`." |double               | "Returns the {wikipedia}/Sine_and_cosine[Tangent] trigonometric function of an angle." | false                | false | false
-tanh                     |"double tanh(angle:double|integer|long|unsigned_long)"     |angle                       |"double|integer|long|unsigned_long"           | "An angle, in radians. If `null`, the function returns `null`." |double               | "Returns the {wikipedia}/Hyperbolic_functions[Tangent] hyperbolic function of an angle." | false                | false | false
-tau                      |double tau()                                                 | null                    | null             | null                                               |double                    | "The ratio of a circle’s circumference to its radius."                      | null                 | false | false
-to_bool                  |"boolean to_bool(field:boolean|keyword|text|double|long|unsigned_long|integer)"                      |field   |"boolean|keyword|text|double|long|unsigned_long|integer"                                                   |                                                    |boolean                          | "Converts an input value to a boolean value."                                                                                      |false                       |false           | false
-to_boolean               |"boolean to_boolean(field:boolean|keyword|text|double|long|unsigned_long|integer)"                   |field   |"boolean|keyword|text|double|long|unsigned_long|integer"                                                   |                                                    |boolean                          | "Converts an input value to a boolean value."                                                                                      |false                       |false           | false
-to_cartesianpoint        |"cartesian_point to_cartesianpoint(field:cartesian_point|keyword|text)"                              |field   |"cartesian_point|keyword|text"                                                                             |                                                    |cartesian_point                  | "Converts an input value to a point value."                        |false                 |false | false
-to_cartesianshape        |"cartesian_shape to_cartesianshape(field:cartesian_point|cartesian_shape|keyword|text)"              |field   |"cartesian_point|cartesian_shape|keyword|text"                                                             |                                                    |cartesian_shape                  | "Converts an input value to a shape value."                        |false                 |false | false
-to_datetime              |"date to_datetime(field:date|keyword|text|double|long|unsigned_long|integer)"                        |field   |"date|keyword|text|double|long|unsigned_long|integer"                                                      |                                                    |date                             | "Converts an input value to a date value."                                                                                      |false                       |false           | false
-to_dbl                   |"double to_dbl(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"                   |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |double                           | "Converts an input value to a double value."                                                                                      |false                       |false           | false
-to_degrees               |"double to_degrees(number:double|integer|long|unsigned_long)"                                        |number   |"double|integer|long|unsigned_long"                                                                        |                                                    |double                           | "Converts a number in radians to degrees."                                                                                      |false                       |false           | false
-to_double                |"double to_double(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"                |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |double                           | "Converts an input value to a double value."                                                                                      |false                       |false           | false
-to_dt                    |"date to_dt(field:date|keyword|text|double|long|unsigned_long|integer)"                              |field   |"date|keyword|text|double|long|unsigned_long|integer"                                                      |                                                    |date                             | "Converts an input value to a date value."                                                                                      |false                       |false           | false
-to_geopoint              |"geo_point to_geopoint(field:geo_point|keyword|text)"                                                |field   |"geo_point|keyword|text"                                                                                   |                                                    |geo_point                        | "Converts an input value to a geo_point value."                                                                                     |false                       |false           | false
-to_geoshape              |"geo_shape to_geoshape(field:geo_point|geo_shape|keyword|text)"                                      |field   |"geo_point|geo_shape|keyword|text"                                                                         |                                                    |geo_shape                        | "Converts an input value to a geo_shape value."                                                                                     |false                       |false           | false
-to_int                   |"integer to_int(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"                  |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |integer                          | "Converts an input value to an integer value."                                                                                      |false                       |false           | false
-to_integer               |"integer to_integer(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"              |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |integer                          | "Converts an input value to an integer value."                                                                                      |false                       |false           | false
-to_ip                    |"ip to_ip(field:ip|keyword|text)"                                                                    |field   |"ip|keyword|text"                                                                                          |                                                    |ip                               | "Converts an input string to an IP value."                                                                                      |false                       |false           | false
-to_long                  |"long to_long(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"                    |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |long                             | "Converts an input value to a long value."                                                                                      |false                       |false | false
-to_lower                 |"keyword|text to_lower(str:keyword|text)"                                                        |str |"keyword|text"                                                                                             | "The input string"                                 |"keyword|text"                   | "Returns a new string representing the input string converted to lower case."                                                   |false                       |false | false
-to_radians               |"double to_radians(number:double|integer|long|unsigned_long)"                                         |number   |"double|integer|long|unsigned_long"                                                                        |                                                    |double                           | "Converts a number in degrees to radians."                                                                                      |false                       |false | false
-to_str                   |"keyword to_str(field:boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version)"                  |field                         |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"          |                                                    |keyword                          | "Converts a field into a string."                                                                                      |false                       |false | false
-to_string                |"keyword to_string(field:boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version)"               |field                         |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"          |                                                    |keyword                          | "Converts a field into a string."                                                                                      |false                       |false | false
-to_ul                    |"unsigned_long to_ul(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"             |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |unsigned_long                    | "Converts an input value to an unsigned long value."                                                                                      |false                       |false           | false
-to_ulong                 |"unsigned_long to_ulong(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"          |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |unsigned_long                    | "Converts an input value to an unsigned long value."                                                                                      |false                       |false           | false
-to_unsigned_long         |"unsigned_long to_unsigned_long(field:boolean|date|keyword|text|double|long|unsigned_long|integer)"  |field   |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                              |                                                    |unsigned_long                    | "Converts an input value to an unsigned long value."                                                                                      |false                       |false           | false
-to_upper                 |"keyword|text to_upper(str:keyword|text)"                                                        |str |"keyword|text"                                                                                             | "The input string"                                 |"keyword|text"                   | "Returns a new string representing the input string converted to upper case."                                                   |false                       |false | false
-to_ver                   |"version to_ver(field:keyword|text|version)"                                                         |field   |"keyword|text|version"                                                                                     |                                                    |version                          | "Converts an input string to a version value."                                                                                     |false                       |false           | false
-to_version               |"version to_version(field:keyword|text|version)"                                                     |field  |"keyword|text|version"                                                                                     |                                                    |version                          | "Converts an input string to a version value."                                                                                       |false                       |false           | false
-trim                     |"keyword|text trim(string:keyword|text)"                   |string                      |"keyword|text"    | ""                                                 |"keyword|text"       | "Removes leading and trailing whitespaces from a string." | false | false | false
-values                   |"boolean|date|double|integer|ip|keyword|long|text|version values(field:boolean|date|double|integer|ip|keyword|long|text|version)" |field |"boolean|date|double|integer|ip|keyword|long|text|version"  | |"boolean|date|double|integer|ip|keyword|long|text|version"                                              |"Collect values for a field."                                                                                                         |false                       |false           |true
-;
-
-
 metaFunctionsSynopsis#[skip:-8.13.99]
 meta functions | keep synopsis;
 
@@ -210,9 +103,332 @@ double tau()
 "boolean|date|double|integer|ip|keyword|long|text|version values(field:boolean|date|double|integer|ip|keyword|long|text|version)"
 ;
 
+metaFunctionsArgs#[skip:-8.13.99]
+  META functions
+| EVAL name = SUBSTRING(name, 0, 14)
+| KEEP name, argNames, argTypes, argDescriptions;
+
+ name:keyword |          argNames:keyword          |                                               argTypes:keyword                                                                   |             argDescriptions:keyword
+abs           |number                              |"double|integer|long|unsigned_long"                                                                                               |Numeric expression. If `null`, the function returns `null`.
+acos          |number                              |"double|integer|long|unsigned_long"                                                                                               |Number between -1 and 1. If `null`, the function returns `null`.
+asin          |number                              |"double|integer|long|unsigned_long"                                                                                               |Number between -1 and 1. If `null`, the function returns `null`.
+atan          |number                              |"double|integer|long|unsigned_long"                                                                                               |Numeric expression. If `null`, the function returns `null`.
+atan2         |[y_coordinate, x_coordinate]        |["double|integer|long|unsigned_long", "double|integer|long|unsigned_long"]                                                        |[y coordinate. If `null`\, the function returns `null`., x coordinate. If `null`\, the function returns `null`.]
+auto_bucket   |[field, buckets, from, to]          |["integer|long|double|date", integer, "integer|long|double|date|string", "integer|long|double|date|string"]                       |["", "", "", ""]
+avg           |number                              |"double|integer|long"                                                                                                             |[""]
+case          |[condition, trueValue]              |[boolean, "boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version"]                     |["", ""]
+ceil          |number                              |"double|integer|long|unsigned_long"                                                                                               |Numeric expression. If `null`, the function returns `null`.
+cidr_match    |[ip, blockX]                        |[ip, "keyword|text"]                                                                                                              |[, CIDR block to test the IP against.]
+coalesce      |first                               |"boolean|text|integer|keyword|long"                                                                                               |Expression to evaluate
+concat        |[string1, string2]                  |["keyword|text", "keyword|text"]                                                                                                  |[, ]
+cos           |angle                               |"double|integer|long|unsigned_long"                                                                                               |An angle, in radians. If `null`, the function returns `null`.
+cosh          |angle                               |"double|integer|long|unsigned_long"                                                                                               |An angle, in radians. If `null`, the function returns `null`.
+count         |field                               |"boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version"                                |Column or literal for which to count the number of values.
+count_distinct|[field, precision]                  |["boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|version", integer]                                   |[Column or literal for which to count the number of distinct values., ]
+date_diff     |[unit, startTimestamp, endTimestamp]|["keyword|text", date, date]                                                                                                      |[A valid date unit, A string representing a start timestamp, A string representing an end timestamp]
+date_extract  |[datePart, date]                    |["keyword|text", date]                                                                                                            |[Part of the date to extract. Can be: aligned_day_of_week_in_month; aligned_day_of_week_in_year; aligned_week_of_month; aligned_week_of_year; ampm_of_day; clock_hour_of_ampm; clock_hour_of_day; day_of_month; day_of_week; day_of_year; epoch_day; era; hour_of_ampm; hour_of_day; instant_seconds; micro_of_day; micro_of_second; milli_of_day; milli_of_second; minute_of_day; minute_of_hour; month_of_year; nano_of_day; nano_of_second; offset_seconds; proleptic_month; second_of_day; second_of_minute; year; or year_of_era., Date expression]
+date_format   |[dateFormat, date]                  |["keyword|text", date]                                                                                                            |[A valid date pattern, Date expression]
+date_parse    |[datePattern, dateString]           |["keyword|text", "keyword|text"]                                                                                                  |[A valid date pattern, A string representing a date]
+date_trunc    |[interval, date]                    |[keyword, date]                                                                                                                   |[Interval; expressed using the timespan literal syntax., Date expression]
+e             |null                                |null                                                                                                                              |null
+ends_with     |[str, suffix]                       |["keyword|text", "keyword|text"]                                                                                                  |[, ]
+floor         |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+greatest      |first                               |"integer|long|double|boolean|keyword|text|ip|version"                                                                             |[""]
+least         |first                               |"integer|long|double|boolean|keyword|text|ip|version"                                                                             |[""]
+left          |[string, length]                    |["keyword|text", integer]                                                                                                         |[The string from which to return a substring., The number of characters to return.]
+length        |string                              |"keyword|text"                                                                                                                    |[""]
+log           |[base, number]                      |["integer|unsigned_long|long|double", "integer|unsigned_long|long|double"]                                                        |[, ]
+log10         |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+ltrim         |string                              |"keyword|text"                                                                                                                    |[""]
+max           |number                              |"double|integer|long"                                                                                                             |[""]
+median        |number                              |"double|integer|long"                                                                                                             |[""]
+median_absolut|number                              |"double|integer|long"                                                                                                             |[""]
+min           |number                              |"double|integer|long"                                                                                                             |[""]
+mv_avg        |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+mv_concat     |[string, delim]                     |["text|keyword", "text|keyword"]                                                                                                  |[values to join, delimiter]
+mv_count      |field                               |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"      |[""]
+mv_dedupe     |field                               |"boolean|date|double|integer|ip|keyword|long|text|version"                                                                        |[""]
+mv_first      |field                               |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"      |[""]
+mv_last       |field                               |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"      |[""]
+mv_max        |field                               |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version"                                                          |[""]
+mv_median     |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+mv_min        |field                               |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version"                                                          |[""]
+mv_slice      |[field, start, end]                 |["boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|version", integer, integer]|[A multivalued field, start index, end index (included)]
+mv_sort       |[field, order]                      |["boolean|date|double|integer|ip|keyword|long|text|version", keyword]                                                             |[A multivalued field, sort order]
+mv_sum        |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+mv_zip        |[string1, string2, delim]           |["keyword|text", "keyword|text", "keyword|text"]                                                                                  |[A multivalued field, A multivalued field, delimiter]
+now           |null                                |null                                                                                                                              |null
+percentile    |[number, percentile]                |["double|integer|long", "double|integer|long"]                                                                                    |[, ]
+pi            |null                                |null                                                                                                                              |null
+pow           |[base, exponent]                    |["double|integer|long|unsigned_long", "double|integer|long|unsigned_long"]                                                        |[, ]
+replace       |[string, regex, newString]          |["keyword|text", "keyword|text", "keyword|text"]                                                                                  |[, , ]
+right         |[string, length]                    |["keyword|text", integer]                                                                                                         |[, ]
+round         |[number, decimals]                  |[double, integer]                                                                                                                 |[The numeric value to round, The number of decimal places to round to. Defaults to 0.]
+rtrim         |string                              |"keyword|text"                                                                                                                    |[""]
+sin           |angle                               |"double|integer|long|unsigned_long"                                                                                               |An angle, in radians. If `null`, the function returns `null`.
+sinh          |angle                               |"double|integer|long|unsigned_long"                                                                                               |An angle, in radians. If `null`, the function returns `null`.
+split         |[string, delim]                     |["keyword|text", "keyword|text"]                                                                                                  |[, ]
+sqrt          |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+st_centroid   |field                               |"geo_point|cartesian_point"                                                                                                       |[""]
+st_contains   |[geomA, geomB]                      |["geo_point|cartesian_point|geo_shape|cartesian_shape", "geo_point|cartesian_point|geo_shape|cartesian_shape"]                    |[Geometry column name or variable of geometry type, Geometry column name or variable of geometry type]
+st_intersects |[geomA, geomB]                      |["geo_point|cartesian_point|geo_shape|cartesian_shape", "geo_point|cartesian_point|geo_shape|cartesian_shape"]                    |[Geometry column name or variable of geometry type, Geometry column name or variable of geometry type]
+st_within     |[geomA, geomB]                      |["geo_point|cartesian_point|geo_shape|cartesian_shape", "geo_point|cartesian_point|geo_shape|cartesian_shape"]                    |[Geometry column name or variable of geometry type, Geometry column name or variable of geometry type]
+st_x          |point                               |"geo_point|cartesian_point"                                                                                                       |[""]
+st_y          |point                               |"geo_point|cartesian_point"                                                                                                       |[""]
+starts_with   |[str, prefix]                       |["keyword|text", "keyword|text"]                                                                                                  |[, ]
+substring     |[string, start, length]             |["keyword|text", integer, integer]                                                                                                |[, , ]
+sum           |number                              |"double|integer|long"                                                                                                             |[""]
+tan           |angle                               |"double|integer|long|unsigned_long"                                                                                               |An angle, in radians. If `null`, the function returns `null`.
+tanh          |angle                               |"double|integer|long|unsigned_long"                                                                                               |An angle, in radians. If `null`, the function returns `null`.
+tau           |null                                |null                                                                                                                              |null
+to_bool       |field                               |"boolean|keyword|text|double|long|unsigned_long|integer"                                                                          |[""]
+to_boolean    |field                               |"boolean|keyword|text|double|long|unsigned_long|integer"                                                                          |[""]
+to_cartesianpo|field                               |"cartesian_point|keyword|text"                                                                                                    |[""]
+to_cartesiansh|field                               |"cartesian_point|cartesian_shape|keyword|text"                                                                                    |[""]
+to_datetime   |field                               |"date|keyword|text|double|long|unsigned_long|integer"                                                                             |[""]
+to_dbl        |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_degrees    |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+to_double     |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_dt         |field                               |"date|keyword|text|double|long|unsigned_long|integer"                                                                             |[""]
+to_geopoint   |field                               |"geo_point|keyword|text"                                                                                                          |[""]
+to_geoshape   |field                               |"geo_point|geo_shape|keyword|text"                                                                                                |[""]
+to_int        |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_integer    |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_ip         |field                               |"ip|keyword|text"                                                                                                                 |[""]
+to_long       |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_lower      |str                                 |"keyword|text"                                                                                                                    |The input string
+to_radians    |number                              |"double|integer|long|unsigned_long"                                                                                               |[""]
+to_str        |field                               |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"      |[""]
+to_string     |field                               |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"      |[""]
+to_ul         |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_ulong      |field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_unsigned_lo|field                               |"boolean|date|keyword|text|double|long|unsigned_long|integer"                                                                     |[""]
+to_upper      |str                                 |"keyword|text"                                                                                                                    |The input string
+to_ver        |field                               |"keyword|text|version"                                                                                                            |[""]
+to_version    |field                               |"keyword|text|version"                                                                                                            |[""]
+trim          |string                              |"keyword|text"                                                                                                                    |[""]
+values        |field                               |"boolean|date|double|integer|ip|keyword|long|text|version"                                                                        |[""]
+;
+
+metaFunctionsDescription#[skip:-8.13.99]
+  META functions
+| EVAL name = SUBSTRING(name, 0, 14)
+| KEEP name, description
+;
+
+ name:keyword | description:keyword
+abs           |Returns the absolute value.
+acos          |Returns the {wikipedia}/Inverse_trigonometric_functions[arccosine] of `n` as an angle, expressed in radians.
+asin          |Returns the {wikipedia}/Inverse_trigonometric_functions[arcsine] of the input numeric expression as an angle, expressed in radians.
+atan          |Returns the {wikipedia}/Inverse_trigonometric_functions[arctangent] of the input numeric expression as an angle, expressed in radians.
+atan2         |The {wikipedia}/Atan2[angle] between the positive x-axis and the ray from the origin to the point (x , y) in the Cartesian plane, expressed in radians.
+auto_bucket   |Creates human-friendly buckets and returns a datetime value for each row that corresponds to the resulting bucket the row falls into.
+avg           |The average of a numeric field.
+case          |Accepts pairs of conditions and values. The function returns the value that belongs to the first condition that evaluates to true.
+ceil          |Round a number up to the nearest integer.
+cidr_match    |Returns true if the provided IP is contained in one of the provided CIDR blocks.
+coalesce      |Returns the first of its arguments that is not null. If all arguments are null, it returns `null`.
+concat        |Concatenates two or more strings.
+cos           |Returns the {wikipedia}/Sine_and_cosine[cosine] of an angle.
+cosh          |Returns the {wikipedia}/Hyperbolic_functions[hyperbolic cosine] of an angle.
+count         |Returns the total number (count) of input values.
+count_distinct|Returns the approximate number of distinct values.
+date_diff     |Subtract 2 dates and return their difference in multiples of a unit specified in the 1st argument
+date_extract  |Extracts parts of a date, like year, month, day, hour.
+date_format   |Returns a string representation of a date, in the provided format.
+date_parse    |Parses a string into a date value
+date_trunc    |Rounds down a date to the closest interval.
+e             |Euler’s number.
+ends_with     |Returns a boolean that indicates whether a keyword string ends with another string
+floor         |Round a number down to the nearest integer.
+greatest      |Returns the maximum value from many columns.
+least         |Returns the minimum value from many columns.
+left          |Returns the substring that extracts 'length' chars from 'string' starting from the left.
+length        |Returns the character length of a string.
+log           |Returns the logarithm of a number to a base.
+log10         |Returns the log base 10.
+ltrim         |Removes leading whitespaces from a string.
+max           |The maximum value of a numeric field.
+median        |The value that is greater than half of all values and less than half of all values.
+median_absolut|The median absolute deviation, a measure of variability.
+min           |The minimum value of a numeric field.
+mv_avg        |Converts a multivalued field into a single valued field containing the average of all of the values.
+mv_concat     |Reduce a multivalued string field to a single valued field by concatenating all values.
+mv_count      |Reduce a multivalued field to a single valued field containing the count of values.
+mv_dedupe     |Remove duplicate values from a multivalued field.
+mv_first      |Reduce a multivalued field to a single valued field containing the first value.
+mv_last       |Reduce a multivalued field to a single valued field containing the last value.
+mv_max        |Reduce a multivalued field to a single valued field containing the maximum value.
+mv_median     |Converts a multivalued field into a single valued field containing the median value.
+mv_min        |Reduce a multivalued field to a single valued field containing the minimum value.
+mv_slice      |Returns a subset of the multivalued field using the start and end index values.
+mv_sort       |Sorts a multivalued field in lexicographical order.
+mv_sum        |Converts a multivalued field into a single valued field containing the sum of all of the values.
+mv_zip        |Combines the values from two multivalued fields with a delimiter that joins them together.
+now           |Returns current date and time.
+percentile    |The value at which a certain percentage of observed values occur.
+pi            |The ratio of a circle’s circumference to its diameter.
+pow           |Returns the value of a base raised to the power of an exponent.
+replace       |The function substitutes in the string any match of the regular expression with the replacement string.
+right         |Return the substring that extracts length chars from the string starting from the right.
+round         |Rounds a number to the closest number with the specified number of digits.
+rtrim         |Removes trailing whitespaces from a string.
+sin           |Returns ths {wikipedia}/Sine_and_cosine[Sine] trigonometric function of an angle.
+sinh          |Returns the {wikipedia}/Hyperbolic_functions[hyperbolic sine] of an angle.
+split         |Split a single valued string into multiple strings.
+sqrt          |Returns the square root of a number.
+st_centroid   |The centroid of a spatial field.
+st_contains   |Returns whether the first geometry contains the second geometry.
+st_intersects |Returns whether the two geometries or geometry columns intersect.
+st_within     |Returns whether the first geometry is within the second geometry.
+st_x          |Extracts the x-coordinate from a point geometry.
+st_y          |Extracts the y-coordinate from a point geometry.
+starts_with  |Returns a boolean that indicates whether a keyword string starts with another string
+substring     |Returns a substring of a string, specified by a start position and an optional length
+sum           |The sum of a numeric field.
+tan           |Returns the {wikipedia}/Sine_and_cosine[Tangent] trigonometric function of an angle.
+tanh          |Returns the {wikipedia}/Hyperbolic_functions[Tangent] hyperbolic function of an angle.
+tau           |The ratio of a circle’s circumference to its radius.
+to_bool       |Converts an input value to a boolean value.
+to_boolean    |Converts an input value to a boolean value.
+to_cartesianpo|Converts an input value to a point value.
+to_cartesiansh|Converts an input value to a shape value.
+to_datetime   |Converts an input value to a date value.
+to_dbl        |Converts an input value to a double value.
+to_degrees    |Converts a number in radians to degrees.
+to_double     |Converts an input value to a double value.
+to_dt         |Converts an input value to a date value.
+to_geopoint   |Converts an input value to a geo_point value.
+to_geoshape   |Converts an input value to a geo_shape value.
+to_int        |Converts an input value to an integer value.
+to_integer    |Converts an input value to an integer value.
+to_ip         |Converts an input string to an IP value.
+to_long       |Converts an input value to a long value.
+to_lower      |Returns a new string representing the input string converted to lower case.
+to_radians    |Converts a number in degrees to radians.
+to_str        |Converts a field into a string.
+to_string     |Converts a field into a string.
+to_ul         |Converts an input value to an unsigned long value.
+to_ulong      |Converts an input value to an unsigned long value.
+to_unsigned_lo|Converts an input value to an unsigned long value.
+to_upper      |Returns a new string representing the input string converted to upper case.
+to_ver        |Converts an input string to a version value.
+to_version    |Converts an input string to a version value.
+trim          |Removes leading and trailing whitespaces from a string.
+values        |Collect values for a field.
+;
+
+metaFunctionsRemaining#[skip:-8.13.99]
+  META functions
+| EVAL name = SUBSTRING(name, 0, 14)
+| KEEP name, *
+| DROP synopsis, description, argNames, argTypes, argDescriptions
+;
+
+ name:keyword |                                                    returnType:keyword                                                      |    optionalArgs:boolean    |variadic:boolean|isAggregation:boolean
+abs           |"double|integer|long|unsigned_long"                                                                                         |false                       |false           |false
+acos          |double                                                                                                                      |false                       |false           |false
+asin          |double                                                                                                                      |false                       |false           |false
+atan          |double                                                                                                                      |false                       |false           |false
+atan2         |double                                                                                                                      |[false, false]              |false           |false
+auto_bucket   |"double|date"                                                                                                               |[false, false, false, false]|false           |false
+avg           |double                                                                                                                      |false                       |false           |true
+case          |"boolean|cartesian_point|date|double|geo_point|integer|ip|keyword|long|text|unsigned_long|version"                          |[false, false]              |true            |false
+ceil          |"double|integer|long|unsigned_long"                                                                                         |false                       |false           |false
+cidr_match    |boolean                                                                                                                     |[false, false]              |true            |false
+coalesce      |"boolean|text|integer|keyword|long"                                                                                         |false                       |true            |false
+concat        |keyword                                                                                                                     |[false, false]              |true            |false
+cos           |double                                                                                                                      |false                       |false           |false
+cosh          |double                                                                                                                      |false                       |false           |false
+count         |long                                                                                                                        |true                        |false           |true
+count_distinct|long                                                                                                                        |[false, true]               |false           |true
+date_diff     |integer                                                                                                                     |[false, false, false]       |false           |false
+date_extract  |long                                                                                                                        |[false, false]              |false           |false
+date_format   |keyword                                                                                                                     |[true, false]               |false           |false
+date_parse    |date                                                                                                                        |[true, false]               |false           |false
+date_trunc    |date                                                                                                                        |[false, false]              |false           |false
+e             |double                                                                                                                      |null                        |false           |false
+ends_with     |boolean                                                                                                                     |[false, false]              |false           |false
+floor         |"double|integer|long|unsigned_long"                                                                                         |false                       |false           |false
+greatest      |"integer|long|double|boolean|keyword|text|ip|version"                                                                       |false                       |true            |false
+least         |"integer|long|double|boolean|keyword|text|ip|version"                                                                       |false                       |true            |false
+left          |keyword                                                                                                                     |[false, false]              |false           |false
+length        |integer                                                                                                                     |false                       |false           |false
+log           |double                                                                                                                      |[true, false]               |false           |false
+log10         |double                                                                                                                      |false                       |false           |false
+ltrim         |"keyword|text"                                                                                                              |false                       |false           |false
+max           |"double|integer|long"                                                                                                       |false                       |false           |true
+median        |"double|integer|long"                                                                                                       |false                       |false           |true
+median_absolut|"double|integer|long"                                                                                                       |false                       |false           |true
+min           |"double|integer|long"                                                                                                       |false                       |false           |true
+mv_avg        |double                                                                                                                      |false                       |false           |false
+mv_concat     |keyword                                                                                                                     |[false, false]              |false           |false
+mv_count      |integer                                                                                                                     |false                       |false           |false
+mv_dedupe     |"boolean|date|double|integer|ip|keyword|long|text|version"                                                                  |false                       |false           |false
+mv_first      |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"|false                       |false           |false
+mv_last       |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|unsigned_long|version"|false                       |false           |false
+mv_max        |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version"                                                    |false                       |false           |false
+mv_median     |"double|integer|long|unsigned_long"                                                                                         |false                       |false           |false
+mv_min        |"boolean|date|double|integer|ip|keyword|long|text|unsigned_long|version"                                                    |false                       |false           |false
+mv_slice      |"boolean|cartesian_point|cartesian_shape|date|double|geo_point|geo_shape|integer|ip|keyword|long|text|version"              |[false, false, true]        |false           |false
+mv_sort       |"boolean|date|double|integer|ip|keyword|long|text|version"                                                                  |[false, true]               |false           |false
+mv_sum        |"double|integer|long|unsigned_long"                                                                                         |false                       |false           |false
+mv_zip        |keyword                                                                                                                     |[false, false, true]        |false           |false
+now           |date                                                                                                                        |null                        |false           |false
+percentile    |"double|integer|long"                                                                                                       |[false, false]              |false           |true
+pi            |double                                                                                                                      |null                        |false           |false
+pow           |double                                                                                                                      |[false, false]              |false           |false
+replace       |keyword                                                                                                                     |[false, false, false]       |false           |false
+right         |keyword                                                                                                                     |[false, false]              |false           |false
+round         |double                                                                                                                      |[false, true]               |false           |false
+rtrim         |"keyword|text"                                                                                                              |false                       |false           |false
+sin           |double                                                                                                                      |false                       |false           |false
+sinh          |double                                                                                                                      |false                       |false           |false
+split         |keyword                                                                                                                     |[false, false]              |false           |false
+sqrt          |double                                                                                                                      |false                       |false           |false
+st_centroid   |"geo_point|cartesian_point"                                                                                                 |false                       |false           |true
+st_contains   |boolean                                                                                                                     |[false, false]              |false           |false
+st_intersects |boolean                                                                                                                     |[false, false]              |false           |false
+st_within     |boolean                                                                                                                     |[false, false]              |false           |false
+st_x          |double                                                                                                                      |false                       |false           |false
+st_y          |double                                                                                                                      |false                       |false           |false
+starts_with   |boolean                                                                                                                     |[false, false]              |false           |false
+substring     |keyword                                                                                                                     |[false, false, true]        |false           |false
+sum           |long                                                                                                                        |false                       |false           |true
+tan           |double                                                                                                                      |false                       |false           |false
+tanh          |double                                                                                                                      |false                       |false           |false
+tau           |double                                                                                                                      |null                        |false           |false
+to_bool       |boolean                                                                                                                     |false                       |false           |false
+to_boolean    |boolean                                                                                                                     |false                       |false           |false
+to_cartesianpo|cartesian_point                                                                                                             |false                       |false           |false
+to_cartesiansh|cartesian_shape                                                                                                             |false                       |false           |false
+to_datetime   |date                                                                                                                        |false                       |false           |false
+to_dbl        |double                                                                                                                      |false                       |false           |false
+to_degrees    |double                                                                                                                      |false                       |false           |false
+to_double     |double                                                                                                                      |false                       |false           |false
+to_dt         |date                                                                                                                        |false                       |false           |false
+to_geopoint   |geo_point                                                                                                                   |false                       |false           |false
+to_geoshape   |geo_shape                                                                                                                   |false                       |false           |false
+to_int        |integer                                                                                                                     |false                       |false           |false
+to_integer    |integer                                                                                                                     |false                       |false           |false
+to_ip         |ip                                                                                                                          |false                       |false           |false
+to_long       |long                                                                                                                        |false                       |false           |false
+to_lower      |"keyword|text"                                                                                                              |false                       |false           |false
+to_radians    |double                                                                                                                      |false                       |false           |false
+to_str        |keyword                                                                                                                     |false                       |false           |false
+to_string     |keyword                                                                                                                     |false                       |false           |false
+to_ul         |unsigned_long                                                                                                               |false                       |false           |false
+to_ulong      |unsigned_long                                                                                                               |false                       |false           |false
+to_unsigned_lo|unsigned_long                                                                                                               |false                       |false           |false
+to_upper      |"keyword|text"                                                                                                              |false                       |false           |false
+to_ver        |version                                                                                                                     |false                       |false           |false
+to_version    |version                                                                                                                     |false                       |false           |false
+trim          |"keyword|text"                                                                                                              |false                       |false           |false
+values        |"boolean|date|double|integer|ip|keyword|long|text|version"                                                                  |false                       |false           |true
+;
 
 metaFunctionsFiltered#[skip:-8.13.99]
-META FUNCTIONS 
+META FUNCTIONS
 | WHERE STARTS_WITH(name, "sin")
 ;