Edit on GitHub

sqlglot.parsers.clickhouse

  1from __future__ import annotations
  2
  3import typing as t
  4
  5from collections import deque
  6
  7from sqlglot import exp, parser
  8from sqlglot.dialects.dialect import (
  9    build_date_delta,
 10    build_formatted_time,
 11    build_json_extract_path,
 12    build_like,
 13)
 14from sqlglot.helper import seq_get
 15from sqlglot.tokens import Token, TokenType
 16from builtins import type as Type
 17
 18if t.TYPE_CHECKING:
 19    from sqlglot._typing import E
 20    from collections.abc import Mapping, Sequence, Collection
 21
 22
 23def _build_datetime_format(
 24    expr_type: Type[E],
 25) -> t.Callable:
 26    def _builder(args: list, dialect: t.Any) -> E:
 27        expr = build_formatted_time(expr_type)(args, dialect)
 28
 29        timezone = seq_get(args, 2)
 30        if timezone:
 31            expr.set("zone", timezone)
 32
 33        return expr
 34
 35    return _builder
 36
 37
 38def _build_count_if(args: list) -> exp.CountIf | exp.CombinedAggFunc:
 39    if len(args) == 1:
 40        return exp.CountIf(this=seq_get(args, 0))
 41
 42    return exp.CombinedAggFunc(this="countIf", expressions=args)
 43
 44
 45def _build_str_to_date(args: list) -> exp.Cast | exp.Anonymous:
 46    if len(args) == 3:
 47        return exp.Anonymous(this="STR_TO_DATE", expressions=args)
 48
 49    strtodate = exp.StrToDate.from_arg_list(args)
 50    return exp.cast(strtodate, exp.DType.DATETIME.into_expr())
 51
 52
 53def _build_timestamp_trunc(unit: str) -> t.Callable[[list], exp.TimestampTrunc]:
 54    return lambda args: exp.TimestampTrunc(
 55        this=seq_get(args, 0), unit=exp.var(unit), zone=seq_get(args, 1)
 56    )
 57
 58
 59def _build_split_by_char(args: list) -> exp.Split | exp.Anonymous:
 60    sep = seq_get(args, 0)
 61    if isinstance(sep, exp.Literal):
 62        sep_value = sep.to_py()
 63        if isinstance(sep_value, str) and len(sep_value.encode("utf-8")) == 1:
 64            return _build_split(exp.Split)(args)
 65
 66    return exp.Anonymous(this="splitByChar", expressions=args)
 67
 68
 69def _build_split(exp_class: Type[E]) -> t.Callable[[list], E]:
 70    return lambda args: exp_class(
 71        this=seq_get(args, 1), expression=seq_get(args, 0), limit=seq_get(args, 2)
 72    )
 73
 74
 75# Skip the 'week' unit since ClickHouse's toStartOfWeek
 76# uses an extra mode argument to specify the first day of the week
 77TIMESTAMP_TRUNC_UNITS = {
 78    "MICROSECOND",
 79    "MILLISECOND",
 80    "SECOND",
 81    "MINUTE",
 82    "HOUR",
 83    "DAY",
 84    "MONTH",
 85    "QUARTER",
 86    "YEAR",
 87}
 88
 89
 90AGG_FUNCTIONS = {
 91    "count",
 92    "min",
 93    "max",
 94    "sum",
 95    "avg",
 96    "any",
 97    "stddevPop",
 98    "stddevSamp",
 99    "varPop",
100    "varSamp",
101    "corr",
102    "covarPop",
103    "covarSamp",
104    "entropy",
105    "exponentialMovingAverage",
106    "intervalLengthSum",
107    "kolmogorovSmirnovTest",
108    "mannWhitneyUTest",
109    "median",
110    "rankCorr",
111    "sumKahan",
112    "studentTTest",
113    "welchTTest",
114    "anyHeavy",
115    "anyLast",
116    "boundingRatio",
117    "first_value",
118    "last_value",
119    "argMin",
120    "argMax",
121    "avgWeighted",
122    "topK",
123    "approx_top_sum",
124    "topKWeighted",
125    "deltaSum",
126    "deltaSumTimestamp",
127    "groupArray",
128    "groupArrayLast",
129    "groupConcat",
130    "groupUniqArray",
131    "groupArrayInsertAt",
132    "groupArrayMovingAvg",
133    "groupArrayMovingSum",
134    "groupArraySample",
135    "groupBitAnd",
136    "groupBitOr",
137    "groupBitXor",
138    "groupBitmap",
139    "groupBitmapAnd",
140    "groupBitmapOr",
141    "groupBitmapXor",
142    "sumWithOverflow",
143    "sumMap",
144    "minMap",
145    "maxMap",
146    "skewSamp",
147    "skewPop",
148    "kurtSamp",
149    "kurtPop",
150    "uniq",
151    "uniqExact",
152    "uniqCombined",
153    "uniqCombined64",
154    "uniqHLL12",
155    "uniqTheta",
156    "quantile",
157    "quantiles",
158    "quantileExact",
159    "quantilesExact",
160    "quantilesExactExclusive",
161    "quantileExactLow",
162    "quantilesExactLow",
163    "quantileExactHigh",
164    "quantilesExactHigh",
165    "quantileExactWeighted",
166    "quantilesExactWeighted",
167    "quantileTiming",
168    "quantilesTiming",
169    "quantileTimingWeighted",
170    "quantilesTimingWeighted",
171    "quantileDeterministic",
172    "quantilesDeterministic",
173    "quantileTDigest",
174    "quantilesTDigest",
175    "quantileTDigestWeighted",
176    "quantilesTDigestWeighted",
177    "quantileBFloat16",
178    "quantilesBFloat16",
179    "quantileBFloat16Weighted",
180    "quantilesBFloat16Weighted",
181    "simpleLinearRegression",
182    "stochasticLinearRegression",
183    "stochasticLogisticRegression",
184    "categoricalInformationValue",
185    "contingency",
186    "cramersV",
187    "cramersVBiasCorrected",
188    "theilsU",
189    "maxIntersections",
190    "maxIntersectionsPosition",
191    "meanZTest",
192    "quantileInterpolatedWeighted",
193    "quantilesInterpolatedWeighted",
194    "quantileGK",
195    "quantilesGK",
196    "sparkBar",
197    "sumCount",
198    "largestTriangleThreeBuckets",
199    "histogram",
200    "sequenceMatch",
201    "sequenceCount",
202    "windowFunnel",
203    "retention",
204    "uniqUpTo",
205    "sequenceNextNode",
206    "exponentialTimeDecayedAvg",
207}
208
209# Sorted longest-first so that compound suffixes (e.g. "SimpleState") are matched
210# before their sub-suffixes (e.g. "State") when resolving multi-combinator functions.
211AGG_FUNCTIONS_SUFFIXES: list[str] = sorted(
212    [
213        "If",
214        "Array",
215        "ArrayIf",
216        "Map",
217        "SimpleState",
218        "State",
219        "Merge",
220        "MergeState",
221        "ForEach",
222        "Distinct",
223        "OrDefault",
224        "OrNull",
225        "Resample",
226        "ArgMin",
227        "ArgMax",
228    ],
229    key=len,
230    reverse=True,
231)
232
233# Memoized examples of all 0- and 1-suffix aggregate function names
234AGG_FUNC_MAPPING: Mapping[str, tuple[str, str | None]] = {
235    f"{f}{sfx}": (f, sfx) for sfx in AGG_FUNCTIONS_SUFFIXES for f in AGG_FUNCTIONS
236} | {f: (f, None) for f in AGG_FUNCTIONS}
237
238
239class ClickHouseParser(parser.Parser):
240    # Tested in ClickHouse's playground, it seems that the following two queries do the same thing
241    # * select x from t1 union all select x from t2 limit 1;
242    # * select x from t1 union all (select x from t2 limit 1);
243    MODIFIERS_ATTACHED_TO_SET_OP = False
244    INTERVAL_SPANS = False
245    OPTIONAL_ALIAS_TOKEN_CTE = False
246    JOINS_HAVE_EQUAL_PRECEDENCE = True
247
248    FUNCTIONS = {
249        **{
250            k: v
251            for k, v in parser.Parser.FUNCTIONS.items()
252            if k not in ("TRANSFORM", "APPROX_TOP_SUM")
253        },
254        **{f"TOSTARTOF{unit}": _build_timestamp_trunc(unit=unit) for unit in TIMESTAMP_TRUNC_UNITS},
255        "ANY": exp.AnyValue.from_arg_list,
256        "ARRAYCOMPACT": exp.ArrayCompact.from_arg_list,
257        "ARRAYCONCAT": exp.ArrayConcat.from_arg_list,
258        "ARRAYDISTINCT": exp.ArrayDistinct.from_arg_list,
259        "ARRAYEXCEPT": exp.ArrayExcept.from_arg_list,
260        "ARRAYSUM": exp.ArraySum.from_arg_list,
261        "ARRAYMAX": exp.ArrayMax.from_arg_list,
262        "ARRAYMIN": exp.ArrayMin.from_arg_list,
263        "ARRAYREVERSE": exp.ArrayReverse.from_arg_list,
264        "ARRAYSLICE": exp.ArraySlice.from_arg_list,
265        "ARRAYFILTER": lambda args: exp.ArrayFilter(
266            this=seq_get(args, 1), expression=seq_get(args, 0)
267        ),
268        "ARRAYMAP": lambda args: exp.Transform(this=seq_get(args, 1), expression=seq_get(args, 0)),
269        "CURRENTDATABASE": exp.CurrentDatabase.from_arg_list,
270        "CURRENTSCHEMAS": exp.CurrentSchemas.from_arg_list,
271        "COUNTIF": _build_count_if,
272        "CITYHASH64": exp.CityHash64.from_arg_list,
273        "COSINEDISTANCE": exp.CosineDistance.from_arg_list,
274        "VERSION": exp.CurrentVersion.from_arg_list,
275        "DATE_ADD": build_date_delta(exp.DateAdd, default_unit=None),
276        "DATEADD": build_date_delta(exp.DateAdd, default_unit=None),
277        "DATE_DIFF": build_date_delta(exp.DateDiff, default_unit=None, supports_timezone=True),
278        "DATEDIFF": build_date_delta(exp.DateDiff, default_unit=None, supports_timezone=True),
279        "DATE_FORMAT": _build_datetime_format(exp.TimeToStr),
280        "DATE_SUB": build_date_delta(exp.DateSub, default_unit=None),
281        "DATESUB": build_date_delta(exp.DateSub, default_unit=None),
282        "FORMATDATETIME": _build_datetime_format(exp.TimeToStr),
283        "HAS": exp.ArrayContains.from_arg_list,
284        "ILIKE": build_like(exp.ILike),
285        "JSONEXTRACTSTRING": build_json_extract_path(
286            exp.JSONExtractScalar, zero_based_indexing=False
287        ),
288        "LENGTH": lambda args: exp.Length(this=seq_get(args, 0), binary=True),
289        "LIKE": build_like(exp.Like),
290        "L2Distance": exp.EuclideanDistance.from_arg_list,
291        "MAP": parser.build_var_map,
292        "MATCH": exp.RegexpLike.from_arg_list,
293        "NOTLIKE": build_like(exp.Like, not_like=True),
294        "PARSEDATETIME": _build_datetime_format(exp.ParseDatetime),
295        "RANDCANONICAL": exp.Rand.from_arg_list,
296        "STR_TO_DATE": _build_str_to_date,
297        "TIMESTAMP_SUB": build_date_delta(exp.TimestampSub, default_unit=None),
298        "TIMESTAMPSUB": build_date_delta(exp.TimestampSub, default_unit=None),
299        "TIMESTAMP_ADD": build_date_delta(exp.TimestampAdd, default_unit=None),
300        "TIMESTAMPADD": build_date_delta(exp.TimestampAdd, default_unit=None),
301        "TOMONDAY": _build_timestamp_trunc("WEEK"),
302        "UNIQ": exp.ApproxDistinct.from_arg_list,
303        "MD5": exp.MD5Digest.from_arg_list,
304        "SHA256": lambda args: exp.SHA2(this=seq_get(args, 0), length=exp.Literal.number(256)),
305        "SHA512": lambda args: exp.SHA2(this=seq_get(args, 0), length=exp.Literal.number(512)),
306        "SPLITBYCHAR": _build_split_by_char,
307        "SPLITBYREGEXP": _build_split(exp.RegexpSplit),
308        "SPLITBYSTRING": _build_split(exp.Split),
309        "SUBSTRINGINDEX": exp.SubstringIndex.from_arg_list,
310        "TOTYPENAME": exp.Typeof.from_arg_list,
311        "EDITDISTANCE": exp.Levenshtein.from_arg_list,
312        "JAROWINKLERSIMILARITY": exp.JarowinklerSimilarity.from_arg_list,
313        "LEVENSHTEINDISTANCE": exp.Levenshtein.from_arg_list,
314        "UTCTIMESTAMP": exp.UtcTimestamp.from_arg_list,
315    }
316
317    AGG_FUNCTIONS = AGG_FUNCTIONS
318    AGG_FUNCTIONS_SUFFIXES = AGG_FUNCTIONS_SUFFIXES
319
320    FUNC_TOKENS = {
321        *parser.Parser.FUNC_TOKENS,
322        TokenType.AND,
323        TokenType.FILE,
324        TokenType.OR,
325        TokenType.SET,
326    }
327
328    RESERVED_TOKENS = parser.Parser.RESERVED_TOKENS - {TokenType.SELECT}
329
330    ID_VAR_TOKENS = {
331        *parser.Parser.ID_VAR_TOKENS,
332        TokenType.LIKE,
333    }
334
335    AGG_FUNC_MAPPING = AGG_FUNC_MAPPING
336
337    @classmethod
338    def _resolve_clickhouse_agg(cls, name: str) -> tuple[str, Sequence[str]] | None:
339        # ClickHouse allows chaining multiple combinators on aggregate functions.
340        # See https://clickhouse.com/docs/sql-reference/aggregate-functions/combinators
341        # N.B. this resolution allows any suffix stack, including ones that ClickHouse rejects
342        # syntactically such as sumMergeMerge (due to repeated adjacent suffixes)
343
344        # Until we are able to identify a 1- or 0-suffix aggregate function by name,
345        # repeatedly strip and queue suffixes (checking longer suffixes first, see comment on
346        # AGG_FUNCTIONS_SUFFIXES_SORTED). This loop only runs for 2 or more suffixes,
347        # as AGG_FUNC_MAPPING memoizes all 0- and 1-suffix
348        accumulated_suffixes: deque[str] = deque()
349        while (parts := AGG_FUNC_MAPPING.get(name)) is None:
350            for suffix in AGG_FUNCTIONS_SUFFIXES:
351                if name.endswith(suffix) and len(name) != len(suffix):
352                    accumulated_suffixes.appendleft(suffix)
353                    name = name[: -len(suffix)]
354                    break
355            else:
356                return None
357
358        # We now have a 0- or 1-suffix aggregate
359        agg_func_name, inner_suffix = parts
360        if inner_suffix:
361            # this is a 1-suffix aggregate (either naturally or via repeated suffix
362            # stripping). prepend the innermost suffix.
363            accumulated_suffixes.appendleft(inner_suffix)
364
365        return (agg_func_name, accumulated_suffixes)
366
367    FUNCTION_PARSERS = {
368        **{k: v for k, v in parser.Parser.FUNCTION_PARSERS.items() if k != "MATCH"},
369        "ARRAYJOIN": lambda self: self.expression(exp.Explode(this=self._parse_expression())),
370        "GROUPCONCAT": lambda self: self._parse_group_concat(),
371        "QUANTILE": lambda self: self._parse_quantile(),
372        "MEDIAN": lambda self: self._parse_quantile(),
373        "COLUMNS": lambda self: self._parse_columns(),
374        "TUPLE": lambda self: exp.Struct.from_arg_list(self._parse_function_args(alias=True)),
375        "AND": lambda self: exp.and_(*self._parse_function_args(alias=False)),
376        "OR": lambda self: exp.or_(*self._parse_function_args(alias=False)),
377        "XOR": lambda self: exp.xor(*self._parse_function_args(alias=False)),
378    }
379
380    PROPERTY_PARSERS = {
381        **{k: v for k, v in parser.Parser.PROPERTY_PARSERS.items() if k != "DYNAMIC"},
382        "ENGINE": lambda self: self._parse_engine_property(),
383        "UUID": lambda self: self.expression(exp.UuidProperty(this=self._parse_string())),
384    }
385
386    NO_PAREN_FUNCTION_PARSERS = {
387        k: v for k, v in parser.Parser.NO_PAREN_FUNCTION_PARSERS.items() if k != "ANY"
388    }
389
390    NO_PAREN_FUNCTIONS = {
391        k: v
392        for k, v in parser.Parser.NO_PAREN_FUNCTIONS.items()
393        if k != TokenType.CURRENT_TIMESTAMP
394    }
395
396    RANGE_PARSERS = {
397        **parser.Parser.RANGE_PARSERS,
398        TokenType.GLOBAL: lambda self, this: self._parse_global_in(this),
399    }
400
401    COLUMN_OPERATORS = {
402        **{k: v for k, v in parser.Parser.COLUMN_OPERATORS.items() if k != TokenType.PLACEHOLDER},
403        TokenType.DOTCARET: lambda self, this, field: self.expression(
404            exp.NestedJSONSelect(this=this, expression=field)
405        ),
406    }
407
408    JOIN_KINDS = {
409        *parser.Parser.JOIN_KINDS,
410        TokenType.ALL,
411        TokenType.ANY,
412        TokenType.ASOF,
413        TokenType.ARRAY,
414    }
415
416    TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - {
417        TokenType.ALL,
418        TokenType.ANY,
419        TokenType.ARRAY,
420        TokenType.ASOF,
421        TokenType.FINAL,
422        TokenType.FORMAT,
423        TokenType.SETTINGS,
424    }
425
426    ALIAS_TOKENS = parser.Parser.ALIAS_TOKENS - {
427        TokenType.FORMAT,
428        TokenType.SETTINGS,
429    }
430
431    LOG_DEFAULTS_TO_LN = True
432
433    QUERY_MODIFIER_PARSERS = {
434        **parser.Parser.QUERY_MODIFIER_PARSERS,
435        TokenType.SETTINGS: lambda self: (
436            "settings",
437            self._advance() or self._parse_csv(self._parse_assignment),
438        ),
439        TokenType.FORMAT: lambda self: ("format", self._advance() or self._parse_id_var()),
440    }
441
442    CONSTRAINT_PARSERS = {
443        **parser.Parser.CONSTRAINT_PARSERS,
444        "INDEX": lambda self: self._parse_index_constraint(),
445        "CODEC": lambda self: self._parse_compress(),
446        "ASSUME": lambda self: self._parse_assume_constraint(),
447    }
448
449    ALTER_PARSERS = {
450        **parser.Parser.ALTER_PARSERS,
451        "MODIFY": lambda self: self._parse_alter_table_modify(),
452        "REPLACE": lambda self: self._parse_alter_table_replace(),
453    }
454
455    SCHEMA_UNNAMED_CONSTRAINTS = {
456        *parser.Parser.SCHEMA_UNNAMED_CONSTRAINTS,
457        "INDEX",
458    } - {"CHECK"}
459
460    PLACEHOLDER_PARSERS = {
461        **parser.Parser.PLACEHOLDER_PARSERS,
462        TokenType.L_BRACE: lambda self: self._parse_query_parameter(),
463    }
464
465    STATEMENT_PARSERS = {
466        **parser.Parser.STATEMENT_PARSERS,
467        TokenType.DETACH: lambda self: self._parse_detach(),
468    }
469
470    def _parse_wrapped_select_or_assignment(self) -> exp.Expr | None:
471        return self._parse_wrapped(
472            lambda: self._parse_select() or self._parse_assignment(), optional=True
473        )
474
475    def _parse_check_constraint(self) -> exp.CheckColumnConstraint | None:
476        return self.expression(
477            exp.CheckColumnConstraint(this=self._parse_wrapped_select_or_assignment())
478        )
479
480    def _parse_assume_constraint(self) -> exp.AssumeColumnConstraint | None:
481        return self.expression(
482            exp.AssumeColumnConstraint(this=self._parse_wrapped_select_or_assignment())
483        )
484
485    def _parse_engine_property(self) -> exp.EngineProperty:
486        self._match(TokenType.EQ)
487        return self.expression(
488            exp.EngineProperty(this=self._parse_field(any_token=True, anonymous_func=True))
489        )
490
491    # https://clickhouse.com/docs/en/sql-reference/statements/create/function
492    def _parse_user_defined_function_expression(self) -> exp.Expr | None:
493        return self._parse_lambda()
494
495    def _parse_types(
496        self,
497        check_func: bool = False,
498        schema: bool = False,
499        allow_identifiers: bool = True,
500        with_collation: bool = False,
501    ) -> exp.Expr | None:
502        dtype = super()._parse_types(
503            check_func=check_func,
504            schema=schema,
505            allow_identifiers=allow_identifiers,
506            with_collation=with_collation,
507        )
508        if isinstance(dtype, exp.DataType) and dtype.args.get("nullable") is not True:
509            # Mark every type as non-nullable which is ClickHouse's default, unless it's
510            # already marked as nullable. This marker helps us transpile types from other
511            # dialects to ClickHouse, so that we can e.g. produce `CAST(x AS Nullable(String))`
512            # from `CAST(x AS TEXT)`. If there is a `NULL` value in `x`, the former would
513            # fail in ClickHouse without the `Nullable` type constructor.
514            dtype.set("nullable", False)
515
516        return dtype
517
518    def _parse_extract(self) -> exp.Extract | exp.Anonymous:
519        index = self._index
520        this = self._parse_bitwise()
521        if self._match(TokenType.FROM):
522            self._retreat(index)
523            return super()._parse_extract()
524
525        # We return Anonymous here because extract and regexpExtract have different semantics,
526        # so parsing extract(foo, bar) into RegexpExtract can potentially break queries. E.g.,
527        # `extract('foobar', 'b')` works, but ClickHouse crashes for `regexpExtract('foobar', 'b')`.
528        #
529        # TODO: can we somehow convert the former into an equivalent `regexpExtract` call?
530        self._match(TokenType.COMMA)
531        return self.expression(
532            exp.Anonymous(this="extract", expressions=[this, self._parse_bitwise()])
533        )
534
535    def _parse_assignment(self) -> exp.Expr | None:
536        this = super()._parse_assignment()
537
538        if self._match(TokenType.PLACEHOLDER):
539            return self.expression(
540                exp.If(
541                    this=this,
542                    true=self._parse_assignment(),
543                    false=self._match(TokenType.COLON) and self._parse_assignment(),
544                )
545            )
546
547        return this
548
549    def _parse_query_parameter(self) -> exp.Expr | None:
550        """
551        Parse a placeholder expression like SELECT {abc: UInt32} or FROM {table: Identifier}
552        https://clickhouse.com/docs/en/sql-reference/syntax#defining-and-using-query-parameters
553        """
554        index = self._index
555
556        this = self._parse_id_var()
557        self._match(TokenType.COLON)
558        kind = self._parse_types(check_func=False, allow_identifiers=False) or (
559            self._match_text_seq("IDENTIFIER") and "Identifier"
560        )
561
562        if not kind:
563            self._retreat(index)
564            return None
565        elif not self._match(TokenType.R_BRACE):
566            self.raise_error("Expecting }")
567
568        if isinstance(this, exp.Identifier) and not this.quoted:
569            this = exp.var(this.name)
570
571        return self.expression(exp.Placeholder(this=this, kind=kind))
572
573    def _parse_bracket(self, this: exp.Expr | None = None) -> exp.Expr | None:
574        if this:
575            bracket_json_type = None
576
577            while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
578                bracket_json_type = exp.DataType(
579                    this=exp.DType.ARRAY,
580                    expressions=[
581                        bracket_json_type
582                        or exp.DType.JSON.into_expr(dialect=self.dialect, nullable=False)
583                    ],
584                    nested=True,
585                )
586
587            if bracket_json_type:
588                return self.expression(exp.JSONCast(this=this, to=bracket_json_type))
589
590        l_brace = self._match(TokenType.L_BRACE, advance=False)
591        bracket = super()._parse_bracket(this)
592
593        if l_brace and isinstance(bracket, exp.Struct):
594            varmap = exp.VarMap(keys=exp.Array(), values=exp.Array())
595            for expression in bracket.expressions:
596                if not isinstance(expression, exp.PropertyEQ):
597                    break
598
599                varmap.args["keys"].append("expressions", exp.Literal.string(expression.name))
600                varmap.args["values"].append("expressions", expression.expression)
601
602            return varmap
603
604        return bracket
605
606    def _parse_global_in(self, this: exp.Expr | None) -> exp.Not | exp.In:
607        is_negated = self._match(TokenType.NOT)
608        in_expr: exp.In | None = None
609        if self._match(TokenType.IN):
610            in_expr = self._parse_in(this)
611            in_expr.set("is_global", True)
612        return self.expression(exp.Not(this=in_expr)) if is_negated else t.cast(exp.In, in_expr)
613
614    def _parse_table(
615        self,
616        schema: bool = False,
617        joins: bool = False,
618        alias_tokens: Collection[TokenType] | None = None,
619        parse_bracket: bool = False,
620        is_db_reference: bool = False,
621        parse_partition: bool = False,
622        consume_pipe: bool = False,
623    ) -> exp.Expr | None:
624        this = super()._parse_table(
625            schema=schema,
626            joins=joins,
627            alias_tokens=alias_tokens,
628            parse_bracket=parse_bracket,
629            is_db_reference=is_db_reference,
630        )
631
632        if isinstance(this, exp.Table):
633            inner = this.this
634            alias = this.args.get("alias")
635
636            if isinstance(inner, exp.GenerateSeries) and alias and not alias.columns:
637                alias.set("columns", [exp.to_identifier("generate_series")])
638
639        if self._match(TokenType.FINAL):
640            this = self.expression(exp.Final(this=this))
641
642        return this
643
644    def _parse_position(self, haystack_first: bool = False) -> exp.StrPosition:
645        return super()._parse_position(haystack_first=True)
646
647    # https://clickhouse.com/docs/en/sql-reference/statements/select/with/
648    def _parse_cte(self) -> exp.CTE | None:
649        # WITH <identifier> AS <subquery expression>
650        cte: exp.CTE | None = self._try_parse(super()._parse_cte)
651
652        if not cte:
653            # WITH <expression> AS <identifier>
654            cte = self.expression(
655                exp.CTE(this=self._parse_assignment(), alias=self._parse_table_alias(), scalar=True)
656            )
657
658        return cte
659
660    def _parse_join_parts(
661        self,
662    ) -> tuple[Token | None, Token | None, Token | None]:
663        is_global = self._prev if self._match(TokenType.GLOBAL) else None
664
665        kind_pre = self._prev if self._match_set(self.JOIN_KINDS) else None
666        side = self._prev if self._match_set(self.JOIN_SIDES) else None
667        kind = self._prev if self._match_set(self.JOIN_KINDS) else None
668
669        return is_global, side or kind, kind_pre or kind
670
671    def _parse_join(
672        self,
673        skip_join_token: bool = False,
674        parse_bracket: bool = False,
675        alias_tokens: t.Collection[TokenType] | None = None,
676    ) -> exp.Join | None:
677        join = super()._parse_join(
678            skip_join_token=skip_join_token, parse_bracket=True, alias_tokens=alias_tokens
679        )
680        if join:
681            method = join.args.get("method")
682            join.set("method", None)
683            join.set("global_", method)
684
685            # tbl ARRAY JOIN arr <-- this should be a `Column` reference, not a `Table`
686            # https://clickhouse.com/docs/en/sql-reference/statements/select/array-join
687            if join.kind == "ARRAY":
688                for table in join.find_all(exp.Table):
689                    table.replace(table.to_column())
690
691        return join
692
693    def _parse_function(
694        self,
695        functions: dict[str, t.Callable] | None = None,
696        anonymous: bool = False,
697        optional_parens: bool = True,
698        any_token: bool = False,
699    ) -> exp.Expr | None:
700        expr = super()._parse_function(
701            functions=functions,
702            anonymous=anonymous,
703            optional_parens=optional_parens,
704            any_token=any_token,
705        )
706
707        func = expr.this if isinstance(expr, exp.Window) else expr
708
709        # Aggregate functions can be split in 2 parts: <func_name><suffix[es]>
710        parts = self._resolve_clickhouse_agg(func.this) if isinstance(func, exp.Anonymous) else None
711
712        if parts:
713            anon_func: exp.Anonymous = t.cast(exp.Anonymous, func)
714            params = self._parse_func_params(anon_func)
715
716            if len(parts[1]) > 0:
717                exp_class: Type[exp.Expr] = (
718                    exp.CombinedParameterizedAgg if params else exp.CombinedAggFunc
719                )
720            else:
721                exp_class = exp.ParameterizedAgg if params else exp.AnonymousAggFunc
722
723            instance = exp_class(this=anon_func.this, expressions=anon_func.expressions)
724            if params:
725                instance.set("params", params)
726            func = self.expression(instance)
727
728            if isinstance(expr, exp.Window):
729                # The window's func was parsed as Anonymous in base parser, fix its
730                # type to be ClickHouse style CombinedAnonymousAggFunc / AnonymousAggFunc
731                expr.set("this", func)
732            elif params:
733                # Params have blocked super()._parse_function() from parsing the following window
734                # (if that exists) as they're standing between the function call and the window spec
735                expr = self._parse_window(func)
736            else:
737                expr = func
738
739        return expr
740
741    def _parse_func_params(self, this: exp.Func | None = None) -> list[exp.Expr] | None:
742        if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN):
743            return self._parse_csv(self._parse_lambda)
744
745        if self._match(TokenType.L_PAREN):
746            params = self._parse_csv(self._parse_lambda)
747            self._match_r_paren(this)
748            return params
749
750        return None
751
752    def _parse_group_concat(self) -> exp.GroupConcat:
753        args = self._parse_csv(self._parse_lambda)
754        params = self._parse_func_params()
755
756        if params:
757            # groupConcat(sep [, limit])(expr)
758            separator = seq_get(args, 0)
759            limit = seq_get(args, 1)
760            this: exp.Expr | None = seq_get(params, 0)
761            if limit is not None:
762                this = exp.Limit(this=this, expression=limit)
763            return self.expression(exp.GroupConcat(this=this, separator=separator))
764
765        # groupConcat(expr)
766        return self.expression(exp.GroupConcat(this=seq_get(args, 0)))
767
768    def _parse_quantile(self) -> exp.Quantile:
769        this = self._parse_lambda()
770        params = self._parse_func_params()
771        if params:
772            return self.expression(exp.Quantile(this=params[0], quantile=this))
773        return self.expression(exp.Quantile(this=this, quantile=exp.Literal.number(0.5)))
774
775    def _parse_wrapped_id_vars(self, optional: bool = False) -> list[exp.Expr]:
776        return super()._parse_wrapped_id_vars(optional=True)
777
778    def _parse_column_def(
779        self, this: exp.Expr | None, computed_column: bool = True
780    ) -> exp.Expr | None:
781        if self._match(TokenType.DOT):
782            return exp.Dot(this=this, expression=self._parse_id_var())
783
784        return super()._parse_column_def(this, computed_column=computed_column)
785
786    def _parse_primary_key(
787        self,
788        wrapped_optional: bool = False,
789        in_props: bool = False,
790        named_primary_key: bool = False,
791    ) -> exp.PrimaryKeyColumnConstraint | exp.PrimaryKey:
792        return super()._parse_primary_key(
793            wrapped_optional=wrapped_optional or in_props,
794            in_props=in_props,
795            named_primary_key=named_primary_key,
796        )
797
798    def _parse_on_property(self) -> exp.Expr | None:
799        index = self._index
800        if self._match_text_seq("CLUSTER"):
801            this = self._parse_string() or self._parse_id_var()
802            if this:
803                return self.expression(exp.OnCluster(this=this))
804            else:
805                self._retreat(index)
806        return None
807
808    def _parse_index_constraint(self, kind: str | None = None) -> exp.IndexColumnConstraint:
809        # INDEX name1 expr TYPE type1(args) GRANULARITY value
810        this = self._parse_id_var()
811        expression = self._parse_assignment()
812
813        index_type = self._match_text_seq("TYPE") and (self._parse_function() or self._parse_var())
814
815        granularity = self._match_text_seq("GRANULARITY") and self._parse_term()
816
817        return self.expression(
818            exp.IndexColumnConstraint(
819                this=this, expression=expression, index_type=index_type, granularity=granularity
820            )
821        )
822
823    def _parse_partition(self) -> exp.Partition | None:
824        # https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#how-to-set-partition-expression
825        if not self._match(TokenType.PARTITION):
826            return None
827
828        if self._match_text_seq("ID"):
829            # Corresponds to the PARTITION ID <string_value> syntax
830            expressions: list[exp.Expr] = [
831                self.expression(exp.PartitionId(this=self._parse_string()))
832            ]
833        else:
834            expressions = self._parse_expressions()
835
836        return self.expression(exp.Partition(expressions=expressions))
837
838    def _parse_alter_table_replace(self) -> exp.Expr | None:
839        partition = self._parse_partition()
840
841        if not partition or not self._match(TokenType.FROM):
842            return None
843
844        return self.expression(
845            exp.ReplacePartition(expression=partition, source=self._parse_table_parts())
846        )
847
848    def _parse_alter_table_modify(self) -> exp.Expr | None:
849        if properties := self._parse_properties():
850            return self.expression(exp.AlterModifySqlSecurity(expressions=properties.expressions))
851        return None
852
853    def _parse_definer(self) -> exp.DefinerProperty | None:
854        self._match(TokenType.EQ)
855        if self._match(TokenType.CURRENT_USER):
856            return exp.DefinerProperty(this=exp.Var(this=self._prev.text.upper()))
857        return exp.DefinerProperty(this=self._parse_string())
858
859    def _parse_projection_def(self) -> exp.ProjectionDef | None:
860        if not self._match_text_seq("PROJECTION"):
861            return None
862
863        return self.expression(
864            exp.ProjectionDef(
865                this=self._parse_id_var(), expression=self._parse_wrapped(self._parse_statement)
866            )
867        )
868
869    def _parse_constraint(self) -> exp.Expr | None:
870        return super()._parse_constraint() or self._parse_projection_def()
871
872    def _parse_alias(self, this: exp.Expr | None, explicit: bool = False) -> exp.Expr | None:
873        # In clickhouse "SELECT <expr> APPLY(...)" is a query modifier,
874        # so "APPLY" shouldn't be parsed as <expr>'s alias. However, "SELECT <expr> apply" is a valid alias
875        if self._match_pair(TokenType.APPLY, TokenType.L_PAREN, advance=False):
876            return this
877
878        return super()._parse_alias(this=this, explicit=explicit)
879
880    def _parse_expression(self) -> exp.Expr | None:
881        this = super()._parse_expression()
882
883        # Clickhouse allows "SELECT <expr> [APPLY(func)] [...]]" modifier
884        while self._match_pair(TokenType.APPLY, TokenType.L_PAREN):
885            this = exp.Apply(this=this, expression=self._parse_var(any_token=True))
886            self._match(TokenType.R_PAREN)
887
888        return this
889
890    def _parse_columns(self) -> exp.Expr:
891        this: exp.Expr = self.expression(exp.Columns(this=self._parse_lambda()))
892
893        while self._next and self._match_text_seq(")", "APPLY", "("):
894            self._match(TokenType.R_PAREN)
895            this = exp.Apply(this=this, expression=self._parse_var(any_token=True))
896        return this
897
898    def _parse_value(self, values: bool = True) -> exp.Tuple | None:
899        value = super()._parse_value(values=values)
900        if not value:
901            return None
902
903        # In Clickhouse "SELECT * FROM VALUES (1, 2, 3)" generates a table with a single column, in contrast
904        # to other dialects. For this case, we canonicalize the values into a tuple-of-tuples AST if it's not already one.
905        # In INSERT INTO statements the same clause actually references multiple columns (opposite semantics),
906        # but the final result is not altered by the extra parentheses.
907        # Note: Clickhouse allows VALUES([structure], value, ...) so the branch checks for the last expression
908        expressions = value.expressions
909        if values and not isinstance(expressions[-1], exp.Tuple):
910            value.set(
911                "expressions",
912                [self.expression(exp.Tuple(expressions=[expr])) for expr in expressions],
913            )
914
915        return value
916
917    def _parse_partitioned_by(self) -> exp.PartitionedByProperty:
918        # ClickHouse allows custom expressions as partition key
919        # https://clickhouse.com/docs/engines/table-engines/mergetree-family/custom-partitioning-key
920        return self.expression(exp.PartitionedByProperty(this=self._parse_assignment()))
921
922    def _parse_detach(self) -> exp.Detach:
923        kind = self._match_set(self.DB_CREATABLES) and self._prev.text.upper()
924        exists = self._parse_exists()
925        this = self._parse_table_parts()
926
927        return self.expression(
928            exp.Detach(
929                this=this,
930                kind=kind,
931                exists=exists,
932                cluster=self._parse_on_property() if self._match(TokenType.ON) else None,
933                permanent=self._match_text_seq("PERMANENTLY"),
934                sync=self._match_text_seq("SYNC"),
935            )
936        )
TIMESTAMP_TRUNC_UNITS = {'DAY', 'QUARTER', 'HOUR', 'MILLISECOND', 'SECOND', 'YEAR', 'MONTH', 'MICROSECOND', 'MINUTE'}
AGG_FUNCTIONS = {'welchTTest', 'histogram', 'count', 'quantileTimingWeighted', 'cramersV', 'skewPop', 'quantileTDigest', 'stochasticLogisticRegression', 'quantileInterpolatedWeighted', 'maxMap', 'theilsU', 'last_value', 'argMax', 'quantilesTDigest', 'kurtPop', 'groupBitXor', 'groupArrayMovingAvg', 'median', 'groupUniqArray', 'cramersVBiasCorrected', 'groupBitmap', 'sequenceNextNode', 'deltaSum', 'anyHeavy', 'quantileBFloat16', 'uniqHLL12', 'groupConcat', 'simpleLinearRegression', 'stddevPop', 'sumKahan', 'contingency', 'minMap', 'avg', 'quantilesExactWeighted', 'quantilesTiming', 'uniqTheta', 'exponentialMovingAverage', 'quantilesBFloat16Weighted', 'intervalLengthSum', 'uniqCombined64', 'any', 'uniqCombined', 'avgWeighted', 'quantileTiming', 'uniqUpTo', 'min', 'anyLast', 'skewSamp', 'kurtSamp', 'groupArraySample', 'topK', 'sum', 'sumMap', 'quantilesExactHigh', 'quantilesExactLow', 'quantileExactWeighted', 'sumCount', 'rankCorr', 'quantilesGK', 'uniqExact', 'groupArrayLast', 'windowFunnel', 'maxIntersections', 'corr', 'sumWithOverflow', 'quantilesBFloat16', 'quantileExact', 'entropy', 'quantilesInterpolatedWeighted', 'quantiles', 'stochasticLinearRegression', 'mannWhitneyUTest', 'quantilesTimingWeighted', 'covarSamp', 'varPop', 'sequenceMatch', 'meanZTest', 'approx_top_sum', 'boundingRatio', 'kolmogorovSmirnovTest', 'covarPop', 'quantileGK', 'stddevSamp', 'sparkBar', 'quantileExactHigh', 'quantilesExact', 'uniq', 'groupArrayInsertAt', 'quantilesDeterministic', 'quantilesTDigestWeighted', 'quantileDeterministic', 'retention', 'groupBitmapXor', 'quantilesExactExclusive', 'groupArrayMovingSum', 'quantileBFloat16Weighted', 'first_value', 'studentTTest', 'topKWeighted', 'quantileTDigestWeighted', 'categoricalInformationValue', 'sequenceCount', 'groupBitAnd', 'largestTriangleThreeBuckets', 'groupBitOr', 'groupBitmapOr', 'deltaSumTimestamp', 'argMin', 'groupBitmapAnd', 'varSamp', 'exponentialTimeDecayedAvg', 'max', 'quantileExactLow', 'maxIntersectionsPosition', 'groupArray', 'quantile'}
AGG_FUNCTIONS_SUFFIXES: list[str] = ['SimpleState', 'MergeState', 'OrDefault', 'Distinct', 'Resample', 'ArrayIf', 'ForEach', 'OrNull', 'ArgMin', 'ArgMax', 'Array', 'State', 'Merge', 'Map', 'If']
AGG_FUNC_MAPPING: Mapping[str, tuple[str, str | None]] = {'welchTTestSimpleState': ('welchTTest', 'SimpleState'), 'histogramSimpleState': ('histogram', 'SimpleState'), 'countSimpleState': ('count', 'SimpleState'), 'quantileTimingWeightedSimpleState': ('quantileTimingWeighted', 'SimpleState'), 'cramersVSimpleState': ('cramersV', 'SimpleState'), 'skewPopSimpleState': ('skewPop', 'SimpleState'), 'quantileTDigestSimpleState': ('quantileTDigest', 'SimpleState'), 'stochasticLogisticRegressionSimpleState': ('stochasticLogisticRegression', 'SimpleState'), 'quantileInterpolatedWeightedSimpleState': ('quantileInterpolatedWeighted', 'SimpleState'), 'maxMapSimpleState': ('maxMap', 'SimpleState'), 'theilsUSimpleState': ('theilsU', 'SimpleState'), 'last_valueSimpleState': ('last_value', 'SimpleState'), 'argMaxSimpleState': ('argMax', 'SimpleState'), 'quantilesTDigestSimpleState': ('quantilesTDigest', 'SimpleState'), 'kurtPopSimpleState': ('kurtPop', 'SimpleState'), 'groupBitXorSimpleState': ('groupBitXor', 'SimpleState'), 'groupArrayMovingAvgSimpleState': ('groupArrayMovingAvg', 'SimpleState'), 'medianSimpleState': ('median', 'SimpleState'), 'groupUniqArraySimpleState': ('groupUniqArray', 'SimpleState'), 'cramersVBiasCorrectedSimpleState': ('cramersVBiasCorrected', 'SimpleState'), 'groupBitmapSimpleState': ('groupBitmap', 'SimpleState'), 'sequenceNextNodeSimpleState': ('sequenceNextNode', 'SimpleState'), 'deltaSumSimpleState': ('deltaSum', 'SimpleState'), 'anyHeavySimpleState': ('anyHeavy', 'SimpleState'), 'quantileBFloat16SimpleState': ('quantileBFloat16', 'SimpleState'), 'uniqHLL12SimpleState': ('uniqHLL12', 'SimpleState'), 'groupConcatSimpleState': ('groupConcat', 'SimpleState'), 'simpleLinearRegressionSimpleState': ('simpleLinearRegression', 'SimpleState'), 'stddevPopSimpleState': ('stddevPop', 'SimpleState'), 'sumKahanSimpleState': ('sumKahan', 'SimpleState'), 'contingencySimpleState': ('contingency', 'SimpleState'), 'minMapSimpleState': ('minMap', 'SimpleState'), 'avgSimpleState': ('avg', 'SimpleState'), 'quantilesExactWeightedSimpleState': ('quantilesExactWeighted', 'SimpleState'), 'quantilesTimingSimpleState': ('quantilesTiming', 'SimpleState'), 'uniqThetaSimpleState': ('uniqTheta', 'SimpleState'), 'exponentialMovingAverageSimpleState': ('exponentialMovingAverage', 'SimpleState'), 'quantilesBFloat16WeightedSimpleState': ('quantilesBFloat16Weighted', 'SimpleState'), 'intervalLengthSumSimpleState': ('intervalLengthSum', 'SimpleState'), 'uniqCombined64SimpleState': ('uniqCombined64', 'SimpleState'), 'anySimpleState': ('any', 'SimpleState'), 'uniqCombinedSimpleState': ('uniqCombined', 'SimpleState'), 'avgWeightedSimpleState': ('avgWeighted', 'SimpleState'), 'quantileTimingSimpleState': ('quantileTiming', 'SimpleState'), 'uniqUpToSimpleState': ('uniqUpTo', 'SimpleState'), 'minSimpleState': ('min', 'SimpleState'), 'anyLastSimpleState': ('anyLast', 'SimpleState'), 'skewSampSimpleState': ('skewSamp', 'SimpleState'), 'kurtSampSimpleState': ('kurtSamp', 'SimpleState'), 'groupArraySampleSimpleState': ('groupArraySample', 'SimpleState'), 'topKSimpleState': ('topK', 'SimpleState'), 'sumSimpleState': ('sum', 'SimpleState'), 'sumMapSimpleState': ('sumMap', 'SimpleState'), 'quantilesExactHighSimpleState': ('quantilesExactHigh', 'SimpleState'), 'quantilesExactLowSimpleState': ('quantilesExactLow', 'SimpleState'), 'quantileExactWeightedSimpleState': ('quantileExactWeighted', 'SimpleState'), 'sumCountSimpleState': ('sumCount', 'SimpleState'), 'rankCorrSimpleState': ('rankCorr', 'SimpleState'), 'quantilesGKSimpleState': ('quantilesGK', 'SimpleState'), 'uniqExactSimpleState': ('uniqExact', 'SimpleState'), 'groupArrayLastSimpleState': ('groupArrayLast', 'SimpleState'), 'windowFunnelSimpleState': ('windowFunnel', 'SimpleState'), 'maxIntersectionsSimpleState': ('maxIntersections', 'SimpleState'), 'corrSimpleState': ('corr', 'SimpleState'), 'sumWithOverflowSimpleState': ('sumWithOverflow', 'SimpleState'), 'quantilesBFloat16SimpleState': ('quantilesBFloat16', 'SimpleState'), 'quantileExactSimpleState': ('quantileExact', 'SimpleState'), 'entropySimpleState': ('entropy', 'SimpleState'), 'quantilesInterpolatedWeightedSimpleState': ('quantilesInterpolatedWeighted', 'SimpleState'), 'quantilesSimpleState': ('quantiles', 'SimpleState'), 'stochasticLinearRegressionSimpleState': ('stochasticLinearRegression', 'SimpleState'), 'mannWhitneyUTestSimpleState': ('mannWhitneyUTest', 'SimpleState'), 'quantilesTimingWeightedSimpleState': ('quantilesTimingWeighted', 'SimpleState'), 'covarSampSimpleState': ('covarSamp', 'SimpleState'), 'varPopSimpleState': ('varPop', 'SimpleState'), 'sequenceMatchSimpleState': ('sequenceMatch', 'SimpleState'), 'meanZTestSimpleState': ('meanZTest', 'SimpleState'), 'approx_top_sumSimpleState': ('approx_top_sum', 'SimpleState'), 'boundingRatioSimpleState': ('boundingRatio', 'SimpleState'), 'kolmogorovSmirnovTestSimpleState': ('kolmogorovSmirnovTest', 'SimpleState'), 'covarPopSimpleState': ('covarPop', 'SimpleState'), 'quantileGKSimpleState': ('quantileGK', 'SimpleState'), 'stddevSampSimpleState': ('stddevSamp', 'SimpleState'), 'sparkBarSimpleState': ('sparkBar', 'SimpleState'), 'quantileExactHighSimpleState': ('quantileExactHigh', 'SimpleState'), 'quantilesExactSimpleState': ('quantilesExact', 'SimpleState'), 'uniqSimpleState': ('uniq', 'SimpleState'), 'groupArrayInsertAtSimpleState': ('groupArrayInsertAt', 'SimpleState'), 'quantilesDeterministicSimpleState': ('quantilesDeterministic', 'SimpleState'), 'quantilesTDigestWeightedSimpleState': ('quantilesTDigestWeighted', 'SimpleState'), 'quantileDeterministicSimpleState': ('quantileDeterministic', 'SimpleState'), 'retentionSimpleState': ('retention', 'SimpleState'), 'groupBitmapXorSimpleState': ('groupBitmapXor', 'SimpleState'), 'quantilesExactExclusiveSimpleState': ('quantilesExactExclusive', 'SimpleState'), 'groupArrayMovingSumSimpleState': ('groupArrayMovingSum', 'SimpleState'), 'quantileBFloat16WeightedSimpleState': ('quantileBFloat16Weighted', 'SimpleState'), 'first_valueSimpleState': ('first_value', 'SimpleState'), 'studentTTestSimpleState': ('studentTTest', 'SimpleState'), 'topKWeightedSimpleState': ('topKWeighted', 'SimpleState'), 'quantileTDigestWeightedSimpleState': ('quantileTDigestWeighted', 'SimpleState'), 'categoricalInformationValueSimpleState': ('categoricalInformationValue', 'SimpleState'), 'sequenceCountSimpleState': ('sequenceCount', 'SimpleState'), 'groupBitAndSimpleState': ('groupBitAnd', 'SimpleState'), 'largestTriangleThreeBucketsSimpleState': ('largestTriangleThreeBuckets', 'SimpleState'), 'groupBitOrSimpleState': ('groupBitOr', 'SimpleState'), 'groupBitmapOrSimpleState': ('groupBitmapOr', 'SimpleState'), 'deltaSumTimestampSimpleState': ('deltaSumTimestamp', 'SimpleState'), 'argMinSimpleState': ('argMin', 'SimpleState'), 'groupBitmapAndSimpleState': ('groupBitmapAnd', 'SimpleState'), 'varSampSimpleState': ('varSamp', 'SimpleState'), 'exponentialTimeDecayedAvgSimpleState': ('exponentialTimeDecayedAvg', 'SimpleState'), 'maxSimpleState': ('max', 'SimpleState'), 'quantileExactLowSimpleState': ('quantileExactLow', 'SimpleState'), 'maxIntersectionsPositionSimpleState': ('maxIntersectionsPosition', 'SimpleState'), 'groupArraySimpleState': ('groupArray', 'SimpleState'), 'quantileSimpleState': ('quantile', 'SimpleState'), 'welchTTestMergeState': ('welchTTest', 'MergeState'), 'histogramMergeState': ('histogram', 'MergeState'), 'countMergeState': ('count', 'MergeState'), 'quantileTimingWeightedMergeState': ('quantileTimingWeighted', 'MergeState'), 'cramersVMergeState': ('cramersV', 'MergeState'), 'skewPopMergeState': ('skewPop', 'MergeState'), 'quantileTDigestMergeState': ('quantileTDigest', 'MergeState'), 'stochasticLogisticRegressionMergeState': ('stochasticLogisticRegression', 'MergeState'), 'quantileInterpolatedWeightedMergeState': ('quantileInterpolatedWeighted', 'MergeState'), 'maxMapMergeState': ('maxMap', 'MergeState'), 'theilsUMergeState': ('theilsU', 'MergeState'), 'last_valueMergeState': ('last_value', 'MergeState'), 'argMaxMergeState': ('argMax', 'MergeState'), 'quantilesTDigestMergeState': ('quantilesTDigest', 'MergeState'), 'kurtPopMergeState': ('kurtPop', 'MergeState'), 'groupBitXorMergeState': ('groupBitXor', 'MergeState'), 'groupArrayMovingAvgMergeState': ('groupArrayMovingAvg', 'MergeState'), 'medianMergeState': ('median', 'MergeState'), 'groupUniqArrayMergeState': ('groupUniqArray', 'MergeState'), 'cramersVBiasCorrectedMergeState': ('cramersVBiasCorrected', 'MergeState'), 'groupBitmapMergeState': ('groupBitmap', 'MergeState'), 'sequenceNextNodeMergeState': ('sequenceNextNode', 'MergeState'), 'deltaSumMergeState': ('deltaSum', 'MergeState'), 'anyHeavyMergeState': ('anyHeavy', 'MergeState'), 'quantileBFloat16MergeState': ('quantileBFloat16', 'MergeState'), 'uniqHLL12MergeState': ('uniqHLL12', 'MergeState'), 'groupConcatMergeState': ('groupConcat', 'MergeState'), 'simpleLinearRegressionMergeState': ('simpleLinearRegression', 'MergeState'), 'stddevPopMergeState': ('stddevPop', 'MergeState'), 'sumKahanMergeState': ('sumKahan', 'MergeState'), 'contingencyMergeState': ('contingency', 'MergeState'), 'minMapMergeState': ('minMap', 'MergeState'), 'avgMergeState': ('avg', 'MergeState'), 'quantilesExactWeightedMergeState': ('quantilesExactWeighted', 'MergeState'), 'quantilesTimingMergeState': ('quantilesTiming', 'MergeState'), 'uniqThetaMergeState': ('uniqTheta', 'MergeState'), 'exponentialMovingAverageMergeState': ('exponentialMovingAverage', 'MergeState'), 'quantilesBFloat16WeightedMergeState': ('quantilesBFloat16Weighted', 'MergeState'), 'intervalLengthSumMergeState': ('intervalLengthSum', 'MergeState'), 'uniqCombined64MergeState': ('uniqCombined64', 'MergeState'), 'anyMergeState': ('any', 'MergeState'), 'uniqCombinedMergeState': ('uniqCombined', 'MergeState'), 'avgWeightedMergeState': ('avgWeighted', 'MergeState'), 'quantileTimingMergeState': ('quantileTiming', 'MergeState'), 'uniqUpToMergeState': ('uniqUpTo', 'MergeState'), 'minMergeState': ('min', 'MergeState'), 'anyLastMergeState': ('anyLast', 'MergeState'), 'skewSampMergeState': ('skewSamp', 'MergeState'), 'kurtSampMergeState': ('kurtSamp', 'MergeState'), 'groupArraySampleMergeState': ('groupArraySample', 'MergeState'), 'topKMergeState': ('topK', 'MergeState'), 'sumMergeState': ('sum', 'MergeState'), 'sumMapMergeState': ('sumMap', 'MergeState'), 'quantilesExactHighMergeState': ('quantilesExactHigh', 'MergeState'), 'quantilesExactLowMergeState': ('quantilesExactLow', 'MergeState'), 'quantileExactWeightedMergeState': ('quantileExactWeighted', 'MergeState'), 'sumCountMergeState': ('sumCount', 'MergeState'), 'rankCorrMergeState': ('rankCorr', 'MergeState'), 'quantilesGKMergeState': ('quantilesGK', 'MergeState'), 'uniqExactMergeState': ('uniqExact', 'MergeState'), 'groupArrayLastMergeState': ('groupArrayLast', 'MergeState'), 'windowFunnelMergeState': ('windowFunnel', 'MergeState'), 'maxIntersectionsMergeState': ('maxIntersections', 'MergeState'), 'corrMergeState': ('corr', 'MergeState'), 'sumWithOverflowMergeState': ('sumWithOverflow', 'MergeState'), 'quantilesBFloat16MergeState': ('quantilesBFloat16', 'MergeState'), 'quantileExactMergeState': ('quantileExact', 'MergeState'), 'entropyMergeState': ('entropy', 'MergeState'), 'quantilesInterpolatedWeightedMergeState': ('quantilesInterpolatedWeighted', 'MergeState'), 'quantilesMergeState': ('quantiles', 'MergeState'), 'stochasticLinearRegressionMergeState': ('stochasticLinearRegression', 'MergeState'), 'mannWhitneyUTestMergeState': ('mannWhitneyUTest', 'MergeState'), 'quantilesTimingWeightedMergeState': ('quantilesTimingWeighted', 'MergeState'), 'covarSampMergeState': ('covarSamp', 'MergeState'), 'varPopMergeState': ('varPop', 'MergeState'), 'sequenceMatchMergeState': ('sequenceMatch', 'MergeState'), 'meanZTestMergeState': ('meanZTest', 'MergeState'), 'approx_top_sumMergeState': ('approx_top_sum', 'MergeState'), 'boundingRatioMergeState': ('boundingRatio', 'MergeState'), 'kolmogorovSmirnovTestMergeState': ('kolmogorovSmirnovTest', 'MergeState'), 'covarPopMergeState': ('covarPop', 'MergeState'), 'quantileGKMergeState': ('quantileGK', 'MergeState'), 'stddevSampMergeState': ('stddevSamp', 'MergeState'), 'sparkBarMergeState': ('sparkBar', 'MergeState'), 'quantileExactHighMergeState': ('quantileExactHigh', 'MergeState'), 'quantilesExactMergeState': ('quantilesExact', 'MergeState'), 'uniqMergeState': ('uniq', 'MergeState'), 'groupArrayInsertAtMergeState': ('groupArrayInsertAt', 'MergeState'), 'quantilesDeterministicMergeState': ('quantilesDeterministic', 'MergeState'), 'quantilesTDigestWeightedMergeState': ('quantilesTDigestWeighted', 'MergeState'), 'quantileDeterministicMergeState': ('quantileDeterministic', 'MergeState'), 'retentionMergeState': ('retention', 'MergeState'), 'groupBitmapXorMergeState': ('groupBitmapXor', 'MergeState'), 'quantilesExactExclusiveMergeState': ('quantilesExactExclusive', 'MergeState'), 'groupArrayMovingSumMergeState': ('groupArrayMovingSum', 'MergeState'), 'quantileBFloat16WeightedMergeState': ('quantileBFloat16Weighted', 'MergeState'), 'first_valueMergeState': ('first_value', 'MergeState'), 'studentTTestMergeState': ('studentTTest', 'MergeState'), 'topKWeightedMergeState': ('topKWeighted', 'MergeState'), 'quantileTDigestWeightedMergeState': ('quantileTDigestWeighted', 'MergeState'), 'categoricalInformationValueMergeState': ('categoricalInformationValue', 'MergeState'), 'sequenceCountMergeState': ('sequenceCount', 'MergeState'), 'groupBitAndMergeState': ('groupBitAnd', 'MergeState'), 'largestTriangleThreeBucketsMergeState': ('largestTriangleThreeBuckets', 'MergeState'), 'groupBitOrMergeState': ('groupBitOr', 'MergeState'), 'groupBitmapOrMergeState': ('groupBitmapOr', 'MergeState'), 'deltaSumTimestampMergeState': ('deltaSumTimestamp', 'MergeState'), 'argMinMergeState': ('argMin', 'MergeState'), 'groupBitmapAndMergeState': ('groupBitmapAnd', 'MergeState'), 'varSampMergeState': ('varSamp', 'MergeState'), 'exponentialTimeDecayedAvgMergeState': ('exponentialTimeDecayedAvg', 'MergeState'), 'maxMergeState': ('max', 'MergeState'), 'quantileExactLowMergeState': ('quantileExactLow', 'MergeState'), 'maxIntersectionsPositionMergeState': ('maxIntersectionsPosition', 'MergeState'), 'groupArrayMergeState': ('groupArray', 'MergeState'), 'quantileMergeState': ('quantile', 'MergeState'), 'welchTTestOrDefault': ('welchTTest', 'OrDefault'), 'histogramOrDefault': ('histogram', 'OrDefault'), 'countOrDefault': ('count', 'OrDefault'), 'quantileTimingWeightedOrDefault': ('quantileTimingWeighted', 'OrDefault'), 'cramersVOrDefault': ('cramersV', 'OrDefault'), 'skewPopOrDefault': ('skewPop', 'OrDefault'), 'quantileTDigestOrDefault': ('quantileTDigest', 'OrDefault'), 'stochasticLogisticRegressionOrDefault': ('stochasticLogisticRegression', 'OrDefault'), 'quantileInterpolatedWeightedOrDefault': ('quantileInterpolatedWeighted', 'OrDefault'), 'maxMapOrDefault': ('maxMap', 'OrDefault'), 'theilsUOrDefault': ('theilsU', 'OrDefault'), 'last_valueOrDefault': ('last_value', 'OrDefault'), 'argMaxOrDefault': ('argMax', 'OrDefault'), 'quantilesTDigestOrDefault': ('quantilesTDigest', 'OrDefault'), 'kurtPopOrDefault': ('kurtPop', 'OrDefault'), 'groupBitXorOrDefault': ('groupBitXor', 'OrDefault'), 'groupArrayMovingAvgOrDefault': ('groupArrayMovingAvg', 'OrDefault'), 'medianOrDefault': ('median', 'OrDefault'), 'groupUniqArrayOrDefault': ('groupUniqArray', 'OrDefault'), 'cramersVBiasCorrectedOrDefault': ('cramersVBiasCorrected', 'OrDefault'), 'groupBitmapOrDefault': ('groupBitmap', 'OrDefault'), 'sequenceNextNodeOrDefault': ('sequenceNextNode', 'OrDefault'), 'deltaSumOrDefault': ('deltaSum', 'OrDefault'), 'anyHeavyOrDefault': ('anyHeavy', 'OrDefault'), 'quantileBFloat16OrDefault': ('quantileBFloat16', 'OrDefault'), 'uniqHLL12OrDefault': ('uniqHLL12', 'OrDefault'), 'groupConcatOrDefault': ('groupConcat', 'OrDefault'), 'simpleLinearRegressionOrDefault': ('simpleLinearRegression', 'OrDefault'), 'stddevPopOrDefault': ('stddevPop', 'OrDefault'), 'sumKahanOrDefault': ('sumKahan', 'OrDefault'), 'contingencyOrDefault': ('contingency', 'OrDefault'), 'minMapOrDefault': ('minMap', 'OrDefault'), 'avgOrDefault': ('avg', 'OrDefault'), 'quantilesExactWeightedOrDefault': ('quantilesExactWeighted', 'OrDefault'), 'quantilesTimingOrDefault': ('quantilesTiming', 'OrDefault'), 'uniqThetaOrDefault': ('uniqTheta', 'OrDefault'), 'exponentialMovingAverageOrDefault': ('exponentialMovingAverage', 'OrDefault'), 'quantilesBFloat16WeightedOrDefault': ('quantilesBFloat16Weighted', 'OrDefault'), 'intervalLengthSumOrDefault': ('intervalLengthSum', 'OrDefault'), 'uniqCombined64OrDefault': ('uniqCombined64', 'OrDefault'), 'anyOrDefault': ('any', 'OrDefault'), 'uniqCombinedOrDefault': ('uniqCombined', 'OrDefault'), 'avgWeightedOrDefault': ('avgWeighted', 'OrDefault'), 'quantileTimingOrDefault': ('quantileTiming', 'OrDefault'), 'uniqUpToOrDefault': ('uniqUpTo', 'OrDefault'), 'minOrDefault': ('min', 'OrDefault'), 'anyLastOrDefault': ('anyLast', 'OrDefault'), 'skewSampOrDefault': ('skewSamp', 'OrDefault'), 'kurtSampOrDefault': ('kurtSamp', 'OrDefault'), 'groupArraySampleOrDefault': ('groupArraySample', 'OrDefault'), 'topKOrDefault': ('topK', 'OrDefault'), 'sumOrDefault': ('sum', 'OrDefault'), 'sumMapOrDefault': ('sumMap', 'OrDefault'), 'quantilesExactHighOrDefault': ('quantilesExactHigh', 'OrDefault'), 'quantilesExactLowOrDefault': ('quantilesExactLow', 'OrDefault'), 'quantileExactWeightedOrDefault': ('quantileExactWeighted', 'OrDefault'), 'sumCountOrDefault': ('sumCount', 'OrDefault'), 'rankCorrOrDefault': ('rankCorr', 'OrDefault'), 'quantilesGKOrDefault': ('quantilesGK', 'OrDefault'), 'uniqExactOrDefault': ('uniqExact', 'OrDefault'), 'groupArrayLastOrDefault': ('groupArrayLast', 'OrDefault'), 'windowFunnelOrDefault': ('windowFunnel', 'OrDefault'), 'maxIntersectionsOrDefault': ('maxIntersections', 'OrDefault'), 'corrOrDefault': ('corr', 'OrDefault'), 'sumWithOverflowOrDefault': ('sumWithOverflow', 'OrDefault'), 'quantilesBFloat16OrDefault': ('quantilesBFloat16', 'OrDefault'), 'quantileExactOrDefault': ('quantileExact', 'OrDefault'), 'entropyOrDefault': ('entropy', 'OrDefault'), 'quantilesInterpolatedWeightedOrDefault': ('quantilesInterpolatedWeighted', 'OrDefault'), 'quantilesOrDefault': ('quantiles', 'OrDefault'), 'stochasticLinearRegressionOrDefault': ('stochasticLinearRegression', 'OrDefault'), 'mannWhitneyUTestOrDefault': ('mannWhitneyUTest', 'OrDefault'), 'quantilesTimingWeightedOrDefault': ('quantilesTimingWeighted', 'OrDefault'), 'covarSampOrDefault': ('covarSamp', 'OrDefault'), 'varPopOrDefault': ('varPop', 'OrDefault'), 'sequenceMatchOrDefault': ('sequenceMatch', 'OrDefault'), 'meanZTestOrDefault': ('meanZTest', 'OrDefault'), 'approx_top_sumOrDefault': ('approx_top_sum', 'OrDefault'), 'boundingRatioOrDefault': ('boundingRatio', 'OrDefault'), 'kolmogorovSmirnovTestOrDefault': ('kolmogorovSmirnovTest', 'OrDefault'), 'covarPopOrDefault': ('covarPop', 'OrDefault'), 'quantileGKOrDefault': ('quantileGK', 'OrDefault'), 'stddevSampOrDefault': ('stddevSamp', 'OrDefault'), 'sparkBarOrDefault': ('sparkBar', 'OrDefault'), 'quantileExactHighOrDefault': ('quantileExactHigh', 'OrDefault'), 'quantilesExactOrDefault': ('quantilesExact', 'OrDefault'), 'uniqOrDefault': ('uniq', 'OrDefault'), 'groupArrayInsertAtOrDefault': ('groupArrayInsertAt', 'OrDefault'), 'quantilesDeterministicOrDefault': ('quantilesDeterministic', 'OrDefault'), 'quantilesTDigestWeightedOrDefault': ('quantilesTDigestWeighted', 'OrDefault'), 'quantileDeterministicOrDefault': ('quantileDeterministic', 'OrDefault'), 'retentionOrDefault': ('retention', 'OrDefault'), 'groupBitmapXorOrDefault': ('groupBitmapXor', 'OrDefault'), 'quantilesExactExclusiveOrDefault': ('quantilesExactExclusive', 'OrDefault'), 'groupArrayMovingSumOrDefault': ('groupArrayMovingSum', 'OrDefault'), 'quantileBFloat16WeightedOrDefault': ('quantileBFloat16Weighted', 'OrDefault'), 'first_valueOrDefault': ('first_value', 'OrDefault'), 'studentTTestOrDefault': ('studentTTest', 'OrDefault'), 'topKWeightedOrDefault': ('topKWeighted', 'OrDefault'), 'quantileTDigestWeightedOrDefault': ('quantileTDigestWeighted', 'OrDefault'), 'categoricalInformationValueOrDefault': ('categoricalInformationValue', 'OrDefault'), 'sequenceCountOrDefault': ('sequenceCount', 'OrDefault'), 'groupBitAndOrDefault': ('groupBitAnd', 'OrDefault'), 'largestTriangleThreeBucketsOrDefault': ('largestTriangleThreeBuckets', 'OrDefault'), 'groupBitOrOrDefault': ('groupBitOr', 'OrDefault'), 'groupBitmapOrOrDefault': ('groupBitmapOr', 'OrDefault'), 'deltaSumTimestampOrDefault': ('deltaSumTimestamp', 'OrDefault'), 'argMinOrDefault': ('argMin', 'OrDefault'), 'groupBitmapAndOrDefault': ('groupBitmapAnd', 'OrDefault'), 'varSampOrDefault': ('varSamp', 'OrDefault'), 'exponentialTimeDecayedAvgOrDefault': ('exponentialTimeDecayedAvg', 'OrDefault'), 'maxOrDefault': ('max', 'OrDefault'), 'quantileExactLowOrDefault': ('quantileExactLow', 'OrDefault'), 'maxIntersectionsPositionOrDefault': ('maxIntersectionsPosition', 'OrDefault'), 'groupArrayOrDefault': ('groupArray', 'OrDefault'), 'quantileOrDefault': ('quantile', 'OrDefault'), 'welchTTestDistinct': ('welchTTest', 'Distinct'), 'histogramDistinct': ('histogram', 'Distinct'), 'countDistinct': ('count', 'Distinct'), 'quantileTimingWeightedDistinct': ('quantileTimingWeighted', 'Distinct'), 'cramersVDistinct': ('cramersV', 'Distinct'), 'skewPopDistinct': ('skewPop', 'Distinct'), 'quantileTDigestDistinct': ('quantileTDigest', 'Distinct'), 'stochasticLogisticRegressionDistinct': ('stochasticLogisticRegression', 'Distinct'), 'quantileInterpolatedWeightedDistinct': ('quantileInterpolatedWeighted', 'Distinct'), 'maxMapDistinct': ('maxMap', 'Distinct'), 'theilsUDistinct': ('theilsU', 'Distinct'), 'last_valueDistinct': ('last_value', 'Distinct'), 'argMaxDistinct': ('argMax', 'Distinct'), 'quantilesTDigestDistinct': ('quantilesTDigest', 'Distinct'), 'kurtPopDistinct': ('kurtPop', 'Distinct'), 'groupBitXorDistinct': ('groupBitXor', 'Distinct'), 'groupArrayMovingAvgDistinct': ('groupArrayMovingAvg', 'Distinct'), 'medianDistinct': ('median', 'Distinct'), 'groupUniqArrayDistinct': ('groupUniqArray', 'Distinct'), 'cramersVBiasCorrectedDistinct': ('cramersVBiasCorrected', 'Distinct'), 'groupBitmapDistinct': ('groupBitmap', 'Distinct'), 'sequenceNextNodeDistinct': ('sequenceNextNode', 'Distinct'), 'deltaSumDistinct': ('deltaSum', 'Distinct'), 'anyHeavyDistinct': ('anyHeavy', 'Distinct'), 'quantileBFloat16Distinct': ('quantileBFloat16', 'Distinct'), 'uniqHLL12Distinct': ('uniqHLL12', 'Distinct'), 'groupConcatDistinct': ('groupConcat', 'Distinct'), 'simpleLinearRegressionDistinct': ('simpleLinearRegression', 'Distinct'), 'stddevPopDistinct': ('stddevPop', 'Distinct'), 'sumKahanDistinct': ('sumKahan', 'Distinct'), 'contingencyDistinct': ('contingency', 'Distinct'), 'minMapDistinct': ('minMap', 'Distinct'), 'avgDistinct': ('avg', 'Distinct'), 'quantilesExactWeightedDistinct': ('quantilesExactWeighted', 'Distinct'), 'quantilesTimingDistinct': ('quantilesTiming', 'Distinct'), 'uniqThetaDistinct': ('uniqTheta', 'Distinct'), 'exponentialMovingAverageDistinct': ('exponentialMovingAverage', 'Distinct'), 'quantilesBFloat16WeightedDistinct': ('quantilesBFloat16Weighted', 'Distinct'), 'intervalLengthSumDistinct': ('intervalLengthSum', 'Distinct'), 'uniqCombined64Distinct': ('uniqCombined64', 'Distinct'), 'anyDistinct': ('any', 'Distinct'), 'uniqCombinedDistinct': ('uniqCombined', 'Distinct'), 'avgWeightedDistinct': ('avgWeighted', 'Distinct'), 'quantileTimingDistinct': ('quantileTiming', 'Distinct'), 'uniqUpToDistinct': ('uniqUpTo', 'Distinct'), 'minDistinct': ('min', 'Distinct'), 'anyLastDistinct': ('anyLast', 'Distinct'), 'skewSampDistinct': ('skewSamp', 'Distinct'), 'kurtSampDistinct': ('kurtSamp', 'Distinct'), 'groupArraySampleDistinct': ('groupArraySample', 'Distinct'), 'topKDistinct': ('topK', 'Distinct'), 'sumDistinct': ('sum', 'Distinct'), 'sumMapDistinct': ('sumMap', 'Distinct'), 'quantilesExactHighDistinct': ('quantilesExactHigh', 'Distinct'), 'quantilesExactLowDistinct': ('quantilesExactLow', 'Distinct'), 'quantileExactWeightedDistinct': ('quantileExactWeighted', 'Distinct'), 'sumCountDistinct': ('sumCount', 'Distinct'), 'rankCorrDistinct': ('rankCorr', 'Distinct'), 'quantilesGKDistinct': ('quantilesGK', 'Distinct'), 'uniqExactDistinct': ('uniqExact', 'Distinct'), 'groupArrayLastDistinct': ('groupArrayLast', 'Distinct'), 'windowFunnelDistinct': ('windowFunnel', 'Distinct'), 'maxIntersectionsDistinct': ('maxIntersections', 'Distinct'), 'corrDistinct': ('corr', 'Distinct'), 'sumWithOverflowDistinct': ('sumWithOverflow', 'Distinct'), 'quantilesBFloat16Distinct': ('quantilesBFloat16', 'Distinct'), 'quantileExactDistinct': ('quantileExact', 'Distinct'), 'entropyDistinct': ('entropy', 'Distinct'), 'quantilesInterpolatedWeightedDistinct': ('quantilesInterpolatedWeighted', 'Distinct'), 'quantilesDistinct': ('quantiles', 'Distinct'), 'stochasticLinearRegressionDistinct': ('stochasticLinearRegression', 'Distinct'), 'mannWhitneyUTestDistinct': ('mannWhitneyUTest', 'Distinct'), 'quantilesTimingWeightedDistinct': ('quantilesTimingWeighted', 'Distinct'), 'covarSampDistinct': ('covarSamp', 'Distinct'), 'varPopDistinct': ('varPop', 'Distinct'), 'sequenceMatchDistinct': ('sequenceMatch', 'Distinct'), 'meanZTestDistinct': ('meanZTest', 'Distinct'), 'approx_top_sumDistinct': ('approx_top_sum', 'Distinct'), 'boundingRatioDistinct': ('boundingRatio', 'Distinct'), 'kolmogorovSmirnovTestDistinct': ('kolmogorovSmirnovTest', 'Distinct'), 'covarPopDistinct': ('covarPop', 'Distinct'), 'quantileGKDistinct': ('quantileGK', 'Distinct'), 'stddevSampDistinct': ('stddevSamp', 'Distinct'), 'sparkBarDistinct': ('sparkBar', 'Distinct'), 'quantileExactHighDistinct': ('quantileExactHigh', 'Distinct'), 'quantilesExactDistinct': ('quantilesExact', 'Distinct'), 'uniqDistinct': ('uniq', 'Distinct'), 'groupArrayInsertAtDistinct': ('groupArrayInsertAt', 'Distinct'), 'quantilesDeterministicDistinct': ('quantilesDeterministic', 'Distinct'), 'quantilesTDigestWeightedDistinct': ('quantilesTDigestWeighted', 'Distinct'), 'quantileDeterministicDistinct': ('quantileDeterministic', 'Distinct'), 'retentionDistinct': ('retention', 'Distinct'), 'groupBitmapXorDistinct': ('groupBitmapXor', 'Distinct'), 'quantilesExactExclusiveDistinct': ('quantilesExactExclusive', 'Distinct'), 'groupArrayMovingSumDistinct': ('groupArrayMovingSum', 'Distinct'), 'quantileBFloat16WeightedDistinct': ('quantileBFloat16Weighted', 'Distinct'), 'first_valueDistinct': ('first_value', 'Distinct'), 'studentTTestDistinct': ('studentTTest', 'Distinct'), 'topKWeightedDistinct': ('topKWeighted', 'Distinct'), 'quantileTDigestWeightedDistinct': ('quantileTDigestWeighted', 'Distinct'), 'categoricalInformationValueDistinct': ('categoricalInformationValue', 'Distinct'), 'sequenceCountDistinct': ('sequenceCount', 'Distinct'), 'groupBitAndDistinct': ('groupBitAnd', 'Distinct'), 'largestTriangleThreeBucketsDistinct': ('largestTriangleThreeBuckets', 'Distinct'), 'groupBitOrDistinct': ('groupBitOr', 'Distinct'), 'groupBitmapOrDistinct': ('groupBitmapOr', 'Distinct'), 'deltaSumTimestampDistinct': ('deltaSumTimestamp', 'Distinct'), 'argMinDistinct': ('argMin', 'Distinct'), 'groupBitmapAndDistinct': ('groupBitmapAnd', 'Distinct'), 'varSampDistinct': ('varSamp', 'Distinct'), 'exponentialTimeDecayedAvgDistinct': ('exponentialTimeDecayedAvg', 'Distinct'), 'maxDistinct': ('max', 'Distinct'), 'quantileExactLowDistinct': ('quantileExactLow', 'Distinct'), 'maxIntersectionsPositionDistinct': ('maxIntersectionsPosition', 'Distinct'), 'groupArrayDistinct': ('groupArray', 'Distinct'), 'quantileDistinct': ('quantile', 'Distinct'), 'welchTTestResample': ('welchTTest', 'Resample'), 'histogramResample': ('histogram', 'Resample'), 'countResample': ('count', 'Resample'), 'quantileTimingWeightedResample': ('quantileTimingWeighted', 'Resample'), 'cramersVResample': ('cramersV', 'Resample'), 'skewPopResample': ('skewPop', 'Resample'), 'quantileTDigestResample': ('quantileTDigest', 'Resample'), 'stochasticLogisticRegressionResample': ('stochasticLogisticRegression', 'Resample'), 'quantileInterpolatedWeightedResample': ('quantileInterpolatedWeighted', 'Resample'), 'maxMapResample': ('maxMap', 'Resample'), 'theilsUResample': ('theilsU', 'Resample'), 'last_valueResample': ('last_value', 'Resample'), 'argMaxResample': ('argMax', 'Resample'), 'quantilesTDigestResample': ('quantilesTDigest', 'Resample'), 'kurtPopResample': ('kurtPop', 'Resample'), 'groupBitXorResample': ('groupBitXor', 'Resample'), 'groupArrayMovingAvgResample': ('groupArrayMovingAvg', 'Resample'), 'medianResample': ('median', 'Resample'), 'groupUniqArrayResample': ('groupUniqArray', 'Resample'), 'cramersVBiasCorrectedResample': ('cramersVBiasCorrected', 'Resample'), 'groupBitmapResample': ('groupBitmap', 'Resample'), 'sequenceNextNodeResample': ('sequenceNextNode', 'Resample'), 'deltaSumResample': ('deltaSum', 'Resample'), 'anyHeavyResample': ('anyHeavy', 'Resample'), 'quantileBFloat16Resample': ('quantileBFloat16', 'Resample'), 'uniqHLL12Resample': ('uniqHLL12', 'Resample'), 'groupConcatResample': ('groupConcat', 'Resample'), 'simpleLinearRegressionResample': ('simpleLinearRegression', 'Resample'), 'stddevPopResample': ('stddevPop', 'Resample'), 'sumKahanResample': ('sumKahan', 'Resample'), 'contingencyResample': ('contingency', 'Resample'), 'minMapResample': ('minMap', 'Resample'), 'avgResample': ('avg', 'Resample'), 'quantilesExactWeightedResample': ('quantilesExactWeighted', 'Resample'), 'quantilesTimingResample': ('quantilesTiming', 'Resample'), 'uniqThetaResample': ('uniqTheta', 'Resample'), 'exponentialMovingAverageResample': ('exponentialMovingAverage', 'Resample'), 'quantilesBFloat16WeightedResample': ('quantilesBFloat16Weighted', 'Resample'), 'intervalLengthSumResample': ('intervalLengthSum', 'Resample'), 'uniqCombined64Resample': ('uniqCombined64', 'Resample'), 'anyResample': ('any', 'Resample'), 'uniqCombinedResample': ('uniqCombined', 'Resample'), 'avgWeightedResample': ('avgWeighted', 'Resample'), 'quantileTimingResample': ('quantileTiming', 'Resample'), 'uniqUpToResample': ('uniqUpTo', 'Resample'), 'minResample': ('min', 'Resample'), 'anyLastResample': ('anyLast', 'Resample'), 'skewSampResample': ('skewSamp', 'Resample'), 'kurtSampResample': ('kurtSamp', 'Resample'), 'groupArraySampleResample': ('groupArraySample', 'Resample'), 'topKResample': ('topK', 'Resample'), 'sumResample': ('sum', 'Resample'), 'sumMapResample': ('sumMap', 'Resample'), 'quantilesExactHighResample': ('quantilesExactHigh', 'Resample'), 'quantilesExactLowResample': ('quantilesExactLow', 'Resample'), 'quantileExactWeightedResample': ('quantileExactWeighted', 'Resample'), 'sumCountResample': ('sumCount', 'Resample'), 'rankCorrResample': ('rankCorr', 'Resample'), 'quantilesGKResample': ('quantilesGK', 'Resample'), 'uniqExactResample': ('uniqExact', 'Resample'), 'groupArrayLastResample': ('groupArrayLast', 'Resample'), 'windowFunnelResample': ('windowFunnel', 'Resample'), 'maxIntersectionsResample': ('maxIntersections', 'Resample'), 'corrResample': ('corr', 'Resample'), 'sumWithOverflowResample': ('sumWithOverflow', 'Resample'), 'quantilesBFloat16Resample': ('quantilesBFloat16', 'Resample'), 'quantileExactResample': ('quantileExact', 'Resample'), 'entropyResample': ('entropy', 'Resample'), 'quantilesInterpolatedWeightedResample': ('quantilesInterpolatedWeighted', 'Resample'), 'quantilesResample': ('quantiles', 'Resample'), 'stochasticLinearRegressionResample': ('stochasticLinearRegression', 'Resample'), 'mannWhitneyUTestResample': ('mannWhitneyUTest', 'Resample'), 'quantilesTimingWeightedResample': ('quantilesTimingWeighted', 'Resample'), 'covarSampResample': ('covarSamp', 'Resample'), 'varPopResample': ('varPop', 'Resample'), 'sequenceMatchResample': ('sequenceMatch', 'Resample'), 'meanZTestResample': ('meanZTest', 'Resample'), 'approx_top_sumResample': ('approx_top_sum', 'Resample'), 'boundingRatioResample': ('boundingRatio', 'Resample'), 'kolmogorovSmirnovTestResample': ('kolmogorovSmirnovTest', 'Resample'), 'covarPopResample': ('covarPop', 'Resample'), 'quantileGKResample': ('quantileGK', 'Resample'), 'stddevSampResample': ('stddevSamp', 'Resample'), 'sparkBarResample': ('sparkBar', 'Resample'), 'quantileExactHighResample': ('quantileExactHigh', 'Resample'), 'quantilesExactResample': ('quantilesExact', 'Resample'), 'uniqResample': ('uniq', 'Resample'), 'groupArrayInsertAtResample': ('groupArrayInsertAt', 'Resample'), 'quantilesDeterministicResample': ('quantilesDeterministic', 'Resample'), 'quantilesTDigestWeightedResample': ('quantilesTDigestWeighted', 'Resample'), 'quantileDeterministicResample': ('quantileDeterministic', 'Resample'), 'retentionResample': ('retention', 'Resample'), 'groupBitmapXorResample': ('groupBitmapXor', 'Resample'), 'quantilesExactExclusiveResample': ('quantilesExactExclusive', 'Resample'), 'groupArrayMovingSumResample': ('groupArrayMovingSum', 'Resample'), 'quantileBFloat16WeightedResample': ('quantileBFloat16Weighted', 'Resample'), 'first_valueResample': ('first_value', 'Resample'), 'studentTTestResample': ('studentTTest', 'Resample'), 'topKWeightedResample': ('topKWeighted', 'Resample'), 'quantileTDigestWeightedResample': ('quantileTDigestWeighted', 'Resample'), 'categoricalInformationValueResample': ('categoricalInformationValue', 'Resample'), 'sequenceCountResample': ('sequenceCount', 'Resample'), 'groupBitAndResample': ('groupBitAnd', 'Resample'), 'largestTriangleThreeBucketsResample': ('largestTriangleThreeBuckets', 'Resample'), 'groupBitOrResample': ('groupBitOr', 'Resample'), 'groupBitmapOrResample': ('groupBitmapOr', 'Resample'), 'deltaSumTimestampResample': ('deltaSumTimestamp', 'Resample'), 'argMinResample': ('argMin', 'Resample'), 'groupBitmapAndResample': ('groupBitmapAnd', 'Resample'), 'varSampResample': ('varSamp', 'Resample'), 'exponentialTimeDecayedAvgResample': ('exponentialTimeDecayedAvg', 'Resample'), 'maxResample': ('max', 'Resample'), 'quantileExactLowResample': ('quantileExactLow', 'Resample'), 'maxIntersectionsPositionResample': ('maxIntersectionsPosition', 'Resample'), 'groupArrayResample': ('groupArray', 'Resample'), 'quantileResample': ('quantile', 'Resample'), 'welchTTestArrayIf': ('welchTTest', 'ArrayIf'), 'histogramArrayIf': ('histogram', 'ArrayIf'), 'countArrayIf': ('count', 'ArrayIf'), 'quantileTimingWeightedArrayIf': ('quantileTimingWeighted', 'ArrayIf'), 'cramersVArrayIf': ('cramersV', 'ArrayIf'), 'skewPopArrayIf': ('skewPop', 'ArrayIf'), 'quantileTDigestArrayIf': ('quantileTDigest', 'ArrayIf'), 'stochasticLogisticRegressionArrayIf': ('stochasticLogisticRegression', 'ArrayIf'), 'quantileInterpolatedWeightedArrayIf': ('quantileInterpolatedWeighted', 'ArrayIf'), 'maxMapArrayIf': ('maxMap', 'ArrayIf'), 'theilsUArrayIf': ('theilsU', 'ArrayIf'), 'last_valueArrayIf': ('last_value', 'ArrayIf'), 'argMaxArrayIf': ('argMax', 'ArrayIf'), 'quantilesTDigestArrayIf': ('quantilesTDigest', 'ArrayIf'), 'kurtPopArrayIf': ('kurtPop', 'ArrayIf'), 'groupBitXorArrayIf': ('groupBitXor', 'ArrayIf'), 'groupArrayMovingAvgArrayIf': ('groupArrayMovingAvg', 'ArrayIf'), 'medianArrayIf': ('median', 'ArrayIf'), 'groupUniqArrayArrayIf': ('groupUniqArray', 'ArrayIf'), 'cramersVBiasCorrectedArrayIf': ('cramersVBiasCorrected', 'ArrayIf'), 'groupBitmapArrayIf': ('groupBitmap', 'ArrayIf'), 'sequenceNextNodeArrayIf': ('sequenceNextNode', 'ArrayIf'), 'deltaSumArrayIf': ('deltaSum', 'ArrayIf'), 'anyHeavyArrayIf': ('anyHeavy', 'ArrayIf'), 'quantileBFloat16ArrayIf': ('quantileBFloat16', 'ArrayIf'), 'uniqHLL12ArrayIf': ('uniqHLL12', 'ArrayIf'), 'groupConcatArrayIf': ('groupConcat', 'ArrayIf'), 'simpleLinearRegressionArrayIf': ('simpleLinearRegression', 'ArrayIf'), 'stddevPopArrayIf': ('stddevPop', 'ArrayIf'), 'sumKahanArrayIf': ('sumKahan', 'ArrayIf'), 'contingencyArrayIf': ('contingency', 'ArrayIf'), 'minMapArrayIf': ('minMap', 'ArrayIf'), 'avgArrayIf': ('avg', 'ArrayIf'), 'quantilesExactWeightedArrayIf': ('quantilesExactWeighted', 'ArrayIf'), 'quantilesTimingArrayIf': ('quantilesTiming', 'ArrayIf'), 'uniqThetaArrayIf': ('uniqTheta', 'ArrayIf'), 'exponentialMovingAverageArrayIf': ('exponentialMovingAverage', 'ArrayIf'), 'quantilesBFloat16WeightedArrayIf': ('quantilesBFloat16Weighted', 'ArrayIf'), 'intervalLengthSumArrayIf': ('intervalLengthSum', 'ArrayIf'), 'uniqCombined64ArrayIf': ('uniqCombined64', 'ArrayIf'), 'anyArrayIf': ('any', 'ArrayIf'), 'uniqCombinedArrayIf': ('uniqCombined', 'ArrayIf'), 'avgWeightedArrayIf': ('avgWeighted', 'ArrayIf'), 'quantileTimingArrayIf': ('quantileTiming', 'ArrayIf'), 'uniqUpToArrayIf': ('uniqUpTo', 'ArrayIf'), 'minArrayIf': ('min', 'ArrayIf'), 'anyLastArrayIf': ('anyLast', 'ArrayIf'), 'skewSampArrayIf': ('skewSamp', 'ArrayIf'), 'kurtSampArrayIf': ('kurtSamp', 'ArrayIf'), 'groupArraySampleArrayIf': ('groupArraySample', 'ArrayIf'), 'topKArrayIf': ('topK', 'ArrayIf'), 'sumArrayIf': ('sum', 'ArrayIf'), 'sumMapArrayIf': ('sumMap', 'ArrayIf'), 'quantilesExactHighArrayIf': ('quantilesExactHigh', 'ArrayIf'), 'quantilesExactLowArrayIf': ('quantilesExactLow', 'ArrayIf'), 'quantileExactWeightedArrayIf': ('quantileExactWeighted', 'ArrayIf'), 'sumCountArrayIf': ('sumCount', 'ArrayIf'), 'rankCorrArrayIf': ('rankCorr', 'ArrayIf'), 'quantilesGKArrayIf': ('quantilesGK', 'ArrayIf'), 'uniqExactArrayIf': ('uniqExact', 'ArrayIf'), 'groupArrayLastArrayIf': ('groupArrayLast', 'ArrayIf'), 'windowFunnelArrayIf': ('windowFunnel', 'ArrayIf'), 'maxIntersectionsArrayIf': ('maxIntersections', 'ArrayIf'), 'corrArrayIf': ('corr', 'ArrayIf'), 'sumWithOverflowArrayIf': ('sumWithOverflow', 'ArrayIf'), 'quantilesBFloat16ArrayIf': ('quantilesBFloat16', 'ArrayIf'), 'quantileExactArrayIf': ('quantileExact', 'ArrayIf'), 'entropyArrayIf': ('entropy', 'ArrayIf'), 'quantilesInterpolatedWeightedArrayIf': ('quantilesInterpolatedWeighted', 'ArrayIf'), 'quantilesArrayIf': ('quantiles', 'ArrayIf'), 'stochasticLinearRegressionArrayIf': ('stochasticLinearRegression', 'ArrayIf'), 'mannWhitneyUTestArrayIf': ('mannWhitneyUTest', 'ArrayIf'), 'quantilesTimingWeightedArrayIf': ('quantilesTimingWeighted', 'ArrayIf'), 'covarSampArrayIf': ('covarSamp', 'ArrayIf'), 'varPopArrayIf': ('varPop', 'ArrayIf'), 'sequenceMatchArrayIf': ('sequenceMatch', 'ArrayIf'), 'meanZTestArrayIf': ('meanZTest', 'ArrayIf'), 'approx_top_sumArrayIf': ('approx_top_sum', 'ArrayIf'), 'boundingRatioArrayIf': ('boundingRatio', 'ArrayIf'), 'kolmogorovSmirnovTestArrayIf': ('kolmogorovSmirnovTest', 'ArrayIf'), 'covarPopArrayIf': ('covarPop', 'ArrayIf'), 'quantileGKArrayIf': ('quantileGK', 'ArrayIf'), 'stddevSampArrayIf': ('stddevSamp', 'ArrayIf'), 'sparkBarArrayIf': ('sparkBar', 'ArrayIf'), 'quantileExactHighArrayIf': ('quantileExactHigh', 'ArrayIf'), 'quantilesExactArrayIf': ('quantilesExact', 'ArrayIf'), 'uniqArrayIf': ('uniq', 'ArrayIf'), 'groupArrayInsertAtArrayIf': ('groupArrayInsertAt', 'ArrayIf'), 'quantilesDeterministicArrayIf': ('quantilesDeterministic', 'ArrayIf'), 'quantilesTDigestWeightedArrayIf': ('quantilesTDigestWeighted', 'ArrayIf'), 'quantileDeterministicArrayIf': ('quantileDeterministic', 'ArrayIf'), 'retentionArrayIf': ('retention', 'ArrayIf'), 'groupBitmapXorArrayIf': ('groupBitmapXor', 'ArrayIf'), 'quantilesExactExclusiveArrayIf': ('quantilesExactExclusive', 'ArrayIf'), 'groupArrayMovingSumArrayIf': ('groupArrayMovingSum', 'ArrayIf'), 'quantileBFloat16WeightedArrayIf': ('quantileBFloat16Weighted', 'ArrayIf'), 'first_valueArrayIf': ('first_value', 'ArrayIf'), 'studentTTestArrayIf': ('studentTTest', 'ArrayIf'), 'topKWeightedArrayIf': ('topKWeighted', 'ArrayIf'), 'quantileTDigestWeightedArrayIf': ('quantileTDigestWeighted', 'ArrayIf'), 'categoricalInformationValueArrayIf': ('categoricalInformationValue', 'ArrayIf'), 'sequenceCountArrayIf': ('sequenceCount', 'ArrayIf'), 'groupBitAndArrayIf': ('groupBitAnd', 'ArrayIf'), 'largestTriangleThreeBucketsArrayIf': ('largestTriangleThreeBuckets', 'ArrayIf'), 'groupBitOrArrayIf': ('groupBitOr', 'ArrayIf'), 'groupBitmapOrArrayIf': ('groupBitmapOr', 'ArrayIf'), 'deltaSumTimestampArrayIf': ('deltaSumTimestamp', 'ArrayIf'), 'argMinArrayIf': ('argMin', 'ArrayIf'), 'groupBitmapAndArrayIf': ('groupBitmapAnd', 'ArrayIf'), 'varSampArrayIf': ('varSamp', 'ArrayIf'), 'exponentialTimeDecayedAvgArrayIf': ('exponentialTimeDecayedAvg', 'ArrayIf'), 'maxArrayIf': ('max', 'ArrayIf'), 'quantileExactLowArrayIf': ('quantileExactLow', 'ArrayIf'), 'maxIntersectionsPositionArrayIf': ('maxIntersectionsPosition', 'ArrayIf'), 'groupArrayArrayIf': ('groupArray', 'ArrayIf'), 'quantileArrayIf': ('quantile', 'ArrayIf'), 'welchTTestForEach': ('welchTTest', 'ForEach'), 'histogramForEach': ('histogram', 'ForEach'), 'countForEach': ('count', 'ForEach'), 'quantileTimingWeightedForEach': ('quantileTimingWeighted', 'ForEach'), 'cramersVForEach': ('cramersV', 'ForEach'), 'skewPopForEach': ('skewPop', 'ForEach'), 'quantileTDigestForEach': ('quantileTDigest', 'ForEach'), 'stochasticLogisticRegressionForEach': ('stochasticLogisticRegression', 'ForEach'), 'quantileInterpolatedWeightedForEach': ('quantileInterpolatedWeighted', 'ForEach'), 'maxMapForEach': ('maxMap', 'ForEach'), 'theilsUForEach': ('theilsU', 'ForEach'), 'last_valueForEach': ('last_value', 'ForEach'), 'argMaxForEach': ('argMax', 'ForEach'), 'quantilesTDigestForEach': ('quantilesTDigest', 'ForEach'), 'kurtPopForEach': ('kurtPop', 'ForEach'), 'groupBitXorForEach': ('groupBitXor', 'ForEach'), 'groupArrayMovingAvgForEach': ('groupArrayMovingAvg', 'ForEach'), 'medianForEach': ('median', 'ForEach'), 'groupUniqArrayForEach': ('groupUniqArray', 'ForEach'), 'cramersVBiasCorrectedForEach': ('cramersVBiasCorrected', 'ForEach'), 'groupBitmapForEach': ('groupBitmap', 'ForEach'), 'sequenceNextNodeForEach': ('sequenceNextNode', 'ForEach'), 'deltaSumForEach': ('deltaSum', 'ForEach'), 'anyHeavyForEach': ('anyHeavy', 'ForEach'), 'quantileBFloat16ForEach': ('quantileBFloat16', 'ForEach'), 'uniqHLL12ForEach': ('uniqHLL12', 'ForEach'), 'groupConcatForEach': ('groupConcat', 'ForEach'), 'simpleLinearRegressionForEach': ('simpleLinearRegression', 'ForEach'), 'stddevPopForEach': ('stddevPop', 'ForEach'), 'sumKahanForEach': ('sumKahan', 'ForEach'), 'contingencyForEach': ('contingency', 'ForEach'), 'minMapForEach': ('minMap', 'ForEach'), 'avgForEach': ('avg', 'ForEach'), 'quantilesExactWeightedForEach': ('quantilesExactWeighted', 'ForEach'), 'quantilesTimingForEach': ('quantilesTiming', 'ForEach'), 'uniqThetaForEach': ('uniqTheta', 'ForEach'), 'exponentialMovingAverageForEach': ('exponentialMovingAverage', 'ForEach'), 'quantilesBFloat16WeightedForEach': ('quantilesBFloat16Weighted', 'ForEach'), 'intervalLengthSumForEach': ('intervalLengthSum', 'ForEach'), 'uniqCombined64ForEach': ('uniqCombined64', 'ForEach'), 'anyForEach': ('any', 'ForEach'), 'uniqCombinedForEach': ('uniqCombined', 'ForEach'), 'avgWeightedForEach': ('avgWeighted', 'ForEach'), 'quantileTimingForEach': ('quantileTiming', 'ForEach'), 'uniqUpToForEach': ('uniqUpTo', 'ForEach'), 'minForEach': ('min', 'ForEach'), 'anyLastForEach': ('anyLast', 'ForEach'), 'skewSampForEach': ('skewSamp', 'ForEach'), 'kurtSampForEach': ('kurtSamp', 'ForEach'), 'groupArraySampleForEach': ('groupArraySample', 'ForEach'), 'topKForEach': ('topK', 'ForEach'), 'sumForEach': ('sum', 'ForEach'), 'sumMapForEach': ('sumMap', 'ForEach'), 'quantilesExactHighForEach': ('quantilesExactHigh', 'ForEach'), 'quantilesExactLowForEach': ('quantilesExactLow', 'ForEach'), 'quantileExactWeightedForEach': ('quantileExactWeighted', 'ForEach'), 'sumCountForEach': ('sumCount', 'ForEach'), 'rankCorrForEach': ('rankCorr', 'ForEach'), 'quantilesGKForEach': ('quantilesGK', 'ForEach'), 'uniqExactForEach': ('uniqExact', 'ForEach'), 'groupArrayLastForEach': ('groupArrayLast', 'ForEach'), 'windowFunnelForEach': ('windowFunnel', 'ForEach'), 'maxIntersectionsForEach': ('maxIntersections', 'ForEach'), 'corrForEach': ('corr', 'ForEach'), 'sumWithOverflowForEach': ('sumWithOverflow', 'ForEach'), 'quantilesBFloat16ForEach': ('quantilesBFloat16', 'ForEach'), 'quantileExactForEach': ('quantileExact', 'ForEach'), 'entropyForEach': ('entropy', 'ForEach'), 'quantilesInterpolatedWeightedForEach': ('quantilesInterpolatedWeighted', 'ForEach'), 'quantilesForEach': ('quantiles', 'ForEach'), 'stochasticLinearRegressionForEach': ('stochasticLinearRegression', 'ForEach'), 'mannWhitneyUTestForEach': ('mannWhitneyUTest', 'ForEach'), 'quantilesTimingWeightedForEach': ('quantilesTimingWeighted', 'ForEach'), 'covarSampForEach': ('covarSamp', 'ForEach'), 'varPopForEach': ('varPop', 'ForEach'), 'sequenceMatchForEach': ('sequenceMatch', 'ForEach'), 'meanZTestForEach': ('meanZTest', 'ForEach'), 'approx_top_sumForEach': ('approx_top_sum', 'ForEach'), 'boundingRatioForEach': ('boundingRatio', 'ForEach'), 'kolmogorovSmirnovTestForEach': ('kolmogorovSmirnovTest', 'ForEach'), 'covarPopForEach': ('covarPop', 'ForEach'), 'quantileGKForEach': ('quantileGK', 'ForEach'), 'stddevSampForEach': ('stddevSamp', 'ForEach'), 'sparkBarForEach': ('sparkBar', 'ForEach'), 'quantileExactHighForEach': ('quantileExactHigh', 'ForEach'), 'quantilesExactForEach': ('quantilesExact', 'ForEach'), 'uniqForEach': ('uniq', 'ForEach'), 'groupArrayInsertAtForEach': ('groupArrayInsertAt', 'ForEach'), 'quantilesDeterministicForEach': ('quantilesDeterministic', 'ForEach'), 'quantilesTDigestWeightedForEach': ('quantilesTDigestWeighted', 'ForEach'), 'quantileDeterministicForEach': ('quantileDeterministic', 'ForEach'), 'retentionForEach': ('retention', 'ForEach'), 'groupBitmapXorForEach': ('groupBitmapXor', 'ForEach'), 'quantilesExactExclusiveForEach': ('quantilesExactExclusive', 'ForEach'), 'groupArrayMovingSumForEach': ('groupArrayMovingSum', 'ForEach'), 'quantileBFloat16WeightedForEach': ('quantileBFloat16Weighted', 'ForEach'), 'first_valueForEach': ('first_value', 'ForEach'), 'studentTTestForEach': ('studentTTest', 'ForEach'), 'topKWeightedForEach': ('topKWeighted', 'ForEach'), 'quantileTDigestWeightedForEach': ('quantileTDigestWeighted', 'ForEach'), 'categoricalInformationValueForEach': ('categoricalInformationValue', 'ForEach'), 'sequenceCountForEach': ('sequenceCount', 'ForEach'), 'groupBitAndForEach': ('groupBitAnd', 'ForEach'), 'largestTriangleThreeBucketsForEach': ('largestTriangleThreeBuckets', 'ForEach'), 'groupBitOrForEach': ('groupBitOr', 'ForEach'), 'groupBitmapOrForEach': ('groupBitmapOr', 'ForEach'), 'deltaSumTimestampForEach': ('deltaSumTimestamp', 'ForEach'), 'argMinForEach': ('argMin', 'ForEach'), 'groupBitmapAndForEach': ('groupBitmapAnd', 'ForEach'), 'varSampForEach': ('varSamp', 'ForEach'), 'exponentialTimeDecayedAvgForEach': ('exponentialTimeDecayedAvg', 'ForEach'), 'maxForEach': ('max', 'ForEach'), 'quantileExactLowForEach': ('quantileExactLow', 'ForEach'), 'maxIntersectionsPositionForEach': ('maxIntersectionsPosition', 'ForEach'), 'groupArrayForEach': ('groupArray', 'ForEach'), 'quantileForEach': ('quantile', 'ForEach'), 'welchTTestOrNull': ('welchTTest', 'OrNull'), 'histogramOrNull': ('histogram', 'OrNull'), 'countOrNull': ('count', 'OrNull'), 'quantileTimingWeightedOrNull': ('quantileTimingWeighted', 'OrNull'), 'cramersVOrNull': ('cramersV', 'OrNull'), 'skewPopOrNull': ('skewPop', 'OrNull'), 'quantileTDigestOrNull': ('quantileTDigest', 'OrNull'), 'stochasticLogisticRegressionOrNull': ('stochasticLogisticRegression', 'OrNull'), 'quantileInterpolatedWeightedOrNull': ('quantileInterpolatedWeighted', 'OrNull'), 'maxMapOrNull': ('maxMap', 'OrNull'), 'theilsUOrNull': ('theilsU', 'OrNull'), 'last_valueOrNull': ('last_value', 'OrNull'), 'argMaxOrNull': ('argMax', 'OrNull'), 'quantilesTDigestOrNull': ('quantilesTDigest', 'OrNull'), 'kurtPopOrNull': ('kurtPop', 'OrNull'), 'groupBitXorOrNull': ('groupBitXor', 'OrNull'), 'groupArrayMovingAvgOrNull': ('groupArrayMovingAvg', 'OrNull'), 'medianOrNull': ('median', 'OrNull'), 'groupUniqArrayOrNull': ('groupUniqArray', 'OrNull'), 'cramersVBiasCorrectedOrNull': ('cramersVBiasCorrected', 'OrNull'), 'groupBitmapOrNull': ('groupBitmap', 'OrNull'), 'sequenceNextNodeOrNull': ('sequenceNextNode', 'OrNull'), 'deltaSumOrNull': ('deltaSum', 'OrNull'), 'anyHeavyOrNull': ('anyHeavy', 'OrNull'), 'quantileBFloat16OrNull': ('quantileBFloat16', 'OrNull'), 'uniqHLL12OrNull': ('uniqHLL12', 'OrNull'), 'groupConcatOrNull': ('groupConcat', 'OrNull'), 'simpleLinearRegressionOrNull': ('simpleLinearRegression', 'OrNull'), 'stddevPopOrNull': ('stddevPop', 'OrNull'), 'sumKahanOrNull': ('sumKahan', 'OrNull'), 'contingencyOrNull': ('contingency', 'OrNull'), 'minMapOrNull': ('minMap', 'OrNull'), 'avgOrNull': ('avg', 'OrNull'), 'quantilesExactWeightedOrNull': ('quantilesExactWeighted', 'OrNull'), 'quantilesTimingOrNull': ('quantilesTiming', 'OrNull'), 'uniqThetaOrNull': ('uniqTheta', 'OrNull'), 'exponentialMovingAverageOrNull': ('exponentialMovingAverage', 'OrNull'), 'quantilesBFloat16WeightedOrNull': ('quantilesBFloat16Weighted', 'OrNull'), 'intervalLengthSumOrNull': ('intervalLengthSum', 'OrNull'), 'uniqCombined64OrNull': ('uniqCombined64', 'OrNull'), 'anyOrNull': ('any', 'OrNull'), 'uniqCombinedOrNull': ('uniqCombined', 'OrNull'), 'avgWeightedOrNull': ('avgWeighted', 'OrNull'), 'quantileTimingOrNull': ('quantileTiming', 'OrNull'), 'uniqUpToOrNull': ('uniqUpTo', 'OrNull'), 'minOrNull': ('min', 'OrNull'), 'anyLastOrNull': ('anyLast', 'OrNull'), 'skewSampOrNull': ('skewSamp', 'OrNull'), 'kurtSampOrNull': ('kurtSamp', 'OrNull'), 'groupArraySampleOrNull': ('groupArraySample', 'OrNull'), 'topKOrNull': ('topK', 'OrNull'), 'sumOrNull': ('sum', 'OrNull'), 'sumMapOrNull': ('sumMap', 'OrNull'), 'quantilesExactHighOrNull': ('quantilesExactHigh', 'OrNull'), 'quantilesExactLowOrNull': ('quantilesExactLow', 'OrNull'), 'quantileExactWeightedOrNull': ('quantileExactWeighted', 'OrNull'), 'sumCountOrNull': ('sumCount', 'OrNull'), 'rankCorrOrNull': ('rankCorr', 'OrNull'), 'quantilesGKOrNull': ('quantilesGK', 'OrNull'), 'uniqExactOrNull': ('uniqExact', 'OrNull'), 'groupArrayLastOrNull': ('groupArrayLast', 'OrNull'), 'windowFunnelOrNull': ('windowFunnel', 'OrNull'), 'maxIntersectionsOrNull': ('maxIntersections', 'OrNull'), 'corrOrNull': ('corr', 'OrNull'), 'sumWithOverflowOrNull': ('sumWithOverflow', 'OrNull'), 'quantilesBFloat16OrNull': ('quantilesBFloat16', 'OrNull'), 'quantileExactOrNull': ('quantileExact', 'OrNull'), 'entropyOrNull': ('entropy', 'OrNull'), 'quantilesInterpolatedWeightedOrNull': ('quantilesInterpolatedWeighted', 'OrNull'), 'quantilesOrNull': ('quantiles', 'OrNull'), 'stochasticLinearRegressionOrNull': ('stochasticLinearRegression', 'OrNull'), 'mannWhitneyUTestOrNull': ('mannWhitneyUTest', 'OrNull'), 'quantilesTimingWeightedOrNull': ('quantilesTimingWeighted', 'OrNull'), 'covarSampOrNull': ('covarSamp', 'OrNull'), 'varPopOrNull': ('varPop', 'OrNull'), 'sequenceMatchOrNull': ('sequenceMatch', 'OrNull'), 'meanZTestOrNull': ('meanZTest', 'OrNull'), 'approx_top_sumOrNull': ('approx_top_sum', 'OrNull'), 'boundingRatioOrNull': ('boundingRatio', 'OrNull'), 'kolmogorovSmirnovTestOrNull': ('kolmogorovSmirnovTest', 'OrNull'), 'covarPopOrNull': ('covarPop', 'OrNull'), 'quantileGKOrNull': ('quantileGK', 'OrNull'), 'stddevSampOrNull': ('stddevSamp', 'OrNull'), 'sparkBarOrNull': ('sparkBar', 'OrNull'), 'quantileExactHighOrNull': ('quantileExactHigh', 'OrNull'), 'quantilesExactOrNull': ('quantilesExact', 'OrNull'), 'uniqOrNull': ('uniq', 'OrNull'), 'groupArrayInsertAtOrNull': ('groupArrayInsertAt', 'OrNull'), 'quantilesDeterministicOrNull': ('quantilesDeterministic', 'OrNull'), 'quantilesTDigestWeightedOrNull': ('quantilesTDigestWeighted', 'OrNull'), 'quantileDeterministicOrNull': ('quantileDeterministic', 'OrNull'), 'retentionOrNull': ('retention', 'OrNull'), 'groupBitmapXorOrNull': ('groupBitmapXor', 'OrNull'), 'quantilesExactExclusiveOrNull': ('quantilesExactExclusive', 'OrNull'), 'groupArrayMovingSumOrNull': ('groupArrayMovingSum', 'OrNull'), 'quantileBFloat16WeightedOrNull': ('quantileBFloat16Weighted', 'OrNull'), 'first_valueOrNull': ('first_value', 'OrNull'), 'studentTTestOrNull': ('studentTTest', 'OrNull'), 'topKWeightedOrNull': ('topKWeighted', 'OrNull'), 'quantileTDigestWeightedOrNull': ('quantileTDigestWeighted', 'OrNull'), 'categoricalInformationValueOrNull': ('categoricalInformationValue', 'OrNull'), 'sequenceCountOrNull': ('sequenceCount', 'OrNull'), 'groupBitAndOrNull': ('groupBitAnd', 'OrNull'), 'largestTriangleThreeBucketsOrNull': ('largestTriangleThreeBuckets', 'OrNull'), 'groupBitOrOrNull': ('groupBitOr', 'OrNull'), 'groupBitmapOrOrNull': ('groupBitmapOr', 'OrNull'), 'deltaSumTimestampOrNull': ('deltaSumTimestamp', 'OrNull'), 'argMinOrNull': ('argMin', 'OrNull'), 'groupBitmapAndOrNull': ('groupBitmapAnd', 'OrNull'), 'varSampOrNull': ('varSamp', 'OrNull'), 'exponentialTimeDecayedAvgOrNull': ('exponentialTimeDecayedAvg', 'OrNull'), 'maxOrNull': ('max', 'OrNull'), 'quantileExactLowOrNull': ('quantileExactLow', 'OrNull'), 'maxIntersectionsPositionOrNull': ('maxIntersectionsPosition', 'OrNull'), 'groupArrayOrNull': ('groupArray', 'OrNull'), 'quantileOrNull': ('quantile', 'OrNull'), 'welchTTestArgMin': ('welchTTest', 'ArgMin'), 'histogramArgMin': ('histogram', 'ArgMin'), 'countArgMin': ('count', 'ArgMin'), 'quantileTimingWeightedArgMin': ('quantileTimingWeighted', 'ArgMin'), 'cramersVArgMin': ('cramersV', 'ArgMin'), 'skewPopArgMin': ('skewPop', 'ArgMin'), 'quantileTDigestArgMin': ('quantileTDigest', 'ArgMin'), 'stochasticLogisticRegressionArgMin': ('stochasticLogisticRegression', 'ArgMin'), 'quantileInterpolatedWeightedArgMin': ('quantileInterpolatedWeighted', 'ArgMin'), 'maxMapArgMin': ('maxMap', 'ArgMin'), 'theilsUArgMin': ('theilsU', 'ArgMin'), 'last_valueArgMin': ('last_value', 'ArgMin'), 'argMaxArgMin': ('argMax', 'ArgMin'), 'quantilesTDigestArgMin': ('quantilesTDigest', 'ArgMin'), 'kurtPopArgMin': ('kurtPop', 'ArgMin'), 'groupBitXorArgMin': ('groupBitXor', 'ArgMin'), 'groupArrayMovingAvgArgMin': ('groupArrayMovingAvg', 'ArgMin'), 'medianArgMin': ('median', 'ArgMin'), 'groupUniqArrayArgMin': ('groupUniqArray', 'ArgMin'), 'cramersVBiasCorrectedArgMin': ('cramersVBiasCorrected', 'ArgMin'), 'groupBitmapArgMin': ('groupBitmap', 'ArgMin'), 'sequenceNextNodeArgMin': ('sequenceNextNode', 'ArgMin'), 'deltaSumArgMin': ('deltaSum', 'ArgMin'), 'anyHeavyArgMin': ('anyHeavy', 'ArgMin'), 'quantileBFloat16ArgMin': ('quantileBFloat16', 'ArgMin'), 'uniqHLL12ArgMin': ('uniqHLL12', 'ArgMin'), 'groupConcatArgMin': ('groupConcat', 'ArgMin'), 'simpleLinearRegressionArgMin': ('simpleLinearRegression', 'ArgMin'), 'stddevPopArgMin': ('stddevPop', 'ArgMin'), 'sumKahanArgMin': ('sumKahan', 'ArgMin'), 'contingencyArgMin': ('contingency', 'ArgMin'), 'minMapArgMin': ('minMap', 'ArgMin'), 'avgArgMin': ('avg', 'ArgMin'), 'quantilesExactWeightedArgMin': ('quantilesExactWeighted', 'ArgMin'), 'quantilesTimingArgMin': ('quantilesTiming', 'ArgMin'), 'uniqThetaArgMin': ('uniqTheta', 'ArgMin'), 'exponentialMovingAverageArgMin': ('exponentialMovingAverage', 'ArgMin'), 'quantilesBFloat16WeightedArgMin': ('quantilesBFloat16Weighted', 'ArgMin'), 'intervalLengthSumArgMin': ('intervalLengthSum', 'ArgMin'), 'uniqCombined64ArgMin': ('uniqCombined64', 'ArgMin'), 'anyArgMin': ('any', 'ArgMin'), 'uniqCombinedArgMin': ('uniqCombined', 'ArgMin'), 'avgWeightedArgMin': ('avgWeighted', 'ArgMin'), 'quantileTimingArgMin': ('quantileTiming', 'ArgMin'), 'uniqUpToArgMin': ('uniqUpTo', 'ArgMin'), 'minArgMin': ('min', 'ArgMin'), 'anyLastArgMin': ('anyLast', 'ArgMin'), 'skewSampArgMin': ('skewSamp', 'ArgMin'), 'kurtSampArgMin': ('kurtSamp', 'ArgMin'), 'groupArraySampleArgMin': ('groupArraySample', 'ArgMin'), 'topKArgMin': ('topK', 'ArgMin'), 'sumArgMin': ('sum', 'ArgMin'), 'sumMapArgMin': ('sumMap', 'ArgMin'), 'quantilesExactHighArgMin': ('quantilesExactHigh', 'ArgMin'), 'quantilesExactLowArgMin': ('quantilesExactLow', 'ArgMin'), 'quantileExactWeightedArgMin': ('quantileExactWeighted', 'ArgMin'), 'sumCountArgMin': ('sumCount', 'ArgMin'), 'rankCorrArgMin': ('rankCorr', 'ArgMin'), 'quantilesGKArgMin': ('quantilesGK', 'ArgMin'), 'uniqExactArgMin': ('uniqExact', 'ArgMin'), 'groupArrayLastArgMin': ('groupArrayLast', 'ArgMin'), 'windowFunnelArgMin': ('windowFunnel', 'ArgMin'), 'maxIntersectionsArgMin': ('maxIntersections', 'ArgMin'), 'corrArgMin': ('corr', 'ArgMin'), 'sumWithOverflowArgMin': ('sumWithOverflow', 'ArgMin'), 'quantilesBFloat16ArgMin': ('quantilesBFloat16', 'ArgMin'), 'quantileExactArgMin': ('quantileExact', 'ArgMin'), 'entropyArgMin': ('entropy', 'ArgMin'), 'quantilesInterpolatedWeightedArgMin': ('quantilesInterpolatedWeighted', 'ArgMin'), 'quantilesArgMin': ('quantiles', 'ArgMin'), 'stochasticLinearRegressionArgMin': ('stochasticLinearRegression', 'ArgMin'), 'mannWhitneyUTestArgMin': ('mannWhitneyUTest', 'ArgMin'), 'quantilesTimingWeightedArgMin': ('quantilesTimingWeighted', 'ArgMin'), 'covarSampArgMin': ('covarSamp', 'ArgMin'), 'varPopArgMin': ('varPop', 'ArgMin'), 'sequenceMatchArgMin': ('sequenceMatch', 'ArgMin'), 'meanZTestArgMin': ('meanZTest', 'ArgMin'), 'approx_top_sumArgMin': ('approx_top_sum', 'ArgMin'), 'boundingRatioArgMin': ('boundingRatio', 'ArgMin'), 'kolmogorovSmirnovTestArgMin': ('kolmogorovSmirnovTest', 'ArgMin'), 'covarPopArgMin': ('covarPop', 'ArgMin'), 'quantileGKArgMin': ('quantileGK', 'ArgMin'), 'stddevSampArgMin': ('stddevSamp', 'ArgMin'), 'sparkBarArgMin': ('sparkBar', 'ArgMin'), 'quantileExactHighArgMin': ('quantileExactHigh', 'ArgMin'), 'quantilesExactArgMin': ('quantilesExact', 'ArgMin'), 'uniqArgMin': ('uniq', 'ArgMin'), 'groupArrayInsertAtArgMin': ('groupArrayInsertAt', 'ArgMin'), 'quantilesDeterministicArgMin': ('quantilesDeterministic', 'ArgMin'), 'quantilesTDigestWeightedArgMin': ('quantilesTDigestWeighted', 'ArgMin'), 'quantileDeterministicArgMin': ('quantileDeterministic', 'ArgMin'), 'retentionArgMin': ('retention', 'ArgMin'), 'groupBitmapXorArgMin': ('groupBitmapXor', 'ArgMin'), 'quantilesExactExclusiveArgMin': ('quantilesExactExclusive', 'ArgMin'), 'groupArrayMovingSumArgMin': ('groupArrayMovingSum', 'ArgMin'), 'quantileBFloat16WeightedArgMin': ('quantileBFloat16Weighted', 'ArgMin'), 'first_valueArgMin': ('first_value', 'ArgMin'), 'studentTTestArgMin': ('studentTTest', 'ArgMin'), 'topKWeightedArgMin': ('topKWeighted', 'ArgMin'), 'quantileTDigestWeightedArgMin': ('quantileTDigestWeighted', 'ArgMin'), 'categoricalInformationValueArgMin': ('categoricalInformationValue', 'ArgMin'), 'sequenceCountArgMin': ('sequenceCount', 'ArgMin'), 'groupBitAndArgMin': ('groupBitAnd', 'ArgMin'), 'largestTriangleThreeBucketsArgMin': ('largestTriangleThreeBuckets', 'ArgMin'), 'groupBitOrArgMin': ('groupBitOr', 'ArgMin'), 'groupBitmapOrArgMin': ('groupBitmapOr', 'ArgMin'), 'deltaSumTimestampArgMin': ('deltaSumTimestamp', 'ArgMin'), 'argMinArgMin': ('argMin', 'ArgMin'), 'groupBitmapAndArgMin': ('groupBitmapAnd', 'ArgMin'), 'varSampArgMin': ('varSamp', 'ArgMin'), 'exponentialTimeDecayedAvgArgMin': ('exponentialTimeDecayedAvg', 'ArgMin'), 'maxArgMin': ('max', 'ArgMin'), 'quantileExactLowArgMin': ('quantileExactLow', 'ArgMin'), 'maxIntersectionsPositionArgMin': ('maxIntersectionsPosition', 'ArgMin'), 'groupArrayArgMin': ('groupArray', 'ArgMin'), 'quantileArgMin': ('quantile', 'ArgMin'), 'welchTTestArgMax': ('welchTTest', 'ArgMax'), 'histogramArgMax': ('histogram', 'ArgMax'), 'countArgMax': ('count', 'ArgMax'), 'quantileTimingWeightedArgMax': ('quantileTimingWeighted', 'ArgMax'), 'cramersVArgMax': ('cramersV', 'ArgMax'), 'skewPopArgMax': ('skewPop', 'ArgMax'), 'quantileTDigestArgMax': ('quantileTDigest', 'ArgMax'), 'stochasticLogisticRegressionArgMax': ('stochasticLogisticRegression', 'ArgMax'), 'quantileInterpolatedWeightedArgMax': ('quantileInterpolatedWeighted', 'ArgMax'), 'maxMapArgMax': ('maxMap', 'ArgMax'), 'theilsUArgMax': ('theilsU', 'ArgMax'), 'last_valueArgMax': ('last_value', 'ArgMax'), 'argMaxArgMax': ('argMax', 'ArgMax'), 'quantilesTDigestArgMax': ('quantilesTDigest', 'ArgMax'), 'kurtPopArgMax': ('kurtPop', 'ArgMax'), 'groupBitXorArgMax': ('groupBitXor', 'ArgMax'), 'groupArrayMovingAvgArgMax': ('groupArrayMovingAvg', 'ArgMax'), 'medianArgMax': ('median', 'ArgMax'), 'groupUniqArrayArgMax': ('groupUniqArray', 'ArgMax'), 'cramersVBiasCorrectedArgMax': ('cramersVBiasCorrected', 'ArgMax'), 'groupBitmapArgMax': ('groupBitmap', 'ArgMax'), 'sequenceNextNodeArgMax': ('sequenceNextNode', 'ArgMax'), 'deltaSumArgMax': ('deltaSum', 'ArgMax'), 'anyHeavyArgMax': ('anyHeavy', 'ArgMax'), 'quantileBFloat16ArgMax': ('quantileBFloat16', 'ArgMax'), 'uniqHLL12ArgMax': ('uniqHLL12', 'ArgMax'), 'groupConcatArgMax': ('groupConcat', 'ArgMax'), 'simpleLinearRegressionArgMax': ('simpleLinearRegression', 'ArgMax'), 'stddevPopArgMax': ('stddevPop', 'ArgMax'), 'sumKahanArgMax': ('sumKahan', 'ArgMax'), 'contingencyArgMax': ('contingency', 'ArgMax'), 'minMapArgMax': ('minMap', 'ArgMax'), 'avgArgMax': ('avg', 'ArgMax'), 'quantilesExactWeightedArgMax': ('quantilesExactWeighted', 'ArgMax'), 'quantilesTimingArgMax': ('quantilesTiming', 'ArgMax'), 'uniqThetaArgMax': ('uniqTheta', 'ArgMax'), 'exponentialMovingAverageArgMax': ('exponentialMovingAverage', 'ArgMax'), 'quantilesBFloat16WeightedArgMax': ('quantilesBFloat16Weighted', 'ArgMax'), 'intervalLengthSumArgMax': ('intervalLengthSum', 'ArgMax'), 'uniqCombined64ArgMax': ('uniqCombined64', 'ArgMax'), 'anyArgMax': ('any', 'ArgMax'), 'uniqCombinedArgMax': ('uniqCombined', 'ArgMax'), 'avgWeightedArgMax': ('avgWeighted', 'ArgMax'), 'quantileTimingArgMax': ('quantileTiming', 'ArgMax'), 'uniqUpToArgMax': ('uniqUpTo', 'ArgMax'), 'minArgMax': ('min', 'ArgMax'), 'anyLastArgMax': ('anyLast', 'ArgMax'), 'skewSampArgMax': ('skewSamp', 'ArgMax'), 'kurtSampArgMax': ('kurtSamp', 'ArgMax'), 'groupArraySampleArgMax': ('groupArraySample', 'ArgMax'), 'topKArgMax': ('topK', 'ArgMax'), 'sumArgMax': ('sum', 'ArgMax'), 'sumMapArgMax': ('sumMap', 'ArgMax'), 'quantilesExactHighArgMax': ('quantilesExactHigh', 'ArgMax'), 'quantilesExactLowArgMax': ('quantilesExactLow', 'ArgMax'), 'quantileExactWeightedArgMax': ('quantileExactWeighted', 'ArgMax'), 'sumCountArgMax': ('sumCount', 'ArgMax'), 'rankCorrArgMax': ('rankCorr', 'ArgMax'), 'quantilesGKArgMax': ('quantilesGK', 'ArgMax'), 'uniqExactArgMax': ('uniqExact', 'ArgMax'), 'groupArrayLastArgMax': ('groupArrayLast', 'ArgMax'), 'windowFunnelArgMax': ('windowFunnel', 'ArgMax'), 'maxIntersectionsArgMax': ('maxIntersections', 'ArgMax'), 'corrArgMax': ('corr', 'ArgMax'), 'sumWithOverflowArgMax': ('sumWithOverflow', 'ArgMax'), 'quantilesBFloat16ArgMax': ('quantilesBFloat16', 'ArgMax'), 'quantileExactArgMax': ('quantileExact', 'ArgMax'), 'entropyArgMax': ('entropy', 'ArgMax'), 'quantilesInterpolatedWeightedArgMax': ('quantilesInterpolatedWeighted', 'ArgMax'), 'quantilesArgMax': ('quantiles', 'ArgMax'), 'stochasticLinearRegressionArgMax': ('stochasticLinearRegression', 'ArgMax'), 'mannWhitneyUTestArgMax': ('mannWhitneyUTest', 'ArgMax'), 'quantilesTimingWeightedArgMax': ('quantilesTimingWeighted', 'ArgMax'), 'covarSampArgMax': ('covarSamp', 'ArgMax'), 'varPopArgMax': ('varPop', 'ArgMax'), 'sequenceMatchArgMax': ('sequenceMatch', 'ArgMax'), 'meanZTestArgMax': ('meanZTest', 'ArgMax'), 'approx_top_sumArgMax': ('approx_top_sum', 'ArgMax'), 'boundingRatioArgMax': ('boundingRatio', 'ArgMax'), 'kolmogorovSmirnovTestArgMax': ('kolmogorovSmirnovTest', 'ArgMax'), 'covarPopArgMax': ('covarPop', 'ArgMax'), 'quantileGKArgMax': ('quantileGK', 'ArgMax'), 'stddevSampArgMax': ('stddevSamp', 'ArgMax'), 'sparkBarArgMax': ('sparkBar', 'ArgMax'), 'quantileExactHighArgMax': ('quantileExactHigh', 'ArgMax'), 'quantilesExactArgMax': ('quantilesExact', 'ArgMax'), 'uniqArgMax': ('uniq', 'ArgMax'), 'groupArrayInsertAtArgMax': ('groupArrayInsertAt', 'ArgMax'), 'quantilesDeterministicArgMax': ('quantilesDeterministic', 'ArgMax'), 'quantilesTDigestWeightedArgMax': ('quantilesTDigestWeighted', 'ArgMax'), 'quantileDeterministicArgMax': ('quantileDeterministic', 'ArgMax'), 'retentionArgMax': ('retention', 'ArgMax'), 'groupBitmapXorArgMax': ('groupBitmapXor', 'ArgMax'), 'quantilesExactExclusiveArgMax': ('quantilesExactExclusive', 'ArgMax'), 'groupArrayMovingSumArgMax': ('groupArrayMovingSum', 'ArgMax'), 'quantileBFloat16WeightedArgMax': ('quantileBFloat16Weighted', 'ArgMax'), 'first_valueArgMax': ('first_value', 'ArgMax'), 'studentTTestArgMax': ('studentTTest', 'ArgMax'), 'topKWeightedArgMax': ('topKWeighted', 'ArgMax'), 'quantileTDigestWeightedArgMax': ('quantileTDigestWeighted', 'ArgMax'), 'categoricalInformationValueArgMax': ('categoricalInformationValue', 'ArgMax'), 'sequenceCountArgMax': ('sequenceCount', 'ArgMax'), 'groupBitAndArgMax': ('groupBitAnd', 'ArgMax'), 'largestTriangleThreeBucketsArgMax': ('largestTriangleThreeBuckets', 'ArgMax'), 'groupBitOrArgMax': ('groupBitOr', 'ArgMax'), 'groupBitmapOrArgMax': ('groupBitmapOr', 'ArgMax'), 'deltaSumTimestampArgMax': ('deltaSumTimestamp', 'ArgMax'), 'argMinArgMax': ('argMin', 'ArgMax'), 'groupBitmapAndArgMax': ('groupBitmapAnd', 'ArgMax'), 'varSampArgMax': ('varSamp', 'ArgMax'), 'exponentialTimeDecayedAvgArgMax': ('exponentialTimeDecayedAvg', 'ArgMax'), 'maxArgMax': ('max', 'ArgMax'), 'quantileExactLowArgMax': ('quantileExactLow', 'ArgMax'), 'maxIntersectionsPositionArgMax': ('maxIntersectionsPosition', 'ArgMax'), 'groupArrayArgMax': ('groupArray', 'ArgMax'), 'quantileArgMax': ('quantile', 'ArgMax'), 'welchTTestArray': ('welchTTest', 'Array'), 'histogramArray': ('histogram', 'Array'), 'countArray': ('count', 'Array'), 'quantileTimingWeightedArray': ('quantileTimingWeighted', 'Array'), 'cramersVArray': ('cramersV', 'Array'), 'skewPopArray': ('skewPop', 'Array'), 'quantileTDigestArray': ('quantileTDigest', 'Array'), 'stochasticLogisticRegressionArray': ('stochasticLogisticRegression', 'Array'), 'quantileInterpolatedWeightedArray': ('quantileInterpolatedWeighted', 'Array'), 'maxMapArray': ('maxMap', 'Array'), 'theilsUArray': ('theilsU', 'Array'), 'last_valueArray': ('last_value', 'Array'), 'argMaxArray': ('argMax', 'Array'), 'quantilesTDigestArray': ('quantilesTDigest', 'Array'), 'kurtPopArray': ('kurtPop', 'Array'), 'groupBitXorArray': ('groupBitXor', 'Array'), 'groupArrayMovingAvgArray': ('groupArrayMovingAvg', 'Array'), 'medianArray': ('median', 'Array'), 'groupUniqArrayArray': ('groupUniqArray', 'Array'), 'cramersVBiasCorrectedArray': ('cramersVBiasCorrected', 'Array'), 'groupBitmapArray': ('groupBitmap', 'Array'), 'sequenceNextNodeArray': ('sequenceNextNode', 'Array'), 'deltaSumArray': ('deltaSum', 'Array'), 'anyHeavyArray': ('anyHeavy', 'Array'), 'quantileBFloat16Array': ('quantileBFloat16', 'Array'), 'uniqHLL12Array': ('uniqHLL12', 'Array'), 'groupConcatArray': ('groupConcat', 'Array'), 'simpleLinearRegressionArray': ('simpleLinearRegression', 'Array'), 'stddevPopArray': ('stddevPop', 'Array'), 'sumKahanArray': ('sumKahan', 'Array'), 'contingencyArray': ('contingency', 'Array'), 'minMapArray': ('minMap', 'Array'), 'avgArray': ('avg', 'Array'), 'quantilesExactWeightedArray': ('quantilesExactWeighted', 'Array'), 'quantilesTimingArray': ('quantilesTiming', 'Array'), 'uniqThetaArray': ('uniqTheta', 'Array'), 'exponentialMovingAverageArray': ('exponentialMovingAverage', 'Array'), 'quantilesBFloat16WeightedArray': ('quantilesBFloat16Weighted', 'Array'), 'intervalLengthSumArray': ('intervalLengthSum', 'Array'), 'uniqCombined64Array': ('uniqCombined64', 'Array'), 'anyArray': ('any', 'Array'), 'uniqCombinedArray': ('uniqCombined', 'Array'), 'avgWeightedArray': ('avgWeighted', 'Array'), 'quantileTimingArray': ('quantileTiming', 'Array'), 'uniqUpToArray': ('uniqUpTo', 'Array'), 'minArray': ('min', 'Array'), 'anyLastArray': ('anyLast', 'Array'), 'skewSampArray': ('skewSamp', 'Array'), 'kurtSampArray': ('kurtSamp', 'Array'), 'groupArraySampleArray': ('groupArraySample', 'Array'), 'topKArray': ('topK', 'Array'), 'sumArray': ('sum', 'Array'), 'sumMapArray': ('sumMap', 'Array'), 'quantilesExactHighArray': ('quantilesExactHigh', 'Array'), 'quantilesExactLowArray': ('quantilesExactLow', 'Array'), 'quantileExactWeightedArray': ('quantileExactWeighted', 'Array'), 'sumCountArray': ('sumCount', 'Array'), 'rankCorrArray': ('rankCorr', 'Array'), 'quantilesGKArray': ('quantilesGK', 'Array'), 'uniqExactArray': ('uniqExact', 'Array'), 'groupArrayLastArray': ('groupArrayLast', 'Array'), 'windowFunnelArray': ('windowFunnel', 'Array'), 'maxIntersectionsArray': ('maxIntersections', 'Array'), 'corrArray': ('corr', 'Array'), 'sumWithOverflowArray': ('sumWithOverflow', 'Array'), 'quantilesBFloat16Array': ('quantilesBFloat16', 'Array'), 'quantileExactArray': ('quantileExact', 'Array'), 'entropyArray': ('entropy', 'Array'), 'quantilesInterpolatedWeightedArray': ('quantilesInterpolatedWeighted', 'Array'), 'quantilesArray': ('quantiles', 'Array'), 'stochasticLinearRegressionArray': ('stochasticLinearRegression', 'Array'), 'mannWhitneyUTestArray': ('mannWhitneyUTest', 'Array'), 'quantilesTimingWeightedArray': ('quantilesTimingWeighted', 'Array'), 'covarSampArray': ('covarSamp', 'Array'), 'varPopArray': ('varPop', 'Array'), 'sequenceMatchArray': ('sequenceMatch', 'Array'), 'meanZTestArray': ('meanZTest', 'Array'), 'approx_top_sumArray': ('approx_top_sum', 'Array'), 'boundingRatioArray': ('boundingRatio', 'Array'), 'kolmogorovSmirnovTestArray': ('kolmogorovSmirnovTest', 'Array'), 'covarPopArray': ('covarPop', 'Array'), 'quantileGKArray': ('quantileGK', 'Array'), 'stddevSampArray': ('stddevSamp', 'Array'), 'sparkBarArray': ('sparkBar', 'Array'), 'quantileExactHighArray': ('quantileExactHigh', 'Array'), 'quantilesExactArray': ('quantilesExact', 'Array'), 'uniqArray': ('uniq', 'Array'), 'groupArrayInsertAtArray': ('groupArrayInsertAt', 'Array'), 'quantilesDeterministicArray': ('quantilesDeterministic', 'Array'), 'quantilesTDigestWeightedArray': ('quantilesTDigestWeighted', 'Array'), 'quantileDeterministicArray': ('quantileDeterministic', 'Array'), 'retentionArray': ('retention', 'Array'), 'groupBitmapXorArray': ('groupBitmapXor', 'Array'), 'quantilesExactExclusiveArray': ('quantilesExactExclusive', 'Array'), 'groupArrayMovingSumArray': ('groupArrayMovingSum', 'Array'), 'quantileBFloat16WeightedArray': ('quantileBFloat16Weighted', 'Array'), 'first_valueArray': ('first_value', 'Array'), 'studentTTestArray': ('studentTTest', 'Array'), 'topKWeightedArray': ('topKWeighted', 'Array'), 'quantileTDigestWeightedArray': ('quantileTDigestWeighted', 'Array'), 'categoricalInformationValueArray': ('categoricalInformationValue', 'Array'), 'sequenceCountArray': ('sequenceCount', 'Array'), 'groupBitAndArray': ('groupBitAnd', 'Array'), 'largestTriangleThreeBucketsArray': ('largestTriangleThreeBuckets', 'Array'), 'groupBitOrArray': ('groupBitOr', 'Array'), 'groupBitmapOrArray': ('groupBitmapOr', 'Array'), 'deltaSumTimestampArray': ('deltaSumTimestamp', 'Array'), 'argMinArray': ('argMin', 'Array'), 'groupBitmapAndArray': ('groupBitmapAnd', 'Array'), 'varSampArray': ('varSamp', 'Array'), 'exponentialTimeDecayedAvgArray': ('exponentialTimeDecayedAvg', 'Array'), 'maxArray': ('max', 'Array'), 'quantileExactLowArray': ('quantileExactLow', 'Array'), 'maxIntersectionsPositionArray': ('maxIntersectionsPosition', 'Array'), 'groupArrayArray': ('groupArray', 'Array'), 'quantileArray': ('quantile', 'Array'), 'welchTTestState': ('welchTTest', 'State'), 'histogramState': ('histogram', 'State'), 'countState': ('count', 'State'), 'quantileTimingWeightedState': ('quantileTimingWeighted', 'State'), 'cramersVState': ('cramersV', 'State'), 'skewPopState': ('skewPop', 'State'), 'quantileTDigestState': ('quantileTDigest', 'State'), 'stochasticLogisticRegressionState': ('stochasticLogisticRegression', 'State'), 'quantileInterpolatedWeightedState': ('quantileInterpolatedWeighted', 'State'), 'maxMapState': ('maxMap', 'State'), 'theilsUState': ('theilsU', 'State'), 'last_valueState': ('last_value', 'State'), 'argMaxState': ('argMax', 'State'), 'quantilesTDigestState': ('quantilesTDigest', 'State'), 'kurtPopState': ('kurtPop', 'State'), 'groupBitXorState': ('groupBitXor', 'State'), 'groupArrayMovingAvgState': ('groupArrayMovingAvg', 'State'), 'medianState': ('median', 'State'), 'groupUniqArrayState': ('groupUniqArray', 'State'), 'cramersVBiasCorrectedState': ('cramersVBiasCorrected', 'State'), 'groupBitmapState': ('groupBitmap', 'State'), 'sequenceNextNodeState': ('sequenceNextNode', 'State'), 'deltaSumState': ('deltaSum', 'State'), 'anyHeavyState': ('anyHeavy', 'State'), 'quantileBFloat16State': ('quantileBFloat16', 'State'), 'uniqHLL12State': ('uniqHLL12', 'State'), 'groupConcatState': ('groupConcat', 'State'), 'simpleLinearRegressionState': ('simpleLinearRegression', 'State'), 'stddevPopState': ('stddevPop', 'State'), 'sumKahanState': ('sumKahan', 'State'), 'contingencyState': ('contingency', 'State'), 'minMapState': ('minMap', 'State'), 'avgState': ('avg', 'State'), 'quantilesExactWeightedState': ('quantilesExactWeighted', 'State'), 'quantilesTimingState': ('quantilesTiming', 'State'), 'uniqThetaState': ('uniqTheta', 'State'), 'exponentialMovingAverageState': ('exponentialMovingAverage', 'State'), 'quantilesBFloat16WeightedState': ('quantilesBFloat16Weighted', 'State'), 'intervalLengthSumState': ('intervalLengthSum', 'State'), 'uniqCombined64State': ('uniqCombined64', 'State'), 'anyState': ('any', 'State'), 'uniqCombinedState': ('uniqCombined', 'State'), 'avgWeightedState': ('avgWeighted', 'State'), 'quantileTimingState': ('quantileTiming', 'State'), 'uniqUpToState': ('uniqUpTo', 'State'), 'minState': ('min', 'State'), 'anyLastState': ('anyLast', 'State'), 'skewSampState': ('skewSamp', 'State'), 'kurtSampState': ('kurtSamp', 'State'), 'groupArraySampleState': ('groupArraySample', 'State'), 'topKState': ('topK', 'State'), 'sumState': ('sum', 'State'), 'sumMapState': ('sumMap', 'State'), 'quantilesExactHighState': ('quantilesExactHigh', 'State'), 'quantilesExactLowState': ('quantilesExactLow', 'State'), 'quantileExactWeightedState': ('quantileExactWeighted', 'State'), 'sumCountState': ('sumCount', 'State'), 'rankCorrState': ('rankCorr', 'State'), 'quantilesGKState': ('quantilesGK', 'State'), 'uniqExactState': ('uniqExact', 'State'), 'groupArrayLastState': ('groupArrayLast', 'State'), 'windowFunnelState': ('windowFunnel', 'State'), 'maxIntersectionsState': ('maxIntersections', 'State'), 'corrState': ('corr', 'State'), 'sumWithOverflowState': ('sumWithOverflow', 'State'), 'quantilesBFloat16State': ('quantilesBFloat16', 'State'), 'quantileExactState': ('quantileExact', 'State'), 'entropyState': ('entropy', 'State'), 'quantilesInterpolatedWeightedState': ('quantilesInterpolatedWeighted', 'State'), 'quantilesState': ('quantiles', 'State'), 'stochasticLinearRegressionState': ('stochasticLinearRegression', 'State'), 'mannWhitneyUTestState': ('mannWhitneyUTest', 'State'), 'quantilesTimingWeightedState': ('quantilesTimingWeighted', 'State'), 'covarSampState': ('covarSamp', 'State'), 'varPopState': ('varPop', 'State'), 'sequenceMatchState': ('sequenceMatch', 'State'), 'meanZTestState': ('meanZTest', 'State'), 'approx_top_sumState': ('approx_top_sum', 'State'), 'boundingRatioState': ('boundingRatio', 'State'), 'kolmogorovSmirnovTestState': ('kolmogorovSmirnovTest', 'State'), 'covarPopState': ('covarPop', 'State'), 'quantileGKState': ('quantileGK', 'State'), 'stddevSampState': ('stddevSamp', 'State'), 'sparkBarState': ('sparkBar', 'State'), 'quantileExactHighState': ('quantileExactHigh', 'State'), 'quantilesExactState': ('quantilesExact', 'State'), 'uniqState': ('uniq', 'State'), 'groupArrayInsertAtState': ('groupArrayInsertAt', 'State'), 'quantilesDeterministicState': ('quantilesDeterministic', 'State'), 'quantilesTDigestWeightedState': ('quantilesTDigestWeighted', 'State'), 'quantileDeterministicState': ('quantileDeterministic', 'State'), 'retentionState': ('retention', 'State'), 'groupBitmapXorState': ('groupBitmapXor', 'State'), 'quantilesExactExclusiveState': ('quantilesExactExclusive', 'State'), 'groupArrayMovingSumState': ('groupArrayMovingSum', 'State'), 'quantileBFloat16WeightedState': ('quantileBFloat16Weighted', 'State'), 'first_valueState': ('first_value', 'State'), 'studentTTestState': ('studentTTest', 'State'), 'topKWeightedState': ('topKWeighted', 'State'), 'quantileTDigestWeightedState': ('quantileTDigestWeighted', 'State'), 'categoricalInformationValueState': ('categoricalInformationValue', 'State'), 'sequenceCountState': ('sequenceCount', 'State'), 'groupBitAndState': ('groupBitAnd', 'State'), 'largestTriangleThreeBucketsState': ('largestTriangleThreeBuckets', 'State'), 'groupBitOrState': ('groupBitOr', 'State'), 'groupBitmapOrState': ('groupBitmapOr', 'State'), 'deltaSumTimestampState': ('deltaSumTimestamp', 'State'), 'argMinState': ('argMin', 'State'), 'groupBitmapAndState': ('groupBitmapAnd', 'State'), 'varSampState': ('varSamp', 'State'), 'exponentialTimeDecayedAvgState': ('exponentialTimeDecayedAvg', 'State'), 'maxState': ('max', 'State'), 'quantileExactLowState': ('quantileExactLow', 'State'), 'maxIntersectionsPositionState': ('maxIntersectionsPosition', 'State'), 'groupArrayState': ('groupArray', 'State'), 'quantileState': ('quantile', 'State'), 'welchTTestMerge': ('welchTTest', 'Merge'), 'histogramMerge': ('histogram', 'Merge'), 'countMerge': ('count', 'Merge'), 'quantileTimingWeightedMerge': ('quantileTimingWeighted', 'Merge'), 'cramersVMerge': ('cramersV', 'Merge'), 'skewPopMerge': ('skewPop', 'Merge'), 'quantileTDigestMerge': ('quantileTDigest', 'Merge'), 'stochasticLogisticRegressionMerge': ('stochasticLogisticRegression', 'Merge'), 'quantileInterpolatedWeightedMerge': ('quantileInterpolatedWeighted', 'Merge'), 'maxMapMerge': ('maxMap', 'Merge'), 'theilsUMerge': ('theilsU', 'Merge'), 'last_valueMerge': ('last_value', 'Merge'), 'argMaxMerge': ('argMax', 'Merge'), 'quantilesTDigestMerge': ('quantilesTDigest', 'Merge'), 'kurtPopMerge': ('kurtPop', 'Merge'), 'groupBitXorMerge': ('groupBitXor', 'Merge'), 'groupArrayMovingAvgMerge': ('groupArrayMovingAvg', 'Merge'), 'medianMerge': ('median', 'Merge'), 'groupUniqArrayMerge': ('groupUniqArray', 'Merge'), 'cramersVBiasCorrectedMerge': ('cramersVBiasCorrected', 'Merge'), 'groupBitmapMerge': ('groupBitmap', 'Merge'), 'sequenceNextNodeMerge': ('sequenceNextNode', 'Merge'), 'deltaSumMerge': ('deltaSum', 'Merge'), 'anyHeavyMerge': ('anyHeavy', 'Merge'), 'quantileBFloat16Merge': ('quantileBFloat16', 'Merge'), 'uniqHLL12Merge': ('uniqHLL12', 'Merge'), 'groupConcatMerge': ('groupConcat', 'Merge'), 'simpleLinearRegressionMerge': ('simpleLinearRegression', 'Merge'), 'stddevPopMerge': ('stddevPop', 'Merge'), 'sumKahanMerge': ('sumKahan', 'Merge'), 'contingencyMerge': ('contingency', 'Merge'), 'minMapMerge': ('minMap', 'Merge'), 'avgMerge': ('avg', 'Merge'), 'quantilesExactWeightedMerge': ('quantilesExactWeighted', 'Merge'), 'quantilesTimingMerge': ('quantilesTiming', 'Merge'), 'uniqThetaMerge': ('uniqTheta', 'Merge'), 'exponentialMovingAverageMerge': ('exponentialMovingAverage', 'Merge'), 'quantilesBFloat16WeightedMerge': ('quantilesBFloat16Weighted', 'Merge'), 'intervalLengthSumMerge': ('intervalLengthSum', 'Merge'), 'uniqCombined64Merge': ('uniqCombined64', 'Merge'), 'anyMerge': ('any', 'Merge'), 'uniqCombinedMerge': ('uniqCombined', 'Merge'), 'avgWeightedMerge': ('avgWeighted', 'Merge'), 'quantileTimingMerge': ('quantileTiming', 'Merge'), 'uniqUpToMerge': ('uniqUpTo', 'Merge'), 'minMerge': ('min', 'Merge'), 'anyLastMerge': ('anyLast', 'Merge'), 'skewSampMerge': ('skewSamp', 'Merge'), 'kurtSampMerge': ('kurtSamp', 'Merge'), 'groupArraySampleMerge': ('groupArraySample', 'Merge'), 'topKMerge': ('topK', 'Merge'), 'sumMerge': ('sum', 'Merge'), 'sumMapMerge': ('sumMap', 'Merge'), 'quantilesExactHighMerge': ('quantilesExactHigh', 'Merge'), 'quantilesExactLowMerge': ('quantilesExactLow', 'Merge'), 'quantileExactWeightedMerge': ('quantileExactWeighted', 'Merge'), 'sumCountMerge': ('sumCount', 'Merge'), 'rankCorrMerge': ('rankCorr', 'Merge'), 'quantilesGKMerge': ('quantilesGK', 'Merge'), 'uniqExactMerge': ('uniqExact', 'Merge'), 'groupArrayLastMerge': ('groupArrayLast', 'Merge'), 'windowFunnelMerge': ('windowFunnel', 'Merge'), 'maxIntersectionsMerge': ('maxIntersections', 'Merge'), 'corrMerge': ('corr', 'Merge'), 'sumWithOverflowMerge': ('sumWithOverflow', 'Merge'), 'quantilesBFloat16Merge': ('quantilesBFloat16', 'Merge'), 'quantileExactMerge': ('quantileExact', 'Merge'), 'entropyMerge': ('entropy', 'Merge'), 'quantilesInterpolatedWeightedMerge': ('quantilesInterpolatedWeighted', 'Merge'), 'quantilesMerge': ('quantiles', 'Merge'), 'stochasticLinearRegressionMerge': ('stochasticLinearRegression', 'Merge'), 'mannWhitneyUTestMerge': ('mannWhitneyUTest', 'Merge'), 'quantilesTimingWeightedMerge': ('quantilesTimingWeighted', 'Merge'), 'covarSampMerge': ('covarSamp', 'Merge'), 'varPopMerge': ('varPop', 'Merge'), 'sequenceMatchMerge': ('sequenceMatch', 'Merge'), 'meanZTestMerge': ('meanZTest', 'Merge'), 'approx_top_sumMerge': ('approx_top_sum', 'Merge'), 'boundingRatioMerge': ('boundingRatio', 'Merge'), 'kolmogorovSmirnovTestMerge': ('kolmogorovSmirnovTest', 'Merge'), 'covarPopMerge': ('covarPop', 'Merge'), 'quantileGKMerge': ('quantileGK', 'Merge'), 'stddevSampMerge': ('stddevSamp', 'Merge'), 'sparkBarMerge': ('sparkBar', 'Merge'), 'quantileExactHighMerge': ('quantileExactHigh', 'Merge'), 'quantilesExactMerge': ('quantilesExact', 'Merge'), 'uniqMerge': ('uniq', 'Merge'), 'groupArrayInsertAtMerge': ('groupArrayInsertAt', 'Merge'), 'quantilesDeterministicMerge': ('quantilesDeterministic', 'Merge'), 'quantilesTDigestWeightedMerge': ('quantilesTDigestWeighted', 'Merge'), 'quantileDeterministicMerge': ('quantileDeterministic', 'Merge'), 'retentionMerge': ('retention', 'Merge'), 'groupBitmapXorMerge': ('groupBitmapXor', 'Merge'), 'quantilesExactExclusiveMerge': ('quantilesExactExclusive', 'Merge'), 'groupArrayMovingSumMerge': ('groupArrayMovingSum', 'Merge'), 'quantileBFloat16WeightedMerge': ('quantileBFloat16Weighted', 'Merge'), 'first_valueMerge': ('first_value', 'Merge'), 'studentTTestMerge': ('studentTTest', 'Merge'), 'topKWeightedMerge': ('topKWeighted', 'Merge'), 'quantileTDigestWeightedMerge': ('quantileTDigestWeighted', 'Merge'), 'categoricalInformationValueMerge': ('categoricalInformationValue', 'Merge'), 'sequenceCountMerge': ('sequenceCount', 'Merge'), 'groupBitAndMerge': ('groupBitAnd', 'Merge'), 'largestTriangleThreeBucketsMerge': ('largestTriangleThreeBuckets', 'Merge'), 'groupBitOrMerge': ('groupBitOr', 'Merge'), 'groupBitmapOrMerge': ('groupBitmapOr', 'Merge'), 'deltaSumTimestampMerge': ('deltaSumTimestamp', 'Merge'), 'argMinMerge': ('argMin', 'Merge'), 'groupBitmapAndMerge': ('groupBitmapAnd', 'Merge'), 'varSampMerge': ('varSamp', 'Merge'), 'exponentialTimeDecayedAvgMerge': ('exponentialTimeDecayedAvg', 'Merge'), 'maxMerge': ('max', 'Merge'), 'quantileExactLowMerge': ('quantileExactLow', 'Merge'), 'maxIntersectionsPositionMerge': ('maxIntersectionsPosition', 'Merge'), 'groupArrayMerge': ('groupArray', 'Merge'), 'quantileMerge': ('quantile', 'Merge'), 'welchTTestMap': ('welchTTest', 'Map'), 'histogramMap': ('histogram', 'Map'), 'countMap': ('count', 'Map'), 'quantileTimingWeightedMap': ('quantileTimingWeighted', 'Map'), 'cramersVMap': ('cramersV', 'Map'), 'skewPopMap': ('skewPop', 'Map'), 'quantileTDigestMap': ('quantileTDigest', 'Map'), 'stochasticLogisticRegressionMap': ('stochasticLogisticRegression', 'Map'), 'quantileInterpolatedWeightedMap': ('quantileInterpolatedWeighted', 'Map'), 'maxMapMap': ('maxMap', 'Map'), 'theilsUMap': ('theilsU', 'Map'), 'last_valueMap': ('last_value', 'Map'), 'argMaxMap': ('argMax', 'Map'), 'quantilesTDigestMap': ('quantilesTDigest', 'Map'), 'kurtPopMap': ('kurtPop', 'Map'), 'groupBitXorMap': ('groupBitXor', 'Map'), 'groupArrayMovingAvgMap': ('groupArrayMovingAvg', 'Map'), 'medianMap': ('median', 'Map'), 'groupUniqArrayMap': ('groupUniqArray', 'Map'), 'cramersVBiasCorrectedMap': ('cramersVBiasCorrected', 'Map'), 'groupBitmapMap': ('groupBitmap', 'Map'), 'sequenceNextNodeMap': ('sequenceNextNode', 'Map'), 'deltaSumMap': ('deltaSum', 'Map'), 'anyHeavyMap': ('anyHeavy', 'Map'), 'quantileBFloat16Map': ('quantileBFloat16', 'Map'), 'uniqHLL12Map': ('uniqHLL12', 'Map'), 'groupConcatMap': ('groupConcat', 'Map'), 'simpleLinearRegressionMap': ('simpleLinearRegression', 'Map'), 'stddevPopMap': ('stddevPop', 'Map'), 'sumKahanMap': ('sumKahan', 'Map'), 'contingencyMap': ('contingency', 'Map'), 'minMapMap': ('minMap', 'Map'), 'avgMap': ('avg', 'Map'), 'quantilesExactWeightedMap': ('quantilesExactWeighted', 'Map'), 'quantilesTimingMap': ('quantilesTiming', 'Map'), 'uniqThetaMap': ('uniqTheta', 'Map'), 'exponentialMovingAverageMap': ('exponentialMovingAverage', 'Map'), 'quantilesBFloat16WeightedMap': ('quantilesBFloat16Weighted', 'Map'), 'intervalLengthSumMap': ('intervalLengthSum', 'Map'), 'uniqCombined64Map': ('uniqCombined64', 'Map'), 'anyMap': ('any', 'Map'), 'uniqCombinedMap': ('uniqCombined', 'Map'), 'avgWeightedMap': ('avgWeighted', 'Map'), 'quantileTimingMap': ('quantileTiming', 'Map'), 'uniqUpToMap': ('uniqUpTo', 'Map'), 'minMap': ('minMap', None), 'anyLastMap': ('anyLast', 'Map'), 'skewSampMap': ('skewSamp', 'Map'), 'kurtSampMap': ('kurtSamp', 'Map'), 'groupArraySampleMap': ('groupArraySample', 'Map'), 'topKMap': ('topK', 'Map'), 'sumMap': ('sumMap', None), 'sumMapMap': ('sumMap', 'Map'), 'quantilesExactHighMap': ('quantilesExactHigh', 'Map'), 'quantilesExactLowMap': ('quantilesExactLow', 'Map'), 'quantileExactWeightedMap': ('quantileExactWeighted', 'Map'), 'sumCountMap': ('sumCount', 'Map'), 'rankCorrMap': ('rankCorr', 'Map'), 'quantilesGKMap': ('quantilesGK', 'Map'), 'uniqExactMap': ('uniqExact', 'Map'), 'groupArrayLastMap': ('groupArrayLast', 'Map'), 'windowFunnelMap': ('windowFunnel', 'Map'), 'maxIntersectionsMap': ('maxIntersections', 'Map'), 'corrMap': ('corr', 'Map'), 'sumWithOverflowMap': ('sumWithOverflow', 'Map'), 'quantilesBFloat16Map': ('quantilesBFloat16', 'Map'), 'quantileExactMap': ('quantileExact', 'Map'), 'entropyMap': ('entropy', 'Map'), 'quantilesInterpolatedWeightedMap': ('quantilesInterpolatedWeighted', 'Map'), 'quantilesMap': ('quantiles', 'Map'), 'stochasticLinearRegressionMap': ('stochasticLinearRegression', 'Map'), 'mannWhitneyUTestMap': ('mannWhitneyUTest', 'Map'), 'quantilesTimingWeightedMap': ('quantilesTimingWeighted', 'Map'), 'covarSampMap': ('covarSamp', 'Map'), 'varPopMap': ('varPop', 'Map'), 'sequenceMatchMap': ('sequenceMatch', 'Map'), 'meanZTestMap': ('meanZTest', 'Map'), 'approx_top_sumMap': ('approx_top_sum', 'Map'), 'boundingRatioMap': ('boundingRatio', 'Map'), 'kolmogorovSmirnovTestMap': ('kolmogorovSmirnovTest', 'Map'), 'covarPopMap': ('covarPop', 'Map'), 'quantileGKMap': ('quantileGK', 'Map'), 'stddevSampMap': ('stddevSamp', 'Map'), 'sparkBarMap': ('sparkBar', 'Map'), 'quantileExactHighMap': ('quantileExactHigh', 'Map'), 'quantilesExactMap': ('quantilesExact', 'Map'), 'uniqMap': ('uniq', 'Map'), 'groupArrayInsertAtMap': ('groupArrayInsertAt', 'Map'), 'quantilesDeterministicMap': ('quantilesDeterministic', 'Map'), 'quantilesTDigestWeightedMap': ('quantilesTDigestWeighted', 'Map'), 'quantileDeterministicMap': ('quantileDeterministic', 'Map'), 'retentionMap': ('retention', 'Map'), 'groupBitmapXorMap': ('groupBitmapXor', 'Map'), 'quantilesExactExclusiveMap': ('quantilesExactExclusive', 'Map'), 'groupArrayMovingSumMap': ('groupArrayMovingSum', 'Map'), 'quantileBFloat16WeightedMap': ('quantileBFloat16Weighted', 'Map'), 'first_valueMap': ('first_value', 'Map'), 'studentTTestMap': ('studentTTest', 'Map'), 'topKWeightedMap': ('topKWeighted', 'Map'), 'quantileTDigestWeightedMap': ('quantileTDigestWeighted', 'Map'), 'categoricalInformationValueMap': ('categoricalInformationValue', 'Map'), 'sequenceCountMap': ('sequenceCount', 'Map'), 'groupBitAndMap': ('groupBitAnd', 'Map'), 'largestTriangleThreeBucketsMap': ('largestTriangleThreeBuckets', 'Map'), 'groupBitOrMap': ('groupBitOr', 'Map'), 'groupBitmapOrMap': ('groupBitmapOr', 'Map'), 'deltaSumTimestampMap': ('deltaSumTimestamp', 'Map'), 'argMinMap': ('argMin', 'Map'), 'groupBitmapAndMap': ('groupBitmapAnd', 'Map'), 'varSampMap': ('varSamp', 'Map'), 'exponentialTimeDecayedAvgMap': ('exponentialTimeDecayedAvg', 'Map'), 'maxMap': ('maxMap', None), 'quantileExactLowMap': ('quantileExactLow', 'Map'), 'maxIntersectionsPositionMap': ('maxIntersectionsPosition', 'Map'), 'groupArrayMap': ('groupArray', 'Map'), 'quantileMap': ('quantile', 'Map'), 'welchTTestIf': ('welchTTest', 'If'), 'histogramIf': ('histogram', 'If'), 'countIf': ('count', 'If'), 'quantileTimingWeightedIf': ('quantileTimingWeighted', 'If'), 'cramersVIf': ('cramersV', 'If'), 'skewPopIf': ('skewPop', 'If'), 'quantileTDigestIf': ('quantileTDigest', 'If'), 'stochasticLogisticRegressionIf': ('stochasticLogisticRegression', 'If'), 'quantileInterpolatedWeightedIf': ('quantileInterpolatedWeighted', 'If'), 'maxMapIf': ('maxMap', 'If'), 'theilsUIf': ('theilsU', 'If'), 'last_valueIf': ('last_value', 'If'), 'argMaxIf': ('argMax', 'If'), 'quantilesTDigestIf': ('quantilesTDigest', 'If'), 'kurtPopIf': ('kurtPop', 'If'), 'groupBitXorIf': ('groupBitXor', 'If'), 'groupArrayMovingAvgIf': ('groupArrayMovingAvg', 'If'), 'medianIf': ('median', 'If'), 'groupUniqArrayIf': ('groupUniqArray', 'If'), 'cramersVBiasCorrectedIf': ('cramersVBiasCorrected', 'If'), 'groupBitmapIf': ('groupBitmap', 'If'), 'sequenceNextNodeIf': ('sequenceNextNode', 'If'), 'deltaSumIf': ('deltaSum', 'If'), 'anyHeavyIf': ('anyHeavy', 'If'), 'quantileBFloat16If': ('quantileBFloat16', 'If'), 'uniqHLL12If': ('uniqHLL12', 'If'), 'groupConcatIf': ('groupConcat', 'If'), 'simpleLinearRegressionIf': ('simpleLinearRegression', 'If'), 'stddevPopIf': ('stddevPop', 'If'), 'sumKahanIf': ('sumKahan', 'If'), 'contingencyIf': ('contingency', 'If'), 'minMapIf': ('minMap', 'If'), 'avgIf': ('avg', 'If'), 'quantilesExactWeightedIf': ('quantilesExactWeighted', 'If'), 'quantilesTimingIf': ('quantilesTiming', 'If'), 'uniqThetaIf': ('uniqTheta', 'If'), 'exponentialMovingAverageIf': ('exponentialMovingAverage', 'If'), 'quantilesBFloat16WeightedIf': ('quantilesBFloat16Weighted', 'If'), 'intervalLengthSumIf': ('intervalLengthSum', 'If'), 'uniqCombined64If': ('uniqCombined64', 'If'), 'anyIf': ('any', 'If'), 'uniqCombinedIf': ('uniqCombined', 'If'), 'avgWeightedIf': ('avgWeighted', 'If'), 'quantileTimingIf': ('quantileTiming', 'If'), 'uniqUpToIf': ('uniqUpTo', 'If'), 'minIf': ('min', 'If'), 'anyLastIf': ('anyLast', 'If'), 'skewSampIf': ('skewSamp', 'If'), 'kurtSampIf': ('kurtSamp', 'If'), 'groupArraySampleIf': ('groupArraySample', 'If'), 'topKIf': ('topK', 'If'), 'sumIf': ('sum', 'If'), 'sumMapIf': ('sumMap', 'If'), 'quantilesExactHighIf': ('quantilesExactHigh', 'If'), 'quantilesExactLowIf': ('quantilesExactLow', 'If'), 'quantileExactWeightedIf': ('quantileExactWeighted', 'If'), 'sumCountIf': ('sumCount', 'If'), 'rankCorrIf': ('rankCorr', 'If'), 'quantilesGKIf': ('quantilesGK', 'If'), 'uniqExactIf': ('uniqExact', 'If'), 'groupArrayLastIf': ('groupArrayLast', 'If'), 'windowFunnelIf': ('windowFunnel', 'If'), 'maxIntersectionsIf': ('maxIntersections', 'If'), 'corrIf': ('corr', 'If'), 'sumWithOverflowIf': ('sumWithOverflow', 'If'), 'quantilesBFloat16If': ('quantilesBFloat16', 'If'), 'quantileExactIf': ('quantileExact', 'If'), 'entropyIf': ('entropy', 'If'), 'quantilesInterpolatedWeightedIf': ('quantilesInterpolatedWeighted', 'If'), 'quantilesIf': ('quantiles', 'If'), 'stochasticLinearRegressionIf': ('stochasticLinearRegression', 'If'), 'mannWhitneyUTestIf': ('mannWhitneyUTest', 'If'), 'quantilesTimingWeightedIf': ('quantilesTimingWeighted', 'If'), 'covarSampIf': ('covarSamp', 'If'), 'varPopIf': ('varPop', 'If'), 'sequenceMatchIf': ('sequenceMatch', 'If'), 'meanZTestIf': ('meanZTest', 'If'), 'approx_top_sumIf': ('approx_top_sum', 'If'), 'boundingRatioIf': ('boundingRatio', 'If'), 'kolmogorovSmirnovTestIf': ('kolmogorovSmirnovTest', 'If'), 'covarPopIf': ('covarPop', 'If'), 'quantileGKIf': ('quantileGK', 'If'), 'stddevSampIf': ('stddevSamp', 'If'), 'sparkBarIf': ('sparkBar', 'If'), 'quantileExactHighIf': ('quantileExactHigh', 'If'), 'quantilesExactIf': ('quantilesExact', 'If'), 'uniqIf': ('uniq', 'If'), 'groupArrayInsertAtIf': ('groupArrayInsertAt', 'If'), 'quantilesDeterministicIf': ('quantilesDeterministic', 'If'), 'quantilesTDigestWeightedIf': ('quantilesTDigestWeighted', 'If'), 'quantileDeterministicIf': ('quantileDeterministic', 'If'), 'retentionIf': ('retention', 'If'), 'groupBitmapXorIf': ('groupBitmapXor', 'If'), 'quantilesExactExclusiveIf': ('quantilesExactExclusive', 'If'), 'groupArrayMovingSumIf': ('groupArrayMovingSum', 'If'), 'quantileBFloat16WeightedIf': ('quantileBFloat16Weighted', 'If'), 'first_valueIf': ('first_value', 'If'), 'studentTTestIf': ('studentTTest', 'If'), 'topKWeightedIf': ('topKWeighted', 'If'), 'quantileTDigestWeightedIf': ('quantileTDigestWeighted', 'If'), 'categoricalInformationValueIf': ('categoricalInformationValue', 'If'), 'sequenceCountIf': ('sequenceCount', 'If'), 'groupBitAndIf': ('groupBitAnd', 'If'), 'largestTriangleThreeBucketsIf': ('largestTriangleThreeBuckets', 'If'), 'groupBitOrIf': ('groupBitOr', 'If'), 'groupBitmapOrIf': ('groupBitmapOr', 'If'), 'deltaSumTimestampIf': ('deltaSumTimestamp', 'If'), 'argMinIf': ('argMin', 'If'), 'groupBitmapAndIf': ('groupBitmapAnd', 'If'), 'varSampIf': ('varSamp', 'If'), 'exponentialTimeDecayedAvgIf': ('exponentialTimeDecayedAvg', 'If'), 'maxIf': ('max', 'If'), 'quantileExactLowIf': ('quantileExactLow', 'If'), 'maxIntersectionsPositionIf': ('maxIntersectionsPosition', 'If'), 'groupArrayIf': ('groupArray', 'If'), 'quantileIf': ('quantile', 'If'), 'welchTTest': ('welchTTest', None), 'histogram': ('histogram', None), 'count': ('count', None), 'quantileTimingWeighted': ('quantileTimingWeighted', None), 'cramersV': ('cramersV', None), 'skewPop': ('skewPop', None), 'quantileTDigest': ('quantileTDigest', None), 'stochasticLogisticRegression': ('stochasticLogisticRegression', None), 'quantileInterpolatedWeighted': ('quantileInterpolatedWeighted', None), 'theilsU': ('theilsU', None), 'last_value': ('last_value', None), 'argMax': ('argMax', None), 'quantilesTDigest': ('quantilesTDigest', None), 'kurtPop': ('kurtPop', None), 'groupBitXor': ('groupBitXor', None), 'groupArrayMovingAvg': ('groupArrayMovingAvg', None), 'median': ('median', None), 'groupUniqArray': ('groupUniqArray', None), 'cramersVBiasCorrected': ('cramersVBiasCorrected', None), 'groupBitmap': ('groupBitmap', None), 'sequenceNextNode': ('sequenceNextNode', None), 'deltaSum': ('deltaSum', None), 'anyHeavy': ('anyHeavy', None), 'quantileBFloat16': ('quantileBFloat16', None), 'uniqHLL12': ('uniqHLL12', None), 'groupConcat': ('groupConcat', None), 'simpleLinearRegression': ('simpleLinearRegression', None), 'stddevPop': ('stddevPop', None), 'sumKahan': ('sumKahan', None), 'contingency': ('contingency', None), 'avg': ('avg', None), 'quantilesExactWeighted': ('quantilesExactWeighted', None), 'quantilesTiming': ('quantilesTiming', None), 'uniqTheta': ('uniqTheta', None), 'exponentialMovingAverage': ('exponentialMovingAverage', None), 'quantilesBFloat16Weighted': ('quantilesBFloat16Weighted', None), 'intervalLengthSum': ('intervalLengthSum', None), 'uniqCombined64': ('uniqCombined64', None), 'any': ('any', None), 'uniqCombined': ('uniqCombined', None), 'avgWeighted': ('avgWeighted', None), 'quantileTiming': ('quantileTiming', None), 'uniqUpTo': ('uniqUpTo', None), 'min': ('min', None), 'anyLast': ('anyLast', None), 'skewSamp': ('skewSamp', None), 'kurtSamp': ('kurtSamp', None), 'groupArraySample': ('groupArraySample', None), 'topK': ('topK', None), 'sum': ('sum', None), 'quantilesExactHigh': ('quantilesExactHigh', None), 'quantilesExactLow': ('quantilesExactLow', None), 'quantileExactWeighted': ('quantileExactWeighted', None), 'sumCount': ('sumCount', None), 'rankCorr': ('rankCorr', None), 'quantilesGK': ('quantilesGK', None), 'uniqExact': ('uniqExact', None), 'groupArrayLast': ('groupArrayLast', None), 'windowFunnel': ('windowFunnel', None), 'maxIntersections': ('maxIntersections', None), 'corr': ('corr', None), 'sumWithOverflow': ('sumWithOverflow', None), 'quantilesBFloat16': ('quantilesBFloat16', None), 'quantileExact': ('quantileExact', None), 'entropy': ('entropy', None), 'quantilesInterpolatedWeighted': ('quantilesInterpolatedWeighted', None), 'quantiles': ('quantiles', None), 'stochasticLinearRegression': ('stochasticLinearRegression', None), 'mannWhitneyUTest': ('mannWhitneyUTest', None), 'quantilesTimingWeighted': ('quantilesTimingWeighted', None), 'covarSamp': ('covarSamp', None), 'varPop': ('varPop', None), 'sequenceMatch': ('sequenceMatch', None), 'meanZTest': ('meanZTest', None), 'approx_top_sum': ('approx_top_sum', None), 'boundingRatio': ('boundingRatio', None), 'kolmogorovSmirnovTest': ('kolmogorovSmirnovTest', None), 'covarPop': ('covarPop', None), 'quantileGK': ('quantileGK', None), 'stddevSamp': ('stddevSamp', None), 'sparkBar': ('sparkBar', None), 'quantileExactHigh': ('quantileExactHigh', None), 'quantilesExact': ('quantilesExact', None), 'uniq': ('uniq', None), 'groupArrayInsertAt': ('groupArrayInsertAt', None), 'quantilesDeterministic': ('quantilesDeterministic', None), 'quantilesTDigestWeighted': ('quantilesTDigestWeighted', None), 'quantileDeterministic': ('quantileDeterministic', None), 'retention': ('retention', None), 'groupBitmapXor': ('groupBitmapXor', None), 'quantilesExactExclusive': ('quantilesExactExclusive', None), 'groupArrayMovingSum': ('groupArrayMovingSum', None), 'quantileBFloat16Weighted': ('quantileBFloat16Weighted', None), 'first_value': ('first_value', None), 'studentTTest': ('studentTTest', None), 'topKWeighted': ('topKWeighted', None), 'quantileTDigestWeighted': ('quantileTDigestWeighted', None), 'categoricalInformationValue': ('categoricalInformationValue', None), 'sequenceCount': ('sequenceCount', None), 'groupBitAnd': ('groupBitAnd', None), 'largestTriangleThreeBuckets': ('largestTriangleThreeBuckets', None), 'groupBitOr': ('groupBitOr', None), 'groupBitmapOr': ('groupBitmapOr', None), 'deltaSumTimestamp': ('deltaSumTimestamp', None), 'argMin': ('argMin', None), 'groupBitmapAnd': ('groupBitmapAnd', None), 'varSamp': ('varSamp', None), 'exponentialTimeDecayedAvg': ('exponentialTimeDecayedAvg', None), 'max': ('max', None), 'quantileExactLow': ('quantileExactLow', None), 'maxIntersectionsPosition': ('maxIntersectionsPosition', None), 'groupArray': ('groupArray', None), 'quantile': ('quantile', None)}
class ClickHouseParser(sqlglot.parser.Parser):
240class ClickHouseParser(parser.Parser):
241    # Tested in ClickHouse's playground, it seems that the following two queries do the same thing
242    # * select x from t1 union all select x from t2 limit 1;
243    # * select x from t1 union all (select x from t2 limit 1);
244    MODIFIERS_ATTACHED_TO_SET_OP = False
245    INTERVAL_SPANS = False
246    OPTIONAL_ALIAS_TOKEN_CTE = False
247    JOINS_HAVE_EQUAL_PRECEDENCE = True
248
249    FUNCTIONS = {
250        **{
251            k: v
252            for k, v in parser.Parser.FUNCTIONS.items()
253            if k not in ("TRANSFORM", "APPROX_TOP_SUM")
254        },
255        **{f"TOSTARTOF{unit}": _build_timestamp_trunc(unit=unit) for unit in TIMESTAMP_TRUNC_UNITS},
256        "ANY": exp.AnyValue.from_arg_list,
257        "ARRAYCOMPACT": exp.ArrayCompact.from_arg_list,
258        "ARRAYCONCAT": exp.ArrayConcat.from_arg_list,
259        "ARRAYDISTINCT": exp.ArrayDistinct.from_arg_list,
260        "ARRAYEXCEPT": exp.ArrayExcept.from_arg_list,
261        "ARRAYSUM": exp.ArraySum.from_arg_list,
262        "ARRAYMAX": exp.ArrayMax.from_arg_list,
263        "ARRAYMIN": exp.ArrayMin.from_arg_list,
264        "ARRAYREVERSE": exp.ArrayReverse.from_arg_list,
265        "ARRAYSLICE": exp.ArraySlice.from_arg_list,
266        "ARRAYFILTER": lambda args: exp.ArrayFilter(
267            this=seq_get(args, 1), expression=seq_get(args, 0)
268        ),
269        "ARRAYMAP": lambda args: exp.Transform(this=seq_get(args, 1), expression=seq_get(args, 0)),
270        "CURRENTDATABASE": exp.CurrentDatabase.from_arg_list,
271        "CURRENTSCHEMAS": exp.CurrentSchemas.from_arg_list,
272        "COUNTIF": _build_count_if,
273        "CITYHASH64": exp.CityHash64.from_arg_list,
274        "COSINEDISTANCE": exp.CosineDistance.from_arg_list,
275        "VERSION": exp.CurrentVersion.from_arg_list,
276        "DATE_ADD": build_date_delta(exp.DateAdd, default_unit=None),
277        "DATEADD": build_date_delta(exp.DateAdd, default_unit=None),
278        "DATE_DIFF": build_date_delta(exp.DateDiff, default_unit=None, supports_timezone=True),
279        "DATEDIFF": build_date_delta(exp.DateDiff, default_unit=None, supports_timezone=True),
280        "DATE_FORMAT": _build_datetime_format(exp.TimeToStr),
281        "DATE_SUB": build_date_delta(exp.DateSub, default_unit=None),
282        "DATESUB": build_date_delta(exp.DateSub, default_unit=None),
283        "FORMATDATETIME": _build_datetime_format(exp.TimeToStr),
284        "HAS": exp.ArrayContains.from_arg_list,
285        "ILIKE": build_like(exp.ILike),
286        "JSONEXTRACTSTRING": build_json_extract_path(
287            exp.JSONExtractScalar, zero_based_indexing=False
288        ),
289        "LENGTH": lambda args: exp.Length(this=seq_get(args, 0), binary=True),
290        "LIKE": build_like(exp.Like),
291        "L2Distance": exp.EuclideanDistance.from_arg_list,
292        "MAP": parser.build_var_map,
293        "MATCH": exp.RegexpLike.from_arg_list,
294        "NOTLIKE": build_like(exp.Like, not_like=True),
295        "PARSEDATETIME": _build_datetime_format(exp.ParseDatetime),
296        "RANDCANONICAL": exp.Rand.from_arg_list,
297        "STR_TO_DATE": _build_str_to_date,
298        "TIMESTAMP_SUB": build_date_delta(exp.TimestampSub, default_unit=None),
299        "TIMESTAMPSUB": build_date_delta(exp.TimestampSub, default_unit=None),
300        "TIMESTAMP_ADD": build_date_delta(exp.TimestampAdd, default_unit=None),
301        "TIMESTAMPADD": build_date_delta(exp.TimestampAdd, default_unit=None),
302        "TOMONDAY": _build_timestamp_trunc("WEEK"),
303        "UNIQ": exp.ApproxDistinct.from_arg_list,
304        "MD5": exp.MD5Digest.from_arg_list,
305        "SHA256": lambda args: exp.SHA2(this=seq_get(args, 0), length=exp.Literal.number(256)),
306        "SHA512": lambda args: exp.SHA2(this=seq_get(args, 0), length=exp.Literal.number(512)),
307        "SPLITBYCHAR": _build_split_by_char,
308        "SPLITBYREGEXP": _build_split(exp.RegexpSplit),
309        "SPLITBYSTRING": _build_split(exp.Split),
310        "SUBSTRINGINDEX": exp.SubstringIndex.from_arg_list,
311        "TOTYPENAME": exp.Typeof.from_arg_list,
312        "EDITDISTANCE": exp.Levenshtein.from_arg_list,
313        "JAROWINKLERSIMILARITY": exp.JarowinklerSimilarity.from_arg_list,
314        "LEVENSHTEINDISTANCE": exp.Levenshtein.from_arg_list,
315        "UTCTIMESTAMP": exp.UtcTimestamp.from_arg_list,
316    }
317
318    AGG_FUNCTIONS = AGG_FUNCTIONS
319    AGG_FUNCTIONS_SUFFIXES = AGG_FUNCTIONS_SUFFIXES
320
321    FUNC_TOKENS = {
322        *parser.Parser.FUNC_TOKENS,
323        TokenType.AND,
324        TokenType.FILE,
325        TokenType.OR,
326        TokenType.SET,
327    }
328
329    RESERVED_TOKENS = parser.Parser.RESERVED_TOKENS - {TokenType.SELECT}
330
331    ID_VAR_TOKENS = {
332        *parser.Parser.ID_VAR_TOKENS,
333        TokenType.LIKE,
334    }
335
336    AGG_FUNC_MAPPING = AGG_FUNC_MAPPING
337
338    @classmethod
339    def _resolve_clickhouse_agg(cls, name: str) -> tuple[str, Sequence[str]] | None:
340        # ClickHouse allows chaining multiple combinators on aggregate functions.
341        # See https://clickhouse.com/docs/sql-reference/aggregate-functions/combinators
342        # N.B. this resolution allows any suffix stack, including ones that ClickHouse rejects
343        # syntactically such as sumMergeMerge (due to repeated adjacent suffixes)
344
345        # Until we are able to identify a 1- or 0-suffix aggregate function by name,
346        # repeatedly strip and queue suffixes (checking longer suffixes first, see comment on
347        # AGG_FUNCTIONS_SUFFIXES_SORTED). This loop only runs for 2 or more suffixes,
348        # as AGG_FUNC_MAPPING memoizes all 0- and 1-suffix
349        accumulated_suffixes: deque[str] = deque()
350        while (parts := AGG_FUNC_MAPPING.get(name)) is None:
351            for suffix in AGG_FUNCTIONS_SUFFIXES:
352                if name.endswith(suffix) and len(name) != len(suffix):
353                    accumulated_suffixes.appendleft(suffix)
354                    name = name[: -len(suffix)]
355                    break
356            else:
357                return None
358
359        # We now have a 0- or 1-suffix aggregate
360        agg_func_name, inner_suffix = parts
361        if inner_suffix:
362            # this is a 1-suffix aggregate (either naturally or via repeated suffix
363            # stripping). prepend the innermost suffix.
364            accumulated_suffixes.appendleft(inner_suffix)
365
366        return (agg_func_name, accumulated_suffixes)
367
368    FUNCTION_PARSERS = {
369        **{k: v for k, v in parser.Parser.FUNCTION_PARSERS.items() if k != "MATCH"},
370        "ARRAYJOIN": lambda self: self.expression(exp.Explode(this=self._parse_expression())),
371        "GROUPCONCAT": lambda self: self._parse_group_concat(),
372        "QUANTILE": lambda self: self._parse_quantile(),
373        "MEDIAN": lambda self: self._parse_quantile(),
374        "COLUMNS": lambda self: self._parse_columns(),
375        "TUPLE": lambda self: exp.Struct.from_arg_list(self._parse_function_args(alias=True)),
376        "AND": lambda self: exp.and_(*self._parse_function_args(alias=False)),
377        "OR": lambda self: exp.or_(*self._parse_function_args(alias=False)),
378        "XOR": lambda self: exp.xor(*self._parse_function_args(alias=False)),
379    }
380
381    PROPERTY_PARSERS = {
382        **{k: v for k, v in parser.Parser.PROPERTY_PARSERS.items() if k != "DYNAMIC"},
383        "ENGINE": lambda self: self._parse_engine_property(),
384        "UUID": lambda self: self.expression(exp.UuidProperty(this=self._parse_string())),
385    }
386
387    NO_PAREN_FUNCTION_PARSERS = {
388        k: v for k, v in parser.Parser.NO_PAREN_FUNCTION_PARSERS.items() if k != "ANY"
389    }
390
391    NO_PAREN_FUNCTIONS = {
392        k: v
393        for k, v in parser.Parser.NO_PAREN_FUNCTIONS.items()
394        if k != TokenType.CURRENT_TIMESTAMP
395    }
396
397    RANGE_PARSERS = {
398        **parser.Parser.RANGE_PARSERS,
399        TokenType.GLOBAL: lambda self, this: self._parse_global_in(this),
400    }
401
402    COLUMN_OPERATORS = {
403        **{k: v for k, v in parser.Parser.COLUMN_OPERATORS.items() if k != TokenType.PLACEHOLDER},
404        TokenType.DOTCARET: lambda self, this, field: self.expression(
405            exp.NestedJSONSelect(this=this, expression=field)
406        ),
407    }
408
409    JOIN_KINDS = {
410        *parser.Parser.JOIN_KINDS,
411        TokenType.ALL,
412        TokenType.ANY,
413        TokenType.ASOF,
414        TokenType.ARRAY,
415    }
416
417    TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - {
418        TokenType.ALL,
419        TokenType.ANY,
420        TokenType.ARRAY,
421        TokenType.ASOF,
422        TokenType.FINAL,
423        TokenType.FORMAT,
424        TokenType.SETTINGS,
425    }
426
427    ALIAS_TOKENS = parser.Parser.ALIAS_TOKENS - {
428        TokenType.FORMAT,
429        TokenType.SETTINGS,
430    }
431
432    LOG_DEFAULTS_TO_LN = True
433
434    QUERY_MODIFIER_PARSERS = {
435        **parser.Parser.QUERY_MODIFIER_PARSERS,
436        TokenType.SETTINGS: lambda self: (
437            "settings",
438            self._advance() or self._parse_csv(self._parse_assignment),
439        ),
440        TokenType.FORMAT: lambda self: ("format", self._advance() or self._parse_id_var()),
441    }
442
443    CONSTRAINT_PARSERS = {
444        **parser.Parser.CONSTRAINT_PARSERS,
445        "INDEX": lambda self: self._parse_index_constraint(),
446        "CODEC": lambda self: self._parse_compress(),
447        "ASSUME": lambda self: self._parse_assume_constraint(),
448    }
449
450    ALTER_PARSERS = {
451        **parser.Parser.ALTER_PARSERS,
452        "MODIFY": lambda self: self._parse_alter_table_modify(),
453        "REPLACE": lambda self: self._parse_alter_table_replace(),
454    }
455
456    SCHEMA_UNNAMED_CONSTRAINTS = {
457        *parser.Parser.SCHEMA_UNNAMED_CONSTRAINTS,
458        "INDEX",
459    } - {"CHECK"}
460
461    PLACEHOLDER_PARSERS = {
462        **parser.Parser.PLACEHOLDER_PARSERS,
463        TokenType.L_BRACE: lambda self: self._parse_query_parameter(),
464    }
465
466    STATEMENT_PARSERS = {
467        **parser.Parser.STATEMENT_PARSERS,
468        TokenType.DETACH: lambda self: self._parse_detach(),
469    }
470
471    def _parse_wrapped_select_or_assignment(self) -> exp.Expr | None:
472        return self._parse_wrapped(
473            lambda: self._parse_select() or self._parse_assignment(), optional=True
474        )
475
476    def _parse_check_constraint(self) -> exp.CheckColumnConstraint | None:
477        return self.expression(
478            exp.CheckColumnConstraint(this=self._parse_wrapped_select_or_assignment())
479        )
480
481    def _parse_assume_constraint(self) -> exp.AssumeColumnConstraint | None:
482        return self.expression(
483            exp.AssumeColumnConstraint(this=self._parse_wrapped_select_or_assignment())
484        )
485
486    def _parse_engine_property(self) -> exp.EngineProperty:
487        self._match(TokenType.EQ)
488        return self.expression(
489            exp.EngineProperty(this=self._parse_field(any_token=True, anonymous_func=True))
490        )
491
492    # https://clickhouse.com/docs/en/sql-reference/statements/create/function
493    def _parse_user_defined_function_expression(self) -> exp.Expr | None:
494        return self._parse_lambda()
495
496    def _parse_types(
497        self,
498        check_func: bool = False,
499        schema: bool = False,
500        allow_identifiers: bool = True,
501        with_collation: bool = False,
502    ) -> exp.Expr | None:
503        dtype = super()._parse_types(
504            check_func=check_func,
505            schema=schema,
506            allow_identifiers=allow_identifiers,
507            with_collation=with_collation,
508        )
509        if isinstance(dtype, exp.DataType) and dtype.args.get("nullable") is not True:
510            # Mark every type as non-nullable which is ClickHouse's default, unless it's
511            # already marked as nullable. This marker helps us transpile types from other
512            # dialects to ClickHouse, so that we can e.g. produce `CAST(x AS Nullable(String))`
513            # from `CAST(x AS TEXT)`. If there is a `NULL` value in `x`, the former would
514            # fail in ClickHouse without the `Nullable` type constructor.
515            dtype.set("nullable", False)
516
517        return dtype
518
519    def _parse_extract(self) -> exp.Extract | exp.Anonymous:
520        index = self._index
521        this = self._parse_bitwise()
522        if self._match(TokenType.FROM):
523            self._retreat(index)
524            return super()._parse_extract()
525
526        # We return Anonymous here because extract and regexpExtract have different semantics,
527        # so parsing extract(foo, bar) into RegexpExtract can potentially break queries. E.g.,
528        # `extract('foobar', 'b')` works, but ClickHouse crashes for `regexpExtract('foobar', 'b')`.
529        #
530        # TODO: can we somehow convert the former into an equivalent `regexpExtract` call?
531        self._match(TokenType.COMMA)
532        return self.expression(
533            exp.Anonymous(this="extract", expressions=[this, self._parse_bitwise()])
534        )
535
536    def _parse_assignment(self) -> exp.Expr | None:
537        this = super()._parse_assignment()
538
539        if self._match(TokenType.PLACEHOLDER):
540            return self.expression(
541                exp.If(
542                    this=this,
543                    true=self._parse_assignment(),
544                    false=self._match(TokenType.COLON) and self._parse_assignment(),
545                )
546            )
547
548        return this
549
550    def _parse_query_parameter(self) -> exp.Expr | None:
551        """
552        Parse a placeholder expression like SELECT {abc: UInt32} or FROM {table: Identifier}
553        https://clickhouse.com/docs/en/sql-reference/syntax#defining-and-using-query-parameters
554        """
555        index = self._index
556
557        this = self._parse_id_var()
558        self._match(TokenType.COLON)
559        kind = self._parse_types(check_func=False, allow_identifiers=False) or (
560            self._match_text_seq("IDENTIFIER") and "Identifier"
561        )
562
563        if not kind:
564            self._retreat(index)
565            return None
566        elif not self._match(TokenType.R_BRACE):
567            self.raise_error("Expecting }")
568
569        if isinstance(this, exp.Identifier) and not this.quoted:
570            this = exp.var(this.name)
571
572        return self.expression(exp.Placeholder(this=this, kind=kind))
573
574    def _parse_bracket(self, this: exp.Expr | None = None) -> exp.Expr | None:
575        if this:
576            bracket_json_type = None
577
578            while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
579                bracket_json_type = exp.DataType(
580                    this=exp.DType.ARRAY,
581                    expressions=[
582                        bracket_json_type
583                        or exp.DType.JSON.into_expr(dialect=self.dialect, nullable=False)
584                    ],
585                    nested=True,
586                )
587
588            if bracket_json_type:
589                return self.expression(exp.JSONCast(this=this, to=bracket_json_type))
590
591        l_brace = self._match(TokenType.L_BRACE, advance=False)
592        bracket = super()._parse_bracket(this)
593
594        if l_brace and isinstance(bracket, exp.Struct):
595            varmap = exp.VarMap(keys=exp.Array(), values=exp.Array())
596            for expression in bracket.expressions:
597                if not isinstance(expression, exp.PropertyEQ):
598                    break
599
600                varmap.args["keys"].append("expressions", exp.Literal.string(expression.name))
601                varmap.args["values"].append("expressions", expression.expression)
602
603            return varmap
604
605        return bracket
606
607    def _parse_global_in(self, this: exp.Expr | None) -> exp.Not | exp.In:
608        is_negated = self._match(TokenType.NOT)
609        in_expr: exp.In | None = None
610        if self._match(TokenType.IN):
611            in_expr = self._parse_in(this)
612            in_expr.set("is_global", True)
613        return self.expression(exp.Not(this=in_expr)) if is_negated else t.cast(exp.In, in_expr)
614
615    def _parse_table(
616        self,
617        schema: bool = False,
618        joins: bool = False,
619        alias_tokens: Collection[TokenType] | None = None,
620        parse_bracket: bool = False,
621        is_db_reference: bool = False,
622        parse_partition: bool = False,
623        consume_pipe: bool = False,
624    ) -> exp.Expr | None:
625        this = super()._parse_table(
626            schema=schema,
627            joins=joins,
628            alias_tokens=alias_tokens,
629            parse_bracket=parse_bracket,
630            is_db_reference=is_db_reference,
631        )
632
633        if isinstance(this, exp.Table):
634            inner = this.this
635            alias = this.args.get("alias")
636
637            if isinstance(inner, exp.GenerateSeries) and alias and not alias.columns:
638                alias.set("columns", [exp.to_identifier("generate_series")])
639
640        if self._match(TokenType.FINAL):
641            this = self.expression(exp.Final(this=this))
642
643        return this
644
645    def _parse_position(self, haystack_first: bool = False) -> exp.StrPosition:
646        return super()._parse_position(haystack_first=True)
647
648    # https://clickhouse.com/docs/en/sql-reference/statements/select/with/
649    def _parse_cte(self) -> exp.CTE | None:
650        # WITH <identifier> AS <subquery expression>
651        cte: exp.CTE | None = self._try_parse(super()._parse_cte)
652
653        if not cte:
654            # WITH <expression> AS <identifier>
655            cte = self.expression(
656                exp.CTE(this=self._parse_assignment(), alias=self._parse_table_alias(), scalar=True)
657            )
658
659        return cte
660
661    def _parse_join_parts(
662        self,
663    ) -> tuple[Token | None, Token | None, Token | None]:
664        is_global = self._prev if self._match(TokenType.GLOBAL) else None
665
666        kind_pre = self._prev if self._match_set(self.JOIN_KINDS) else None
667        side = self._prev if self._match_set(self.JOIN_SIDES) else None
668        kind = self._prev if self._match_set(self.JOIN_KINDS) else None
669
670        return is_global, side or kind, kind_pre or kind
671
672    def _parse_join(
673        self,
674        skip_join_token: bool = False,
675        parse_bracket: bool = False,
676        alias_tokens: t.Collection[TokenType] | None = None,
677    ) -> exp.Join | None:
678        join = super()._parse_join(
679            skip_join_token=skip_join_token, parse_bracket=True, alias_tokens=alias_tokens
680        )
681        if join:
682            method = join.args.get("method")
683            join.set("method", None)
684            join.set("global_", method)
685
686            # tbl ARRAY JOIN arr <-- this should be a `Column` reference, not a `Table`
687            # https://clickhouse.com/docs/en/sql-reference/statements/select/array-join
688            if join.kind == "ARRAY":
689                for table in join.find_all(exp.Table):
690                    table.replace(table.to_column())
691
692        return join
693
694    def _parse_function(
695        self,
696        functions: dict[str, t.Callable] | None = None,
697        anonymous: bool = False,
698        optional_parens: bool = True,
699        any_token: bool = False,
700    ) -> exp.Expr | None:
701        expr = super()._parse_function(
702            functions=functions,
703            anonymous=anonymous,
704            optional_parens=optional_parens,
705            any_token=any_token,
706        )
707
708        func = expr.this if isinstance(expr, exp.Window) else expr
709
710        # Aggregate functions can be split in 2 parts: <func_name><suffix[es]>
711        parts = self._resolve_clickhouse_agg(func.this) if isinstance(func, exp.Anonymous) else None
712
713        if parts:
714            anon_func: exp.Anonymous = t.cast(exp.Anonymous, func)
715            params = self._parse_func_params(anon_func)
716
717            if len(parts[1]) > 0:
718                exp_class: Type[exp.Expr] = (
719                    exp.CombinedParameterizedAgg if params else exp.CombinedAggFunc
720                )
721            else:
722                exp_class = exp.ParameterizedAgg if params else exp.AnonymousAggFunc
723
724            instance = exp_class(this=anon_func.this, expressions=anon_func.expressions)
725            if params:
726                instance.set("params", params)
727            func = self.expression(instance)
728
729            if isinstance(expr, exp.Window):
730                # The window's func was parsed as Anonymous in base parser, fix its
731                # type to be ClickHouse style CombinedAnonymousAggFunc / AnonymousAggFunc
732                expr.set("this", func)
733            elif params:
734                # Params have blocked super()._parse_function() from parsing the following window
735                # (if that exists) as they're standing between the function call and the window spec
736                expr = self._parse_window(func)
737            else:
738                expr = func
739
740        return expr
741
742    def _parse_func_params(self, this: exp.Func | None = None) -> list[exp.Expr] | None:
743        if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN):
744            return self._parse_csv(self._parse_lambda)
745
746        if self._match(TokenType.L_PAREN):
747            params = self._parse_csv(self._parse_lambda)
748            self._match_r_paren(this)
749            return params
750
751        return None
752
753    def _parse_group_concat(self) -> exp.GroupConcat:
754        args = self._parse_csv(self._parse_lambda)
755        params = self._parse_func_params()
756
757        if params:
758            # groupConcat(sep [, limit])(expr)
759            separator = seq_get(args, 0)
760            limit = seq_get(args, 1)
761            this: exp.Expr | None = seq_get(params, 0)
762            if limit is not None:
763                this = exp.Limit(this=this, expression=limit)
764            return self.expression(exp.GroupConcat(this=this, separator=separator))
765
766        # groupConcat(expr)
767        return self.expression(exp.GroupConcat(this=seq_get(args, 0)))
768
769    def _parse_quantile(self) -> exp.Quantile:
770        this = self._parse_lambda()
771        params = self._parse_func_params()
772        if params:
773            return self.expression(exp.Quantile(this=params[0], quantile=this))
774        return self.expression(exp.Quantile(this=this, quantile=exp.Literal.number(0.5)))
775
776    def _parse_wrapped_id_vars(self, optional: bool = False) -> list[exp.Expr]:
777        return super()._parse_wrapped_id_vars(optional=True)
778
779    def _parse_column_def(
780        self, this: exp.Expr | None, computed_column: bool = True
781    ) -> exp.Expr | None:
782        if self._match(TokenType.DOT):
783            return exp.Dot(this=this, expression=self._parse_id_var())
784
785        return super()._parse_column_def(this, computed_column=computed_column)
786
787    def _parse_primary_key(
788        self,
789        wrapped_optional: bool = False,
790        in_props: bool = False,
791        named_primary_key: bool = False,
792    ) -> exp.PrimaryKeyColumnConstraint | exp.PrimaryKey:
793        return super()._parse_primary_key(
794            wrapped_optional=wrapped_optional or in_props,
795            in_props=in_props,
796            named_primary_key=named_primary_key,
797        )
798
799    def _parse_on_property(self) -> exp.Expr | None:
800        index = self._index
801        if self._match_text_seq("CLUSTER"):
802            this = self._parse_string() or self._parse_id_var()
803            if this:
804                return self.expression(exp.OnCluster(this=this))
805            else:
806                self._retreat(index)
807        return None
808
809    def _parse_index_constraint(self, kind: str | None = None) -> exp.IndexColumnConstraint:
810        # INDEX name1 expr TYPE type1(args) GRANULARITY value
811        this = self._parse_id_var()
812        expression = self._parse_assignment()
813
814        index_type = self._match_text_seq("TYPE") and (self._parse_function() or self._parse_var())
815
816        granularity = self._match_text_seq("GRANULARITY") and self._parse_term()
817
818        return self.expression(
819            exp.IndexColumnConstraint(
820                this=this, expression=expression, index_type=index_type, granularity=granularity
821            )
822        )
823
824    def _parse_partition(self) -> exp.Partition | None:
825        # https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#how-to-set-partition-expression
826        if not self._match(TokenType.PARTITION):
827            return None
828
829        if self._match_text_seq("ID"):
830            # Corresponds to the PARTITION ID <string_value> syntax
831            expressions: list[exp.Expr] = [
832                self.expression(exp.PartitionId(this=self._parse_string()))
833            ]
834        else:
835            expressions = self._parse_expressions()
836
837        return self.expression(exp.Partition(expressions=expressions))
838
839    def _parse_alter_table_replace(self) -> exp.Expr | None:
840        partition = self._parse_partition()
841
842        if not partition or not self._match(TokenType.FROM):
843            return None
844
845        return self.expression(
846            exp.ReplacePartition(expression=partition, source=self._parse_table_parts())
847        )
848
849    def _parse_alter_table_modify(self) -> exp.Expr | None:
850        if properties := self._parse_properties():
851            return self.expression(exp.AlterModifySqlSecurity(expressions=properties.expressions))
852        return None
853
854    def _parse_definer(self) -> exp.DefinerProperty | None:
855        self._match(TokenType.EQ)
856        if self._match(TokenType.CURRENT_USER):
857            return exp.DefinerProperty(this=exp.Var(this=self._prev.text.upper()))
858        return exp.DefinerProperty(this=self._parse_string())
859
860    def _parse_projection_def(self) -> exp.ProjectionDef | None:
861        if not self._match_text_seq("PROJECTION"):
862            return None
863
864        return self.expression(
865            exp.ProjectionDef(
866                this=self._parse_id_var(), expression=self._parse_wrapped(self._parse_statement)
867            )
868        )
869
870    def _parse_constraint(self) -> exp.Expr | None:
871        return super()._parse_constraint() or self._parse_projection_def()
872
873    def _parse_alias(self, this: exp.Expr | None, explicit: bool = False) -> exp.Expr | None:
874        # In clickhouse "SELECT <expr> APPLY(...)" is a query modifier,
875        # so "APPLY" shouldn't be parsed as <expr>'s alias. However, "SELECT <expr> apply" is a valid alias
876        if self._match_pair(TokenType.APPLY, TokenType.L_PAREN, advance=False):
877            return this
878
879        return super()._parse_alias(this=this, explicit=explicit)
880
881    def _parse_expression(self) -> exp.Expr | None:
882        this = super()._parse_expression()
883
884        # Clickhouse allows "SELECT <expr> [APPLY(func)] [...]]" modifier
885        while self._match_pair(TokenType.APPLY, TokenType.L_PAREN):
886            this = exp.Apply(this=this, expression=self._parse_var(any_token=True))
887            self._match(TokenType.R_PAREN)
888
889        return this
890
891    def _parse_columns(self) -> exp.Expr:
892        this: exp.Expr = self.expression(exp.Columns(this=self._parse_lambda()))
893
894        while self._next and self._match_text_seq(")", "APPLY", "("):
895            self._match(TokenType.R_PAREN)
896            this = exp.Apply(this=this, expression=self._parse_var(any_token=True))
897        return this
898
899    def _parse_value(self, values: bool = True) -> exp.Tuple | None:
900        value = super()._parse_value(values=values)
901        if not value:
902            return None
903
904        # In Clickhouse "SELECT * FROM VALUES (1, 2, 3)" generates a table with a single column, in contrast
905        # to other dialects. For this case, we canonicalize the values into a tuple-of-tuples AST if it's not already one.
906        # In INSERT INTO statements the same clause actually references multiple columns (opposite semantics),
907        # but the final result is not altered by the extra parentheses.
908        # Note: Clickhouse allows VALUES([structure], value, ...) so the branch checks for the last expression
909        expressions = value.expressions
910        if values and not isinstance(expressions[-1], exp.Tuple):
911            value.set(
912                "expressions",
913                [self.expression(exp.Tuple(expressions=[expr])) for expr in expressions],
914            )
915
916        return value
917
918    def _parse_partitioned_by(self) -> exp.PartitionedByProperty:
919        # ClickHouse allows custom expressions as partition key
920        # https://clickhouse.com/docs/engines/table-engines/mergetree-family/custom-partitioning-key
921        return self.expression(exp.PartitionedByProperty(this=self._parse_assignment()))
922
923    def _parse_detach(self) -> exp.Detach:
924        kind = self._match_set(self.DB_CREATABLES) and self._prev.text.upper()
925        exists = self._parse_exists()
926        this = self._parse_table_parts()
927
928        return self.expression(
929            exp.Detach(
930                this=this,
931                kind=kind,
932                exists=exists,
933                cluster=self._parse_on_property() if self._match(TokenType.ON) else None,
934                permanent=self._match_text_seq("PERMANENTLY"),
935                sync=self._match_text_seq("SYNC"),
936            )
937        )

Parser consumes a list of tokens produced by the Tokenizer and produces a parsed syntax tree.

Arguments:
  • error_level: The desired error level. Default: ErrorLevel.IMMEDIATE
  • error_message_context: The amount of context to capture from a query string when displaying the error message (in number of characters). Default: 100
  • max_errors: Maximum number of error messages to include in a raised ParseError. This is only relevant if error_level is ErrorLevel.RAISE. Default: 3
  • max_nodes: Maximum number of AST nodes to prevent memory exhaustion. Set to -1 (default) to disable the check.
MODIFIERS_ATTACHED_TO_SET_OP = False
INTERVAL_SPANS = False
OPTIONAL_ALIAS_TOKEN_CTE = False
JOINS_HAVE_EQUAL_PRECEDENCE = True
FUNCTIONS = {'AI_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.AIAgg'>>, 'AI_CLASSIFY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.AIClassify'>>, 'AI_EMBED': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.AIEmbed'>>, 'A_I_FORECAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.AIForecast'>>, 'AI_GENERATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.AIGenerate'>>, 'AI_SIMILARITY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.AISimilarity'>>, 'AI_SUMMARIZE_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.AISummarizeAgg'>>, 'ABS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Abs'>>, 'ACOS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Acos'>>, 'ACOSH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Acosh'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.AddMonths'>>, 'AND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.And'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.AnonymousAggFunc'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.AnyValue'>>, 'APPLY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Apply'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.ApproxDistinct'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.ApproxDistinct'>>, 'APPROX_PERCENTILE_ACCUMULATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxPercentileAccumulate'>>, 'APPROX_PERCENTILE_COMBINE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxPercentileCombine'>>, 'APPROX_PERCENTILE_ESTIMATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxPercentileEstimate'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxQuantile'>>, 'APPROX_QUANTILES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxQuantiles'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxTopK'>>, 'APPROX_TOP_K_ACCUMULATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxTopKAccumulate'>>, 'APPROX_TOP_K_COMBINE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxTopKCombine'>>, 'APPROX_TOP_K_ESTIMATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproxTopKEstimate'>>, 'APPROXIMATE_SIMILARITY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproximateSimilarity'>>, 'APPROXIMATE_JACCARD_INDEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ApproximateSimilarity'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArgMax'>>, 'ARGMAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArgMax'>>, 'MAX_BY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArgMax'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArgMin'>>, 'ARGMIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArgMin'>>, 'MIN_BY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArgMin'>>, 'ARRAY': <function Parser.<lambda>>, 'ARRAY_AGG': <function Parser.<lambda>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayAll'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayAny'>>, 'ARRAY_APPEND': <function build_array_append>, 'ARRAY_COMPACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayCompact'>>, 'ARRAY_CONCAT': <function build_array_concat>, 'ARRAY_CAT': <function build_array_concat>, 'ARRAY_CONCAT_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArrayConcatAgg'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayConstructCompact'>>, 'ARRAY_CONTAINED_BY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayContainedBy'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayContains'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayContains'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayContainsAll'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayContainsAll'>>, 'ARRAY_DISTINCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayDistinct'>>, 'ARRAY_EXCEPT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayExcept'>>, 'FILTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayFilter'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayFilter'>>, 'ARRAY_FIRST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayFirst'>>, 'ARRAY_INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayInsert'>>, 'ARRAY_INTERSECT': <function Parser.<lambda>>, 'ARRAY_INTERSECTION': <function Parser.<lambda>>, 'ARRAY_LAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayLast'>>, 'ARRAY_MAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayMax'>>, 'ARRAY_MIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayMin'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayOverlaps'>>, 'ARRAY_POSITION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayPosition'>>, 'ARRAY_PREPEND': <function build_array_prepend>, 'ARRAY_REMOVE': <function build_array_remove>, 'ARRAY_REMOVE_AT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayRemoveAt'>>, 'ARRAY_REVERSE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayReverse'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySize'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySize'>>, 'ARRAY_SLICE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySlice'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySort'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySum'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayToString'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayToString'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArrayUnionAgg'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ArrayUniqueAgg'>>, 'ARRAYS_ZIP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraysZip'>>, 'ASCII': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Ascii'>>, 'ASIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Asin'>>, 'ASINH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Asinh'>>, 'ATAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Atan'>>, 'ATAN2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Atan2'>>, 'ATANH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Atanh'>>, 'AVG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Avg'>>, 'BASE64_DECODE_BINARY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Base64DecodeBinary'>>, 'BASE64_DECODE_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Base64DecodeString'>>, 'BASE64_ENCODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Base64Encode'>>, 'BIT_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.BitLength'>>, 'BITMAP_BIT_POSITION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitmapBitPosition'>>, 'BITMAP_BUCKET_NUMBER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitmapBucketNumber'>>, 'BITMAP_CONSTRUCT_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitmapConstructAgg'>>, 'BITMAP_COUNT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitmapCount'>>, 'BITMAP_OR_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitmapOrAgg'>>, 'BITWISE_AND_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitwiseAndAgg'>>, 'BITWISE_COUNT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitwiseCount'>>, 'BITWISE_OR_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitwiseOrAgg'>>, 'BITWISE_XOR_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BitwiseXorAgg'>>, 'BOOLAND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Booland'>>, 'BOOLNOT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Boolnot'>>, 'BOOLOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Boolor'>>, 'BOOLXOR_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.BoolxorAgg'>>, 'BYTE_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ByteLength'>>, 'CASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Case'>>, 'CAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Cast'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CastToStrType'>>, 'CBRT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Cbrt'>>, 'CEIL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Ceil'>>, 'CEILING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Ceil'>>, 'CHECK_JSON': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.CheckJson'>>, 'CHECK_XML': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CheckXml'>>, 'CHR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Chr'>>, 'CHAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Chr'>>, 'CITY_HASH64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.CityHash64'>>, 'COALESCE': <function build_coalesce>, 'IFNULL': <function build_coalesce>, 'NVL': <function build_coalesce>, 'CODE_POINTS_TO_BYTES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.CodePointsToBytes'>>, 'CODE_POINTS_TO_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.CodePointsToString'>>, 'COLLATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Collate'>>, 'COLLATION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Collation'>>, 'COLUMNS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Columns'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.CombinedAggFunc'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.CombinedParameterizedAgg'>>, 'COMPRESS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Compress'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ConnectByRoot'>>, 'CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Contains'>>, 'CONVERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Convert'>>, 'CONVERT_TIMEZONE': <function build_convert_timezone>, 'CONVERT_TO_CHARSET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ConvertToCharset'>>, 'CORR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Corr'>>, 'COS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Cos'>>, 'COSH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Cosh'>>, 'COSINE_DISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.CosineDistance'>>, 'COT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Cot'>>, 'COTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Coth'>>, 'COUNT': <function Parser.<lambda>>, 'COUNT_IF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.CountIf'>>, 'COUNTIF': <function _build_count_if>, 'COVAR_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.CovarPop'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.CovarSamp'>>, 'CSC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Csc'>>, 'CSCH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Csch'>>, 'CUME_DIST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.CumeDist'>>, 'CURRENT_ACCOUNT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentAccount'>>, 'CURRENT_ACCOUNT_NAME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentAccountName'>>, 'CURRENT_AVAILABLE_ROLES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentAvailableRoles'>>, 'CURRENT_CATALOG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentCatalog'>>, 'CURRENT_CLIENT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentClient'>>, 'CURRENT_DATABASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentDatabase'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.CurrentDate'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.CurrentDatetime'>>, 'CURRENT_IP_ADDRESS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentIpAddress'>>, 'CURRENT_ORGANIZATION_NAME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentOrganizationName'>>, 'CURRENT_ORGANIZATION_USER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentOrganizationUser'>>, 'CURRENT_REGION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentRegion'>>, 'CURRENT_ROLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentRole'>>, 'CURRENT_ROLE_TYPE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentRoleType'>>, 'CURRENT_SCHEMA': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentSchema'>>, 'CURRENT_SCHEMAS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentSchemas'>>, 'CURRENT_SECONDARY_ROLES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentSecondaryRoles'>>, 'CURRENT_SESSION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentSession'>>, 'CURRENT_STATEMENT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentStatement'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.CurrentTime'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.CurrentTimestamp'>>, 'CURRENT_TIMESTAMP_L_T_Z': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.CurrentTimestampLTZ'>>, 'CURRENT_TIMEZONE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.CurrentTimezone'>>, 'CURRENT_TRANSACTION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentTransaction'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentUser'>>, 'CURRENT_USER_ID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentUserId'>>, 'CURRENT_VERSION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentVersion'>>, 'CURRENT_WAREHOUSE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentWarehouse'>>, 'DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Date'>>, 'DATE_ADD': <function build_date_delta.<locals>._builder>, 'DATE_BIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateBin'>>, 'DATEDIFF': <function build_date_delta.<locals>._builder>, 'DATE_DIFF': <function build_date_delta.<locals>._builder>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateFromParts'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateFromParts'>>, 'DATE_FROM_UNIX_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateFromUnixDate'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateStrToDate'>>, 'DATE_SUB': <function build_date_delta.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateToDi'>>, 'DATE_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DateTrunc'>>, 'DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Datetime'>>, 'DATETIME_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DatetimeAdd'>>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DatetimeDiff'>>, 'DATETIME_SUB': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DatetimeSub'>>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DatetimeTrunc'>>, 'DAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Day'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfMonth'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfMonth'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfWeek'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfWeek'>>, 'DAYOFWEEK_ISO': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfWeekIso'>>, 'ISODOW': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfWeekIso'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfYear'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DayOfYear'>>, 'DAYNAME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Dayname'>>, 'DECODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Decode'>>, 'DECODE_CASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.DecodeCase'>>, 'DECOMPRESS_BINARY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.DecompressBinary'>>, 'DECOMPRESS_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.DecompressString'>>, 'DECRYPT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Decrypt'>>, 'DECRYPT_RAW': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.DecryptRaw'>>, 'DEGREES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Degrees'>>, 'DENSE_RANK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.DenseRank'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.DiToDate'>>, 'DOT_PRODUCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.DotProduct'>>, 'DYNAMIC_IDENTIFIER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.DynamicIdentifier'>>, 'ELT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Elt'>>, 'ENCODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Encode'>>, 'ENCRYPT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Encrypt'>>, 'ENCRYPT_RAW': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.EncryptRaw'>>, 'ENDS_WITH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.EndsWith'>>, 'ENDSWITH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.EndsWith'>>, 'EQUAL_NULL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.EqualNull'>>, 'EUCLIDEAN_DISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.EuclideanDistance'>>, 'EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Exists'>>, 'EXP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Exp'>>, 'EXPLODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Explode'>>, 'EXPLODING_GENERATE_SERIES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ExplodingGenerateSeries'>>, 'EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Extract'>>, 'FACTORIAL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Factorial'>>, 'FARM_FINGERPRINT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.FarmFingerprint'>>, 'FARMFINGERPRINT64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.FarmFingerprint'>>, 'FEATURES_AT_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.FeaturesAtTime'>>, 'FIRST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.First'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.FirstValue'>>, 'FLATTEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Flatten'>>, 'FLOAT64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Float64'>>, 'FLOOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Floor'>>, 'FORMAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Format'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.FromBase'>>, 'FROM_BASE32': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.FromBase32'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.FromBase64'>>, 'FROM_ISO8601_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.FromISO8601Date'>>, 'FROM_ISO8601_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.FromISO8601Timestamp'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.GapFill'>>, 'GENERATE_BOOL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GenerateBool'>>, 'GENERATE_DATE_ARRAY': <function Parser.<lambda>>, 'GENERATE_DOUBLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GenerateDouble'>>, 'GENERATE_EMBEDDING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GenerateEmbedding'>>, 'GENERATE_INT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GenerateInt'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.GenerateSeries'>>, 'GENERATE_TABLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GenerateTable'>>, 'GENERATE_TEXT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GenerateText'>>, 'GENERATE_TIMESTAMP_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.GenerateTimestampArray'>>, 'GENERATOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Generator'>>, 'GET_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.GetExtract'>>, 'GET_IGNORE_CASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.GetIgnoreCase'>>, 'GETBIT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Getbit'>>, 'GET_BIT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Getbit'>>, 'GREATEST': <function Parser.<lambda>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.GroupConcat'>>, 'GROUPING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Grouping'>>, 'GROUPING_ID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.GroupingId'>>, 'HASH_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.HashAgg'>>, 'HEX': <function build_hex>, 'HEX_DECODE_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.HexDecodeString'>>, 'HLL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Hll'>>, 'HOST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Host'>>, 'HOUR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Hour'>>, 'IF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.If'>>, 'IIF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.If'>>, 'INITCAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Initcap'>>, 'INLINE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Inline'>>, 'INT64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Int64'>>, 'IS_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.IsArray'>>, 'IS_ASCII': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.IsAscii'>>, 'IS_INF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.IsInf'>>, 'ISINF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.IsInf'>>, 'IS_NAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.IsNan'>>, 'ISNAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.IsNan'>>, 'IS_NULL_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.IsNullValue'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONArray'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONArrayAgg'>>, 'JSON_ARRAY_APPEND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONArrayAppend'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONArrayContains'>>, 'JSON_ARRAY_INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONArrayInsert'>>, 'JSONB_CONTAINS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBContains'>>, 'J_S_O_N_B_CONTAINS_ALL_TOP_KEYS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBContainsAllTopKeys'>>, 'J_S_O_N_B_CONTAINS_ANY_TOP_KEYS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBContainsAnyTopKeys'>>, 'J_S_O_N_B_DELETE_AT_PATH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBDeleteAtPath'>>, 'JSONB_EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBExists'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBExtract'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBExtractScalar'>>, 'J_S_O_N_B_OBJECT_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBObjectAgg'>>, 'J_S_O_N_B_PATH_EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBPathExists'>>, 'J_S_O_N_BOOL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONBool'>>, 'J_S_O_N_CAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.JSONCast'>>, 'J_S_O_N_EXISTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONExists'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONExtractArray'>>, 'JSON_EXTRACT_SCALAR': <function build_extract_json_with_path.<locals>._builder>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONFormat'>>, 'JSON_KEYS': <function Parser.<lambda>>, 'J_S_O_N_KEYS_AT_DEPTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONKeysAtDepth'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONObject'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONObjectAgg'>>, 'JSON_REMOVE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONRemove'>>, 'JSON_SET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONSet'>>, 'JSON_STRIP_NULLS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONStripNulls'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONTable'>>, 'JSON_TYPE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.JSONType'>>, 'J_S_O_N_VALUE_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.query.JSONValueArray'>>, 'JAROWINKLER_SIMILARITY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.JarowinklerSimilarity'>>, 'JUSTIFY_DAYS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.JustifyDays'>>, 'JUSTIFY_HOURS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.JustifyHours'>>, 'JUSTIFY_INTERVAL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.JustifyInterval'>>, 'KURTOSIS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Kurtosis'>>, 'LAG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Lag'>>, 'LAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Last'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.LastDay'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.LastDay'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LastValue'>>, 'LAX_BOOL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.LaxBool'>>, 'LAX_FLOAT64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.LaxFloat64'>>, 'LAX_INT64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.LaxInt64'>>, 'LAX_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.LaxString'>>, 'LEAD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Lead'>>, 'LEAST': <function Parser.<lambda>>, 'LEFT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Left'>>, 'LENGTH': <function ClickHouseParser.<lambda>>, 'LEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Length'>>, 'CHAR_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Length'>>, 'CHARACTER_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Length'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Levenshtein'>>, 'LIST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.List'>>, 'LN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Ln'>>, 'LOCALTIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Localtime'>>, 'LOCALTIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Localtimestamp'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LogicalAnd'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LogicalAnd'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LogicalAnd'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LogicalOr'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LogicalOr'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.LogicalOr'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Lower'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.LowerHex'>>, 'MD5': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.MD5Digest'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.MD5Digest'>>, 'M_D5_NUMBER_LOWER64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.MD5NumberLower64'>>, 'M_D5_NUMBER_UPPER64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.MD5NumberUpper64'>>, 'M_L_FORECAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.MLForecast'>>, 'M_L_TRANSLATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.MLTranslate'>>, 'MAKE_INTERVAL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.MakeInterval'>>, 'MANHATTAN_DISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.ManhattanDistance'>>, 'MAP': <function build_var_map>, 'MAP_CAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapCat'>>, 'MAP_CONTAINS_KEY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapContainsKey'>>, 'MAP_DELETE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapDelete'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapFromEntries'>>, 'MAP_INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapInsert'>>, 'MAP_KEYS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapKeys'>>, 'MAP_PICK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapPick'>>, 'MAP_SIZE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.MapSize'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.MatchAgainst'>>, 'MAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Max'>>, 'MEDIAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Median'>>, 'MIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Min'>>, 'MINHASH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Minhash'>>, 'MINHASH_COMBINE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.MinhashCombine'>>, 'MINUTE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Minute'>>, 'MODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Mode'>>, 'MONTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Month'>>, 'MONTHNAME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Monthname'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.MonthsBetween'>>, 'NET_FUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.NetFunc'>>, 'NEXT_DAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.NextDay'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.ddl.NextValueFor'>>, 'NORMAL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Normal'>>, 'NORMALIZE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Normalize'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.NthValue'>>, 'NTILE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Ntile'>>, 'NULLIF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Nullif'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.NumberToStr'>>, 'NVL2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Nvl2'>>, 'OBJECT_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.ObjectAgg'>>, 'OBJECT_ID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.ObjectId'>>, 'OBJECT_INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.ObjectInsert'>>, 'OBJECT_TRANSFORM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ObjectTransform'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.OpenJSON'>>, 'OR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Or'>>, 'OVERLAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Overlay'>>, 'PAD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Pad'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.ParameterizedAgg'>>, 'PARSE_BIGNUMERIC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ParseBignumeric'>>, 'PARSE_DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.ParseDatetime'>>, 'PARSE_IP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ParseIp'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.ParseJSON'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.ParseJSON'>>, 'PARSE_NUMERIC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ParseNumeric'>>, 'PARSE_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.ParseTime'>>, 'PARSE_URL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ParseUrl'>>, 'PERCENT_RANK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.PercentRank'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.PercentileCont'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.PercentileDisc'>>, 'PI': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Pi'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Posexplode'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.PosexplodeOuter'>>, 'POWER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Pow'>>, 'POW': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Pow'>>, 'PREDICT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Predict'>>, 'PREVIOUS_DAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.PreviousDay'>>, 'QUANTILE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Quantile'>>, 'QUARTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Quarter'>>, 'RADIANS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Radians'>>, 'RAND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Rand'>>, 'RANDOM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Rand'>>, 'RANDN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Randn'>>, 'RANDSTR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Randstr'>>, 'RANGE_BUCKET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.RangeBucket'>>, 'RANGE_N': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.RangeN'>>, 'RANK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Rank'>>, 'READ_CSV': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ReadCSV'>>, 'READ_PARQUET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ReadParquet'>>, 'REDUCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Reduce'>>, 'REG_DOMAIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.RegDomain'>>, 'REGEXP_COUNT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpCount'>>, 'REGEXP_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpExtract'>>, 'REGEXP_EXTRACT_ALL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpExtractAll'>>, 'REGEXP_FULL_MATCH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpFullMatch'>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpILike'>>, 'REGEXP_INSTR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpInstr'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.RegexpLike'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpReplace'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RegexpSplit'>>, 'REGR_AVGX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrAvgx'>>, 'REGR_AVGY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrAvgy'>>, 'REGR_COUNT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrCount'>>, 'REGR_INTERCEPT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrIntercept'>>, 'REGR_R2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrR2'>>, 'REGR_SLOPE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrSlope'>>, 'REGR_SXX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrSxx'>>, 'REGR_SXY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrSxy'>>, 'REGR_SYY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrSyy'>>, 'REGR_VALX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrValx'>>, 'REGR_VALY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RegrValy'>>, 'REPEAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Repeat'>>, 'REPLACE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Replace'>>, 'REVERSE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Reverse'>>, 'RIGHT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Right'>>, 'ROUND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Round'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.RowNumber'>>, 'RTRIMMED_LENGTH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.RtrimmedLength'>>, 'SHA': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SHA'>>, 'SHA1': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SHA'>>, 'S_H_A1_DIGEST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SHA1Digest'>>, 'SHA2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SHA2'>>, 'S_H_A2_DIGEST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SHA2Digest'>>, 'SAFE_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.SafeAdd'>>, 'SAFE_CONVERT_BYTES_TO_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SafeConvertBytesToString'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.SafeDivide'>>, 'SAFE_FUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.SafeFunc'>>, 'SAFE_MULTIPLY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.SafeMultiply'>>, 'SAFE_NEGATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.SafeNegate'>>, 'SAFE_SUBTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.SafeSubtract'>>, 'SEARCH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Search'>>, 'SEARCH_IP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SearchIp'>>, 'SEC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sec'>>, 'SECH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sech'>>, 'SECOND': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Second'>>, 'SEQ1': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Seq1'>>, 'SEQ2': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Seq2'>>, 'SEQ4': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Seq4'>>, 'SEQ8': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Seq8'>>, 'SESSION_USER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.SessionUser'>>, 'SIGN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sign'>>, 'SIGNUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sign'>>, 'SIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sin'>>, 'SINH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sinh'>>, 'SKEWNESS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Skewness'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.SortArray'>>, 'SOUNDEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Soundex'>>, 'SOUNDEX_P123': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SoundexP123'>>, 'SPACE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Space'>>, 'SPLIT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Split'>>, 'SPLIT_PART': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SplitPart'>>, 'SQRT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Sqrt'>>, 'ST_DISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StDistance'>>, 'ST_POINT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StPoint'>>, 'ST_MAKEPOINT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StPoint'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StandardHash'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StarMap'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StartsWith'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StartsWith'>>, 'STDDEV': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Stddev'>>, 'STDEV': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Stddev'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.StddevPop'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.StddevSamp'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StrPosition'>>, 'STR_TO_DATE': <function _build_str_to_date>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StrToMap'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.StrToTime'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.StrToUnix'>>, 'STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.String'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StringToArray'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StringToArray'>>, 'STRIP_NULL_VALUE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.json.StripNullValue'>>, 'STRTOK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Strtok'>>, 'STRTOK_TO_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StrtokToArray'>>, 'STRUCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.Struct'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.StructExtract'>>, 'STUFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Stuff'>>, 'INSERT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Stuff'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Substring'>>, 'SUBSTR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Substring'>>, 'SUBSTRING_INDEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SubstringIndex'>>, 'SUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Sum'>>, 'SYSTIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Systimestamp'>>, 'TAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Tan'>>, 'TANH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Tanh'>>, 'TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Time'>>, 'TIME_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeAdd'>>, 'TIME_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeDiff'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeFromParts'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeFromParts'>>, 'TIME_SLICE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeSlice'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeStrToDate'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeStrToTime'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeStrToUnix'>>, 'TIME_SUB': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeSub'>>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeToStr'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeToUnix'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimeTrunc'>>, 'TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Timestamp'>>, 'TIMESTAMP_ADD': <function build_date_delta.<locals>._builder>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampDiff'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampDiff'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampFromParts'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampFromParts'>>, 'TIMESTAMP_LTZ_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampLtzFromParts'>>, 'TIMESTAMPLTZFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampLtzFromParts'>>, 'TIMESTAMP_SUB': <function build_date_delta.<locals>._builder>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampTrunc'>>, 'TIMESTAMP_TZ_FROM_PARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampTzFromParts'>>, 'TIMESTAMPTZFROMPARTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TimestampTzFromParts'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ToArray'>>, 'TO_BASE32': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToBase32'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToBase64'>>, 'TO_BINARY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToBinary'>>, 'TO_BOOLEAN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ToBoolean'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToChar'>>, 'TO_CODE_POINTS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToCodePoints'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.ToDays'>>, 'TO_DECFLOAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToDecfloat'>>, 'TO_DOUBLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToDouble'>>, 'TO_FILE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToFile'>>, 'TO_MAP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ToMap'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.ToNumber'>>, 'TO_VARIANT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.ToVariant'>>, 'TRANSLATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Translate'>>, 'TRIM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Trim'>>, 'TRUNC': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Trunc'>>, 'TRUNCATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.Trunc'>>, 'TRY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Try'>>, 'TRY_BASE64_DECODE_BINARY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.TryBase64DecodeBinary'>>, 'TRY_BASE64_DECODE_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.TryBase64DecodeString'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.TryCast'>>, 'TRY_HEX_DECODE_BINARY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.TryHexDecodeBinary'>>, 'TRY_HEX_DECODE_STRING': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.TryHexDecodeString'>>, 'TRY_TO_DECFLOAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.TryToDecfloat'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDiToDi'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDsAdd'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDsDiff'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDsToDate'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_DATETIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDsToDatetime'>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDsToTime'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.TsOrDsToTimestamp'>>, 'TYPEOF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Typeof'>>, 'UNHEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Unhex'>>, 'UNICODE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Unicode'>>, 'UNIFORM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Uniform'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixDate'>>, 'UNIX_MICROS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixMicros'>>, 'UNIX_MILLIS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixMillis'>>, 'UNIX_SECONDS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixSeconds'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixToStr'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixToTime'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UnixToTimeStr'>>, 'UNNEST': <function Parser.<lambda>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Upper'>>, 'UTC_DATE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UtcDate'>>, 'UTC_TIME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UtcTime'>>, 'UTC_TIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UtcTimestamp'>>, 'UUID': <function Parser.<lambda>>, 'GEN_RANDOM_UUID': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Uuid'>>, 'GENERATE_UUID': <function Parser.<lambda>>, 'UUID_STRING': <function Parser.<lambda>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Variance'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Variance'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.Variance'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.VariancePop'>>, 'VAR_POP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.VariancePop'>>, 'VECTOR_SEARCH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.VectorSearch'>>, 'WEEK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Week'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.WeekOfYear'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.WeekOfYear'>>, 'WEEK_START': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.WeekStart'>>, 'WIDTH_BUCKET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.WidthBucket'>>, 'XMLELEMENT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.XMLElement'>>, 'XMLGET': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.XMLGet'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.XMLTable'>>, 'XOR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Xor'>>, 'YEAR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.Year'>>, 'YEAR_OF_WEEK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.YearOfWeek'>>, 'YEAROFWEEK': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.YearOfWeek'>>, 'YEAR_OF_WEEK_ISO': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.YearOfWeekIso'>>, 'YEAROFWEEKISO': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.YearOfWeekIso'>>, 'ZIPF': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Zipf'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array._ExplodeOuter'>>, 'ARRAYAGG': <function Parser.<lambda>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like.<locals>._builder>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'LPAD': <function Parser.<lambda>>, 'LEFTPAD': <function Parser.<lambda>>, 'LTRIM': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'RIGHTPAD': <function Parser.<lambda>>, 'RPAD': <function Parser.<lambda>>, 'RTRIM': <function Parser.<lambda>>, 'SCOPE_RESOLUTION': <function Parser.<lambda>>, 'STRPOS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StrPosition'>>, 'CHARINDEX': <function Parser.<lambda>>, 'INSTR': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.StrPosition'>>, 'LOCATE': <function Parser.<lambda>>, 'TO_HEX': <function build_hex>, 'TOSTARTOFDAY': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFQUARTER': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFHOUR': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFMILLISECOND': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFSECOND': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFYEAR': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFMONTH': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFMICROSECOND': <function _build_timestamp_trunc.<locals>.<lambda>>, 'TOSTARTOFMINUTE': <function _build_timestamp_trunc.<locals>.<lambda>>, 'ANY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.aggregate.AnyValue'>>, 'ARRAYCOMPACT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayCompact'>>, 'ARRAYCONCAT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayConcat'>>, 'ARRAYDISTINCT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayDistinct'>>, 'ARRAYEXCEPT': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayExcept'>>, 'ARRAYSUM': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySum'>>, 'ARRAYMAX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayMax'>>, 'ARRAYMIN': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayMin'>>, 'ARRAYREVERSE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayReverse'>>, 'ARRAYSLICE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArraySlice'>>, 'ARRAYFILTER': <function ClickHouseParser.<lambda>>, 'ARRAYMAP': <function ClickHouseParser.<lambda>>, 'CURRENTDATABASE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentDatabase'>>, 'CURRENTSCHEMAS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentSchemas'>>, 'CITYHASH64': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.CityHash64'>>, 'COSINEDISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.CosineDistance'>>, 'VERSION': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.CurrentVersion'>>, 'DATEADD': <function build_date_delta.<locals>._builder>, 'DATE_FORMAT': <function _build_datetime_format.<locals>._builder>, 'DATESUB': <function build_date_delta.<locals>._builder>, 'FORMATDATETIME': <function _build_datetime_format.<locals>._builder>, 'HAS': <bound method Func.from_arg_list of <class 'sqlglot.expressions.array.ArrayContains'>>, 'ILIKE': <function build_like.<locals>._builder>, 'JSONEXTRACTSTRING': <function build_json_extract_path.<locals>._builder>, 'L2Distance': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.EuclideanDistance'>>, 'MATCH': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.RegexpLike'>>, 'NOTLIKE': <function build_like.<locals>._builder>, 'PARSEDATETIME': <function _build_datetime_format.<locals>._builder>, 'RANDCANONICAL': <bound method Func.from_arg_list of <class 'sqlglot.expressions.functions.Rand'>>, 'TIMESTAMPSUB': <function build_date_delta.<locals>._builder>, 'TIMESTAMPADD': <function build_date_delta.<locals>._builder>, 'TOMONDAY': <function _build_timestamp_trunc.<locals>.<lambda>>, 'UNIQ': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.ApproxDistinct'>>, 'SHA256': <function ClickHouseParser.<lambda>>, 'SHA512': <function ClickHouseParser.<lambda>>, 'SPLITBYCHAR': <function _build_split_by_char>, 'SPLITBYREGEXP': <function _build_split.<locals>.<lambda>>, 'SPLITBYSTRING': <function _build_split.<locals>.<lambda>>, 'SUBSTRINGINDEX': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.SubstringIndex'>>, 'TOTYPENAME': <bound method Func.from_arg_list of <class 'sqlglot.expressions.core.Typeof'>>, 'EDITDISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Levenshtein'>>, 'JAROWINKLERSIMILARITY': <bound method Func.from_arg_list of <class 'sqlglot.expressions.math.JarowinklerSimilarity'>>, 'LEVENSHTEINDISTANCE': <bound method Func.from_arg_list of <class 'sqlglot.expressions.string.Levenshtein'>>, 'UTCTIMESTAMP': <bound method Func.from_arg_list of <class 'sqlglot.expressions.temporal.UtcTimestamp'>>}
AGG_FUNCTIONS = {'welchTTest', 'histogram', 'count', 'quantileTimingWeighted', 'cramersV', 'skewPop', 'quantileTDigest', 'stochasticLogisticRegression', 'quantileInterpolatedWeighted', 'maxMap', 'theilsU', 'last_value', 'argMax', 'quantilesTDigest', 'kurtPop', 'groupBitXor', 'groupArrayMovingAvg', 'median', 'groupUniqArray', 'cramersVBiasCorrected', 'groupBitmap', 'sequenceNextNode', 'deltaSum', 'anyHeavy', 'quantileBFloat16', 'uniqHLL12', 'groupConcat', 'simpleLinearRegression', 'stddevPop', 'sumKahan', 'contingency', 'minMap', 'avg', 'quantilesExactWeighted', 'quantilesTiming', 'uniqTheta', 'exponentialMovingAverage', 'quantilesBFloat16Weighted', 'intervalLengthSum', 'uniqCombined64', 'any', 'uniqCombined', 'avgWeighted', 'quantileTiming', 'uniqUpTo', 'min', 'anyLast', 'skewSamp', 'kurtSamp', 'groupArraySample', 'topK', 'sum', 'sumMap', 'quantilesExactHigh', 'quantilesExactLow', 'quantileExactWeighted', 'sumCount', 'rankCorr', 'quantilesGK', 'uniqExact', 'groupArrayLast', 'windowFunnel', 'maxIntersections', 'corr', 'sumWithOverflow', 'quantilesBFloat16', 'quantileExact', 'entropy', 'quantilesInterpolatedWeighted', 'quantiles', 'stochasticLinearRegression', 'mannWhitneyUTest', 'quantilesTimingWeighted', 'covarSamp', 'varPop', 'sequenceMatch', 'meanZTest', 'approx_top_sum', 'boundingRatio', 'kolmogorovSmirnovTest', 'covarPop', 'quantileGK', 'stddevSamp', 'sparkBar', 'quantileExactHigh', 'quantilesExact', 'uniq', 'groupArrayInsertAt', 'quantilesDeterministic', 'quantilesTDigestWeighted', 'quantileDeterministic', 'retention', 'groupBitmapXor', 'quantilesExactExclusive', 'groupArrayMovingSum', 'quantileBFloat16Weighted', 'first_value', 'studentTTest', 'topKWeighted', 'quantileTDigestWeighted', 'categoricalInformationValue', 'sequenceCount', 'groupBitAnd', 'largestTriangleThreeBuckets', 'groupBitOr', 'groupBitmapOr', 'deltaSumTimestamp', 'argMin', 'groupBitmapAnd', 'varSamp', 'exponentialTimeDecayedAvg', 'max', 'quantileExactLow', 'maxIntersectionsPosition', 'groupArray', 'quantile'}
AGG_FUNCTIONS_SUFFIXES = ['SimpleState', 'MergeState', 'OrDefault', 'Distinct', 'Resample', 'ArrayIf', 'ForEach', 'OrNull', 'ArgMin', 'ArgMax', 'Array', 'State', 'Merge', 'Map', 'If']
FUNC_TOKENS = {<TokenType.AND: 34>, <TokenType.OR: 35>, <TokenType.SESSION_USER: 61>, <TokenType.XOR: 66>, <TokenType.IDENTIFIER: 79>, <TokenType.TABLE: 84>, <TokenType.VAR: 89>, <TokenType.BIT: 97>, <TokenType.BOOLEAN: 98>, <TokenType.TINYINT: 99>, <TokenType.UTINYINT: 100>, <TokenType.SMALLINT: 101>, <TokenType.USMALLINT: 102>, <TokenType.MEDIUMINT: 103>, <TokenType.UMEDIUMINT: 104>, <TokenType.INT: 105>, <TokenType.UINT: 106>, <TokenType.BIGINT: 107>, <TokenType.UBIGINT: 108>, <TokenType.BIGNUM: 109>, <TokenType.INT128: 110>, <TokenType.UINT128: 111>, <TokenType.INT256: 112>, <TokenType.UINT256: 113>, <TokenType.FLOAT: 114>, <TokenType.DOUBLE: 115>, <TokenType.UDOUBLE: 116>, <TokenType.DECIMAL: 117>, <TokenType.DECIMAL32: 118>, <TokenType.DECIMAL64: 119>, <TokenType.DECIMAL128: 120>, <TokenType.DECIMAL256: 121>, <TokenType.DECFLOAT: 122>, <TokenType.UDECIMAL: 123>, <TokenType.BIGDECIMAL: 124>, <TokenType.CHAR: 125>, <TokenType.NCHAR: 126>, <TokenType.VARCHAR: 127>, <TokenType.NVARCHAR: 128>, <TokenType.BPCHAR: 129>, <TokenType.TEXT: 130>, <TokenType.MEDIUMTEXT: 131>, <TokenType.LONGTEXT: 132>, <TokenType.BLOB: 133>, <TokenType.MEDIUMBLOB: 134>, <TokenType.LONGBLOB: 135>, <TokenType.TINYBLOB: 136>, <TokenType.TINYTEXT: 137>, <TokenType.NAME: 138>, <TokenType.BINARY: 139>, <TokenType.VARBINARY: 140>, <TokenType.JSON: 141>, <TokenType.JSONB: 142>, <TokenType.TIME: 143>, <TokenType.TIMETZ: 144>, <TokenType.TIME_NS: 145>, <TokenType.TIMESTAMP: 146>, <TokenType.TIMESTAMPTZ: 147>, <TokenType.TIMESTAMPLTZ: 148>, <TokenType.TIMESTAMPNTZ: 149>, <TokenType.TIMESTAMP_S: 150>, <TokenType.TIMESTAMP_MS: 151>, <TokenType.TIMESTAMP_NS: 152>, <TokenType.DATETIME: 153>, <TokenType.DATETIME2: 154>, <TokenType.DATETIME64: 155>, <TokenType.SMALLDATETIME: 156>, <TokenType.DATE: 157>, <TokenType.DATE32: 158>, <TokenType.INT4RANGE: 159>, <TokenType.INT4MULTIRANGE: 160>, <TokenType.INT8RANGE: 161>, <TokenType.INT8MULTIRANGE: 162>, <TokenType.NUMRANGE: 163>, <TokenType.NUMMULTIRANGE: 164>, <TokenType.TSRANGE: 165>, <TokenType.TSMULTIRANGE: 166>, <TokenType.TSTZRANGE: 167>, <TokenType.TSTZMULTIRANGE: 168>, <TokenType.DATERANGE: 169>, <TokenType.DATEMULTIRANGE: 170>, <TokenType.UUID: 171>, <TokenType.GEOGRAPHY: 172>, <TokenType.GEOGRAPHYPOINT: 173>, <TokenType.NULLABLE: 174>, <TokenType.GEOMETRY: 175>, <TokenType.POINT: 176>, <TokenType.RING: 177>, <TokenType.LINESTRING: 178>, <TokenType.LOCALTIME: 179>, <TokenType.LOCALTIMESTAMP: 180>, <TokenType.MULTILINESTRING: 182>, <TokenType.POLYGON: 183>, <TokenType.MULTIPOLYGON: 184>, <TokenType.HLLSKETCH: 185>, <TokenType.HSTORE: 186>, <TokenType.SUPER: 187>, <TokenType.SERIAL: 188>, <TokenType.SMALLSERIAL: 189>, <TokenType.BIGSERIAL: 190>, <TokenType.XML: 191>, <TokenType.YEAR: 192>, <TokenType.USERDEFINED: 193>, <TokenType.MONEY: 194>, <TokenType.SMALLMONEY: 195>, <TokenType.ROWVERSION: 196>, <TokenType.IMAGE: 197>, <TokenType.VARIANT: 198>, <TokenType.OBJECT: 199>, <TokenType.INET: 200>, <TokenType.IPADDRESS: 201>, <TokenType.IPPREFIX: 202>, <TokenType.IPV4: 203>, <TokenType.IPV6: 204>, <TokenType.ENUM: 205>, <TokenType.ENUM8: 206>, <TokenType.ENUM16: 207>, <TokenType.FIXEDSTRING: 208>, <TokenType.LOWCARDINALITY: 209>, <TokenType.NESTED: 210>, <TokenType.AGGREGATEFUNCTION: 211>, <TokenType.SIMPLEAGGREGATEFUNCTION: 212>, <TokenType.TDIGEST: 213>, <TokenType.UNKNOWN: 214>, <TokenType.VECTOR: 215>, <TokenType.DYNAMIC: 216>, <TokenType.VOID: 217>, <TokenType.ALL: 220>, <TokenType.ANY: 222>, <TokenType.ARRAY: 224>, <TokenType.COLLATE: 236>, <TokenType.COMMAND: 237>, <TokenType.CURRENT_DATE: 246>, <TokenType.CURRENT_DATETIME: 247>, <TokenType.CURRENT_SCHEMA: 248>, <TokenType.CURRENT_TIME: 249>, <TokenType.CURRENT_TIMESTAMP: 250>, <TokenType.CURRENT_USER: 251>, <TokenType.CURRENT_CATALOG: 254>, <TokenType.EXISTS: 271>, <TokenType.FILE: 274>, <TokenType.FILTER: 276>, <TokenType.FIRST: 278>, <TokenType.FORMAT: 282>, <TokenType.GET: 286>, <TokenType.GLOB: 287>, <TokenType.ILIKE: 295>, <TokenType.INDEX: 297>, <TokenType.INSERT: 300>, <TokenType.INTERVAL: 304>, <TokenType.ISNULL: 309>, <TokenType.LEFT: 317>, <TokenType.LIKE: 318>, <TokenType.LIST: 320>, <TokenType.MAP: 323>, <TokenType.MERGE: 328>, <TokenType.NEXT: 332>, <TokenType.NOTHING: 333>, <TokenType.NULL: 335>, <TokenType.OBJECT_IDENTIFIER: 336>, <TokenType.OFFSET: 337>, <TokenType.PRIMARY_KEY: 362>, <TokenType.PSEUDO_TYPE: 365>, <TokenType.RANGE: 370>, <TokenType.REPLACE: 374>, <TokenType.RIGHT: 378>, <TokenType.RLIKE: 379>, <TokenType.ROW: 383>, <TokenType.SEQUENCE: 389>, <TokenType.SET: 391>, <TokenType.SOME: 395>, <TokenType.STRUCT: 402>, <TokenType.TRUNCATE: 410>, <TokenType.UNION: 415>, <TokenType.UNNEST: 416>, <TokenType.WINDOW: 429>, <TokenType.UTC_DATE: 432>, <TokenType.UTC_TIME: 433>, <TokenType.UTC_TIMESTAMP: 434>}
RESERVED_TOKENS = {<TokenType.L_PAREN: 1>, <TokenType.R_PAREN: 2>, <TokenType.L_BRACKET: 3>, <TokenType.R_BRACKET: 4>, <TokenType.L_BRACE: 5>, <TokenType.R_BRACE: 6>, <TokenType.COMMA: 7>, <TokenType.DOT: 8>, <TokenType.DASH: 9>, <TokenType.PLUS: 10>, <TokenType.COLON: 11>, <TokenType.MOD: 329>, <TokenType.SEMICOLON: 19>, <TokenType.STAR: 20>, <TokenType.BACKSLASH: 21>, <TokenType.SLASH: 22>, <TokenType.LT: 23>, <TokenType.GT: 25>, <TokenType.UNKNOWN: 214>, <TokenType.NOT: 27>, <TokenType.EQ: 28>, <TokenType.AMP: 36>, <TokenType.PLACEHOLDER: 356>, <TokenType.PIPE: 39>, <TokenType.CARET: 42>, <TokenType.TILDE: 44>, <TokenType.HASH: 48>, <TokenType.PARAMETER: 58>}
ID_VAR_TOKENS = {<TokenType.SESSION: 59>, <TokenType.SESSION_USER: 61>, <TokenType.IDENTIFIER: 79>, <TokenType.DATABASE: 80>, <TokenType.COLUMN: 81>, <TokenType.SCHEMA: 83>, <TokenType.TABLE: 84>, <TokenType.WAREHOUSE: 85>, <TokenType.STAGE: 86>, <TokenType.STREAM: 87>, <TokenType.STREAMLIT: 88>, <TokenType.VAR: 89>, <TokenType.BIT: 97>, <TokenType.BOOLEAN: 98>, <TokenType.TINYINT: 99>, <TokenType.UTINYINT: 100>, <TokenType.SMALLINT: 101>, <TokenType.USMALLINT: 102>, <TokenType.MEDIUMINT: 103>, <TokenType.UMEDIUMINT: 104>, <TokenType.INT: 105>, <TokenType.UINT: 106>, <TokenType.BIGINT: 107>, <TokenType.UBIGINT: 108>, <TokenType.BIGNUM: 109>, <TokenType.INT128: 110>, <TokenType.UINT128: 111>, <TokenType.INT256: 112>, <TokenType.UINT256: 113>, <TokenType.FLOAT: 114>, <TokenType.DOUBLE: 115>, <TokenType.UDOUBLE: 116>, <TokenType.DECIMAL: 117>, <TokenType.DECIMAL32: 118>, <TokenType.DECIMAL64: 119>, <TokenType.DECIMAL128: 120>, <TokenType.DECIMAL256: 121>, <TokenType.DECFLOAT: 122>, <TokenType.UDECIMAL: 123>, <TokenType.BIGDECIMAL: 124>, <TokenType.CHAR: 125>, <TokenType.NCHAR: 126>, <TokenType.VARCHAR: 127>, <TokenType.NVARCHAR: 128>, <TokenType.BPCHAR: 129>, <TokenType.TEXT: 130>, <TokenType.MEDIUMTEXT: 131>, <TokenType.LONGTEXT: 132>, <TokenType.BLOB: 133>, <TokenType.MEDIUMBLOB: 134>, <TokenType.LONGBLOB: 135>, <TokenType.TINYBLOB: 136>, <TokenType.TINYTEXT: 137>, <TokenType.NAME: 138>, <TokenType.BINARY: 139>, <TokenType.VARBINARY: 140>, <TokenType.JSON: 141>, <TokenType.JSONB: 142>, <TokenType.TIME: 143>, <TokenType.TIMETZ: 144>, <TokenType.TIME_NS: 145>, <TokenType.TIMESTAMP: 146>, <TokenType.TIMESTAMPTZ: 147>, <TokenType.TIMESTAMPLTZ: 148>, <TokenType.TIMESTAMPNTZ: 149>, <TokenType.TIMESTAMP_S: 150>, <TokenType.TIMESTAMP_MS: 151>, <TokenType.TIMESTAMP_NS: 152>, <TokenType.DATETIME: 153>, <TokenType.DATETIME2: 154>, <TokenType.DATETIME64: 155>, <TokenType.SMALLDATETIME: 156>, <TokenType.DATE: 157>, <TokenType.DATE32: 158>, <TokenType.INT4RANGE: 159>, <TokenType.INT4MULTIRANGE: 160>, <TokenType.INT8RANGE: 161>, <TokenType.INT8MULTIRANGE: 162>, <TokenType.NUMRANGE: 163>, <TokenType.NUMMULTIRANGE: 164>, <TokenType.TSRANGE: 165>, <TokenType.TSMULTIRANGE: 166>, <TokenType.TSTZRANGE: 167>, <TokenType.TSTZMULTIRANGE: 168>, <TokenType.DATERANGE: 169>, <TokenType.DATEMULTIRANGE: 170>, <TokenType.UUID: 171>, <TokenType.GEOGRAPHY: 172>, <TokenType.GEOGRAPHYPOINT: 173>, <TokenType.NULLABLE: 174>, <TokenType.GEOMETRY: 175>, <TokenType.POINT: 176>, <TokenType.RING: 177>, <TokenType.LINESTRING: 178>, <TokenType.LOCALTIME: 179>, <TokenType.LOCALTIMESTAMP: 180>, <TokenType.MULTILINESTRING: 182>, <TokenType.POLYGON: 183>, <TokenType.MULTIPOLYGON: 184>, <TokenType.HLLSKETCH: 185>, <TokenType.HSTORE: 186>, <TokenType.SUPER: 187>, <TokenType.SERIAL: 188>, <TokenType.SMALLSERIAL: 189>, <TokenType.BIGSERIAL: 190>, <TokenType.XML: 191>, <TokenType.YEAR: 192>, <TokenType.USERDEFINED: 193>, <TokenType.MONEY: 194>, <TokenType.SMALLMONEY: 195>, <TokenType.ROWVERSION: 196>, <TokenType.IMAGE: 197>, <TokenType.VARIANT: 198>, <TokenType.OBJECT: 199>, <TokenType.INET: 200>, <TokenType.IPADDRESS: 201>, <TokenType.IPPREFIX: 202>, <TokenType.IPV4: 203>, <TokenType.IPV6: 204>, <TokenType.ENUM: 205>, <TokenType.ENUM8: 206>, <TokenType.ENUM16: 207>, <TokenType.FIXEDSTRING: 208>, <TokenType.LOWCARDINALITY: 209>, <TokenType.NESTED: 210>, <TokenType.AGGREGATEFUNCTION: 211>, <TokenType.SIMPLEAGGREGATEFUNCTION: 212>, <TokenType.TDIGEST: 213>, <TokenType.UNKNOWN: 214>, <TokenType.VECTOR: 215>, <TokenType.DYNAMIC: 216>, <TokenType.VOID: 217>, <TokenType.ALL: 220>, <TokenType.ANTI: 221>, <TokenType.ANY: 222>, <TokenType.APPLY: 223>, <TokenType.ARRAY: 224>, <TokenType.ASC: 225>, <TokenType.ASOF: 226>, <TokenType.ATTACH: 227>, <TokenType.AUTO_INCREMENT: 228>, <TokenType.BEGIN: 229>, <TokenType.CACHE: 232>, <TokenType.CASE: 233>, <TokenType.COLLATE: 236>, <TokenType.COMMAND: 237>, <TokenType.COMMENT: 238>, <TokenType.COMMIT: 239>, <TokenType.CONSTRAINT: 241>, <TokenType.COPY: 242>, <TokenType.CUBE: 245>, <TokenType.CURRENT_DATE: 246>, <TokenType.CURRENT_DATETIME: 247>, <TokenType.CURRENT_SCHEMA: 248>, <TokenType.CURRENT_TIME: 249>, <TokenType.CURRENT_TIMESTAMP: 250>, <TokenType.CURRENT_USER: 251>, <TokenType.CURRENT_ROLE: 253>, <TokenType.CURRENT_CATALOG: 254>, <TokenType.DEFAULT: 256>, <TokenType.DELETE: 257>, <TokenType.DESC: 258>, <TokenType.DESCRIBE: 259>, <TokenType.DETACH: 260>, <TokenType.DICTIONARY: 261>, <TokenType.DIV: 264>, <TokenType.END: 267>, <TokenType.ESCAPE: 268>, <TokenType.EXECUTE: 270>, <TokenType.EXISTS: 271>, <TokenType.FALSE: 272>, <TokenType.FILE: 274>, <TokenType.FILE_FORMAT: 275>, <TokenType.FILTER: 276>, <TokenType.FINAL: 277>, <TokenType.FIRST: 278>, <TokenType.FOREIGN_KEY: 281>, <TokenType.FORMAT: 282>, <TokenType.FULL: 284>, <TokenType.FUNCTION: 285>, <TokenType.GET: 286>, <TokenType.INDEX: 297>, <TokenType.INTERVAL: 304>, <TokenType.IS: 308>, <TokenType.ISNULL: 309>, <TokenType.KEEP: 312>, <TokenType.KILL: 314>, <TokenType.LEFT: 317>, <TokenType.LIKE: 318>, <TokenType.LIMIT: 319>, <TokenType.LIST: 320>, <TokenType.LOAD: 321>, <TokenType.LOCK: 322>, <TokenType.MAP: 323>, <TokenType.MATCH: 324>, <TokenType.MERGE: 328>, <TokenType.MODEL: 330>, <TokenType.NATURAL: 331>, <TokenType.NEXT: 332>, <TokenType.NOTHING: 333>, <TokenType.NULL: 335>, <TokenType.OBJECT_IDENTIFIER: 336>, <TokenType.OFFSET: 337>, <TokenType.OPERATOR: 340>, <TokenType.ORDINALITY: 344>, <TokenType.INOUT: 346>, <TokenType.OVER: 348>, <TokenType.OVERLAPS: 349>, <TokenType.OVERWRITE: 350>, <TokenType.PARTITION: 352>, <TokenType.PERCENT: 354>, <TokenType.PIVOT: 355>, <TokenType.PRAGMA: 360>, <TokenType.PROCEDURE: 363>, <TokenType.PSEUDO_TYPE: 365>, <TokenType.PUT: 366>, <TokenType.RANGE: 370>, <TokenType.RECURSIVE: 371>, <TokenType.REFRESH: 372>, <TokenType.RENAME: 373>, <TokenType.REPLACE: 374>, <TokenType.REFERENCES: 377>, <TokenType.RIGHT: 378>, <TokenType.ROLLUP: 382>, <TokenType.ROW: 383>, <TokenType.ROWS: 384>, <TokenType.SEMI: 387>, <TokenType.SEQUENCE: 389>, <TokenType.SET: 391>, <TokenType.SETTINGS: 392>, <TokenType.SHOW: 393>, <TokenType.SOME: 395>, <TokenType.STORAGE_INTEGRATION: 400>, <TokenType.STRAIGHT_JOIN: 401>, <TokenType.STRUCT: 402>, <TokenType.TAG: 405>, <TokenType.TEMPORARY: 406>, <TokenType.TOP: 407>, <TokenType.TRUE: 409>, <TokenType.TRUNCATE: 410>, <TokenType.TRIGGER: 411>, <TokenType.TYPE: 412>, <TokenType.UNNEST: 416>, <TokenType.UNPIVOT: 417>, <TokenType.UPDATE: 418>, <TokenType.USE: 419>, <TokenType.VIEW: 423>, <TokenType.SEMANTIC_VIEW: 424>, <TokenType.VOLATILE: 425>, <TokenType.WINDOW: 429>, <TokenType.UNIQUE: 431>, <TokenType.SINK: 438>, <TokenType.SOURCE: 439>, <TokenType.ANALYZE: 440>, <TokenType.NAMESPACE: 441>, <TokenType.EXPORT: 442>}
AGG_FUNC_MAPPING = {'welchTTestSimpleState': ('welchTTest', 'SimpleState'), 'histogramSimpleState': ('histogram', 'SimpleState'), 'countSimpleState': ('count', 'SimpleState'), 'quantileTimingWeightedSimpleState': ('quantileTimingWeighted', 'SimpleState'), 'cramersVSimpleState': ('cramersV', 'SimpleState'), 'skewPopSimpleState': ('skewPop', 'SimpleState'), 'quantileTDigestSimpleState': ('quantileTDigest', 'SimpleState'), 'stochasticLogisticRegressionSimpleState': ('stochasticLogisticRegression', 'SimpleState'), 'quantileInterpolatedWeightedSimpleState': ('quantileInterpolatedWeighted', 'SimpleState'), 'maxMapSimpleState': ('maxMap', 'SimpleState'), 'theilsUSimpleState': ('theilsU', 'SimpleState'), 'last_valueSimpleState': ('last_value', 'SimpleState'), 'argMaxSimpleState': ('argMax', 'SimpleState'), 'quantilesTDigestSimpleState': ('quantilesTDigest', 'SimpleState'), 'kurtPopSimpleState': ('kurtPop', 'SimpleState'), 'groupBitXorSimpleState': ('groupBitXor', 'SimpleState'), 'groupArrayMovingAvgSimpleState': ('groupArrayMovingAvg', 'SimpleState'), 'medianSimpleState': ('median', 'SimpleState'), 'groupUniqArraySimpleState': ('groupUniqArray', 'SimpleState'), 'cramersVBiasCorrectedSimpleState': ('cramersVBiasCorrected', 'SimpleState'), 'groupBitmapSimpleState': ('groupBitmap', 'SimpleState'), 'sequenceNextNodeSimpleState': ('sequenceNextNode', 'SimpleState'), 'deltaSumSimpleState': ('deltaSum', 'SimpleState'), 'anyHeavySimpleState': ('anyHeavy', 'SimpleState'), 'quantileBFloat16SimpleState': ('quantileBFloat16', 'SimpleState'), 'uniqHLL12SimpleState': ('uniqHLL12', 'SimpleState'), 'groupConcatSimpleState': ('groupConcat', 'SimpleState'), 'simpleLinearRegressionSimpleState': ('simpleLinearRegression', 'SimpleState'), 'stddevPopSimpleState': ('stddevPop', 'SimpleState'), 'sumKahanSimpleState': ('sumKahan', 'SimpleState'), 'contingencySimpleState': ('contingency', 'SimpleState'), 'minMapSimpleState': ('minMap', 'SimpleState'), 'avgSimpleState': ('avg', 'SimpleState'), 'quantilesExactWeightedSimpleState': ('quantilesExactWeighted', 'SimpleState'), 'quantilesTimingSimpleState': ('quantilesTiming', 'SimpleState'), 'uniqThetaSimpleState': ('uniqTheta', 'SimpleState'), 'exponentialMovingAverageSimpleState': ('exponentialMovingAverage', 'SimpleState'), 'quantilesBFloat16WeightedSimpleState': ('quantilesBFloat16Weighted', 'SimpleState'), 'intervalLengthSumSimpleState': ('intervalLengthSum', 'SimpleState'), 'uniqCombined64SimpleState': ('uniqCombined64', 'SimpleState'), 'anySimpleState': ('any', 'SimpleState'), 'uniqCombinedSimpleState': ('uniqCombined', 'SimpleState'), 'avgWeightedSimpleState': ('avgWeighted', 'SimpleState'), 'quantileTimingSimpleState': ('quantileTiming', 'SimpleState'), 'uniqUpToSimpleState': ('uniqUpTo', 'SimpleState'), 'minSimpleState': ('min', 'SimpleState'), 'anyLastSimpleState': ('anyLast', 'SimpleState'), 'skewSampSimpleState': ('skewSamp', 'SimpleState'), 'kurtSampSimpleState': ('kurtSamp', 'SimpleState'), 'groupArraySampleSimpleState': ('groupArraySample', 'SimpleState'), 'topKSimpleState': ('topK', 'SimpleState'), 'sumSimpleState': ('sum', 'SimpleState'), 'sumMapSimpleState': ('sumMap', 'SimpleState'), 'quantilesExactHighSimpleState': ('quantilesExactHigh', 'SimpleState'), 'quantilesExactLowSimpleState': ('quantilesExactLow', 'SimpleState'), 'quantileExactWeightedSimpleState': ('quantileExactWeighted', 'SimpleState'), 'sumCountSimpleState': ('sumCount', 'SimpleState'), 'rankCorrSimpleState': ('rankCorr', 'SimpleState'), 'quantilesGKSimpleState': ('quantilesGK', 'SimpleState'), 'uniqExactSimpleState': ('uniqExact', 'SimpleState'), 'groupArrayLastSimpleState': ('groupArrayLast', 'SimpleState'), 'windowFunnelSimpleState': ('windowFunnel', 'SimpleState'), 'maxIntersectionsSimpleState': ('maxIntersections', 'SimpleState'), 'corrSimpleState': ('corr', 'SimpleState'), 'sumWithOverflowSimpleState': ('sumWithOverflow', 'SimpleState'), 'quantilesBFloat16SimpleState': ('quantilesBFloat16', 'SimpleState'), 'quantileExactSimpleState': ('quantileExact', 'SimpleState'), 'entropySimpleState': ('entropy', 'SimpleState'), 'quantilesInterpolatedWeightedSimpleState': ('quantilesInterpolatedWeighted', 'SimpleState'), 'quantilesSimpleState': ('quantiles', 'SimpleState'), 'stochasticLinearRegressionSimpleState': ('stochasticLinearRegression', 'SimpleState'), 'mannWhitneyUTestSimpleState': ('mannWhitneyUTest', 'SimpleState'), 'quantilesTimingWeightedSimpleState': ('quantilesTimingWeighted', 'SimpleState'), 'covarSampSimpleState': ('covarSamp', 'SimpleState'), 'varPopSimpleState': ('varPop', 'SimpleState'), 'sequenceMatchSimpleState': ('sequenceMatch', 'SimpleState'), 'meanZTestSimpleState': ('meanZTest', 'SimpleState'), 'approx_top_sumSimpleState': ('approx_top_sum', 'SimpleState'), 'boundingRatioSimpleState': ('boundingRatio', 'SimpleState'), 'kolmogorovSmirnovTestSimpleState': ('kolmogorovSmirnovTest', 'SimpleState'), 'covarPopSimpleState': ('covarPop', 'SimpleState'), 'quantileGKSimpleState': ('quantileGK', 'SimpleState'), 'stddevSampSimpleState': ('stddevSamp', 'SimpleState'), 'sparkBarSimpleState': ('sparkBar', 'SimpleState'), 'quantileExactHighSimpleState': ('quantileExactHigh', 'SimpleState'), 'quantilesExactSimpleState': ('quantilesExact', 'SimpleState'), 'uniqSimpleState': ('uniq', 'SimpleState'), 'groupArrayInsertAtSimpleState': ('groupArrayInsertAt', 'SimpleState'), 'quantilesDeterministicSimpleState': ('quantilesDeterministic', 'SimpleState'), 'quantilesTDigestWeightedSimpleState': ('quantilesTDigestWeighted', 'SimpleState'), 'quantileDeterministicSimpleState': ('quantileDeterministic', 'SimpleState'), 'retentionSimpleState': ('retention', 'SimpleState'), 'groupBitmapXorSimpleState': ('groupBitmapXor', 'SimpleState'), 'quantilesExactExclusiveSimpleState': ('quantilesExactExclusive', 'SimpleState'), 'groupArrayMovingSumSimpleState': ('groupArrayMovingSum', 'SimpleState'), 'quantileBFloat16WeightedSimpleState': ('quantileBFloat16Weighted', 'SimpleState'), 'first_valueSimpleState': ('first_value', 'SimpleState'), 'studentTTestSimpleState': ('studentTTest', 'SimpleState'), 'topKWeightedSimpleState': ('topKWeighted', 'SimpleState'), 'quantileTDigestWeightedSimpleState': ('quantileTDigestWeighted', 'SimpleState'), 'categoricalInformationValueSimpleState': ('categoricalInformationValue', 'SimpleState'), 'sequenceCountSimpleState': ('sequenceCount', 'SimpleState'), 'groupBitAndSimpleState': ('groupBitAnd', 'SimpleState'), 'largestTriangleThreeBucketsSimpleState': ('largestTriangleThreeBuckets', 'SimpleState'), 'groupBitOrSimpleState': ('groupBitOr', 'SimpleState'), 'groupBitmapOrSimpleState': ('groupBitmapOr', 'SimpleState'), 'deltaSumTimestampSimpleState': ('deltaSumTimestamp', 'SimpleState'), 'argMinSimpleState': ('argMin', 'SimpleState'), 'groupBitmapAndSimpleState': ('groupBitmapAnd', 'SimpleState'), 'varSampSimpleState': ('varSamp', 'SimpleState'), 'exponentialTimeDecayedAvgSimpleState': ('exponentialTimeDecayedAvg', 'SimpleState'), 'maxSimpleState': ('max', 'SimpleState'), 'quantileExactLowSimpleState': ('quantileExactLow', 'SimpleState'), 'maxIntersectionsPositionSimpleState': ('maxIntersectionsPosition', 'SimpleState'), 'groupArraySimpleState': ('groupArray', 'SimpleState'), 'quantileSimpleState': ('quantile', 'SimpleState'), 'welchTTestMergeState': ('welchTTest', 'MergeState'), 'histogramMergeState': ('histogram', 'MergeState'), 'countMergeState': ('count', 'MergeState'), 'quantileTimingWeightedMergeState': ('quantileTimingWeighted', 'MergeState'), 'cramersVMergeState': ('cramersV', 'MergeState'), 'skewPopMergeState': ('skewPop', 'MergeState'), 'quantileTDigestMergeState': ('quantileTDigest', 'MergeState'), 'stochasticLogisticRegressionMergeState': ('stochasticLogisticRegression', 'MergeState'), 'quantileInterpolatedWeightedMergeState': ('quantileInterpolatedWeighted', 'MergeState'), 'maxMapMergeState': ('maxMap', 'MergeState'), 'theilsUMergeState': ('theilsU', 'MergeState'), 'last_valueMergeState': ('last_value', 'MergeState'), 'argMaxMergeState': ('argMax', 'MergeState'), 'quantilesTDigestMergeState': ('quantilesTDigest', 'MergeState'), 'kurtPopMergeState': ('kurtPop', 'MergeState'), 'groupBitXorMergeState': ('groupBitXor', 'MergeState'), 'groupArrayMovingAvgMergeState': ('groupArrayMovingAvg', 'MergeState'), 'medianMergeState': ('median', 'MergeState'), 'groupUniqArrayMergeState': ('groupUniqArray', 'MergeState'), 'cramersVBiasCorrectedMergeState': ('cramersVBiasCorrected', 'MergeState'), 'groupBitmapMergeState': ('groupBitmap', 'MergeState'), 'sequenceNextNodeMergeState': ('sequenceNextNode', 'MergeState'), 'deltaSumMergeState': ('deltaSum', 'MergeState'), 'anyHeavyMergeState': ('anyHeavy', 'MergeState'), 'quantileBFloat16MergeState': ('quantileBFloat16', 'MergeState'), 'uniqHLL12MergeState': ('uniqHLL12', 'MergeState'), 'groupConcatMergeState': ('groupConcat', 'MergeState'), 'simpleLinearRegressionMergeState': ('simpleLinearRegression', 'MergeState'), 'stddevPopMergeState': ('stddevPop', 'MergeState'), 'sumKahanMergeState': ('sumKahan', 'MergeState'), 'contingencyMergeState': ('contingency', 'MergeState'), 'minMapMergeState': ('minMap', 'MergeState'), 'avgMergeState': ('avg', 'MergeState'), 'quantilesExactWeightedMergeState': ('quantilesExactWeighted', 'MergeState'), 'quantilesTimingMergeState': ('quantilesTiming', 'MergeState'), 'uniqThetaMergeState': ('uniqTheta', 'MergeState'), 'exponentialMovingAverageMergeState': ('exponentialMovingAverage', 'MergeState'), 'quantilesBFloat16WeightedMergeState': ('quantilesBFloat16Weighted', 'MergeState'), 'intervalLengthSumMergeState': ('intervalLengthSum', 'MergeState'), 'uniqCombined64MergeState': ('uniqCombined64', 'MergeState'), 'anyMergeState': ('any', 'MergeState'), 'uniqCombinedMergeState': ('uniqCombined', 'MergeState'), 'avgWeightedMergeState': ('avgWeighted', 'MergeState'), 'quantileTimingMergeState': ('quantileTiming', 'MergeState'), 'uniqUpToMergeState': ('uniqUpTo', 'MergeState'), 'minMergeState': ('min', 'MergeState'), 'anyLastMergeState': ('anyLast', 'MergeState'), 'skewSampMergeState': ('skewSamp', 'MergeState'), 'kurtSampMergeState': ('kurtSamp', 'MergeState'), 'groupArraySampleMergeState': ('groupArraySample', 'MergeState'), 'topKMergeState': ('topK', 'MergeState'), 'sumMergeState': ('sum', 'MergeState'), 'sumMapMergeState': ('sumMap', 'MergeState'), 'quantilesExactHighMergeState': ('quantilesExactHigh', 'MergeState'), 'quantilesExactLowMergeState': ('quantilesExactLow', 'MergeState'), 'quantileExactWeightedMergeState': ('quantileExactWeighted', 'MergeState'), 'sumCountMergeState': ('sumCount', 'MergeState'), 'rankCorrMergeState': ('rankCorr', 'MergeState'), 'quantilesGKMergeState': ('quantilesGK', 'MergeState'), 'uniqExactMergeState': ('uniqExact', 'MergeState'), 'groupArrayLastMergeState': ('groupArrayLast', 'MergeState'), 'windowFunnelMergeState': ('windowFunnel', 'MergeState'), 'maxIntersectionsMergeState': ('maxIntersections', 'MergeState'), 'corrMergeState': ('corr', 'MergeState'), 'sumWithOverflowMergeState': ('sumWithOverflow', 'MergeState'), 'quantilesBFloat16MergeState': ('quantilesBFloat16', 'MergeState'), 'quantileExactMergeState': ('quantileExact', 'MergeState'), 'entropyMergeState': ('entropy', 'MergeState'), 'quantilesInterpolatedWeightedMergeState': ('quantilesInterpolatedWeighted', 'MergeState'), 'quantilesMergeState': ('quantiles', 'MergeState'), 'stochasticLinearRegressionMergeState': ('stochasticLinearRegression', 'MergeState'), 'mannWhitneyUTestMergeState': ('mannWhitneyUTest', 'MergeState'), 'quantilesTimingWeightedMergeState': ('quantilesTimingWeighted', 'MergeState'), 'covarSampMergeState': ('covarSamp', 'MergeState'), 'varPopMergeState': ('varPop', 'MergeState'), 'sequenceMatchMergeState': ('sequenceMatch', 'MergeState'), 'meanZTestMergeState': ('meanZTest', 'MergeState'), 'approx_top_sumMergeState': ('approx_top_sum', 'MergeState'), 'boundingRatioMergeState': ('boundingRatio', 'MergeState'), 'kolmogorovSmirnovTestMergeState': ('kolmogorovSmirnovTest', 'MergeState'), 'covarPopMergeState': ('covarPop', 'MergeState'), 'quantileGKMergeState': ('quantileGK', 'MergeState'), 'stddevSampMergeState': ('stddevSamp', 'MergeState'), 'sparkBarMergeState': ('sparkBar', 'MergeState'), 'quantileExactHighMergeState': ('quantileExactHigh', 'MergeState'), 'quantilesExactMergeState': ('quantilesExact', 'MergeState'), 'uniqMergeState': ('uniq', 'MergeState'), 'groupArrayInsertAtMergeState': ('groupArrayInsertAt', 'MergeState'), 'quantilesDeterministicMergeState': ('quantilesDeterministic', 'MergeState'), 'quantilesTDigestWeightedMergeState': ('quantilesTDigestWeighted', 'MergeState'), 'quantileDeterministicMergeState': ('quantileDeterministic', 'MergeState'), 'retentionMergeState': ('retention', 'MergeState'), 'groupBitmapXorMergeState': ('groupBitmapXor', 'MergeState'), 'quantilesExactExclusiveMergeState': ('quantilesExactExclusive', 'MergeState'), 'groupArrayMovingSumMergeState': ('groupArrayMovingSum', 'MergeState'), 'quantileBFloat16WeightedMergeState': ('quantileBFloat16Weighted', 'MergeState'), 'first_valueMergeState': ('first_value', 'MergeState'), 'studentTTestMergeState': ('studentTTest', 'MergeState'), 'topKWeightedMergeState': ('topKWeighted', 'MergeState'), 'quantileTDigestWeightedMergeState': ('quantileTDigestWeighted', 'MergeState'), 'categoricalInformationValueMergeState': ('categoricalInformationValue', 'MergeState'), 'sequenceCountMergeState': ('sequenceCount', 'MergeState'), 'groupBitAndMergeState': ('groupBitAnd', 'MergeState'), 'largestTriangleThreeBucketsMergeState': ('largestTriangleThreeBuckets', 'MergeState'), 'groupBitOrMergeState': ('groupBitOr', 'MergeState'), 'groupBitmapOrMergeState': ('groupBitmapOr', 'MergeState'), 'deltaSumTimestampMergeState': ('deltaSumTimestamp', 'MergeState'), 'argMinMergeState': ('argMin', 'MergeState'), 'groupBitmapAndMergeState': ('groupBitmapAnd', 'MergeState'), 'varSampMergeState': ('varSamp', 'MergeState'), 'exponentialTimeDecayedAvgMergeState': ('exponentialTimeDecayedAvg', 'MergeState'), 'maxMergeState': ('max', 'MergeState'), 'quantileExactLowMergeState': ('quantileExactLow', 'MergeState'), 'maxIntersectionsPositionMergeState': ('maxIntersectionsPosition', 'MergeState'), 'groupArrayMergeState': ('groupArray', 'MergeState'), 'quantileMergeState': ('quantile', 'MergeState'), 'welchTTestOrDefault': ('welchTTest', 'OrDefault'), 'histogramOrDefault': ('histogram', 'OrDefault'), 'countOrDefault': ('count', 'OrDefault'), 'quantileTimingWeightedOrDefault': ('quantileTimingWeighted', 'OrDefault'), 'cramersVOrDefault': ('cramersV', 'OrDefault'), 'skewPopOrDefault': ('skewPop', 'OrDefault'), 'quantileTDigestOrDefault': ('quantileTDigest', 'OrDefault'), 'stochasticLogisticRegressionOrDefault': ('stochasticLogisticRegression', 'OrDefault'), 'quantileInterpolatedWeightedOrDefault': ('quantileInterpolatedWeighted', 'OrDefault'), 'maxMapOrDefault': ('maxMap', 'OrDefault'), 'theilsUOrDefault': ('theilsU', 'OrDefault'), 'last_valueOrDefault': ('last_value', 'OrDefault'), 'argMaxOrDefault': ('argMax', 'OrDefault'), 'quantilesTDigestOrDefault': ('quantilesTDigest', 'OrDefault'), 'kurtPopOrDefault': ('kurtPop', 'OrDefault'), 'groupBitXorOrDefault': ('groupBitXor', 'OrDefault'), 'groupArrayMovingAvgOrDefault': ('groupArrayMovingAvg', 'OrDefault'), 'medianOrDefault': ('median', 'OrDefault'), 'groupUniqArrayOrDefault': ('groupUniqArray', 'OrDefault'), 'cramersVBiasCorrectedOrDefault': ('cramersVBiasCorrected', 'OrDefault'), 'groupBitmapOrDefault': ('groupBitmap', 'OrDefault'), 'sequenceNextNodeOrDefault': ('sequenceNextNode', 'OrDefault'), 'deltaSumOrDefault': ('deltaSum', 'OrDefault'), 'anyHeavyOrDefault': ('anyHeavy', 'OrDefault'), 'quantileBFloat16OrDefault': ('quantileBFloat16', 'OrDefault'), 'uniqHLL12OrDefault': ('uniqHLL12', 'OrDefault'), 'groupConcatOrDefault': ('groupConcat', 'OrDefault'), 'simpleLinearRegressionOrDefault': ('simpleLinearRegression', 'OrDefault'), 'stddevPopOrDefault': ('stddevPop', 'OrDefault'), 'sumKahanOrDefault': ('sumKahan', 'OrDefault'), 'contingencyOrDefault': ('contingency', 'OrDefault'), 'minMapOrDefault': ('minMap', 'OrDefault'), 'avgOrDefault': ('avg', 'OrDefault'), 'quantilesExactWeightedOrDefault': ('quantilesExactWeighted', 'OrDefault'), 'quantilesTimingOrDefault': ('quantilesTiming', 'OrDefault'), 'uniqThetaOrDefault': ('uniqTheta', 'OrDefault'), 'exponentialMovingAverageOrDefault': ('exponentialMovingAverage', 'OrDefault'), 'quantilesBFloat16WeightedOrDefault': ('quantilesBFloat16Weighted', 'OrDefault'), 'intervalLengthSumOrDefault': ('intervalLengthSum', 'OrDefault'), 'uniqCombined64OrDefault': ('uniqCombined64', 'OrDefault'), 'anyOrDefault': ('any', 'OrDefault'), 'uniqCombinedOrDefault': ('uniqCombined', 'OrDefault'), 'avgWeightedOrDefault': ('avgWeighted', 'OrDefault'), 'quantileTimingOrDefault': ('quantileTiming', 'OrDefault'), 'uniqUpToOrDefault': ('uniqUpTo', 'OrDefault'), 'minOrDefault': ('min', 'OrDefault'), 'anyLastOrDefault': ('anyLast', 'OrDefault'), 'skewSampOrDefault': ('skewSamp', 'OrDefault'), 'kurtSampOrDefault': ('kurtSamp', 'OrDefault'), 'groupArraySampleOrDefault': ('groupArraySample', 'OrDefault'), 'topKOrDefault': ('topK', 'OrDefault'), 'sumOrDefault': ('sum', 'OrDefault'), 'sumMapOrDefault': ('sumMap', 'OrDefault'), 'quantilesExactHighOrDefault': ('quantilesExactHigh', 'OrDefault'), 'quantilesExactLowOrDefault': ('quantilesExactLow', 'OrDefault'), 'quantileExactWeightedOrDefault': ('quantileExactWeighted', 'OrDefault'), 'sumCountOrDefault': ('sumCount', 'OrDefault'), 'rankCorrOrDefault': ('rankCorr', 'OrDefault'), 'quantilesGKOrDefault': ('quantilesGK', 'OrDefault'), 'uniqExactOrDefault': ('uniqExact', 'OrDefault'), 'groupArrayLastOrDefault': ('groupArrayLast', 'OrDefault'), 'windowFunnelOrDefault': ('windowFunnel', 'OrDefault'), 'maxIntersectionsOrDefault': ('maxIntersections', 'OrDefault'), 'corrOrDefault': ('corr', 'OrDefault'), 'sumWithOverflowOrDefault': ('sumWithOverflow', 'OrDefault'), 'quantilesBFloat16OrDefault': ('quantilesBFloat16', 'OrDefault'), 'quantileExactOrDefault': ('quantileExact', 'OrDefault'), 'entropyOrDefault': ('entropy', 'OrDefault'), 'quantilesInterpolatedWeightedOrDefault': ('quantilesInterpolatedWeighted', 'OrDefault'), 'quantilesOrDefault': ('quantiles', 'OrDefault'), 'stochasticLinearRegressionOrDefault': ('stochasticLinearRegression', 'OrDefault'), 'mannWhitneyUTestOrDefault': ('mannWhitneyUTest', 'OrDefault'), 'quantilesTimingWeightedOrDefault': ('quantilesTimingWeighted', 'OrDefault'), 'covarSampOrDefault': ('covarSamp', 'OrDefault'), 'varPopOrDefault': ('varPop', 'OrDefault'), 'sequenceMatchOrDefault': ('sequenceMatch', 'OrDefault'), 'meanZTestOrDefault': ('meanZTest', 'OrDefault'), 'approx_top_sumOrDefault': ('approx_top_sum', 'OrDefault'), 'boundingRatioOrDefault': ('boundingRatio', 'OrDefault'), 'kolmogorovSmirnovTestOrDefault': ('kolmogorovSmirnovTest', 'OrDefault'), 'covarPopOrDefault': ('covarPop', 'OrDefault'), 'quantileGKOrDefault': ('quantileGK', 'OrDefault'), 'stddevSampOrDefault': ('stddevSamp', 'OrDefault'), 'sparkBarOrDefault': ('sparkBar', 'OrDefault'), 'quantileExactHighOrDefault': ('quantileExactHigh', 'OrDefault'), 'quantilesExactOrDefault': ('quantilesExact', 'OrDefault'), 'uniqOrDefault': ('uniq', 'OrDefault'), 'groupArrayInsertAtOrDefault': ('groupArrayInsertAt', 'OrDefault'), 'quantilesDeterministicOrDefault': ('quantilesDeterministic', 'OrDefault'), 'quantilesTDigestWeightedOrDefault': ('quantilesTDigestWeighted', 'OrDefault'), 'quantileDeterministicOrDefault': ('quantileDeterministic', 'OrDefault'), 'retentionOrDefault': ('retention', 'OrDefault'), 'groupBitmapXorOrDefault': ('groupBitmapXor', 'OrDefault'), 'quantilesExactExclusiveOrDefault': ('quantilesExactExclusive', 'OrDefault'), 'groupArrayMovingSumOrDefault': ('groupArrayMovingSum', 'OrDefault'), 'quantileBFloat16WeightedOrDefault': ('quantileBFloat16Weighted', 'OrDefault'), 'first_valueOrDefault': ('first_value', 'OrDefault'), 'studentTTestOrDefault': ('studentTTest', 'OrDefault'), 'topKWeightedOrDefault': ('topKWeighted', 'OrDefault'), 'quantileTDigestWeightedOrDefault': ('quantileTDigestWeighted', 'OrDefault'), 'categoricalInformationValueOrDefault': ('categoricalInformationValue', 'OrDefault'), 'sequenceCountOrDefault': ('sequenceCount', 'OrDefault'), 'groupBitAndOrDefault': ('groupBitAnd', 'OrDefault'), 'largestTriangleThreeBucketsOrDefault': ('largestTriangleThreeBuckets', 'OrDefault'), 'groupBitOrOrDefault': ('groupBitOr', 'OrDefault'), 'groupBitmapOrOrDefault': ('groupBitmapOr', 'OrDefault'), 'deltaSumTimestampOrDefault': ('deltaSumTimestamp', 'OrDefault'), 'argMinOrDefault': ('argMin', 'OrDefault'), 'groupBitmapAndOrDefault': ('groupBitmapAnd', 'OrDefault'), 'varSampOrDefault': ('varSamp', 'OrDefault'), 'exponentialTimeDecayedAvgOrDefault': ('exponentialTimeDecayedAvg', 'OrDefault'), 'maxOrDefault': ('max', 'OrDefault'), 'quantileExactLowOrDefault': ('quantileExactLow', 'OrDefault'), 'maxIntersectionsPositionOrDefault': ('maxIntersectionsPosition', 'OrDefault'), 'groupArrayOrDefault': ('groupArray', 'OrDefault'), 'quantileOrDefault': ('quantile', 'OrDefault'), 'welchTTestDistinct': ('welchTTest', 'Distinct'), 'histogramDistinct': ('histogram', 'Distinct'), 'countDistinct': ('count', 'Distinct'), 'quantileTimingWeightedDistinct': ('quantileTimingWeighted', 'Distinct'), 'cramersVDistinct': ('cramersV', 'Distinct'), 'skewPopDistinct': ('skewPop', 'Distinct'), 'quantileTDigestDistinct': ('quantileTDigest', 'Distinct'), 'stochasticLogisticRegressionDistinct': ('stochasticLogisticRegression', 'Distinct'), 'quantileInterpolatedWeightedDistinct': ('quantileInterpolatedWeighted', 'Distinct'), 'maxMapDistinct': ('maxMap', 'Distinct'), 'theilsUDistinct': ('theilsU', 'Distinct'), 'last_valueDistinct': ('last_value', 'Distinct'), 'argMaxDistinct': ('argMax', 'Distinct'), 'quantilesTDigestDistinct': ('quantilesTDigest', 'Distinct'), 'kurtPopDistinct': ('kurtPop', 'Distinct'), 'groupBitXorDistinct': ('groupBitXor', 'Distinct'), 'groupArrayMovingAvgDistinct': ('groupArrayMovingAvg', 'Distinct'), 'medianDistinct': ('median', 'Distinct'), 'groupUniqArrayDistinct': ('groupUniqArray', 'Distinct'), 'cramersVBiasCorrectedDistinct': ('cramersVBiasCorrected', 'Distinct'), 'groupBitmapDistinct': ('groupBitmap', 'Distinct'), 'sequenceNextNodeDistinct': ('sequenceNextNode', 'Distinct'), 'deltaSumDistinct': ('deltaSum', 'Distinct'), 'anyHeavyDistinct': ('anyHeavy', 'Distinct'), 'quantileBFloat16Distinct': ('quantileBFloat16', 'Distinct'), 'uniqHLL12Distinct': ('uniqHLL12', 'Distinct'), 'groupConcatDistinct': ('groupConcat', 'Distinct'), 'simpleLinearRegressionDistinct': ('simpleLinearRegression', 'Distinct'), 'stddevPopDistinct': ('stddevPop', 'Distinct'), 'sumKahanDistinct': ('sumKahan', 'Distinct'), 'contingencyDistinct': ('contingency', 'Distinct'), 'minMapDistinct': ('minMap', 'Distinct'), 'avgDistinct': ('avg', 'Distinct'), 'quantilesExactWeightedDistinct': ('quantilesExactWeighted', 'Distinct'), 'quantilesTimingDistinct': ('quantilesTiming', 'Distinct'), 'uniqThetaDistinct': ('uniqTheta', 'Distinct'), 'exponentialMovingAverageDistinct': ('exponentialMovingAverage', 'Distinct'), 'quantilesBFloat16WeightedDistinct': ('quantilesBFloat16Weighted', 'Distinct'), 'intervalLengthSumDistinct': ('intervalLengthSum', 'Distinct'), 'uniqCombined64Distinct': ('uniqCombined64', 'Distinct'), 'anyDistinct': ('any', 'Distinct'), 'uniqCombinedDistinct': ('uniqCombined', 'Distinct'), 'avgWeightedDistinct': ('avgWeighted', 'Distinct'), 'quantileTimingDistinct': ('quantileTiming', 'Distinct'), 'uniqUpToDistinct': ('uniqUpTo', 'Distinct'), 'minDistinct': ('min', 'Distinct'), 'anyLastDistinct': ('anyLast', 'Distinct'), 'skewSampDistinct': ('skewSamp', 'Distinct'), 'kurtSampDistinct': ('kurtSamp', 'Distinct'), 'groupArraySampleDistinct': ('groupArraySample', 'Distinct'), 'topKDistinct': ('topK', 'Distinct'), 'sumDistinct': ('sum', 'Distinct'), 'sumMapDistinct': ('sumMap', 'Distinct'), 'quantilesExactHighDistinct': ('quantilesExactHigh', 'Distinct'), 'quantilesExactLowDistinct': ('quantilesExactLow', 'Distinct'), 'quantileExactWeightedDistinct': ('quantileExactWeighted', 'Distinct'), 'sumCountDistinct': ('sumCount', 'Distinct'), 'rankCorrDistinct': ('rankCorr', 'Distinct'), 'quantilesGKDistinct': ('quantilesGK', 'Distinct'), 'uniqExactDistinct': ('uniqExact', 'Distinct'), 'groupArrayLastDistinct': ('groupArrayLast', 'Distinct'), 'windowFunnelDistinct': ('windowFunnel', 'Distinct'), 'maxIntersectionsDistinct': ('maxIntersections', 'Distinct'), 'corrDistinct': ('corr', 'Distinct'), 'sumWithOverflowDistinct': ('sumWithOverflow', 'Distinct'), 'quantilesBFloat16Distinct': ('quantilesBFloat16', 'Distinct'), 'quantileExactDistinct': ('quantileExact', 'Distinct'), 'entropyDistinct': ('entropy', 'Distinct'), 'quantilesInterpolatedWeightedDistinct': ('quantilesInterpolatedWeighted', 'Distinct'), 'quantilesDistinct': ('quantiles', 'Distinct'), 'stochasticLinearRegressionDistinct': ('stochasticLinearRegression', 'Distinct'), 'mannWhitneyUTestDistinct': ('mannWhitneyUTest', 'Distinct'), 'quantilesTimingWeightedDistinct': ('quantilesTimingWeighted', 'Distinct'), 'covarSampDistinct': ('covarSamp', 'Distinct'), 'varPopDistinct': ('varPop', 'Distinct'), 'sequenceMatchDistinct': ('sequenceMatch', 'Distinct'), 'meanZTestDistinct': ('meanZTest', 'Distinct'), 'approx_top_sumDistinct': ('approx_top_sum', 'Distinct'), 'boundingRatioDistinct': ('boundingRatio', 'Distinct'), 'kolmogorovSmirnovTestDistinct': ('kolmogorovSmirnovTest', 'Distinct'), 'covarPopDistinct': ('covarPop', 'Distinct'), 'quantileGKDistinct': ('quantileGK', 'Distinct'), 'stddevSampDistinct': ('stddevSamp', 'Distinct'), 'sparkBarDistinct': ('sparkBar', 'Distinct'), 'quantileExactHighDistinct': ('quantileExactHigh', 'Distinct'), 'quantilesExactDistinct': ('quantilesExact', 'Distinct'), 'uniqDistinct': ('uniq', 'Distinct'), 'groupArrayInsertAtDistinct': ('groupArrayInsertAt', 'Distinct'), 'quantilesDeterministicDistinct': ('quantilesDeterministic', 'Distinct'), 'quantilesTDigestWeightedDistinct': ('quantilesTDigestWeighted', 'Distinct'), 'quantileDeterministicDistinct': ('quantileDeterministic', 'Distinct'), 'retentionDistinct': ('retention', 'Distinct'), 'groupBitmapXorDistinct': ('groupBitmapXor', 'Distinct'), 'quantilesExactExclusiveDistinct': ('quantilesExactExclusive', 'Distinct'), 'groupArrayMovingSumDistinct': ('groupArrayMovingSum', 'Distinct'), 'quantileBFloat16WeightedDistinct': ('quantileBFloat16Weighted', 'Distinct'), 'first_valueDistinct': ('first_value', 'Distinct'), 'studentTTestDistinct': ('studentTTest', 'Distinct'), 'topKWeightedDistinct': ('topKWeighted', 'Distinct'), 'quantileTDigestWeightedDistinct': ('quantileTDigestWeighted', 'Distinct'), 'categoricalInformationValueDistinct': ('categoricalInformationValue', 'Distinct'), 'sequenceCountDistinct': ('sequenceCount', 'Distinct'), 'groupBitAndDistinct': ('groupBitAnd', 'Distinct'), 'largestTriangleThreeBucketsDistinct': ('largestTriangleThreeBuckets', 'Distinct'), 'groupBitOrDistinct': ('groupBitOr', 'Distinct'), 'groupBitmapOrDistinct': ('groupBitmapOr', 'Distinct'), 'deltaSumTimestampDistinct': ('deltaSumTimestamp', 'Distinct'), 'argMinDistinct': ('argMin', 'Distinct'), 'groupBitmapAndDistinct': ('groupBitmapAnd', 'Distinct'), 'varSampDistinct': ('varSamp', 'Distinct'), 'exponentialTimeDecayedAvgDistinct': ('exponentialTimeDecayedAvg', 'Distinct'), 'maxDistinct': ('max', 'Distinct'), 'quantileExactLowDistinct': ('quantileExactLow', 'Distinct'), 'maxIntersectionsPositionDistinct': ('maxIntersectionsPosition', 'Distinct'), 'groupArrayDistinct': ('groupArray', 'Distinct'), 'quantileDistinct': ('quantile', 'Distinct'), 'welchTTestResample': ('welchTTest', 'Resample'), 'histogramResample': ('histogram', 'Resample'), 'countResample': ('count', 'Resample'), 'quantileTimingWeightedResample': ('quantileTimingWeighted', 'Resample'), 'cramersVResample': ('cramersV', 'Resample'), 'skewPopResample': ('skewPop', 'Resample'), 'quantileTDigestResample': ('quantileTDigest', 'Resample'), 'stochasticLogisticRegressionResample': ('stochasticLogisticRegression', 'Resample'), 'quantileInterpolatedWeightedResample': ('quantileInterpolatedWeighted', 'Resample'), 'maxMapResample': ('maxMap', 'Resample'), 'theilsUResample': ('theilsU', 'Resample'), 'last_valueResample': ('last_value', 'Resample'), 'argMaxResample': ('argMax', 'Resample'), 'quantilesTDigestResample': ('quantilesTDigest', 'Resample'), 'kurtPopResample': ('kurtPop', 'Resample'), 'groupBitXorResample': ('groupBitXor', 'Resample'), 'groupArrayMovingAvgResample': ('groupArrayMovingAvg', 'Resample'), 'medianResample': ('median', 'Resample'), 'groupUniqArrayResample': ('groupUniqArray', 'Resample'), 'cramersVBiasCorrectedResample': ('cramersVBiasCorrected', 'Resample'), 'groupBitmapResample': ('groupBitmap', 'Resample'), 'sequenceNextNodeResample': ('sequenceNextNode', 'Resample'), 'deltaSumResample': ('deltaSum', 'Resample'), 'anyHeavyResample': ('anyHeavy', 'Resample'), 'quantileBFloat16Resample': ('quantileBFloat16', 'Resample'), 'uniqHLL12Resample': ('uniqHLL12', 'Resample'), 'groupConcatResample': ('groupConcat', 'Resample'), 'simpleLinearRegressionResample': ('simpleLinearRegression', 'Resample'), 'stddevPopResample': ('stddevPop', 'Resample'), 'sumKahanResample': ('sumKahan', 'Resample'), 'contingencyResample': ('contingency', 'Resample'), 'minMapResample': ('minMap', 'Resample'), 'avgResample': ('avg', 'Resample'), 'quantilesExactWeightedResample': ('quantilesExactWeighted', 'Resample'), 'quantilesTimingResample': ('quantilesTiming', 'Resample'), 'uniqThetaResample': ('uniqTheta', 'Resample'), 'exponentialMovingAverageResample': ('exponentialMovingAverage', 'Resample'), 'quantilesBFloat16WeightedResample': ('quantilesBFloat16Weighted', 'Resample'), 'intervalLengthSumResample': ('intervalLengthSum', 'Resample'), 'uniqCombined64Resample': ('uniqCombined64', 'Resample'), 'anyResample': ('any', 'Resample'), 'uniqCombinedResample': ('uniqCombined', 'Resample'), 'avgWeightedResample': ('avgWeighted', 'Resample'), 'quantileTimingResample': ('quantileTiming', 'Resample'), 'uniqUpToResample': ('uniqUpTo', 'Resample'), 'minResample': ('min', 'Resample'), 'anyLastResample': ('anyLast', 'Resample'), 'skewSampResample': ('skewSamp', 'Resample'), 'kurtSampResample': ('kurtSamp', 'Resample'), 'groupArraySampleResample': ('groupArraySample', 'Resample'), 'topKResample': ('topK', 'Resample'), 'sumResample': ('sum', 'Resample'), 'sumMapResample': ('sumMap', 'Resample'), 'quantilesExactHighResample': ('quantilesExactHigh', 'Resample'), 'quantilesExactLowResample': ('quantilesExactLow', 'Resample'), 'quantileExactWeightedResample': ('quantileExactWeighted', 'Resample'), 'sumCountResample': ('sumCount', 'Resample'), 'rankCorrResample': ('rankCorr', 'Resample'), 'quantilesGKResample': ('quantilesGK', 'Resample'), 'uniqExactResample': ('uniqExact', 'Resample'), 'groupArrayLastResample': ('groupArrayLast', 'Resample'), 'windowFunnelResample': ('windowFunnel', 'Resample'), 'maxIntersectionsResample': ('maxIntersections', 'Resample'), 'corrResample': ('corr', 'Resample'), 'sumWithOverflowResample': ('sumWithOverflow', 'Resample'), 'quantilesBFloat16Resample': ('quantilesBFloat16', 'Resample'), 'quantileExactResample': ('quantileExact', 'Resample'), 'entropyResample': ('entropy', 'Resample'), 'quantilesInterpolatedWeightedResample': ('quantilesInterpolatedWeighted', 'Resample'), 'quantilesResample': ('quantiles', 'Resample'), 'stochasticLinearRegressionResample': ('stochasticLinearRegression', 'Resample'), 'mannWhitneyUTestResample': ('mannWhitneyUTest', 'Resample'), 'quantilesTimingWeightedResample': ('quantilesTimingWeighted', 'Resample'), 'covarSampResample': ('covarSamp', 'Resample'), 'varPopResample': ('varPop', 'Resample'), 'sequenceMatchResample': ('sequenceMatch', 'Resample'), 'meanZTestResample': ('meanZTest', 'Resample'), 'approx_top_sumResample': ('approx_top_sum', 'Resample'), 'boundingRatioResample': ('boundingRatio', 'Resample'), 'kolmogorovSmirnovTestResample': ('kolmogorovSmirnovTest', 'Resample'), 'covarPopResample': ('covarPop', 'Resample'), 'quantileGKResample': ('quantileGK', 'Resample'), 'stddevSampResample': ('stddevSamp', 'Resample'), 'sparkBarResample': ('sparkBar', 'Resample'), 'quantileExactHighResample': ('quantileExactHigh', 'Resample'), 'quantilesExactResample': ('quantilesExact', 'Resample'), 'uniqResample': ('uniq', 'Resample'), 'groupArrayInsertAtResample': ('groupArrayInsertAt', 'Resample'), 'quantilesDeterministicResample': ('quantilesDeterministic', 'Resample'), 'quantilesTDigestWeightedResample': ('quantilesTDigestWeighted', 'Resample'), 'quantileDeterministicResample': ('quantileDeterministic', 'Resample'), 'retentionResample': ('retention', 'Resample'), 'groupBitmapXorResample': ('groupBitmapXor', 'Resample'), 'quantilesExactExclusiveResample': ('quantilesExactExclusive', 'Resample'), 'groupArrayMovingSumResample': ('groupArrayMovingSum', 'Resample'), 'quantileBFloat16WeightedResample': ('quantileBFloat16Weighted', 'Resample'), 'first_valueResample': ('first_value', 'Resample'), 'studentTTestResample': ('studentTTest', 'Resample'), 'topKWeightedResample': ('topKWeighted', 'Resample'), 'quantileTDigestWeightedResample': ('quantileTDigestWeighted', 'Resample'), 'categoricalInformationValueResample': ('categoricalInformationValue', 'Resample'), 'sequenceCountResample': ('sequenceCount', 'Resample'), 'groupBitAndResample': ('groupBitAnd', 'Resample'), 'largestTriangleThreeBucketsResample': ('largestTriangleThreeBuckets', 'Resample'), 'groupBitOrResample': ('groupBitOr', 'Resample'), 'groupBitmapOrResample': ('groupBitmapOr', 'Resample'), 'deltaSumTimestampResample': ('deltaSumTimestamp', 'Resample'), 'argMinResample': ('argMin', 'Resample'), 'groupBitmapAndResample': ('groupBitmapAnd', 'Resample'), 'varSampResample': ('varSamp', 'Resample'), 'exponentialTimeDecayedAvgResample': ('exponentialTimeDecayedAvg', 'Resample'), 'maxResample': ('max', 'Resample'), 'quantileExactLowResample': ('quantileExactLow', 'Resample'), 'maxIntersectionsPositionResample': ('maxIntersectionsPosition', 'Resample'), 'groupArrayResample': ('groupArray', 'Resample'), 'quantileResample': ('quantile', 'Resample'), 'welchTTestArrayIf': ('welchTTest', 'ArrayIf'), 'histogramArrayIf': ('histogram', 'ArrayIf'), 'countArrayIf': ('count', 'ArrayIf'), 'quantileTimingWeightedArrayIf': ('quantileTimingWeighted', 'ArrayIf'), 'cramersVArrayIf': ('cramersV', 'ArrayIf'), 'skewPopArrayIf': ('skewPop', 'ArrayIf'), 'quantileTDigestArrayIf': ('quantileTDigest', 'ArrayIf'), 'stochasticLogisticRegressionArrayIf': ('stochasticLogisticRegression', 'ArrayIf'), 'quantileInterpolatedWeightedArrayIf': ('quantileInterpolatedWeighted', 'ArrayIf'), 'maxMapArrayIf': ('maxMap', 'ArrayIf'), 'theilsUArrayIf': ('theilsU', 'ArrayIf'), 'last_valueArrayIf': ('last_value', 'ArrayIf'), 'argMaxArrayIf': ('argMax', 'ArrayIf'), 'quantilesTDigestArrayIf': ('quantilesTDigest', 'ArrayIf'), 'kurtPopArrayIf': ('kurtPop', 'ArrayIf'), 'groupBitXorArrayIf': ('groupBitXor', 'ArrayIf'), 'groupArrayMovingAvgArrayIf': ('groupArrayMovingAvg', 'ArrayIf'), 'medianArrayIf': ('median', 'ArrayIf'), 'groupUniqArrayArrayIf': ('groupUniqArray', 'ArrayIf'), 'cramersVBiasCorrectedArrayIf': ('cramersVBiasCorrected', 'ArrayIf'), 'groupBitmapArrayIf': ('groupBitmap', 'ArrayIf'), 'sequenceNextNodeArrayIf': ('sequenceNextNode', 'ArrayIf'), 'deltaSumArrayIf': ('deltaSum', 'ArrayIf'), 'anyHeavyArrayIf': ('anyHeavy', 'ArrayIf'), 'quantileBFloat16ArrayIf': ('quantileBFloat16', 'ArrayIf'), 'uniqHLL12ArrayIf': ('uniqHLL12', 'ArrayIf'), 'groupConcatArrayIf': ('groupConcat', 'ArrayIf'), 'simpleLinearRegressionArrayIf': ('simpleLinearRegression', 'ArrayIf'), 'stddevPopArrayIf': ('stddevPop', 'ArrayIf'), 'sumKahanArrayIf': ('sumKahan', 'ArrayIf'), 'contingencyArrayIf': ('contingency', 'ArrayIf'), 'minMapArrayIf': ('minMap', 'ArrayIf'), 'avgArrayIf': ('avg', 'ArrayIf'), 'quantilesExactWeightedArrayIf': ('quantilesExactWeighted', 'ArrayIf'), 'quantilesTimingArrayIf': ('quantilesTiming', 'ArrayIf'), 'uniqThetaArrayIf': ('uniqTheta', 'ArrayIf'), 'exponentialMovingAverageArrayIf': ('exponentialMovingAverage', 'ArrayIf'), 'quantilesBFloat16WeightedArrayIf': ('quantilesBFloat16Weighted', 'ArrayIf'), 'intervalLengthSumArrayIf': ('intervalLengthSum', 'ArrayIf'), 'uniqCombined64ArrayIf': ('uniqCombined64', 'ArrayIf'), 'anyArrayIf': ('any', 'ArrayIf'), 'uniqCombinedArrayIf': ('uniqCombined', 'ArrayIf'), 'avgWeightedArrayIf': ('avgWeighted', 'ArrayIf'), 'quantileTimingArrayIf': ('quantileTiming', 'ArrayIf'), 'uniqUpToArrayIf': ('uniqUpTo', 'ArrayIf'), 'minArrayIf': ('min', 'ArrayIf'), 'anyLastArrayIf': ('anyLast', 'ArrayIf'), 'skewSampArrayIf': ('skewSamp', 'ArrayIf'), 'kurtSampArrayIf': ('kurtSamp', 'ArrayIf'), 'groupArraySampleArrayIf': ('groupArraySample', 'ArrayIf'), 'topKArrayIf': ('topK', 'ArrayIf'), 'sumArrayIf': ('sum', 'ArrayIf'), 'sumMapArrayIf': ('sumMap', 'ArrayIf'), 'quantilesExactHighArrayIf': ('quantilesExactHigh', 'ArrayIf'), 'quantilesExactLowArrayIf': ('quantilesExactLow', 'ArrayIf'), 'quantileExactWeightedArrayIf': ('quantileExactWeighted', 'ArrayIf'), 'sumCountArrayIf': ('sumCount', 'ArrayIf'), 'rankCorrArrayIf': ('rankCorr', 'ArrayIf'), 'quantilesGKArrayIf': ('quantilesGK', 'ArrayIf'), 'uniqExactArrayIf': ('uniqExact', 'ArrayIf'), 'groupArrayLastArrayIf': ('groupArrayLast', 'ArrayIf'), 'windowFunnelArrayIf': ('windowFunnel', 'ArrayIf'), 'maxIntersectionsArrayIf': ('maxIntersections', 'ArrayIf'), 'corrArrayIf': ('corr', 'ArrayIf'), 'sumWithOverflowArrayIf': ('sumWithOverflow', 'ArrayIf'), 'quantilesBFloat16ArrayIf': ('quantilesBFloat16', 'ArrayIf'), 'quantileExactArrayIf': ('quantileExact', 'ArrayIf'), 'entropyArrayIf': ('entropy', 'ArrayIf'), 'quantilesInterpolatedWeightedArrayIf': ('quantilesInterpolatedWeighted', 'ArrayIf'), 'quantilesArrayIf': ('quantiles', 'ArrayIf'), 'stochasticLinearRegressionArrayIf': ('stochasticLinearRegression', 'ArrayIf'), 'mannWhitneyUTestArrayIf': ('mannWhitneyUTest', 'ArrayIf'), 'quantilesTimingWeightedArrayIf': ('quantilesTimingWeighted', 'ArrayIf'), 'covarSampArrayIf': ('covarSamp', 'ArrayIf'), 'varPopArrayIf': ('varPop', 'ArrayIf'), 'sequenceMatchArrayIf': ('sequenceMatch', 'ArrayIf'), 'meanZTestArrayIf': ('meanZTest', 'ArrayIf'), 'approx_top_sumArrayIf': ('approx_top_sum', 'ArrayIf'), 'boundingRatioArrayIf': ('boundingRatio', 'ArrayIf'), 'kolmogorovSmirnovTestArrayIf': ('kolmogorovSmirnovTest', 'ArrayIf'), 'covarPopArrayIf': ('covarPop', 'ArrayIf'), 'quantileGKArrayIf': ('quantileGK', 'ArrayIf'), 'stddevSampArrayIf': ('stddevSamp', 'ArrayIf'), 'sparkBarArrayIf': ('sparkBar', 'ArrayIf'), 'quantileExactHighArrayIf': ('quantileExactHigh', 'ArrayIf'), 'quantilesExactArrayIf': ('quantilesExact', 'ArrayIf'), 'uniqArrayIf': ('uniq', 'ArrayIf'), 'groupArrayInsertAtArrayIf': ('groupArrayInsertAt', 'ArrayIf'), 'quantilesDeterministicArrayIf': ('quantilesDeterministic', 'ArrayIf'), 'quantilesTDigestWeightedArrayIf': ('quantilesTDigestWeighted', 'ArrayIf'), 'quantileDeterministicArrayIf': ('quantileDeterministic', 'ArrayIf'), 'retentionArrayIf': ('retention', 'ArrayIf'), 'groupBitmapXorArrayIf': ('groupBitmapXor', 'ArrayIf'), 'quantilesExactExclusiveArrayIf': ('quantilesExactExclusive', 'ArrayIf'), 'groupArrayMovingSumArrayIf': ('groupArrayMovingSum', 'ArrayIf'), 'quantileBFloat16WeightedArrayIf': ('quantileBFloat16Weighted', 'ArrayIf'), 'first_valueArrayIf': ('first_value', 'ArrayIf'), 'studentTTestArrayIf': ('studentTTest', 'ArrayIf'), 'topKWeightedArrayIf': ('topKWeighted', 'ArrayIf'), 'quantileTDigestWeightedArrayIf': ('quantileTDigestWeighted', 'ArrayIf'), 'categoricalInformationValueArrayIf': ('categoricalInformationValue', 'ArrayIf'), 'sequenceCountArrayIf': ('sequenceCount', 'ArrayIf'), 'groupBitAndArrayIf': ('groupBitAnd', 'ArrayIf'), 'largestTriangleThreeBucketsArrayIf': ('largestTriangleThreeBuckets', 'ArrayIf'), 'groupBitOrArrayIf': ('groupBitOr', 'ArrayIf'), 'groupBitmapOrArrayIf': ('groupBitmapOr', 'ArrayIf'), 'deltaSumTimestampArrayIf': ('deltaSumTimestamp', 'ArrayIf'), 'argMinArrayIf': ('argMin', 'ArrayIf'), 'groupBitmapAndArrayIf': ('groupBitmapAnd', 'ArrayIf'), 'varSampArrayIf': ('varSamp', 'ArrayIf'), 'exponentialTimeDecayedAvgArrayIf': ('exponentialTimeDecayedAvg', 'ArrayIf'), 'maxArrayIf': ('max', 'ArrayIf'), 'quantileExactLowArrayIf': ('quantileExactLow', 'ArrayIf'), 'maxIntersectionsPositionArrayIf': ('maxIntersectionsPosition', 'ArrayIf'), 'groupArrayArrayIf': ('groupArray', 'ArrayIf'), 'quantileArrayIf': ('quantile', 'ArrayIf'), 'welchTTestForEach': ('welchTTest', 'ForEach'), 'histogramForEach': ('histogram', 'ForEach'), 'countForEach': ('count', 'ForEach'), 'quantileTimingWeightedForEach': ('quantileTimingWeighted', 'ForEach'), 'cramersVForEach': ('cramersV', 'ForEach'), 'skewPopForEach': ('skewPop', 'ForEach'), 'quantileTDigestForEach': ('quantileTDigest', 'ForEach'), 'stochasticLogisticRegressionForEach': ('stochasticLogisticRegression', 'ForEach'), 'quantileInterpolatedWeightedForEach': ('quantileInterpolatedWeighted', 'ForEach'), 'maxMapForEach': ('maxMap', 'ForEach'), 'theilsUForEach': ('theilsU', 'ForEach'), 'last_valueForEach': ('last_value', 'ForEach'), 'argMaxForEach': ('argMax', 'ForEach'), 'quantilesTDigestForEach': ('quantilesTDigest', 'ForEach'), 'kurtPopForEach': ('kurtPop', 'ForEach'), 'groupBitXorForEach': ('groupBitXor', 'ForEach'), 'groupArrayMovingAvgForEach': ('groupArrayMovingAvg', 'ForEach'), 'medianForEach': ('median', 'ForEach'), 'groupUniqArrayForEach': ('groupUniqArray', 'ForEach'), 'cramersVBiasCorrectedForEach': ('cramersVBiasCorrected', 'ForEach'), 'groupBitmapForEach': ('groupBitmap', 'ForEach'), 'sequenceNextNodeForEach': ('sequenceNextNode', 'ForEach'), 'deltaSumForEach': ('deltaSum', 'ForEach'), 'anyHeavyForEach': ('anyHeavy', 'ForEach'), 'quantileBFloat16ForEach': ('quantileBFloat16', 'ForEach'), 'uniqHLL12ForEach': ('uniqHLL12', 'ForEach'), 'groupConcatForEach': ('groupConcat', 'ForEach'), 'simpleLinearRegressionForEach': ('simpleLinearRegression', 'ForEach'), 'stddevPopForEach': ('stddevPop', 'ForEach'), 'sumKahanForEach': ('sumKahan', 'ForEach'), 'contingencyForEach': ('contingency', 'ForEach'), 'minMapForEach': ('minMap', 'ForEach'), 'avgForEach': ('avg', 'ForEach'), 'quantilesExactWeightedForEach': ('quantilesExactWeighted', 'ForEach'), 'quantilesTimingForEach': ('quantilesTiming', 'ForEach'), 'uniqThetaForEach': ('uniqTheta', 'ForEach'), 'exponentialMovingAverageForEach': ('exponentialMovingAverage', 'ForEach'), 'quantilesBFloat16WeightedForEach': ('quantilesBFloat16Weighted', 'ForEach'), 'intervalLengthSumForEach': ('intervalLengthSum', 'ForEach'), 'uniqCombined64ForEach': ('uniqCombined64', 'ForEach'), 'anyForEach': ('any', 'ForEach'), 'uniqCombinedForEach': ('uniqCombined', 'ForEach'), 'avgWeightedForEach': ('avgWeighted', 'ForEach'), 'quantileTimingForEach': ('quantileTiming', 'ForEach'), 'uniqUpToForEach': ('uniqUpTo', 'ForEach'), 'minForEach': ('min', 'ForEach'), 'anyLastForEach': ('anyLast', 'ForEach'), 'skewSampForEach': ('skewSamp', 'ForEach'), 'kurtSampForEach': ('kurtSamp', 'ForEach'), 'groupArraySampleForEach': ('groupArraySample', 'ForEach'), 'topKForEach': ('topK', 'ForEach'), 'sumForEach': ('sum', 'ForEach'), 'sumMapForEach': ('sumMap', 'ForEach'), 'quantilesExactHighForEach': ('quantilesExactHigh', 'ForEach'), 'quantilesExactLowForEach': ('quantilesExactLow', 'ForEach'), 'quantileExactWeightedForEach': ('quantileExactWeighted', 'ForEach'), 'sumCountForEach': ('sumCount', 'ForEach'), 'rankCorrForEach': ('rankCorr', 'ForEach'), 'quantilesGKForEach': ('quantilesGK', 'ForEach'), 'uniqExactForEach': ('uniqExact', 'ForEach'), 'groupArrayLastForEach': ('groupArrayLast', 'ForEach'), 'windowFunnelForEach': ('windowFunnel', 'ForEach'), 'maxIntersectionsForEach': ('maxIntersections', 'ForEach'), 'corrForEach': ('corr', 'ForEach'), 'sumWithOverflowForEach': ('sumWithOverflow', 'ForEach'), 'quantilesBFloat16ForEach': ('quantilesBFloat16', 'ForEach'), 'quantileExactForEach': ('quantileExact', 'ForEach'), 'entropyForEach': ('entropy', 'ForEach'), 'quantilesInterpolatedWeightedForEach': ('quantilesInterpolatedWeighted', 'ForEach'), 'quantilesForEach': ('quantiles', 'ForEach'), 'stochasticLinearRegressionForEach': ('stochasticLinearRegression', 'ForEach'), 'mannWhitneyUTestForEach': ('mannWhitneyUTest', 'ForEach'), 'quantilesTimingWeightedForEach': ('quantilesTimingWeighted', 'ForEach'), 'covarSampForEach': ('covarSamp', 'ForEach'), 'varPopForEach': ('varPop', 'ForEach'), 'sequenceMatchForEach': ('sequenceMatch', 'ForEach'), 'meanZTestForEach': ('meanZTest', 'ForEach'), 'approx_top_sumForEach': ('approx_top_sum', 'ForEach'), 'boundingRatioForEach': ('boundingRatio', 'ForEach'), 'kolmogorovSmirnovTestForEach': ('kolmogorovSmirnovTest', 'ForEach'), 'covarPopForEach': ('covarPop', 'ForEach'), 'quantileGKForEach': ('quantileGK', 'ForEach'), 'stddevSampForEach': ('stddevSamp', 'ForEach'), 'sparkBarForEach': ('sparkBar', 'ForEach'), 'quantileExactHighForEach': ('quantileExactHigh', 'ForEach'), 'quantilesExactForEach': ('quantilesExact', 'ForEach'), 'uniqForEach': ('uniq', 'ForEach'), 'groupArrayInsertAtForEach': ('groupArrayInsertAt', 'ForEach'), 'quantilesDeterministicForEach': ('quantilesDeterministic', 'ForEach'), 'quantilesTDigestWeightedForEach': ('quantilesTDigestWeighted', 'ForEach'), 'quantileDeterministicForEach': ('quantileDeterministic', 'ForEach'), 'retentionForEach': ('retention', 'ForEach'), 'groupBitmapXorForEach': ('groupBitmapXor', 'ForEach'), 'quantilesExactExclusiveForEach': ('quantilesExactExclusive', 'ForEach'), 'groupArrayMovingSumForEach': ('groupArrayMovingSum', 'ForEach'), 'quantileBFloat16WeightedForEach': ('quantileBFloat16Weighted', 'ForEach'), 'first_valueForEach': ('first_value', 'ForEach'), 'studentTTestForEach': ('studentTTest', 'ForEach'), 'topKWeightedForEach': ('topKWeighted', 'ForEach'), 'quantileTDigestWeightedForEach': ('quantileTDigestWeighted', 'ForEach'), 'categoricalInformationValueForEach': ('categoricalInformationValue', 'ForEach'), 'sequenceCountForEach': ('sequenceCount', 'ForEach'), 'groupBitAndForEach': ('groupBitAnd', 'ForEach'), 'largestTriangleThreeBucketsForEach': ('largestTriangleThreeBuckets', 'ForEach'), 'groupBitOrForEach': ('groupBitOr', 'ForEach'), 'groupBitmapOrForEach': ('groupBitmapOr', 'ForEach'), 'deltaSumTimestampForEach': ('deltaSumTimestamp', 'ForEach'), 'argMinForEach': ('argMin', 'ForEach'), 'groupBitmapAndForEach': ('groupBitmapAnd', 'ForEach'), 'varSampForEach': ('varSamp', 'ForEach'), 'exponentialTimeDecayedAvgForEach': ('exponentialTimeDecayedAvg', 'ForEach'), 'maxForEach': ('max', 'ForEach'), 'quantileExactLowForEach': ('quantileExactLow', 'ForEach'), 'maxIntersectionsPositionForEach': ('maxIntersectionsPosition', 'ForEach'), 'groupArrayForEach': ('groupArray', 'ForEach'), 'quantileForEach': ('quantile', 'ForEach'), 'welchTTestOrNull': ('welchTTest', 'OrNull'), 'histogramOrNull': ('histogram', 'OrNull'), 'countOrNull': ('count', 'OrNull'), 'quantileTimingWeightedOrNull': ('quantileTimingWeighted', 'OrNull'), 'cramersVOrNull': ('cramersV', 'OrNull'), 'skewPopOrNull': ('skewPop', 'OrNull'), 'quantileTDigestOrNull': ('quantileTDigest', 'OrNull'), 'stochasticLogisticRegressionOrNull': ('stochasticLogisticRegression', 'OrNull'), 'quantileInterpolatedWeightedOrNull': ('quantileInterpolatedWeighted', 'OrNull'), 'maxMapOrNull': ('maxMap', 'OrNull'), 'theilsUOrNull': ('theilsU', 'OrNull'), 'last_valueOrNull': ('last_value', 'OrNull'), 'argMaxOrNull': ('argMax', 'OrNull'), 'quantilesTDigestOrNull': ('quantilesTDigest', 'OrNull'), 'kurtPopOrNull': ('kurtPop', 'OrNull'), 'groupBitXorOrNull': ('groupBitXor', 'OrNull'), 'groupArrayMovingAvgOrNull': ('groupArrayMovingAvg', 'OrNull'), 'medianOrNull': ('median', 'OrNull'), 'groupUniqArrayOrNull': ('groupUniqArray', 'OrNull'), 'cramersVBiasCorrectedOrNull': ('cramersVBiasCorrected', 'OrNull'), 'groupBitmapOrNull': ('groupBitmap', 'OrNull'), 'sequenceNextNodeOrNull': ('sequenceNextNode', 'OrNull'), 'deltaSumOrNull': ('deltaSum', 'OrNull'), 'anyHeavyOrNull': ('anyHeavy', 'OrNull'), 'quantileBFloat16OrNull': ('quantileBFloat16', 'OrNull'), 'uniqHLL12OrNull': ('uniqHLL12', 'OrNull'), 'groupConcatOrNull': ('groupConcat', 'OrNull'), 'simpleLinearRegressionOrNull': ('simpleLinearRegression', 'OrNull'), 'stddevPopOrNull': ('stddevPop', 'OrNull'), 'sumKahanOrNull': ('sumKahan', 'OrNull'), 'contingencyOrNull': ('contingency', 'OrNull'), 'minMapOrNull': ('minMap', 'OrNull'), 'avgOrNull': ('avg', 'OrNull'), 'quantilesExactWeightedOrNull': ('quantilesExactWeighted', 'OrNull'), 'quantilesTimingOrNull': ('quantilesTiming', 'OrNull'), 'uniqThetaOrNull': ('uniqTheta', 'OrNull'), 'exponentialMovingAverageOrNull': ('exponentialMovingAverage', 'OrNull'), 'quantilesBFloat16WeightedOrNull': ('quantilesBFloat16Weighted', 'OrNull'), 'intervalLengthSumOrNull': ('intervalLengthSum', 'OrNull'), 'uniqCombined64OrNull': ('uniqCombined64', 'OrNull'), 'anyOrNull': ('any', 'OrNull'), 'uniqCombinedOrNull': ('uniqCombined', 'OrNull'), 'avgWeightedOrNull': ('avgWeighted', 'OrNull'), 'quantileTimingOrNull': ('quantileTiming', 'OrNull'), 'uniqUpToOrNull': ('uniqUpTo', 'OrNull'), 'minOrNull': ('min', 'OrNull'), 'anyLastOrNull': ('anyLast', 'OrNull'), 'skewSampOrNull': ('skewSamp', 'OrNull'), 'kurtSampOrNull': ('kurtSamp', 'OrNull'), 'groupArraySampleOrNull': ('groupArraySample', 'OrNull'), 'topKOrNull': ('topK', 'OrNull'), 'sumOrNull': ('sum', 'OrNull'), 'sumMapOrNull': ('sumMap', 'OrNull'), 'quantilesExactHighOrNull': ('quantilesExactHigh', 'OrNull'), 'quantilesExactLowOrNull': ('quantilesExactLow', 'OrNull'), 'quantileExactWeightedOrNull': ('quantileExactWeighted', 'OrNull'), 'sumCountOrNull': ('sumCount', 'OrNull'), 'rankCorrOrNull': ('rankCorr', 'OrNull'), 'quantilesGKOrNull': ('quantilesGK', 'OrNull'), 'uniqExactOrNull': ('uniqExact', 'OrNull'), 'groupArrayLastOrNull': ('groupArrayLast', 'OrNull'), 'windowFunnelOrNull': ('windowFunnel', 'OrNull'), 'maxIntersectionsOrNull': ('maxIntersections', 'OrNull'), 'corrOrNull': ('corr', 'OrNull'), 'sumWithOverflowOrNull': ('sumWithOverflow', 'OrNull'), 'quantilesBFloat16OrNull': ('quantilesBFloat16', 'OrNull'), 'quantileExactOrNull': ('quantileExact', 'OrNull'), 'entropyOrNull': ('entropy', 'OrNull'), 'quantilesInterpolatedWeightedOrNull': ('quantilesInterpolatedWeighted', 'OrNull'), 'quantilesOrNull': ('quantiles', 'OrNull'), 'stochasticLinearRegressionOrNull': ('stochasticLinearRegression', 'OrNull'), 'mannWhitneyUTestOrNull': ('mannWhitneyUTest', 'OrNull'), 'quantilesTimingWeightedOrNull': ('quantilesTimingWeighted', 'OrNull'), 'covarSampOrNull': ('covarSamp', 'OrNull'), 'varPopOrNull': ('varPop', 'OrNull'), 'sequenceMatchOrNull': ('sequenceMatch', 'OrNull'), 'meanZTestOrNull': ('meanZTest', 'OrNull'), 'approx_top_sumOrNull': ('approx_top_sum', 'OrNull'), 'boundingRatioOrNull': ('boundingRatio', 'OrNull'), 'kolmogorovSmirnovTestOrNull': ('kolmogorovSmirnovTest', 'OrNull'), 'covarPopOrNull': ('covarPop', 'OrNull'), 'quantileGKOrNull': ('quantileGK', 'OrNull'), 'stddevSampOrNull': ('stddevSamp', 'OrNull'), 'sparkBarOrNull': ('sparkBar', 'OrNull'), 'quantileExactHighOrNull': ('quantileExactHigh', 'OrNull'), 'quantilesExactOrNull': ('quantilesExact', 'OrNull'), 'uniqOrNull': ('uniq', 'OrNull'), 'groupArrayInsertAtOrNull': ('groupArrayInsertAt', 'OrNull'), 'quantilesDeterministicOrNull': ('quantilesDeterministic', 'OrNull'), 'quantilesTDigestWeightedOrNull': ('quantilesTDigestWeighted', 'OrNull'), 'quantileDeterministicOrNull': ('quantileDeterministic', 'OrNull'), 'retentionOrNull': ('retention', 'OrNull'), 'groupBitmapXorOrNull': ('groupBitmapXor', 'OrNull'), 'quantilesExactExclusiveOrNull': ('quantilesExactExclusive', 'OrNull'), 'groupArrayMovingSumOrNull': ('groupArrayMovingSum', 'OrNull'), 'quantileBFloat16WeightedOrNull': ('quantileBFloat16Weighted', 'OrNull'), 'first_valueOrNull': ('first_value', 'OrNull'), 'studentTTestOrNull': ('studentTTest', 'OrNull'), 'topKWeightedOrNull': ('topKWeighted', 'OrNull'), 'quantileTDigestWeightedOrNull': ('quantileTDigestWeighted', 'OrNull'), 'categoricalInformationValueOrNull': ('categoricalInformationValue', 'OrNull'), 'sequenceCountOrNull': ('sequenceCount', 'OrNull'), 'groupBitAndOrNull': ('groupBitAnd', 'OrNull'), 'largestTriangleThreeBucketsOrNull': ('largestTriangleThreeBuckets', 'OrNull'), 'groupBitOrOrNull': ('groupBitOr', 'OrNull'), 'groupBitmapOrOrNull': ('groupBitmapOr', 'OrNull'), 'deltaSumTimestampOrNull': ('deltaSumTimestamp', 'OrNull'), 'argMinOrNull': ('argMin', 'OrNull'), 'groupBitmapAndOrNull': ('groupBitmapAnd', 'OrNull'), 'varSampOrNull': ('varSamp', 'OrNull'), 'exponentialTimeDecayedAvgOrNull': ('exponentialTimeDecayedAvg', 'OrNull'), 'maxOrNull': ('max', 'OrNull'), 'quantileExactLowOrNull': ('quantileExactLow', 'OrNull'), 'maxIntersectionsPositionOrNull': ('maxIntersectionsPosition', 'OrNull'), 'groupArrayOrNull': ('groupArray', 'OrNull'), 'quantileOrNull': ('quantile', 'OrNull'), 'welchTTestArgMin': ('welchTTest', 'ArgMin'), 'histogramArgMin': ('histogram', 'ArgMin'), 'countArgMin': ('count', 'ArgMin'), 'quantileTimingWeightedArgMin': ('quantileTimingWeighted', 'ArgMin'), 'cramersVArgMin': ('cramersV', 'ArgMin'), 'skewPopArgMin': ('skewPop', 'ArgMin'), 'quantileTDigestArgMin': ('quantileTDigest', 'ArgMin'), 'stochasticLogisticRegressionArgMin': ('stochasticLogisticRegression', 'ArgMin'), 'quantileInterpolatedWeightedArgMin': ('quantileInterpolatedWeighted', 'ArgMin'), 'maxMapArgMin': ('maxMap', 'ArgMin'), 'theilsUArgMin': ('theilsU', 'ArgMin'), 'last_valueArgMin': ('last_value', 'ArgMin'), 'argMaxArgMin': ('argMax', 'ArgMin'), 'quantilesTDigestArgMin': ('quantilesTDigest', 'ArgMin'), 'kurtPopArgMin': ('kurtPop', 'ArgMin'), 'groupBitXorArgMin': ('groupBitXor', 'ArgMin'), 'groupArrayMovingAvgArgMin': ('groupArrayMovingAvg', 'ArgMin'), 'medianArgMin': ('median', 'ArgMin'), 'groupUniqArrayArgMin': ('groupUniqArray', 'ArgMin'), 'cramersVBiasCorrectedArgMin': ('cramersVBiasCorrected', 'ArgMin'), 'groupBitmapArgMin': ('groupBitmap', 'ArgMin'), 'sequenceNextNodeArgMin': ('sequenceNextNode', 'ArgMin'), 'deltaSumArgMin': ('deltaSum', 'ArgMin'), 'anyHeavyArgMin': ('anyHeavy', 'ArgMin'), 'quantileBFloat16ArgMin': ('quantileBFloat16', 'ArgMin'), 'uniqHLL12ArgMin': ('uniqHLL12', 'ArgMin'), 'groupConcatArgMin': ('groupConcat', 'ArgMin'), 'simpleLinearRegressionArgMin': ('simpleLinearRegression', 'ArgMin'), 'stddevPopArgMin': ('stddevPop', 'ArgMin'), 'sumKahanArgMin': ('sumKahan', 'ArgMin'), 'contingencyArgMin': ('contingency', 'ArgMin'), 'minMapArgMin': ('minMap', 'ArgMin'), 'avgArgMin': ('avg', 'ArgMin'), 'quantilesExactWeightedArgMin': ('quantilesExactWeighted', 'ArgMin'), 'quantilesTimingArgMin': ('quantilesTiming', 'ArgMin'), 'uniqThetaArgMin': ('uniqTheta', 'ArgMin'), 'exponentialMovingAverageArgMin': ('exponentialMovingAverage', 'ArgMin'), 'quantilesBFloat16WeightedArgMin': ('quantilesBFloat16Weighted', 'ArgMin'), 'intervalLengthSumArgMin': ('intervalLengthSum', 'ArgMin'), 'uniqCombined64ArgMin': ('uniqCombined64', 'ArgMin'), 'anyArgMin': ('any', 'ArgMin'), 'uniqCombinedArgMin': ('uniqCombined', 'ArgMin'), 'avgWeightedArgMin': ('avgWeighted', 'ArgMin'), 'quantileTimingArgMin': ('quantileTiming', 'ArgMin'), 'uniqUpToArgMin': ('uniqUpTo', 'ArgMin'), 'minArgMin': ('min', 'ArgMin'), 'anyLastArgMin': ('anyLast', 'ArgMin'), 'skewSampArgMin': ('skewSamp', 'ArgMin'), 'kurtSampArgMin': ('kurtSamp', 'ArgMin'), 'groupArraySampleArgMin': ('groupArraySample', 'ArgMin'), 'topKArgMin': ('topK', 'ArgMin'), 'sumArgMin': ('sum', 'ArgMin'), 'sumMapArgMin': ('sumMap', 'ArgMin'), 'quantilesExactHighArgMin': ('quantilesExactHigh', 'ArgMin'), 'quantilesExactLowArgMin': ('quantilesExactLow', 'ArgMin'), 'quantileExactWeightedArgMin': ('quantileExactWeighted', 'ArgMin'), 'sumCountArgMin': ('sumCount', 'ArgMin'), 'rankCorrArgMin': ('rankCorr', 'ArgMin'), 'quantilesGKArgMin': ('quantilesGK', 'ArgMin'), 'uniqExactArgMin': ('uniqExact', 'ArgMin'), 'groupArrayLastArgMin': ('groupArrayLast', 'ArgMin'), 'windowFunnelArgMin': ('windowFunnel', 'ArgMin'), 'maxIntersectionsArgMin': ('maxIntersections', 'ArgMin'), 'corrArgMin': ('corr', 'ArgMin'), 'sumWithOverflowArgMin': ('sumWithOverflow', 'ArgMin'), 'quantilesBFloat16ArgMin': ('quantilesBFloat16', 'ArgMin'), 'quantileExactArgMin': ('quantileExact', 'ArgMin'), 'entropyArgMin': ('entropy', 'ArgMin'), 'quantilesInterpolatedWeightedArgMin': ('quantilesInterpolatedWeighted', 'ArgMin'), 'quantilesArgMin': ('quantiles', 'ArgMin'), 'stochasticLinearRegressionArgMin': ('stochasticLinearRegression', 'ArgMin'), 'mannWhitneyUTestArgMin': ('mannWhitneyUTest', 'ArgMin'), 'quantilesTimingWeightedArgMin': ('quantilesTimingWeighted', 'ArgMin'), 'covarSampArgMin': ('covarSamp', 'ArgMin'), 'varPopArgMin': ('varPop', 'ArgMin'), 'sequenceMatchArgMin': ('sequenceMatch', 'ArgMin'), 'meanZTestArgMin': ('meanZTest', 'ArgMin'), 'approx_top_sumArgMin': ('approx_top_sum', 'ArgMin'), 'boundingRatioArgMin': ('boundingRatio', 'ArgMin'), 'kolmogorovSmirnovTestArgMin': ('kolmogorovSmirnovTest', 'ArgMin'), 'covarPopArgMin': ('covarPop', 'ArgMin'), 'quantileGKArgMin': ('quantileGK', 'ArgMin'), 'stddevSampArgMin': ('stddevSamp', 'ArgMin'), 'sparkBarArgMin': ('sparkBar', 'ArgMin'), 'quantileExactHighArgMin': ('quantileExactHigh', 'ArgMin'), 'quantilesExactArgMin': ('quantilesExact', 'ArgMin'), 'uniqArgMin': ('uniq', 'ArgMin'), 'groupArrayInsertAtArgMin': ('groupArrayInsertAt', 'ArgMin'), 'quantilesDeterministicArgMin': ('quantilesDeterministic', 'ArgMin'), 'quantilesTDigestWeightedArgMin': ('quantilesTDigestWeighted', 'ArgMin'), 'quantileDeterministicArgMin': ('quantileDeterministic', 'ArgMin'), 'retentionArgMin': ('retention', 'ArgMin'), 'groupBitmapXorArgMin': ('groupBitmapXor', 'ArgMin'), 'quantilesExactExclusiveArgMin': ('quantilesExactExclusive', 'ArgMin'), 'groupArrayMovingSumArgMin': ('groupArrayMovingSum', 'ArgMin'), 'quantileBFloat16WeightedArgMin': ('quantileBFloat16Weighted', 'ArgMin'), 'first_valueArgMin': ('first_value', 'ArgMin'), 'studentTTestArgMin': ('studentTTest', 'ArgMin'), 'topKWeightedArgMin': ('topKWeighted', 'ArgMin'), 'quantileTDigestWeightedArgMin': ('quantileTDigestWeighted', 'ArgMin'), 'categoricalInformationValueArgMin': ('categoricalInformationValue', 'ArgMin'), 'sequenceCountArgMin': ('sequenceCount', 'ArgMin'), 'groupBitAndArgMin': ('groupBitAnd', 'ArgMin'), 'largestTriangleThreeBucketsArgMin': ('largestTriangleThreeBuckets', 'ArgMin'), 'groupBitOrArgMin': ('groupBitOr', 'ArgMin'), 'groupBitmapOrArgMin': ('groupBitmapOr', 'ArgMin'), 'deltaSumTimestampArgMin': ('deltaSumTimestamp', 'ArgMin'), 'argMinArgMin': ('argMin', 'ArgMin'), 'groupBitmapAndArgMin': ('groupBitmapAnd', 'ArgMin'), 'varSampArgMin': ('varSamp', 'ArgMin'), 'exponentialTimeDecayedAvgArgMin': ('exponentialTimeDecayedAvg', 'ArgMin'), 'maxArgMin': ('max', 'ArgMin'), 'quantileExactLowArgMin': ('quantileExactLow', 'ArgMin'), 'maxIntersectionsPositionArgMin': ('maxIntersectionsPosition', 'ArgMin'), 'groupArrayArgMin': ('groupArray', 'ArgMin'), 'quantileArgMin': ('quantile', 'ArgMin'), 'welchTTestArgMax': ('welchTTest', 'ArgMax'), 'histogramArgMax': ('histogram', 'ArgMax'), 'countArgMax': ('count', 'ArgMax'), 'quantileTimingWeightedArgMax': ('quantileTimingWeighted', 'ArgMax'), 'cramersVArgMax': ('cramersV', 'ArgMax'), 'skewPopArgMax': ('skewPop', 'ArgMax'), 'quantileTDigestArgMax': ('quantileTDigest', 'ArgMax'), 'stochasticLogisticRegressionArgMax': ('stochasticLogisticRegression', 'ArgMax'), 'quantileInterpolatedWeightedArgMax': ('quantileInterpolatedWeighted', 'ArgMax'), 'maxMapArgMax': ('maxMap', 'ArgMax'), 'theilsUArgMax': ('theilsU', 'ArgMax'), 'last_valueArgMax': ('last_value', 'ArgMax'), 'argMaxArgMax': ('argMax', 'ArgMax'), 'quantilesTDigestArgMax': ('quantilesTDigest', 'ArgMax'), 'kurtPopArgMax': ('kurtPop', 'ArgMax'), 'groupBitXorArgMax': ('groupBitXor', 'ArgMax'), 'groupArrayMovingAvgArgMax': ('groupArrayMovingAvg', 'ArgMax'), 'medianArgMax': ('median', 'ArgMax'), 'groupUniqArrayArgMax': ('groupUniqArray', 'ArgMax'), 'cramersVBiasCorrectedArgMax': ('cramersVBiasCorrected', 'ArgMax'), 'groupBitmapArgMax': ('groupBitmap', 'ArgMax'), 'sequenceNextNodeArgMax': ('sequenceNextNode', 'ArgMax'), 'deltaSumArgMax': ('deltaSum', 'ArgMax'), 'anyHeavyArgMax': ('anyHeavy', 'ArgMax'), 'quantileBFloat16ArgMax': ('quantileBFloat16', 'ArgMax'), 'uniqHLL12ArgMax': ('uniqHLL12', 'ArgMax'), 'groupConcatArgMax': ('groupConcat', 'ArgMax'), 'simpleLinearRegressionArgMax': ('simpleLinearRegression', 'ArgMax'), 'stddevPopArgMax': ('stddevPop', 'ArgMax'), 'sumKahanArgMax': ('sumKahan', 'ArgMax'), 'contingencyArgMax': ('contingency', 'ArgMax'), 'minMapArgMax': ('minMap', 'ArgMax'), 'avgArgMax': ('avg', 'ArgMax'), 'quantilesExactWeightedArgMax': ('quantilesExactWeighted', 'ArgMax'), 'quantilesTimingArgMax': ('quantilesTiming', 'ArgMax'), 'uniqThetaArgMax': ('uniqTheta', 'ArgMax'), 'exponentialMovingAverageArgMax': ('exponentialMovingAverage', 'ArgMax'), 'quantilesBFloat16WeightedArgMax': ('quantilesBFloat16Weighted', 'ArgMax'), 'intervalLengthSumArgMax': ('intervalLengthSum', 'ArgMax'), 'uniqCombined64ArgMax': ('uniqCombined64', 'ArgMax'), 'anyArgMax': ('any', 'ArgMax'), 'uniqCombinedArgMax': ('uniqCombined', 'ArgMax'), 'avgWeightedArgMax': ('avgWeighted', 'ArgMax'), 'quantileTimingArgMax': ('quantileTiming', 'ArgMax'), 'uniqUpToArgMax': ('uniqUpTo', 'ArgMax'), 'minArgMax': ('min', 'ArgMax'), 'anyLastArgMax': ('anyLast', 'ArgMax'), 'skewSampArgMax': ('skewSamp', 'ArgMax'), 'kurtSampArgMax': ('kurtSamp', 'ArgMax'), 'groupArraySampleArgMax': ('groupArraySample', 'ArgMax'), 'topKArgMax': ('topK', 'ArgMax'), 'sumArgMax': ('sum', 'ArgMax'), 'sumMapArgMax': ('sumMap', 'ArgMax'), 'quantilesExactHighArgMax': ('quantilesExactHigh', 'ArgMax'), 'quantilesExactLowArgMax': ('quantilesExactLow', 'ArgMax'), 'quantileExactWeightedArgMax': ('quantileExactWeighted', 'ArgMax'), 'sumCountArgMax': ('sumCount', 'ArgMax'), 'rankCorrArgMax': ('rankCorr', 'ArgMax'), 'quantilesGKArgMax': ('quantilesGK', 'ArgMax'), 'uniqExactArgMax': ('uniqExact', 'ArgMax'), 'groupArrayLastArgMax': ('groupArrayLast', 'ArgMax'), 'windowFunnelArgMax': ('windowFunnel', 'ArgMax'), 'maxIntersectionsArgMax': ('maxIntersections', 'ArgMax'), 'corrArgMax': ('corr', 'ArgMax'), 'sumWithOverflowArgMax': ('sumWithOverflow', 'ArgMax'), 'quantilesBFloat16ArgMax': ('quantilesBFloat16', 'ArgMax'), 'quantileExactArgMax': ('quantileExact', 'ArgMax'), 'entropyArgMax': ('entropy', 'ArgMax'), 'quantilesInterpolatedWeightedArgMax': ('quantilesInterpolatedWeighted', 'ArgMax'), 'quantilesArgMax': ('quantiles', 'ArgMax'), 'stochasticLinearRegressionArgMax': ('stochasticLinearRegression', 'ArgMax'), 'mannWhitneyUTestArgMax': ('mannWhitneyUTest', 'ArgMax'), 'quantilesTimingWeightedArgMax': ('quantilesTimingWeighted', 'ArgMax'), 'covarSampArgMax': ('covarSamp', 'ArgMax'), 'varPopArgMax': ('varPop', 'ArgMax'), 'sequenceMatchArgMax': ('sequenceMatch', 'ArgMax'), 'meanZTestArgMax': ('meanZTest', 'ArgMax'), 'approx_top_sumArgMax': ('approx_top_sum', 'ArgMax'), 'boundingRatioArgMax': ('boundingRatio', 'ArgMax'), 'kolmogorovSmirnovTestArgMax': ('kolmogorovSmirnovTest', 'ArgMax'), 'covarPopArgMax': ('covarPop', 'ArgMax'), 'quantileGKArgMax': ('quantileGK', 'ArgMax'), 'stddevSampArgMax': ('stddevSamp', 'ArgMax'), 'sparkBarArgMax': ('sparkBar', 'ArgMax'), 'quantileExactHighArgMax': ('quantileExactHigh', 'ArgMax'), 'quantilesExactArgMax': ('quantilesExact', 'ArgMax'), 'uniqArgMax': ('uniq', 'ArgMax'), 'groupArrayInsertAtArgMax': ('groupArrayInsertAt', 'ArgMax'), 'quantilesDeterministicArgMax': ('quantilesDeterministic', 'ArgMax'), 'quantilesTDigestWeightedArgMax': ('quantilesTDigestWeighted', 'ArgMax'), 'quantileDeterministicArgMax': ('quantileDeterministic', 'ArgMax'), 'retentionArgMax': ('retention', 'ArgMax'), 'groupBitmapXorArgMax': ('groupBitmapXor', 'ArgMax'), 'quantilesExactExclusiveArgMax': ('quantilesExactExclusive', 'ArgMax'), 'groupArrayMovingSumArgMax': ('groupArrayMovingSum', 'ArgMax'), 'quantileBFloat16WeightedArgMax': ('quantileBFloat16Weighted', 'ArgMax'), 'first_valueArgMax': ('first_value', 'ArgMax'), 'studentTTestArgMax': ('studentTTest', 'ArgMax'), 'topKWeightedArgMax': ('topKWeighted', 'ArgMax'), 'quantileTDigestWeightedArgMax': ('quantileTDigestWeighted', 'ArgMax'), 'categoricalInformationValueArgMax': ('categoricalInformationValue', 'ArgMax'), 'sequenceCountArgMax': ('sequenceCount', 'ArgMax'), 'groupBitAndArgMax': ('groupBitAnd', 'ArgMax'), 'largestTriangleThreeBucketsArgMax': ('largestTriangleThreeBuckets', 'ArgMax'), 'groupBitOrArgMax': ('groupBitOr', 'ArgMax'), 'groupBitmapOrArgMax': ('groupBitmapOr', 'ArgMax'), 'deltaSumTimestampArgMax': ('deltaSumTimestamp', 'ArgMax'), 'argMinArgMax': ('argMin', 'ArgMax'), 'groupBitmapAndArgMax': ('groupBitmapAnd', 'ArgMax'), 'varSampArgMax': ('varSamp', 'ArgMax'), 'exponentialTimeDecayedAvgArgMax': ('exponentialTimeDecayedAvg', 'ArgMax'), 'maxArgMax': ('max', 'ArgMax'), 'quantileExactLowArgMax': ('quantileExactLow', 'ArgMax'), 'maxIntersectionsPositionArgMax': ('maxIntersectionsPosition', 'ArgMax'), 'groupArrayArgMax': ('groupArray', 'ArgMax'), 'quantileArgMax': ('quantile', 'ArgMax'), 'welchTTestArray': ('welchTTest', 'Array'), 'histogramArray': ('histogram', 'Array'), 'countArray': ('count', 'Array'), 'quantileTimingWeightedArray': ('quantileTimingWeighted', 'Array'), 'cramersVArray': ('cramersV', 'Array'), 'skewPopArray': ('skewPop', 'Array'), 'quantileTDigestArray': ('quantileTDigest', 'Array'), 'stochasticLogisticRegressionArray': ('stochasticLogisticRegression', 'Array'), 'quantileInterpolatedWeightedArray': ('quantileInterpolatedWeighted', 'Array'), 'maxMapArray': ('maxMap', 'Array'), 'theilsUArray': ('theilsU', 'Array'), 'last_valueArray': ('last_value', 'Array'), 'argMaxArray': ('argMax', 'Array'), 'quantilesTDigestArray': ('quantilesTDigest', 'Array'), 'kurtPopArray': ('kurtPop', 'Array'), 'groupBitXorArray': ('groupBitXor', 'Array'), 'groupArrayMovingAvgArray': ('groupArrayMovingAvg', 'Array'), 'medianArray': ('median', 'Array'), 'groupUniqArrayArray': ('groupUniqArray', 'Array'), 'cramersVBiasCorrectedArray': ('cramersVBiasCorrected', 'Array'), 'groupBitmapArray': ('groupBitmap', 'Array'), 'sequenceNextNodeArray': ('sequenceNextNode', 'Array'), 'deltaSumArray': ('deltaSum', 'Array'), 'anyHeavyArray': ('anyHeavy', 'Array'), 'quantileBFloat16Array': ('quantileBFloat16', 'Array'), 'uniqHLL12Array': ('uniqHLL12', 'Array'), 'groupConcatArray': ('groupConcat', 'Array'), 'simpleLinearRegressionArray': ('simpleLinearRegression', 'Array'), 'stddevPopArray': ('stddevPop', 'Array'), 'sumKahanArray': ('sumKahan', 'Array'), 'contingencyArray': ('contingency', 'Array'), 'minMapArray': ('minMap', 'Array'), 'avgArray': ('avg', 'Array'), 'quantilesExactWeightedArray': ('quantilesExactWeighted', 'Array'), 'quantilesTimingArray': ('quantilesTiming', 'Array'), 'uniqThetaArray': ('uniqTheta', 'Array'), 'exponentialMovingAverageArray': ('exponentialMovingAverage', 'Array'), 'quantilesBFloat16WeightedArray': ('quantilesBFloat16Weighted', 'Array'), 'intervalLengthSumArray': ('intervalLengthSum', 'Array'), 'uniqCombined64Array': ('uniqCombined64', 'Array'), 'anyArray': ('any', 'Array'), 'uniqCombinedArray': ('uniqCombined', 'Array'), 'avgWeightedArray': ('avgWeighted', 'Array'), 'quantileTimingArray': ('quantileTiming', 'Array'), 'uniqUpToArray': ('uniqUpTo', 'Array'), 'minArray': ('min', 'Array'), 'anyLastArray': ('anyLast', 'Array'), 'skewSampArray': ('skewSamp', 'Array'), 'kurtSampArray': ('kurtSamp', 'Array'), 'groupArraySampleArray': ('groupArraySample', 'Array'), 'topKArray': ('topK', 'Array'), 'sumArray': ('sum', 'Array'), 'sumMapArray': ('sumMap', 'Array'), 'quantilesExactHighArray': ('quantilesExactHigh', 'Array'), 'quantilesExactLowArray': ('quantilesExactLow', 'Array'), 'quantileExactWeightedArray': ('quantileExactWeighted', 'Array'), 'sumCountArray': ('sumCount', 'Array'), 'rankCorrArray': ('rankCorr', 'Array'), 'quantilesGKArray': ('quantilesGK', 'Array'), 'uniqExactArray': ('uniqExact', 'Array'), 'groupArrayLastArray': ('groupArrayLast', 'Array'), 'windowFunnelArray': ('windowFunnel', 'Array'), 'maxIntersectionsArray': ('maxIntersections', 'Array'), 'corrArray': ('corr', 'Array'), 'sumWithOverflowArray': ('sumWithOverflow', 'Array'), 'quantilesBFloat16Array': ('quantilesBFloat16', 'Array'), 'quantileExactArray': ('quantileExact', 'Array'), 'entropyArray': ('entropy', 'Array'), 'quantilesInterpolatedWeightedArray': ('quantilesInterpolatedWeighted', 'Array'), 'quantilesArray': ('quantiles', 'Array'), 'stochasticLinearRegressionArray': ('stochasticLinearRegression', 'Array'), 'mannWhitneyUTestArray': ('mannWhitneyUTest', 'Array'), 'quantilesTimingWeightedArray': ('quantilesTimingWeighted', 'Array'), 'covarSampArray': ('covarSamp', 'Array'), 'varPopArray': ('varPop', 'Array'), 'sequenceMatchArray': ('sequenceMatch', 'Array'), 'meanZTestArray': ('meanZTest', 'Array'), 'approx_top_sumArray': ('approx_top_sum', 'Array'), 'boundingRatioArray': ('boundingRatio', 'Array'), 'kolmogorovSmirnovTestArray': ('kolmogorovSmirnovTest', 'Array'), 'covarPopArray': ('covarPop', 'Array'), 'quantileGKArray': ('quantileGK', 'Array'), 'stddevSampArray': ('stddevSamp', 'Array'), 'sparkBarArray': ('sparkBar', 'Array'), 'quantileExactHighArray': ('quantileExactHigh', 'Array'), 'quantilesExactArray': ('quantilesExact', 'Array'), 'uniqArray': ('uniq', 'Array'), 'groupArrayInsertAtArray': ('groupArrayInsertAt', 'Array'), 'quantilesDeterministicArray': ('quantilesDeterministic', 'Array'), 'quantilesTDigestWeightedArray': ('quantilesTDigestWeighted', 'Array'), 'quantileDeterministicArray': ('quantileDeterministic', 'Array'), 'retentionArray': ('retention', 'Array'), 'groupBitmapXorArray': ('groupBitmapXor', 'Array'), 'quantilesExactExclusiveArray': ('quantilesExactExclusive', 'Array'), 'groupArrayMovingSumArray': ('groupArrayMovingSum', 'Array'), 'quantileBFloat16WeightedArray': ('quantileBFloat16Weighted', 'Array'), 'first_valueArray': ('first_value', 'Array'), 'studentTTestArray': ('studentTTest', 'Array'), 'topKWeightedArray': ('topKWeighted', 'Array'), 'quantileTDigestWeightedArray': ('quantileTDigestWeighted', 'Array'), 'categoricalInformationValueArray': ('categoricalInformationValue', 'Array'), 'sequenceCountArray': ('sequenceCount', 'Array'), 'groupBitAndArray': ('groupBitAnd', 'Array'), 'largestTriangleThreeBucketsArray': ('largestTriangleThreeBuckets', 'Array'), 'groupBitOrArray': ('groupBitOr', 'Array'), 'groupBitmapOrArray': ('groupBitmapOr', 'Array'), 'deltaSumTimestampArray': ('deltaSumTimestamp', 'Array'), 'argMinArray': ('argMin', 'Array'), 'groupBitmapAndArray': ('groupBitmapAnd', 'Array'), 'varSampArray': ('varSamp', 'Array'), 'exponentialTimeDecayedAvgArray': ('exponentialTimeDecayedAvg', 'Array'), 'maxArray': ('max', 'Array'), 'quantileExactLowArray': ('quantileExactLow', 'Array'), 'maxIntersectionsPositionArray': ('maxIntersectionsPosition', 'Array'), 'groupArrayArray': ('groupArray', 'Array'), 'quantileArray': ('quantile', 'Array'), 'welchTTestState': ('welchTTest', 'State'), 'histogramState': ('histogram', 'State'), 'countState': ('count', 'State'), 'quantileTimingWeightedState': ('quantileTimingWeighted', 'State'), 'cramersVState': ('cramersV', 'State'), 'skewPopState': ('skewPop', 'State'), 'quantileTDigestState': ('quantileTDigest', 'State'), 'stochasticLogisticRegressionState': ('stochasticLogisticRegression', 'State'), 'quantileInterpolatedWeightedState': ('quantileInterpolatedWeighted', 'State'), 'maxMapState': ('maxMap', 'State'), 'theilsUState': ('theilsU', 'State'), 'last_valueState': ('last_value', 'State'), 'argMaxState': ('argMax', 'State'), 'quantilesTDigestState': ('quantilesTDigest', 'State'), 'kurtPopState': ('kurtPop', 'State'), 'groupBitXorState': ('groupBitXor', 'State'), 'groupArrayMovingAvgState': ('groupArrayMovingAvg', 'State'), 'medianState': ('median', 'State'), 'groupUniqArrayState': ('groupUniqArray', 'State'), 'cramersVBiasCorrectedState': ('cramersVBiasCorrected', 'State'), 'groupBitmapState': ('groupBitmap', 'State'), 'sequenceNextNodeState': ('sequenceNextNode', 'State'), 'deltaSumState': ('deltaSum', 'State'), 'anyHeavyState': ('anyHeavy', 'State'), 'quantileBFloat16State': ('quantileBFloat16', 'State'), 'uniqHLL12State': ('uniqHLL12', 'State'), 'groupConcatState': ('groupConcat', 'State'), 'simpleLinearRegressionState': ('simpleLinearRegression', 'State'), 'stddevPopState': ('stddevPop', 'State'), 'sumKahanState': ('sumKahan', 'State'), 'contingencyState': ('contingency', 'State'), 'minMapState': ('minMap', 'State'), 'avgState': ('avg', 'State'), 'quantilesExactWeightedState': ('quantilesExactWeighted', 'State'), 'quantilesTimingState': ('quantilesTiming', 'State'), 'uniqThetaState': ('uniqTheta', 'State'), 'exponentialMovingAverageState': ('exponentialMovingAverage', 'State'), 'quantilesBFloat16WeightedState': ('quantilesBFloat16Weighted', 'State'), 'intervalLengthSumState': ('intervalLengthSum', 'State'), 'uniqCombined64State': ('uniqCombined64', 'State'), 'anyState': ('any', 'State'), 'uniqCombinedState': ('uniqCombined', 'State'), 'avgWeightedState': ('avgWeighted', 'State'), 'quantileTimingState': ('quantileTiming', 'State'), 'uniqUpToState': ('uniqUpTo', 'State'), 'minState': ('min', 'State'), 'anyLastState': ('anyLast', 'State'), 'skewSampState': ('skewSamp', 'State'), 'kurtSampState': ('kurtSamp', 'State'), 'groupArraySampleState': ('groupArraySample', 'State'), 'topKState': ('topK', 'State'), 'sumState': ('sum', 'State'), 'sumMapState': ('sumMap', 'State'), 'quantilesExactHighState': ('quantilesExactHigh', 'State'), 'quantilesExactLowState': ('quantilesExactLow', 'State'), 'quantileExactWeightedState': ('quantileExactWeighted', 'State'), 'sumCountState': ('sumCount', 'State'), 'rankCorrState': ('rankCorr', 'State'), 'quantilesGKState': ('quantilesGK', 'State'), 'uniqExactState': ('uniqExact', 'State'), 'groupArrayLastState': ('groupArrayLast', 'State'), 'windowFunnelState': ('windowFunnel', 'State'), 'maxIntersectionsState': ('maxIntersections', 'State'), 'corrState': ('corr', 'State'), 'sumWithOverflowState': ('sumWithOverflow', 'State'), 'quantilesBFloat16State': ('quantilesBFloat16', 'State'), 'quantileExactState': ('quantileExact', 'State'), 'entropyState': ('entropy', 'State'), 'quantilesInterpolatedWeightedState': ('quantilesInterpolatedWeighted', 'State'), 'quantilesState': ('quantiles', 'State'), 'stochasticLinearRegressionState': ('stochasticLinearRegression', 'State'), 'mannWhitneyUTestState': ('mannWhitneyUTest', 'State'), 'quantilesTimingWeightedState': ('quantilesTimingWeighted', 'State'), 'covarSampState': ('covarSamp', 'State'), 'varPopState': ('varPop', 'State'), 'sequenceMatchState': ('sequenceMatch', 'State'), 'meanZTestState': ('meanZTest', 'State'), 'approx_top_sumState': ('approx_top_sum', 'State'), 'boundingRatioState': ('boundingRatio', 'State'), 'kolmogorovSmirnovTestState': ('kolmogorovSmirnovTest', 'State'), 'covarPopState': ('covarPop', 'State'), 'quantileGKState': ('quantileGK', 'State'), 'stddevSampState': ('stddevSamp', 'State'), 'sparkBarState': ('sparkBar', 'State'), 'quantileExactHighState': ('quantileExactHigh', 'State'), 'quantilesExactState': ('quantilesExact', 'State'), 'uniqState': ('uniq', 'State'), 'groupArrayInsertAtState': ('groupArrayInsertAt', 'State'), 'quantilesDeterministicState': ('quantilesDeterministic', 'State'), 'quantilesTDigestWeightedState': ('quantilesTDigestWeighted', 'State'), 'quantileDeterministicState': ('quantileDeterministic', 'State'), 'retentionState': ('retention', 'State'), 'groupBitmapXorState': ('groupBitmapXor', 'State'), 'quantilesExactExclusiveState': ('quantilesExactExclusive', 'State'), 'groupArrayMovingSumState': ('groupArrayMovingSum', 'State'), 'quantileBFloat16WeightedState': ('quantileBFloat16Weighted', 'State'), 'first_valueState': ('first_value', 'State'), 'studentTTestState': ('studentTTest', 'State'), 'topKWeightedState': ('topKWeighted', 'State'), 'quantileTDigestWeightedState': ('quantileTDigestWeighted', 'State'), 'categoricalInformationValueState': ('categoricalInformationValue', 'State'), 'sequenceCountState': ('sequenceCount', 'State'), 'groupBitAndState': ('groupBitAnd', 'State'), 'largestTriangleThreeBucketsState': ('largestTriangleThreeBuckets', 'State'), 'groupBitOrState': ('groupBitOr', 'State'), 'groupBitmapOrState': ('groupBitmapOr', 'State'), 'deltaSumTimestampState': ('deltaSumTimestamp', 'State'), 'argMinState': ('argMin', 'State'), 'groupBitmapAndState': ('groupBitmapAnd', 'State'), 'varSampState': ('varSamp', 'State'), 'exponentialTimeDecayedAvgState': ('exponentialTimeDecayedAvg', 'State'), 'maxState': ('max', 'State'), 'quantileExactLowState': ('quantileExactLow', 'State'), 'maxIntersectionsPositionState': ('maxIntersectionsPosition', 'State'), 'groupArrayState': ('groupArray', 'State'), 'quantileState': ('quantile', 'State'), 'welchTTestMerge': ('welchTTest', 'Merge'), 'histogramMerge': ('histogram', 'Merge'), 'countMerge': ('count', 'Merge'), 'quantileTimingWeightedMerge': ('quantileTimingWeighted', 'Merge'), 'cramersVMerge': ('cramersV', 'Merge'), 'skewPopMerge': ('skewPop', 'Merge'), 'quantileTDigestMerge': ('quantileTDigest', 'Merge'), 'stochasticLogisticRegressionMerge': ('stochasticLogisticRegression', 'Merge'), 'quantileInterpolatedWeightedMerge': ('quantileInterpolatedWeighted', 'Merge'), 'maxMapMerge': ('maxMap', 'Merge'), 'theilsUMerge': ('theilsU', 'Merge'), 'last_valueMerge': ('last_value', 'Merge'), 'argMaxMerge': ('argMax', 'Merge'), 'quantilesTDigestMerge': ('quantilesTDigest', 'Merge'), 'kurtPopMerge': ('kurtPop', 'Merge'), 'groupBitXorMerge': ('groupBitXor', 'Merge'), 'groupArrayMovingAvgMerge': ('groupArrayMovingAvg', 'Merge'), 'medianMerge': ('median', 'Merge'), 'groupUniqArrayMerge': ('groupUniqArray', 'Merge'), 'cramersVBiasCorrectedMerge': ('cramersVBiasCorrected', 'Merge'), 'groupBitmapMerge': ('groupBitmap', 'Merge'), 'sequenceNextNodeMerge': ('sequenceNextNode', 'Merge'), 'deltaSumMerge': ('deltaSum', 'Merge'), 'anyHeavyMerge': ('anyHeavy', 'Merge'), 'quantileBFloat16Merge': ('quantileBFloat16', 'Merge'), 'uniqHLL12Merge': ('uniqHLL12', 'Merge'), 'groupConcatMerge': ('groupConcat', 'Merge'), 'simpleLinearRegressionMerge': ('simpleLinearRegression', 'Merge'), 'stddevPopMerge': ('stddevPop', 'Merge'), 'sumKahanMerge': ('sumKahan', 'Merge'), 'contingencyMerge': ('contingency', 'Merge'), 'minMapMerge': ('minMap', 'Merge'), 'avgMerge': ('avg', 'Merge'), 'quantilesExactWeightedMerge': ('quantilesExactWeighted', 'Merge'), 'quantilesTimingMerge': ('quantilesTiming', 'Merge'), 'uniqThetaMerge': ('uniqTheta', 'Merge'), 'exponentialMovingAverageMerge': ('exponentialMovingAverage', 'Merge'), 'quantilesBFloat16WeightedMerge': ('quantilesBFloat16Weighted', 'Merge'), 'intervalLengthSumMerge': ('intervalLengthSum', 'Merge'), 'uniqCombined64Merge': ('uniqCombined64', 'Merge'), 'anyMerge': ('any', 'Merge'), 'uniqCombinedMerge': ('uniqCombined', 'Merge'), 'avgWeightedMerge': ('avgWeighted', 'Merge'), 'quantileTimingMerge': ('quantileTiming', 'Merge'), 'uniqUpToMerge': ('uniqUpTo', 'Merge'), 'minMerge': ('min', 'Merge'), 'anyLastMerge': ('anyLast', 'Merge'), 'skewSampMerge': ('skewSamp', 'Merge'), 'kurtSampMerge': ('kurtSamp', 'Merge'), 'groupArraySampleMerge': ('groupArraySample', 'Merge'), 'topKMerge': ('topK', 'Merge'), 'sumMerge': ('sum', 'Merge'), 'sumMapMerge': ('sumMap', 'Merge'), 'quantilesExactHighMerge': ('quantilesExactHigh', 'Merge'), 'quantilesExactLowMerge': ('quantilesExactLow', 'Merge'), 'quantileExactWeightedMerge': ('quantileExactWeighted', 'Merge'), 'sumCountMerge': ('sumCount', 'Merge'), 'rankCorrMerge': ('rankCorr', 'Merge'), 'quantilesGKMerge': ('quantilesGK', 'Merge'), 'uniqExactMerge': ('uniqExact', 'Merge'), 'groupArrayLastMerge': ('groupArrayLast', 'Merge'), 'windowFunnelMerge': ('windowFunnel', 'Merge'), 'maxIntersectionsMerge': ('maxIntersections', 'Merge'), 'corrMerge': ('corr', 'Merge'), 'sumWithOverflowMerge': ('sumWithOverflow', 'Merge'), 'quantilesBFloat16Merge': ('quantilesBFloat16', 'Merge'), 'quantileExactMerge': ('quantileExact', 'Merge'), 'entropyMerge': ('entropy', 'Merge'), 'quantilesInterpolatedWeightedMerge': ('quantilesInterpolatedWeighted', 'Merge'), 'quantilesMerge': ('quantiles', 'Merge'), 'stochasticLinearRegressionMerge': ('stochasticLinearRegression', 'Merge'), 'mannWhitneyUTestMerge': ('mannWhitneyUTest', 'Merge'), 'quantilesTimingWeightedMerge': ('quantilesTimingWeighted', 'Merge'), 'covarSampMerge': ('covarSamp', 'Merge'), 'varPopMerge': ('varPop', 'Merge'), 'sequenceMatchMerge': ('sequenceMatch', 'Merge'), 'meanZTestMerge': ('meanZTest', 'Merge'), 'approx_top_sumMerge': ('approx_top_sum', 'Merge'), 'boundingRatioMerge': ('boundingRatio', 'Merge'), 'kolmogorovSmirnovTestMerge': ('kolmogorovSmirnovTest', 'Merge'), 'covarPopMerge': ('covarPop', 'Merge'), 'quantileGKMerge': ('quantileGK', 'Merge'), 'stddevSampMerge': ('stddevSamp', 'Merge'), 'sparkBarMerge': ('sparkBar', 'Merge'), 'quantileExactHighMerge': ('quantileExactHigh', 'Merge'), 'quantilesExactMerge': ('quantilesExact', 'Merge'), 'uniqMerge': ('uniq', 'Merge'), 'groupArrayInsertAtMerge': ('groupArrayInsertAt', 'Merge'), 'quantilesDeterministicMerge': ('quantilesDeterministic', 'Merge'), 'quantilesTDigestWeightedMerge': ('quantilesTDigestWeighted', 'Merge'), 'quantileDeterministicMerge': ('quantileDeterministic', 'Merge'), 'retentionMerge': ('retention', 'Merge'), 'groupBitmapXorMerge': ('groupBitmapXor', 'Merge'), 'quantilesExactExclusiveMerge': ('quantilesExactExclusive', 'Merge'), 'groupArrayMovingSumMerge': ('groupArrayMovingSum', 'Merge'), 'quantileBFloat16WeightedMerge': ('quantileBFloat16Weighted', 'Merge'), 'first_valueMerge': ('first_value', 'Merge'), 'studentTTestMerge': ('studentTTest', 'Merge'), 'topKWeightedMerge': ('topKWeighted', 'Merge'), 'quantileTDigestWeightedMerge': ('quantileTDigestWeighted', 'Merge'), 'categoricalInformationValueMerge': ('categoricalInformationValue', 'Merge'), 'sequenceCountMerge': ('sequenceCount', 'Merge'), 'groupBitAndMerge': ('groupBitAnd', 'Merge'), 'largestTriangleThreeBucketsMerge': ('largestTriangleThreeBuckets', 'Merge'), 'groupBitOrMerge': ('groupBitOr', 'Merge'), 'groupBitmapOrMerge': ('groupBitmapOr', 'Merge'), 'deltaSumTimestampMerge': ('deltaSumTimestamp', 'Merge'), 'argMinMerge': ('argMin', 'Merge'), 'groupBitmapAndMerge': ('groupBitmapAnd', 'Merge'), 'varSampMerge': ('varSamp', 'Merge'), 'exponentialTimeDecayedAvgMerge': ('exponentialTimeDecayedAvg', 'Merge'), 'maxMerge': ('max', 'Merge'), 'quantileExactLowMerge': ('quantileExactLow', 'Merge'), 'maxIntersectionsPositionMerge': ('maxIntersectionsPosition', 'Merge'), 'groupArrayMerge': ('groupArray', 'Merge'), 'quantileMerge': ('quantile', 'Merge'), 'welchTTestMap': ('welchTTest', 'Map'), 'histogramMap': ('histogram', 'Map'), 'countMap': ('count', 'Map'), 'quantileTimingWeightedMap': ('quantileTimingWeighted', 'Map'), 'cramersVMap': ('cramersV', 'Map'), 'skewPopMap': ('skewPop', 'Map'), 'quantileTDigestMap': ('quantileTDigest', 'Map'), 'stochasticLogisticRegressionMap': ('stochasticLogisticRegression', 'Map'), 'quantileInterpolatedWeightedMap': ('quantileInterpolatedWeighted', 'Map'), 'maxMapMap': ('maxMap', 'Map'), 'theilsUMap': ('theilsU', 'Map'), 'last_valueMap': ('last_value', 'Map'), 'argMaxMap': ('argMax', 'Map'), 'quantilesTDigestMap': ('quantilesTDigest', 'Map'), 'kurtPopMap': ('kurtPop', 'Map'), 'groupBitXorMap': ('groupBitXor', 'Map'), 'groupArrayMovingAvgMap': ('groupArrayMovingAvg', 'Map'), 'medianMap': ('median', 'Map'), 'groupUniqArrayMap': ('groupUniqArray', 'Map'), 'cramersVBiasCorrectedMap': ('cramersVBiasCorrected', 'Map'), 'groupBitmapMap': ('groupBitmap', 'Map'), 'sequenceNextNodeMap': ('sequenceNextNode', 'Map'), 'deltaSumMap': ('deltaSum', 'Map'), 'anyHeavyMap': ('anyHeavy', 'Map'), 'quantileBFloat16Map': ('quantileBFloat16', 'Map'), 'uniqHLL12Map': ('uniqHLL12', 'Map'), 'groupConcatMap': ('groupConcat', 'Map'), 'simpleLinearRegressionMap': ('simpleLinearRegression', 'Map'), 'stddevPopMap': ('stddevPop', 'Map'), 'sumKahanMap': ('sumKahan', 'Map'), 'contingencyMap': ('contingency', 'Map'), 'minMapMap': ('minMap', 'Map'), 'avgMap': ('avg', 'Map'), 'quantilesExactWeightedMap': ('quantilesExactWeighted', 'Map'), 'quantilesTimingMap': ('quantilesTiming', 'Map'), 'uniqThetaMap': ('uniqTheta', 'Map'), 'exponentialMovingAverageMap': ('exponentialMovingAverage', 'Map'), 'quantilesBFloat16WeightedMap': ('quantilesBFloat16Weighted', 'Map'), 'intervalLengthSumMap': ('intervalLengthSum', 'Map'), 'uniqCombined64Map': ('uniqCombined64', 'Map'), 'anyMap': ('any', 'Map'), 'uniqCombinedMap': ('uniqCombined', 'Map'), 'avgWeightedMap': ('avgWeighted', 'Map'), 'quantileTimingMap': ('quantileTiming', 'Map'), 'uniqUpToMap': ('uniqUpTo', 'Map'), 'minMap': ('minMap', None), 'anyLastMap': ('anyLast', 'Map'), 'skewSampMap': ('skewSamp', 'Map'), 'kurtSampMap': ('kurtSamp', 'Map'), 'groupArraySampleMap': ('groupArraySample', 'Map'), 'topKMap': ('topK', 'Map'), 'sumMap': ('sumMap', None), 'sumMapMap': ('sumMap', 'Map'), 'quantilesExactHighMap': ('quantilesExactHigh', 'Map'), 'quantilesExactLowMap': ('quantilesExactLow', 'Map'), 'quantileExactWeightedMap': ('quantileExactWeighted', 'Map'), 'sumCountMap': ('sumCount', 'Map'), 'rankCorrMap': ('rankCorr', 'Map'), 'quantilesGKMap': ('quantilesGK', 'Map'), 'uniqExactMap': ('uniqExact', 'Map'), 'groupArrayLastMap': ('groupArrayLast', 'Map'), 'windowFunnelMap': ('windowFunnel', 'Map'), 'maxIntersectionsMap': ('maxIntersections', 'Map'), 'corrMap': ('corr', 'Map'), 'sumWithOverflowMap': ('sumWithOverflow', 'Map'), 'quantilesBFloat16Map': ('quantilesBFloat16', 'Map'), 'quantileExactMap': ('quantileExact', 'Map'), 'entropyMap': ('entropy', 'Map'), 'quantilesInterpolatedWeightedMap': ('quantilesInterpolatedWeighted', 'Map'), 'quantilesMap': ('quantiles', 'Map'), 'stochasticLinearRegressionMap': ('stochasticLinearRegression', 'Map'), 'mannWhitneyUTestMap': ('mannWhitneyUTest', 'Map'), 'quantilesTimingWeightedMap': ('quantilesTimingWeighted', 'Map'), 'covarSampMap': ('covarSamp', 'Map'), 'varPopMap': ('varPop', 'Map'), 'sequenceMatchMap': ('sequenceMatch', 'Map'), 'meanZTestMap': ('meanZTest', 'Map'), 'approx_top_sumMap': ('approx_top_sum', 'Map'), 'boundingRatioMap': ('boundingRatio', 'Map'), 'kolmogorovSmirnovTestMap': ('kolmogorovSmirnovTest', 'Map'), 'covarPopMap': ('covarPop', 'Map'), 'quantileGKMap': ('quantileGK', 'Map'), 'stddevSampMap': ('stddevSamp', 'Map'), 'sparkBarMap': ('sparkBar', 'Map'), 'quantileExactHighMap': ('quantileExactHigh', 'Map'), 'quantilesExactMap': ('quantilesExact', 'Map'), 'uniqMap': ('uniq', 'Map'), 'groupArrayInsertAtMap': ('groupArrayInsertAt', 'Map'), 'quantilesDeterministicMap': ('quantilesDeterministic', 'Map'), 'quantilesTDigestWeightedMap': ('quantilesTDigestWeighted', 'Map'), 'quantileDeterministicMap': ('quantileDeterministic', 'Map'), 'retentionMap': ('retention', 'Map'), 'groupBitmapXorMap': ('groupBitmapXor', 'Map'), 'quantilesExactExclusiveMap': ('quantilesExactExclusive', 'Map'), 'groupArrayMovingSumMap': ('groupArrayMovingSum', 'Map'), 'quantileBFloat16WeightedMap': ('quantileBFloat16Weighted', 'Map'), 'first_valueMap': ('first_value', 'Map'), 'studentTTestMap': ('studentTTest', 'Map'), 'topKWeightedMap': ('topKWeighted', 'Map'), 'quantileTDigestWeightedMap': ('quantileTDigestWeighted', 'Map'), 'categoricalInformationValueMap': ('categoricalInformationValue', 'Map'), 'sequenceCountMap': ('sequenceCount', 'Map'), 'groupBitAndMap': ('groupBitAnd', 'Map'), 'largestTriangleThreeBucketsMap': ('largestTriangleThreeBuckets', 'Map'), 'groupBitOrMap': ('groupBitOr', 'Map'), 'groupBitmapOrMap': ('groupBitmapOr', 'Map'), 'deltaSumTimestampMap': ('deltaSumTimestamp', 'Map'), 'argMinMap': ('argMin', 'Map'), 'groupBitmapAndMap': ('groupBitmapAnd', 'Map'), 'varSampMap': ('varSamp', 'Map'), 'exponentialTimeDecayedAvgMap': ('exponentialTimeDecayedAvg', 'Map'), 'maxMap': ('maxMap', None), 'quantileExactLowMap': ('quantileExactLow', 'Map'), 'maxIntersectionsPositionMap': ('maxIntersectionsPosition', 'Map'), 'groupArrayMap': ('groupArray', 'Map'), 'quantileMap': ('quantile', 'Map'), 'welchTTestIf': ('welchTTest', 'If'), 'histogramIf': ('histogram', 'If'), 'countIf': ('count', 'If'), 'quantileTimingWeightedIf': ('quantileTimingWeighted', 'If'), 'cramersVIf': ('cramersV', 'If'), 'skewPopIf': ('skewPop', 'If'), 'quantileTDigestIf': ('quantileTDigest', 'If'), 'stochasticLogisticRegressionIf': ('stochasticLogisticRegression', 'If'), 'quantileInterpolatedWeightedIf': ('quantileInterpolatedWeighted', 'If'), 'maxMapIf': ('maxMap', 'If'), 'theilsUIf': ('theilsU', 'If'), 'last_valueIf': ('last_value', 'If'), 'argMaxIf': ('argMax', 'If'), 'quantilesTDigestIf': ('quantilesTDigest', 'If'), 'kurtPopIf': ('kurtPop', 'If'), 'groupBitXorIf': ('groupBitXor', 'If'), 'groupArrayMovingAvgIf': ('groupArrayMovingAvg', 'If'), 'medianIf': ('median', 'If'), 'groupUniqArrayIf': ('groupUniqArray', 'If'), 'cramersVBiasCorrectedIf': ('cramersVBiasCorrected', 'If'), 'groupBitmapIf': ('groupBitmap', 'If'), 'sequenceNextNodeIf': ('sequenceNextNode', 'If'), 'deltaSumIf': ('deltaSum', 'If'), 'anyHeavyIf': ('anyHeavy', 'If'), 'quantileBFloat16If': ('quantileBFloat16', 'If'), 'uniqHLL12If': ('uniqHLL12', 'If'), 'groupConcatIf': ('groupConcat', 'If'), 'simpleLinearRegressionIf': ('simpleLinearRegression', 'If'), 'stddevPopIf': ('stddevPop', 'If'), 'sumKahanIf': ('sumKahan', 'If'), 'contingencyIf': ('contingency', 'If'), 'minMapIf': ('minMap', 'If'), 'avgIf': ('avg', 'If'), 'quantilesExactWeightedIf': ('quantilesExactWeighted', 'If'), 'quantilesTimingIf': ('quantilesTiming', 'If'), 'uniqThetaIf': ('uniqTheta', 'If'), 'exponentialMovingAverageIf': ('exponentialMovingAverage', 'If'), 'quantilesBFloat16WeightedIf': ('quantilesBFloat16Weighted', 'If'), 'intervalLengthSumIf': ('intervalLengthSum', 'If'), 'uniqCombined64If': ('uniqCombined64', 'If'), 'anyIf': ('any', 'If'), 'uniqCombinedIf': ('uniqCombined', 'If'), 'avgWeightedIf': ('avgWeighted', 'If'), 'quantileTimingIf': ('quantileTiming', 'If'), 'uniqUpToIf': ('uniqUpTo', 'If'), 'minIf': ('min', 'If'), 'anyLastIf': ('anyLast', 'If'), 'skewSampIf': ('skewSamp', 'If'), 'kurtSampIf': ('kurtSamp', 'If'), 'groupArraySampleIf': ('groupArraySample', 'If'), 'topKIf': ('topK', 'If'), 'sumIf': ('sum', 'If'), 'sumMapIf': ('sumMap', 'If'), 'quantilesExactHighIf': ('quantilesExactHigh', 'If'), 'quantilesExactLowIf': ('quantilesExactLow', 'If'), 'quantileExactWeightedIf': ('quantileExactWeighted', 'If'), 'sumCountIf': ('sumCount', 'If'), 'rankCorrIf': ('rankCorr', 'If'), 'quantilesGKIf': ('quantilesGK', 'If'), 'uniqExactIf': ('uniqExact', 'If'), 'groupArrayLastIf': ('groupArrayLast', 'If'), 'windowFunnelIf': ('windowFunnel', 'If'), 'maxIntersectionsIf': ('maxIntersections', 'If'), 'corrIf': ('corr', 'If'), 'sumWithOverflowIf': ('sumWithOverflow', 'If'), 'quantilesBFloat16If': ('quantilesBFloat16', 'If'), 'quantileExactIf': ('quantileExact', 'If'), 'entropyIf': ('entropy', 'If'), 'quantilesInterpolatedWeightedIf': ('quantilesInterpolatedWeighted', 'If'), 'quantilesIf': ('quantiles', 'If'), 'stochasticLinearRegressionIf': ('stochasticLinearRegression', 'If'), 'mannWhitneyUTestIf': ('mannWhitneyUTest', 'If'), 'quantilesTimingWeightedIf': ('quantilesTimingWeighted', 'If'), 'covarSampIf': ('covarSamp', 'If'), 'varPopIf': ('varPop', 'If'), 'sequenceMatchIf': ('sequenceMatch', 'If'), 'meanZTestIf': ('meanZTest', 'If'), 'approx_top_sumIf': ('approx_top_sum', 'If'), 'boundingRatioIf': ('boundingRatio', 'If'), 'kolmogorovSmirnovTestIf': ('kolmogorovSmirnovTest', 'If'), 'covarPopIf': ('covarPop', 'If'), 'quantileGKIf': ('quantileGK', 'If'), 'stddevSampIf': ('stddevSamp', 'If'), 'sparkBarIf': ('sparkBar', 'If'), 'quantileExactHighIf': ('quantileExactHigh', 'If'), 'quantilesExactIf': ('quantilesExact', 'If'), 'uniqIf': ('uniq', 'If'), 'groupArrayInsertAtIf': ('groupArrayInsertAt', 'If'), 'quantilesDeterministicIf': ('quantilesDeterministic', 'If'), 'quantilesTDigestWeightedIf': ('quantilesTDigestWeighted', 'If'), 'quantileDeterministicIf': ('quantileDeterministic', 'If'), 'retentionIf': ('retention', 'If'), 'groupBitmapXorIf': ('groupBitmapXor', 'If'), 'quantilesExactExclusiveIf': ('quantilesExactExclusive', 'If'), 'groupArrayMovingSumIf': ('groupArrayMovingSum', 'If'), 'quantileBFloat16WeightedIf': ('quantileBFloat16Weighted', 'If'), 'first_valueIf': ('first_value', 'If'), 'studentTTestIf': ('studentTTest', 'If'), 'topKWeightedIf': ('topKWeighted', 'If'), 'quantileTDigestWeightedIf': ('quantileTDigestWeighted', 'If'), 'categoricalInformationValueIf': ('categoricalInformationValue', 'If'), 'sequenceCountIf': ('sequenceCount', 'If'), 'groupBitAndIf': ('groupBitAnd', 'If'), 'largestTriangleThreeBucketsIf': ('largestTriangleThreeBuckets', 'If'), 'groupBitOrIf': ('groupBitOr', 'If'), 'groupBitmapOrIf': ('groupBitmapOr', 'If'), 'deltaSumTimestampIf': ('deltaSumTimestamp', 'If'), 'argMinIf': ('argMin', 'If'), 'groupBitmapAndIf': ('groupBitmapAnd', 'If'), 'varSampIf': ('varSamp', 'If'), 'exponentialTimeDecayedAvgIf': ('exponentialTimeDecayedAvg', 'If'), 'maxIf': ('max', 'If'), 'quantileExactLowIf': ('quantileExactLow', 'If'), 'maxIntersectionsPositionIf': ('maxIntersectionsPosition', 'If'), 'groupArrayIf': ('groupArray', 'If'), 'quantileIf': ('quantile', 'If'), 'welchTTest': ('welchTTest', None), 'histogram': ('histogram', None), 'count': ('count', None), 'quantileTimingWeighted': ('quantileTimingWeighted', None), 'cramersV': ('cramersV', None), 'skewPop': ('skewPop', None), 'quantileTDigest': ('quantileTDigest', None), 'stochasticLogisticRegression': ('stochasticLogisticRegression', None), 'quantileInterpolatedWeighted': ('quantileInterpolatedWeighted', None), 'theilsU': ('theilsU', None), 'last_value': ('last_value', None), 'argMax': ('argMax', None), 'quantilesTDigest': ('quantilesTDigest', None), 'kurtPop': ('kurtPop', None), 'groupBitXor': ('groupBitXor', None), 'groupArrayMovingAvg': ('groupArrayMovingAvg', None), 'median': ('median', None), 'groupUniqArray': ('groupUniqArray', None), 'cramersVBiasCorrected': ('cramersVBiasCorrected', None), 'groupBitmap': ('groupBitmap', None), 'sequenceNextNode': ('sequenceNextNode', None), 'deltaSum': ('deltaSum', None), 'anyHeavy': ('anyHeavy', None), 'quantileBFloat16': ('quantileBFloat16', None), 'uniqHLL12': ('uniqHLL12', None), 'groupConcat': ('groupConcat', None), 'simpleLinearRegression': ('simpleLinearRegression', None), 'stddevPop': ('stddevPop', None), 'sumKahan': ('sumKahan', None), 'contingency': ('contingency', None), 'avg': ('avg', None), 'quantilesExactWeighted': ('quantilesExactWeighted', None), 'quantilesTiming': ('quantilesTiming', None), 'uniqTheta': ('uniqTheta', None), 'exponentialMovingAverage': ('exponentialMovingAverage', None), 'quantilesBFloat16Weighted': ('quantilesBFloat16Weighted', None), 'intervalLengthSum': ('intervalLengthSum', None), 'uniqCombined64': ('uniqCombined64', None), 'any': ('any', None), 'uniqCombined': ('uniqCombined', None), 'avgWeighted': ('avgWeighted', None), 'quantileTiming': ('quantileTiming', None), 'uniqUpTo': ('uniqUpTo', None), 'min': ('min', None), 'anyLast': ('anyLast', None), 'skewSamp': ('skewSamp', None), 'kurtSamp': ('kurtSamp', None), 'groupArraySample': ('groupArraySample', None), 'topK': ('topK', None), 'sum': ('sum', None), 'quantilesExactHigh': ('quantilesExactHigh', None), 'quantilesExactLow': ('quantilesExactLow', None), 'quantileExactWeighted': ('quantileExactWeighted', None), 'sumCount': ('sumCount', None), 'rankCorr': ('rankCorr', None), 'quantilesGK': ('quantilesGK', None), 'uniqExact': ('uniqExact', None), 'groupArrayLast': ('groupArrayLast', None), 'windowFunnel': ('windowFunnel', None), 'maxIntersections': ('maxIntersections', None), 'corr': ('corr', None), 'sumWithOverflow': ('sumWithOverflow', None), 'quantilesBFloat16': ('quantilesBFloat16', None), 'quantileExact': ('quantileExact', None), 'entropy': ('entropy', None), 'quantilesInterpolatedWeighted': ('quantilesInterpolatedWeighted', None), 'quantiles': ('quantiles', None), 'stochasticLinearRegression': ('stochasticLinearRegression', None), 'mannWhitneyUTest': ('mannWhitneyUTest', None), 'quantilesTimingWeighted': ('quantilesTimingWeighted', None), 'covarSamp': ('covarSamp', None), 'varPop': ('varPop', None), 'sequenceMatch': ('sequenceMatch', None), 'meanZTest': ('meanZTest', None), 'approx_top_sum': ('approx_top_sum', None), 'boundingRatio': ('boundingRatio', None), 'kolmogorovSmirnovTest': ('kolmogorovSmirnovTest', None), 'covarPop': ('covarPop', None), 'quantileGK': ('quantileGK', None), 'stddevSamp': ('stddevSamp', None), 'sparkBar': ('sparkBar', None), 'quantileExactHigh': ('quantileExactHigh', None), 'quantilesExact': ('quantilesExact', None), 'uniq': ('uniq', None), 'groupArrayInsertAt': ('groupArrayInsertAt', None), 'quantilesDeterministic': ('quantilesDeterministic', None), 'quantilesTDigestWeighted': ('quantilesTDigestWeighted', None), 'quantileDeterministic': ('quantileDeterministic', None), 'retention': ('retention', None), 'groupBitmapXor': ('groupBitmapXor', None), 'quantilesExactExclusive': ('quantilesExactExclusive', None), 'groupArrayMovingSum': ('groupArrayMovingSum', None), 'quantileBFloat16Weighted': ('quantileBFloat16Weighted', None), 'first_value': ('first_value', None), 'studentTTest': ('studentTTest', None), 'topKWeighted': ('topKWeighted', None), 'quantileTDigestWeighted': ('quantileTDigestWeighted', None), 'categoricalInformationValue': ('categoricalInformationValue', None), 'sequenceCount': ('sequenceCount', None), 'groupBitAnd': ('groupBitAnd', None), 'largestTriangleThreeBuckets': ('largestTriangleThreeBuckets', None), 'groupBitOr': ('groupBitOr', None), 'groupBitmapOr': ('groupBitmapOr', None), 'deltaSumTimestamp': ('deltaSumTimestamp', None), 'argMin': ('argMin', None), 'groupBitmapAnd': ('groupBitmapAnd', None), 'varSamp': ('varSamp', None), 'exponentialTimeDecayedAvg': ('exponentialTimeDecayedAvg', None), 'max': ('max', None), 'quantileExactLow': ('quantileExactLow', None), 'maxIntersectionsPosition': ('maxIntersectionsPosition', None), 'groupArray': ('groupArray', None), 'quantile': ('quantile', None)}
FUNCTION_PARSERS = {'ARG_MAX': <function Parser.<dictcomp>.<lambda>>, 'ARGMAX': <function Parser.<dictcomp>.<lambda>>, 'MAX_BY': <function Parser.<dictcomp>.<lambda>>, 'ARG_MIN': <function Parser.<dictcomp>.<lambda>>, 'ARGMIN': <function Parser.<dictcomp>.<lambda>>, 'MIN_BY': <function Parser.<dictcomp>.<lambda>>, 'CAST': <function Parser.<lambda>>, 'CEIL': <function Parser.<lambda>>, 'CONVERT': <function Parser.<lambda>>, 'CHAR': <function Parser.<lambda>>, 'CHR': <function Parser.<lambda>>, 'DECODE': <function Parser.<lambda>>, 'EXTRACT': <function Parser.<lambda>>, 'FLOOR': <function Parser.<lambda>>, 'GAP_FILL': <function Parser.<lambda>>, 'INITCAP': <function Parser.<lambda>>, 'JSON_OBJECT': <function Parser.<lambda>>, 'JSON_OBJECTAGG': <function Parser.<lambda>>, 'JSON_TABLE': <function Parser.<lambda>>, 'NORMALIZE': <function Parser.<lambda>>, 'OPENJSON': <function Parser.<lambda>>, 'OVERLAY': <function Parser.<lambda>>, 'POSITION': <function Parser.<lambda>>, 'SAFE_CAST': <function Parser.<lambda>>, 'STRING_AGG': <function Parser.<lambda>>, 'SUBSTRING': <function Parser.<lambda>>, 'TRIM': <function Parser.<lambda>>, 'TRY_CAST': <function Parser.<lambda>>, 'TRY_CONVERT': <function Parser.<lambda>>, 'XMLELEMENT': <function Parser.<lambda>>, 'XMLTABLE': <function Parser.<lambda>>, 'ARRAYJOIN': <function ClickHouseParser.<lambda>>, 'GROUPCONCAT': <function ClickHouseParser.<lambda>>, 'QUANTILE': <function ClickHouseParser.<lambda>>, 'MEDIAN': <function ClickHouseParser.<lambda>>, 'COLUMNS': <function ClickHouseParser.<lambda>>, 'TUPLE': <function ClickHouseParser.<lambda>>, 'AND': <function ClickHouseParser.<lambda>>, 'OR': <function ClickHouseParser.<lambda>>, 'XOR': <function ClickHouseParser.<lambda>>}
PROPERTY_PARSERS = {'ALLOWED_VALUES': <function Parser.<lambda>>, 'ALGORITHM': <function Parser.<lambda>>, 'AUTO': <function Parser.<lambda>>, 'AUTO_INCREMENT': <function Parser.<lambda>>, 'BACKUP': <function Parser.<lambda>>, 'BLOCKCOMPRESSION': <function Parser.<lambda>>, 'CALLED': <function Parser.<lambda>>, 'CHARSET': <function Parser.<lambda>>, 'CHARACTER SET': <function Parser.<lambda>>, 'CHECKSUM': <function Parser.<lambda>>, 'CLUSTER BY': <function Parser.<lambda>>, 'CLUSTERED': <function Parser.<lambda>>, 'COLLATE': <function Parser.<lambda>>, 'COMMENT': <function Parser.<lambda>>, 'CONTAINS': <function Parser.<lambda>>, 'COPY': <function Parser.<lambda>>, 'DATABLOCKSIZE': <function Parser.<lambda>>, 'DATA_DELETION': <function Parser.<lambda>>, 'DEFINER': <function Parser.<lambda>>, 'DETERMINISTIC': <function Parser.<lambda>>, 'DISTRIBUTED': <function Parser.<lambda>>, 'DUPLICATE': <function Parser.<lambda>>, 'DISTKEY': <function Parser.<lambda>>, 'DISTSTYLE': <function Parser.<lambda>>, 'EMPTY': <function Parser.<lambda>>, 'ENGINE': <function ClickHouseParser.<lambda>>, 'ENVIRONMENT': <function Parser.<lambda>>, 'HANDLER': <function Parser.<lambda>>, 'EXECUTE': <function Parser.<lambda>>, 'EXTERNAL': <function Parser.<lambda>>, 'FALLBACK': <function Parser.<lambda>>, 'FORMAT': <function Parser.<lambda>>, 'FREESPACE': <function Parser.<lambda>>, 'GLOBAL': <function Parser.<lambda>>, 'HEAP': <function Parser.<lambda>>, 'ICEBERG': <function Parser.<lambda>>, 'IMMUTABLE': <function Parser.<lambda>>, 'INHERITS': <function Parser.<lambda>>, 'INPUT': <function Parser.<lambda>>, 'JOURNAL': <function Parser.<lambda>>, 'LANGUAGE': <function Parser.<lambda>>, 'LAYOUT': <function Parser.<lambda>>, 'LIFETIME': <function Parser.<lambda>>, 'LIKE': <function Parser.<lambda>>, 'LOCATION': <function Parser.<lambda>>, 'LOCK': <function Parser.<lambda>>, 'LOCKING': <function Parser.<lambda>>, 'LOG': <function Parser.<lambda>>, 'MATERIALIZED': <function Parser.<lambda>>, 'MERGEBLOCKRATIO': <function Parser.<lambda>>, 'MODIFIES': <function Parser.<lambda>>, 'MULTISET': <function Parser.<lambda>>, 'NO': <function Parser.<lambda>>, 'ON': <function Parser.<lambda>>, 'ORDER BY': <function Parser.<lambda>>, 'OUTPUT': <function Parser.<lambda>>, 'PARTITION': <function Parser.<lambda>>, 'PARTITION BY': <function Parser.<lambda>>, 'PARTITIONED BY': <function Parser.<lambda>>, 'PARTITIONED_BY': <function Parser.<lambda>>, 'PRIMARY KEY': <function Parser.<lambda>>, 'RANGE': <function Parser.<lambda>>, 'READS': <function Parser.<lambda>>, 'REMOTE': <function Parser.<lambda>>, 'RETURNS': <function Parser.<lambda>>, 'STRICT': <function Parser.<lambda>>, 'STREAMING': <function Parser.<lambda>>, 'ROW': <function Parser.<lambda>>, 'ROW_FORMAT': <function Parser.<lambda>>, 'SAMPLE': <function Parser.<lambda>>, 'SECURE': <function Parser.<lambda>>, 'SECURITY': <function Parser.<lambda>>, 'SQL SECURITY': <function Parser.<lambda>>, 'SET': <function Parser.<lambda>>, 'SETTINGS': <function Parser.<lambda>>, 'SHARING': <function Parser.<lambda>>, 'SORTKEY': <function Parser.<lambda>>, 'SOURCE': <function Parser.<lambda>>, 'STABLE': <function Parser.<lambda>>, 'STORED': <function Parser.<lambda>>, 'SYSTEM_VERSIONING': <function Parser.<lambda>>, 'TBLPROPERTIES': <function Parser.<lambda>>, 'TEMP': <function Parser.<lambda>>, 'TEMPORARY': <function Parser.<lambda>>, 'TO': <function Parser.<lambda>>, 'TRANSIENT': <function Parser.<lambda>>, 'TRANSFORM': <function Parser.<lambda>>, 'TTL': <function Parser.<lambda>>, 'USING': <function Parser.<lambda>>, 'UNLOGGED': <function Parser.<lambda>>, 'VOLATILE': <function Parser.<lambda>>, 'WITH': <function Parser.<lambda>>, 'UUID': <function ClickHouseParser.<lambda>>}
NO_PAREN_FUNCTION_PARSERS = {'CASE': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <function Parser.<lambda>>, 'IF': <function Parser.<lambda>>}
NO_PAREN_FUNCTIONS = {<TokenType.CURRENT_DATE: 246>: <class 'sqlglot.expressions.temporal.CurrentDate'>, <TokenType.CURRENT_DATETIME: 247>: <class 'sqlglot.expressions.temporal.CurrentDate'>, <TokenType.CURRENT_TIME: 249>: <class 'sqlglot.expressions.temporal.CurrentTime'>, <TokenType.CURRENT_USER: 251>: <class 'sqlglot.expressions.functions.CurrentUser'>, <TokenType.CURRENT_ROLE: 253>: <class 'sqlglot.expressions.functions.CurrentRole'>}
RANGE_PARSERS = {<TokenType.AT_GT: 56>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.BETWEEN: 230>: <function Parser.<lambda>>, <TokenType.GLOB: 287>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.ILIKE: 295>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.IN: 296>: <function Parser.<lambda>>, <TokenType.IRLIKE: 307>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.IS: 308>: <function Parser.<lambda>>, <TokenType.LIKE: 318>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.LT_AT: 55>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.OVERLAPS: 349>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.RLIKE: 379>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.SIMILAR_TO: 394>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.FOR: 279>: <function Parser.<lambda>>, <TokenType.QMARK_AMP: 68>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.QMARK_PIPE: 69>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.HASH_DASH: 70>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.AT_QMARK: 54>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.ADJACENT: 65>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.OPERATOR: 340>: <function Parser.<lambda>>, <TokenType.AMP_LT: 63>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.AMP_GT: 64>: <function binary_range_parser.<locals>._parse_binary_range>, <TokenType.GLOBAL: 288>: <function ClickHouseParser.<lambda>>}
COLUMN_OPERATORS = {<TokenType.DOT: 8>: None, <TokenType.DOTCOLON: 12>: <function Parser.<lambda>>, <TokenType.DCOLON: 14>: <function Parser.<lambda>>, <TokenType.ARROW: 45>: <function Parser.<lambda>>, <TokenType.DARROW: 46>: <function Parser.<lambda>>, <TokenType.HASH_ARROW: 49>: <function Parser.<lambda>>, <TokenType.DHASH_ARROW: 50>: <function Parser.<lambda>>, <TokenType.DOTCARET: 13>: <function ClickHouseParser.<lambda>>}
JOIN_KINDS = {<TokenType.SEMI: 387>, <TokenType.STRAIGHT_JOIN: 401>, <TokenType.OUTER: 347>, <TokenType.ALL: 220>, <TokenType.ANTI: 221>, <TokenType.ANY: 222>, <TokenType.ARRAY: 224>, <TokenType.ASOF: 226>, <TokenType.INNER: 299>, <TokenType.CROSS: 244>}
TABLE_ALIAS_TOKENS = {<TokenType.SESSION: 59>, <TokenType.SESSION_USER: 61>, <TokenType.IDENTIFIER: 79>, <TokenType.DATABASE: 80>, <TokenType.COLUMN: 81>, <TokenType.SCHEMA: 83>, <TokenType.TABLE: 84>, <TokenType.WAREHOUSE: 85>, <TokenType.STAGE: 86>, <TokenType.STREAM: 87>, <TokenType.STREAMLIT: 88>, <TokenType.VAR: 89>, <TokenType.BIT: 97>, <TokenType.BOOLEAN: 98>, <TokenType.TINYINT: 99>, <TokenType.UTINYINT: 100>, <TokenType.SMALLINT: 101>, <TokenType.USMALLINT: 102>, <TokenType.MEDIUMINT: 103>, <TokenType.UMEDIUMINT: 104>, <TokenType.INT: 105>, <TokenType.UINT: 106>, <TokenType.BIGINT: 107>, <TokenType.UBIGINT: 108>, <TokenType.BIGNUM: 109>, <TokenType.INT128: 110>, <TokenType.UINT128: 111>, <TokenType.INT256: 112>, <TokenType.UINT256: 113>, <TokenType.FLOAT: 114>, <TokenType.DOUBLE: 115>, <TokenType.UDOUBLE: 116>, <TokenType.DECIMAL: 117>, <TokenType.DECIMAL32: 118>, <TokenType.DECIMAL64: 119>, <TokenType.DECIMAL128: 120>, <TokenType.DECIMAL256: 121>, <TokenType.DECFLOAT: 122>, <TokenType.UDECIMAL: 123>, <TokenType.BIGDECIMAL: 124>, <TokenType.CHAR: 125>, <TokenType.NCHAR: 126>, <TokenType.VARCHAR: 127>, <TokenType.NVARCHAR: 128>, <TokenType.BPCHAR: 129>, <TokenType.TEXT: 130>, <TokenType.MEDIUMTEXT: 131>, <TokenType.LONGTEXT: 132>, <TokenType.BLOB: 133>, <TokenType.MEDIUMBLOB: 134>, <TokenType.LONGBLOB: 135>, <TokenType.TINYBLOB: 136>, <TokenType.TINYTEXT: 137>, <TokenType.NAME: 138>, <TokenType.BINARY: 139>, <TokenType.VARBINARY: 140>, <TokenType.JSON: 141>, <TokenType.JSONB: 142>, <TokenType.TIME: 143>, <TokenType.TIMETZ: 144>, <TokenType.TIME_NS: 145>, <TokenType.TIMESTAMP: 146>, <TokenType.TIMESTAMPTZ: 147>, <TokenType.TIMESTAMPLTZ: 148>, <TokenType.TIMESTAMPNTZ: 149>, <TokenType.TIMESTAMP_S: 150>, <TokenType.TIMESTAMP_MS: 151>, <TokenType.TIMESTAMP_NS: 152>, <TokenType.DATETIME: 153>, <TokenType.DATETIME2: 154>, <TokenType.DATETIME64: 155>, <TokenType.SMALLDATETIME: 156>, <TokenType.DATE: 157>, <TokenType.DATE32: 158>, <TokenType.INT4RANGE: 159>, <TokenType.INT4MULTIRANGE: 160>, <TokenType.INT8RANGE: 161>, <TokenType.INT8MULTIRANGE: 162>, <TokenType.NUMRANGE: 163>, <TokenType.NUMMULTIRANGE: 164>, <TokenType.TSRANGE: 165>, <TokenType.TSMULTIRANGE: 166>, <TokenType.TSTZRANGE: 167>, <TokenType.TSTZMULTIRANGE: 168>, <TokenType.DATERANGE: 169>, <TokenType.DATEMULTIRANGE: 170>, <TokenType.UUID: 171>, <TokenType.GEOGRAPHY: 172>, <TokenType.GEOGRAPHYPOINT: 173>, <TokenType.NULLABLE: 174>, <TokenType.GEOMETRY: 175>, <TokenType.POINT: 176>, <TokenType.RING: 177>, <TokenType.LINESTRING: 178>, <TokenType.LOCALTIME: 179>, <TokenType.LOCALTIMESTAMP: 180>, <TokenType.MULTILINESTRING: 182>, <TokenType.POLYGON: 183>, <TokenType.MULTIPOLYGON: 184>, <TokenType.HLLSKETCH: 185>, <TokenType.HSTORE: 186>, <TokenType.SUPER: 187>, <TokenType.SERIAL: 188>, <TokenType.SMALLSERIAL: 189>, <TokenType.BIGSERIAL: 190>, <TokenType.XML: 191>, <TokenType.YEAR: 192>, <TokenType.USERDEFINED: 193>, <TokenType.MONEY: 194>, <TokenType.SMALLMONEY: 195>, <TokenType.ROWVERSION: 196>, <TokenType.IMAGE: 197>, <TokenType.VARIANT: 198>, <TokenType.OBJECT: 199>, <TokenType.INET: 200>, <TokenType.IPADDRESS: 201>, <TokenType.IPPREFIX: 202>, <TokenType.IPV4: 203>, <TokenType.IPV6: 204>, <TokenType.ENUM: 205>, <TokenType.ENUM8: 206>, <TokenType.ENUM16: 207>, <TokenType.FIXEDSTRING: 208>, <TokenType.LOWCARDINALITY: 209>, <TokenType.NESTED: 210>, <TokenType.AGGREGATEFUNCTION: 211>, <TokenType.SIMPLEAGGREGATEFUNCTION: 212>, <TokenType.TDIGEST: 213>, <TokenType.UNKNOWN: 214>, <TokenType.VECTOR: 215>, <TokenType.DYNAMIC: 216>, <TokenType.VOID: 217>, <TokenType.APPLY: 223>, <TokenType.ASC: 225>, <TokenType.ATTACH: 227>, <TokenType.AUTO_INCREMENT: 228>, <TokenType.BEGIN: 229>, <TokenType.CACHE: 232>, <TokenType.CASE: 233>, <TokenType.COLLATE: 236>, <TokenType.COMMAND: 237>, <TokenType.COMMENT: 238>, <TokenType.COMMIT: 239>, <TokenType.CONSTRAINT: 241>, <TokenType.COPY: 242>, <TokenType.CUBE: 245>, <TokenType.CURRENT_DATE: 246>, <TokenType.CURRENT_DATETIME: 247>, <TokenType.CURRENT_SCHEMA: 248>, <TokenType.CURRENT_TIME: 249>, <TokenType.CURRENT_TIMESTAMP: 250>, <TokenType.CURRENT_USER: 251>, <TokenType.CURRENT_ROLE: 253>, <TokenType.CURRENT_CATALOG: 254>, <TokenType.DEFAULT: 256>, <TokenType.DELETE: 257>, <TokenType.DESC: 258>, <TokenType.DESCRIBE: 259>, <TokenType.DETACH: 260>, <TokenType.DICTIONARY: 261>, <TokenType.DIV: 264>, <TokenType.END: 267>, <TokenType.ESCAPE: 268>, <TokenType.EXECUTE: 270>, <TokenType.EXISTS: 271>, <TokenType.FALSE: 272>, <TokenType.FILE: 274>, <TokenType.FILE_FORMAT: 275>, <TokenType.FILTER: 276>, <TokenType.FIRST: 278>, <TokenType.FOREIGN_KEY: 281>, <TokenType.FUNCTION: 285>, <TokenType.GET: 286>, <TokenType.INDEX: 297>, <TokenType.INTERVAL: 304>, <TokenType.IS: 308>, <TokenType.ISNULL: 309>, <TokenType.KEEP: 312>, <TokenType.KILL: 314>, <TokenType.LIMIT: 319>, <TokenType.LIST: 320>, <TokenType.LOAD: 321>, <TokenType.MAP: 323>, <TokenType.MATCH: 324>, <TokenType.MERGE: 328>, <TokenType.MODEL: 330>, <TokenType.NEXT: 332>, <TokenType.NOTHING: 333>, <TokenType.NULL: 335>, <TokenType.OBJECT_IDENTIFIER: 336>, <TokenType.OFFSET: 337>, <TokenType.OPERATOR: 340>, <TokenType.ORDINALITY: 344>, <TokenType.INOUT: 346>, <TokenType.OVER: 348>, <TokenType.OVERLAPS: 349>, <TokenType.OVERWRITE: 350>, <TokenType.PARTITION: 352>, <TokenType.PERCENT: 354>, <TokenType.PIVOT: 355>, <TokenType.PRAGMA: 360>, <TokenType.PROCEDURE: 363>, <TokenType.PSEUDO_TYPE: 365>, <TokenType.PUT: 366>, <TokenType.RANGE: 370>, <TokenType.RECURSIVE: 371>, <TokenType.REFRESH: 372>, <TokenType.RENAME: 373>, <TokenType.REPLACE: 374>, <TokenType.REFERENCES: 377>, <TokenType.ROLLUP: 382>, <TokenType.ROW: 383>, <TokenType.ROWS: 384>, <TokenType.SEQUENCE: 389>, <TokenType.SET: 391>, <TokenType.SHOW: 393>, <TokenType.SOME: 395>, <TokenType.STORAGE_INTEGRATION: 400>, <TokenType.STRAIGHT_JOIN: 401>, <TokenType.STRUCT: 402>, <TokenType.TAG: 405>, <TokenType.TEMPORARY: 406>, <TokenType.TOP: 407>, <TokenType.TRUE: 409>, <TokenType.TRUNCATE: 410>, <TokenType.TRIGGER: 411>, <TokenType.TYPE: 412>, <TokenType.UNNEST: 416>, <TokenType.UNPIVOT: 417>, <TokenType.UPDATE: 418>, <TokenType.USE: 419>, <TokenType.VIEW: 423>, <TokenType.SEMANTIC_VIEW: 424>, <TokenType.VOLATILE: 425>, <TokenType.UNIQUE: 431>, <TokenType.SINK: 438>, <TokenType.SOURCE: 439>, <TokenType.ANALYZE: 440>, <TokenType.NAMESPACE: 441>, <TokenType.EXPORT: 442>}
ALIAS_TOKENS = {<TokenType.SESSION: 59>, <TokenType.SESSION_USER: 61>, <TokenType.IDENTIFIER: 79>, <TokenType.DATABASE: 80>, <TokenType.COLUMN: 81>, <TokenType.SCHEMA: 83>, <TokenType.TABLE: 84>, <TokenType.WAREHOUSE: 85>, <TokenType.STAGE: 86>, <TokenType.STREAM: 87>, <TokenType.STREAMLIT: 88>, <TokenType.VAR: 89>, <TokenType.BIT: 97>, <TokenType.BOOLEAN: 98>, <TokenType.TINYINT: 99>, <TokenType.UTINYINT: 100>, <TokenType.SMALLINT: 101>, <TokenType.USMALLINT: 102>, <TokenType.MEDIUMINT: 103>, <TokenType.UMEDIUMINT: 104>, <TokenType.INT: 105>, <TokenType.UINT: 106>, <TokenType.BIGINT: 107>, <TokenType.UBIGINT: 108>, <TokenType.BIGNUM: 109>, <TokenType.INT128: 110>, <TokenType.UINT128: 111>, <TokenType.INT256: 112>, <TokenType.UINT256: 113>, <TokenType.FLOAT: 114>, <TokenType.DOUBLE: 115>, <TokenType.UDOUBLE: 116>, <TokenType.DECIMAL: 117>, <TokenType.DECIMAL32: 118>, <TokenType.DECIMAL64: 119>, <TokenType.DECIMAL128: 120>, <TokenType.DECIMAL256: 121>, <TokenType.DECFLOAT: 122>, <TokenType.UDECIMAL: 123>, <TokenType.BIGDECIMAL: 124>, <TokenType.CHAR: 125>, <TokenType.NCHAR: 126>, <TokenType.VARCHAR: 127>, <TokenType.NVARCHAR: 128>, <TokenType.BPCHAR: 129>, <TokenType.TEXT: 130>, <TokenType.MEDIUMTEXT: 131>, <TokenType.LONGTEXT: 132>, <TokenType.BLOB: 133>, <TokenType.MEDIUMBLOB: 134>, <TokenType.LONGBLOB: 135>, <TokenType.TINYBLOB: 136>, <TokenType.TINYTEXT: 137>, <TokenType.NAME: 138>, <TokenType.BINARY: 139>, <TokenType.VARBINARY: 140>, <TokenType.JSON: 141>, <TokenType.JSONB: 142>, <TokenType.TIME: 143>, <TokenType.TIMETZ: 144>, <TokenType.TIME_NS: 145>, <TokenType.TIMESTAMP: 146>, <TokenType.TIMESTAMPTZ: 147>, <TokenType.TIMESTAMPLTZ: 148>, <TokenType.TIMESTAMPNTZ: 149>, <TokenType.TIMESTAMP_S: 150>, <TokenType.TIMESTAMP_MS: 151>, <TokenType.TIMESTAMP_NS: 152>, <TokenType.DATETIME: 153>, <TokenType.DATETIME2: 154>, <TokenType.DATETIME64: 155>, <TokenType.SMALLDATETIME: 156>, <TokenType.DATE: 157>, <TokenType.DATE32: 158>, <TokenType.INT4RANGE: 159>, <TokenType.INT4MULTIRANGE: 160>, <TokenType.INT8RANGE: 161>, <TokenType.INT8MULTIRANGE: 162>, <TokenType.NUMRANGE: 163>, <TokenType.NUMMULTIRANGE: 164>, <TokenType.TSRANGE: 165>, <TokenType.TSMULTIRANGE: 166>, <TokenType.TSTZRANGE: 167>, <TokenType.TSTZMULTIRANGE: 168>, <TokenType.DATERANGE: 169>, <TokenType.DATEMULTIRANGE: 170>, <TokenType.UUID: 171>, <TokenType.GEOGRAPHY: 172>, <TokenType.GEOGRAPHYPOINT: 173>, <TokenType.NULLABLE: 174>, <TokenType.GEOMETRY: 175>, <TokenType.POINT: 176>, <TokenType.RING: 177>, <TokenType.LINESTRING: 178>, <TokenType.LOCALTIME: 179>, <TokenType.LOCALTIMESTAMP: 180>, <TokenType.MULTILINESTRING: 182>, <TokenType.POLYGON: 183>, <TokenType.MULTIPOLYGON: 184>, <TokenType.HLLSKETCH: 185>, <TokenType.HSTORE: 186>, <TokenType.SUPER: 187>, <TokenType.SERIAL: 188>, <TokenType.SMALLSERIAL: 189>, <TokenType.BIGSERIAL: 190>, <TokenType.XML: 191>, <TokenType.YEAR: 192>, <TokenType.USERDEFINED: 193>, <TokenType.MONEY: 194>, <TokenType.SMALLMONEY: 195>, <TokenType.ROWVERSION: 196>, <TokenType.IMAGE: 197>, <TokenType.VARIANT: 198>, <TokenType.OBJECT: 199>, <TokenType.INET: 200>, <TokenType.IPADDRESS: 201>, <TokenType.IPPREFIX: 202>, <TokenType.IPV4: 203>, <TokenType.IPV6: 204>, <TokenType.ENUM: 205>, <TokenType.ENUM8: 206>, <TokenType.ENUM16: 207>, <TokenType.FIXEDSTRING: 208>, <TokenType.LOWCARDINALITY: 209>, <TokenType.NESTED: 210>, <TokenType.AGGREGATEFUNCTION: 211>, <TokenType.SIMPLEAGGREGATEFUNCTION: 212>, <TokenType.TDIGEST: 213>, <TokenType.UNKNOWN: 214>, <TokenType.VECTOR: 215>, <TokenType.DYNAMIC: 216>, <TokenType.VOID: 217>, <TokenType.ALL: 220>, <TokenType.ANTI: 221>, <TokenType.ANY: 222>, <TokenType.APPLY: 223>, <TokenType.ARRAY: 224>, <TokenType.ASC: 225>, <TokenType.ASOF: 226>, <TokenType.ATTACH: 227>, <TokenType.AUTO_INCREMENT: 228>, <TokenType.BEGIN: 229>, <TokenType.CACHE: 232>, <TokenType.CASE: 233>, <TokenType.COLLATE: 236>, <TokenType.COMMAND: 237>, <TokenType.COMMENT: 238>, <TokenType.COMMIT: 239>, <TokenType.CONSTRAINT: 241>, <TokenType.COPY: 242>, <TokenType.CUBE: 245>, <TokenType.CURRENT_DATE: 246>, <TokenType.CURRENT_DATETIME: 247>, <TokenType.CURRENT_SCHEMA: 248>, <TokenType.CURRENT_TIME: 249>, <TokenType.CURRENT_TIMESTAMP: 250>, <TokenType.CURRENT_USER: 251>, <TokenType.CURRENT_ROLE: 253>, <TokenType.CURRENT_CATALOG: 254>, <TokenType.DEFAULT: 256>, <TokenType.DELETE: 257>, <TokenType.DESC: 258>, <TokenType.DESCRIBE: 259>, <TokenType.DETACH: 260>, <TokenType.DICTIONARY: 261>, <TokenType.DIV: 264>, <TokenType.END: 267>, <TokenType.ESCAPE: 268>, <TokenType.EXECUTE: 270>, <TokenType.EXISTS: 271>, <TokenType.FALSE: 272>, <TokenType.FILE: 274>, <TokenType.FILE_FORMAT: 275>, <TokenType.FILTER: 276>, <TokenType.FINAL: 277>, <TokenType.FIRST: 278>, <TokenType.FOREIGN_KEY: 281>, <TokenType.FULL: 284>, <TokenType.FUNCTION: 285>, <TokenType.GET: 286>, <TokenType.INDEX: 297>, <TokenType.INTERVAL: 304>, <TokenType.IS: 308>, <TokenType.ISNULL: 309>, <TokenType.KEEP: 312>, <TokenType.KILL: 314>, <TokenType.LEFT: 317>, <TokenType.LIMIT: 319>, <TokenType.LIST: 320>, <TokenType.LOAD: 321>, <TokenType.LOCK: 322>, <TokenType.MAP: 323>, <TokenType.MATCH: 324>, <TokenType.MERGE: 328>, <TokenType.MODEL: 330>, <TokenType.NATURAL: 331>, <TokenType.NEXT: 332>, <TokenType.NOTHING: 333>, <TokenType.NULL: 335>, <TokenType.OBJECT_IDENTIFIER: 336>, <TokenType.OFFSET: 337>, <TokenType.OPERATOR: 340>, <TokenType.ORDINALITY: 344>, <TokenType.INOUT: 346>, <TokenType.OVER: 348>, <TokenType.OVERLAPS: 349>, <TokenType.OVERWRITE: 350>, <TokenType.PARTITION: 352>, <TokenType.PERCENT: 354>, <TokenType.PIVOT: 355>, <TokenType.PRAGMA: 360>, <TokenType.PROCEDURE: 363>, <TokenType.PSEUDO_TYPE: 365>, <TokenType.PUT: 366>, <TokenType.RANGE: 370>, <TokenType.RECURSIVE: 371>, <TokenType.REFRESH: 372>, <TokenType.RENAME: 373>, <TokenType.REPLACE: 374>, <TokenType.REFERENCES: 377>, <TokenType.RIGHT: 378>, <TokenType.ROLLUP: 382>, <TokenType.ROW: 383>, <TokenType.ROWS: 384>, <TokenType.SEMI: 387>, <TokenType.SEQUENCE: 389>, <TokenType.SET: 391>, <TokenType.SHOW: 393>, <TokenType.SOME: 395>, <TokenType.STORAGE_INTEGRATION: 400>, <TokenType.STRAIGHT_JOIN: 401>, <TokenType.STRUCT: 402>, <TokenType.TAG: 405>, <TokenType.TEMPORARY: 406>, <TokenType.TOP: 407>, <TokenType.TRUE: 409>, <TokenType.TRUNCATE: 410>, <TokenType.TRIGGER: 411>, <TokenType.TYPE: 412>, <TokenType.UNNEST: 416>, <TokenType.UNPIVOT: 417>, <TokenType.UPDATE: 418>, <TokenType.USE: 419>, <TokenType.VIEW: 423>, <TokenType.SEMANTIC_VIEW: 424>, <TokenType.VOLATILE: 425>, <TokenType.WINDOW: 429>, <TokenType.UNIQUE: 431>, <TokenType.SINK: 438>, <TokenType.SOURCE: 439>, <TokenType.ANALYZE: 440>, <TokenType.NAMESPACE: 441>, <TokenType.EXPORT: 442>}
LOG_DEFAULTS_TO_LN = True
QUERY_MODIFIER_PARSERS = {<TokenType.MATCH_RECOGNIZE: 326>: <function Parser.<lambda>>, <TokenType.PREWHERE: 361>: <function Parser.<lambda>>, <TokenType.WHERE: 428>: <function Parser.<lambda>>, <TokenType.GROUP_BY: 290>: <function Parser.<lambda>>, <TokenType.HAVING: 292>: <function Parser.<lambda>>, <TokenType.QUALIFY: 367>: <function Parser.<lambda>>, <TokenType.WINDOW: 429>: <function Parser.<lambda>>, <TokenType.ORDER_BY: 341>: <function Parser.<lambda>>, <TokenType.LIMIT: 319>: <function Parser.<lambda>>, <TokenType.FETCH: 273>: <function Parser.<lambda>>, <TokenType.OFFSET: 337>: <function Parser.<lambda>>, <TokenType.FOR: 279>: <function Parser.<lambda>>, <TokenType.LOCK: 322>: <function Parser.<lambda>>, <TokenType.TABLE_SAMPLE: 404>: <function Parser.<lambda>>, <TokenType.USING: 420>: <function Parser.<lambda>>, <TokenType.CLUSTER_BY: 235>: <function Parser.<lambda>>, <TokenType.DISTRIBUTE_BY: 263>: <function Parser.<lambda>>, <TokenType.SORT_BY: 396>: <function Parser.<lambda>>, <TokenType.CONNECT_BY: 240>: <function Parser.<lambda>>, <TokenType.START_WITH: 399>: <function Parser.<lambda>>, <TokenType.SETTINGS: 392>: <function ClickHouseParser.<lambda>>, <TokenType.FORMAT: 282>: <function ClickHouseParser.<lambda>>}
CONSTRAINT_PARSERS = {'AUTOINCREMENT': <function Parser.<lambda>>, 'AUTO_INCREMENT': <function Parser.<lambda>>, 'CASESPECIFIC': <function Parser.<lambda>>, 'CHARACTER SET': <function Parser.<lambda>>, 'CHECK': <function Parser.<lambda>>, 'COLLATE': <function Parser.<lambda>>, 'COMMENT': <function Parser.<lambda>>, 'COMPRESS': <function Parser.<lambda>>, 'CLUSTERED': <function Parser.<lambda>>, 'NONCLUSTERED': <function Parser.<lambda>>, 'DEFAULT': <function Parser.<lambda>>, 'ENCODE': <function Parser.<lambda>>, 'EPHEMERAL': <function Parser.<lambda>>, 'EXCLUDE': <function Parser.<lambda>>, 'FOREIGN KEY': <function Parser.<lambda>>, 'FORMAT': <function Parser.<lambda>>, 'GENERATED': <function Parser.<lambda>>, 'IDENTITY': <function Parser.<lambda>>, 'INLINE': <function Parser.<lambda>>, 'LIKE': <function Parser.<lambda>>, 'NOT': <function Parser.<lambda>>, 'NULL': <function Parser.<lambda>>, 'ON': <function Parser.<lambda>>, 'PATH': <function Parser.<lambda>>, 'PERIOD': <function Parser.<lambda>>, 'PRIMARY KEY': <function Parser.<lambda>>, 'REFERENCES': <function Parser.<lambda>>, 'TITLE': <function Parser.<lambda>>, 'TTL': <function Parser.<lambda>>, 'UNIQUE': <function Parser.<lambda>>, 'UPPERCASE': <function Parser.<lambda>>, 'WITH': <function Parser.<lambda>>, 'BUCKET': <function Parser.<lambda>>, 'TRUNCATE': <function Parser.<lambda>>, 'INDEX': <function ClickHouseParser.<lambda>>, 'CODEC': <function ClickHouseParser.<lambda>>, 'ASSUME': <function ClickHouseParser.<lambda>>}
ALTER_PARSERS = {'ADD': <function Parser.<lambda>>, 'AS': <function Parser.<lambda>>, 'ALTER': <function Parser.<lambda>>, 'CLUSTER BY': <function Parser.<lambda>>, 'DELETE': <function Parser.<lambda>>, 'DROP': <function Parser.<lambda>>, 'RENAME': <function Parser.<lambda>>, 'SET': <function Parser.<lambda>>, 'SWAP': <function Parser.<lambda>>, 'MODIFY': <function ClickHouseParser.<lambda>>, 'REPLACE': <function ClickHouseParser.<lambda>>}
SCHEMA_UNNAMED_CONSTRAINTS = {'FOREIGN KEY', 'TRUNCATE', 'LIKE', 'INDEX', 'PERIOD', 'PRIMARY KEY', 'UNIQUE', 'BUCKET', 'EXCLUDE'}
PLACEHOLDER_PARSERS = {<TokenType.PLACEHOLDER: 356>: <function Parser.<lambda>>, <TokenType.PARAMETER: 58>: <function Parser.<lambda>>, <TokenType.COLON: 11>: <function Parser.<lambda>>, <TokenType.L_BRACE: 5>: <function ClickHouseParser.<lambda>>}
STATEMENT_PARSERS = {<TokenType.ALTER: 219>: <function Parser.<lambda>>, <TokenType.ANALYZE: 440>: <function Parser.<lambda>>, <TokenType.BEGIN: 229>: <function Parser.<lambda>>, <TokenType.CACHE: 232>: <function Parser.<lambda>>, <TokenType.COMMENT: 238>: <function Parser.<lambda>>, <TokenType.COMMIT: 239>: <function Parser.<lambda>>, <TokenType.COPY: 242>: <function Parser.<lambda>>, <TokenType.CREATE: 243>: <function Parser.<lambda>>, <TokenType.DELETE: 257>: <function Parser.<lambda>>, <TokenType.DESC: 258>: <function Parser.<lambda>>, <TokenType.DESCRIBE: 259>: <function Parser.<lambda>>, <TokenType.DROP: 265>: <function Parser.<lambda>>, <TokenType.GRANT: 289>: <function Parser.<lambda>>, <TokenType.REVOKE: 376>: <function Parser.<lambda>>, <TokenType.INSERT: 300>: <function Parser.<lambda>>, <TokenType.KILL: 314>: <function Parser.<lambda>>, <TokenType.LOAD: 321>: <function Parser.<lambda>>, <TokenType.MERGE: 328>: <function Parser.<lambda>>, <TokenType.PIVOT: 355>: <function Parser.<lambda>>, <TokenType.PRAGMA: 360>: <function Parser.<lambda>>, <TokenType.REFRESH: 372>: <function Parser.<lambda>>, <TokenType.ROLLBACK: 381>: <function Parser.<lambda>>, <TokenType.SET: 391>: <function Parser.<lambda>>, <TokenType.TRUNCATE: 410>: <function Parser.<lambda>>, <TokenType.UNCACHE: 413>: <function Parser.<lambda>>, <TokenType.UNPIVOT: 417>: <function Parser.<lambda>>, <TokenType.UPDATE: 418>: <function Parser.<lambda>>, <TokenType.USE: 419>: <function Parser.<lambda>>, <TokenType.SEMICOLON: 19>: <function Parser.<lambda>>, <TokenType.DETACH: 260>: <function ClickHouseParser.<lambda>>}
Inherited Members
sqlglot.parser.Parser
Parser
STRUCT_TYPE_TOKENS
NESTED_TYPE_TOKENS
ENUM_TYPE_TOKENS
AGGREGATE_TYPE_TOKENS
TYPE_TOKENS
SIGNED_TO_UNSIGNED_TYPE_TOKEN
SUBQUERY_PREDICATES
SUBQUERY_TOKENS
DB_CREATABLES
CREATABLES
TRIGGER_EVENTS
ALTERABLES
COLON_PLACEHOLDER_TOKENS
ARRAY_CONSTRUCTORS
COMMENT_TABLE_ALIAS_TOKENS
UPDATE_ALIAS_TOKENS
TRIM_TYPES
IDENTIFIER_TOKENS
BRACKETS
COLUMN_POSTFIX_TOKENS
TABLE_POSTFIX_TOKENS
CONJUNCTION
ASSIGNMENT
DISJUNCTION
EQUALITY
COMPARISON
BITWISE
TERM
FACTOR
EXPONENT
TIMES
TIMESTAMPS
SET_OPERATIONS
JOIN_METHODS
JOIN_SIDES
JOIN_HINTS
TABLE_TERMINATORS
LAMBDAS
TYPED_LAMBDA_ARGS
LAMBDA_ARG_TERMINATORS
CAST_COLUMN_OPERATORS
EXPRESSION_PARSERS
UNARY_PARSERS
STRING_PARSERS
NUMERIC_PARSERS
PRIMARY_PARSERS
PIPE_SYNTAX_TRANSFORM_PARSERS
ALTER_ALTER_PARSERS
INVALID_FUNC_NAME_TOKENS
FUNCTIONS_WITH_ALIASED_ARGS
KEY_VALUE_DEFINITIONS
QUERY_MODIFIER_TOKENS
SET_PARSERS
SHOW_PARSERS
TYPE_LITERAL_PARSERS
TYPE_CONVERTERS
DDL_SELECT_TOKENS
PRE_VOLATILE_TOKENS
TRANSACTION_KIND
TRANSACTION_CHARACTERISTICS
CONFLICT_ACTIONS
TRIGGER_TIMING
TRIGGER_DEFERRABLE
CREATE_SEQUENCE
ISOLATED_LOADING_OPTIONS
USABLES
CAST_ACTIONS
SCHEMA_BINDING_OPTIONS
PROCEDURE_OPTIONS
EXECUTE_AS_OPTIONS
KEY_CONSTRAINT_OPTIONS
WINDOW_EXCLUDE_OPTIONS
INSERT_ALTERNATIVES
CLONE_KEYWORDS
HISTORICAL_DATA_PREFIX
HISTORICAL_DATA_KIND
OPCLASS_FOLLOW_KEYWORDS
OPTYPE_FOLLOW_TOKENS
TABLE_INDEX_HINT_TOKENS
VIEW_ATTRIBUTES
WINDOW_ALIAS_TOKENS
WINDOW_BEFORE_PAREN_TOKENS
WINDOW_SIDES
JSON_KEY_VALUE_SEPARATOR_TOKENS
FETCH_TOKENS
ADD_CONSTRAINT_TOKENS
DISTINCT_TOKENS
UNNEST_OFFSET_ALIAS_TOKENS
SELECT_START_TOKENS
COPY_INTO_VARLEN_OPTIONS
IS_JSON_PREDICATE_KIND
ODBC_DATETIME_LITERALS
ON_CONDITION_TOKENS
PRIVILEGE_FOLLOW_TOKENS
DESCRIBE_STYLES
SET_ASSIGNMENT_DELIMITERS
ANALYZE_STYLES
ANALYZE_EXPRESSION_PARSERS
PARTITION_KEYWORDS
AMBIGUOUS_ALIAS_TOKENS
OPERATION_MODIFIERS
RECURSIVE_CTE_SEARCH_KIND
SECURITY_PROPERTY_KEYWORDS
MODIFIABLES
STRICT_CAST
PREFIXED_PIVOT_COLUMNS
IDENTIFY_PIVOT_STRINGS
PIVOT_COLUMN_NAMING
TABLESAMPLE_CSV
DEFAULT_SAMPLING_METHOD
SET_REQUIRES_ASSIGNMENT_DELIMITER
TRIM_PATTERN_FIRST
STRING_ALIASES
SET_OP_MODIFIERS
NO_PAREN_IF_COMMANDS
JSON_ARROWS_REQUIRE_JSON_TYPE
COLON_IS_VARIANT_EXTRACT
COLON_CHAIN_IS_SINGLE_EXTRACT
VALUES_FOLLOWED_BY_PAREN
SUPPORTS_IMPLICIT_UNNEST
SUPPORTS_PARTITION_SELECTION
WRAPPED_TRANSFORM_COLUMN_CONSTRAINT
ALTER_RENAME_REQUIRES_COLUMN
ALTER_TABLE_PARTITIONS
ZONE_AWARE_TIMESTAMP_CONSTRUCTOR
MAP_KEYS_ARE_ARBITRARY_EXPRESSIONS
JSON_EXTRACT_REQUIRES_JSON_EXPRESSION
ADD_JOIN_ON_TRUE
SUPPORTS_OMITTED_INTERVAL_SPAN_UNIT
ADJACENT_STRINGS_CANNOT_BE_CONNECTED
SHOW_TRIE
SET_TRIE
error_level
error_message_context
max_errors
max_nodes
dialect
sql
errors
reset
raise_error
validate_expression
parse
parse_into
check_errors
expression
parse_set_operation
build_cast