From 76a438f2d7f4c7cb366eff6974bb20378568a2c2 Mon Sep 17 00:00:00 2001 From: vvvv Date: Fri, 28 Mar 2025 21:08:12 +0300 Subject: YQL-19747 sql functions commit_hash:9f628fe1894ee7dcdcbdd161855b668ca6e7380f --- yql/essentials/data/language/sql_functions.json | 1 + yql/essentials/data/language/update_functions.sh | 4 + yql/essentials/sql/v1/builtin.cpp | 830 +++++++++++---------- yql/essentials/sql/v1/node.h | 1 + .../sql_functions_dump/sql_functions_dump.cpp | 39 + .../tools/sql_functions_dump/test/test.py | 20 + .../tools/sql_functions_dump/test/ya.make | 15 + yql/essentials/tools/sql_functions_dump/ya.make | 20 + yql/essentials/tools/ya.make | 1 + 9 files changed, 537 insertions(+), 394 deletions(-) create mode 100644 yql/essentials/data/language/sql_functions.json create mode 100755 yql/essentials/data/language/update_functions.sh create mode 100644 yql/essentials/tools/sql_functions_dump/sql_functions_dump.cpp create mode 100644 yql/essentials/tools/sql_functions_dump/test/test.py create mode 100644 yql/essentials/tools/sql_functions_dump/test/ya.make create mode 100644 yql/essentials/tools/sql_functions_dump/ya.make diff --git a/yql/essentials/data/language/sql_functions.json b/yql/essentials/data/language/sql_functions.json new file mode 100644 index 00000000000..7fecec88f59 --- /dev/null +++ b/yql/essentials/data/language/sql_functions.json @@ -0,0 +1 @@ +{"Abs":{"kind":"Normal"},"AdaptiveDistanceHistogram":{"kind":"Agg"},"AdaptiveDistanceHistogramCDF":{"kind":"Agg"},"AdaptiveWardHistogram":{"kind":"Agg"},"AdaptiveWardHistogramCDF":{"kind":"Agg"},"AdaptiveWeightHistogram":{"kind":"Agg"},"AdaptiveWeightHistogramCDF":{"kind":"Agg"},"AddMember":{"kind":"Normal"},"AddTimezone":{"kind":"Normal"},"AggList":{"kind":"Agg"},"AggListDistinct":{"kind":"Agg"},"AggregateFlatten":{"kind":"Normal"},"AggregateTransformInput":{"kind":"Normal"},"AggregateTransformOutput":{"kind":"Normal"},"AsAtom":{"kind":"Normal"},"AsDict":{"kind":"Normal"},"AsDictStrict":{"kind":"Normal"},"AsEnum":{"kind":"Normal"},"AsList":{"kind":"Normal"},"AsListStrict":{"kind":"Normal"},"AsSet":{"kind":"Normal"},"AsSetStrict":{"kind":"Normal"},"AsTagged":{"kind":"Normal"},"AsTuple":{"kind":"Normal"},"AsVariant":{"kind":"Normal"},"AssumeNonStrict":{"kind":"Normal"},"AssumeStrict":{"kind":"Normal"},"AtomCode":{"kind":"Normal"},"Avg":{"kind":"Agg"},"AvgIf":{"kind":"Agg"},"BitAnd":{"kind":"Agg"},"BitOr":{"kind":"Agg"},"BitXor":{"kind":"Agg"},"BlockWardHistogram":{"kind":"Agg"},"BlockWardHistogramCDF":{"kind":"Agg"},"BlockWeightHistogram":{"kind":"Agg"},"BlockWeightHistogramCDF":{"kind":"Agg"},"BoolAnd":{"kind":"Agg"},"BoolOr":{"kind":"Agg"},"BoolXor":{"kind":"Agg"},"Bottom":{"kind":"Agg"},"BottomBy":{"kind":"Agg"},"ByteAt":{"kind":"Normal"},"Callable":{"kind":"Normal"},"CallableArgument":{"kind":"Normal"},"CallableArgumentType":{"kind":"Normal"},"CallableResultType":{"kind":"Normal"},"CallableType":{"kind":"Normal"},"CallableTypeComponents":{"kind":"Normal"},"CallableTypeHandle":{"kind":"Normal"},"ChooseMembers":{"kind":"Normal"},"ClearBit":{"kind":"Normal"},"Coalesce":{"kind":"Normal"},"CombineMembers":{"kind":"Normal"},"Corr":{"kind":"Agg"},"Correlation":{"kind":"Agg"},"Count":{"kind":"Agg"},"CountDistinctEstimate":{"kind":"Agg"},"CountIf":{"kind":"Agg"},"Covar":{"kind":"Agg"},"CovarP":{"kind":"Agg"},"CovarPop":{"kind":"Agg"},"CovarS":{"kind":"Agg"},"CovarSamp":{"kind":"Agg"},"Covariance":{"kind":"Agg"},"CovariancePopulation":{"kind":"Agg"},"CovarianceSample":{"kind":"Agg"},"CumeDist":{"kind":"Window"},"CurrentAuthenticatedUser":{"kind":"Normal"},"CurrentOperationId":{"kind":"Normal"},"CurrentOperationSharedId":{"kind":"Normal"},"CurrentTzDate":{"kind":"Normal"},"CurrentTzDatetime":{"kind":"Normal"},"CurrentTzTimestamp":{"kind":"Normal"},"CurrentUtcDate":{"kind":"Normal"},"CurrentUtcDatetime":{"kind":"Normal"},"CurrentUtcTimestamp":{"kind":"Normal"},"DataType":{"kind":"Normal"},"DataTypeComponents":{"kind":"Normal"},"DataTypeHandle":{"kind":"Normal"},"DenseRank":{"kind":"Window"},"DictAggregate":{"kind":"Normal"},"DictContains":{"kind":"Normal"},"DictCreate":{"kind":"Normal"},"DictHasItems":{"kind":"Normal"},"DictItems":{"kind":"Normal"},"DictKeyType":{"kind":"Normal"},"DictKeys":{"kind":"Normal"},"DictLength":{"kind":"Normal"},"DictLookup":{"kind":"Normal"},"DictPayloadType":{"kind":"Normal"},"DictPayloads":{"kind":"Normal"},"DictType":{"kind":"Normal"},"DictTypeComponents":{"kind":"Normal"},"DictTypeHandle":{"kind":"Normal"},"DynamicVariant":{"kind":"Normal"},"EmptyDict":{"kind":"Normal"},"EmptyDictTypehandle":{"kind":"Normal"},"EmptyList":{"kind":"Normal"},"EmptyListTypeHandle":{"kind":"Normal"},"EndsWith":{"kind":"Normal"},"Ensure":{"kind":"Normal"},"EnsureConvertibleTo":{"kind":"Normal"},"EnsureType":{"kind":"Normal"},"Enum":{"kind":"Normal"},"EvaluateAtom":{"kind":"Normal"},"EvaluateCode":{"kind":"Normal"},"EvaluateExpr":{"kind":"Normal"},"EvaluateType":{"kind":"Normal"},"FileContent":{"kind":"Normal"},"FilePath":{"kind":"Normal"},"Files":{"kind":"Normal"},"Find":{"kind":"Normal"},"First":{"kind":"MatchRec"},"FirstValue":{"kind":"Window"},"FlattenMembers":{"kind":"Normal"},"FlipBit":{"kind":"Normal"},"FolderPath":{"kind":"Normal"},"ForceRemoveMember":{"kind":"Normal"},"ForceRemoveMembers":{"kind":"Normal"},"ForceRenameMembers":{"kind":"Normal"},"ForceSpreadMembers":{"kind":"Normal"},"FormatCode":{"kind":"Normal"},"FormatType":{"kind":"Normal"},"FormatTypeDeffPretty":{"kind":"Normal"},"FormatTypeDiff":{"kind":"Normal"},"FromBytes":{"kind":"Normal"},"FromPg":{"kind":"Normal"},"FromYsonSimpleType":{"kind":"Normal"},"FuncCode":{"kind":"Normal"},"GatherMembers":{"kind":"Normal"},"GenericType":{"kind":"Normal"},"Grouping":{"kind":"AggKey"},"HLL":{"kind":"Agg"},"Histogram":{"kind":"Agg"},"HistogramCDF":{"kind":"Agg"},"HopEnd":{"kind":"Agg"},"HopStart":{"kind":"Agg"},"HyperLogLog":{"kind":"Agg"},"If":{"kind":"Normal"},"IfStrict":{"kind":"Normal"},"IndexOf":{"kind":"Normal"},"InstanceOf":{"kind":"Normal"},"JoinTableRow":{"kind":"Normal"},"Just":{"kind":"Normal"},"Lag":{"kind":"Window"},"LambdaArgumentsCount":{"kind":"Normal"},"LambdaCode":{"kind":"Normal"},"LambdaOptionalArgumentsCount":{"kind":"Normal"},"Last":{"kind":"MatchRec"},"LastValue":{"kind":"Window"},"Lead":{"kind":"Window"},"Length":{"kind":"Normal"},"Likely":{"kind":"Normal"},"LinearHistogram":{"kind":"Agg"},"LinearHistogramCDF":{"kind":"Agg"},"ListAggregate":{"kind":"Normal"},"ListAll":{"kind":"Normal"},"ListAny":{"kind":"Normal"},"ListAvg":{"kind":"Normal"},"ListCode":{"kind":"Normal"},"ListCollect":{"kind":"Normal"},"ListConcat":{"kind":"Normal"},"ListCreate":{"kind":"Normal"},"ListEnumerate":{"kind":"Normal"},"ListExtend":{"kind":"Normal"},"ListExtendStrict":{"kind":"Normal"},"ListExtract":{"kind":"Normal"},"ListFilter":{"kind":"Normal"},"ListFlatMap":{"kind":"Normal"},"ListFlatten":{"kind":"Normal"},"ListFold":{"kind":"Normal"},"ListFold1":{"kind":"Normal"},"ListFold1Map":{"kind":"Normal"},"ListFoldMap":{"kind":"Normal"},"ListFromRange":{"kind":"Normal"},"ListFromTuple":{"kind":"Normal"},"ListHas":{"kind":"Normal"},"ListHasItems":{"kind":"Normal"},"ListHead":{"kind":"Normal"},"ListItemType":{"kind":"Normal"},"ListLast":{"kind":"Normal"},"ListLength":{"kind":"Normal"},"ListMap":{"kind":"Normal"},"ListMax":{"kind":"Normal"},"ListMin":{"kind":"Normal"},"ListNotNull":{"kind":"Normal"},"ListReplicate":{"kind":"Normal"},"ListReverse":{"kind":"Normal"},"ListSample":{"kind":"Normal"},"ListSampleN":{"kind":"Normal"},"ListShuffle":{"kind":"Normal"},"ListSkip":{"kind":"Normal"},"ListSkipWhile":{"kind":"Normal"},"ListSkipWhileInclusive":{"kind":"Normal"},"ListSort":{"kind":"Normal"},"ListSortAsc":{"kind":"Normal"},"ListSortDesc":{"kind":"Normal"},"ListSum":{"kind":"Normal"},"ListTake":{"kind":"Normal"},"ListTakeWhile":{"kind":"Normal"},"ListTakeWhileInclusive":{"kind":"Normal"},"ListToTuple":{"kind":"Normal"},"ListTop":{"kind":"Normal"},"ListTopAsc":{"kind":"Normal"},"ListTopDesc":{"kind":"Normal"},"ListTopSort":{"kind":"Normal"},"ListTopSortAsc":{"kind":"Normal"},"ListTopSortDesc":{"kind":"Normal"},"ListType":{"kind":"Normal"},"ListTypeHandle":{"kind":"Normal"},"ListUnionAll":{"kind":"Normal"},"ListUniq":{"kind":"Normal"},"ListUniqStable":{"kind":"Normal"},"ListZip":{"kind":"Normal"},"ListZipAll":{"kind":"Normal"},"LogHistogram":{"kind":"Agg"},"LogHistogramCDF":{"kind":"Agg"},"LogarithmicHistogram":{"kind":"Agg"},"LogarithmicHistogramCDF":{"kind":"Agg"},"Max":{"kind":"Agg"},"MaxBy":{"kind":"Agg"},"MaxOf":{"kind":"Normal"},"Median":{"kind":"Agg"},"Min":{"kind":"Agg"},"MinBy":{"kind":"Agg"},"MinOf":{"kind":"Normal"},"Mode":{"kind":"Agg"},"NTile":{"kind":"Window"},"Nanvl":{"kind":"Normal"},"Nothing":{"kind":"Normal"},"NthValue":{"kind":"Window"},"NullTypeHandle":{"kind":"Normal"},"Nvl":{"kind":"Normal"},"Opaque":{"kind":"Normal"},"OptionalItemType":{"kind":"Normal"},"OptionalType":{"kind":"Normal"},"OptionalTypeHandle":{"kind":"Normal"},"ParseFile":{"kind":"Normal"},"ParseType":{"kind":"Normal"},"ParseTypeHandle":{"kind":"Normal"},"PercentRank":{"kind":"Window"},"Percentile":{"kind":"Agg"},"PgAnd":{"kind":"Normal"},"PgArray":{"kind":"Normal"},"PgCall":{"kind":"Normal"},"PgCast":{"kind":"Normal"},"PgConst":{"kind":"Normal"},"PgNot":{"kind":"Normal"},"PgOp":{"kind":"Normal"},"PgOr":{"kind":"Normal"},"PgRangeCall":{"kind":"Normal"},"PgType":{"kind":"Normal"},"PgTypeHandle":{"kind":"Normal"},"PgTypeName":{"kind":"Normal"},"Pickle":{"kind":"Normal"},"PopulationStdDev":{"kind":"Agg"},"PopulationVariance":{"kind":"Agg"},"QuoteCode":{"kind":"Normal"},"RFind":{"kind":"Normal"},"Random":{"kind":"Normal"},"RandomNumber":{"kind":"Normal"},"RandomUuid":{"kind":"Normal"},"Rank":{"kind":"Window"},"RemoveMember":{"kind":"Normal"},"RemoveMembers":{"kind":"Normal"},"RemoveTimezone":{"kind":"Normal"},"RenameMembers":{"kind":"Normal"},"ReplaceMember":{"kind":"Normal"},"ReprCode":{"kind":"Normal"},"ResourceType":{"kind":"Normal"},"ResourceTypeHandle":{"kind":"Normal"},"ResourceTypeTag":{"kind":"Normal"},"RowNumber":{"kind":"Window"},"SecureParam":{"kind":"Normal"},"SessionStart":{"kind":"Agg"},"SessionState":{"kind":"Agg"},"SessionWindow":{"kind":"Partition"},"SetBit":{"kind":"Normal"},"SetCreate":{"kind":"Normal"},"SetDifference":{"kind":"Normal"},"SetIncludes":{"kind":"Normal"},"SetIntersection":{"kind":"Normal"},"SetIsDisjoint":{"kind":"Normal"},"SetSymmetricDifference":{"kind":"Normal"},"SetUnion":{"kind":"Normal"},"Some":{"kind":"Agg"},"SpreadMembers":{"kind":"Normal"},"StablePickle":{"kind":"Normal"},"StartsWith":{"kind":"Normal"},"StaticFold":{"kind":"Normal"},"StaticFold1":{"kind":"Normal"},"StaticMap":{"kind":"Normal"},"StaticZip":{"kind":"Normal"},"StdDev":{"kind":"Agg"},"StdDevP":{"kind":"Agg"},"StdDevPop":{"kind":"Agg"},"StdDevPopulation":{"kind":"Agg"},"StdDevS":{"kind":"Agg"},"StdDevSamp":{"kind":"Agg"},"StdDevSample":{"kind":"Agg"},"StreamType":{"kind":"Normal"},"StreamTypeHandle":{"kind":"Normal"},"StructDifference":{"kind":"Normal"},"StructIntersection":{"kind":"Normal"},"StructMemberType":{"kind":"Normal"},"StructMembers":{"kind":"Normal"},"StructSymmetricDifference":{"kind":"Normal"},"StructTypeComponents":{"kind":"Normal"},"StructTypeHandle":{"kind":"Normal"},"StructUnion":{"kind":"Normal"},"SubqueryAssumeOrderBy":{"kind":"Normal"},"SubqueryExtend":{"kind":"Normal"},"SubqueryExtendFor":{"kind":"Normal"},"SubqueryMerge":{"kind":"Normal"},"SubqueryMergeFor":{"kind":"Normal"},"SubqueryOrderBy":{"kind":"Normal"},"SubqueryUnionAll":{"kind":"Normal"},"SubqueryUnionAllFor":{"kind":"Normal"},"SubqueryUnionMerge":{"kind":"Normal"},"SubqueryUnionMergeFor":{"kind":"Normal"},"Substring":{"kind":"Normal"},"Sum":{"kind":"Agg"},"SumIf":{"kind":"Agg"},"SystemMetadata":{"kind":"Normal"},"TablePath":{"kind":"Normal"},"TableRecordIndex":{"kind":"Normal"},"TableRow":{"kind":"Normal"},"TableRows":{"kind":"Produce"},"TaggedType":{"kind":"Normal"},"TaggedTypeComponents":{"kind":"Normal"},"TaggedTypeHandle":{"kind":"Normal"},"TestBit":{"kind":"Normal"},"ToBytes":{"kind":"Normal"},"ToDict":{"kind":"Normal"},"ToHashedDict":{"kind":"Normal"},"ToHashedMultiDict":{"kind":"Normal"},"ToMultiDict":{"kind":"Normal"},"ToPg":{"kind":"Normal"},"ToSet":{"kind":"Normal"},"ToSortedDict":{"kind":"Normal"},"ToSortedMultiDict":{"kind":"Normal"},"Top":{"kind":"Agg"},"TopBy":{"kind":"Agg"},"TopFreq":{"kind":"Agg"},"TryMember":{"kind":"Normal"},"TupleElementType":{"kind":"Normal"},"TupleType":{"kind":"Normal"},"TupleTypeComponents":{"kind":"Normal"},"TupleTypeHandle":{"kind":"Normal"},"TypeHandle":{"kind":"Normal"},"TypeKind":{"kind":"Normal"},"TypeOf":{"kind":"Normal"},"UDAF":{"kind":"Agg"},"UnitType":{"kind":"Normal"},"Unpickle":{"kind":"Normal"},"Untag":{"kind":"Normal"},"Unwrap":{"kind":"Normal"},"VarP":{"kind":"Agg"},"VarPop":{"kind":"Agg"},"VarS":{"kind":"Agg"},"VarSamp":{"kind":"Agg"},"Variance":{"kind":"Agg"},"VariancePopulation":{"kind":"Agg"},"VarianceSample":{"kind":"Agg"},"Variant":{"kind":"Normal"},"VariantItem":{"kind":"Normal"},"VariantType":{"kind":"Normal"},"VariantTypeHandle":{"kind":"Normal"},"VariantUnderlyingType":{"kind":"Normal"},"Version":{"kind":"Normal"},"Void":{"kind":"Normal"},"VoidType":{"kind":"Normal"},"VoidTypeHandle":{"kind":"Normal"},"Way":{"kind":"Normal"},"WeakField":{"kind":"Normal"},"WorldCode":{"kind":"Normal"}} diff --git a/yql/essentials/data/language/update_functions.sh b/yql/essentials/data/language/update_functions.sh new file mode 100755 index 00000000000..dbe8f7b5be0 --- /dev/null +++ b/yql/essentials/data/language/update_functions.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -eu +ya make ../../tools/sql_functions_dump +../../tools/sql_functions_dump/sql_functions_dump | jq -c > sql_functions.json diff --git a/yql/essentials/sql/v1/builtin.cpp b/yql/essentials/sql/v1/builtin.cpp index 6396eab0c86..d1b5e36c8c1 100644 --- a/yql/essentials/sql/v1/builtin.cpp +++ b/yql/essentials/sql/v1/builtin.cpp @@ -2701,15 +2701,29 @@ enum EAggrFuncTypeCallback { }; struct TCoreFuncInfo { - TString Name; + std::string_view Name; ui32 MinArgs; ui32 MaxArgs; }; using TAggrFuncFactoryCallback = std::function& args, EAggregateMode aggMode, bool isFactory)>; -using TAggrFuncFactoryCallbackMap = std::unordered_map>; + +struct TAggrFuncFactoryInfo { + std::string_view CanonicalSqlName; + std::string_view Kind; + TAggrFuncFactoryCallback Callback; +}; + +using TAggrFuncFactoryCallbackMap = std::unordered_map>; using TBuiltinFactoryCallback = std::function& args)>; -using TBuiltinFactoryCallbackMap = std::unordered_map>; + +struct TBuiltinFuncInfo { + std::string_view CanonicalSqlName; + std::string_view Kind; + TBuiltinFactoryCallback Callback; +}; + +using TBuiltinFactoryCallbackMap = std::unordered_map>; using TCoreFuncMap = std::unordered_map>; TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback( @@ -2880,315 +2894,315 @@ struct TBuiltinFuncData { TBuiltinFactoryCallbackMap MakeBuiltinFuncs() { TBuiltinFactoryCallbackMap builtinFuncs = { // Branching - {"if", BuildSimpleBuiltinFactoryCallback>()}, - {"ifstrict", BuildSimpleBuiltinFactoryCallback>() }, + {"if", {"If", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"ifstrict", {"IfStrict", "Normal", BuildSimpleBuiltinFactoryCallback>() }}, // String builtins - {"len", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}, - {"length", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}, - {"charlength", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}, - {"characterlength", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}, - {"substring", BuildNamedBuiltinFactoryCallback("Substring")}, - {"find", BuildNamedBuiltinFactoryCallback("Find")}, - {"rfind", BuildNamedBuiltinFactoryCallback("RFind")}, - {"byteat", BuildNamedArgcBuiltinFactoryCallback("ByteAt", 2, 2) }, - {"startswith", BuildNamedArgcBuiltinFactoryCallback("StartsWith", 2, 2)}, - {"endswith", BuildNamedArgcBuiltinFactoryCallback("EndsWith", 2, 2)}, + {"len", {"Length", "Normal", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}}, + {"length", {"Length", "Normal", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}}, + {"charlength", {"Length", "Normal", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}}, + {"characterlength", {"Length", "Normal", BuildNamedArgcBuiltinFactoryCallback("Size", 1, 1)}}, + {"substring", {"Substring", "Normal", BuildNamedBuiltinFactoryCallback("Substring")}}, + {"find", {"Find", "Normal", BuildNamedBuiltinFactoryCallback("Find")}}, + {"rfind", {"RFind", "Normal", BuildNamedBuiltinFactoryCallback("RFind")}}, + {"byteat", {"ByteAt", "Normal", BuildNamedArgcBuiltinFactoryCallback("ByteAt", 2, 2)}}, + {"startswith", {"StartsWith", "Normal", BuildNamedArgcBuiltinFactoryCallback("StartsWith", 2, 2)}}, + {"endswith", {"EndsWith", "Normal", BuildNamedArgcBuiltinFactoryCallback("EndsWith", 2, 2)}}, // Numeric builtins - {"abs", BuildNamedArgcBuiltinFactoryCallback("Abs", 1, 1) }, - {"tobytes", BuildNamedArgcBuiltinFactoryCallback("ToBytes", 1, 1) }, - {"frombytes", BuildSimpleBuiltinFactoryCallback() }, + {"abs", {"Abs", "Normal", BuildNamedArgcBuiltinFactoryCallback("Abs", 1, 1) }}, + {"tobytes", {"ToBytes", "Normal", BuildNamedArgcBuiltinFactoryCallback("ToBytes", 1, 1) }}, + {"frombytes", {"FromBytes", "Normal", BuildSimpleBuiltinFactoryCallback()}}, // Compare builtins - {"minof", BuildNamedArgcBuiltinFactoryCallback("Min", 1, -1)}, - {"maxof", BuildNamedArgcBuiltinFactoryCallback("Max", 1, -1)}, - {"greatest", BuildNamedArgcBuiltinFactoryCallback("Max", 1, -1)}, - {"least", BuildNamedArgcBuiltinFactoryCallback("Min", 1, -1)}, - {"in", BuildSimpleBuiltinFactoryCallback()}, + {"minof", {"MinOf", "Normal", BuildNamedArgcBuiltinFactoryCallback("Min", 1, -1)}}, + {"maxof", {"MaxOf", "Normal", BuildNamedArgcBuiltinFactoryCallback("Max", 1, -1)}}, + {"greatest", {"MaxOf", "Normal", BuildNamedArgcBuiltinFactoryCallback("Max", 1, -1)}}, + {"least", {"MinOf", "Normal", BuildNamedArgcBuiltinFactoryCallback("Min", 1, -1)}}, + {"in", {"", "", BuildSimpleBuiltinFactoryCallback()}}, // List builtins - {"aslist", BuildNamedArgcBuiltinFactoryCallback("AsListMayWarn", 0, -1)}, - {"asliststrict", BuildNamedArgcBuiltinFactoryCallback("AsListStrict", 0, -1) }, - {"listlength", BuildNamedArgcBuiltinFactoryCallback("Length", 1, 1)}, - {"listhasitems", BuildNamedArgcBuiltinFactoryCallback("HasItems", 1, 1)}, - {"listextend", BuildNamedArgcBuiltinFactoryCallback("ListExtend", 0, -1)}, - {"listextendstrict", BuildNamedArgcBuiltinFactoryCallback("ListExtendStrict", 0, -1)}, - {"listunionall", BuildNamedArgcBuiltinFactoryCallback("ListUnionAll", 0, -1) }, - {"listzip", BuildNamedArgcBuiltinFactoryCallback("ListZip", -1, -1)}, - {"listzipall", BuildNamedArgcBuiltinFactoryCallback("ListZipAll", -1, -1)}, - {"listenumerate", BuildNamedArgcBuiltinFactoryCallback("ListEnumerate", 1, 3)}, - {"listreverse", BuildNamedArgcBuiltinFactoryCallback("ListReverse", 1, 1)}, - {"listskip", BuildNamedArgcBuiltinFactoryCallback("ListSkip", 2, 2)}, - {"listtake", BuildNamedArgcBuiltinFactoryCallback("ListTake", 2, 2)}, - {"listhead", BuildNamedArgcBuiltinFactoryCallback("ListHead", 1, 1)}, - {"listlast", BuildNamedArgcBuiltinFactoryCallback("ListLast", 1, 1)}, - {"listsort", BuildBoolBuiltinFactoryCallback(true)}, - {"listsortasc", BuildBoolBuiltinFactoryCallback(true)}, - {"listsortdesc", BuildBoolBuiltinFactoryCallback(false)}, - {"listmap", BuildBoolBuiltinFactoryCallback(false)}, - {"listflatmap", BuildBoolBuiltinFactoryCallback(true)}, - {"listfilter", BuildNamedBuiltinFactoryCallback("ListFilter")}, - {"listany", BuildNamedArgcBuiltinFactoryCallback("ListAny", 1, 1)}, - {"listall", BuildNamedArgcBuiltinFactoryCallback("ListAll", 1, 1)}, - {"listhas", BuildNamedArgcBuiltinFactoryCallback("ListHas", 2, 2)}, - {"listmax", BuildNamedArgcBuiltinFactoryCallback("ListMax", 1, 1)}, - {"listmin", BuildNamedArgcBuiltinFactoryCallback("ListMin", 1, 1)}, - {"listsum", BuildNamedArgcBuiltinFactoryCallback("ListSum", 1, 1)}, - {"listfold", BuildNamedArgcBuiltinFactoryCallback("ListFold", 3, 3)}, - {"listfold1", BuildNamedArgcBuiltinFactoryCallback("ListFold1", 3, 3)}, - {"listfoldmap", BuildNamedArgcBuiltinFactoryCallback("ListFoldMap", 3, 3)}, - {"listfold1map", BuildNamedArgcBuiltinFactoryCallback("ListFold1Map", 3, 3)}, - {"listavg", BuildNamedArgcBuiltinFactoryCallback("ListAvg", 1, 1)}, - {"listconcat", BuildNamedArgcBuiltinFactoryCallback("ListConcat", 1, 2)}, - {"listextract", BuildSimpleBuiltinFactoryCallback()}, - {"listuniq", BuildNamedArgcBuiltinFactoryCallback("ListUniq", 1, 1)}, - {"listuniqstable", BuildNamedArgcBuiltinFactoryCallback("ListUniqStable", 1, 1)}, - {"listcreate", BuildSimpleBuiltinFactoryCallback()}, - {"listfromrange", BuildNamedArgcBuiltinFactoryCallback("ListFromRange", 2, 3) }, - {"listreplicate", BuildNamedArgcBuiltinFactoryCallback("Replicate", 2, 2) }, - {"listtakewhile", BuildNamedBuiltinFactoryCallback("ListTakeWhile") }, - {"listskipwhile", BuildNamedBuiltinFactoryCallback("ListSkipWhile") }, - {"listtakewhileinclusive", BuildNamedBuiltinFactoryCallback("ListTakeWhileInclusive") }, - {"listskipwhileinclusive", BuildNamedBuiltinFactoryCallback("ListSkipWhileInclusive") }, - {"listcollect", BuildNamedArgcBuiltinFactoryCallback("ListCollect", 1, 1) }, - {"listnotnull", BuildNamedArgcBuiltinFactoryCallback("ListNotNull", 1, 1)}, - {"listflatten", BuildNamedArgcBuiltinFactoryCallback("ListFlatten", 1, 1)}, - {"listtop", BuildNamedArgcBuiltinFactoryCallback("ListTop", 2, 3)}, - {"listtopasc", BuildNamedArgcBuiltinFactoryCallback("ListTopAsc", 2, 3)}, - {"listtopdesc", BuildNamedArgcBuiltinFactoryCallback("ListTopDesc", 2, 3)}, - {"listtopsort", BuildNamedArgcBuiltinFactoryCallback("ListTopSort", 2, 3)}, - {"listtopsortasc", BuildNamedArgcBuiltinFactoryCallback("ListTopSortAsc", 2, 3)}, - {"listtopsortdesc", BuildNamedArgcBuiltinFactoryCallback("ListTopSortDesc", 2, 3)}, - {"listsample", BuildNamedArgcBuiltinFactoryCallback("ListSample", 2, 3)}, - {"listsamplen", BuildNamedArgcBuiltinFactoryCallback("ListSampleN", 2, 3)}, - {"listshuffle", BuildNamedArgcBuiltinFactoryCallback("ListShuffle", 1, 2)}, + {"aslist", {"AsList", "Normal", BuildNamedArgcBuiltinFactoryCallback("AsListMayWarn", 0, -1)}}, + {"asliststrict", {"AsListStrict", "Normal", BuildNamedArgcBuiltinFactoryCallback("AsListStrict", 0, -1) }}, + {"listlength", {"ListLength", "Normal", BuildNamedArgcBuiltinFactoryCallback("Length", 1, 1)}}, + {"listhasitems", {"ListHasItems", "Normal", BuildNamedArgcBuiltinFactoryCallback("HasItems", 1, 1)}}, + {"listextend", {"ListExtend", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListExtend", 0, -1)}}, + {"listextendstrict", {"ListExtendStrict", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListExtendStrict", 0, -1)}}, + {"listunionall", {"ListUnionAll", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListUnionAll", 0, -1)}}, + {"listzip", {"ListZip", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListZip", -1, -1)}}, + {"listzipall", {"ListZipAll", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListZipAll", -1, -1)}}, + {"listenumerate", {"ListEnumerate", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListEnumerate", 1, 3)}}, + {"listreverse", {"ListReverse", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListReverse", 1, 1)}}, + {"listskip", {"ListSkip", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListSkip", 2, 2)}}, + {"listtake", {"ListTake", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTake", 2, 2)}}, + {"listhead", {"ListHead", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListHead", 1, 1)}}, + {"listlast", {"ListLast", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListLast", 1, 1)}}, + {"listsort", {"ListSort", "Normal", BuildBoolBuiltinFactoryCallback(true)}}, + {"listsortasc", {"ListSortAsc", "Normal", BuildBoolBuiltinFactoryCallback(true)}}, + {"listsortdesc", {"ListSortDesc", "Normal", BuildBoolBuiltinFactoryCallback(false)}}, + {"listmap", {"ListMap", "Normal", BuildBoolBuiltinFactoryCallback(false)}}, + {"listflatmap", {"ListFlatMap", "Normal", BuildBoolBuiltinFactoryCallback(true)}}, + {"listfilter", {"ListFilter", "Normal", BuildNamedBuiltinFactoryCallback("ListFilter")}}, + {"listany", {"ListAny", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListAny", 1, 1)}}, + {"listall", {"ListAll", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListAll", 1, 1)}}, + {"listhas", {"ListHas", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListHas", 2, 2)}}, + {"listmax", {"ListMax", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListMax", 1, 1)}}, + {"listmin", {"ListMin", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListMin", 1, 1)}}, + {"listsum", {"ListSum", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListSum", 1, 1)}}, + {"listfold", {"ListFold", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListFold", 3, 3)}}, + {"listfold1", {"ListFold1", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListFold1", 3, 3)}}, + {"listfoldmap", {"ListFoldMap", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListFoldMap", 3, 3)}}, + {"listfold1map", {"ListFold1Map", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListFold1Map", 3, 3)}}, + {"listavg", {"ListAvg", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListAvg", 1, 1)}}, + {"listconcat", {"ListConcat", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListConcat", 1, 2)}}, + {"listextract", {"ListExtract", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"listuniq", {"ListUniq", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListUniq", 1, 1)}}, + {"listuniqstable", {"ListUniqStable", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListUniqStable", 1, 1)}}, + {"listcreate", {"ListCreate", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"listfromrange", {"ListFromRange", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListFromRange", 2, 3)}}, + {"listreplicate", {"ListReplicate", "Normal", BuildNamedArgcBuiltinFactoryCallback("Replicate", 2, 2)}}, + {"listtakewhile", {"ListTakeWhile", "Normal", BuildNamedBuiltinFactoryCallback("ListTakeWhile")}}, + {"listskipwhile", {"ListSkipWhile", "Normal", BuildNamedBuiltinFactoryCallback("ListSkipWhile")}}, + {"listtakewhileinclusive", {"ListTakeWhileInclusive", "Normal", BuildNamedBuiltinFactoryCallback("ListTakeWhileInclusive")}}, + {"listskipwhileinclusive", {"ListSkipWhileInclusive", "Normal", BuildNamedBuiltinFactoryCallback("ListSkipWhileInclusive")}}, + {"listcollect", {"ListCollect", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListCollect", 1, 1)}}, + {"listnotnull", {"ListNotNull", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListNotNull", 1, 1)}}, + {"listflatten", {"ListFlatten", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListFlatten", 1, 1)}}, + {"listtop", {"ListTop", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTop", 2, 3)}}, + {"listtopasc", {"ListTopAsc", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTopAsc", 2, 3)}}, + {"listtopdesc", {"ListTopDesc", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTopDesc", 2, 3)}}, + {"listtopsort", {"ListTopSort", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTopSort", 2, 3)}}, + {"listtopsortasc", {"ListTopSortAsc", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTopSortAsc", 2, 3)}}, + {"listtopsortdesc", {"ListTopSortDesc", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTopSortDesc", 2, 3)}}, + {"listsample", {"ListSample", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListSample", 2, 3)}}, + {"listsamplen", {"ListSampleN", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListSampleN", 2, 3)}}, + {"listshuffle", {"ListShuffle", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListShuffle", 1, 2)}}, // Dict builtins - {"dictlength", BuildNamedArgcBuiltinFactoryCallback("Length", 1, 1)}, - {"dicthasitems", BuildNamedArgcBuiltinFactoryCallback("HasItems", 1, 1)}, - {"dictcreate", BuildSimpleBuiltinFactoryCallback()}, - {"setcreate", BuildSimpleBuiltinFactoryCallback()}, - {"asdict", BuildNamedArgcBuiltinFactoryCallback("AsDictMayWarn", 0, -1)}, - {"asdictstrict", BuildNamedArgcBuiltinFactoryCallback("AsDictStrict", 0, -1)}, - {"asset", BuildNamedArgcBuiltinFactoryCallback("AsSetMayWarn", 0, -1)}, - {"assetstrict", BuildNamedArgcBuiltinFactoryCallback("AsSetStrict", 0, -1)}, - {"todict", BuildNamedBuiltinFactoryCallback>("One")}, - {"tomultidict", BuildNamedBuiltinFactoryCallback>("Many")}, - {"tosorteddict", BuildNamedBuiltinFactoryCallback>("One")}, - {"tosortedmultidict", BuildNamedBuiltinFactoryCallback>("Many")}, - {"tohasheddict", BuildNamedBuiltinFactoryCallback>("One")}, - {"tohashedmultidict", BuildNamedBuiltinFactoryCallback>("Many")}, - {"dictkeys", BuildNamedArgcBuiltinFactoryCallback("DictKeys", 1, 1) }, - {"dictpayloads", BuildNamedArgcBuiltinFactoryCallback("DictPayloads", 1, 1) }, - {"dictitems", BuildNamedArgcBuiltinFactoryCallback("DictItems", 1, 1) }, - {"dictlookup", BuildNamedArgcBuiltinFactoryCallback("Lookup", 2, 2) }, - {"dictcontains", BuildNamedArgcBuiltinFactoryCallback("Contains", 2, 2) }, + {"dictlength", {"DictLength", "Normal", BuildNamedArgcBuiltinFactoryCallback("Length", 1, 1)}}, + {"dicthasitems", {"DictHasItems", "Normal", BuildNamedArgcBuiltinFactoryCallback("HasItems", 1, 1)}}, + {"dictcreate", {"DictCreate", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"setcreate", {"SetCreate", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"asdict", {"AsDict", "Normal", BuildNamedArgcBuiltinFactoryCallback("AsDictMayWarn", 0, -1)}}, + {"asdictstrict", {"AsDictStrict", "Normal", BuildNamedArgcBuiltinFactoryCallback("AsDictStrict", 0, -1)}}, + {"asset", {"AsSet", "Normal", BuildNamedArgcBuiltinFactoryCallback("AsSetMayWarn", 0, -1)}}, + {"assetstrict", {"AsSetStrict", "Normal", BuildNamedArgcBuiltinFactoryCallback("AsSetStrict", 0, -1)}}, + {"todict", {"ToDict", "Normal", BuildNamedBuiltinFactoryCallback>("One")}}, + {"tomultidict", {"ToMultiDict", "Normal", BuildNamedBuiltinFactoryCallback>("Many")}}, + {"tosorteddict", {"ToSortedDict", "Normal", BuildNamedBuiltinFactoryCallback>("One")}}, + {"tosortedmultidict", {"ToSortedMultiDict", "Normal", BuildNamedBuiltinFactoryCallback>("Many")}}, + {"tohasheddict", {"ToHashedDict", "Normal", BuildNamedBuiltinFactoryCallback>("One")}}, + {"tohashedmultidict", {"ToHashedMultiDict", "Normal", BuildNamedBuiltinFactoryCallback>("Many")}}, + {"dictkeys", {"DictKeys", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictKeys", 1, 1)}}, + {"dictpayloads", {"DictPayloads", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictPayloads", 1, 1)}}, + {"dictitems", {"DictItems", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictItems", 1, 1)}}, + {"dictlookup", {"DictLookup", "Normal", BuildNamedArgcBuiltinFactoryCallback("Lookup", 2, 2) }}, + {"dictcontains", {"DictContains", "Normal", BuildNamedArgcBuiltinFactoryCallback("Contains", 2, 2)}}, // Atom builtins - {"asatom", BuildSimpleBuiltinFactoryCallback()}, - {"secureparam", BuildNamedBuiltinFactoryCallback("SecureParam")}, - - {"void", BuildNamedArgcBuiltinFactoryCallback("Void", 0, 0)}, - {"emptylist", BuildNamedArgcBuiltinFactoryCallback("EmptyList", 0, 0)}, - {"emptydict", BuildNamedArgcBuiltinFactoryCallback("EmptyDict", 0, 0)}, - {"callable", BuildNamedArgcBuiltinFactoryCallback("Callable", 2, 2)}, - {"way", BuildNamedArgcBuiltinFactoryCallback("Way", 1, 1) }, - {"dynamicvariant", BuildNamedArgcBuiltinFactoryCallback("DynamicVariant", 3, 3) }, - {"variant", BuildSimpleBuiltinFactoryCallback() }, - {"enum", BuildSimpleBuiltinFactoryCallback() }, - {"asvariant", BuildSimpleBuiltinFactoryCallback() }, - {"asenum", BuildSimpleBuiltinFactoryCallback() }, - {"astagged", BuildSimpleBuiltinFactoryCallback() }, - {"untag", BuildSimpleBuiltinFactoryCallback() }, - {"parsetype", BuildSimpleBuiltinFactoryCallback() }, - {"ensuretype", BuildSimpleBuiltinFactoryCallback>() }, - {"ensureconvertibleto", BuildSimpleBuiltinFactoryCallback>() }, - {"ensure", BuildNamedArgcBuiltinFactoryCallback("Ensure", 2, 3) }, - {"evaluateexpr", BuildNamedArgcBuiltinFactoryCallback("EvaluateExpr", 1, 1) }, - {"evaluateatom", BuildNamedArgcBuiltinFactoryCallback("EvaluateAtom", 1, 1) }, - {"evaluatetype", BuildNamedArgcBuiltinFactoryCallback("EvaluateType", 1, 1) }, - {"unwrap", BuildNamedArgcBuiltinFactoryCallback("Unwrap", 1, 2) }, - {"just", BuildNamedArgcBuiltinFactoryCallback("Just", 1, 1) }, - {"nothing", BuildNamedArgcBuiltinFactoryCallback("Nothing", 1, 1) }, - {"formattype", BuildNamedArgcBuiltinFactoryCallback("FormatType", 1, 1) }, - {"formattypediff", BuildNamedBuiltinFactoryCallback>("FormatTypeDiff") }, - {"formattypediffpretty", BuildNamedBuiltinFactoryCallback>("FormatTypeDiffPretty") }, - {"pgtype", BuildSimpleBuiltinFactoryCallback() }, - {"pgconst", BuildSimpleBuiltinFactoryCallback() }, - {"pgop", BuildSimpleBuiltinFactoryCallback() }, - {"pgcall", BuildSimpleBuiltinFactoryCallback>() }, - {"pgrangecall", BuildSimpleBuiltinFactoryCallback>() }, - {"pgcast", BuildSimpleBuiltinFactoryCallback() }, - {"frompg", BuildNamedArgcBuiltinFactoryCallback("FromPg", 1, 1) }, - {"topg", BuildNamedArgcBuiltinFactoryCallback("ToPg", 1, 1) }, - {"pgor", BuildNamedArgcBuiltinFactoryCallback("PgOr", 2, 2) }, - {"pgand", BuildNamedArgcBuiltinFactoryCallback("PgAnd", 2, 2) }, - {"pgnot", BuildNamedArgcBuiltinFactoryCallback("PgNot", 1, 1) }, - {"pgarray", BuildNamedArgcBuiltinFactoryCallback("PgArray", 1, -1) }, - {"typeof", BuildNamedArgcBuiltinFactoryCallback("TypeOf", 1, 1) }, - {"instanceof", BuildNamedArgcBuiltinFactoryCallback("InstanceOf", 1, 1) }, - {"datatype", BuildSimpleBuiltinFactoryCallback() }, - {"optionaltype", BuildNamedArgcBuiltinFactoryCallback("OptionalType", 1, 1) }, - {"listtype", BuildNamedArgcBuiltinFactoryCallback("ListType", 1, 1) }, - {"streamtype", BuildNamedArgcBuiltinFactoryCallback("StreamType", 1, 1) }, - {"dicttype", BuildNamedArgcBuiltinFactoryCallback("DictType", 2, 2) }, - {"tupletype", BuildNamedArgcBuiltinFactoryCallback("TupleType", 0, -1) }, - {"generictype", BuildNamedArgcBuiltinFactoryCallback("GenericType", 0, 0) }, - {"unittype", BuildNamedArgcBuiltinFactoryCallback("UnitType", 0, 0) }, - {"voidtype", BuildNamedArgcBuiltinFactoryCallback("VoidType", 0, 0) }, - {"resourcetype", BuildSimpleBuiltinFactoryCallback() }, - {"taggedtype", BuildSimpleBuiltinFactoryCallback() }, - {"varianttype", BuildNamedArgcBuiltinFactoryCallback("VariantType", 1, 1) }, - {"callabletype", BuildSimpleBuiltinFactoryCallback() }, - {"optionalitemtype", BuildNamedArgcBuiltinFactoryCallback("OptionalItemType", 1, 1) }, - {"listitemtype", BuildNamedArgcBuiltinFactoryCallback("ListItemType", 1, 1) }, - {"streamitemtype", BuildNamedArgcBuiltinFactoryCallback("StreamItemType", 1, 1) }, - {"dictkeytype", BuildNamedArgcBuiltinFactoryCallback("DictKeyType", 1, 1) }, - {"dictpayloadtype", BuildNamedArgcBuiltinFactoryCallback("DictPayloadType", 1, 1) }, - {"tupleelementtype", BuildSimpleBuiltinFactoryCallback() }, - {"structmembertype", BuildSimpleBuiltinFactoryCallback() }, - {"callableresulttype", BuildNamedArgcBuiltinFactoryCallback("CallableResultType", 1, 1) }, - {"callableargumenttype", BuildSimpleBuiltinFactoryCallback() }, - {"variantunderlyingtype", BuildNamedArgcBuiltinFactoryCallback("VariantUnderlyingType", 1, 1) }, - {"variantitem", BuildNamedArgcBuiltinFactoryCallback("SqlVariantItem", 1, 1) }, - {"fromysonsimpletype", BuildNamedArgcBuiltinFactoryCallback("FromYsonSimpleType", 2, 2) }, - {"currentutcdate", BuildNamedDepsArgcBuiltinFactoryCallback(0, "CurrentUtcDate", 0, -1) }, - {"currentutcdatetime", BuildNamedDepsArgcBuiltinFactoryCallback(0, "CurrentUtcDatetime", 0, -1) }, - {"currentutctimestamp", BuildNamedDepsArgcBuiltinFactoryCallback(0, "CurrentUtcTimestamp", 0, -1) }, - { "currenttzdate", BuildNamedDepsArgcBuiltinFactoryCallback(1, "CurrentTzDate", 1, -1) }, - { "currenttzdatetime", BuildNamedDepsArgcBuiltinFactoryCallback(1, "CurrentTzDatetime", 1, -1) }, - { "currenttztimestamp", BuildNamedDepsArgcBuiltinFactoryCallback(1, "CurrentTzTimestamp", 1, -1) }, - {"currentoperationid", BuildNamedArgcBuiltinFactoryCallback("CurrentOperationId", 0, 0) }, - {"currentoperationsharedid", BuildNamedArgcBuiltinFactoryCallback("CurrentOperationSharedId", 0, 0) }, - {"currentauthenticateduser", BuildNamedArgcBuiltinFactoryCallback("CurrentAuthenticatedUser", 0, 0) }, - {"addtimezone", BuildSimpleBuiltinFactoryCallback() }, - {"removetimezone", BuildNamedArgcBuiltinFactoryCallback("RemoveTimezone", 1, 1) }, - {"pickle", BuildNamedArgcBuiltinFactoryCallback("Pickle", 1, 1) }, - {"stablepickle", BuildNamedArgcBuiltinFactoryCallback("StablePickle", 1, 1) }, - {"unpickle", BuildNamedArgcBuiltinFactoryCallback("Unpickle", 2, 2) }, - - {"typehandle", BuildNamedArgcBuiltinFactoryCallback("TypeHandle", 1, 1) }, - {"parsetypehandle", BuildNamedArgcBuiltinFactoryCallback("ParseTypeHandle", 1, 1) }, - {"typekind", BuildNamedArgcBuiltinFactoryCallback("TypeKind", 1, 1) }, - {"datatypecomponents", BuildNamedArgcBuiltinFactoryCallback("DataTypeComponents", 1, 1) }, - {"datatypehandle", BuildNamedArgcBuiltinFactoryCallback("DataTypeHandle", 1, 1) }, - {"optionaltypehandle", BuildNamedArgcBuiltinFactoryCallback("OptionalTypeHandle", 1, 1) }, - {"listtypehandle", BuildNamedArgcBuiltinFactoryCallback("ListTypeHandle", 1, 1) }, - {"streamtypehandle", BuildNamedArgcBuiltinFactoryCallback("StreamTypeHandle", 1, 1) }, - {"tupletypecomponents", BuildNamedArgcBuiltinFactoryCallback("TupleTypeComponents", 1, 1) }, - {"tupletypehandle", BuildNamedArgcBuiltinFactoryCallback("TupleTypeHandle", 1, 1) }, - {"structtypecomponents", BuildNamedArgcBuiltinFactoryCallback("StructTypeComponents", 1, 1) }, - {"structtypehandle", BuildNamedArgcBuiltinFactoryCallback("StructTypeHandle", 1, 1) }, - {"dicttypecomponents", BuildNamedArgcBuiltinFactoryCallback("DictTypeComponents", 1, 1) }, - {"dicttypehandle", BuildNamedArgcBuiltinFactoryCallback("DictTypeHandle", 2, 2) }, - {"resourcetypetag", BuildNamedArgcBuiltinFactoryCallback("ResourceTypeTag", 1, 1) }, - {"resourcetypehandle", BuildNamedArgcBuiltinFactoryCallback("ResourceTypeHandle", 1, 1) }, - {"taggedtypecomponents", BuildNamedArgcBuiltinFactoryCallback("TaggedTypeComponents", 1, 1) }, - {"taggedtypehandle", BuildNamedArgcBuiltinFactoryCallback("TaggedTypeHandle", 2, 2) }, - {"varianttypehandle", BuildNamedArgcBuiltinFactoryCallback("VariantTypeHandle", 1, 1) }, - {"voidtypehandle", BuildNamedArgcBuiltinFactoryCallback("VoidTypeHandle", 0, 0) }, - {"nulltypehandle", BuildNamedArgcBuiltinFactoryCallback("NullTypeHandle", 0, 0) }, - {"emptylisttypehandle", BuildNamedArgcBuiltinFactoryCallback("EmptyListTypeHandle", 0, 0) }, - {"emptydicttypehandle", BuildNamedArgcBuiltinFactoryCallback("EmptyDictTypeHandle", 0, 0) }, - {"callabletypecomponents", BuildNamedArgcBuiltinFactoryCallback("CallableTypeComponents", 1, 1) }, - {"callableargument", BuildNamedArgcBuiltinFactoryCallback("CallableArgument", 1, 3) }, - {"callabletypehandle", BuildNamedArgcBuiltinFactoryCallback("CallableTypeHandle", 2, 4) }, - {"pgtypename", BuildNamedArgcBuiltinFactoryCallback("PgTypeName", 1, 1) }, - {"pgtypehandle", BuildNamedArgcBuiltinFactoryCallback("PgTypeHandle", 1, 1) }, - {"formatcode", BuildNamedArgcBuiltinFactoryCallback("FormatCode", 1, 1) }, - {"worldcode", BuildNamedArgcBuiltinFactoryCallback("WorldCode", 0, 0) }, - {"atomcode", BuildNamedArgcBuiltinFactoryCallback("AtomCode", 1, 1) }, - {"listcode", BuildNamedArgcBuiltinFactoryCallback("ListCode", 0, -1) }, - {"funccode", BuildNamedArgcBuiltinFactoryCallback("FuncCode", 1, -1) }, - {"lambdacode", BuildNamedArgcBuiltinFactoryCallback("LambdaCode", 1, 2) }, - {"evaluatecode", BuildNamedArgcBuiltinFactoryCallback("EvaluateCode", 1, 1) }, - {"reprcode", BuildNamedArgcBuiltinFactoryCallback("ReprCode", 1, 1) }, - {"quotecode", BuildNamedArgcBuiltinFactoryCallback("QuoteCode", 1, 1) }, - {"lambdaargumentscount", BuildNamedArgcBuiltinFactoryCallback("LambdaArgumentsCount", 1, 1) }, - {"lambdaoptionalargumentscount", BuildNamedArgcBuiltinFactoryCallback("LambdaOptionalArgumentsCount", 1, 1) }, - {"subqueryextend", BuildNamedArgcBuiltinFactoryCallback("SubqueryExtend", 1, -1) }, - {"subqueryunionall", BuildNamedArgcBuiltinFactoryCallback("SubqueryUnionAll", 1, -1) }, - {"subquerymerge", BuildNamedArgcBuiltinFactoryCallback("SubqueryMerge", 1, -1) }, - {"subqueryunionmerge", BuildNamedArgcBuiltinFactoryCallback("SubqueryUnionMerge", 1, -1) }, - {"subqueryextendfor", BuildSimpleBuiltinFactoryCallback>() }, - {"subqueryunionallfor", BuildSimpleBuiltinFactoryCallback>() }, - {"subquerymergefor", BuildSimpleBuiltinFactoryCallback>() }, - {"subqueryunionmergefor", BuildSimpleBuiltinFactoryCallback>() }, - {"subqueryorderby", BuildSimpleBuiltinFactoryCallback>() }, - {"subqueryassumeorderby", BuildSimpleBuiltinFactoryCallback>() }, + {"asatom", {"AsAtom", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"secureparam", {"SecureParam", "Normal", BuildNamedBuiltinFactoryCallback("SecureParam")}}, + + {"void", {"Void", "Normal", BuildNamedArgcBuiltinFactoryCallback("Void", 0, 0)}}, + {"emptylist", {"EmptyList", "Normal", BuildNamedArgcBuiltinFactoryCallback("EmptyList", 0, 0)}}, + {"emptydict", {"EmptyDict", "Normal", BuildNamedArgcBuiltinFactoryCallback("EmptyDict", 0, 0)}}, + {"callable", {"Callable", "Normal", BuildNamedArgcBuiltinFactoryCallback("Callable", 2, 2)}}, + {"way", {"Way", "Normal", BuildNamedArgcBuiltinFactoryCallback("Way", 1, 1)}}, + {"dynamicvariant", {"DynamicVariant", "Normal", BuildNamedArgcBuiltinFactoryCallback("DynamicVariant", 3, 3)}}, + {"variant", {"Variant", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"enum", {"Enum", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"asvariant", {"AsVariant", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"asenum", {"AsEnum", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"astagged", {"AsTagged", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"untag", {"Untag", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"parsetype", {"ParseType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"ensuretype", {"EnsureType", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"ensureconvertibleto", {"EnsureConvertibleTo", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"ensure", {"Ensure", "Normal", BuildNamedArgcBuiltinFactoryCallback("Ensure", 2, 3)}}, + {"evaluateexpr", {"EvaluateExpr", "Normal", BuildNamedArgcBuiltinFactoryCallback("EvaluateExpr", 1, 1)}}, + {"evaluateatom", {"EvaluateAtom", "Normal", BuildNamedArgcBuiltinFactoryCallback("EvaluateAtom", 1, 1)}}, + {"evaluatetype", {"EvaluateType", "Normal", BuildNamedArgcBuiltinFactoryCallback("EvaluateType", 1, 1)}}, + {"unwrap", {"Unwrap", "Normal", BuildNamedArgcBuiltinFactoryCallback("Unwrap", 1, 2)}}, + {"just", {"Just", "Normal", BuildNamedArgcBuiltinFactoryCallback("Just", 1, 1)}}, + {"nothing", {"Nothing", "Normal", BuildNamedArgcBuiltinFactoryCallback("Nothing", 1, 1)}}, + {"formattype", {"FormatType", "Normal", BuildNamedArgcBuiltinFactoryCallback("FormatType", 1, 1)}}, + {"formattypediff", {"FormatTypeDiff", "Normal", BuildNamedBuiltinFactoryCallback>("FormatTypeDiff")}}, + {"formattypediffpretty", {"FormatTypeDeffPretty", "Normal", BuildNamedBuiltinFactoryCallback>("FormatTypeDiffPretty")}}, + {"pgtype", {"PgType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"pgconst", {"PgConst", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"pgop", {"PgOp", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"pgcall", {"PgCall", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"pgrangecall", {"PgRangeCall", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"pgcast", {"PgCast", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"frompg", {"FromPg", "Normal", BuildNamedArgcBuiltinFactoryCallback("FromPg", 1, 1)}}, + {"topg", {"ToPg", "Normal", BuildNamedArgcBuiltinFactoryCallback("ToPg", 1, 1)}}, + {"pgor", {"PgOr", "Normal", BuildNamedArgcBuiltinFactoryCallback("PgOr", 2, 2)}}, + {"pgand", {"PgAnd", "Normal", BuildNamedArgcBuiltinFactoryCallback("PgAnd", 2, 2)}}, + {"pgnot", {"PgNot", "Normal", BuildNamedArgcBuiltinFactoryCallback("PgNot", 1, 1)}}, + {"pgarray", {"PgArray", "Normal", BuildNamedArgcBuiltinFactoryCallback("PgArray", 1, -1)}}, + {"typeof", {"TypeOf", "Normal", BuildNamedArgcBuiltinFactoryCallback("TypeOf", 1, 1)}}, + {"instanceof", {"InstanceOf", "Normal", BuildNamedArgcBuiltinFactoryCallback("InstanceOf", 1, 1)}}, + {"datatype", {"DataType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"optionaltype", {"OptionalType", "Normal", BuildNamedArgcBuiltinFactoryCallback("OptionalType", 1, 1)}}, + {"listtype", {"ListType", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListType", 1, 1)}}, + {"streamtype", {"StreamType", "Normal", BuildNamedArgcBuiltinFactoryCallback("StreamType", 1, 1)}}, + {"dicttype", {"DictType", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictType", 2, 2)}}, + {"tupletype", {"TupleType", "Normal", BuildNamedArgcBuiltinFactoryCallback("TupleType", 0, -1)}}, + {"generictype", {"GenericType", "Normal", BuildNamedArgcBuiltinFactoryCallback("GenericType", 0, 0)}}, + {"unittype", {"UnitType", "Normal", BuildNamedArgcBuiltinFactoryCallback("UnitType", 0, 0)}}, + {"voidtype", {"VoidType", "Normal", BuildNamedArgcBuiltinFactoryCallback("VoidType", 0, 0)}}, + {"resourcetype", {"ResourceType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"taggedtype", {"TaggedType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"varianttype", {"VariantType", "Normal", BuildNamedArgcBuiltinFactoryCallback("VariantType", 1, 1)}}, + {"callabletype", {"CallableType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"optionalitemtype", {"OptionalItemType", "Normal", BuildNamedArgcBuiltinFactoryCallback("OptionalItemType", 1, 1)}}, + {"listitemtype", {"ListItemType", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListItemType", 1, 1)}}, + {"streamitemtype", {"ListItemType", "Normal", BuildNamedArgcBuiltinFactoryCallback("StreamItemType", 1, 1)}}, + {"dictkeytype", {"DictKeyType", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictKeyType", 1, 1)}}, + {"dictpayloadtype", {"DictPayloadType", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictPayloadType", 1, 1)}}, + {"tupleelementtype", {"TupleElementType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"structmembertype", {"StructMemberType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"callableresulttype", {"CallableResultType", "Normal", BuildNamedArgcBuiltinFactoryCallback("CallableResultType", 1, 1)}}, + {"callableargumenttype", {"CallableArgumentType", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"variantunderlyingtype", {"VariantUnderlyingType", "Normal", BuildNamedArgcBuiltinFactoryCallback("VariantUnderlyingType", 1, 1)}}, + {"variantitem", {"VariantItem", "Normal", BuildNamedArgcBuiltinFactoryCallback("SqlVariantItem", 1, 1)}}, + {"fromysonsimpletype", {"FromYsonSimpleType", "Normal", BuildNamedArgcBuiltinFactoryCallback("FromYsonSimpleType", 2, 2)}}, + {"currentutcdate", {"CurrentUtcDate", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(0, "CurrentUtcDate", 0, -1)}}, + {"currentutcdatetime", {"CurrentUtcDatetime", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(0, "CurrentUtcDatetime", 0, -1)}}, + {"currentutctimestamp", {"CurrentUtcTimestamp", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(0, "CurrentUtcTimestamp", 0, -1)}}, + {"currenttzdate", {"CurrentTzDate", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(1, "CurrentTzDate", 1, -1)}}, + {"currenttzdatetime", {"CurrentTzDatetime", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(1, "CurrentTzDatetime", 1, -1)}}, + {"currenttztimestamp", {"CurrentTzTimestamp", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(1, "CurrentTzTimestamp", 1, -1)}}, + {"currentoperationid", {"CurrentOperationId", "Normal", BuildNamedArgcBuiltinFactoryCallback("CurrentOperationId", 0, 0)}}, + {"currentoperationsharedid", {"CurrentOperationSharedId", "Normal", BuildNamedArgcBuiltinFactoryCallback("CurrentOperationSharedId", 0, 0)}}, + {"currentauthenticateduser", {"CurrentAuthenticatedUser", "Normal", BuildNamedArgcBuiltinFactoryCallback("CurrentAuthenticatedUser", 0, 0)}}, + {"addtimezone", {"AddTimezone", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"removetimezone", {"RemoveTimezone", "Normal", BuildNamedArgcBuiltinFactoryCallback("RemoveTimezone", 1, 1)}}, + {"pickle", {"Pickle", "Normal", BuildNamedArgcBuiltinFactoryCallback("Pickle", 1, 1)}}, + {"stablepickle", {"StablePickle", "Normal", BuildNamedArgcBuiltinFactoryCallback("StablePickle", 1, 1)}}, + {"unpickle", {"Unpickle", "Normal", BuildNamedArgcBuiltinFactoryCallback("Unpickle", 2, 2)}}, + + {"typehandle", {"TypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("TypeHandle", 1, 1)}}, + {"parsetypehandle", {"ParseTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("ParseTypeHandle", 1, 1)}}, + {"typekind", {"TypeKind", "Normal", BuildNamedArgcBuiltinFactoryCallback("TypeKind", 1, 1)}}, + {"datatypecomponents", {"DataTypeComponents", "Normal", BuildNamedArgcBuiltinFactoryCallback("DataTypeComponents", 1, 1)}}, + {"datatypehandle", {"DataTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("DataTypeHandle", 1, 1)}}, + {"optionaltypehandle", {"OptionalTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("OptionalTypeHandle", 1, 1)}}, + {"listtypehandle", {"ListTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListTypeHandle", 1, 1)}}, + {"streamtypehandle", {"StreamTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("StreamTypeHandle", 1, 1)}}, + {"tupletypecomponents", {"TupleTypeComponents", "Normal", BuildNamedArgcBuiltinFactoryCallback("TupleTypeComponents", 1, 1)}}, + {"tupletypehandle", {"TupleTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("TupleTypeHandle", 1, 1)}}, + {"structtypecomponents", {"StructTypeComponents", "Normal", BuildNamedArgcBuiltinFactoryCallback("StructTypeComponents", 1, 1)}}, + {"structtypehandle", {"StructTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("StructTypeHandle", 1, 1)}}, + {"dicttypecomponents", {"DictTypeComponents", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictTypeComponents", 1, 1)}}, + {"dicttypehandle", {"DictTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("DictTypeHandle", 2, 2)}}, + {"resourcetypetag", {"ResourceTypeTag", "Normal", BuildNamedArgcBuiltinFactoryCallback("ResourceTypeTag", 1, 1)}}, + {"resourcetypehandle", {"ResourceTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("ResourceTypeHandle", 1, 1)}}, + {"taggedtypecomponents", {"TaggedTypeComponents", "Normal", BuildNamedArgcBuiltinFactoryCallback("TaggedTypeComponents", 1, 1)}}, + {"taggedtypehandle", {"TaggedTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("TaggedTypeHandle", 2, 2)}}, + {"varianttypehandle", {"VariantTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("VariantTypeHandle", 1, 1)}}, + {"voidtypehandle", {"VoidTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("VoidTypeHandle", 0, 0)}}, + {"nulltypehandle", {"NullTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("NullTypeHandle", 0, 0)}}, + {"emptylisttypehandle", {"EmptyListTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("EmptyListTypeHandle", 0, 0)}}, + {"emptydicttypehandle", {"EmptyDictTypehandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("EmptyDictTypeHandle", 0, 0)}}, + {"callabletypecomponents", {"CallableTypeComponents", "Normal", BuildNamedArgcBuiltinFactoryCallback("CallableTypeComponents", 1, 1)}}, + {"callableargument", {"CallableArgument", "Normal", BuildNamedArgcBuiltinFactoryCallback("CallableArgument", 1, 3)}}, + {"callabletypehandle", {"CallableTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("CallableTypeHandle", 2, 4)}}, + {"pgtypename", {"PgTypeName", "Normal", BuildNamedArgcBuiltinFactoryCallback("PgTypeName", 1, 1)}}, + {"pgtypehandle", {"PgTypeHandle", "Normal", BuildNamedArgcBuiltinFactoryCallback("PgTypeHandle", 1, 1)}}, + {"formatcode", {"FormatCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("FormatCode", 1, 1)}}, + {"worldcode", {"WorldCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("WorldCode", 0, 0)}}, + {"atomcode", {"AtomCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("AtomCode", 1, 1)}}, + {"listcode", {"ListCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("ListCode", 0, -1)}}, + {"funccode", {"FuncCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("FuncCode", 1, -1)}}, + {"lambdacode", {"LambdaCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("LambdaCode", 1, 2)}}, + {"evaluatecode", {"EvaluateCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("EvaluateCode", 1, 1)}}, + {"reprcode", {"ReprCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("ReprCode", 1, 1)}}, + {"quotecode", {"QuoteCode", "Normal", BuildNamedArgcBuiltinFactoryCallback("QuoteCode", 1, 1)}}, + {"lambdaargumentscount", {"LambdaArgumentsCount", "Normal", BuildNamedArgcBuiltinFactoryCallback("LambdaArgumentsCount", 1, 1)}}, + {"lambdaoptionalargumentscount", {"LambdaOptionalArgumentsCount", "Normal", BuildNamedArgcBuiltinFactoryCallback("LambdaOptionalArgumentsCount", 1, 1)}}, + {"subqueryextend", {"SubqueryExtend", "Normal", BuildNamedArgcBuiltinFactoryCallback("SubqueryExtend", 1, -1)}}, + {"subqueryunionall", {"SubqueryUnionAll", "Normal", BuildNamedArgcBuiltinFactoryCallback("SubqueryUnionAll", 1, -1)}}, + {"subquerymerge", {"SubqueryMerge", "Normal", BuildNamedArgcBuiltinFactoryCallback("SubqueryMerge", 1, -1)}}, + {"subqueryunionmerge", {"SubqueryUnionMerge", "Normal", BuildNamedArgcBuiltinFactoryCallback("SubqueryUnionMerge", 1, -1)}}, + {"subqueryextendfor", {"SubqueryExtendFor", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"subqueryunionallfor", {"SubqueryUnionAllFor", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"subquerymergefor", {"SubqueryMergeFor", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"subqueryunionmergefor", {"SubqueryUnionMergeFor", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"subqueryorderby", {"SubqueryOrderBy", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"subqueryassumeorderby", {"SubqueryAssumeOrderBy", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, // Tuple builtins - {"astuple", BuildSimpleBuiltinFactoryCallback()}, + {"astuple", {"AsTuple", "Normal", BuildSimpleBuiltinFactoryCallback()}}, // Struct builtins - {"trymember", BuildNamedBuiltinFactoryCallback("TryMember")}, - {"addmember", BuildNamedBuiltinFactoryCallback("AddMember")}, - {"replacemember", BuildNamedBuiltinFactoryCallback("ReplaceMember")}, - {"removemember", BuildNamedBuiltinFactoryCallback("RemoveMember")}, - {"forceremovemember", BuildNamedBuiltinFactoryCallback("ForceRemoveMember")}, - {"combinemembers", BuildNamedBuiltinFactoryCallback("FlattenMembers")}, - {"flattenmembers", BuildNamedBuiltinFactoryCallback("FlattenMembers")}, - {"staticmap", BuildNamedArgcBuiltinFactoryCallback("StaticMap", 2, 2) }, - {"staticzip", BuildNamedArgcBuiltinFactoryCallback("StaticZip", 1, -1) }, - {"structunion", BuildNamedArgcBuiltinFactoryCallback("StructUnion", 2, 3)}, - {"structintersection", BuildNamedArgcBuiltinFactoryCallback("StructIntersection", 2, 3)}, - {"structdifference", BuildNamedArgcBuiltinFactoryCallback("StructDifference", 2, 2)}, - {"structsymmetricdifference", BuildNamedArgcBuiltinFactoryCallback("StructSymmetricDifference", 2, 2)}, - {"staticfold", BuildNamedArgcBuiltinFactoryCallback("StaticFold", 3, 3)}, - {"staticfold1", BuildNamedArgcBuiltinFactoryCallback("StaticFold1", 3, 3)}, + {"trymember", {"TryMember", "Normal", BuildNamedBuiltinFactoryCallback("TryMember")}}, + {"addmember", {"AddMember", "Normal", BuildNamedBuiltinFactoryCallback("AddMember")}}, + {"replacemember", {"ReplaceMember", "Normal", BuildNamedBuiltinFactoryCallback("ReplaceMember")}}, + {"removemember", {"RemoveMember", "Normal", BuildNamedBuiltinFactoryCallback("RemoveMember")}}, + {"forceremovemember", {"ForceRemoveMember", "Normal", BuildNamedBuiltinFactoryCallback("ForceRemoveMember")}}, + {"combinemembers", {"CombineMembers", "Normal", BuildNamedBuiltinFactoryCallback("FlattenMembers")}}, + {"flattenmembers", {"FlattenMembers", "Normal", BuildNamedBuiltinFactoryCallback("FlattenMembers")}}, + {"staticmap", {"StaticMap", "Normal", BuildNamedArgcBuiltinFactoryCallback("StaticMap", 2, 2)}}, + {"staticzip", {"StaticZip", "Normal", BuildNamedArgcBuiltinFactoryCallback("StaticZip", 1, -1)}}, + {"structunion", {"StructUnion", "Normal", BuildNamedArgcBuiltinFactoryCallback("StructUnion", 2, 3)}}, + {"structintersection", {"StructIntersection", "Normal", BuildNamedArgcBuiltinFactoryCallback("StructIntersection", 2, 3)}}, + {"structdifference", {"StructDifference", "Normal", BuildNamedArgcBuiltinFactoryCallback("StructDifference", 2, 2)}}, + {"structsymmetricdifference", {"StructSymmetricDifference", "Normal", BuildNamedArgcBuiltinFactoryCallback("StructSymmetricDifference", 2, 2)}}, + {"staticfold", {"StaticFold", "Normal", BuildNamedArgcBuiltinFactoryCallback("StaticFold", 3, 3)}}, + {"staticfold1", {"StaticFold1", "Normal", BuildNamedArgcBuiltinFactoryCallback("StaticFold1", 3, 3)}}, // File builtins - {"filepath", BuildNamedBuiltinFactoryCallback("FilePath")}, - {"filecontent", BuildNamedBuiltinFactoryCallback("FileContent")}, - {"folderpath", BuildNamedBuiltinFactoryCallback("FolderPath") }, - {"files", BuildNamedBuiltinFactoryCallback("Files")}, - {"parsefile", BuildSimpleBuiltinFactoryCallback()}, + {"filepath", {"FilePath", "Normal", BuildNamedBuiltinFactoryCallback("FilePath")}}, + {"filecontent", {"FileContent", "Normal", BuildNamedBuiltinFactoryCallback("FileContent")}}, + {"folderpath", {"FolderPath", "Normal", BuildNamedBuiltinFactoryCallback("FolderPath")}}, + {"files", {"Files", "Normal", BuildNamedBuiltinFactoryCallback("Files")}}, + {"parsefile", {"ParseFile", "Normal", BuildSimpleBuiltinFactoryCallback()}}, // Misc builtins - {"coalesce", BuildNamedArgcBuiltinFactoryCallback("Coalesce", 1, -1)}, - {"nvl", BuildNamedArgcBuiltinFactoryCallback("Coalesce", 1, -1) }, - {"nanvl", BuildNamedArgcBuiltinFactoryCallback("Nanvl", 2, 2) }, - {"likely", BuildNamedArgcBuiltinFactoryCallback("Likely", 1, -1)}, - {"assumestrict", BuildNamedArgcBuiltinFactoryCallback("AssumeStrict", 1, 1)}, - {"assumenonstrict", BuildNamedArgcBuiltinFactoryCallback("AssumeNonStrict", 1, 1)}, - {"random", BuildNamedDepsArgcBuiltinFactoryCallback(0, "Random", 1, -1)}, - {"randomnumber", BuildNamedDepsArgcBuiltinFactoryCallback(0, "RandomNumber", 1, -1)}, - {"randomuuid", BuildNamedDepsArgcBuiltinFactoryCallback(0, "RandomUuid", 1, -1) }, - {"tablepath", BuildNamedBuiltinFactoryCallback("TablePath") }, - {"tablerecordindex", BuildNamedBuiltinFactoryCallback("TableRecord") }, - {"tablerow", BuildSimpleBuiltinFactoryCallback>() }, - {"jointablerow", BuildSimpleBuiltinFactoryCallback>() }, - {"tablerows", BuildSimpleBuiltinFactoryCallback() }, - {"weakfield", BuildSimpleBuiltinFactoryCallback()}, - {"version", BuildNamedArgcBuiltinFactoryCallback("Version", 0, 0)}, - - {"systemmetadata", BuildNamedArgcBuiltinFactoryCallback("SystemMetadata", 1, -1)}, + {"coalesce", {"Coalesce", "Normal", BuildNamedArgcBuiltinFactoryCallback("Coalesce", 1, -1)}}, + {"nvl", {"Nvl", "Normal", BuildNamedArgcBuiltinFactoryCallback("Coalesce", 1, -1)}}, + {"nanvl", {"Nanvl", "Normal", BuildNamedArgcBuiltinFactoryCallback("Nanvl", 2, 2)}}, + {"likely", {"Likely", "Normal", BuildNamedArgcBuiltinFactoryCallback("Likely", 1, -1)}}, + {"assumestrict", {"AssumeStrict", "Normal", BuildNamedArgcBuiltinFactoryCallback("AssumeStrict", 1, 1)}}, + {"assumenonstrict", {"AssumeNonStrict", "Normal", BuildNamedArgcBuiltinFactoryCallback("AssumeNonStrict", 1, 1)}}, + {"random", {"Random", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(0, "Random", 1, -1)}}, + {"randomnumber", {"RandomNumber", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(0, "RandomNumber", 1, -1)}}, + {"randomuuid", {"RandomUuid", "Normal", BuildNamedDepsArgcBuiltinFactoryCallback(0, "RandomUuid", 1, -1)}}, + {"tablepath", {"TablePath", "Normal", BuildNamedBuiltinFactoryCallback("TablePath")}}, + {"tablerecordindex", {"TableRecordIndex", "Normal", BuildNamedBuiltinFactoryCallback("TableRecord")}}, + {"tablerow", {"TableRow", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"jointablerow", {"JoinTableRow", "Normal", BuildSimpleBuiltinFactoryCallback>()}}, + {"tablerows", {"TableRows", "Produce", BuildSimpleBuiltinFactoryCallback()}}, + {"weakfield", {"WeakField", "Normal", BuildSimpleBuiltinFactoryCallback()}}, + {"version", {"Version", "Normal", BuildNamedArgcBuiltinFactoryCallback("Version", 0, 0)}}, + + {"systemmetadata", {"SystemMetadata", "Normal", BuildNamedArgcBuiltinFactoryCallback("SystemMetadata", 1, -1)}}, // Hint builtins - {"grouping", BuildSimpleBuiltinFactoryCallback()}, + {"grouping", {"Grouping", "AggKey", BuildSimpleBuiltinFactoryCallback()}}, // Window funcitons - {"rownumber", BuildNamedArgcBuiltinFactoryCallback("RowNumber", 0, 0)}, - {"rank", BuildNamedArgcBuiltinFactoryCallback("Rank", 0, 1)}, - {"denserank", BuildNamedArgcBuiltinFactoryCallback("DenseRank", 0, 1)}, - {"lead", BuildNamedArgcBuiltinFactoryCallback("Lead", 1, 2)}, - {"lag", BuildNamedArgcBuiltinFactoryCallback("Lag", 1, 2)}, - {"percentrank", BuildNamedArgcBuiltinFactoryCallback("PercentRank", 0, 1)}, - {"cumedist", BuildNamedArgcBuiltinFactoryCallback("CumeDist", 0, 0)}, - {"ntile", BuildNamedArgcBuiltinFactoryCallback("NTile", 1, 1)}, + {"rownumber", {"RowNumber", "Window", BuildNamedArgcBuiltinFactoryCallback("RowNumber", 0, 0)}}, + {"rank", {"Rank", "Window", BuildNamedArgcBuiltinFactoryCallback("Rank", 0, 1)}}, + {"denserank", {"DenseRank", "Window", BuildNamedArgcBuiltinFactoryCallback("DenseRank", 0, 1)}}, + {"lead", {"Lead", "Window", BuildNamedArgcBuiltinFactoryCallback("Lead", 1, 2)}}, + {"lag", {"Lag", "Window", BuildNamedArgcBuiltinFactoryCallback("Lag", 1, 2)}}, + {"percentrank", {"PercentRank", "Window", BuildNamedArgcBuiltinFactoryCallback("PercentRank", 0, 1)}}, + {"cumedist", {"CumeDist", "Window", BuildNamedArgcBuiltinFactoryCallback("CumeDist", 0, 0)}}, + {"ntile", {"NTile", "Window", BuildNamedArgcBuiltinFactoryCallback("NTile", 1, 1)}}, // Session window - {"sessionwindow", BuildSimpleBuiltinFactoryCallback()}, - {"sessionstart", BuildSimpleBuiltinFactoryCallback>()}, - {"sessionstate", BuildSimpleBuiltinFactoryCallback>()}, + {"sessionwindow", {"SessionWindow", "Partition", BuildSimpleBuiltinFactoryCallback()}}, + {"sessionstart", {"SessionStart", "Agg", BuildSimpleBuiltinFactoryCallback>()}}, + {"sessionstate", {"SessionState", "Agg", BuildSimpleBuiltinFactoryCallback>()}}, // New hopping - {"hoppingwindow", BuildSimpleBuiltinFactoryCallback()}, + {"hoppingwindow", {"", "", BuildSimpleBuiltinFactoryCallback()}}, // Hopping intervals time functions - {"hopstart", BuildSimpleBuiltinFactoryCallback>()}, - {"hopend", BuildSimpleBuiltinFactoryCallback>()}, + {"hopstart", {"HopStart", "Agg", BuildSimpleBuiltinFactoryCallback>()}}, + {"hopend", {"HopEnd", "Agg", BuildSimpleBuiltinFactoryCallback>()}} }; return builtinFuncs; } @@ -3197,118 +3211,118 @@ struct TBuiltinFuncData { constexpr auto OverWindow = EAggregateMode::OverWindow; TAggrFuncFactoryCallbackMap aggrFuncs = { - {"min", BuildAggrFuncFactoryCallback("Min", "min_traits_factory")}, - {"max", BuildAggrFuncFactoryCallback("Max", "max_traits_factory")}, - - {"minby", BuildAggrFuncFactoryCallback("MinBy", "min_by_traits_factory", KEY_PAYLOAD)}, - {"maxby", BuildAggrFuncFactoryCallback("MaxBy", "max_by_traits_factory", KEY_PAYLOAD)}, - - {"sum", BuildAggrFuncFactoryCallback("Sum", "sum_traits_factory")}, - {"sumif", BuildAggrFuncFactoryCallback("SumIf", "sum_if_traits_factory", PAYLOAD_PREDICATE) }, - - {"checked_sum", BuildAggrFuncFactoryCallback("CheckedSum", "checked_sum_traits_factory")}, - {"checked_sumif", BuildAggrFuncFactoryCallback("CheckedSumIf", "checked_sum_if_traits_factory", PAYLOAD_PREDICATE) }, - - {"some", BuildAggrFuncFactoryCallback("Some", "some_traits_factory")}, - {"somevalue", BuildAggrFuncFactoryCallback("SomeValue", "some_traits_factory")}, - - {"count", BuildAggrFuncFactoryCallback("Count", "count_traits_factory", COUNT)}, - {"countif", BuildAggrFuncFactoryCallback("CountIf", "count_if_traits_factory")}, - - {"every", BuildAggrFuncFactoryCallback("Every", "and_traits_factory")}, - {"booland", BuildAggrFuncFactoryCallback("BoolAnd", "and_traits_factory")}, - {"boolor", BuildAggrFuncFactoryCallback("BoolOr", "or_traits_factory")}, - {"boolxor", BuildAggrFuncFactoryCallback("BoolXor", "xor_traits_factory")}, - - {"bitand", BuildAggrFuncFactoryCallback("BitAnd", "bit_and_traits_factory")}, - {"bitor", BuildAggrFuncFactoryCallback("BitOr", "bit_or_traits_factory")}, - {"bitxor", BuildAggrFuncFactoryCallback("BitXor", "bit_xor_traits_factory")}, - - {"avg", BuildAggrFuncFactoryCallback("Avg", "avg_traits_factory")}, - {"avgif", BuildAggrFuncFactoryCallback("AvgIf", "avg_if_traits_factory", PAYLOAD_PREDICATE) }, - - {"agglist", BuildAggrFuncFactoryCallback("AggregateList", "list2_traits_factory", LIST)}, - {"aggrlist", BuildAggrFuncFactoryCallback("AggregateList", "list2_traits_factory", LIST)}, - {"aggregatelist", BuildAggrFuncFactoryCallback("AggregateList", "list2_traits_factory", LIST)}, - {"agglistdistinct", BuildAggrFuncFactoryCallback("AggregateListDistinct", "set_traits_factory", LIST)}, - {"aggrlistdistinct", BuildAggrFuncFactoryCallback("AggregateListDistinct", "set_traits_factory", LIST)}, - {"aggregatelistdistinct", BuildAggrFuncFactoryCallback("AggregateListDistinct", "set_traits_factory", LIST)}, - - {"median", BuildAggrFuncFactoryCallback("Median", "percentile_traits_factory", PERCENTILE)}, - {"percentile", BuildAggrFuncFactoryCallback("Percentile", "percentile_traits_factory", PERCENTILE)}, - - {"mode", BuildAggrFuncFactoryCallback("Mode", "topfreq_traits_factory", TOPFREQ) }, - {"topfreq", BuildAggrFuncFactoryCallback("TopFreq", "topfreq_traits_factory", TOPFREQ) }, - - {"top", BuildAggrFuncFactoryCallback("Top", "top_traits_factory", TOP)}, - {"bottom", BuildAggrFuncFactoryCallback("Bottom", "bottom_traits_factory", TOP)}, - {"topby", BuildAggrFuncFactoryCallback("TopBy", "top_by_traits_factory", TOP_BY)}, - {"bottomby", BuildAggrFuncFactoryCallback("BottomBy", "bottom_by_traits_factory", TOP_BY)}, - - {"histogram", BuildAggrFuncFactoryCallback("AdaptiveWardHistogram", "histogram_adaptive_ward_traits_factory", HISTOGRAM, "Histogram")}, - {"histogramcdf", BuildAggrFuncFactoryCallback("AdaptiveWardHistogramCDF", "histogram_cdf_adaptive_ward_traits_factory", HISTOGRAM, "HistogramCDF")}, - {"adaptivewardhistogram", BuildAggrFuncFactoryCallback("AdaptiveWardHistogram", "histogram_adaptive_ward_traits_factory", HISTOGRAM)}, - {"adaptivewardhistogramcdf", BuildAggrFuncFactoryCallback("AdaptiveWardHistogramCDF", "histogram_cdf_adaptive_ward_traits_factory", HISTOGRAM)}, - {"adaptiveweighthistogram", BuildAggrFuncFactoryCallback("AdaptiveWeightHistogram", "histogram_adaptive_weight_traits_factory", HISTOGRAM)}, - {"adaptiveweighthistogramcdf", BuildAggrFuncFactoryCallback("AdaptiveWeightHistogramCDF", "histogram_cdf_adaptive_weight_traits_factory", HISTOGRAM)}, - {"adaptivedistancehistogram", BuildAggrFuncFactoryCallback("AdaptiveDistanceHistogram", "histogram_adaptive_distance_traits_factory", HISTOGRAM)}, - {"adaptivedistancehistogramcdf", BuildAggrFuncFactoryCallback("AdaptiveDistanceHistogramCDF", "histogram_cdf_adaptive_distance_traits_factory", HISTOGRAM)}, - {"blockwardhistogram", BuildAggrFuncFactoryCallback("BlockWardHistogram", "histogram_block_ward_traits_factory", HISTOGRAM)}, - {"blockwardhistogramcdf", BuildAggrFuncFactoryCallback("BlockWardHistogramCDF", "histogram_cdf_block_ward_traits_factory", HISTOGRAM)}, - {"blockweighthistogram", BuildAggrFuncFactoryCallback("BlockWeightHistogram", "histogram_block_weight_traits_factory", HISTOGRAM)}, - {"blockweighthistogramcdf", BuildAggrFuncFactoryCallback("BlockWeightHistogramCDF", "histogram_cdf_block_weight_traits_factory", HISTOGRAM)}, - {"linearhistogram", BuildAggrFuncFactoryCallback("LinearHistogram", "histogram_linear_traits_factory", LINEAR_HISTOGRAM)}, - {"linearhistogramcdf", BuildAggrFuncFactoryCallback("LinearHistogramCDF", "histogram_cdf_linear_traits_factory", LINEAR_HISTOGRAM)}, - {"logarithmichistogram", BuildAggrFuncFactoryCallback("LogarithmicHistogram", "histogram_logarithmic_traits_factory", LINEAR_HISTOGRAM)}, - {"logarithmichistogramcdf", BuildAggrFuncFactoryCallback("LogarithmicHistogramCDF", "histogram_cdf_logarithmic_traits_factory", LINEAR_HISTOGRAM)}, - {"loghistogram", BuildAggrFuncFactoryCallback("LogarithmicHistogram", "histogram_logarithmic_traits_factory", LINEAR_HISTOGRAM, "LogHistogram")}, - {"loghistogramcdf", BuildAggrFuncFactoryCallback("LogarithmicHistogramCDF", "histogram_cdf_logarithmic_traits_factory", LINEAR_HISTOGRAM, "LogHistogramCDF")}, - - {"hyperloglog", BuildAggrFuncFactoryCallback("HyperLogLog", "hyperloglog_traits_factory", COUNT_DISTINCT_ESTIMATE)}, - {"hll", BuildAggrFuncFactoryCallback("HyperLogLog", "hyperloglog_traits_factory", COUNT_DISTINCT_ESTIMATE, "HLL")}, - {"countdistinctestimate", BuildAggrFuncFactoryCallback("HyperLogLog", "hyperloglog_traits_factory", COUNT_DISTINCT_ESTIMATE, "CountDistinctEstimate")}, - - {"variance", BuildAggrFuncFactoryCallback("Variance", "variance_0_1_traits_factory")}, - {"stddev", BuildAggrFuncFactoryCallback("StdDev", "variance_1_1_traits_factory")}, - {"populationvariance", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}, - {"variancepopulation", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}, - {"populationstddev", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}, - {"stddevpopulation", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}, - {"varpop", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}, - {"stddevpop", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}, - {"varp", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}, - {"stddevp", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}, - {"variancesample", BuildAggrFuncFactoryCallback("VarianceSample", "variance_0_1_traits_factory")}, - {"stddevsample", BuildAggrFuncFactoryCallback("StdDevSample", "variance_1_1_traits_factory")}, - {"varsamp", BuildAggrFuncFactoryCallback("VarianceSample", "variance_0_1_traits_factory")}, - {"stddevsamp", BuildAggrFuncFactoryCallback("StdDevSample", "variance_1_1_traits_factory")}, - {"vars", BuildAggrFuncFactoryCallback("VarianceSample", "variance_0_1_traits_factory")}, - {"stddevs", BuildAggrFuncFactoryCallback("StdDevSample", "variance_1_1_traits_factory")}, - - {"correlation", BuildAggrFuncFactoryCallback("Correlation", "correlation_traits_factory", TWO_ARGS)}, - {"corr", BuildAggrFuncFactoryCallback("Correlation", "correlation_traits_factory", TWO_ARGS, "Corr")}, - {"covariance", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "Covariance")}, - {"covariancesample", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS)}, - {"covarsamp", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "CovarSamp")}, - {"covar", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "Covar")}, - {"covars", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "CovarS")}, - {"covariancepopulation", BuildAggrFuncFactoryCallback("CovariancePopulation", "covariance_population_traits_factory", TWO_ARGS)}, - {"covarpop", BuildAggrFuncFactoryCallback("CovariancePopulation", "covariance_population_traits_factory", TWO_ARGS, "CovarPop")}, - {"covarp", BuildAggrFuncFactoryCallback("CovariancePopulation", "covariance_population_traits_factory", TWO_ARGS, "CovarP")}, - - {"udaf", BuildAggrFuncFactoryCallback("UDAF", "udaf_traits_factory", UDAF)}, + {"min", {"Min", "Agg", BuildAggrFuncFactoryCallback("Min", "min_traits_factory")}}, + {"max", {"Max", "Agg", BuildAggrFuncFactoryCallback("Max", "max_traits_factory")}}, + + {"minby", {"MinBy", "Agg", BuildAggrFuncFactoryCallback("MinBy", "min_by_traits_factory", KEY_PAYLOAD)}}, + {"maxby", {"MaxBy", "Agg", BuildAggrFuncFactoryCallback("MaxBy", "max_by_traits_factory", KEY_PAYLOAD)}}, + + {"sum", {"Sum", "Agg", BuildAggrFuncFactoryCallback("Sum", "sum_traits_factory")}}, + {"sumif", {"SumIf", "Agg", BuildAggrFuncFactoryCallback("SumIf", "sum_if_traits_factory", PAYLOAD_PREDICATE)}}, + + {"checked_sum", {"", "", BuildAggrFuncFactoryCallback("CheckedSum", "checked_sum_traits_factory")}}, + {"checked_sumif", {"", "", BuildAggrFuncFactoryCallback("CheckedSumIf", "checked_sum_if_traits_factory", PAYLOAD_PREDICATE)}}, + + {"some", {"Some", "Agg", BuildAggrFuncFactoryCallback("Some", "some_traits_factory")}}, + {"somevalue", {"", "", BuildAggrFuncFactoryCallback("SomeValue", "some_traits_factory")}}, + + {"count", {"Count", "Agg", BuildAggrFuncFactoryCallback("Count", "count_traits_factory", COUNT)}}, + {"countif", {"CountIf", "Agg", BuildAggrFuncFactoryCallback("CountIf", "count_if_traits_factory")}}, + + {"every", {"", "", BuildAggrFuncFactoryCallback("Every", "and_traits_factory")}}, + {"booland", {"BoolAnd", "Agg", BuildAggrFuncFactoryCallback("BoolAnd", "and_traits_factory")}}, + {"boolor", {"BoolOr", "Agg", BuildAggrFuncFactoryCallback("BoolOr", "or_traits_factory")}}, + {"boolxor", {"BoolXor", "Agg", BuildAggrFuncFactoryCallback("BoolXor", "xor_traits_factory")}}, + + {"bitand", {"BitAnd", "Agg", BuildAggrFuncFactoryCallback("BitAnd", "bit_and_traits_factory")}}, + {"bitor", {"BitOr", "Agg", BuildAggrFuncFactoryCallback("BitOr", "bit_or_traits_factory")}}, + {"bitxor", {"BitXor", "Agg", BuildAggrFuncFactoryCallback("BitXor", "bit_xor_traits_factory")}}, + + {"avg", {"Avg", "Agg", BuildAggrFuncFactoryCallback("Avg", "avg_traits_factory")}}, + {"avgif", {"AvgIf", "Agg", BuildAggrFuncFactoryCallback("AvgIf", "avg_if_traits_factory", PAYLOAD_PREDICATE)}}, + + {"agglist", {"AggList", "Agg", BuildAggrFuncFactoryCallback("AggregateList", "list2_traits_factory", LIST)}}, + {"aggrlist", {"AggList", "Agg", BuildAggrFuncFactoryCallback("AggregateList", "list2_traits_factory", LIST)}}, + {"aggregatelist", {"AggList", "Agg", BuildAggrFuncFactoryCallback("AggregateList", "list2_traits_factory", LIST)}}, + {"agglistdistinct", {"AggListDistinct", "Agg", BuildAggrFuncFactoryCallback("AggregateListDistinct", "set_traits_factory", LIST)}}, + {"aggrlistdistinct", {"AggListDistinct", "Agg", BuildAggrFuncFactoryCallback("AggregateListDistinct", "set_traits_factory", LIST)}}, + {"aggregatelistdistinct", {"AggListDistinct", "Agg", BuildAggrFuncFactoryCallback("AggregateListDistinct", "set_traits_factory", LIST)}}, + + {"median", {"Median", "Agg", BuildAggrFuncFactoryCallback("Median", "percentile_traits_factory", PERCENTILE)}}, + {"percentile", {"Percentile", "Agg", BuildAggrFuncFactoryCallback("Percentile", "percentile_traits_factory", PERCENTILE)}}, + + {"mode", {"Mode", "Agg", BuildAggrFuncFactoryCallback("Mode", "topfreq_traits_factory", TOPFREQ)}}, + {"topfreq", {"TopFreq", "Agg", BuildAggrFuncFactoryCallback("TopFreq", "topfreq_traits_factory", TOPFREQ)}}, + + {"top", {"Top", "Agg", BuildAggrFuncFactoryCallback("Top", "top_traits_factory", TOP)}}, + {"bottom", {"Bottom", "Agg", BuildAggrFuncFactoryCallback("Bottom", "bottom_traits_factory", TOP)}}, + {"topby", {"TopBy", "Agg", BuildAggrFuncFactoryCallback("TopBy", "top_by_traits_factory", TOP_BY)}}, + {"bottomby", {"BottomBy", "Agg", BuildAggrFuncFactoryCallback("BottomBy", "bottom_by_traits_factory", TOP_BY)}}, + + {"histogram", {"Histogram", "Agg", BuildAggrFuncFactoryCallback("AdaptiveWardHistogram", "histogram_adaptive_ward_traits_factory", HISTOGRAM, "Histogram")}}, + {"histogramcdf", {"HistogramCDF", "Agg", BuildAggrFuncFactoryCallback("AdaptiveWardHistogramCDF", "histogram_cdf_adaptive_ward_traits_factory", HISTOGRAM, "HistogramCDF")}}, + {"adaptivewardhistogram", {"AdaptiveWardHistogram", "Agg", BuildAggrFuncFactoryCallback("AdaptiveWardHistogram", "histogram_adaptive_ward_traits_factory", HISTOGRAM)}}, + {"adaptivewardhistogramcdf", {"AdaptiveWardHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("AdaptiveWardHistogramCDF", "histogram_cdf_adaptive_ward_traits_factory", HISTOGRAM)}}, + {"adaptiveweighthistogram", {"AdaptiveWeightHistogram", "Agg", BuildAggrFuncFactoryCallback("AdaptiveWeightHistogram", "histogram_adaptive_weight_traits_factory", HISTOGRAM)}}, + {"adaptiveweighthistogramcdf", {"AdaptiveWeightHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("AdaptiveWeightHistogramCDF", "histogram_cdf_adaptive_weight_traits_factory", HISTOGRAM)}}, + {"adaptivedistancehistogram", {"AdaptiveDistanceHistogram", "Agg", BuildAggrFuncFactoryCallback("AdaptiveDistanceHistogram", "histogram_adaptive_distance_traits_factory", HISTOGRAM)}}, + {"adaptivedistancehistogramcdf", {"AdaptiveDistanceHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("AdaptiveDistanceHistogramCDF", "histogram_cdf_adaptive_distance_traits_factory", HISTOGRAM)}}, + {"blockwardhistogram", {"BlockWardHistogram", "Agg", BuildAggrFuncFactoryCallback("BlockWardHistogram", "histogram_block_ward_traits_factory", HISTOGRAM)}}, + {"blockwardhistogramcdf", {"BlockWardHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("BlockWardHistogramCDF", "histogram_cdf_block_ward_traits_factory", HISTOGRAM)}}, + {"blockweighthistogram", {"BlockWeightHistogram", "Agg", BuildAggrFuncFactoryCallback("BlockWeightHistogram", "histogram_block_weight_traits_factory", HISTOGRAM)}}, + {"blockweighthistogramcdf", {"BlockWeightHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("BlockWeightHistogramCDF", "histogram_cdf_block_weight_traits_factory", HISTOGRAM)}}, + {"linearhistogram", {"LinearHistogram", "Agg", BuildAggrFuncFactoryCallback("LinearHistogram", "histogram_linear_traits_factory", LINEAR_HISTOGRAM)}}, + {"linearhistogramcdf", {"LinearHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("LinearHistogramCDF", "histogram_cdf_linear_traits_factory", LINEAR_HISTOGRAM)}}, + {"logarithmichistogram", {"LogarithmicHistogram", "Agg", BuildAggrFuncFactoryCallback("LogarithmicHistogram", "histogram_logarithmic_traits_factory", LINEAR_HISTOGRAM)}}, + {"logarithmichistogramcdf", {"LogarithmicHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("LogarithmicHistogramCDF", "histogram_cdf_logarithmic_traits_factory", LINEAR_HISTOGRAM)}}, + {"loghistogram", {"LogHistogram", "Agg", BuildAggrFuncFactoryCallback("LogarithmicHistogram", "histogram_logarithmic_traits_factory", LINEAR_HISTOGRAM, "LogHistogram")}}, + {"loghistogramcdf", {"LogHistogramCDF", "Agg", BuildAggrFuncFactoryCallback("LogarithmicHistogramCDF", "histogram_cdf_logarithmic_traits_factory", LINEAR_HISTOGRAM, "LogHistogramCDF")}}, + + {"hyperloglog", {"HyperLogLog", "Agg", BuildAggrFuncFactoryCallback("HyperLogLog", "hyperloglog_traits_factory", COUNT_DISTINCT_ESTIMATE)}}, + {"hll", {"HLL", "Agg", BuildAggrFuncFactoryCallback("HyperLogLog", "hyperloglog_traits_factory", COUNT_DISTINCT_ESTIMATE, "HLL")}}, + {"countdistinctestimate", {"CountDistinctEstimate", "Agg", BuildAggrFuncFactoryCallback("HyperLogLog", "hyperloglog_traits_factory", COUNT_DISTINCT_ESTIMATE, "CountDistinctEstimate")}}, + + {"variance", {"Variance", "Agg", BuildAggrFuncFactoryCallback("Variance", "variance_0_1_traits_factory")}}, + {"stddev", {"StdDev", "Agg", BuildAggrFuncFactoryCallback("StdDev", "variance_1_1_traits_factory")}}, + {"populationvariance", {"PopulationVariance", "Agg", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}}, + {"variancepopulation", {"VariancePopulation", "Agg", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}}, + {"populationstddev", {"PopulationStdDev", "Agg", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}}, + {"stddevpopulation", {"StdDevPopulation", "Agg", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}}, + {"varpop", {"VarPop", "Agg", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}}, + {"stddevpop", {"StdDevPop", "Agg", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}}, + {"varp", {"VarP", "Agg", BuildAggrFuncFactoryCallback("VariancePopulation", "variance_0_0_traits_factory")}}, + {"stddevp", {"StdDevP", "Agg", BuildAggrFuncFactoryCallback("StdDevPopulation", "variance_1_0_traits_factory")}}, + {"variancesample", {"VarianceSample", "Agg", BuildAggrFuncFactoryCallback("VarianceSample", "variance_0_1_traits_factory")}}, + {"stddevsample", {"StdDevSample", "Agg", BuildAggrFuncFactoryCallback("StdDevSample", "variance_1_1_traits_factory")}}, + {"varsamp", {"VarSamp", "Agg", BuildAggrFuncFactoryCallback("VarianceSample", "variance_0_1_traits_factory")}}, + {"stddevsamp", {"StdDevSamp", "Agg", BuildAggrFuncFactoryCallback("StdDevSample", "variance_1_1_traits_factory")}}, + {"vars", {"VarS", "Agg", BuildAggrFuncFactoryCallback("VarianceSample", "variance_0_1_traits_factory")}}, + {"stddevs", {"StdDevS", "Agg", BuildAggrFuncFactoryCallback("StdDevSample", "variance_1_1_traits_factory")}}, + + {"correlation", {"Correlation", "Agg", BuildAggrFuncFactoryCallback("Correlation", "correlation_traits_factory", TWO_ARGS)}}, + {"corr", {"Corr", "Agg", BuildAggrFuncFactoryCallback("Correlation", "correlation_traits_factory", TWO_ARGS, "Corr")}}, + {"covariance", {"Covariance", "Agg", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "Covariance")}}, + {"covariancesample", {"CovarianceSample", "Agg", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS)}}, + {"covarsamp", {"CovarSamp", "Agg", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "CovarSamp")}}, + {"covar", {"Covar","Agg",BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "Covar")}}, + {"covars", {"CovarS", "Agg", BuildAggrFuncFactoryCallback("CovarianceSample", "covariance_sample_traits_factory", TWO_ARGS, "CovarS")}}, + {"covariancepopulation", {"CovariancePopulation", "Agg", BuildAggrFuncFactoryCallback("CovariancePopulation", "covariance_population_traits_factory", TWO_ARGS)}}, + {"covarpop", {"CovarPop", "Agg", BuildAggrFuncFactoryCallback("CovariancePopulation", "covariance_population_traits_factory", TWO_ARGS, "CovarPop")}}, + {"covarp", {"CovarP", "Agg", BuildAggrFuncFactoryCallback("CovariancePopulation", "covariance_population_traits_factory", TWO_ARGS, "CovarP")}}, + + {"udaf", {"UDAF", "Agg", BuildAggrFuncFactoryCallback("UDAF", "udaf_traits_factory", UDAF)}}, // Window functions - {"firstvalue", BuildAggrFuncFactoryCallback("FirstValue", "first_value_traits_factory", {OverWindow})}, - {"lastvalue", BuildAggrFuncFactoryCallback("LastValue", "last_value_traits_factory", {OverWindow})}, - {"nthvalue", BuildAggrFuncFactoryCallback("NthValue", "nth_value_traits_factory", {OverWindow}, NTH_VALUE)}, - {"firstvalueignorenulls", BuildAggrFuncFactoryCallback("FirstValueIgnoreNulls", "first_value_ignore_nulls_traits_factory", {OverWindow})}, - {"lastvalueignorenulls", BuildAggrFuncFactoryCallback("LastValueIgnoreNulls", "last_value_ignore_nulls_traits_factory", {OverWindow})}, - {"nthvalueignorenulls", BuildAggrFuncFactoryCallback("NthValueIgnoreNulls", "nth_value_ignore_nulls_traits_factory", {OverWindow}, NTH_VALUE)}, + {"firstvalue", {"FirstValue", "Window", BuildAggrFuncFactoryCallback("FirstValue", "first_value_traits_factory", {OverWindow})}}, + {"lastvalue", {"LastValue", "Window", BuildAggrFuncFactoryCallback("LastValue", "last_value_traits_factory", {OverWindow})}}, + {"nthvalue", {"NthValue", "Window", BuildAggrFuncFactoryCallback("NthValue", "nth_value_traits_factory", {OverWindow}, NTH_VALUE)}}, + {"firstvalueignorenulls", {"", "", BuildAggrFuncFactoryCallback("FirstValueIgnoreNulls", "first_value_ignore_nulls_traits_factory", {OverWindow})}}, + {"lastvalueignorenulls", {"", "", BuildAggrFuncFactoryCallback("LastValueIgnoreNulls", "last_value_ignore_nulls_traits_factory", {OverWindow})}}, + {"nthvalueignorenulls", {"", "", BuildAggrFuncFactoryCallback("NthValueIgnoreNulls", "nth_value_ignore_nulls_traits_factory", {OverWindow}, NTH_VALUE)}}, // MatchRecognize navigation functions - {"first", BuildAggrFuncFactoryCallback("First", "first_traits_factory")}, - {"last", BuildAggrFuncFactoryCallback("Last", "last_traits_factory")}, + {"first", {"First", "MatchRec", BuildAggrFuncFactoryCallback("First", "first_traits_factory")}}, + {"last", {"Last", "MatchRec", BuildAggrFuncFactoryCallback("Last", "last_traits_factory")}} }; return aggrFuncs; } @@ -3682,7 +3696,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec if ("first" == aggNormalizedName || "last" == aggNormalizedName) { return new TInvalidBuiltin(pos, "Cannot use FIRST and LAST outside the MATCH_RECOGNIZE context"); } - return (*aggrCallback).second(pos, args, aggMode, true); + return (*aggrCallback).second.Callback(pos, args, aggMode, true); } } @@ -3703,7 +3717,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec if (aggrCallback != aggrFuncs.end()) { switch (ctx.GetColumnReferenceState()) { case EColumnRefState::MatchRecognizeMeasures: { - auto result = (*aggrCallback).second(pos, args, aggMode, false); + auto result = (*aggrCallback).second.Callback(pos, args, aggMode, false); return BuildMatchRecognizeVarAccess(pos, std::move(result)); } case EColumnRefState::MatchRecognizeDefine: @@ -3712,7 +3726,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec if ("first" == normalizedName || "last" == normalizedName) { return new TInvalidBuiltin(pos, "Cannot use FIRST and LAST outside the MATCH_RECOGNIZE context"); } - return (*aggrCallback).second(pos, args, aggMode, false); + return (*aggrCallback).second.Callback(pos, args, aggMode, false); } } if (aggMode == EAggregateMode::Distinct || aggMode == EAggregateMode::OverWindowDistinct) { @@ -3721,7 +3735,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec auto builtinCallback = builtinFuncs.find(normalizedName); if (builtinCallback != builtinFuncs.end()) { - return (*builtinCallback).second(pos, args); + return (*builtinCallback).second.Callback(pos, args); } else if (normalizedName == "udf") { if (mustUseNamed && *mustUseNamed) { *mustUseNamed = false; @@ -3919,4 +3933,32 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec TDeferredAtom(typeConfig, ctx), nullptr, nullptr); } +void EnumerateBuiltins(const std::function& callback) { + const TBuiltinFuncData* funcData = Singleton(); + const TBuiltinFactoryCallbackMap& builtinFuncs = funcData->BuiltinFuncs; + const TAggrFuncFactoryCallbackMap& aggrFuncs = funcData->AggrFuncs; + const TCoreFuncMap& coreFuncs = funcData->CoreFuncs; + + std::map map; + for (const auto& x : builtinFuncs) { + if (!x.second.CanonicalSqlName.empty()) { + map.emplace(x.second.CanonicalSqlName, x.second.Kind); + } + } + + for (const auto& x : aggrFuncs) { + if (!x.second.CanonicalSqlName.empty()) { + map.emplace(x.second.CanonicalSqlName, x.second.Kind); + } + } + + for (const auto& x : coreFuncs) { + map.emplace(x.second.Name, "Normal"); + } + + for (const auto& x : map) { + callback(x.first, x.second); + } +} + } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/node.h b/yql/essentials/sql/v1/node.h index dacb28d8440..2b06ea7a78a 100644 --- a/yql/essentials/sql/v1/node.h +++ b/yql/essentials/sql/v1/node.h @@ -1639,6 +1639,7 @@ namespace NSQLTranslationV1 { return {}; } + void EnumerateBuiltins(const std::function& callback); bool Parseui32(TNodePtr from, ui32& to); TNodePtr GroundWithExpr(const TNodePtr& ground, const TNodePtr& expr); const TString* DeriveCommonSourceName(const TVector &nodes); diff --git a/yql/essentials/tools/sql_functions_dump/sql_functions_dump.cpp b/yql/essentials/tools/sql_functions_dump/sql_functions_dump.cpp new file mode 100644 index 00000000000..14627a85aed --- /dev/null +++ b/yql/essentials/tools/sql_functions_dump/sql_functions_dump.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +#include + +using namespace NYql; + +int Main(int argc, const char *argv[]) +{ + Y_UNUSED(argc); + Y_UNUSED(argv); + NJsonWriter::TBuf json; + json.BeginObject(); + NSQLTranslationV1::EnumerateBuiltins([&](auto name, auto kind) { + json.WriteKey(name); + json.BeginObject(); + json.WriteKey("kind"); + json.WriteString(kind); + json.EndObject(); + }); + + json.EndObject(); + Cout << json.Str() << Endl; + + return 0; +} + +int main(int argc, const char *argv[]) { + NYql::NBacktrace::RegisterKikimrFatalActions(); + NYql::NBacktrace::EnableKikimrSymbolize(); + + try { + return Main(argc, argv); + } + catch (...) { + Cerr << CurrentExceptionMessage() << Endl; + return 1; + } +} diff --git a/yql/essentials/tools/sql_functions_dump/test/test.py b/yql/essentials/tools/sql_functions_dump/test/test.py new file mode 100644 index 00000000000..2595e4bc0b6 --- /dev/null +++ b/yql/essentials/tools/sql_functions_dump/test/test.py @@ -0,0 +1,20 @@ +import yatest.common +import json +import os + +DATA_PATH = yatest.common.source_path('yql/essentials/data/language') +TOOL_PATH = yatest.common.binary_path('yql/essentials/tools/sql_functions_dump/sql_functions_dump') + + +def test_functions_dump(): + with open(os.path.join(DATA_PATH, "sql_functions.json")) as f: + types_from_file = json.load(f) + res = yatest.common.execute( + [TOOL_PATH], + check_exit_code=True, + wait=True + ) + types_from_tool = json.loads(res.stdout) + assert types_from_tool == types_from_file, 'JSON_DIFFER\n' \ + 'File:\n %(types_from_file)s\n\n' \ + 'Tool:\n %(types_from_tool)s\n' % locals() diff --git a/yql/essentials/tools/sql_functions_dump/test/ya.make b/yql/essentials/tools/sql_functions_dump/test/ya.make new file mode 100644 index 00000000000..e9e5f0d6a45 --- /dev/null +++ b/yql/essentials/tools/sql_functions_dump/test/ya.make @@ -0,0 +1,15 @@ +PY3TEST() + +TEST_SRCS( + test.py +) + +DEPENDS( + yql/essentials/tools/sql_functions_dump +) + +DATA( + arcadia/yql/essentials/data/language +) + +END() diff --git a/yql/essentials/tools/sql_functions_dump/ya.make b/yql/essentials/tools/sql_functions_dump/ya.make new file mode 100644 index 00000000000..73dda185476 --- /dev/null +++ b/yql/essentials/tools/sql_functions_dump/ya.make @@ -0,0 +1,20 @@ +PROGRAM() + +SRCS( + sql_functions_dump.cpp +) + +PEERDIR( + yql/essentials/sql + yql/essentials/sql/v1 + yql/essentials/utils/backtrace + yql/essentials/sql/pg_dummy + yql/essentials/public/udf/service/stub + library/cpp/json +) + +END() + +RECURSE_FOR_TESTS( + test +) diff --git a/yql/essentials/tools/ya.make b/yql/essentials/tools/ya.make index 66981f04f26..fb830e742a2 100644 --- a/yql/essentials/tools/ya.make +++ b/yql/essentials/tools/ya.make @@ -8,6 +8,7 @@ RECURSE( purebench sql2yql sql_formatter + sql_functions_dump types_dump udf_dep_stub udf_probe -- cgit v1.3