diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-04-16 08:31:49 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-04-16 08:31:49 +0000 |
commit | 1c2da168395dadec05d58923a79123048bf70573 (patch) | |
tree | 3fb43b6d8ce65f583de0f640c61dbdb5374429ac /yql | |
parent | e39c1fe3cca27babe95bf01b7ace8300f09f67c9 (diff) | |
parent | f4d366e1882cfbae7ccda2e7a601b9fa5da09bdb (diff) | |
download | ydb-1c2da168395dadec05d58923a79123048bf70573.tar.gz |
Merge branch 'rightlib' into merge-libs-250416-0829
Diffstat (limited to 'yql')
194 files changed, 6024 insertions, 861 deletions
diff --git a/yql/essentials/ast/ya.make b/yql/essentials/ast/ya.make index 58c21a1d7f1..a0a003cb2eb 100644 --- a/yql/essentials/ast/ya.make +++ b/yql/essentials/ast/ya.make @@ -37,6 +37,7 @@ PEERDIR( yql/essentials/utils yql/essentials/utils/fetch yql/essentials/core/issue + yql/essentials/core/sql_types yql/essentials/core/url_lister/interface yql/essentials/parser/pg_catalog ) diff --git a/yql/essentials/ast/yql_expr.cpp b/yql/essentials/ast/yql_expr.cpp index 21d0b9a446c..fb60a08476b 100644 --- a/yql/essentials/ast/yql_expr.cpp +++ b/yql/essentials/ast/yql_expr.cpp @@ -3830,60 +3830,6 @@ const TTypeAnnotationNode& RemoveOptionality(const TTypeAnnotationNode& type) { return ETypeAnnotationKind::Optional == type.GetKind() ? *type.Cast<TOptionalExprType>()->GetItemType() : type; } -TMaybe<TIssue> NormalizeName(TPosition position, TString& name) { - const ui32 inputLength = name.length(); - ui32 startCharPos = 0; - ui32 totalSkipped = 0; - bool atStart = true; - bool justSkippedUnderscore = false; - for (ui32 i = 0; i < inputLength; ++i) { - const char c = name.at(i); - if (c == '_') { - if (!atStart) { - if (justSkippedUnderscore) { - return TIssue(position, TStringBuilder() << "\"" << name << "\" looks weird, has multiple consecutive underscores"); - } - justSkippedUnderscore = true; - ++totalSkipped; - continue; - } else { - ++startCharPos; - } - } - else { - atStart = false; - justSkippedUnderscore = false; - } - } - - if (totalSkipped >= 5) { - return TIssue(position, TStringBuilder() << "\"" << name << "\" looks weird, has multiple consecutive underscores"); - } - - ui32 outPos = startCharPos; - for (ui32 i = startCharPos; i < inputLength; i++) { - const char c = name.at(i); - if (c == '_') { - continue; - } else { - name[outPos] = AsciiToLower(c); - ++outPos; - } - } - - name.resize(outPos); - Y_ABORT_UNLESS(inputLength - outPos == totalSkipped); - - return Nothing(); -} - -TString NormalizeName(const TStringBuf& name) { - TString result(name); - TMaybe<TIssue> error = NormalizeName(TPosition(), result); - YQL_ENSURE(error.Empty(), "" << error->GetMessage()); - return result; -} - void TDefaultTypeAnnotationVisitor::Visit(const TUnitExprType& type) { Y_UNUSED(type); } diff --git a/yql/essentials/ast/yql_expr.h b/yql/essentials/ast/yql_expr.h index 40cd7bb2d2b..722d3f6be51 100644 --- a/yql/essentials/ast/yql_expr.h +++ b/yql/essentials/ast/yql_expr.h @@ -9,6 +9,7 @@ #include "yql_pos_handle.h" #include <yql/essentials/core/url_lister/interface/url_lister_manager.h> +#include <yql/essentials/core/sql_types/normalize_name.h> #include <yql/essentials/utils/yql_panic.h> #include <yql/essentials/public/issue/yql_issue_manager.h> #include <yql/essentials/public/udf/udf_data_type.h> @@ -2954,9 +2955,6 @@ const TTypeAnnotationNode& GetSeqItemType(const TTypeAnnotationNode& seq); const TTypeAnnotationNode& RemoveOptionality(const TTypeAnnotationNode& type); -TMaybe<TIssue> NormalizeName(TPosition position, TString& name); -TString NormalizeName(const TStringBuf& name); - } // namespace NYql template<> diff --git a/yql/essentials/cfg/tests/gateways-experimental.conf b/yql/essentials/cfg/tests/gateways-experimental.conf index a68414581b7..d1c09423481 100644 --- a/yql/essentials/cfg/tests/gateways-experimental.conf +++ b/yql/essentials/cfg/tests/gateways-experimental.conf @@ -40,8 +40,18 @@ Yt { } DefaultSettings { + Name: "JobBlockInput" + Value: "true" + } + + DefaultSettings { Name: "JobBlockInputSupportedTypes" - Value: "tuple" + Value: "tuple,pg" + } + + DefaultSettings { + Name: "BlockReaderSupportedTypes" + Value: "tuple,pg" } DefaultSettings { @@ -50,19 +60,37 @@ Yt { } DefaultSettings { + Name: "BlockReaderSupportedDataTypes" + Value: "Int8,Uint8,Int16,Uint16,Int32,Uint32,Int64,Uint64,Bool,Double,String,Utf8,Yson,Float" + } + + DefaultSettings { Name: "ReportEquiJoinStats" Value: "true" } + + DefaultSettings { + Name: "UseRPCReaderInDq" + Value: "true" + } + + DefaultSettings { + Name: "DQRPCReaderTimeout" + Value: "600s" + } } Dq { + DefaultSettings { + Name: "UseBlockReader" + Value: "true" + } } YqlCore { Flags { Name: "OptimizerFlags" Args: [ - "FieldSubsetEnableMultiusage", "MemberNthOverFlatMap", "ExtractMembersSplitOnOptional", "FilterNullMembersOverJust", diff --git a/yql/essentials/core/facade/yql_facade.cpp b/yql/essentials/core/facade/yql_facade.cpp index 055378a3ff1..f58f7834664 100644 --- a/yql/essentials/core/facade/yql_facade.cpp +++ b/yql/essentials/core/facade/yql_facade.cpp @@ -389,7 +389,7 @@ TProgram::TProgram( if (item) { YQL_ENSURE(LoadedGatewaysConfig_.ParseFromString(item->Value)); if (GatewaysForMerge_) { - YQL_ENSURE(LoadedGatewaysConfig_.MergeFromString(*GatewaysForMerge_)); + YQL_ENSURE(NProtoBuf::TextFormat::MergeFromString(*GatewaysForMerge_, &LoadedGatewaysConfig_)); } THashMap<TString, TString> clusterMapping; GetClusterMappingFromGateways(LoadedGatewaysConfig_, clusterMapping); @@ -1140,7 +1140,7 @@ TProgram::TFutureStatus TProgram::OptimizeAsyncWithConfig( dataProviders = DataProviders_; } - for (const auto& dp : DataProviders_) { + for (const auto& dp : dataProviders) { if (!dp.RemoteClusterProvider || !dp.RemoteOptimize) { continue; } @@ -1276,7 +1276,7 @@ TProgram::TFutureStatus TProgram::RunAsync( dataProviders = DataProviders_; } - for (const auto& dp : DataProviders_) { + for (const auto& dp : dataProviders) { if (!dp.RemoteClusterProvider || !dp.RemoteRun) { continue; } @@ -1355,7 +1355,7 @@ TProgram::TFutureStatus TProgram::RunAsyncWithConfig( dataProviders = DataProviders_; } - for (const auto& dp : DataProviders_) { + for (const auto& dp : dataProviders) { if (!dp.RemoteClusterProvider || !dp.RemoteRun) { continue; } diff --git a/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp b/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp index 19c55dbfcf9..5755bf1dbf5 100644 --- a/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp +++ b/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp @@ -191,6 +191,25 @@ TExprNode::TPtr OptimizeWideToBlocks(const TExprNode::TPtr& node, TExprContext& return node; } +TExprNode::TPtr OptimizeListToBlocks(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { + Y_UNUSED(ctx); + Y_UNUSED(types); + const auto& input = node->Head(); + if (input.IsCallable("ListFromBlocks")) { + // TODO: actually (ListToBlocks (ListFromBlocks a)) is (ReplicateScalars a), + // but there is no sources of scalars in block lists at the moment, so just ensure it + auto inputItemType = input.Head().GetTypeAnn()->Cast<TListExprType>()->GetItemType()->Cast<TStructExprType>(); + for (auto item : inputItemType->GetItems()) { + YQL_ENSURE(item->GetItemType()->IsBlock() || (item->GetItemType()->IsScalar() && item->GetName() == BlockLengthColumnName)); + } + + YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << node->Content() << " over " << input.Content(); + return input.HeadPtr(); + } + + return node; +} + TExprNode::TPtr OptimizeWideFromBlocks(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); const auto& input = node->Head(); @@ -207,6 +226,18 @@ TExprNode::TPtr OptimizeWideFromBlocks(const TExprNode::TPtr& node, TExprContext return node; } +TExprNode::TPtr OptimizeListFromBlocks(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { + Y_UNUSED(ctx); + Y_UNUSED(types); + const auto& input = node->Head(); + if (input.IsCallable("ListToBlocks")) { + YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << node->Content() << " over " << input.Content(); + return input.HeadPtr(); + } + + return node; +} + TExprNode::TPtr OptimizeWideTakeSkipBlocks(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); const auto& input = node->HeadPtr(); @@ -8995,7 +9026,9 @@ struct TPeepHoleRules { {"NarrowMap", &OptimizeWideMapBlocks}, {"WideFilter", &OptimizeWideFilterBlocks}, {"WideToBlocks", &OptimizeWideToBlocks}, + {"ListToBlocks", &OptimizeListToBlocks}, {"WideFromBlocks", &OptimizeWideFromBlocks}, + {"ListFromBlocks", &OptimizeListFromBlocks}, {"WideTakeBlocks", &OptimizeWideTakeSkipBlocks}, {"WideSkipBlocks", &OptimizeWideTakeSkipBlocks}, {"BlockCompress", &OptimizeBlockCompress}, diff --git a/yql/essentials/core/qplayer/storage/ydb/ya.make b/yql/essentials/core/qplayer/storage/ydb/ya.make index e68e67d237f..45e796bf675 100644 --- a/yql/essentials/core/qplayer/storage/ydb/ya.make +++ b/yql/essentials/core/qplayer/storage/ydb/ya.make @@ -9,7 +9,7 @@ SRCS( PEERDIR( yql/essentials/core/qplayer/storage/interface yql/essentials/core/qplayer/storage/memory - contrib/ydb/public/sdk/cpp/client/ydb_table + contrib/libs/ydb-cpp-sdk/src/client/table library/cpp/digest/old_crc ) diff --git a/yql/essentials/core/qplayer/storage/ydb/yql_qstorage_ydb.cpp b/yql/essentials/core/qplayer/storage/ydb/yql_qstorage_ydb.cpp index c39d8c514a5..13fff7dda80 100644 --- a/yql/essentials/core/qplayer/storage/ydb/yql_qstorage_ydb.cpp +++ b/yql/essentials/core/qplayer/storage/ydb/yql_qstorage_ydb.cpp @@ -2,7 +2,7 @@ #include <yql/essentials/core/qplayer/storage/memory/yql_qstorage_memory.h> -#include <contrib/ydb/public/sdk/cpp/client/ydb_table/table.h> +#include <ydb-cpp-sdk/client/table/table.h> #include <library/cpp/digest/old_crc/crc.h> diff --git a/yql/essentials/core/services/mounts/yql_mounts.cpp b/yql/essentials/core/services/mounts/yql_mounts.cpp index d229b6d8f01..95dfbf3672e 100644 --- a/yql/essentials/core/services/mounts/yql_mounts.cpp +++ b/yql/essentials/core/services/mounts/yql_mounts.cpp @@ -122,7 +122,8 @@ namespace NYql { const THashMap<TString, TString>& clusterMapping, const THashSet<TString>& sqlFlags, bool optimizeLibraries, - THolder<TExprContext> ownedCtx) + THolder<TExprContext> ownedCtx, + TModuleResolver::TModuleChecker moduleChecker) { YQL_PROFILE_FUNC(DEBUG); auto ctx = rawCtx ? rawCtx : ownedCtx.Get(); @@ -152,7 +153,7 @@ namespace NYql { } moduleResolver = std::make_shared<TModuleResolver>(translators, std::move(modulesTable), ctx->NextUniqueId, - clusterMapping, sqlFlags, optimizeLibraries, std::move(ownedCtx)); + clusterMapping, sqlFlags, optimizeLibraries, std::move(ownedCtx), moduleChecker); return mounts; } @@ -162,22 +163,25 @@ namespace NYql { const TVector<NUserData::TUserData>& userData, const THashMap<TString, TString>& clusterMapping, const THashSet<TString>& sqlFlags, - bool optimizeLibraries) { - return GetYqlModuleResolverImpl(&ctx, moduleResolver, userData, clusterMapping, sqlFlags, optimizeLibraries, nullptr); + bool optimizeLibraries, + TModuleResolver::TModuleChecker moduleChecker) { + return GetYqlModuleResolverImpl(&ctx, moduleResolver, userData, clusterMapping, sqlFlags, optimizeLibraries, nullptr, moduleChecker); } bool GetYqlDefaultModuleResolver( TExprContext& ctx, IModuleResolver::TPtr& moduleResolver, const THashMap<TString, TString>& clusterMapping, - bool optimizeLibraries) { - return !GetYqlModuleResolverImpl(&ctx, moduleResolver, {}, clusterMapping, {}, optimizeLibraries, nullptr).empty(); + bool optimizeLibraries, + TModuleResolver::TModuleChecker moduleChecker) { + return !GetYqlModuleResolverImpl(&ctx, moduleResolver, {}, clusterMapping, {}, optimizeLibraries, nullptr, moduleChecker).empty(); } bool GetYqlDefaultModuleResolverWithContext( IModuleResolver::TPtr& moduleResolver, const THashMap<TString, TString>& clusterMapping, - bool optimizeLibraries) { - return !GetYqlModuleResolverImpl(nullptr, moduleResolver, {}, clusterMapping, {}, optimizeLibraries, MakeHolder<TExprContext>()).empty(); + bool optimizeLibraries, + TModuleResolver::TModuleChecker moduleChecker) { + return !GetYqlModuleResolverImpl(nullptr, moduleResolver, {}, clusterMapping, {}, optimizeLibraries, MakeHolder<TExprContext>(), moduleChecker).empty(); } } diff --git a/yql/essentials/core/services/mounts/yql_mounts.h b/yql/essentials/core/services/mounts/yql_mounts.h index f289d57b998..7c0c296aa64 100644 --- a/yql/essentials/core/services/mounts/yql_mounts.h +++ b/yql/essentials/core/services/mounts/yql_mounts.h @@ -11,12 +11,14 @@ bool GetYqlDefaultModuleResolver( TExprContext& ctx, IModuleResolver::TPtr& moduleResolver, const THashMap<TString, TString>& clusterMapping = {}, - bool optimizeLibraries = true); + bool optimizeLibraries = true, + TModuleResolver::TModuleChecker moduleChecker = {}); bool GetYqlDefaultModuleResolverWithContext( IModuleResolver::TPtr& moduleResolver, const THashMap<TString, TString>& clusterMapping = {}, - bool optimizeLibraries = true); + bool optimizeLibraries = true, + TModuleResolver::TModuleChecker moduleChecker = {}); TUserDataTable GetYqlModuleResolver( TExprContext& ctx, @@ -24,6 +26,7 @@ TUserDataTable GetYqlModuleResolver( const TVector<NUserData::TUserData>& userData, const THashMap<TString, TString>& clusterMapping, const THashSet<TString>& sqlFlags, - bool optimizeLibraries = true); + bool optimizeLibraries = true, + TModuleResolver::TModuleChecker moduleChecker = {}); } // namespace NYql diff --git a/yql/essentials/core/sql_types/normalize_name.cpp b/yql/essentials/core/sql_types/normalize_name.cpp new file mode 100644 index 00000000000..5b050503d36 --- /dev/null +++ b/yql/essentials/core/sql_types/normalize_name.cpp @@ -0,0 +1,63 @@ +#include "normalize_name.h" + +#include <yql/essentials/utils/yql_panic.h> + +#include <util/string/builder.h> +#include <util/string/ascii.h> + +namespace NYql { + + TMaybe<TIssue> NormalizeName(TPosition position, TString& name) { + const ui32 inputLength = name.length(); + ui32 startCharPos = 0; + ui32 totalSkipped = 0; + bool atStart = true; + bool justSkippedUnderscore = false; + for (ui32 i = 0; i < inputLength; ++i) { + const char c = name.at(i); + if (c == '_') { + if (!atStart) { + if (justSkippedUnderscore) { + return TIssue(position, TStringBuilder() << "\"" << name << "\" looks weird, has multiple consecutive underscores"); + } + justSkippedUnderscore = true; + ++totalSkipped; + continue; + } else { + ++startCharPos; + } + } else { + atStart = false; + justSkippedUnderscore = false; + } + } + + if (totalSkipped >= 5) { + return TIssue(position, TStringBuilder() << "\"" << name << "\" looks weird, has multiple consecutive underscores"); + } + + ui32 outPos = startCharPos; + for (ui32 i = startCharPos; i < inputLength; i++) { + const char c = name.at(i); + if (c == '_') { + continue; + } else { + name[outPos] = AsciiToLower(c); + ++outPos; + } + } + + name.resize(outPos); + Y_ABORT_UNLESS(inputLength - outPos == totalSkipped); + + return Nothing(); + } + + TString NormalizeName(const TStringBuf& name) { + TString result(name); + TMaybe<TIssue> error = NormalizeName(TPosition(), result); + YQL_ENSURE(error.Empty(), "" << error->GetMessage()); + return result; + } + +} // namespace NYql diff --git a/yql/essentials/core/sql_types/normalize_name.h b/yql/essentials/core/sql_types/normalize_name.h new file mode 100644 index 00000000000..94d1e337680 --- /dev/null +++ b/yql/essentials/core/sql_types/normalize_name.h @@ -0,0 +1,13 @@ +#pragma once + +#include <yql/essentials/core/issue/yql_issue.h> + +#include <util/generic/string.h> +#include <util/generic/fwd.h> + +namespace NYql { + + TMaybe<TIssue> NormalizeName(TPosition position, TString& name); + TString NormalizeName(const TStringBuf& name); + +} // namespace NYql diff --git a/yql/essentials/core/ut/yql_expr_type_annotation_ut.cpp b/yql/essentials/core/sql_types/normalize_name_ut.cpp index 09ce7fd838b..ddd9b24d1e5 100644 --- a/yql/essentials/core/ut/yql_expr_type_annotation_ut.cpp +++ b/yql/essentials/core/sql_types/normalize_name_ut.cpp @@ -1,9 +1,8 @@ -#include "yql_expr_type_annotation.h" +#include "normalize_name.h" #include <library/cpp/testing/unittest/registar.h> - -namespace NYql { +using namespace NYql; Y_UNIT_TEST_SUITE(Misc) { Y_UNIT_TEST(NormalizeName) { @@ -48,6 +47,4 @@ Y_UNIT_TEST_SUITE(Misc) { CheckIssues("a_B_c_d_e_f", "a_B_c_d_e_f"); CheckIssues("_a_B_c_d_e_f", "_a_B_c_d_e_f"); } -} - -} // namespace NYql +} // Y_UNIT_TEST_SUITE(Misc) diff --git a/yql/essentials/core/sql_types/ut/ya.make b/yql/essentials/core/sql_types/ut/ya.make index 11a1b7ddfb1..363e4dc4a44 100644 --- a/yql/essentials/core/sql_types/ut/ya.make +++ b/yql/essentials/core/sql_types/ut/ya.make @@ -1,6 +1,8 @@ UNITTEST_FOR(yql/essentials/core/sql_types) + SRCS( match_recognize_ut.cpp + normalize_name_ut.cpp ) PEERDIR( diff --git a/yql/essentials/core/sql_types/ya.make b/yql/essentials/core/sql_types/ya.make index 88eb76fb511..fae32738bd3 100644 --- a/yql/essentials/core/sql_types/ya.make +++ b/yql/essentials/core/sql_types/ya.make @@ -4,13 +4,18 @@ SRCS( block.h match_recognize.h match_recognize.cpp + normalize_name.cpp simple_types.h simple_types.cpp yql_atom_enums.h yql_callable_names.h ) -GENERATE_ENUM_SERIALIZATION(match_recognize.h) +PEERDIR( + yql/essentials/core/issue +) + +GENERATE_ENUM_SERIALIZATION(match_recognize.h) GENERATE_ENUM_SERIALIZATION(yql_atom_enums.h) END() diff --git a/yql/essentials/core/type_ann/type-ann-coverage.sh b/yql/essentials/core/type_ann/type-ann-coverage.sh index 09a28963e57..e5336f6aac7 100755 --- a/yql/essentials/core/type_ann/type-ann-coverage.sh +++ b/yql/essentials/core/type_ann/type-ann-coverage.sh @@ -1,22 +1,38 @@ #!/bin/bash # # Script to collect the type annotation callbacks, being uncovered -# by minirun test suite. Pass the filename as the first argument +# by minirun test suite. Pass the coverage report root directory +# as the first argument, and the filename as the second argument # to store the collected list to the particular file. set -eu -ARC_ROOT=$(arc rev-parse --show-toplevel) -REPORT_ROOT=$(mktemp --tmpdir -d yql-essentials-core-type_ann-coverage-XXXXXXX) +REPORT_ROOT=$1 +# Check whether the desired prefix (i.e. yql/essentials/core/type_ann) +# is collected (see collect-coverage.sh for the contract). +COLLECTED_PREFIX=yql/essentials/core/type_ann +COLLECTED_ANCHOR=${REPORT_ROOT}/collect-coverage.sh/${COLLECTED_PREFIX}/collected +if [ ! -f ${COLLECTED_ANCHOR} ]; then + cat <<NOANCHOR +================================================================== +[FATAL] Anchor file is missing: ${COLLECTED_ANCHOR} +------------------------------------------------------------------ +NB: Looks like the particular prefix (i.e. ${COLLECTED_PREFIX}) +is not set in collect-coverage.sh. +================================================================== +NOANCHOR + exit 1 +fi + # Save the list with uncovered callbacks into the file, that is # given by the first parameter of this script; otherwise, save # the list into the temporary file. -UNCOVERED_FILE=${1:-$(mktemp --tmpdir yql-essentials-core-type_ann-uncovered-XXXXXXX.list)} +UNCOVERED_FILE=${2:-$(mktemp --tmpdir yql-essentials-core-type_ann-uncovered-XXXXXXX.list)} # File with the list of the callbacks to be ignored by coverage. UNCOVERED_IGNORE=$(realpath $0 | sed -e 's/\.sh/\.ignore/') -if [ ! -r $UNCOVERED_IGNORE ]; then +if [ ! -r ${UNCOVERED_IGNORE} ]; then cat <<NOIGNORE ================================================================== -[FATAL] Ignore file is missing: $UNCOVERED_IGNORE +[FATAL] Ignore file is missing: ${UNCOVERED_IGNORE} ------------------------------------------------------------------ NB: If no uncovered type annotation callbacks ought to be ignored, just "touch" the empty file and do not remove it in future. @@ -25,46 +41,25 @@ NOIGNORE exit 1 fi -# Run the command to collect code coverage over the sources in -# /yql/essentials/core/type_ann by the minirun test suite. -# XXX: Here are the rationales for the particular options: -# * --clang-coverage -- collect the code coverage only for C++ -# sources; -# * --coverage-prefix-filter -- collect the code coverage only -# for the dedicated source files; -# * --coverage-report --output $REPORT_ROOT -- build the HTML -# report for the collected code coverage; -# See more info here: https://docs.yandex-team.ru/devtools/test/coverage. -ya make -tA \ - -C ${ARC_ROOT}/yql/essentials/tests/sql/minirun \ - -C ${ARC_ROOT}/yql/essentials/tests/s-expressions/minirun \ - --build profile \ - --clang-coverage \ - --coverage-prefix-filter yql/essentials/core/type_ann \ - --coverage-report \ - --output $REPORT_ROOT \ - --test-disable-timeout - # Find an anchor to uncovered line in HTML report, ... UNCOVERED_ANCHOR="<td class='uncovered-line'><pre>0</pre></td>" # ... find the return type of the type annotation callback, # preceding the target function name ... RETURN_TYPE="IGraphTransformer::TStatus" # XXX: See more info re \K here: https://perldoc.perl.org/perlre#%5CK. -CALLBACK_PREFIX="<td class='code'><pre>\s*$RETURN_TYPE\s*\K" +CALLBACK_PREFIX="<td class='code'><pre>\s*${RETURN_TYPE}\s*\K" # ... and find the parameters types of the type annotation # callback, following the target function name. INPUT_TYPE="const TExprNode::TPtr& input" OUTPUT_TYPE="TExprNode::TPtr& output" CONTEXT_TYPE="(?:TExtContext|TContext)& ctx" -CALLBACK_SUFFIX="(?=\($INPUT_TYPE,\s*$OUTPUT_TYPE,\s*$CONTEXT_TYPE\))" -grep -oP "$UNCOVERED_ANCHOR$CALLBACK_PREFIX(\w+)$CALLBACK_SUFFIX" \ - -r $REPORT_ROOT/coverage.report/ \ - --no-filename \ - | grep -vf $UNCOVERED_IGNORE \ - | tee -a $UNCOVERED_FILE +CALLBACK_SUFFIX="(?=\(${INPUT_TYPE},\s*${OUTPUT_TYPE},\s*${CONTEXT_TYPE}\))" +grep -oP "${UNCOVERED_ANCHOR}${CALLBACK_PREFIX}(\w+)${CALLBACK_SUFFIX}" \ + -r ${REPORT_ROOT}/coverage.report/ \ + --no-filename \ + | grep -vf ${UNCOVERED_IGNORE} \ + | tee -a ${UNCOVERED_FILE} -rm -rf $REPORT_ROOT echo "The list of the uncovered functions: $UNCOVERED_FILE" # Make script fail if uncovered list is not empty. test ! -s $UNCOVERED_FILE diff --git a/yql/essentials/core/type_ann/type_ann_join.cpp b/yql/essentials/core/type_ann/type_ann_join.cpp index cecbaf336a3..66351509dc1 100644 --- a/yql/essentials/core/type_ann/type_ann_join.cpp +++ b/yql/essentials/core/type_ann/type_ann_join.cpp @@ -1006,18 +1006,18 @@ namespace NTypeAnnImpl { return IGraphTransformer::TStatus::Error; } - TTypeAnnotationNode::TListType itemTypes; - if (!EnsureWideStreamBlockType(input->Head(), itemTypes, ctx.Expr)) { + TVector<const TItemExprType*> structItems; + if (!EnsureBlockListType(input->Head(), structItems, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } - auto streamItemType = input->Head().GetTypeAnn()->Cast<TStreamExprType>()->GetItemType(); + auto listItemType = input->Head().GetTypeAnn()->Cast<TListExprType>()->GetItemType(); input->SetTypeAnn(ctx.Expr.MakeType<TResourceExprType>(TStringBuilder() << - NKikimr::NMiniKQL::BlockStorageResourcePrefix << FormatType(streamItemType))); + NKikimr::NMiniKQL::BlockStorageResourcePrefix << FormatType(listItemType))); return IGraphTransformer::TStatus::Ok; } - bool EnsureBlockStorageResource(const TExprNode* resource, const TMultiExprType*& streamItemType, TExtContext& ctx) { + bool EnsureBlockStorageResource(const TExprNode* resource, const TStructExprType*& listItemType, TExtContext& ctx) { using NKikimr::NMiniKQL::BlockStorageResourcePrefix; if (!EnsureResourceType(*resource, ctx.Expr)) { @@ -1045,7 +1045,7 @@ namespace NTypeAnnImpl { return false; } - streamItemType = typeNode->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->UserCast<TMultiExprType>(ctx.Expr.GetPosition(resource->Pos()), ctx.Expr); + listItemType = typeNode->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->UserCast<TStructExprType>(ctx.Expr.GetPosition(resource->Pos()), ctx.Expr); return true; } @@ -1059,25 +1059,25 @@ namespace NTypeAnnImpl { return IGraphTransformer::TStatus::Error; } - const TMultiExprType* expectedStreamItemType = nullptr; - if (!EnsureBlockStorageResource(input->Child(0), expectedStreamItemType, ctx)) { + const TStructExprType* expectedListItemType = nullptr; + if (!EnsureBlockStorageResource(input->Child(0), expectedListItemType, ctx)) { return IGraphTransformer::TStatus::Error; } - TTypeAnnotationNode::TListType itemTypes; + TVector<const TItemExprType*> structItems; if (!EnsureType(*input->Child(1), ctx.Expr)) { return IGraphTransformer::TStatus::Error; } auto inputType = input->Child(1)->GetTypeAnn()->Cast<TTypeExprType>()->GetType(); - if (!EnsureWideBlockType(input->Child(1)->Pos(), *inputType, itemTypes, ctx.Expr)) { + if (!EnsureBlockStructType(input->Child(1)->Pos(), *inputType, structItems, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } - auto streamItemType = inputType->Cast<TMultiExprType>(); + auto listItemType = inputType->Cast<TStructExprType>(); - if (!IsSameAnnotation(*streamItemType, *expectedStreamItemType)) { + if (!IsSameAnnotation(*listItemType, *expectedListItemType)) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), - TStringBuilder() << "Mismatch between provided stream item type " << static_cast<const TTypeAnnotationNode&>(*streamItemType) - << "and block storage item type " << static_cast<const TTypeAnnotationNode&>(*expectedStreamItemType))); + TStringBuilder() << "Mismatch between provided list item type " << static_cast<const TTypeAnnotationNode&>(*listItemType) + << "and block storage item type " << static_cast<const TTypeAnnotationNode&>(*expectedListItemType))); return IGraphTransformer::TStatus::Error; } @@ -1085,14 +1085,13 @@ namespace NTypeAnnImpl { return IGraphTransformer::TStatus::Error; } - TVector<ui32> keyColumns; + TVector<TStringBuf> keyColumns; for (const auto& keyColumnNode : input->Child(2)->Children()) { - auto position = GetWideBlockFieldPosition(*streamItemType, keyColumnNode->Content()); - if (!position) { + if (!listItemType->FindItem(keyColumnNode->Content())) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyColumnNode->Pos()), TStringBuilder() << "Unknown key column: " << keyColumnNode->Content())); return IGraphTransformer::TStatus::Error; } - keyColumns.push_back(*position); + keyColumns.push_back(keyColumnNode->Content()); } auto settingsValidator = [&](TStringBuf settingName, TExprNode& node, TExprContext& ctx) { @@ -1108,11 +1107,11 @@ namespace NTypeAnnImpl { } input->SetTypeAnn(ctx.Expr.MakeType<TResourceExprType>(TStringBuilder() << - BlockMapJoinIndexResourcePrefix << FormatType(streamItemType) << BlockMapJoinIndexResourceSeparator << JoinSeq(",", keyColumns))); + BlockMapJoinIndexResourcePrefix << FormatType(listItemType) << BlockMapJoinIndexResourceSeparator << JoinSeq(",", keyColumns))); return IGraphTransformer::TStatus::Ok; } - bool EnsureBlockMapJoinIndexResource(const TExprNode* resource, const TMultiExprType*& streamItemType, TVector<TStringBuf>& keyColumns, TExtContext& ctx) { + bool EnsureBlockMapJoinIndexResource(const TExprNode* resource, const TStructExprType*& listItemType, TVector<TStringBuf>& keyColumns, TExtContext& ctx) { using NKikimr::NMiniKQL::BlockMapJoinIndexResourcePrefix; using NKikimr::NMiniKQL::BlockMapJoinIndexResourceSeparator; @@ -1145,7 +1144,7 @@ namespace NTypeAnnImpl { return false; } - streamItemType = resourceTypeNode->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->UserCast<TMultiExprType>(ctx.Expr.GetPosition(resource->Pos()), ctx.Expr); + listItemType = resourceTypeNode->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->UserCast<TStructExprType>(ctx.Expr.GetPosition(resource->Pos()), ctx.Expr); return true; } @@ -1160,7 +1159,7 @@ namespace NTypeAnnImpl { return IGraphTransformer::TStatus::Error; } const auto joinKind = input->Child(3)->Content(); - if (joinKind != "Inner" && joinKind != "Left" && joinKind != "LeftSemi" && joinKind != "LeftOnly"&& joinKind != "Cross") { + if (joinKind != "Inner" && joinKind != "Left" && joinKind != "LeftSemi" && joinKind != "LeftOnly" && joinKind != "Cross") { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Child(3)->Pos()), TStringBuilder() << "Unknown join kind: " << joinKind << ", supported: Inner, Left, LeftSemi, LeftOnly, Cross")); return IGraphTransformer::TStatus::Error; @@ -1173,33 +1172,32 @@ namespace NTypeAnnImpl { leftItemTypes.pop_back(); auto leftStreamItemType = input->Head().GetTypeAnn()->Cast<TStreamExprType>()->GetItemType()->Cast<TMultiExprType>(); - const TMultiExprType* expectedRightStreamItemType = nullptr; + const TStructExprType* expectedRightListItemType = nullptr; TVector<TStringBuf> expectedRightKeyColumns; if (joinKind != "Cross") { - if (!EnsureBlockMapJoinIndexResource(input->Child(1), expectedRightStreamItemType, expectedRightKeyColumns, ctx)) { + if (!EnsureBlockMapJoinIndexResource(input->Child(1), expectedRightListItemType, expectedRightKeyColumns, ctx)) { return IGraphTransformer::TStatus::Error; } } else { - if (!EnsureBlockStorageResource(input->Child(1), expectedRightStreamItemType, ctx)) { + if (!EnsureBlockStorageResource(input->Child(1), expectedRightListItemType, ctx)) { return IGraphTransformer::TStatus::Error; } } - TTypeAnnotationNode::TListType rightItemTypes; + TVector<const TItemExprType*> rightStructItems; if (!EnsureType(*input->Child(2), ctx.Expr)) { return IGraphTransformer::TStatus::Error; } auto rightInputType = input->Child(2)->GetTypeAnn()->Cast<TTypeExprType>()->GetType(); - if (!EnsureWideBlockType(input->Child(2)->Pos(), *rightInputType, rightItemTypes, ctx.Expr)) { + if (!EnsureBlockStructType(input->Child(2)->Pos(), *rightInputType, rightStructItems, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } - rightItemTypes.pop_back(); - auto rightStreamItemType = rightInputType->Cast<TMultiExprType>(); + auto rightListItemType = rightInputType->Cast<TStructExprType>(); - if (!IsSameAnnotation(*rightStreamItemType, *expectedRightStreamItemType)) { + if (!IsSameAnnotation(*rightListItemType, *expectedRightListItemType)) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), - TStringBuilder() << "Mismatch between provided right stream item type " << static_cast<const TTypeAnnotationNode&>(*rightStreamItemType) - << "and right block storage item type " << static_cast<const TTypeAnnotationNode&>(*expectedRightStreamItemType))); + TStringBuilder() << "Mismatch between provided right list item type " << static_cast<const TTypeAnnotationNode&>(*rightListItemType) + << "and right block storage item type " << static_cast<const TTypeAnnotationNode&>(*expectedRightListItemType))); return IGraphTransformer::TStatus::Error; } @@ -1208,69 +1206,78 @@ namespace NTypeAnnImpl { return IGraphTransformer::TStatus::Error; } - auto checkKeyColumns = [&](std::unordered_set<ui32>& keyColumns, bool isLeft, const TExprNode& keyColumnsNode, const TMultiExprType* itemType) { - if (joinKind == "Cross" && !keyColumnsNode.Children().empty()) { - ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyColumnsNode.Pos()), "Specifying key columns is not allowed for cross join")); - return false; - } - for (const auto& keyColumnNode : keyColumnsNode.Children()) { - auto position = GetWideBlockFieldPosition(*itemType, keyColumnNode->Content()); - if (!position) { - ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyColumnNode->Pos()), TStringBuilder() << "Unknown " << (isLeft ? "left" : "right") << " key column: " << keyColumnNode->Content())); - return false; - } - keyColumns.insert(*position); + for (size_t childIdx = 4; childIdx <= 7; childIdx++) { + if (!EnsureTupleOfAtoms(*input->Child(childIdx), ctx.Expr)) { + return IGraphTransformer::TStatus::Error; } - return true; - }; + } - auto checkKeyDrops = [&](std::unordered_set<ui32>& keyDrops, bool isLeft, const std::unordered_set<ui32>& keyColumns, const TExprNode& keyDropsNode, const TMultiExprType* itemType) { - if (joinKind == "Cross" && !keyDropsNode.Children().empty()) { - ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropsNode.Pos()), "Specifying key drops is not allowed for cross join")); - return false; - } - for (const auto& keyDropNode : keyDropsNode.Children()) { - auto position = GetWideBlockFieldPosition(*itemType, keyDropNode->Content()); - if (!position) { - ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Unknown " << (isLeft ? "left" : "right") << " key column: " << keyDropNode->Content())); - return false; - } - if (!keyColumns.contains(*position)) { - ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Attempted to drop " << (isLeft ? "left" : "right") << " non-key column: " << keyDropNode->Content())); - return false; - } - if (!keyDrops.insert(*position).second) { - ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Duplicated " << (isLeft ? "left" : "right") << " key drop: " << keyDropNode->Content())); - return false; - } - } - return true; - }; + const auto& leftKeyColumnsNode = *input->Child(4); + const auto& leftKeyDropsNode = *input->Child(5); + const auto& rightKeyColumnsNode = *input->Child(6); + const auto& rightKeyDropsNode = *input->Child(7); - for (size_t childIdx = 4; childIdx <= 7; childIdx++) { - if (!EnsureTupleOfAtoms(*input->Child(childIdx), ctx.Expr)) { + if (joinKind == "Cross") { + if (!leftKeyColumnsNode.Children().empty() || !rightKeyColumnsNode.Children().empty()) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), "Specifying key columns is not allowed for cross join")); + return IGraphTransformer::TStatus::Error; + } + if (!leftKeyDropsNode.Children().empty() || !rightKeyDropsNode.Children().empty()) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), "Specifying key drops is not allowed for cross join")); return IGraphTransformer::TStatus::Error; } } std::unordered_set<ui32> leftKeyColumns; - if (!checkKeyColumns(leftKeyColumns, true, *input->Child(4), leftStreamItemType)) { - return IGraphTransformer::TStatus::Error; + for (const auto& keyColumnNode : leftKeyColumnsNode.Children()) { + auto position = GetWideBlockFieldPosition(*leftStreamItemType, keyColumnNode->Content()); + if (!position) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyColumnNode->Pos()), TStringBuilder() << "Unknown left key column: " << keyColumnNode->Content())); + return IGraphTransformer::TStatus::Error; + } + leftKeyColumns.insert(*position); } std::unordered_set<ui32> leftKeyDrops; - if (!checkKeyDrops(leftKeyDrops, true, leftKeyColumns, *input->Child(5), leftStreamItemType)) { - return IGraphTransformer::TStatus::Error; + for (const auto& keyDropNode : leftKeyDropsNode.Children()) { + auto position = GetWideBlockFieldPosition(*leftStreamItemType, keyDropNode->Content()); + if (!position) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Unknown left key column: " << keyDropNode->Content())); + return IGraphTransformer::TStatus::Error; + } + if (!leftKeyColumns.contains(*position)) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Attempted to drop left non-key column: " << keyDropNode->Content())); + return IGraphTransformer::TStatus::Error; + } + if (!leftKeyDrops.insert(*position).second) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Duplicated left key drop: " << keyDropNode->Content())); + return IGraphTransformer::TStatus::Error; + } } - std::unordered_set<ui32> rightKeyColumns; - if (!checkKeyColumns(rightKeyColumns, true, *input->Child(6), rightStreamItemType)) { - return IGraphTransformer::TStatus::Error; + THashSet<TStringBuf> rightKeyColumns; + for (const auto& keyColumnNode : rightKeyColumnsNode.Children()) { + if (!rightListItemType->FindItem(keyColumnNode->Content())) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyColumnNode->Pos()), TStringBuilder() << "Unknown right key column: " << keyColumnNode->Content())); + return IGraphTransformer::TStatus::Error; + } + rightKeyColumns.insert(keyColumnNode->Content()); } - std::unordered_set<ui32> rightKeyDrops; - if (!checkKeyDrops(rightKeyDrops, false, rightKeyColumns, *input->Child(7), rightStreamItemType)) { - return IGraphTransformer::TStatus::Error; + THashSet<TStringBuf> rightKeyDrops; + for (const auto& keyDropNode : rightKeyDropsNode.Children()) { + if (!rightListItemType->FindItem(keyDropNode->Content())) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Unknown right key column: " << keyDropNode->Content())); + return IGraphTransformer::TStatus::Error; + } + if (!rightKeyColumns.contains(keyDropNode->Content())) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Attempted to drop right non-key column: " << keyDropNode->Content())); + return IGraphTransformer::TStatus::Error; + } + if (!rightKeyDrops.insert(keyDropNode->Content()).second) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(keyDropNode->Pos()), TStringBuilder() << "Duplicated right key drop: " << keyDropNode->Content())); + return IGraphTransformer::TStatus::Error; + } } if (input->Child(6)->ChildrenSize() != expectedRightKeyColumns.size()) { @@ -1296,13 +1303,13 @@ namespace NTypeAnnImpl { } if (joinKind != "LeftSemi" && joinKind != "LeftOnly") { - for (ui32 pos = 0; pos < rightItemTypes.size(); pos++) { - if (rightKeyDrops.contains(pos)) { + for (auto item : rightStructItems) { + if (rightKeyDrops.contains(item->GetName())) { continue; } - auto columnType = rightItemTypes[pos]; - if (joinKind == "Left" && !rightItemTypes[pos]->IsOptionalOrNull()) { + auto columnType = item->GetItemType(); + if (joinKind == "Left" && !columnType->IsOptionalOrNull()) { columnType = ctx.Expr.MakeType<TOptionalExprType>(columnType); } diff --git a/yql/essentials/core/type_ann/type_ann_list.cpp b/yql/essentials/core/type_ann/type_ann_list.cpp index 8601c606501..e7f6c81ba6d 100644 --- a/yql/essentials/core/type_ann/type_ann_list.cpp +++ b/yql/essentials/core/type_ann/type_ann_list.cpp @@ -2760,6 +2760,7 @@ namespace { } IGraphTransformer::TStatus UnionAllWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) { + const bool checkHashes = input->IsCallable("Union"); switch (input->ChildrenSize()) { case 0U: output = ctx.Expr.NewCallable(input->Pos(), "EmptyList", {}); @@ -2857,6 +2858,16 @@ namespace { addResultItems(structType); } + if (checkHashes) { + for (const auto& r : resultItems) { + if (!r->GetItemType()->IsHashable() || !r->GetItemType()->IsEquatable()) { + ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), TStringBuilder() << "Expected hashable and equatable type for column: " << + r->GetName() << ", but got: " << *r->GetItemType())); + return IGraphTransformer::TStatus::Error; + } + } + } + auto structType = ctx.Expr.MakeType<TStructExprType>(resultItems); if (!structType->Validate(input->Pos(), ctx.Expr)) { return IGraphTransformer::TStatus::Error; diff --git a/yql/essentials/core/ut/ya.make b/yql/essentials/core/ut/ya.make index e3a03ad340b..5fdab55b08e 100644 --- a/yql/essentials/core/ut/ya.make +++ b/yql/essentials/core/ut/ya.make @@ -4,7 +4,6 @@ SRCS( yql_column_order_ut.cpp yql_expr_constraint_ut.cpp yql_expr_optimize_ut.cpp - yql_expr_type_annotation_ut.cpp yql_library_compiler_ut.cpp yql_opt_utils_ut.cpp yql_udf_index_ut.cpp diff --git a/yql/essentials/core/ut/yql_expr_constraint_ut.cpp b/yql/essentials/core/ut/yql_expr_constraint_ut.cpp index 45d9f6285de..a4145b9c5a8 100644 --- a/yql/essentials/core/ut/yql_expr_constraint_ut.cpp +++ b/yql/essentials/core/ut/yql_expr_constraint_ut.cpp @@ -1124,6 +1124,28 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { CheckConstraint<TUniqueConstraintNode>(exprRoot, "LazyList", "Unique((one,{two,xxx},yyy))"); } + Y_UNIT_TEST(UniqueNarrowCast) { + const auto s = R"(( + (let res (DataSink 'result)) + (let list (AsList + (AsStruct '('key (String '4)) '('subkey (String 'c)) '('value (String 'x))) + (AsStruct '('key (String '1)) '('subkey (String 'b)) '('value (String 'y))) + (AsStruct '('key (String '4)) '('subkey (String 'b)) '('value (String 'z))) + )) + (let list (AssumeUnique list '('key 'subkey))) + (let list (Map list (lambda '(item) + (SafeCast item (StructType '('key (DataType 'String)) '('value (DataType 'String)))) + ))) + (let world (Write! world res (Key) list '())) + (let world (Commit! world res)) + (return world) + ))"; + + TExprContext exprCtx; + const auto exprRoot = ParseAndAnnotate(s, exprCtx); + CheckConstraint<TUniqueConstraintNode>(exprRoot, "Map", ""); + } + Y_UNIT_TEST(Distinct) { const auto s = R"(( (let res (DataSink 'result)) diff --git a/yql/essentials/core/yql_expr_constraint.cpp b/yql/essentials/core/yql_expr_constraint.cpp index fdfc21946be..e67557d9645 100644 --- a/yql/essentials/core/yql_expr_constraint.cpp +++ b/yql/essentials/core/yql_expr_constraint.cpp @@ -665,12 +665,18 @@ private: }; const auto filterForUnique = [inItemType, outItemType](const TPartOfConstraintBase::TPathType& path) { - const auto castResult = CastResult<Strict>(TPartOfConstraintBase::GetSubTypeByPath(path, *inItemType), TPartOfConstraintBase::GetSubTypeByPath(path, *outItemType)); - return NUdf::ECastOptions::Complete == castResult || NUdf::ECastOptions::MayFail == castResult; + if (const auto outType = TPartOfConstraintBase::GetSubTypeByPath(path, *outItemType)) { + const auto castResult = CastResult<Strict>(TPartOfConstraintBase::GetSubTypeByPath(path, *inItemType), outType); + return NUdf::ECastOptions::Complete == castResult || NUdf::ECastOptions::MayFail == castResult; + } + return false; }; const auto filterForDistinct = [inItemType, outItemType](const TPartOfConstraintBase::TPathType& path) { - return NUdf::ECastOptions::Complete == CastResult<Strict>(TPartOfConstraintBase::GetSubTypeByPath(path, *inItemType), TPartOfConstraintBase::GetSubTypeByPath(path, *outItemType)); + if (const auto outType = TPartOfConstraintBase::GetSubTypeByPath(path, *outItemType)) { + return NUdf::ECastOptions::Complete == CastResult<Strict>(TPartOfConstraintBase::GetSubTypeByPath(path, *inItemType), outType); + } + return false; }; FilterFromHead<TSortedConstraintNode>(input, filter, ctx); diff --git a/yql/essentials/core/yql_expr_type_annotation.h b/yql/essentials/core/yql_expr_type_annotation.h index d23ce163e3c..9bad092f76c 100644 --- a/yql/essentials/core/yql_expr_type_annotation.h +++ b/yql/essentials/core/yql_expr_type_annotation.h @@ -355,8 +355,4 @@ TStringBuf NormalizeCallableName(TStringBuf name); void CheckExpectedTypeAndColumnOrder(const TExprNode& node, TExprContext& ctx, TTypeAnnotationContext& typesCtx); -namespace NBlockStreamIO { - constexpr bool ReplicateScalars = true; -} // namespace NBlockStreamIO - } diff --git a/yql/essentials/core/yql_graph_transformer.h b/yql/essentials/core/yql_graph_transformer.h index f1f4ff2fa64..e06ab6d6468 100644 --- a/yql/essentials/core/yql_graph_transformer.h +++ b/yql/essentials/core/yql_graph_transformer.h @@ -360,7 +360,7 @@ public: const auto it = Callbacks_.find(input.Get()); YQL_ENSURE(it != Callbacks_.cend()); auto& future = it->second; - YQL_ENSURE(future.HasValue()); + HandleFutureException(future); const auto status = future.GetValue()(input, output, ctx); Callbacks_.erase(it); return status; diff --git a/yql/essentials/core/yql_type_annotation.cpp b/yql/essentials/core/yql_type_annotation.cpp index 6de6ecf8bdf..dbe6f27ed03 100644 --- a/yql/essentials/core/yql_type_annotation.cpp +++ b/yql/essentials/core/yql_type_annotation.cpp @@ -310,7 +310,7 @@ IGraphTransformer::TStatus TTypeAnnotationContext::SetColumnOrder(const TExprNod return IGraphTransformer::TStatus::Error; } - YQL_CLOG(DEBUG, Core) << "Setting column order " << FormatColumnOrder(columnOrder, 10) << " for " << node.Content() << "#" << node.UniqueId(); + YQL_CLOG(TRACE, Core) << "Setting column order " << FormatColumnOrder(columnOrder, 10) << " for " << node.Content() << "#" << node.UniqueId(); ColumnOrderStorage->Set(node.UniqueId(), columnOrder); return IGraphTransformer::TStatus::Ok; @@ -537,6 +537,12 @@ bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& modu ctx.IssueManager.RaiseIssue(addSubIssues(std::move(issue), astRes.Issues)); } + if (!sExpr && ModuleChecker) { + if (!ModuleChecker(query, fullName, ctx)) { + return false; + } + } + TLibraryCohesion cohesion; if (!CompileExpr(*astRes.Root, cohesion, LibsContext)) { ctx.AddError(addSubIssues(TIssue(pos, TStringBuilder() << "Failed to compile: " << fullName), LibsContext.IssueManager.GetIssues())); @@ -647,7 +653,7 @@ IModuleResolver::TPtr TModuleResolver::CreateMutableChild() const { throw yexception() << "Module resolver should not contain user data and URL loader"; } - return std::make_shared<TModuleResolver>(Translators, &Modules, LibsContext.NextUniqueId, ClusterMapping, SqlFlags, OptimizeLibraries, KnownPackages, Libs, FileAliasPrefix); + return std::make_shared<TModuleResolver>(Translators, &Modules, LibsContext.NextUniqueId, ClusterMapping, SqlFlags, OptimizeLibraries, KnownPackages, Libs, FileAliasPrefix, ModuleChecker); } void TModuleResolver::SetFileAliasPrefix(TString&& prefix) { diff --git a/yql/essentials/core/yql_type_annotation.h b/yql/essentials/core/yql_type_annotation.h index 401e01454ac..ab2db6e9fbd 100644 --- a/yql/essentials/core/yql_type_annotation.h +++ b/yql/essentials/core/yql_type_annotation.h @@ -41,15 +41,19 @@ public: class TModuleResolver : public IModuleResolver { public: + using TModuleChecker = std::function<bool(const TString& query, const TString& fileName, TExprContext& ctx)>; + TModuleResolver(const NSQLTranslation::TTranslators& translators, TModulesTable&& modules, ui64 nextUniqueId, const THashMap<TString, TString>& clusterMapping, - const THashSet<TString>& sqlFlags, bool optimizeLibraries = true, THolder<TExprContext> ownedCtx = {}) + const THashSet<TString>& sqlFlags, bool optimizeLibraries = true, + THolder<TExprContext> ownedCtx = {}, TModuleChecker moduleChecker = {}) : Translators(translators) , OwnedCtx(std::move(ownedCtx)) , LibsContext(nextUniqueId) , Modules(std::move(modules)) , ClusterMapping(clusterMapping) , SqlFlags(sqlFlags) + , ModuleChecker(moduleChecker) , OptimizeLibraries(optimizeLibraries) { if (OwnedCtx) { @@ -60,7 +64,7 @@ public: TModuleResolver(const NSQLTranslation::TTranslators& translators, const TModulesTable* parentModules, ui64 nextUniqueId, const THashMap<TString, TString>& clusterMapping, const THashSet<TString>& sqlFlags, bool optimizeLibraries, const TSet<TString>& knownPackages, const THashMap<TString, - THashMap<int, TLibraryCohesion>>& libs, const TString& fileAliasPrefix) + THashMap<int, TLibraryCohesion>>& libs, const TString& fileAliasPrefix, TModuleChecker moduleChecker) : Translators(translators) , ParentModules(parentModules) , LibsContext(nextUniqueId) @@ -68,6 +72,7 @@ public: , Libs(libs) , ClusterMapping(clusterMapping) , SqlFlags(sqlFlags) + , ModuleChecker(moduleChecker) , OptimizeLibraries(optimizeLibraries) , FileAliasPrefix(fileAliasPrefix) { @@ -102,6 +107,10 @@ public: SqlFlags = flags; } + void SetModuleChecker(TModuleChecker moduleChecker) { + ModuleChecker = moduleChecker; + } + void RegisterPackage(const TString& package) override; bool SetPackageDefaultVersion(const TString& package, ui32 version) override; const TExportTable* GetModule(const TString& module) const override; @@ -139,6 +148,7 @@ private: TModulesTable Modules; THashMap<TString, TString> ClusterMapping; THashSet<TString> SqlFlags; + TModuleChecker ModuleChecker; const bool OptimizeLibraries; THolder<TExprContext::TFreezeGuard> FreezeGuard; TString FileAliasPrefix; diff --git a/yql/essentials/data/language/pragmas_opensource.json b/yql/essentials/data/language/pragmas_opensource.json index 4e24ec9b5a8..26cc1c777a0 100644 --- a/yql/essentials/data/language/pragmas_opensource.json +++ b/yql/essentials/data/language/pragmas_opensource.json @@ -1 +1 @@ -[{"name":"yt.Annotations"},{"name":"yt.ApplyStoredConstraints"},{"name":"yt.Auth"},{"name":"yt.AutoMerge"},{"name":"yt.BatchListFolderConcurrency"},{"name":"yt.BinaryExpirationInterval"},{"name":"yt.BinaryTmpFolder"},{"name":"yt.BlockMapJoin"},{"name":"yt.BlockReaderSupportedDataTypes"},{"name":"yt.BlockReaderSupportedTypes"},{"name":"yt.BufferRowCount"},{"name":"yt.ClientMapTimeout"},{"name":"yt.ColumnGroupMode"},{"name":"yt.CombineCoreLimit"},{"name":"yt.CommonJoinCoreLimit"},{"name":"yt.CompactForDistinct"},{"name":"yt.CoreDumpPath"},{"name":"yt.DQRPCReaderInflight"},{"name":"yt.DQRPCReaderTimeout"},{"name":"yt.DataSizePerJob"},{"name":"yt.DataSizePerMapJob"},{"name":"yt.DataSizePerPartition"},{"name":"yt.DataSizePerSortJob"},{"name":"yt.DefaultCalcMemoryLimit"},{"name":"yt.DefaultCluster"},{"name":"yt.DefaultLocalityTimeout"},{"name":"yt.DefaultMapSelectivityFactor"},{"name":"yt.DefaultMaxJobFails"},{"name":"yt.DefaultMemoryDigestLowerBound"},{"name":"yt.DefaultMemoryLimit"},{"name":"yt.DefaultMemoryReserveFactor"},{"name":"yt.DefaultOperationWeight"},{"name":"yt.DefaultRuntimeCluster"},{"name":"yt.Description"},{"name":"yt.DisableFuseOperations"},{"name":"yt.DisableJobSplitting"},{"name":"yt.DisableOptimizers"},{"name":"yt.DockerImage"},{"name":"yt.DqPruneKeyFilterLambda"},{"name":"yt.DropUnusedKeysFromKeyFilter"},{"name":"yt.EnableDynamicStoreReadInDQ"},{"name":"yt.EnableFuseMapToMapReduce"},{"name":"yt.EnforceJobUtc"},{"name":"yt.ErasureCodecCpu"},{"name":"yt.ErasureCodecCpuForDq"},{"name":"yt.EvaluationTableSizeLimit"},{"name":"yt.ExpirationDeadline"},{"name":"yt.ExpirationInterval"},{"name":"yt.ExtendTableLimit"},{"name":"yt.ExtendedStatsMaxChunkCount"},{"name":"yt.ExternalTx"},{"name":"yt.ExtraTmpfsSize"},{"name":"yt.FileCacheTtl"},{"name":"yt.FmrOperationSpec"},{"name":"yt.FolderInlineDataLimit"},{"name":"yt.FolderInlineItemsLimit"},{"name":"yt.ForceInferSchema"},{"name":"yt.ForceJobSizeAdjuster"},{"name":"yt.ForceTmpSecurity"},{"name":"yt.GeobaseDownloadUrl"},{"name":"yt.HybridDqDataSizeLimitForOrdered"},{"name":"yt.HybridDqDataSizeLimitForUnordered"},{"name":"yt.HybridDqExecution"},{"name":"yt.HybridDqExecutionFallback"},{"name":"yt.IgnoreTypeV3"},{"name":"yt.IgnoreWeakSchema"},{"name":"yt.IgnoreYamrDsv"},{"name":"yt.InferSchema"},{"name":"yt.InferSchemaMode"},{"name":"yt.InferSchemaTableCountThreshold"},{"name":"yt.InflightTempTablesLimit"},{"name":"yt.IntermediateAccount"},{"name":"yt.IntermediateDataMedium"},{"name":"yt.IntermediateReplicationFactor"},{"name":"yt.JavascriptCpu"},{"name":"yt.JobBlockInput"},{"name":"yt.JobBlockInputSupportedDataTypes"},{"name":"yt.JobBlockInputSupportedTypes"},{"name":"yt.JobBlockOutput"},{"name":"yt.JobBlockOutputSupportedDataTypes"},{"name":"yt.JobBlockOutputSupportedTypes"},{"name":"yt.JobBlockTableContent"},{"name":"yt.JobEnv"},{"name":"yt.JoinAllowColumnRenames"},{"name":"yt.JoinCollectColumnarStatistics"},{"name":"yt.JoinColumnarStatisticsFetcherMode"},{"name":"yt.JoinCommonUseMapMultiOut"},{"name":"yt.JoinEnableStarJoin"},{"name":"yt.JoinMergeForce"},{"name":"yt.JoinMergeReduceJobMaxSize"},{"name":"yt.JoinMergeSetTopLevelFullSort"},{"name":"yt.JoinMergeTablesLimit"},{"name":"yt.JoinMergeUnsortedFactor"},{"name":"yt.JoinMergeUseSmallAsPrimary"},{"name":"yt.JoinUseColumnarStatistics"},{"name":"yt.JoinWaitAllInputs"},{"name":"yt.KeepTempTables"},{"name":"yt.KeyFilterForStartsWith"},{"name":"yt.LLVMMemSize"},{"name":"yt.LLVMNodeCountLimit"},{"name":"yt.LLVMPerNodeMemSize"},{"name":"yt.LayerPaths"},{"name":"yt.LocalCalcLimit"},{"name":"yt.LookupJoinLimit"},{"name":"yt.LookupJoinMaxRows"},{"name":"yt.MapJoinLimit"},{"name":"yt.MapJoinShardCount"},{"name":"yt.MapJoinShardMinRows"},{"name":"yt.MapJoinUseFlow"},{"name":"yt.MapLocalityTimeout"},{"name":"yt.MaxChunksForDqRead"},{"name":"yt.MaxColumnGroups"},{"name":"yt.MaxCpuUsageToFuseMultiOuts"},{"name":"yt.MaxExtraJobMemoryToFuseOperations"},{"name":"yt.MaxInputTables"},{"name":"yt.MaxInputTablesForSortedMerge"},{"name":"yt.MaxJobCount"},{"name":"yt.MaxKeyRangeCount"},{"name":"yt.MaxKeyWeight"},{"name":"yt.MaxOperationFiles"},{"name":"yt.MaxOutputTables"},{"name":"yt.MaxReplicationFactorToFuseMultiOuts"},{"name":"yt.MaxReplicationFactorToFuseOperations"},{"name":"yt.MaxRowWeight"},{"name":"yt.MaxSpeculativeJobCountPerTask"},{"name":"yt.MergeAdjacentPointRanges"},{"name":"yt.MinColumnGroupSize"},{"name":"yt.MinLocalityInputDataWeight"},{"name":"yt.MinPublishedAvgChunkSize"},{"name":"yt.MinTempAvgChunkSize"},{"name":"yt.NativeYtTypeCompatibility"},{"name":"yt.NetworkProject"},{"name":"yt.NightlyCompress"},{"name":"yt.OperationReaders"},{"name":"yt.OperationSpec"},{"name":"yt.OptimizeFor"},{"name":"yt.Owners"},{"name":"yt.ParallelOperationsLimit"},{"name":"yt.PartitionByConstantKeysViaMap"},{"name":"yt.Pool"},{"name":"yt.PoolTrees"},{"name":"yt.PrimaryMedium"},{"name":"yt.PruneKeyFilterLambda"},{"name":"yt.PruneQLFilterLambda"},{"name":"yt.PublishedAutoMerge"},{"name":"yt.PublishedCompressionCodec"},{"name":"yt.PublishedErasureCodec"},{"name":"yt.PublishedMedia"},{"name":"yt.PublishedPrimaryMedium"},{"name":"yt.PublishedReplicationFactor"},{"name":"yt.PythonCpu"},{"name":"yt.QueryCacheChunkLimit"},{"name":"yt.QueryCacheIgnoreTableRevision"},{"name":"yt.QueryCacheMode"},{"name":"yt.QueryCacheSalt"},{"name":"yt.QueryCacheTtl"},{"name":"yt.QueryCacheUseExpirationTimeout"},{"name":"yt.QueryCacheUseForCalc"},{"name":"yt.ReduceLocalityTimeout"},{"name":"yt.ReleaseTempData"},{"name":"yt.ReportEquiJoinStats"},{"name":"yt.RuntimeCluster"},{"name":"yt.RuntimeClusterSelection"},{"name":"yt.SamplingIoBlockSize"},{"name":"yt.SchedulingTag"},{"name":"yt.SchedulingTagFilter"},{"name":"yt.ScriptCpu"},{"name":"yt.SortLocalityTimeout"},{"name":"yt.StartedBy"},{"name":"yt.StaticPool"},{"name":"yt.SuspendIfAccountLimitExceeded"},{"name":"yt.SwitchLimit"},{"name":"yt.TableContentColumnarStatistics"},{"name":"yt.TableContentCompressLevel"},{"name":"yt.TableContentDeliveryMode"},{"name":"yt.TableContentLocalExecution"},{"name":"yt.TableContentMaxChunksForNativeDelivery"},{"name":"yt.TableContentMaxInputTables"},{"name":"yt.TableContentMinAvgChunkSize"},{"name":"yt.TableContentTmpFolder"},{"name":"yt.TableContentUseSkiff"},{"name":"yt.TablesTmpFolder"},{"name":"yt.TempTablesTtl"},{"name":"yt.TemporaryAutoMerge"},{"name":"yt.TemporaryCompressionCodec"},{"name":"yt.TemporaryErasureCodec"},{"name":"yt.TemporaryMedia"},{"name":"yt.TemporaryPrimaryMedium"},{"name":"yt.TemporaryReplicationFactor"},{"name":"yt.TentativePoolTrees"},{"name":"yt.TentativeTreeEligibilityMaxJobDurationRatio"},{"name":"yt.TentativeTreeEligibilityMinJobDuration"},{"name":"yt.TentativeTreeEligibilitySampleJobCount"},{"name":"yt.TmpFolder"},{"name":"yt.TopSortMaxLimit"},{"name":"yt.TopSortRowMultiplierPerJob"},{"name":"yt.TopSortSizePerJob"},{"name":"yt.UseAggPhases"},{"name":"yt.UseColumnGroupsFromInputTables"},{"name":"yt.UseColumnarStatistics"},{"name":"yt.UseDefaultTentativePoolTrees"},{"name":"yt.UseFlow"},{"name":"yt.UseIntermediateSchema"},{"name":"yt.UseIntermediateStreams"},{"name":"yt.UseNativeDescSort"},{"name":"yt.UseNativeYtTypes"},{"name":"yt.UseNewPredicateExtraction"},{"name":"yt.UsePartitionsByKeysForFinalAgg"},{"name":"yt.UseQLFilter"},{"name":"yt.UseRPCReaderInDQ"},{"name":"yt.UseSkiff"},{"name":"yt.UseSystemColumns"},{"name":"yt.UseTmpfs"},{"name":"yt.UseTypeV2"},{"name":"yt.UseYqlRowSpecCompactForm"},{"name":"yt.UserSlots"},{"name":"yt.ViewIsolation"},{"name":"yt.WideFlowLimit"},{"name":"dq.AggregateStatsByStage"},{"name":"dq.AnalyticsHopping"},{"name":"dq.AnalyzeQuery"},{"name":"dq.ChannelBufferSize"},{"name":"dq.ChunkSizeLimit"},{"name":"dq.CollectCoreDumps"},{"name":"dq.ComputeActorType"},{"name":"dq.DataSizePerJob"},{"name":"dq.DisableCheckpoints"},{"name":"dq.DisableLLVMForBlockStages"},{"name":"dq.EnableChannelStats"},{"name":"dq.EnableComputeActor"},{"name":"dq.EnableDqReplicate"},{"name":"dq.EnableFullResultWrite"},{"name":"dq.EnableInsert"},{"name":"dq.EnableSpillingInChannels"},{"name":"dq.EnableSpillingNodes"},{"name":"dq.EnableStrip"},{"name":"dq.ExportStats"},{"name":"dq.FallbackPolicy"},{"name":"dq.HashJoinMode"},{"name":"dq.HashShuffleMaxTasks"},{"name":"dq.HashShuffleTasksRatio"},{"name":"dq.MaxDataSizePerJob"},{"name":"dq.MaxDataSizePerQuery"},{"name":"dq.MaxNetworkRetries"},{"name":"dq.MaxRetries"},{"name":"dq.MaxTasksPerOperation"},{"name":"dq.MaxTasksPerStage"},{"name":"dq.MemoryLimit"},{"name":"dq.OptLLVM"},{"name":"dq.OutputChunkMaxSize"},{"name":"dq.ParallelOperationsLimit"},{"name":"dq.PingTimeoutMs"},{"name":"dq.PullRequestTimeoutMs"},{"name":"dq.QueryTimeout"},{"name":"dq.RetryBackoffMs"},{"name":"dq.Scheduler"},{"name":"dq.SpillingEngine"},{"name":"dq.SplitStageOnDqReplicate"},{"name":"dq.TaskRunnerStats"},{"name":"dq.UseAggPhases"},{"name":"dq.UseBlockReader"},{"name":"dq.UseFastPickleTransport"},{"name":"dq.UseFinalizeByKey"},{"name":"dq.UseGraceJoinCoreForMap"},{"name":"dq.UseOOBTransport"},{"name":"dq.UseSimpleYtReader"},{"name":"dq.UseWideBlockChannels"},{"name":"dq.UseWideChannels"},{"name":"dq.WatermarksEnableIdlePartitions"},{"name":"dq.WatermarksGranularityMs"},{"name":"dq.WatermarksLateArrivalDelayMs"},{"name":"dq.WatermarksMode"},{"name":"dq.WorkerFilter"},{"name":"dq.WorkersPerOperation"},{"name":"AllowDotInAlias"},{"name":"AllowUnnamedColumns"},{"name":"AnsiCurrentRow"},{"name":"AnsiImplicitCrossJoin"},{"name":"AnsiInForEmptyOrNullableItemsCollections"},{"name":"AnsiLike"},{"name":"AnsiOptionalAs"},{"name":"AnsiRankForNullableKeys"},{"name":"AutoCommit"},{"name":"BlockEngine"},{"name":"BlockEngineEnable"},{"name":"BlockEngineForce"},{"name":"BogousStarInGroupByOverJoin"},{"name":"CheckedOps"},{"name":"ClassicDivision"},{"name":"CoalesceJoinKeysOnQualifiedAll"},{"name":"CompactGroupBy"},{"name":"CompactNamedExprs"},{"name":"CostBasedOptimizer"},{"name":"DataWatermarks"},{"name":"DirectRead"},{"name":"DisableAnsiCurrentRow"},{"name":"DisableAnsiImplicitCrossJoin"},{"name":"DisableAnsiInForEmptyOrNullableItemsCollections"},{"name":"DisableAnsiLike"},{"name":"DisableAnsiOptionalAs"},{"name":"DisableAnsiRankForNullableKeys"},{"name":"DisableBlockEngineEnable"},{"name":"DisableBlockEngineForce"},{"name":"DisableBogousStarInGroupByOverJoin"},{"name":"DisableCoalesceJoinKeysOnQualifiedAll"},{"name":"DisableCompactGroupBy"},{"name":"DisableCompactNamedExprs"},{"name":"DisableDistinctOverWindow"},{"name":"DisableDqEngineEnable"},{"name":"DisableDqEngineForce"},{"name":"DisableEmitAggApply"},{"name":"DisableEmitStartsWith"},{"name":"DisableEmitTableSource"},{"name":"DisableEmitUnionMerge"},{"name":"DisableFilterPushdownOverJoinOptionalSide"},{"name":"DisableFlexibleTypes"},{"name":"DisableJsonQueryReturnsJsonDocument"},{"name":"DisableOrderedColumns"},{"name":"DisablePullUpFlatMapOverJoin"},{"name":"DisableRegexUseRe2"},{"name":"DisableRotateJoinTree"},{"name":"DisableSeqMode"},{"name":"DisableSimpleColumns"},{"name":"DisableStrictJoinKeyTypes"},{"name":"DisableUnicodeLiterals"},{"name":"DisableUnorderedResult"},{"name":"DisableUnorderedSubqueries"},{"name":"DisableUseBlocks"},{"name":"DisableValidateUnusedExprs"},{"name":"DisableWarnOnAnsiAliasShadowing"},{"name":"DisableWarnUntypedStringLiterals"},{"name":"DiscoveryMode"},{"name":"DistinctOverWindow"},{"name":"DqEngine"},{"name":"DqEngineEnable"},{"name":"DqEngineForce"},{"name":"EmitAggApply"},{"name":"EmitStartsWith"},{"name":"EmitTableSource"},{"name":"EmitUnionMerge"},{"name":"EnableSystemColumns"},{"name":"Engine"},{"name":"ErrorMsg"},{"name":"FeatureR010"},{"name":"File"},{"name":"FileOption"},{"name":"FilterPushdownOverJoinOptionalSide"},{"name":"FlexibleTypes"},{"name":"Folder"},{"name":"Greetings"},{"name":"GroupByCubeLimit"},{"name":"GroupByLimit"},{"name":"JsonQueryReturnsJsonDocument"},{"name":"Library"},{"name":"OrderedColumns"},{"name":"OverrideLibrary"},{"name":"Package"},{"name":"PackageVersion"},{"name":"PathPrefix"},{"name":"PositionalUnionAll"},{"name":"PqReadBy"},{"name":"PullUpFlatMapOverJoin"},{"name":"RefSelect"},{"name":"RegexUseRe2"},{"name":"ResultRowsLimit"},{"name":"ResultSizeLimit"},{"name":"RotateJoinTree"},{"name":"RuntimeLogLevel"},{"name":"SampleSelect"},{"name":"SeqMode"},{"name":"SimpleColumns"},{"name":"StrictJoinKeyTypes"},{"name":"Udf"},{"name":"UnicodeLiterals"},{"name":"UnorderedResult"},{"name":"UnorderedSubqueries"},{"name":"UseBlocks"},{"name":"UseTablePrefixForEach"},{"name":"ValidateUnusedExprs"},{"name":"WarnOnAnsiAliasShadowing"},{"name":"WarnUnnamedColumns"},{"name":"WarnUntypedStringLiterals"},{"name":"Warning"},{"name":"WarningMsg"},{"name":"yson.AutoConvert"},{"name":"yson.CastToString"},{"name":"yson.DisableCastToString"},{"name":"yson.DisableStrict"},{"name":"yson.Strict"}] +[{"name":"yt.Annotations"},{"name":"yt.ApplyStoredConstraints"},{"name":"yt.Auth"},{"name":"yt.AutoMerge"},{"name":"yt.BatchListFolderConcurrency"},{"name":"yt.BinaryExpirationInterval"},{"name":"yt.BinaryTmpFolder"},{"name":"yt.BlockMapJoin"},{"name":"yt.BlockReaderSupportedDataTypes"},{"name":"yt.BlockReaderSupportedTypes"},{"name":"yt.BufferRowCount"},{"name":"yt.ClientMapTimeout"},{"name":"yt.ColumnGroupMode"},{"name":"yt.CombineCoreLimit"},{"name":"yt.CommonJoinCoreLimit"},{"name":"yt.CompactForDistinct"},{"name":"yt.CoreDumpPath"},{"name":"yt.DQRPCReaderInflight"},{"name":"yt.DQRPCReaderTimeout"},{"name":"yt.DataSizePerJob"},{"name":"yt.DataSizePerMapJob"},{"name":"yt.DataSizePerPartition"},{"name":"yt.DataSizePerSortJob"},{"name":"yt.DefaultCalcMemoryLimit"},{"name":"yt.DefaultCluster"},{"name":"yt.DefaultLocalityTimeout"},{"name":"yt.DefaultMapSelectivityFactor"},{"name":"yt.DefaultMaxJobFails"},{"name":"yt.DefaultMemoryDigestLowerBound"},{"name":"yt.DefaultMemoryLimit"},{"name":"yt.DefaultMemoryReserveFactor"},{"name":"yt.DefaultOperationWeight"},{"name":"yt.DefaultRuntimeCluster"},{"name":"yt.Description"},{"name":"yt.DisableFuseOperations"},{"name":"yt.DisableJobSplitting"},{"name":"yt.DisableOptimizers"},{"name":"yt.DockerImage"},{"name":"yt.DqPruneKeyFilterLambda"},{"name":"yt.DropUnusedKeysFromKeyFilter"},{"name":"yt.EnableDynamicStoreReadInDQ"},{"name":"yt.EnableFuseMapToMapReduce"},{"name":"yt.EnforceJobUtc"},{"name":"yt.ErasureCodecCpu"},{"name":"yt.ErasureCodecCpuForDq"},{"name":"yt.EvaluationTableSizeLimit"},{"name":"yt.ExpirationDeadline"},{"name":"yt.ExpirationInterval"},{"name":"yt.ExtendTableLimit"},{"name":"yt.ExtendedStatsMaxChunkCount"},{"name":"yt.ExternalTx"},{"name":"yt.ExtraTmpfsSize"},{"name":"yt.FileCacheTtl"},{"name":"yt.FmrOperationSpec"},{"name":"yt.FolderInlineDataLimit"},{"name":"yt.FolderInlineItemsLimit"},{"name":"yt.ForceInferSchema"},{"name":"yt.ForceJobSizeAdjuster"},{"name":"yt.ForceTmpSecurity"},{"name":"yt.GeobaseDownloadUrl"},{"name":"yt.HybridDqDataSizeLimitForOrdered"},{"name":"yt.HybridDqDataSizeLimitForUnordered"},{"name":"yt.HybridDqExecution"},{"name":"yt.HybridDqExecutionFallback"},{"name":"yt.IgnoreTypeV3"},{"name":"yt.IgnoreWeakSchema"},{"name":"yt.IgnoreYamrDsv"},{"name":"yt.InferSchema"},{"name":"yt.InferSchemaMode"},{"name":"yt.InferSchemaTableCountThreshold"},{"name":"yt.InflightTempTablesLimit"},{"name":"yt.IntermediateAccount"},{"name":"yt.IntermediateDataMedium"},{"name":"yt.IntermediateReplicationFactor"},{"name":"yt.JavascriptCpu"},{"name":"yt.JobBlockInput"},{"name":"yt.JobBlockInputSupportedDataTypes"},{"name":"yt.JobBlockInputSupportedTypes"},{"name":"yt.JobBlockOutput"},{"name":"yt.JobBlockOutputSupportedDataTypes"},{"name":"yt.JobBlockOutputSupportedTypes"},{"name":"yt.JobBlockTableContent"},{"name":"yt.JobEnv"},{"name":"yt.JoinAllowColumnRenames"},{"name":"yt.JoinCollectColumnarStatistics"},{"name":"yt.JoinColumnarStatisticsFetcherMode"},{"name":"yt.JoinCommonUseMapMultiOut"},{"name":"yt.JoinEnableStarJoin"},{"name":"yt.JoinMergeForce"},{"name":"yt.JoinMergeReduceJobMaxSize"},{"name":"yt.JoinMergeSetTopLevelFullSort"},{"name":"yt.JoinMergeTablesLimit"},{"name":"yt.JoinMergeUnsortedFactor"},{"name":"yt.JoinMergeUseSmallAsPrimary"},{"name":"yt.JoinUseColumnarStatistics"},{"name":"yt.JoinWaitAllInputs"},{"name":"yt.KeepTempTables"},{"name":"yt.KeyFilterForStartsWith"},{"name":"yt.LLVMMemSize"},{"name":"yt.LLVMNodeCountLimit"},{"name":"yt.LLVMPerNodeMemSize"},{"name":"yt.LayerPaths"},{"name":"yt.LocalCalcLimit"},{"name":"yt.LookupJoinLimit"},{"name":"yt.LookupJoinMaxRows"},{"name":"yt.MapJoinLimit"},{"name":"yt.MapJoinShardCount"},{"name":"yt.MapJoinShardMinRows"},{"name":"yt.MapJoinUseFlow"},{"name":"yt.MapLocalityTimeout"},{"name":"yt.MaxChunksForDqRead"},{"name":"yt.MaxColumnGroups"},{"name":"yt.MaxCpuUsageToFuseMultiOuts"},{"name":"yt.MaxExtraJobMemoryToFuseOperations"},{"name":"yt.MaxInputTables"},{"name":"yt.MaxInputTablesForSortedMerge"},{"name":"yt.MaxJobCount"},{"name":"yt.MaxKeyRangeCount"},{"name":"yt.MaxKeyWeight"},{"name":"yt.MaxOperationFiles"},{"name":"yt.MaxOutputTables"},{"name":"yt.MaxReplicationFactorToFuseMultiOuts"},{"name":"yt.MaxReplicationFactorToFuseOperations"},{"name":"yt.MaxRowWeight"},{"name":"yt.MaxSpeculativeJobCountPerTask"},{"name":"yt.MergeAdjacentPointRanges"},{"name":"yt.MinColumnGroupSize"},{"name":"yt.MinLocalityInputDataWeight"},{"name":"yt.MinPublishedAvgChunkSize"},{"name":"yt.MinTempAvgChunkSize"},{"name":"yt.NativeYtTypeCompatibility"},{"name":"yt.NetworkProject"},{"name":"yt.NightlyCompress"},{"name":"yt.OperationReaders"},{"name":"yt.OperationSpec"},{"name":"yt.OptimizeFor"},{"name":"yt.Owners"},{"name":"yt.ParallelOperationsLimit"},{"name":"yt.PartitionByConstantKeysViaMap"},{"name":"yt.Pool"},{"name":"yt.PoolTrees"},{"name":"yt.PrimaryMedium"},{"name":"yt.PruneKeyFilterLambda"},{"name":"yt.PruneQLFilterLambda"},{"name":"yt.PublishedAutoMerge"},{"name":"yt.PublishedCompressionCodec"},{"name":"yt.PublishedErasureCodec"},{"name":"yt.PublishedMedia"},{"name":"yt.PublishedPrimaryMedium"},{"name":"yt.PublishedReplicationFactor"},{"name":"yt.PythonCpu"},{"name":"yt.QueryCacheChunkLimit"},{"name":"yt.QueryCacheIgnoreTableRevision"},{"name":"yt.QueryCacheMode"},{"name":"yt.QueryCacheSalt"},{"name":"yt.QueryCacheTtl"},{"name":"yt.QueryCacheUseExpirationTimeout"},{"name":"yt.QueryCacheUseForCalc"},{"name":"yt.ReduceLocalityTimeout"},{"name":"yt.ReleaseTempData"},{"name":"yt.ReportEquiJoinStats"},{"name":"yt.RuntimeCluster"},{"name":"yt.RuntimeClusterSelection"},{"name":"yt.SamplingIoBlockSize"},{"name":"yt.SchedulingTag"},{"name":"yt.SchedulingTagFilter"},{"name":"yt.ScriptCpu"},{"name":"yt.SortLocalityTimeout"},{"name":"yt.StartedBy"},{"name":"yt.StaticPool"},{"name":"yt.SuspendIfAccountLimitExceeded"},{"name":"yt.SwitchLimit"},{"name":"yt.TableContentColumnarStatistics"},{"name":"yt.TableContentCompressLevel"},{"name":"yt.TableContentDeliveryMode"},{"name":"yt.TableContentLocalExecution"},{"name":"yt.TableContentMaxChunksForNativeDelivery"},{"name":"yt.TableContentMaxInputTables"},{"name":"yt.TableContentMinAvgChunkSize"},{"name":"yt.TableContentTmpFolder"},{"name":"yt.TableContentUseSkiff"},{"name":"yt.TablesTmpFolder"},{"name":"yt.TempTablesTtl"},{"name":"yt.TemporaryAutoMerge"},{"name":"yt.TemporaryCompressionCodec"},{"name":"yt.TemporaryErasureCodec"},{"name":"yt.TemporaryMedia"},{"name":"yt.TemporaryPrimaryMedium"},{"name":"yt.TemporaryReplicationFactor"},{"name":"yt.TentativePoolTrees"},{"name":"yt.TentativeTreeEligibilityMaxJobDurationRatio"},{"name":"yt.TentativeTreeEligibilityMinJobDuration"},{"name":"yt.TentativeTreeEligibilitySampleJobCount"},{"name":"yt.TmpFolder"},{"name":"yt.TopSortMaxLimit"},{"name":"yt.TopSortRowMultiplierPerJob"},{"name":"yt.TopSortSizePerJob"},{"name":"yt.UseAggPhases"},{"name":"yt.UseColumnGroupsFromInputTables"},{"name":"yt.UseColumnarStatistics"},{"name":"yt.UseDefaultTentativePoolTrees"},{"name":"yt.UseFlow"},{"name":"yt.UseIntermediateSchema"},{"name":"yt.UseIntermediateStreams"},{"name":"yt.UseNativeDescSort"},{"name":"yt.UseNativeYtTypes"},{"name":"yt.UseNewPredicateExtraction"},{"name":"yt.UsePartitionsByKeysForFinalAgg"},{"name":"yt.UseQLFilter"},{"name":"yt.UseRPCReaderInDQ"},{"name":"yt.UseSkiff"},{"name":"yt.UseSystemColumns"},{"name":"yt.UseTmpfs"},{"name":"yt.UseTypeV2"},{"name":"yt.UseYqlRowSpecCompactForm"},{"name":"yt.UserSlots"},{"name":"yt.ViewIsolation"},{"name":"yt.WideFlowLimit"},{"name":"dq.AggregateStatsByStage"},{"name":"dq.AnalyticsHopping"},{"name":"dq.AnalyzeQuery"},{"name":"dq.ChannelBufferSize"},{"name":"dq.ChunkSizeLimit"},{"name":"dq.CollectCoreDumps"},{"name":"dq.ComputeActorType"},{"name":"dq.DataSizePerJob"},{"name":"dq.DisableCheckpoints"},{"name":"dq.DisableLLVMForBlockStages"},{"name":"dq.EnableChannelStats"},{"name":"dq.EnableComputeActor"},{"name":"dq.EnableDqReplicate"},{"name":"dq.EnableFullResultWrite"},{"name":"dq.EnableInsert"},{"name":"dq.EnableSpillingInChannels"},{"name":"dq.EnableSpillingNodes"},{"name":"dq.EnableStrip"},{"name":"dq.ExportStats"},{"name":"dq.FallbackPolicy"},{"name":"dq.HashJoinMode"},{"name":"dq.HashShuffleMaxTasks"},{"name":"dq.HashShuffleTasksRatio"},{"name":"dq.MaxDataSizePerJob"},{"name":"dq.MaxDataSizePerQuery"},{"name":"dq.MaxNetworkRetries"},{"name":"dq.MaxRetries"},{"name":"dq.MaxTasksPerOperation"},{"name":"dq.MaxTasksPerStage"},{"name":"dq.MemoryLimit"},{"name":"dq.OptLLVM"},{"name":"dq.OutputChunkMaxSize"},{"name":"dq.ParallelOperationsLimit"},{"name":"dq.PingTimeoutMs"},{"name":"dq.PullRequestTimeoutMs"},{"name":"dq.QueryTimeout"},{"name":"dq.RetryBackoffMs"},{"name":"dq.Scheduler"},{"name":"dq.SpillingEngine"},{"name":"dq.SplitStageOnDqReplicate"},{"name":"dq.TaskRunnerStats"},{"name":"dq.UseAggPhases"},{"name":"dq.UseBlockReader"},{"name":"dq.UseFastPickleTransport"},{"name":"dq.UseFinalizeByKey"},{"name":"dq.UseGraceJoinCoreForMap"},{"name":"dq.UseOOBTransport"},{"name":"dq.UseSimpleYtReader"},{"name":"dq.UseWideBlockChannels"},{"name":"dq.UseWideChannels"},{"name":"dq.WatermarksEnableIdlePartitions"},{"name":"dq.WatermarksGranularityMs"},{"name":"dq.WatermarksLateArrivalDelayMs"},{"name":"dq.WatermarksMode"},{"name":"dq.WorkerFilter"},{"name":"dq.WorkersPerOperation"},{"name":"AllowDotInAlias"},{"name":"AllowUnnamedColumns"},{"name":"AnsiCurrentRow"},{"name":"AnsiImplicitCrossJoin"},{"name":"AnsiInForEmptyOrNullableItemsCollections"},{"name":"AnsiLike"},{"name":"AnsiOptionalAs"},{"name":"AnsiRankForNullableKeys"},{"name":"AutoCommit"},{"name":"BlockEngine"},{"name":"BlockEngineEnable"},{"name":"BlockEngineForce"},{"name":"BogousStarInGroupByOverJoin"},{"name":"CheckedOps"},{"name":"ClassicDivision"},{"name":"CoalesceJoinKeysOnQualifiedAll"},{"name":"CompactGroupBy"},{"name":"CompactNamedExprs"},{"name":"CostBasedOptimizer"},{"name":"DataWatermarks"},{"name":"DirectRead"},{"name":"DisableAnsiCurrentRow"},{"name":"DisableAnsiImplicitCrossJoin"},{"name":"DisableAnsiInForEmptyOrNullableItemsCollections"},{"name":"DisableAnsiLike"},{"name":"DisableAnsiOptionalAs"},{"name":"DisableAnsiRankForNullableKeys"},{"name":"DisableBlockEngineEnable"},{"name":"DisableBlockEngineForce"},{"name":"DisableBogousStarInGroupByOverJoin"},{"name":"DisableCoalesceJoinKeysOnQualifiedAll"},{"name":"DisableCompactGroupBy"},{"name":"DisableCompactNamedExprs"},{"name":"DisableDistinctOverKeys"},{"name":"DisableDistinctOverWindow"},{"name":"DisableDqEngineEnable"},{"name":"DisableDqEngineForce"},{"name":"DisableEmitAggApply"},{"name":"DisableEmitStartsWith"},{"name":"DisableEmitTableSource"},{"name":"DisableEmitUnionMerge"},{"name":"DisableFilterPushdownOverJoinOptionalSide"},{"name":"DisableFlexibleTypes"},{"name":"DisableJsonQueryReturnsJsonDocument"},{"name":"DisableOrderedColumns"},{"name":"DisablePullUpFlatMapOverJoin"},{"name":"DisableRegexUseRe2"},{"name":"DisableRotateJoinTree"},{"name":"DisableSeqMode"},{"name":"DisableSimpleColumns"},{"name":"DisableStrictJoinKeyTypes"},{"name":"DisableUnicodeLiterals"},{"name":"DisableUnorderedResult"},{"name":"DisableUnorderedSubqueries"},{"name":"DisableUseBlocks"},{"name":"DisableValidateUnusedExprs"},{"name":"DisableWarnOnAnsiAliasShadowing"},{"name":"DisableWarnUntypedStringLiterals"},{"name":"DiscoveryMode"},{"name":"DistinctOverKeys"},{"name":"DistinctOverWindow"},{"name":"DqEngine"},{"name":"DqEngineEnable"},{"name":"DqEngineForce"},{"name":"EmitAggApply"},{"name":"EmitStartsWith"},{"name":"EmitTableSource"},{"name":"EmitUnionMerge"},{"name":"EnableSystemColumns"},{"name":"Engine"},{"name":"ErrorMsg"},{"name":"FeatureR010"},{"name":"File"},{"name":"FileOption"},{"name":"FilterPushdownOverJoinOptionalSide"},{"name":"FlexibleTypes"},{"name":"Folder"},{"name":"Greetings"},{"name":"GroupByCubeLimit"},{"name":"GroupByLimit"},{"name":"JsonQueryReturnsJsonDocument"},{"name":"Library"},{"name":"OrderedColumns"},{"name":"OverrideLibrary"},{"name":"Package"},{"name":"PackageVersion"},{"name":"PathPrefix"},{"name":"PositionalUnionAll"},{"name":"PqReadBy"},{"name":"PullUpFlatMapOverJoin"},{"name":"RefSelect"},{"name":"RegexUseRe2"},{"name":"ResultRowsLimit"},{"name":"ResultSizeLimit"},{"name":"RotateJoinTree"},{"name":"RuntimeLogLevel"},{"name":"SampleSelect"},{"name":"SeqMode"},{"name":"SimpleColumns"},{"name":"StrictJoinKeyTypes"},{"name":"Udf"},{"name":"UnicodeLiterals"},{"name":"UnorderedResult"},{"name":"UnorderedSubqueries"},{"name":"UseBlocks"},{"name":"UseTablePrefixForEach"},{"name":"ValidateUnusedExprs"},{"name":"WarnOnAnsiAliasShadowing"},{"name":"WarnUnnamedColumns"},{"name":"WarnUntypedStringLiterals"},{"name":"Warning"},{"name":"WarningMsg"},{"name":"yson.AutoConvert"},{"name":"yson.CastToString"},{"name":"yson.DisableCastToString"},{"name":"yson.DisableStrict"},{"name":"yson.Strict"}] diff --git a/yql/essentials/data/language/rules_corr_basic.json b/yql/essentials/data/language/rules_corr_basic.json index 5f7c7b05c8a..783c4e6825d 100644 --- a/yql/essentials/data/language/rules_corr_basic.json +++ b/yql/essentials/data/language/rules_corr_basic.json @@ -1 +1 @@ -[{"parent":"FUNC","rule":"ABC","sum":1},{"parent":"FUNC","rule":"ABS","sum":3232134},{"parent":"FUNC","rule":"ADAPTIVE_WARD_HISTOGRAM","sum":1},{"parent":"FUNC","rule":"ADDTIMEZONE","sum":397},{"parent":"FUNC","rule":"AGGLIST","sum":1226},{"parent":"FUNC","rule":"AGGList","sum":1},{"parent":"FUNC","rule":"AGGREATE_LIST","sum":2},{"parent":"FUNC","rule":"AGGREGATELIST","sum":72},{"parent":"FUNC","rule":"AGGREGATE_BY","sum":1581740},{"parent":"FUNC","rule":"AGGREGATE_LIST","sum":19716719},{"parent":"FUNC","rule":"AGGREGATE_LIST_","sum":2},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTINCT","sum":12799822},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTINCt","sum":2},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTNCT","sum":1},{"parent":"FUNC","rule":"AGGREGATE_LIST_DiSTINCT","sum":4},{"parent":"FUNC","rule":"AGGREGATE_LIST_Distinct","sum":782},{"parent":"FUNC","rule":"AGGREGATE_LIST_distINCT","sum":4},{"parent":"FUNC","rule":"AGGREGATE_LIST_distinct","sum":18918},{"parent":"FUNC","rule":"AGGREGATE_LISt","sum":6},{"parent":"FUNC","rule":"AGGREGATE_LiST","sum":106},{"parent":"FUNC","rule":"AGGREGATE_List","sum":75},{"parent":"FUNC","rule":"AGGREGATE_lIST","sum":59},{"parent":"FUNC","rule":"AGGREGATE_lIST_DISTINCT","sum":6},{"parent":"FUNC","rule":"AGGREGATE_liST_DISTINCT","sum":9},{"parent":"FUNC","rule":"AGGREGATE_list","sum":317},{"parent":"FUNC","rule":"AGGREGATE_list_distinct","sum":1},{"parent":"FUNC","rule":"AGGREGATIONFACTORY","sum":57},{"parent":"FUNC","rule":"AGGREGATION_FACTORY","sum":66704},{"parent":"FUNC","rule":"AGGREGate_List","sum":2},{"parent":"FUNC","rule":"AGGR_LIST","sum":2979},{"parent":"FUNC","rule":"AGGR_LIST_DISTINCT","sum":44423},{"parent":"FUNC","rule":"AGGReGATE_LIST","sum":3},{"parent":"FUNC","rule":"AGGReGate_list","sum":1},{"parent":"FUNC","rule":"AGG_LIST","sum":5134479},{"parent":"FUNC","rule":"AGG_LIST_","sum":5},{"parent":"FUNC","rule":"AGG_LIST_DISTINCT","sum":2873803},{"parent":"FUNC","rule":"AGG_LIST_DISTINCt","sum":9},{"parent":"FUNC","rule":"AGG_LIST_DIStiNCT","sum":10},{"parent":"FUNC","rule":"AGG_LIST_DiSTINCT","sum":4},{"parent":"FUNC","rule":"AGG_LIST_Distinct","sum":47},{"parent":"FUNC","rule":"AGG_LIST_distinct","sum":647},{"parent":"FUNC","rule":"AGG_LISt","sum":2},{"parent":"FUNC","rule":"AGG_LIst","sum":11},{"parent":"FUNC","rule":"AGG_LiST","sum":4},{"parent":"FUNC","rule":"AGG_LiST_DIStiNCT","sum":2},{"parent":"FUNC","rule":"AGG_List","sum":6695},{"parent":"FUNC","rule":"AGG_List_DISTINCT","sum":39},{"parent":"FUNC","rule":"AGG_List_Distinct","sum":917},{"parent":"FUNC","rule":"AGG_List_distinct","sum":103},{"parent":"FUNC","rule":"AGG_lIST_DISTINCT","sum":5},{"parent":"FUNC","rule":"AGG_list","sum":17486},{"parent":"FUNC","rule":"AGG_list_DISTINCT","sum":3060},{"parent":"FUNC","rule":"AGG_list_distinct","sum":787},{"parent":"FUNC","rule":"AGGrEGATE_LIST","sum":2},{"parent":"FUNC","rule":"AGGreGATE_LIST_DISTINCT","sum":3},{"parent":"FUNC","rule":"AGGregateList","sum":19},{"parent":"FUNC","rule":"AGGregate_LIST","sum":3},{"parent":"FUNC","rule":"AGGregate_LIST_DISTINCT","sum":1},{"parent":"FUNC","rule":"AGGregate_List_Distinct","sum":4},{"parent":"FUNC","rule":"AGGregate_list","sum":6},{"parent":"FUNC","rule":"AGGregate_list_distinct","sum":65},{"parent":"FUNC","rule":"AND","sum":46},{"parent":"FUNC","rule":"ARRAY_AGG","sum":2},{"parent":"FUNC","rule":"ASDICT","sum":194},{"parent":"FUNC","rule":"ASDict","sum":625},{"parent":"FUNC","rule":"ASEnum","sum":84},{"parent":"FUNC","rule":"ASIN","sum":2},{"parent":"FUNC","rule":"ASLIST","sum":27649},{"parent":"FUNC","rule":"ASLIst","sum":4},{"parent":"FUNC","rule":"ASList","sum":23452},{"parent":"FUNC","rule":"ASListStrict","sum":3},{"parent":"FUNC","rule":"ASSET","sum":17},{"parent":"FUNC","rule":"ASSTRUCT","sum":2713},{"parent":"FUNC","rule":"ASSet","sum":5},{"parent":"FUNC","rule":"ASStruct","sum":2337},{"parent":"FUNC","rule":"ASTAGGED","sum":15},{"parent":"FUNC","rule":"ASTAgged","sum":3},{"parent":"FUNC","rule":"ASTUPLE","sum":1583},{"parent":"FUNC","rule":"ASTagged","sum":63},{"parent":"FUNC","rule":"ASTuple","sum":5821},{"parent":"FUNC","rule":"AS_DICT","sum":6},{"parent":"FUNC","rule":"AS_LIST","sum":130},{"parent":"FUNC","rule":"AS_STRUCT","sum":13398},{"parent":"FUNC","rule":"AS_TABLE","sum":33},{"parent":"FUNC","rule":"AS_TUPLE","sum":850},{"parent":"FUNC","rule":"ASdict","sum":4},{"parent":"FUNC","rule":"ASlist","sum":1025},{"parent":"FUNC","rule":"ASstruct","sum":41},{"parent":"FUNC","rule":"AStagged","sum":3},{"parent":"FUNC","rule":"AStuple","sum":406},{"parent":"FUNC","rule":"AVG","sum":9095867},{"parent":"FUNC","rule":"AVGIF","sum":15},{"parent":"FUNC","rule":"AVG_IF","sum":732975},{"parent":"FUNC","rule":"AVG_If","sum":8},{"parent":"FUNC","rule":"AVG_if","sum":14339},{"parent":"FUNC","rule":"AVg","sum":4},{"parent":"FUNC","rule":"Abs","sum":323222},{"parent":"FUNC","rule":"AdaptiveDistanceHistogramCDF","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogram","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogramCDF","sum":3},{"parent":"FUNC","rule":"AdaptiveWeightHistogram","sum":57407},{"parent":"FUNC","rule":"AddMember","sum":881712},{"parent":"FUNC","rule":"AddTimeZone","sum":515639},{"parent":"FUNC","rule":"AddTimezone","sum":12049138},{"parent":"FUNC","rule":"Addtimezone","sum":60},{"parent":"FUNC","rule":"AggLIst","sum":1},{"parent":"FUNC","rule":"AggList","sum":20182},{"parent":"FUNC","rule":"AggListDistinct","sum":77},{"parent":"FUNC","rule":"Agg_LIST","sum":60},{"parent":"FUNC","rule":"Agg_LIST_DISTINCT","sum":22},{"parent":"FUNC","rule":"Agg_LIST_Distinct","sum":1},{"parent":"FUNC","rule":"Agg_LIst","sum":2},{"parent":"FUNC","rule":"Agg_LiSt","sum":3},{"parent":"FUNC","rule":"Agg_List","sum":129430},{"parent":"FUNC","rule":"Agg_List_","sum":8},{"parent":"FUNC","rule":"Agg_List_DISTINCT","sum":732},{"parent":"FUNC","rule":"Agg_List_Distinct","sum":2498},{"parent":"FUNC","rule":"Agg_List_distinct","sum":4},{"parent":"FUNC","rule":"Agg_list","sum":35635},{"parent":"FUNC","rule":"Agg_list_distinct","sum":8131},{"parent":"FUNC","rule":"Aggergate_List","sum":1},{"parent":"FUNC","rule":"Agglist","sum":93},{"parent":"FUNC","rule":"AggrList","sum":13},{"parent":"FUNC","rule":"Aggr_List","sum":1},{"parent":"FUNC","rule":"AggreGate_List","sum":6},{"parent":"FUNC","rule":"AggregateBy","sum":42285},{"parent":"FUNC","rule":"AggregateFlatten","sum":52398},{"parent":"FUNC","rule":"AggregateList","sum":40590},{"parent":"FUNC","rule":"AggregateListDistinct","sum":7692},{"parent":"FUNC","rule":"AggregateTransformInput","sum":25485},{"parent":"FUNC","rule":"AggregateTransformOutput","sum":44900},{"parent":"FUNC","rule":"Aggregate_BY","sum":241},{"parent":"FUNC","rule":"Aggregate_By","sum":136915},{"parent":"FUNC","rule":"Aggregate_LIST","sum":852},{"parent":"FUNC","rule":"Aggregate_LIST_DISTINCT","sum":2},{"parent":"FUNC","rule":"Aggregate_LIst","sum":1},{"parent":"FUNC","rule":"Aggregate_List","sum":345267},{"parent":"FUNC","rule":"Aggregate_List_Distinct","sum":5221},{"parent":"FUNC","rule":"Aggregate_List_distinct","sum":1312},{"parent":"FUNC","rule":"Aggregate_by","sum":79},{"parent":"FUNC","rule":"Aggregate_list","sum":228827},{"parent":"FUNC","rule":"Aggregate_list_DISTINCT","sum":36},{"parent":"FUNC","rule":"Aggregate_list_Distinct","sum":11},{"parent":"FUNC","rule":"Aggregate_list_distinct","sum":201741},{"parent":"FUNC","rule":"AggregationFactory","sum":1511775},{"parent":"FUNC","rule":"Apply","sum":1},{"parent":"FUNC","rule":"AsAtom","sum":687771},{"parent":"FUNC","rule":"AsDict","sum":2926107},{"parent":"FUNC","rule":"AsDictStrict","sum":4464},{"parent":"FUNC","rule":"AsEnum","sum":50920},{"parent":"FUNC","rule":"AsLIST","sum":917},{"parent":"FUNC","rule":"AsLIst","sum":2758},{"parent":"FUNC","rule":"AsLisT","sum":1503},{"parent":"FUNC","rule":"AsList","sum":17319174},{"parent":"FUNC","rule":"AsListStrict","sum":86350},{"parent":"FUNC","rule":"AsListstrict","sum":1},{"parent":"FUNC","rule":"AsSTruct","sum":374},{"parent":"FUNC","rule":"AsSet","sum":1593946},{"parent":"FUNC","rule":"AsSetStrict","sum":11367},{"parent":"FUNC","rule":"AsStruct","sum":23521151},{"parent":"FUNC","rule":"AsTAgged","sum":271},{"parent":"FUNC","rule":"AsTUPLE","sum":448},{"parent":"FUNC","rule":"AsTUple","sum":270},{"parent":"FUNC","rule":"AsTable","sum":6},{"parent":"FUNC","rule":"AsTaggeD","sum":4},{"parent":"FUNC","rule":"AsTagged","sum":183477},{"parent":"FUNC","rule":"AsTuPle","sum":1},{"parent":"FUNC","rule":"AsTuple","sum":30262710},{"parent":"FUNC","rule":"AsTupleunwrap","sum":4},{"parent":"FUNC","rule":"AsVariant","sum":357237},{"parent":"FUNC","rule":"As_List","sum":6},{"parent":"FUNC","rule":"As_Struct","sum":6},{"parent":"FUNC","rule":"As_list","sum":20},{"parent":"FUNC","rule":"As_tuple","sum":805},{"parent":"FUNC","rule":"Asdict","sum":182},{"parent":"FUNC","rule":"AslIst","sum":14},{"parent":"FUNC","rule":"Aslist","sum":23613},{"parent":"FUNC","rule":"Asset","sum":49},{"parent":"FUNC","rule":"Asstruct","sum":413},{"parent":"FUNC","rule":"AssumeStrict","sum":2600},{"parent":"FUNC","rule":"Astagged","sum":166},{"parent":"FUNC","rule":"Astuple","sum":748},{"parent":"FUNC","rule":"AtomCode","sum":522566},{"parent":"FUNC","rule":"Avg","sum":139250},{"parent":"FUNC","rule":"Avg_IF","sum":162},{"parent":"FUNC","rule":"Avg_If","sum":126},{"parent":"FUNC","rule":"Avg_if","sum":223},{"parent":"FUNC","rule":"BIT_AND","sum":4},{"parent":"FUNC","rule":"BIT_OR","sum":38693},{"parent":"FUNC","rule":"BIT_XOR","sum":435623},{"parent":"FUNC","rule":"BOOL_AND","sum":266061},{"parent":"FUNC","rule":"BOOL_OR","sum":878969},{"parent":"FUNC","rule":"BOOL_XOR","sum":46},{"parent":"FUNC","rule":"BOOL_and","sum":2},{"parent":"FUNC","rule":"BOOl_OR","sum":380},{"parent":"FUNC","rule":"BOTTOM","sum":11612},{"parent":"FUNC","rule":"BOTTOM_BY","sum":47377},{"parent":"FUNC","rule":"BOTTOM_by","sum":2},{"parent":"FUNC","rule":"Bool","sum":1391},{"parent":"FUNC","rule":"Bool_And","sum":118},{"parent":"FUNC","rule":"Bool_Or","sum":585},{"parent":"FUNC","rule":"Bool_and","sum":85},{"parent":"FUNC","rule":"Bool_or","sum":820},{"parent":"FUNC","rule":"Bottom","sum":278},{"parent":"FUNC","rule":"Bottom_BY","sum":10},{"parent":"FUNC","rule":"Bottom_By","sum":101},{"parent":"FUNC","rule":"Bottom_by","sum":1648},{"parent":"FUNC","rule":"ByteAt","sum":14153},{"parent":"FUNC","rule":"Bytes","sum":5},{"parent":"FUNC","rule":"CHAR_LENGTH","sum":373},{"parent":"FUNC","rule":"COALECSE","sum":1},{"parent":"FUNC","rule":"COALESCE","sum":51725079},{"parent":"FUNC","rule":"COALESCe","sum":10},{"parent":"FUNC","rule":"COALESce","sum":8},{"parent":"FUNC","rule":"COALEsCE","sum":1},{"parent":"FUNC","rule":"COALEsce","sum":4},{"parent":"FUNC","rule":"COALeSCE","sum":1},{"parent":"FUNC","rule":"COALesce","sum":14},{"parent":"FUNC","rule":"COAlESCE","sum":2731},{"parent":"FUNC","rule":"COAlesce","sum":12},{"parent":"FUNC","rule":"CONCAT","sum":19},{"parent":"FUNC","rule":"COOUNT","sum":2},{"parent":"FUNC","rule":"CORR","sum":430},{"parent":"FUNC","rule":"CORRELATION","sum":20939},{"parent":"FUNC","rule":"COS","sum":4},{"parent":"FUNC","rule":"COUNT","sum":52772805},{"parent":"FUNC","rule":"COUNTD","sum":4},{"parent":"FUNC","rule":"COUNTDISTINCTESTIMATE","sum":609},{"parent":"FUNC","rule":"COUNTDistinctEstimate","sum":7},{"parent":"FUNC","rule":"COUNTIF","sum":15625},{"parent":"FUNC","rule":"COUNT_","sum":1},{"parent":"FUNC","rule":"COUNT_IF","sum":24112936},{"parent":"FUNC","rule":"COUNT_IF_","sum":24},{"parent":"FUNC","rule":"COUNT_If","sum":12952},{"parent":"FUNC","rule":"COUNT_iF","sum":44},{"parent":"FUNC","rule":"COUNT_if","sum":19513},{"parent":"FUNC","rule":"COUNt","sum":1261},{"parent":"FUNC","rule":"COUNt_IF","sum":24},{"parent":"FUNC","rule":"COUNt_If","sum":3},{"parent":"FUNC","rule":"COUNt_if","sum":11},{"parent":"FUNC","rule":"COUnT","sum":9},{"parent":"FUNC","rule":"COUnT_IF","sum":7},{"parent":"FUNC","rule":"COUnt","sum":40},{"parent":"FUNC","rule":"COVAR","sum":2852},{"parent":"FUNC","rule":"COVARIANCE","sum":1525},{"parent":"FUNC","rule":"COVARIANCE_POPULATION","sum":64},{"parent":"FUNC","rule":"COVARIANCE_SAMPLE","sum":4},{"parent":"FUNC","rule":"COVAR_POP","sum":4},{"parent":"FUNC","rule":"COalesce","sum":22},{"parent":"FUNC","rule":"COuNT","sum":64},{"parent":"FUNC","rule":"COuNT_If","sum":1},{"parent":"FUNC","rule":"COunt","sum":187},{"parent":"FUNC","rule":"COunt_IF","sum":57},{"parent":"FUNC","rule":"COunt_If","sum":2},{"parent":"FUNC","rule":"COunt_iF","sum":1},{"parent":"FUNC","rule":"COunt_if","sum":3},{"parent":"FUNC","rule":"CUME_DIST","sum":109},{"parent":"FUNC","rule":"CURRENTUTCDATE","sum":5408},{"parent":"FUNC","rule":"CURRENTUTCDATETIME","sum":6625},{"parent":"FUNC","rule":"CURRENTUTCDate","sum":89},{"parent":"FUNC","rule":"CURRENT_UTC_DATE","sum":8},{"parent":"FUNC","rule":"CUrrentUTCDate","sum":1},{"parent":"FUNC","rule":"CallableArgument","sum":10209},{"parent":"FUNC","rule":"CallableArgumentType","sum":19040},{"parent":"FUNC","rule":"CallableResultType","sum":117},{"parent":"FUNC","rule":"CallableType","sum":179745},{"parent":"FUNC","rule":"CallableTypeHandle","sum":5746},{"parent":"FUNC","rule":"Ceil","sum":3},{"parent":"FUNC","rule":"ChooseMembers","sum":2491929},{"parent":"FUNC","rule":"Choosemembers","sum":21065},{"parent":"FUNC","rule":"ChosenMembers","sum":8},{"parent":"FUNC","rule":"ClearBit","sum":30103},{"parent":"FUNC","rule":"CoALESCE","sum":1},{"parent":"FUNC","rule":"CoUNT","sum":35},{"parent":"FUNC","rule":"CoUNT_IF","sum":17},{"parent":"FUNC","rule":"CoUNt","sum":2},{"parent":"FUNC","rule":"CoUnt","sum":2},{"parent":"FUNC","rule":"Coalesce","sum":725779},{"parent":"FUNC","rule":"Collect","sum":1},{"parent":"FUNC","rule":"CollectList","sum":1},{"parent":"FUNC","rule":"CombineMembers","sum":506545},{"parent":"FUNC","rule":"Concat","sum":1},{"parent":"FUNC","rule":"Correlation","sum":180},{"parent":"FUNC","rule":"CouNT","sum":2},{"parent":"FUNC","rule":"CounT","sum":17},{"parent":"FUNC","rule":"Count","sum":395770},{"parent":"FUNC","rule":"CountDistinctEstimate","sum":157394},{"parent":"FUNC","rule":"CountIF","sum":81},{"parent":"FUNC","rule":"CountIf","sum":511},{"parent":"FUNC","rule":"Count_IF","sum":15818},{"parent":"FUNC","rule":"Count_If","sum":42501},{"parent":"FUNC","rule":"Count_if","sum":323427},{"parent":"FUNC","rule":"Countif","sum":12},{"parent":"FUNC","rule":"CurrentAuthenticatedUser","sum":90263},{"parent":"FUNC","rule":"CurrentDatetime","sum":1},{"parent":"FUNC","rule":"CurrentOperationId","sum":89788},{"parent":"FUNC","rule":"CurrentOperationSharedId","sum":5682},{"parent":"FUNC","rule":"CurrentTZDate","sum":598},{"parent":"FUNC","rule":"CurrentTZDateTime","sum":35},{"parent":"FUNC","rule":"CurrentTZDatetime","sum":525},{"parent":"FUNC","rule":"CurrentTZTimestamp","sum":245},{"parent":"FUNC","rule":"CurrentTZdatetime","sum":68},{"parent":"FUNC","rule":"CurrentTzDate","sum":1610877},{"parent":"FUNC","rule":"CurrentTzDateTime","sum":1466274},{"parent":"FUNC","rule":"CurrentTzDatetime","sum":1992182},{"parent":"FUNC","rule":"CurrentTzTimeStamp","sum":4338},{"parent":"FUNC","rule":"CurrentTzTimestamp","sum":1901822},{"parent":"FUNC","rule":"CurrentUTCDATE","sum":19},{"parent":"FUNC","rule":"CurrentUTCDAte","sum":38},{"parent":"FUNC","rule":"CurrentUTCDate","sum":919319},{"parent":"FUNC","rule":"CurrentUTCDateTime","sum":182570},{"parent":"FUNC","rule":"CurrentUTCDatetime","sum":131224},{"parent":"FUNC","rule":"CurrentUTCTimeStamp","sum":99},{"parent":"FUNC","rule":"CurrentUTCTimestamp","sum":452539},{"parent":"FUNC","rule":"CurrentUTCdate","sum":71296},{"parent":"FUNC","rule":"CurrentUTcDate","sum":68},{"parent":"FUNC","rule":"CurrentUtCDate","sum":5},{"parent":"FUNC","rule":"CurrentUtCDatetime","sum":3},{"parent":"FUNC","rule":"CurrentUtcDATE","sum":2},{"parent":"FUNC","rule":"CurrentUtcDAte","sum":3},{"parent":"FUNC","rule":"CurrentUtcDatE","sum":1},{"parent":"FUNC","rule":"CurrentUtcDate","sum":19616023},{"parent":"FUNC","rule":"CurrentUtcDateTIME","sum":1},{"parent":"FUNC","rule":"CurrentUtcDateTime","sum":3198884},{"parent":"FUNC","rule":"CurrentUtcDatetime","sum":13800051},{"parent":"FUNC","rule":"CurrentUtcDttm","sum":3},{"parent":"FUNC","rule":"CurrentUtcTimeStamp","sum":60207},{"parent":"FUNC","rule":"CurrentUtcTimestamp","sum":15289791},{"parent":"FUNC","rule":"CurrentUtcdate","sum":11626},{"parent":"FUNC","rule":"CurrenttzDate","sum":340},{"parent":"FUNC","rule":"CurrenttzDatetime","sum":1},{"parent":"FUNC","rule":"CurrentutcDate","sum":21001},{"parent":"FUNC","rule":"CurrentutcDateTime","sum":578},{"parent":"FUNC","rule":"CurrentutcTimestamp","sum":4},{"parent":"FUNC","rule":"Currentutcdate","sum":1508},{"parent":"FUNC","rule":"Currentutcdatetime","sum":22646},{"parent":"FUNC","rule":"D","sum":1},{"parent":"FUNC","rule":"DATE","sum":128519},{"parent":"FUNC","rule":"DATEADD","sum":3},{"parent":"FUNC","rule":"DATEDIFF","sum":9},{"parent":"FUNC","rule":"DATETIME","sum":830},{"parent":"FUNC","rule":"DATE_PART","sum":16},{"parent":"FUNC","rule":"DATE_TRUNC","sum":29},{"parent":"FUNC","rule":"DATe","sum":20},{"parent":"FUNC","rule":"DAte","sum":175},{"parent":"FUNC","rule":"DAtetime","sum":61},{"parent":"FUNC","rule":"DENSE_RANK","sum":274243},{"parent":"FUNC","rule":"DICTKEYS","sum":27},{"parent":"FUNC","rule":"DICTLENGTH","sum":4},{"parent":"FUNC","rule":"DICTLength","sum":2},{"parent":"FUNC","rule":"DICTPAYLOADS","sum":2},{"parent":"FUNC","rule":"DICT_CONTAINS","sum":5},{"parent":"FUNC","rule":"DIctHasItems","sum":1},{"parent":"FUNC","rule":"DIctItems","sum":1},{"parent":"FUNC","rule":"DIctKeys","sum":1},{"parent":"FUNC","rule":"DIctLength","sum":1},{"parent":"FUNC","rule":"DIctLookup","sum":16},{"parent":"FUNC","rule":"DOUBLE","sum":63},{"parent":"FUNC","rule":"DatE","sum":3},{"parent":"FUNC","rule":"DataType","sum":69092},{"parent":"FUNC","rule":"DataTypeComponents","sum":37173},{"parent":"FUNC","rule":"DataTypeHandle","sum":2},{"parent":"FUNC","rule":"Datatype","sum":2},{"parent":"FUNC","rule":"Date","sum":1771862},{"parent":"FUNC","rule":"Date32","sum":74},{"parent":"FUNC","rule":"DateTime","sum":435337},{"parent":"FUNC","rule":"DateTime64","sum":45},{"parent":"FUNC","rule":"Date_Diff","sum":1},{"parent":"FUNC","rule":"DatetimE","sum":8},{"parent":"FUNC","rule":"Datetime","sum":273226},{"parent":"FUNC","rule":"Datetime64","sum":6},{"parent":"FUNC","rule":"Decimal","sum":31325},{"parent":"FUNC","rule":"DenseRank","sum":27},{"parent":"FUNC","rule":"Dense_RANK","sum":1},{"parent":"FUNC","rule":"Dense_Rank","sum":55},{"parent":"FUNC","rule":"Dense_rank","sum":6},{"parent":"FUNC","rule":"DicTKeys","sum":2},{"parent":"FUNC","rule":"DictAggregate","sum":140548},{"parent":"FUNC","rule":"DictCOntains","sum":350},{"parent":"FUNC","rule":"DictContains","sum":2022972},{"parent":"FUNC","rule":"DictCreate","sum":69385},{"parent":"FUNC","rule":"DictHasItems","sum":614255},{"parent":"FUNC","rule":"DictHasitems","sum":261},{"parent":"FUNC","rule":"DictItems","sum":2553332},{"parent":"FUNC","rule":"DictKEYS","sum":12},{"parent":"FUNC","rule":"DictKEys","sum":1},{"parent":"FUNC","rule":"DictKeYS","sum":3},{"parent":"FUNC","rule":"DictKeyType","sum":941},{"parent":"FUNC","rule":"DictKeys","sum":2716126},{"parent":"FUNC","rule":"DictLOokup","sum":7},{"parent":"FUNC","rule":"DictLength","sum":1016614},{"parent":"FUNC","rule":"DictLookUP","sum":3},{"parent":"FUNC","rule":"DictLookUp","sum":59775},{"parent":"FUNC","rule":"DictLookup","sum":5979602},{"parent":"FUNC","rule":"DictPayLoads","sum":10372},{"parent":"FUNC","rule":"DictPayloadType","sum":210},{"parent":"FUNC","rule":"DictPayloads","sum":927148},{"parent":"FUNC","rule":"DictType","sum":540},{"parent":"FUNC","rule":"DictTypeComponents","sum":3},{"parent":"FUNC","rule":"DictTypeHandle","sum":1},{"parent":"FUNC","rule":"DictValues","sum":5},{"parent":"FUNC","rule":"Dict_Keys","sum":12},{"parent":"FUNC","rule":"Dictcontains","sum":7},{"parent":"FUNC","rule":"Dictitems","sum":19810},{"parent":"FUNC","rule":"Dictkeys","sum":1131},{"parent":"FUNC","rule":"Dictlength","sum":6},{"parent":"FUNC","rule":"Dictlookup","sum":76091},{"parent":"FUNC","rule":"Double","sum":34054},{"parent":"FUNC","rule":"DyNumber","sum":4},{"parent":"FUNC","rule":"EACH","sum":4},{"parent":"FUNC","rule":"ENDSWITH","sum":13704},{"parent":"FUNC","rule":"ENDsWith","sum":85},{"parent":"FUNC","rule":"ENSURE","sum":832413},{"parent":"FUNC","rule":"EOMONTH","sum":1},{"parent":"FUNC","rule":"EmptyDict","sum":433},{"parent":"FUNC","rule":"EmptyDictTypeHandle","sum":3},{"parent":"FUNC","rule":"EmptyList","sum":23826},{"parent":"FUNC","rule":"Emptydict","sum":6},{"parent":"FUNC","rule":"EndsWIth","sum":870},{"parent":"FUNC","rule":"EndsWith","sum":1567383},{"parent":"FUNC","rule":"Endswith","sum":19803},{"parent":"FUNC","rule":"Ensure","sum":1435372},{"parent":"FUNC","rule":"EnsureConvertibleTo","sum":2021},{"parent":"FUNC","rule":"EnsureType","sum":229224},{"parent":"FUNC","rule":"EvaluateAtom","sum":457},{"parent":"FUNC","rule":"EvaluateCode","sum":467121},{"parent":"FUNC","rule":"EvaluateExpr","sum":899979},{"parent":"FUNC","rule":"EvaluateType","sum":122201},{"parent":"FUNC","rule":"ExpandStruct","sum":265234},{"parent":"FUNC","rule":"ExtractUkropCtx","sum":1},{"parent":"FUNC","rule":"FIND","sum":5572833},{"parent":"FUNC","rule":"FIRST","sum":3},{"parent":"FUNC","rule":"FIRST_VALUE","sum":8906702},{"parent":"FUNC","rule":"FIRST_value","sum":815},{"parent":"FUNC","rule":"FIRsT_VALUE","sum":1},{"parent":"FUNC","rule":"FIleContent","sum":1},{"parent":"FUNC","rule":"FLATTEN","sum":9},{"parent":"FUNC","rule":"FLOAT","sum":5},{"parent":"FUNC","rule":"FLOOR","sum":1},{"parent":"FUNC","rule":"FORMATTYPE","sum":1},{"parent":"FUNC","rule":"FROMBYTES","sum":5},{"parent":"FUNC","rule":"FROmbytes","sum":4},{"parent":"FUNC","rule":"FileCOntent","sum":35},{"parent":"FUNC","rule":"FileContent","sum":2368603},{"parent":"FUNC","rule":"FilePath","sum":1452555},{"parent":"FUNC","rule":"Filecontent","sum":11773},{"parent":"FUNC","rule":"Filepath","sum":10},{"parent":"FUNC","rule":"FinD","sum":16},{"parent":"FUNC","rule":"Find","sum":321055},{"parent":"FUNC","rule":"FirsT_VALUE","sum":3},{"parent":"FUNC","rule":"FirstValue","sum":22},{"parent":"FUNC","rule":"First_VALUE","sum":12},{"parent":"FUNC","rule":"First_Value","sum":28},{"parent":"FUNC","rule":"First_value","sum":180},{"parent":"FUNC","rule":"FlattenMembers","sum":109273},{"parent":"FUNC","rule":"Float","sum":12377},{"parent":"FUNC","rule":"FoldMap","sum":13},{"parent":"FUNC","rule":"Folder","sum":13},{"parent":"FUNC","rule":"FolderPath","sum":9943},{"parent":"FUNC","rule":"ForceRemoveMember","sum":401887},{"parent":"FUNC","rule":"ForceRemoveMembers","sum":1082517},{"parent":"FUNC","rule":"ForceRenameMembers","sum":63996},{"parent":"FUNC","rule":"ForceSpreadMembers","sum":115431},{"parent":"FUNC","rule":"ForceSpreadmembers","sum":4},{"parent":"FUNC","rule":"Format","sum":1},{"parent":"FUNC","rule":"FormatCode","sum":675},{"parent":"FUNC","rule":"FormatType","sum":467449},{"parent":"FUNC","rule":"FormatTypeDiff","sum":813},{"parent":"FUNC","rule":"FormatTypeDiffPretty","sum":103},{"parent":"FUNC","rule":"Formattype","sum":101},{"parent":"FUNC","rule":"FromBytes","sum":99297},{"parent":"FUNC","rule":"FromPg","sum":4861},{"parent":"FUNC","rule":"FromYsonSimpleType","sum":1},{"parent":"FUNC","rule":"From_bytes","sum":1},{"parent":"FUNC","rule":"FromatType","sum":1},{"parent":"FUNC","rule":"Frombytes","sum":12},{"parent":"FUNC","rule":"FuncCode","sum":1239380},{"parent":"FUNC","rule":"GETDATE","sum":1},{"parent":"FUNC","rule":"GREATEST","sum":389805},{"parent":"FUNC","rule":"GROUPING","sum":71574},{"parent":"FUNC","rule":"GROUPINg","sum":4},{"parent":"FUNC","rule":"GROUP_CONCAT","sum":1},{"parent":"FUNC","rule":"GatherMembers","sum":1478901},{"parent":"FUNC","rule":"Gather_Members","sum":38},{"parent":"FUNC","rule":"Gathermembers","sum":8},{"parent":"FUNC","rule":"GetLength","sum":2},{"parent":"FUNC","rule":"GetWeekOfYear","sum":1},{"parent":"FUNC","rule":"Greatest","sum":6034},{"parent":"FUNC","rule":"Grouping","sum":243},{"parent":"FUNC","rule":"HISTOGRAM","sum":274200},{"parent":"FUNC","rule":"HISTOGRAMCDF","sum":421},{"parent":"FUNC","rule":"HISTOGRAMCdf","sum":47},{"parent":"FUNC","rule":"HISTOGRAM_CDF","sum":3},{"parent":"FUNC","rule":"HISTOGRAMcdf","sum":2},{"parent":"FUNC","rule":"HISTOGrAM","sum":48},{"parent":"FUNC","rule":"HISTOgram","sum":1},{"parent":"FUNC","rule":"HISToGRAM","sum":1},{"parent":"FUNC","rule":"HISTogram","sum":1},{"parent":"FUNC","rule":"HIStOGRAM","sum":1},{"parent":"FUNC","rule":"HIstogram","sum":34},{"parent":"FUNC","rule":"HLL","sum":12390},{"parent":"FUNC","rule":"HOP_END","sum":16},{"parent":"FUNC","rule":"HOP_START","sum":4},{"parent":"FUNC","rule":"Histogram","sum":34999},{"parent":"FUNC","rule":"HistogramCDF","sum":411},{"parent":"FUNC","rule":"HistogramCdf","sum":34},{"parent":"FUNC","rule":"Histogram_CDF","sum":57},{"parent":"FUNC","rule":"Histogramcdf","sum":1},{"parent":"FUNC","rule":"Hll","sum":1915},{"parent":"FUNC","rule":"HyperLogLog","sum":3996},{"parent":"FUNC","rule":"IF","sum":75354920},{"parent":"FUNC","rule":"IFNULL","sum":9},{"parent":"FUNC","rule":"IF_STRICT","sum":1},{"parent":"FUNC","rule":"IN","sum":2},{"parent":"FUNC","rule":"INT","sum":16},{"parent":"FUNC","rule":"INT32","sum":1},{"parent":"FUNC","rule":"INTERVAL","sum":889659},{"parent":"FUNC","rule":"INterval","sum":763},{"parent":"FUNC","rule":"If","sum":1086681},{"parent":"FUNC","rule":"IfNull","sum":6},{"parent":"FUNC","rule":"InstanceOf","sum":248429},{"parent":"FUNC","rule":"Int","sum":1},{"parent":"FUNC","rule":"Int16","sum":37},{"parent":"FUNC","rule":"Int32","sum":32595},{"parent":"FUNC","rule":"Int64","sum":3638},{"parent":"FUNC","rule":"Int8","sum":302},{"parent":"FUNC","rule":"InterVal","sum":4},{"parent":"FUNC","rule":"Interva","sum":1},{"parent":"FUNC","rule":"Interval","sum":16057580},{"parent":"FUNC","rule":"Interval64","sum":2},{"parent":"FUNC","rule":"IntervalFromDays","sum":8},{"parent":"FUNC","rule":"IsInt64","sum":1},{"parent":"FUNC","rule":"JSON","sum":68},{"parent":"FUNC","rule":"JUST","sum":128278},{"parent":"FUNC","rule":"Join","sum":1},{"parent":"FUNC","rule":"JoinTableRow","sum":1312193},{"parent":"FUNC","rule":"JoinTablerow","sum":721},{"parent":"FUNC","rule":"JointableRow","sum":1},{"parent":"FUNC","rule":"Json","sum":53211},{"parent":"FUNC","rule":"JsonDocument","sum":9},{"parent":"FUNC","rule":"Just","sum":6562961},{"parent":"FUNC","rule":"LAG","sum":4042269},{"parent":"FUNC","rule":"LAST","sum":1},{"parent":"FUNC","rule":"LAST_VALUE","sum":1339900},{"parent":"FUNC","rule":"LAST_value","sum":2},{"parent":"FUNC","rule":"LEAD","sum":1652252},{"parent":"FUNC","rule":"LEAST","sum":427318},{"parent":"FUNC","rule":"LEFT","sum":3},{"parent":"FUNC","rule":"LEFT_SHIFT","sum":1},{"parent":"FUNC","rule":"LEN","sum":1687004},{"parent":"FUNC","rule":"LENGTH","sum":3846912},{"parent":"FUNC","rule":"LENgth","sum":23},{"parent":"FUNC","rule":"LEngth","sum":12},{"parent":"FUNC","rule":"LIKELY","sum":140878},{"parent":"FUNC","rule":"LINEARHISTOGRAM","sum":374},{"parent":"FUNC","rule":"LINEARHISTOGRAMCDF","sum":1},{"parent":"FUNC","rule":"LINEARHistogram","sum":3},{"parent":"FUNC","rule":"LINEAR_HISTOGRAM","sum":13},{"parent":"FUNC","rule":"LISTALL","sum":2891},{"parent":"FUNC","rule":"LISTANY","sum":102},{"parent":"FUNC","rule":"LISTAVG","sum":25},{"parent":"FUNC","rule":"LISTAny","sum":10},{"parent":"FUNC","rule":"LISTCOLLECT","sum":1},{"parent":"FUNC","rule":"LISTCONCAT","sum":1517},{"parent":"FUNC","rule":"LISTENUMERATE","sum":3},{"parent":"FUNC","rule":"LISTEXTEND","sum":13},{"parent":"FUNC","rule":"LISTFILTER","sum":1629},{"parent":"FUNC","rule":"LISTFLATTEN","sum":4265},{"parent":"FUNC","rule":"LISTFROMRANGE","sum":1494},{"parent":"FUNC","rule":"LISTHAS","sum":30992},{"parent":"FUNC","rule":"LISTHASITEMS","sum":2099},{"parent":"FUNC","rule":"LISTHASItems","sum":1},{"parent":"FUNC","rule":"LISTHEAD","sum":18199},{"parent":"FUNC","rule":"LISTHas","sum":9},{"parent":"FUNC","rule":"LISTHead","sum":2},{"parent":"FUNC","rule":"LISTLAST","sum":1556},{"parent":"FUNC","rule":"LISTLENGTH","sum":48153},{"parent":"FUNC","rule":"LISTLENGth","sum":4},{"parent":"FUNC","rule":"LISTLenGTH","sum":7},{"parent":"FUNC","rule":"LISTLength","sum":2125},{"parent":"FUNC","rule":"LISTMAP","sum":14266},{"parent":"FUNC","rule":"LISTMAX","sum":6952},{"parent":"FUNC","rule":"LISTMIN","sum":187},{"parent":"FUNC","rule":"LISTMap","sum":365},{"parent":"FUNC","rule":"LISTNOTNULL","sum":8554},{"parent":"FUNC","rule":"LISTREVERSE","sum":2},{"parent":"FUNC","rule":"LISTSKIP","sum":15},{"parent":"FUNC","rule":"LISTSORT","sum":7614},{"parent":"FUNC","rule":"LISTSORTASC","sum":1665},{"parent":"FUNC","rule":"LISTSORTDESC","sum":109},{"parent":"FUNC","rule":"LISTSUM","sum":175},{"parent":"FUNC","rule":"LISTSort","sum":19},{"parent":"FUNC","rule":"LISTSum","sum":6},{"parent":"FUNC","rule":"LISTTAKE","sum":261},{"parent":"FUNC","rule":"LISTUNIQ","sum":596},{"parent":"FUNC","rule":"LISTUniq","sum":26},{"parent":"FUNC","rule":"LISTZIP","sum":261},{"parent":"FUNC","rule":"LISTZIPALL","sum":290},{"parent":"FUNC","rule":"LIST_AGGREGATE","sum":1},{"parent":"FUNC","rule":"LIST_ALL","sum":1},{"parent":"FUNC","rule":"LIST_ANY","sum":7},{"parent":"FUNC","rule":"LIST_CONCAT","sum":18},{"parent":"FUNC","rule":"LIST_EXTEND","sum":1},{"parent":"FUNC","rule":"LIST_EXTRACT","sum":73},{"parent":"FUNC","rule":"LIST_FOLD","sum":30},{"parent":"FUNC","rule":"LIST_FROM_RANGE","sum":352},{"parent":"FUNC","rule":"LIST_HAS","sum":2042},{"parent":"FUNC","rule":"LIST_HEAD","sum":100},{"parent":"FUNC","rule":"LIST_LAST","sum":54},{"parent":"FUNC","rule":"LIST_LENGTH","sum":2455},{"parent":"FUNC","rule":"LIST_Length","sum":1},{"parent":"FUNC","rule":"LIST_MAP","sum":9},{"parent":"FUNC","rule":"LIST_MAX","sum":285},{"parent":"FUNC","rule":"LIST_SORT","sum":624},{"parent":"FUNC","rule":"LIST_SORT_DESC","sum":14},{"parent":"FUNC","rule":"LIST_SUM","sum":2},{"parent":"FUNC","rule":"LIST_TAKE","sum":2},{"parent":"FUNC","rule":"LIST_UNIQ","sum":344},{"parent":"FUNC","rule":"LIST_length","sum":1},{"parent":"FUNC","rule":"LISTfilter","sum":7},{"parent":"FUNC","rule":"LISTfromRange","sum":1420},{"parent":"FUNC","rule":"LISTfromrange","sum":3},{"parent":"FUNC","rule":"LISThas","sum":2},{"parent":"FUNC","rule":"LISTnotNull","sum":2},{"parent":"FUNC","rule":"LIStExtend","sum":3},{"parent":"FUNC","rule":"LIStHas","sum":2},{"parent":"FUNC","rule":"LIStLENGth","sum":1},{"parent":"FUNC","rule":"LIStLength","sum":1},{"parent":"FUNC","rule":"LIStmap","sum":1},{"parent":"FUNC","rule":"LIstConcat","sum":303},{"parent":"FUNC","rule":"LIstExtend","sum":3},{"parent":"FUNC","rule":"LIstFilter","sum":71},{"parent":"FUNC","rule":"LIstFromRange","sum":8},{"parent":"FUNC","rule":"LIstFromrange","sum":1},{"parent":"FUNC","rule":"LIstHas","sum":14},{"parent":"FUNC","rule":"LIstHasItems","sum":13},{"parent":"FUNC","rule":"LIstHead","sum":3},{"parent":"FUNC","rule":"LIstLength","sum":345},{"parent":"FUNC","rule":"LIstMap","sum":1347},{"parent":"FUNC","rule":"LIstMax","sum":7},{"parent":"FUNC","rule":"LIstSkip","sum":2},{"parent":"FUNC","rule":"LIstSort","sum":1},{"parent":"FUNC","rule":"LIstSum","sum":1},{"parent":"FUNC","rule":"LIstfilter","sum":2},{"parent":"FUNC","rule":"LIstlength","sum":13},{"parent":"FUNC","rule":"LIstmap","sum":12},{"parent":"FUNC","rule":"LOG","sum":1},{"parent":"FUNC","rule":"LOG10","sum":6},{"parent":"FUNC","rule":"LOGHISTOGRAM","sum":1},{"parent":"FUNC","rule":"LOWER","sum":5},{"parent":"FUNC","rule":"Lag","sum":12300},{"parent":"FUNC","rule":"LambdaArgumentsCount","sum":32},{"parent":"FUNC","rule":"LambdaCode","sum":330699},{"parent":"FUNC","rule":"LastValue","sum":29},{"parent":"FUNC","rule":"Last_VALUE","sum":14},{"parent":"FUNC","rule":"Last_Value","sum":29},{"parent":"FUNC","rule":"Last_value","sum":101},{"parent":"FUNC","rule":"Lead","sum":11188},{"parent":"FUNC","rule":"Least","sum":2236},{"parent":"FUNC","rule":"Len","sum":93143},{"parent":"FUNC","rule":"LenGTH","sum":12},{"parent":"FUNC","rule":"Length","sum":1249246},{"parent":"FUNC","rule":"LiSTMAP","sum":2},{"parent":"FUNC","rule":"Likely","sum":20818},{"parent":"FUNC","rule":"LinearHISTOGRAM","sum":86},{"parent":"FUNC","rule":"LinearHistogram","sum":46217},{"parent":"FUNC","rule":"LinearHistogramCDF","sum":465},{"parent":"FUNC","rule":"LinearHistogramcdf","sum":10},{"parent":"FUNC","rule":"Linear_Histogram","sum":7},{"parent":"FUNC","rule":"Linearhistogram","sum":4},{"parent":"FUNC","rule":"Lis","sum":1},{"parent":"FUNC","rule":"LisMap","sum":2},{"parent":"FUNC","rule":"LisTHas","sum":8},{"parent":"FUNC","rule":"LisTLength","sum":2},{"parent":"FUNC","rule":"ListALL","sum":1550},{"parent":"FUNC","rule":"ListALl","sum":8},{"parent":"FUNC","rule":"ListANY","sum":1725},{"parent":"FUNC","rule":"ListAVG","sum":253},{"parent":"FUNC","rule":"ListAgg","sum":2},{"parent":"FUNC","rule":"ListAggregate","sum":424930},{"parent":"FUNC","rule":"ListAll","sum":265360},{"parent":"FUNC","rule":"ListAny","sum":1880564},{"parent":"FUNC","rule":"ListAppend","sum":1},{"parent":"FUNC","rule":"ListAvg","sum":542938},{"parent":"FUNC","rule":"ListCOncat","sum":2},{"parent":"FUNC","rule":"ListCode","sum":209616},{"parent":"FUNC","rule":"ListCollect","sum":903945},{"parent":"FUNC","rule":"ListConCat","sum":99},{"parent":"FUNC","rule":"ListConcat","sum":5476628},{"parent":"FUNC","rule":"ListCreate","sum":1959182},{"parent":"FUNC","rule":"ListDistinct","sum":1},{"parent":"FUNC","rule":"ListEnumerate","sum":1400780},{"parent":"FUNC","rule":"ListExtEnd","sum":1},{"parent":"FUNC","rule":"ListExtend","sum":4377341},{"parent":"FUNC","rule":"ListExtendStrict","sum":91852},{"parent":"FUNC","rule":"ListExtract","sum":3347283},{"parent":"FUNC","rule":"ListFILTER","sum":552},{"parent":"FUNC","rule":"ListFIlter","sum":346},{"parent":"FUNC","rule":"ListFLatMap","sum":262},{"parent":"FUNC","rule":"ListFLatten","sum":578},{"parent":"FUNC","rule":"ListFROMRange","sum":5076},{"parent":"FUNC","rule":"ListFilteR","sum":4},{"parent":"FUNC","rule":"ListFilter","sum":17818831},{"parent":"FUNC","rule":"ListFirst","sum":3},{"parent":"FUNC","rule":"ListFlatMap","sum":908104},{"parent":"FUNC","rule":"ListFlatmap","sum":29181},{"parent":"FUNC","rule":"ListFlatten","sum":2824559},{"parent":"FUNC","rule":"ListFold","sum":233104},{"parent":"FUNC","rule":"ListFold1","sum":35644},{"parent":"FUNC","rule":"ListFold1Map","sum":3433},{"parent":"FUNC","rule":"ListFoldMap","sum":41830},{"parent":"FUNC","rule":"ListFromPython","sum":2},{"parent":"FUNC","rule":"ListFromRANGE","sum":23},{"parent":"FUNC","rule":"ListFromRAnge","sum":45},{"parent":"FUNC","rule":"ListFromRange","sum":3094429},{"parent":"FUNC","rule":"ListFromTuple","sum":59325},{"parent":"FUNC","rule":"ListFromTyple","sum":2},{"parent":"FUNC","rule":"ListFromrange","sum":12},{"parent":"FUNC","rule":"ListHAS","sum":380},{"parent":"FUNC","rule":"ListHAs","sum":557},{"parent":"FUNC","rule":"ListHAsItems","sum":26},{"parent":"FUNC","rule":"ListHEAD","sum":2},{"parent":"FUNC","rule":"ListHEad","sum":69},{"parent":"FUNC","rule":"ListHaS","sum":1},{"parent":"FUNC","rule":"ListHas","sum":20700011},{"parent":"FUNC","rule":"ListHasITems","sum":9},{"parent":"FUNC","rule":"ListHasItemhs","sum":1},{"parent":"FUNC","rule":"ListHasItems","sum":5130581},{"parent":"FUNC","rule":"ListHasitems","sum":344},{"parent":"FUNC","rule":"ListHeaD","sum":94},{"parent":"FUNC","rule":"ListHead","sum":10740942},{"parent":"FUNC","rule":"ListINdexOf","sum":2},{"parent":"FUNC","rule":"ListIndex","sum":1},{"parent":"FUNC","rule":"ListIndexOF","sum":10},{"parent":"FUNC","rule":"ListIndexOf","sum":1233206},{"parent":"FUNC","rule":"ListIndexof","sum":19},{"parent":"FUNC","rule":"ListItemType","sum":208912},{"parent":"FUNC","rule":"ListJoin","sum":3},{"parent":"FUNC","rule":"ListJsonDocument","sum":1},{"parent":"FUNC","rule":"ListLAst","sum":10},{"parent":"FUNC","rule":"ListLENGTH","sum":2212},{"parent":"FUNC","rule":"ListLEngth","sum":19},{"parent":"FUNC","rule":"ListLasT","sum":12},{"parent":"FUNC","rule":"ListLast","sum":5989328},{"parent":"FUNC","rule":"ListLeNgth","sum":1},{"parent":"FUNC","rule":"ListLegth","sum":1},{"parent":"FUNC","rule":"ListLenght","sum":1},{"parent":"FUNC","rule":"ListLengtH","sum":2},{"parent":"FUNC","rule":"ListLength","sum":18519642},{"parent":"FUNC","rule":"ListMAP","sum":227},{"parent":"FUNC","rule":"ListMAX","sum":10301},{"parent":"FUNC","rule":"ListMAp","sum":4828},{"parent":"FUNC","rule":"ListMAx","sum":1},{"parent":"FUNC","rule":"ListMIN","sum":52},{"parent":"FUNC","rule":"ListMIn","sum":1},{"parent":"FUNC","rule":"ListMaP","sum":1164},{"parent":"FUNC","rule":"ListMap","sum":35473659},{"parent":"FUNC","rule":"ListMax","sum":1415731},{"parent":"FUNC","rule":"ListMin","sum":814456},{"parent":"FUNC","rule":"ListNOTNull","sum":715},{"parent":"FUNC","rule":"ListNoTNull","sum":17},{"parent":"FUNC","rule":"ListNoTnull","sum":963},{"parent":"FUNC","rule":"ListNonNull","sum":1},{"parent":"FUNC","rule":"ListNotNULL","sum":30598},{"parent":"FUNC","rule":"ListNotNUll","sum":7741},{"parent":"FUNC","rule":"ListNotNuLL","sum":5},{"parent":"FUNC","rule":"ListNotNul","sum":1},{"parent":"FUNC","rule":"ListNotNulL","sum":3},{"parent":"FUNC","rule":"ListNotNull","sum":9277210},{"parent":"FUNC","rule":"ListNotnull","sum":22},{"parent":"FUNC","rule":"ListREplicate","sum":2},{"parent":"FUNC","rule":"ListRange","sum":4},{"parent":"FUNC","rule":"ListRepeat","sum":1},{"parent":"FUNC","rule":"ListReplicate","sum":951876},{"parent":"FUNC","rule":"ListReverse","sum":1332692},{"parent":"FUNC","rule":"ListSORT","sum":1},{"parent":"FUNC","rule":"ListSORtAsc","sum":26},{"parent":"FUNC","rule":"ListSOrt","sum":3},{"parent":"FUNC","rule":"ListSUM","sum":782},{"parent":"FUNC","rule":"ListSUm","sum":12},{"parent":"FUNC","rule":"ListSample","sum":13},{"parent":"FUNC","rule":"ListSampleN","sum":715},{"parent":"FUNC","rule":"ListShuffle","sum":533},{"parent":"FUNC","rule":"ListShuffleN","sum":1},{"parent":"FUNC","rule":"ListSkip","sum":618121},{"parent":"FUNC","rule":"ListSkipWhile","sum":139342},{"parent":"FUNC","rule":"ListSkipWhileInclusive","sum":8763},{"parent":"FUNC","rule":"ListSort","sum":5013069},{"parent":"FUNC","rule":"ListSortASC","sum":18106},{"parent":"FUNC","rule":"ListSortAsc","sum":486196},{"parent":"FUNC","rule":"ListSortDESC","sum":56},{"parent":"FUNC","rule":"ListSortDEsc","sum":2},{"parent":"FUNC","rule":"ListSortDesc","sum":1137559},{"parent":"FUNC","rule":"ListSortasc","sum":9},{"parent":"FUNC","rule":"ListSortdesc","sum":633},{"parent":"FUNC","rule":"ListSum","sum":1751486},{"parent":"FUNC","rule":"ListTail","sum":1},{"parent":"FUNC","rule":"ListTake","sum":2155762},{"parent":"FUNC","rule":"ListTakeWhile","sum":89522},{"parent":"FUNC","rule":"ListTakeWhileInclusive","sum":2462},{"parent":"FUNC","rule":"ListToTuple","sum":6466},{"parent":"FUNC","rule":"ListTop","sum":2360},{"parent":"FUNC","rule":"ListTopAsc","sum":132},{"parent":"FUNC","rule":"ListTopDESC","sum":1},{"parent":"FUNC","rule":"ListTopDesc","sum":11009},{"parent":"FUNC","rule":"ListTopSort","sum":1056},{"parent":"FUNC","rule":"ListTopSortAsc","sum":40},{"parent":"FUNC","rule":"ListTopSortDesc","sum":60209},{"parent":"FUNC","rule":"ListTopdesc","sum":1},{"parent":"FUNC","rule":"ListType","sum":32269},{"parent":"FUNC","rule":"ListTypeHandle","sum":1},{"parent":"FUNC","rule":"ListUNiq","sum":30},{"parent":"FUNC","rule":"ListUnionALL","sum":128},{"parent":"FUNC","rule":"ListUnionAll","sum":56382},{"parent":"FUNC","rule":"ListUniq","sum":3980480},{"parent":"FUNC","rule":"ListUniqStable","sum":76021},{"parent":"FUNC","rule":"ListZIP","sum":8},{"parent":"FUNC","rule":"ListZIp","sum":1},{"parent":"FUNC","rule":"ListZip","sum":2533470},{"parent":"FUNC","rule":"ListZipALL","sum":290850},{"parent":"FUNC","rule":"ListZipAll","sum":275064},{"parent":"FUNC","rule":"List_FromRange","sum":11},{"parent":"FUNC","rule":"List_Has","sum":23},{"parent":"FUNC","rule":"List_Length","sum":15},{"parent":"FUNC","rule":"List_Sort","sum":10},{"parent":"FUNC","rule":"List_Uniq","sum":1},{"parent":"FUNC","rule":"List_concat","sum":3},{"parent":"FUNC","rule":"List_length","sum":2},{"parent":"FUNC","rule":"List_sort","sum":80},{"parent":"FUNC","rule":"Listall","sum":4450},{"parent":"FUNC","rule":"Listany","sum":38},{"parent":"FUNC","rule":"Listcollect","sum":5259},{"parent":"FUNC","rule":"Listconcat","sum":14851},{"parent":"FUNC","rule":"Listenumerate","sum":3},{"parent":"FUNC","rule":"Listextend","sum":5},{"parent":"FUNC","rule":"Listfilter","sum":263056},{"parent":"FUNC","rule":"Listflatmap","sum":297},{"parent":"FUNC","rule":"Listflatten","sum":33},{"parent":"FUNC","rule":"ListfromRange","sum":36},{"parent":"FUNC","rule":"Listfromrange","sum":113},{"parent":"FUNC","rule":"Listfromtuple","sum":1},{"parent":"FUNC","rule":"Listhas","sum":69729},{"parent":"FUNC","rule":"ListhasItems","sum":261},{"parent":"FUNC","rule":"Listhasitems","sum":488},{"parent":"FUNC","rule":"Listhead","sum":18575},{"parent":"FUNC","rule":"ListindexOf","sum":2172},{"parent":"FUNC","rule":"Listindexof","sum":4},{"parent":"FUNC","rule":"ListlENGTH","sum":1},{"parent":"FUNC","rule":"ListlEngth","sum":2},{"parent":"FUNC","rule":"Listlast","sum":4180},{"parent":"FUNC","rule":"Listlength","sum":10851},{"parent":"FUNC","rule":"Listmap","sum":11275},{"parent":"FUNC","rule":"Listmax","sum":498},{"parent":"FUNC","rule":"Listmin","sum":1627},{"parent":"FUNC","rule":"ListnotNull","sum":38},{"parent":"FUNC","rule":"Listnotnull","sum":8},{"parent":"FUNC","rule":"Listreverse","sum":17},{"parent":"FUNC","rule":"Listskip","sum":148},{"parent":"FUNC","rule":"ListskipWhile","sum":409},{"parent":"FUNC","rule":"Listsort","sum":1052},{"parent":"FUNC","rule":"Listsortasc","sum":1},{"parent":"FUNC","rule":"Listsortdesc","sum":1},{"parent":"FUNC","rule":"Listsum","sum":27},{"parent":"FUNC","rule":"Listtake","sum":20218},{"parent":"FUNC","rule":"ListtakeWhile","sum":2},{"parent":"FUNC","rule":"Listuniq","sum":327},{"parent":"FUNC","rule":"Listzip","sum":768},{"parent":"FUNC","rule":"Listzipall","sum":1},{"parent":"FUNC","rule":"LogHISTOGRAM","sum":7},{"parent":"FUNC","rule":"LogHistogram","sum":283},{"parent":"FUNC","rule":"LogHistogramCDF","sum":15},{"parent":"FUNC","rule":"LogarithmicHISTOGRAM","sum":1},{"parent":"FUNC","rule":"LogarithmicHistogram","sum":616},{"parent":"FUNC","rule":"Logarithmichistogram","sum":20},{"parent":"FUNC","rule":"Lookup","sum":1},{"parent":"FUNC","rule":"MAX","sum":34536576},{"parent":"FUNC","rule":"MAXBY","sum":123},{"parent":"FUNC","rule":"MAXOF","sum":3},{"parent":"FUNC","rule":"MAX_BY","sum":22832477},{"parent":"FUNC","rule":"MAX_By","sum":19},{"parent":"FUNC","rule":"MAX_IF","sum":2},{"parent":"FUNC","rule":"MAX_OF","sum":2198762},{"parent":"FUNC","rule":"MAX_Of","sum":2},{"parent":"FUNC","rule":"MAX_bY","sum":7},{"parent":"FUNC","rule":"MAX_by","sum":10621},{"parent":"FUNC","rule":"MAX_of","sum":589},{"parent":"FUNC","rule":"MAx","sum":285},{"parent":"FUNC","rule":"MEDIAN","sum":914242},{"parent":"FUNC","rule":"MEDiAN","sum":4},{"parent":"FUNC","rule":"MEdian","sum":14},{"parent":"FUNC","rule":"MIN","sum":14653631},{"parent":"FUNC","rule":"MINBY","sum":1907},{"parent":"FUNC","rule":"MIN_BY","sum":5293824},{"parent":"FUNC","rule":"MIN_IF","sum":8},{"parent":"FUNC","rule":"MIN_OF","sum":2265340},{"parent":"FUNC","rule":"MIN_by","sum":1293},{"parent":"FUNC","rule":"MIN_of","sum":3},{"parent":"FUNC","rule":"MIn","sum":199},{"parent":"FUNC","rule":"MIn_OF","sum":3},{"parent":"FUNC","rule":"MODE","sum":901832},{"parent":"FUNC","rule":"MODe","sum":1},{"parent":"FUNC","rule":"MONTH","sum":1},{"parent":"FUNC","rule":"MULTI_AGGREGATE_BY","sum":696416},{"parent":"FUNC","rule":"MaX","sum":7},{"parent":"FUNC","rule":"MakeDate","sum":1},{"parent":"FUNC","rule":"Map","sum":4},{"parent":"FUNC","rule":"Max","sum":380542},{"parent":"FUNC","rule":"MaxBy","sum":5394},{"parent":"FUNC","rule":"MaxOf","sum":207},{"parent":"FUNC","rule":"Max_BY","sum":3213},{"parent":"FUNC","rule":"Max_By","sum":70691},{"parent":"FUNC","rule":"Max_OF","sum":681},{"parent":"FUNC","rule":"Max_Of","sum":650},{"parent":"FUNC","rule":"Max_by","sum":141220},{"parent":"FUNC","rule":"Max_of","sum":3730},{"parent":"FUNC","rule":"Median","sum":19449},{"parent":"FUNC","rule":"MiN","sum":32},{"parent":"FUNC","rule":"Min","sum":193336},{"parent":"FUNC","rule":"MinBy","sum":1199},{"parent":"FUNC","rule":"MinOf","sum":892},{"parent":"FUNC","rule":"Min_BY","sum":433},{"parent":"FUNC","rule":"Min_By","sum":10707},{"parent":"FUNC","rule":"Min_OF","sum":1095},{"parent":"FUNC","rule":"Min_Of","sum":827},{"parent":"FUNC","rule":"Min_by","sum":9098},{"parent":"FUNC","rule":"Min_of","sum":1307},{"parent":"FUNC","rule":"MoDE","sum":1},{"parent":"FUNC","rule":"Mode","sum":14710},{"parent":"FUNC","rule":"Mul","sum":1},{"parent":"FUNC","rule":"MultiAggregateBy","sum":645},{"parent":"FUNC","rule":"Multi_Aggregate_BY","sum":4},{"parent":"FUNC","rule":"Multi_Aggregate_By","sum":1157},{"parent":"FUNC","rule":"Multi_Aggregate_by","sum":4},{"parent":"FUNC","rule":"Multi_aggregate_by","sum":413},{"parent":"FUNC","rule":"NANVL","sum":720089},{"parent":"FUNC","rule":"NOTHING","sum":3221},{"parent":"FUNC","rule":"NOW","sum":2},{"parent":"FUNC","rule":"NOW64","sum":2},{"parent":"FUNC","rule":"NOthing","sum":1},{"parent":"FUNC","rule":"NTH_VALUE","sum":3008},{"parent":"FUNC","rule":"NTILE","sum":1817},{"parent":"FUNC","rule":"NULLIF","sum":3},{"parent":"FUNC","rule":"NVL","sum":17680671},{"parent":"FUNC","rule":"NVl","sum":802},{"parent":"FUNC","rule":"NaNvl","sum":26},{"parent":"FUNC","rule":"NanVL","sum":1},{"parent":"FUNC","rule":"NanVl","sum":3},{"parent":"FUNC","rule":"Nanvl","sum":10769},{"parent":"FUNC","rule":"NothiNG","sum":2},{"parent":"FUNC","rule":"Nothing","sum":812266},{"parent":"FUNC","rule":"NullTypeHandle","sum":2314},{"parent":"FUNC","rule":"Nvl","sum":28483},{"parent":"FUNC","rule":"OR","sum":6},{"parent":"FUNC","rule":"OVER","sum":1},{"parent":"FUNC","rule":"OptionalItemType","sum":37180},{"parent":"FUNC","rule":"OptionalType","sum":136974},{"parent":"FUNC","rule":"OptionalTypeHandle","sum":44309},{"parent":"FUNC","rule":"PERCENTILE","sum":29934684},{"parent":"FUNC","rule":"PERCENTIlE","sum":4},{"parent":"FUNC","rule":"PERCENT_RANK","sum":6127},{"parent":"FUNC","rule":"PERCENtILE","sum":1957},{"parent":"FUNC","rule":"PERCEnTILE","sum":1},{"parent":"FUNC","rule":"PICKLE","sum":77},{"parent":"FUNC","rule":"PIckle","sum":7},{"parent":"FUNC","rule":"POPULATION_STDDEV","sum":364},{"parent":"FUNC","rule":"POPULATION_VARIANCE","sum":19},{"parent":"FUNC","rule":"POWER","sum":4},{"parent":"FUNC","rule":"ParseDuration","sum":2},{"parent":"FUNC","rule":"ParseFILE","sum":22},{"parent":"FUNC","rule":"ParseFIle","sum":8},{"parent":"FUNC","rule":"ParseFile","sum":952167},{"parent":"FUNC","rule":"ParseType","sum":464193},{"parent":"FUNC","rule":"ParseTypeHandle","sum":1193683},{"parent":"FUNC","rule":"Parsefile","sum":111},{"parent":"FUNC","rule":"Path","sum":4},{"parent":"FUNC","rule":"PeRCENTILE","sum":365},{"parent":"FUNC","rule":"Percentile","sum":73128},{"parent":"FUNC","rule":"PgArray","sum":17},{"parent":"FUNC","rule":"PgBool","sum":153},{"parent":"FUNC","rule":"PgCall","sum":554},{"parent":"FUNC","rule":"PgCast","sum":5593},{"parent":"FUNC","rule":"PgCircle","sum":5},{"parent":"FUNC","rule":"PgConst","sum":96},{"parent":"FUNC","rule":"PgDate","sum":110},{"parent":"FUNC","rule":"PgGeometry","sum":6},{"parent":"FUNC","rule":"PgInt4","sum":4},{"parent":"FUNC","rule":"PgInt8","sum":1},{"parent":"FUNC","rule":"PgInterval","sum":33},{"parent":"FUNC","rule":"PgOp","sum":1369},{"parent":"FUNC","rule":"PgPoint","sum":76},{"parent":"FUNC","rule":"PgPolygon","sum":517},{"parent":"FUNC","rule":"PgRangeCall","sum":7},{"parent":"FUNC","rule":"PgText","sum":24},{"parent":"FUNC","rule":"PgTimestamp","sum":42},{"parent":"FUNC","rule":"PgVarBit","sum":2},{"parent":"FUNC","rule":"Pickle","sum":118347},{"parent":"FUNC","rule":"QuoteCode","sum":722026},{"parent":"FUNC","rule":"RADIANS","sum":12},{"parent":"FUNC","rule":"RAND","sum":2},{"parent":"FUNC","rule":"RANDOM","sum":486698},{"parent":"FUNC","rule":"RANDOMNUMBER","sum":4009},{"parent":"FUNC","rule":"RANDOMNumber","sum":11},{"parent":"FUNC","rule":"RANDOMUUID","sum":5},{"parent":"FUNC","rule":"RANDOM_NUMBER","sum":83},{"parent":"FUNC","rule":"RANGE","sum":149},{"parent":"FUNC","rule":"RANK","sum":945395},{"parent":"FUNC","rule":"RAndom","sum":7},{"parent":"FUNC","rule":"REGEXP","sum":1},{"parent":"FUNC","rule":"REMOVEMEMBERS","sum":41},{"parent":"FUNC","rule":"REMOVE_mEMBER","sum":6},{"parent":"FUNC","rule":"REPLACE","sum":3},{"parent":"FUNC","rule":"RFIND","sum":3594199},{"parent":"FUNC","rule":"RFind","sum":251181},{"parent":"FUNC","rule":"RIGHT","sum":2},{"parent":"FUNC","rule":"ROUND","sum":10},{"parent":"FUNC","rule":"ROWNUMBER","sum":33},{"parent":"FUNC","rule":"ROW_NUMBER","sum":9408940},{"parent":"FUNC","rule":"ROW_NUMber","sum":11},{"parent":"FUNC","rule":"ROW_Number","sum":8},{"parent":"FUNC","rule":"ROW_nUMBER","sum":1},{"parent":"FUNC","rule":"ROW_nuMBER","sum":4},{"parent":"FUNC","rule":"ROW_number","sum":13473},{"parent":"FUNC","rule":"Rand","sum":1},{"parent":"FUNC","rule":"Random","sum":731618},{"parent":"FUNC","rule":"RandomNUmber","sum":172},{"parent":"FUNC","rule":"RandomNumber","sum":272780},{"parent":"FUNC","rule":"RandomUUID","sum":8049},{"parent":"FUNC","rule":"RandomUUid","sum":32889},{"parent":"FUNC","rule":"RandomUuid","sum":214210},{"parent":"FUNC","rule":"Randomnumber","sum":2},{"parent":"FUNC","rule":"Range","sum":2},{"parent":"FUNC","rule":"Rank","sum":3094},{"parent":"FUNC","rule":"RemoveMEmbers","sum":16},{"parent":"FUNC","rule":"RemoveMember","sum":431493},{"parent":"FUNC","rule":"RemoveMembers","sum":728191},{"parent":"FUNC","rule":"RemoveTimeZone","sum":13},{"parent":"FUNC","rule":"RemoveTimezone","sum":433746},{"parent":"FUNC","rule":"Removemember","sum":686},{"parent":"FUNC","rule":"Removemembers","sum":4},{"parent":"FUNC","rule":"RenameMembers","sum":506669},{"parent":"FUNC","rule":"ReplaceMember","sum":9370},{"parent":"FUNC","rule":"ReprCode","sum":195698},{"parent":"FUNC","rule":"ResourceType","sum":9},{"parent":"FUNC","rule":"Rfind","sum":871},{"parent":"FUNC","rule":"RootAttributes","sum":20},{"parent":"FUNC","rule":"RowNum","sum":1},{"parent":"FUNC","rule":"RowNumber","sum":20989},{"parent":"FUNC","rule":"Row_NUMBER","sum":33},{"parent":"FUNC","rule":"Row_NUmber","sum":16},{"parent":"FUNC","rule":"Row_Number","sum":60121},{"parent":"FUNC","rule":"Row_number","sum":4136},{"parent":"FUNC","rule":"SESSIONWINDOW","sum":131},{"parent":"FUNC","rule":"SETINTERSECTION","sum":20},{"parent":"FUNC","rule":"SIGN","sum":1},{"parent":"FUNC","rule":"SIN","sum":4},{"parent":"FUNC","rule":"SOME","sum":32975368},{"parent":"FUNC","rule":"SOMe","sum":17},{"parent":"FUNC","rule":"SON_VALUE","sum":1},{"parent":"FUNC","rule":"SOmE","sum":3},{"parent":"FUNC","rule":"SOme","sum":9},{"parent":"FUNC","rule":"SQL","sum":6},{"parent":"FUNC","rule":"SQRT","sum":2},{"parent":"FUNC","rule":"STARTSWITH","sum":25418},{"parent":"FUNC","rule":"STARTS_WITH","sum":46},{"parent":"FUNC","rule":"STARTsWITH","sum":17},{"parent":"FUNC","rule":"STATICMAP","sum":46},{"parent":"FUNC","rule":"STD","sum":6},{"parent":"FUNC","rule":"STDDEV","sum":400676},{"parent":"FUNC","rule":"STDDEVPOP","sum":2805},{"parent":"FUNC","rule":"STDDEVSAMP","sum":1098},{"parent":"FUNC","rule":"STDDEV_POP","sum":14},{"parent":"FUNC","rule":"STDDEV_POPULATION","sum":18603},{"parent":"FUNC","rule":"STDDEV_SAMP","sum":3359},{"parent":"FUNC","rule":"STDDEV_SAMPLE","sum":9936},{"parent":"FUNC","rule":"STDDev","sum":2},{"parent":"FUNC","rule":"STDdev","sum":4},{"parent":"FUNC","rule":"STRING_SPLIT","sum":1},{"parent":"FUNC","rule":"ST_AsText","sum":3},{"parent":"FUNC","rule":"ST_ClosestPoint","sum":3},{"parent":"FUNC","rule":"ST_DWithin","sum":4},{"parent":"FUNC","rule":"ST_Distance","sum":5},{"parent":"FUNC","rule":"ST_GeomFromGeoHash","sum":1},{"parent":"FUNC","rule":"ST_MakePoint","sum":4},{"parent":"FUNC","rule":"ST_Point","sum":10},{"parent":"FUNC","rule":"ST_PolygonFromText","sum":5},{"parent":"FUNC","rule":"ST_SetSRID","sum":10},{"parent":"FUNC","rule":"ST_Transform","sum":4},{"parent":"FUNC","rule":"STartsWith","sum":2},{"parent":"FUNC","rule":"STdDEV","sum":9},{"parent":"FUNC","rule":"SUBQUERYExtendFor","sum":6},{"parent":"FUNC","rule":"SUBSTIRNG","sum":4},{"parent":"FUNC","rule":"SUBSTRING","sum":29536028},{"parent":"FUNC","rule":"SUBSTRINg","sum":2},{"parent":"FUNC","rule":"SUBSTRInG","sum":4},{"parent":"FUNC","rule":"SUBSTRiNG","sum":2},{"parent":"FUNC","rule":"SUBSTRinG","sum":2},{"parent":"FUNC","rule":"SUBSTRing","sum":223},{"parent":"FUNC","rule":"SUBSTrING","sum":21},{"parent":"FUNC","rule":"SUBSTring","sum":14},{"parent":"FUNC","rule":"SUBStRING","sum":2},{"parent":"FUNC","rule":"SUBString","sum":20},{"parent":"FUNC","rule":"SUBstring","sum":3},{"parent":"FUNC","rule":"SUM","sum":42462858},{"parent":"FUNC","rule":"SUMIF","sum":3303},{"parent":"FUNC","rule":"SUM_","sum":317},{"parent":"FUNC","rule":"SUM_IF","sum":8452328},{"parent":"FUNC","rule":"SUM_If","sum":118},{"parent":"FUNC","rule":"SUM_iF","sum":19},{"parent":"FUNC","rule":"SUM_if","sum":267431},{"parent":"FUNC","rule":"SUN","sum":1},{"parent":"FUNC","rule":"SUbstring","sum":5},{"parent":"FUNC","rule":"SUm","sum":80},{"parent":"FUNC","rule":"SUm_IF","sum":30},{"parent":"FUNC","rule":"SWITCH","sum":2},{"parent":"FUNC","rule":"SecureParam","sum":900802},{"parent":"FUNC","rule":"SessionStart","sum":24230},{"parent":"FUNC","rule":"SessionState","sum":716},{"parent":"FUNC","rule":"SessionWindow","sum":102118},{"parent":"FUNC","rule":"SetBit","sum":44509},{"parent":"FUNC","rule":"SetContains","sum":1},{"parent":"FUNC","rule":"SetCreate","sum":45700},{"parent":"FUNC","rule":"SetDIfference","sum":11},{"parent":"FUNC","rule":"SetDifference","sum":486034},{"parent":"FUNC","rule":"SetINtersection","sum":1},{"parent":"FUNC","rule":"SetIncludes","sum":246595},{"parent":"FUNC","rule":"SetInterSection","sum":21},{"parent":"FUNC","rule":"SetIntersection","sum":1266793},{"parent":"FUNC","rule":"SetIsDisJOINt","sum":8081},{"parent":"FUNC","rule":"SetIsDisJoint","sum":1686},{"parent":"FUNC","rule":"SetIsDisjoint","sum":1241386},{"parent":"FUNC","rule":"SetSymmetricDifference","sum":8855},{"parent":"FUNC","rule":"SetUNION","sum":1},{"parent":"FUNC","rule":"SetUnion","sum":588902},{"parent":"FUNC","rule":"Setintersection","sum":4517},{"parent":"FUNC","rule":"SizeOf","sum":1},{"parent":"FUNC","rule":"Some","sum":2528977},{"parent":"FUNC","rule":"SplitToList","sum":6},{"parent":"FUNC","rule":"SpreadMembers","sum":344997},{"parent":"FUNC","rule":"StablePicke","sum":1},{"parent":"FUNC","rule":"StablePickle","sum":212966},{"parent":"FUNC","rule":"StartSwith","sum":105},{"parent":"FUNC","rule":"StartsWIth","sum":704},{"parent":"FUNC","rule":"StartsWith","sum":5765448},{"parent":"FUNC","rule":"Startswith","sum":19728},{"parent":"FUNC","rule":"StaticFold","sum":307},{"parent":"FUNC","rule":"StaticMap","sum":683032},{"parent":"FUNC","rule":"StaticZip","sum":14557},{"parent":"FUNC","rule":"Staticmap","sum":2},{"parent":"FUNC","rule":"StdDev","sum":33},{"parent":"FUNC","rule":"Stddev","sum":43},{"parent":"FUNC","rule":"StreamItemType","sum":5715},{"parent":"FUNC","rule":"StreamType","sum":78586},{"parent":"FUNC","rule":"StreamTypeHandle","sum":17},{"parent":"FUNC","rule":"String","sum":34348},{"parent":"FUNC","rule":"StringLength","sum":5},{"parent":"FUNC","rule":"StringSplitToList","sum":4},{"parent":"FUNC","rule":"StructDifference","sum":235},{"parent":"FUNC","rule":"StructIntersection","sum":816},{"parent":"FUNC","rule":"StructMemberType","sum":20166},{"parent":"FUNC","rule":"StructMembers","sum":970519},{"parent":"FUNC","rule":"StructSymmetricDifference","sum":172},{"parent":"FUNC","rule":"StructType","sum":17979},{"parent":"FUNC","rule":"StructTypeComponents","sum":99655},{"parent":"FUNC","rule":"StructTypeHandle","sum":88035},{"parent":"FUNC","rule":"StructUnion","sum":101879},{"parent":"FUNC","rule":"SuBSTRING","sum":1},{"parent":"FUNC","rule":"SuM","sum":9},{"parent":"FUNC","rule":"SuM_IF","sum":4},{"parent":"FUNC","rule":"SubQueryExtendFor","sum":3},{"parent":"FUNC","rule":"SubSTRING","sum":3},{"parent":"FUNC","rule":"SubString","sum":27456},{"parent":"FUNC","rule":"SubqueryAssumeOrderBy","sum":818},{"parent":"FUNC","rule":"SubqueryExtend","sum":37139},{"parent":"FUNC","rule":"SubqueryExtendFor","sum":769800},{"parent":"FUNC","rule":"SubqueryMerge","sum":19},{"parent":"FUNC","rule":"SubqueryMergeFor","sum":36400},{"parent":"FUNC","rule":"SubqueryOrderBy","sum":184291},{"parent":"FUNC","rule":"SubqueryUnionALLFor","sum":9},{"parent":"FUNC","rule":"SubqueryUnionALlFor","sum":82},{"parent":"FUNC","rule":"SubqueryUnionAll","sum":26089},{"parent":"FUNC","rule":"SubqueryUnionAllFor","sum":141391},{"parent":"FUNC","rule":"SubqueryUnionAllfor","sum":381},{"parent":"FUNC","rule":"SubqueryUnionMerge","sum":30584},{"parent":"FUNC","rule":"SubqueryUnionMergeFor","sum":73744},{"parent":"FUNC","rule":"SubsTRING","sum":3},{"parent":"FUNC","rule":"Substring","sum":2920490},{"parent":"FUNC","rule":"Sum","sum":453950},{"parent":"FUNC","rule":"SumIf","sum":1597},{"parent":"FUNC","rule":"Sum_IF","sum":85},{"parent":"FUNC","rule":"Sum_If","sum":13919},{"parent":"FUNC","rule":"Sum_if","sum":52945},{"parent":"FUNC","rule":"TABLENAME","sum":12025},{"parent":"FUNC","rule":"TABLEPATH","sum":280},{"parent":"FUNC","rule":"TABLERECORDINDEX","sum":45},{"parent":"FUNC","rule":"TABLEROW","sum":1249},{"parent":"FUNC","rule":"TABLE_NAME","sum":140},{"parent":"FUNC","rule":"TABLE_PATH","sum":53},{"parent":"FUNC","rule":"TABLE_ROW","sum":124},{"parent":"FUNC","rule":"TABLEname","sum":4},{"parent":"FUNC","rule":"TAbleName","sum":69},{"parent":"FUNC","rule":"TAblePath","sum":2},{"parent":"FUNC","rule":"TAbleRow","sum":25},{"parent":"FUNC","rule":"TAblename","sum":1},{"parent":"FUNC","rule":"TESTBIT","sum":3},{"parent":"FUNC","rule":"TEstBit","sum":1},{"parent":"FUNC","rule":"TIMESTAMP","sum":422},{"parent":"FUNC","rule":"TIMESTAMPDIFF","sum":2},{"parent":"FUNC","rule":"TIMESTAMP_SECONDS","sum":1},{"parent":"FUNC","rule":"TOBytes","sum":1},{"parent":"FUNC","rule":"TODICT","sum":21},{"parent":"FUNC","rule":"TODIct","sum":1},{"parent":"FUNC","rule":"TOP","sum":501438},{"parent":"FUNC","rule":"TOPBY","sum":1},{"parent":"FUNC","rule":"TOPFREQ","sum":510613},{"parent":"FUNC","rule":"TOPFreq","sum":3},{"parent":"FUNC","rule":"TOP_BY","sum":1772438},{"parent":"FUNC","rule":"TOP_FREQ","sum":46},{"parent":"FUNC","rule":"TOP_by","sum":26},{"parent":"FUNC","rule":"TOSET","sum":41},{"parent":"FUNC","rule":"TOSet","sum":776},{"parent":"FUNC","rule":"TO_NUMBER","sum":14},{"parent":"FUNC","rule":"TO_TIMESTAMP","sum":1},{"parent":"FUNC","rule":"TObytes","sum":3},{"parent":"FUNC","rule":"TRY_MEMBER","sum":37},{"parent":"FUNC","rule":"TYPEOF","sum":1},{"parent":"FUNC","rule":"TYPEof","sum":28},{"parent":"FUNC","rule":"TZDateTime","sum":136},{"parent":"FUNC","rule":"TZDatetime","sum":3},{"parent":"FUNC","rule":"TZTimestamp","sum":64},{"parent":"FUNC","rule":"TabLeName","sum":1},{"parent":"FUNC","rule":"TableNAME","sum":3},{"parent":"FUNC","rule":"TableNAme","sum":1655},{"parent":"FUNC","rule":"TableNamE","sum":2},{"parent":"FUNC","rule":"TableName","sum":15053163},{"parent":"FUNC","rule":"TablePATH","sum":1},{"parent":"FUNC","rule":"TablePAth","sum":5},{"parent":"FUNC","rule":"TablePath","sum":1502345},{"parent":"FUNC","rule":"TableROW","sum":4},{"parent":"FUNC","rule":"TableROw","sum":19},{"parent":"FUNC","rule":"TableRecordINdex","sum":4},{"parent":"FUNC","rule":"TableRecordIndex","sum":2316443},{"parent":"FUNC","rule":"TableRedordIndex","sum":1},{"parent":"FUNC","rule":"TableRow","sum":27030786},{"parent":"FUNC","rule":"TableRowIndex","sum":1},{"parent":"FUNC","rule":"TableRows","sum":1691348},{"parent":"FUNC","rule":"Table_Name","sum":55},{"parent":"FUNC","rule":"Table_Row","sum":5},{"parent":"FUNC","rule":"Table_name","sum":73},{"parent":"FUNC","rule":"Table_path","sum":3},{"parent":"FUNC","rule":"Tablename","sum":104331},{"parent":"FUNC","rule":"Tablepath","sum":204},{"parent":"FUNC","rule":"TablerRow","sum":1},{"parent":"FUNC","rule":"TablerecordIndex","sum":1},{"parent":"FUNC","rule":"Tablerecordindex","sum":3},{"parent":"FUNC","rule":"Tablerow","sum":26427},{"parent":"FUNC","rule":"TestBit","sum":253623},{"parent":"FUNC","rule":"Text","sum":20},{"parent":"FUNC","rule":"TimeStamp","sum":4383},{"parent":"FUNC","rule":"Timestamp","sum":1352583},{"parent":"FUNC","rule":"Timestamp64","sum":59},{"parent":"FUNC","rule":"ToBytes","sum":6657465},{"parent":"FUNC","rule":"ToDIct","sum":257},{"parent":"FUNC","rule":"ToDict","sum":6409425},{"parent":"FUNC","rule":"ToList","sum":3},{"parent":"FUNC","rule":"ToLower","sum":4},{"parent":"FUNC","rule":"ToMilliseconds","sum":2},{"parent":"FUNC","rule":"ToMultiDict","sum":339470},{"parent":"FUNC","rule":"ToPg","sum":3165},{"parent":"FUNC","rule":"ToSET","sum":80},{"parent":"FUNC","rule":"ToSet","sum":5476490},{"parent":"FUNC","rule":"ToSortedDict","sum":1116},{"parent":"FUNC","rule":"ToStartOfMonth","sum":4},{"parent":"FUNC","rule":"To_bytes","sum":3},{"parent":"FUNC","rule":"Todict","sum":232},{"parent":"FUNC","rule":"Top","sum":841},{"parent":"FUNC","rule":"TopBy","sum":77},{"parent":"FUNC","rule":"TopFreq","sum":13752},{"parent":"FUNC","rule":"Top_BY","sum":22},{"parent":"FUNC","rule":"Top_By","sum":110},{"parent":"FUNC","rule":"Top_by","sum":122},{"parent":"FUNC","rule":"Topfreq","sum":28},{"parent":"FUNC","rule":"Toset","sum":2338},{"parent":"FUNC","rule":"TryMember","sum":16756620},{"parent":"FUNC","rule":"Trymember","sum":36906},{"parent":"FUNC","rule":"TupleElementType","sum":7626},{"parent":"FUNC","rule":"TupleType","sum":2405},{"parent":"FUNC","rule":"TupleTypeComponents","sum":58},{"parent":"FUNC","rule":"TupleTypeHandle","sum":5579},{"parent":"FUNC","rule":"TypeHandle","sum":161538},{"parent":"FUNC","rule":"TypeKind","sum":54944},{"parent":"FUNC","rule":"TypeOF","sum":37},{"parent":"FUNC","rule":"TypeOf","sum":849905},{"parent":"FUNC","rule":"Typeof","sum":78},{"parent":"FUNC","rule":"TzDate","sum":671},{"parent":"FUNC","rule":"TzDate32","sum":7},{"parent":"FUNC","rule":"TzDateTime","sum":24905},{"parent":"FUNC","rule":"TzDateTime64","sum":7},{"parent":"FUNC","rule":"TzDatetime","sum":46356},{"parent":"FUNC","rule":"TzTimeStamp","sum":4},{"parent":"FUNC","rule":"TzTimestamp","sum":343153},{"parent":"FUNC","rule":"TzTimestamp64","sum":7},{"parent":"FUNC","rule":"UBSTRING","sum":1},{"parent":"FUNC","rule":"UDAF","sum":141596},{"parent":"FUNC","rule":"UDF","sum":1834},{"parent":"FUNC","rule":"UINT32","sum":4},{"parent":"FUNC","rule":"UINT64","sum":6},{"parent":"FUNC","rule":"UInt32","sum":110313},{"parent":"FUNC","rule":"UInt64","sum":829},{"parent":"FUNC","rule":"UInt8","sum":317},{"parent":"FUNC","rule":"UNIQ","sum":1},{"parent":"FUNC","rule":"UNPICKLE","sum":28},{"parent":"FUNC","rule":"UNTAG","sum":18},{"parent":"FUNC","rule":"UNWRAP","sum":14035490},{"parent":"FUNC","rule":"UNWRAp","sum":1},{"parent":"FUNC","rule":"UNWRaP","sum":1},{"parent":"FUNC","rule":"UNWRap","sum":10586},{"parent":"FUNC","rule":"UNWrAP","sum":18},{"parent":"FUNC","rule":"UNWraP","sum":8},{"parent":"FUNC","rule":"UNWrap","sum":4},{"parent":"FUNC","rule":"UNwRAP","sum":6},{"parent":"FUNC","rule":"UNwrap","sum":1368},{"parent":"FUNC","rule":"USING","sum":6},{"parent":"FUNC","rule":"UTF8","sum":336668},{"parent":"FUNC","rule":"UUID","sum":1},{"parent":"FUNC","rule":"Udf","sum":299948},{"parent":"FUNC","rule":"Uint16","sum":83},{"parent":"FUNC","rule":"Uint32","sum":332306},{"parent":"FUNC","rule":"Uint64","sum":11970},{"parent":"FUNC","rule":"Uint8","sum":2927},{"parent":"FUNC","rule":"UnTag","sum":55},{"parent":"FUNC","rule":"UnWRAP","sum":10},{"parent":"FUNC","rule":"UnWrAp","sum":1},{"parent":"FUNC","rule":"UnWrap","sum":1070983},{"parent":"FUNC","rule":"UnionAll","sum":3},{"parent":"FUNC","rule":"Unpickle","sum":180},{"parent":"FUNC","rule":"Untag","sum":15650},{"parent":"FUNC","rule":"Unwarp","sum":1},{"parent":"FUNC","rule":"Unwrap","sum":35784184},{"parent":"FUNC","rule":"UtcCurrentDatetime","sum":8},{"parent":"FUNC","rule":"Utf8","sum":41022},{"parent":"FUNC","rule":"Uuid","sum":451},{"parent":"FUNC","rule":"VALUES","sum":14},{"parent":"FUNC","rule":"VARIANCE","sum":31012},{"parent":"FUNC","rule":"VARIANCE_POPULATION","sum":3016},{"parent":"FUNC","rule":"VARIANCE_SAMPLE","sum":1236},{"parent":"FUNC","rule":"VARP","sum":146},{"parent":"FUNC","rule":"VARPOP","sum":15},{"parent":"FUNC","rule":"VAR_POP","sum":4},{"parent":"FUNC","rule":"VAR_SAMP","sum":44},{"parent":"FUNC","rule":"VERSION","sum":2},{"parent":"FUNC","rule":"Variance","sum":1145},{"parent":"FUNC","rule":"Variance_SAMPLE","sum":30},{"parent":"FUNC","rule":"Variance_Sample","sum":23},{"parent":"FUNC","rule":"Variance_sample","sum":24},{"parent":"FUNC","rule":"VariantType","sum":3161},{"parent":"FUNC","rule":"VariantTypeHandle","sum":8},{"parent":"FUNC","rule":"VariantUnderlyingType","sum":6517},{"parent":"FUNC","rule":"Version","sum":3},{"parent":"FUNC","rule":"Visit","sum":28},{"parent":"FUNC","rule":"Void","sum":92520},{"parent":"FUNC","rule":"WEAKFIELD","sum":833},{"parent":"FUNC","rule":"WEAK_FIELD","sum":372},{"parent":"FUNC","rule":"WEakField","sum":2},{"parent":"FUNC","rule":"Way","sum":9085},{"parent":"FUNC","rule":"WeakFIeld","sum":43},{"parent":"FUNC","rule":"WeakField","sum":21200118},{"parent":"FUNC","rule":"WeakFiled","sum":2},{"parent":"FUNC","rule":"Weakfield","sum":1925},{"parent":"FUNC","rule":"WorldCode","sum":378},{"parent":"FUNC","rule":"YPathDouble","sum":4},{"parent":"FUNC","rule":"YPathExtract","sum":4},{"parent":"FUNC","rule":"YPathInt64","sum":6},{"parent":"FUNC","rule":"YPathString","sum":4},{"parent":"FUNC","rule":"YSON","sum":756},{"parent":"FUNC","rule":"YSONExtractString","sum":6},{"parent":"FUNC","rule":"Yson","sum":609223},{"parent":"FUNC","rule":"aGGREGATE_LIST","sum":13},{"parent":"FUNC","rule":"aGGREGATE_LIST_DISTINCT","sum":4},{"parent":"FUNC","rule":"aGG_LIST","sum":2},{"parent":"FUNC","rule":"aGG_LIST_DISTINCT","sum":10},{"parent":"FUNC","rule":"aSSTRUCT","sum":1},{"parent":"FUNC","rule":"aSTuple","sum":3},{"parent":"FUNC","rule":"aVG","sum":2},{"parent":"FUNC","rule":"abs","sum":1551344},{"parent":"FUNC","rule":"addMember","sum":2594},{"parent":"FUNC","rule":"addTimezone","sum":782},{"parent":"FUNC","rule":"age","sum":2},{"parent":"FUNC","rule":"aggList","sum":265},{"parent":"FUNC","rule":"agg_LIST","sum":76},{"parent":"FUNC","rule":"agg_LIST_DISTINCT","sum":1},{"parent":"FUNC","rule":"agg_List","sum":546},{"parent":"FUNC","rule":"agg_List_distinct","sum":24},{"parent":"FUNC","rule":"agg_list","sum":1285275},{"parent":"FUNC","rule":"agg_list_DISTINCT","sum":2},{"parent":"FUNC","rule":"agg_list_Distinct","sum":1},{"parent":"FUNC","rule":"agg_list_distinct","sum":435217},{"parent":"FUNC","rule":"agg_set","sum":1},{"parent":"FUNC","rule":"agglist","sum":130},{"parent":"FUNC","rule":"agglistdistinct","sum":44},{"parent":"FUNC","rule":"aggr_list","sum":2662},{"parent":"FUNC","rule":"aggr_list_distinct","sum":18},{"parent":"FUNC","rule":"aggr_set","sum":2},{"parent":"FUNC","rule":"aggregATE_LIST","sum":16},{"parent":"FUNC","rule":"aggregateList","sum":368},{"parent":"FUNC","rule":"aggregateListDistinct","sum":38},{"parent":"FUNC","rule":"aggregate_List","sum":986},{"parent":"FUNC","rule":"aggregate_List_Distinct","sum":8},{"parent":"FUNC","rule":"aggregate_List_distinct","sum":10},{"parent":"FUNC","rule":"aggregate_by","sum":369299},{"parent":"FUNC","rule":"aggregate_list","sum":2505875},{"parent":"FUNC","rule":"aggregate_list_","sum":2},{"parent":"FUNC","rule":"aggregate_list_DISTINCT","sum":1795},{"parent":"FUNC","rule":"aggregate_list_Distinct","sum":27},{"parent":"FUNC","rule":"aggregate_list_distinct","sum":941616},{"parent":"FUNC","rule":"aggregatelist","sum":558},{"parent":"FUNC","rule":"aggregatetransforminput","sum":1},{"parent":"FUNC","rule":"aggregationFactory","sum":138},{"parent":"FUNC","rule":"aggregation_factory","sum":8960},{"parent":"FUNC","rule":"aggregationfactory","sum":77},{"parent":"FUNC","rule":"agregate_list_distinct","sum":1},{"parent":"FUNC","rule":"and","sum":5},{"parent":"FUNC","rule":"anyLast","sum":8},{"parent":"FUNC","rule":"argMax","sum":15},{"parent":"FUNC","rule":"argMin","sum":3},{"parent":"FUNC","rule":"arrayElement","sum":1},{"parent":"FUNC","rule":"arrayJoin","sum":10},{"parent":"FUNC","rule":"arrayMax","sum":4},{"parent":"FUNC","rule":"array_agg","sum":5},{"parent":"FUNC","rule":"array_to_string","sum":2},{"parent":"FUNC","rule":"asDict","sum":3796},{"parent":"FUNC","rule":"asLIST","sum":50},{"parent":"FUNC","rule":"asList","sum":175821},{"parent":"FUNC","rule":"asSet","sum":1970},{"parent":"FUNC","rule":"asStruct","sum":119870},{"parent":"FUNC","rule":"asTUPLE","sum":1},{"parent":"FUNC","rule":"asTagged","sum":2181},{"parent":"FUNC","rule":"asTuple","sum":83395},{"parent":"FUNC","rule":"asVariant","sum":10},{"parent":"FUNC","rule":"as_dict","sum":4},{"parent":"FUNC","rule":"as_list","sum":77},{"parent":"FUNC","rule":"as_struct","sum":122},{"parent":"FUNC","rule":"as_table","sum":30},{"parent":"FUNC","rule":"as_tagged","sum":1},{"parent":"FUNC","rule":"as_tuple","sum":368},{"parent":"FUNC","rule":"asdict","sum":3848},{"parent":"FUNC","rule":"asenum","sum":13},{"parent":"FUNC","rule":"aslist","sum":164811},{"parent":"FUNC","rule":"assessments_integralListReverse","sum":2},{"parent":"FUNC","rule":"asset","sum":1146},{"parent":"FUNC","rule":"asstruct","sum":13007},{"parent":"FUNC","rule":"assumeNotNull","sum":3},{"parent":"FUNC","rule":"astagged","sum":1372},{"parent":"FUNC","rule":"astuple","sum":30946},{"parent":"FUNC","rule":"asvariant","sum":3},{"parent":"FUNC","rule":"atan2","sum":4},{"parent":"FUNC","rule":"avG","sum":52},{"parent":"FUNC","rule":"avg","sum":6012613},{"parent":"FUNC","rule":"avgIf","sum":19424},{"parent":"FUNC","rule":"avg_","sum":1},{"parent":"FUNC","rule":"avg_IF","sum":155},{"parent":"FUNC","rule":"avg_If","sum":129},{"parent":"FUNC","rule":"avg_if","sum":497930},{"parent":"FUNC","rule":"ax","sum":13},{"parent":"FUNC","rule":"bit_or","sum":26580},{"parent":"FUNC","rule":"bool","sum":278},{"parent":"FUNC","rule":"bool_and","sum":67277},{"parent":"FUNC","rule":"bool_or","sum":236590},{"parent":"FUNC","rule":"bool_xor","sum":2},{"parent":"FUNC","rule":"bottom","sum":10501},{"parent":"FUNC","rule":"bottom_by","sum":332629},{"parent":"FUNC","rule":"business_id","sum":1},{"parent":"FUNC","rule":"bytes","sum":2},{"parent":"FUNC","rule":"cOALESCE","sum":36},{"parent":"FUNC","rule":"cOUNT","sum":64},{"parent":"FUNC","rule":"cOUNT_IF","sum":40},{"parent":"FUNC","rule":"cOunt","sum":2},{"parent":"FUNC","rule":"ceil","sum":1},{"parent":"FUNC","rule":"char_LENGTH","sum":2},{"parent":"FUNC","rule":"char_length","sum":18},{"parent":"FUNC","rule":"check_google_id","sum":1},{"parent":"FUNC","rule":"choosemembers","sum":5},{"parent":"FUNC","rule":"client_id","sum":1},{"parent":"FUNC","rule":"cnt","sum":2},{"parent":"FUNC","rule":"coALESCE","sum":14},{"parent":"FUNC","rule":"coUNT","sum":3},{"parent":"FUNC","rule":"coUNt","sum":3},{"parent":"FUNC","rule":"coalESCE","sum":40},{"parent":"FUNC","rule":"coalescE","sum":1},{"parent":"FUNC","rule":"coalesce","sum":25004966},{"parent":"FUNC","rule":"coalescue","sum":2},{"parent":"FUNC","rule":"coalsece","sum":1},{"parent":"FUNC","rule":"combinemembers","sum":5},{"parent":"FUNC","rule":"concat","sum":26},{"parent":"FUNC","rule":"conunt","sum":1},{"parent":"FUNC","rule":"convert_to_360","sum":2},{"parent":"FUNC","rule":"corr","sum":705},{"parent":"FUNC","rule":"correlation","sum":3843},{"parent":"FUNC","rule":"cos","sum":8},{"parent":"FUNC","rule":"couNT","sum":1},{"parent":"FUNC","rule":"couNT_IF","sum":7},{"parent":"FUNC","rule":"counT","sum":24},{"parent":"FUNC","rule":"count","sum":38648563},{"parent":"FUNC","rule":"countDistinct","sum":1},{"parent":"FUNC","rule":"countDistinctEstimate","sum":270896},{"parent":"FUNC","rule":"countIF","sum":8342},{"parent":"FUNC","rule":"countIf","sum":1389431},{"parent":"FUNC","rule":"count_","sum":553},{"parent":"FUNC","rule":"count_IF","sum":34210},{"parent":"FUNC","rule":"count_If","sum":26535},{"parent":"FUNC","rule":"count_distinct_estimate","sum":33},{"parent":"FUNC","rule":"count_if","sum":18935238},{"parent":"FUNC","rule":"countdistinctEstimate","sum":1777},{"parent":"FUNC","rule":"countdistinctestimate","sum":2856},{"parent":"FUNC","rule":"countif","sum":21044},{"parent":"FUNC","rule":"covar","sum":243},{"parent":"FUNC","rule":"covariance","sum":287},{"parent":"FUNC","rule":"covariance_sample","sum":165},{"parent":"FUNC","rule":"cpunt","sum":1},{"parent":"FUNC","rule":"cume_dist","sum":69},{"parent":"FUNC","rule":"currentTzDate","sum":3981},{"parent":"FUNC","rule":"currentTzTimestamp","sum":53},{"parent":"FUNC","rule":"currentUTCDATETIME","sum":7},{"parent":"FUNC","rule":"currentUTCDate","sum":661},{"parent":"FUNC","rule":"currentUTCDateTime","sum":310},{"parent":"FUNC","rule":"currentUTCdate","sum":365},{"parent":"FUNC","rule":"currentUTCdatetime","sum":20},{"parent":"FUNC","rule":"currentUTcdate","sum":1336},{"parent":"FUNC","rule":"currentUtcDate","sum":6329},{"parent":"FUNC","rule":"currentUtcDateTime","sum":14501},{"parent":"FUNC","rule":"currentUtcDatetime","sum":2383},{"parent":"FUNC","rule":"currentUtcTimestamp","sum":197},{"parent":"FUNC","rule":"current_utc_timestamp","sum":2},{"parent":"FUNC","rule":"currenttzdate","sum":418},{"parent":"FUNC","rule":"currenttzdatetime","sum":261},{"parent":"FUNC","rule":"currenttztimestamp","sum":47},{"parent":"FUNC","rule":"currentutcDateTime","sum":3},{"parent":"FUNC","rule":"currentutcdate","sum":118700},{"parent":"FUNC","rule":"currentutcdatetime","sum":58523},{"parent":"FUNC","rule":"currentutctimestamp","sum":48372},{"parent":"FUNC","rule":"d","sum":1},{"parent":"FUNC","rule":"dATE","sum":4},{"parent":"FUNC","rule":"date","sum":415702},{"parent":"FUNC","rule":"date32","sum":11},{"parent":"FUNC","rule":"dateDiff","sum":1},{"parent":"FUNC","rule":"dateNow","sum":2},{"parent":"FUNC","rule":"dateTIME","sum":2},{"parent":"FUNC","rule":"dateTime","sum":10},{"parent":"FUNC","rule":"date_add","sum":8},{"parent":"FUNC","rule":"date_format","sum":2},{"parent":"FUNC","rule":"date_sub","sum":2},{"parent":"FUNC","rule":"dateadd","sum":1},{"parent":"FUNC","rule":"datetime","sum":11759},{"parent":"FUNC","rule":"datetime64","sum":19},{"parent":"FUNC","rule":"decimal","sum":339},{"parent":"FUNC","rule":"dense_RANK","sum":42},{"parent":"FUNC","rule":"dense_rank","sum":46376},{"parent":"FUNC","rule":"dictAggregate","sum":59},{"parent":"FUNC","rule":"dictContains","sum":7},{"parent":"FUNC","rule":"dictGetString","sum":1},{"parent":"FUNC","rule":"dictItems","sum":8482},{"parent":"FUNC","rule":"dictKeys","sum":1199},{"parent":"FUNC","rule":"dictLength","sum":104},{"parent":"FUNC","rule":"dictLookUp","sum":9327},{"parent":"FUNC","rule":"dictLookup","sum":675},{"parent":"FUNC","rule":"dictPayloads","sum":90},{"parent":"FUNC","rule":"dict_keys","sum":8696},{"parent":"FUNC","rule":"dictcontains","sum":345},{"parent":"FUNC","rule":"dictcreate","sum":2},{"parent":"FUNC","rule":"dicthasitems","sum":24},{"parent":"FUNC","rule":"dictitems","sum":2512},{"parent":"FUNC","rule":"dictkeys","sum":897},{"parent":"FUNC","rule":"dictlength","sum":6530},{"parent":"FUNC","rule":"dictlookup","sum":1591},{"parent":"FUNC","rule":"dictpayloads","sum":113},{"parent":"FUNC","rule":"disctinct","sum":2},{"parent":"FUNC","rule":"dol_show1","sum":1},{"parent":"FUNC","rule":"double","sum":134},{"parent":"FUNC","rule":"dynumber","sum":12},{"parent":"FUNC","rule":"each","sum":1},{"parent":"FUNC","rule":"empty","sum":3},{"parent":"FUNC","rule":"emptylist","sum":1},{"parent":"FUNC","rule":"endsWith","sum":2149},{"parent":"FUNC","rule":"endswith","sum":31680},{"parent":"FUNC","rule":"ensure","sum":409136},{"parent":"FUNC","rule":"ensuretype","sum":708},{"parent":"FUNC","rule":"evaluateCode","sum":51},{"parent":"FUNC","rule":"evaluateExpr","sum":294},{"parent":"FUNC","rule":"expandstruct","sum":20},{"parent":"FUNC","rule":"f","sum":1},{"parent":"FUNC","rule":"file_content","sum":10},{"parent":"FUNC","rule":"file_path","sum":1},{"parent":"FUNC","rule":"filecontent","sum":603},{"parent":"FUNC","rule":"filepath","sum":973},{"parent":"FUNC","rule":"filter","sum":2},{"parent":"FUNC","rule":"find","sum":4070995},{"parent":"FUNC","rule":"first_VALUE","sum":19},{"parent":"FUNC","rule":"first_route_timestamp","sum":1},{"parent":"FUNC","rule":"first_value","sum":1147237},{"parent":"FUNC","rule":"flatten","sum":1},{"parent":"FUNC","rule":"float","sum":23058},{"parent":"FUNC","rule":"floor","sum":1},{"parent":"FUNC","rule":"forceremovemember","sum":373},{"parent":"FUNC","rule":"format","sum":1},{"parent":"FUNC","rule":"formatType","sum":8},{"parent":"FUNC","rule":"formattype","sum":146},{"parent":"FUNC","rule":"fromBytes","sum":13},{"parent":"FUNC","rule":"fromPg","sum":133},{"parent":"FUNC","rule":"fromUnixTimestamp64Micro","sum":1},{"parent":"FUNC","rule":"from_bytes","sum":2},{"parent":"FUNC","rule":"frombytes","sum":47},{"parent":"FUNC","rule":"frompg","sum":130},{"parent":"FUNC","rule":"gatherMembers","sum":67},{"parent":"FUNC","rule":"gathermembers","sum":7},{"parent":"FUNC","rule":"get_auto_label","sum":1},{"parent":"FUNC","rule":"get_html","sum":1},{"parent":"FUNC","rule":"get_is_in_collection_feature","sum":1},{"parent":"FUNC","rule":"get_metrika_bro","sum":1},{"parent":"FUNC","rule":"get_pay_processing","sum":2},{"parent":"FUNC","rule":"get_post_profiles","sum":1},{"parent":"FUNC","rule":"get_rewrite_prompt","sum":1},{"parent":"FUNC","rule":"get_support_line","sum":1},{"parent":"FUNC","rule":"get_test_id","sum":7},{"parent":"FUNC","rule":"getdate","sum":2},{"parent":"FUNC","rule":"greatest","sum":317805},{"parent":"FUNC","rule":"groupArray","sum":4},{"parent":"FUNC","rule":"groupUniqArray","sum":2},{"parent":"FUNC","rule":"grouping","sum":17631},{"parent":"FUNC","rule":"hISTOGRAM","sum":2},{"parent":"FUNC","rule":"has","sum":20},{"parent":"FUNC","rule":"histOGRAM","sum":4},{"parent":"FUNC","rule":"histograM","sum":359},{"parent":"FUNC","rule":"histogram","sum":52723},{"parent":"FUNC","rule":"histogramcdf","sum":84},{"parent":"FUNC","rule":"hll","sum":82176},{"parent":"FUNC","rule":"iF","sum":2691},{"parent":"FUNC","rule":"iNtErVaL","sum":1},{"parent":"FUNC","rule":"if","sum":43202776},{"parent":"FUNC","rule":"ifNull","sum":6},{"parent":"FUNC","rule":"in","sum":13},{"parent":"FUNC","rule":"indexOf","sum":14},{"parent":"FUNC","rule":"instanceof","sum":55},{"parent":"FUNC","rule":"instr","sum":1},{"parent":"FUNC","rule":"int","sum":32408},{"parent":"FUNC","rule":"int32","sum":2},{"parent":"FUNC","rule":"int64","sum":19},{"parent":"FUNC","rule":"int8","sum":2},{"parent":"FUNC","rule":"intervaL","sum":9421},{"parent":"FUNC","rule":"interval","sum":1800579},{"parent":"FUNC","rule":"interval64","sum":7},{"parent":"FUNC","rule":"isNull","sum":7},{"parent":"FUNC","rule":"is_allowed_in_kz","sum":2},{"parent":"FUNC","rule":"is_valid_intent","sum":4},{"parent":"FUNC","rule":"is_valid_organic","sum":4},{"parent":"FUNC","rule":"istLast","sum":1},{"parent":"FUNC","rule":"isum","sum":6},{"parent":"FUNC","rule":"joinTableRow","sum":5},{"parent":"FUNC","rule":"jointablerow","sum":215},{"parent":"FUNC","rule":"json","sum":5627},{"parent":"FUNC","rule":"json_extract","sum":3},{"parent":"FUNC","rule":"json_object_agg","sum":1},{"parent":"FUNC","rule":"jsondocument","sum":6},{"parent":"FUNC","rule":"just","sum":245256},{"parent":"FUNC","rule":"lAG","sum":2244},{"parent":"FUNC","rule":"lEAD","sum":6798},{"parent":"FUNC","rule":"lEN","sum":30},{"parent":"FUNC","rule":"lINEARHISTOGRAM","sum":115},{"parent":"FUNC","rule":"lISTlENGTH","sum":2},{"parent":"FUNC","rule":"lISTlength","sum":1},{"parent":"FUNC","rule":"lag","sum":1012991},{"parent":"FUNC","rule":"last_VALUE","sum":14},{"parent":"FUNC","rule":"last_value","sum":1082017},{"parent":"FUNC","rule":"lead","sum":928409},{"parent":"FUNC","rule":"least","sum":375371},{"parent":"FUNC","rule":"len","sum":712178},{"parent":"FUNC","rule":"lenGTH","sum":1},{"parent":"FUNC","rule":"lenght","sum":1},{"parent":"FUNC","rule":"lengtH","sum":2},{"parent":"FUNC","rule":"length","sum":2552436},{"parent":"FUNC","rule":"like","sum":4},{"parent":"FUNC","rule":"likely","sum":16470},{"parent":"FUNC","rule":"linearHISTOGRAM","sum":10},{"parent":"FUNC","rule":"linearHistogram","sum":14},{"parent":"FUNC","rule":"linearhistogram","sum":174},{"parent":"FUNC","rule":"linearhistogramcdf","sum":20},{"parent":"FUNC","rule":"listALL","sum":3},{"parent":"FUNC","rule":"listAVG","sum":894},{"parent":"FUNC","rule":"listAggregateUnique","sum":1},{"parent":"FUNC","rule":"listAll","sum":86},{"parent":"FUNC","rule":"listAny","sum":121},{"parent":"FUNC","rule":"listAvg","sum":105},{"parent":"FUNC","rule":"listCollect","sum":378},{"parent":"FUNC","rule":"listConcat","sum":11072},{"parent":"FUNC","rule":"listEnumerate","sum":132},{"parent":"FUNC","rule":"listExtend","sum":6711},{"parent":"FUNC","rule":"listExtract","sum":24},{"parent":"FUNC","rule":"listFilter","sum":39834},{"parent":"FUNC","rule":"listFlatten","sum":287},{"parent":"FUNC","rule":"listFold","sum":301},{"parent":"FUNC","rule":"listFromRange","sum":767},{"parent":"FUNC","rule":"listHAs","sum":52},{"parent":"FUNC","rule":"listHas","sum":41607},{"parent":"FUNC","rule":"listHasItems","sum":3253},{"parent":"FUNC","rule":"listHead","sum":2187},{"parent":"FUNC","rule":"listIndexOf","sum":39},{"parent":"FUNC","rule":"listLENGTH","sum":225},{"parent":"FUNC","rule":"listLENgth","sum":2},{"parent":"FUNC","rule":"listLast","sum":1020},{"parent":"FUNC","rule":"listLength","sum":29895},{"parent":"FUNC","rule":"listMAX","sum":1},{"parent":"FUNC","rule":"listMIN","sum":1},{"parent":"FUNC","rule":"listMap","sum":53689},{"parent":"FUNC","rule":"listMax","sum":812},{"parent":"FUNC","rule":"listMin","sum":170},{"parent":"FUNC","rule":"listNotNull","sum":279},{"parent":"FUNC","rule":"listReverse","sum":4483},{"parent":"FUNC","rule":"listSkip","sum":18},{"parent":"FUNC","rule":"listSort","sum":23734},{"parent":"FUNC","rule":"listSortAsc","sum":2},{"parent":"FUNC","rule":"listSortDesc","sum":200},{"parent":"FUNC","rule":"listSum","sum":1473},{"parent":"FUNC","rule":"listTake","sum":728},{"parent":"FUNC","rule":"listTopSort","sum":18},{"parent":"FUNC","rule":"listUniq","sum":10546},{"parent":"FUNC","rule":"listUniqStable","sum":1},{"parent":"FUNC","rule":"listZip","sum":1346},{"parent":"FUNC","rule":"listZipAll","sum":1389},{"parent":"FUNC","rule":"list_Length","sum":1},{"parent":"FUNC","rule":"list_MAX","sum":1},{"parent":"FUNC","rule":"list_agg","sum":2},{"parent":"FUNC","rule":"list_avg","sum":25},{"parent":"FUNC","rule":"list_concat","sum":264},{"parent":"FUNC","rule":"list_filter","sum":2},{"parent":"FUNC","rule":"list_flatten","sum":15},{"parent":"FUNC","rule":"list_has","sum":6267},{"parent":"FUNC","rule":"list_has_items","sum":2},{"parent":"FUNC","rule":"list_head","sum":16},{"parent":"FUNC","rule":"list_length","sum":865},{"parent":"FUNC","rule":"list_map","sum":3},{"parent":"FUNC","rule":"list_max","sum":3},{"parent":"FUNC","rule":"list_min","sum":3},{"parent":"FUNC","rule":"list_not_null","sum":1},{"parent":"FUNC","rule":"list_sort","sum":112},{"parent":"FUNC","rule":"list_uniq","sum":1},{"parent":"FUNC","rule":"list_zip","sum":30},{"parent":"FUNC","rule":"listaggregate","sum":95},{"parent":"FUNC","rule":"listall","sum":13316},{"parent":"FUNC","rule":"listany","sum":15235},{"parent":"FUNC","rule":"listavg","sum":11828},{"parent":"FUNC","rule":"listcollect","sum":505},{"parent":"FUNC","rule":"listconcat","sum":19350},{"parent":"FUNC","rule":"listcreate","sum":10},{"parent":"FUNC","rule":"listenumerate","sum":2077},{"parent":"FUNC","rule":"listextend","sum":3861},{"parent":"FUNC","rule":"listextendstrict","sum":61},{"parent":"FUNC","rule":"listextract","sum":1821},{"parent":"FUNC","rule":"listfilter","sum":102084},{"parent":"FUNC","rule":"listflatmap","sum":7255},{"parent":"FUNC","rule":"listflatten","sum":22749},{"parent":"FUNC","rule":"listfold","sum":16},{"parent":"FUNC","rule":"listfold1map","sum":60},{"parent":"FUNC","rule":"listfromRange","sum":16},{"parent":"FUNC","rule":"listfromrange","sum":14075},{"parent":"FUNC","rule":"listfromtuple","sum":58},{"parent":"FUNC","rule":"listhas","sum":171993},{"parent":"FUNC","rule":"listhasItems","sum":34},{"parent":"FUNC","rule":"listhasitems","sum":10552},{"parent":"FUNC","rule":"listhead","sum":18543},{"parent":"FUNC","rule":"listindexof","sum":1199},{"parent":"FUNC","rule":"listlast","sum":3102},{"parent":"FUNC","rule":"listlength","sum":343429},{"parent":"FUNC","rule":"listmap","sum":517183},{"parent":"FUNC","rule":"listmax","sum":3946},{"parent":"FUNC","rule":"listmin","sum":2671},{"parent":"FUNC","rule":"listnotNull","sum":1},{"parent":"FUNC","rule":"listnotnull","sum":12913},{"parent":"FUNC","rule":"listreplicate","sum":49},{"parent":"FUNC","rule":"listreverse","sum":2241},{"parent":"FUNC","rule":"listskip","sum":1176},{"parent":"FUNC","rule":"listsort","sum":56470},{"parent":"FUNC","rule":"listsortDesc","sum":1},{"parent":"FUNC","rule":"listsortasc","sum":383},{"parent":"FUNC","rule":"listsortdesc","sum":3964},{"parent":"FUNC","rule":"listsum","sum":3414},{"parent":"FUNC","rule":"listtake","sum":16117},{"parent":"FUNC","rule":"listtop","sum":68},{"parent":"FUNC","rule":"listunionall","sum":8},{"parent":"FUNC","rule":"listuniq","sum":25707},{"parent":"FUNC","rule":"listuniqstable","sum":94},{"parent":"FUNC","rule":"listzip","sum":16670},{"parent":"FUNC","rule":"listzipALL","sum":2},{"parent":"FUNC","rule":"listzipAll","sum":15},{"parent":"FUNC","rule":"listzipall","sum":99},{"parent":"FUNC","rule":"log","sum":2},{"parent":"FUNC","rule":"logarithmicHistogram","sum":1},{"parent":"FUNC","rule":"logarithmichistogram","sum":6},{"parent":"FUNC","rule":"loghistogram","sum":1},{"parent":"FUNC","rule":"lower","sum":3},{"parent":"FUNC","rule":"mAX","sum":17},{"parent":"FUNC","rule":"mAX_BY","sum":132},{"parent":"FUNC","rule":"mIN","sum":2},{"parent":"FUNC","rule":"mIN_by","sum":10},{"parent":"FUNC","rule":"maX","sum":6},{"parent":"FUNC","rule":"maX_BY","sum":1},{"parent":"FUNC","rule":"map","sum":2},{"parent":"FUNC","rule":"max","sum":25162892},{"parent":"FUNC","rule":"maxBy","sum":1},{"parent":"FUNC","rule":"maxOf","sum":3545},{"parent":"FUNC","rule":"max_","sum":1},{"parent":"FUNC","rule":"max_BY","sum":2358},{"parent":"FUNC","rule":"max_By","sum":4552},{"parent":"FUNC","rule":"max_OF","sum":8},{"parent":"FUNC","rule":"max_Of","sum":29},{"parent":"FUNC","rule":"max_by","sum":28974444},{"parent":"FUNC","rule":"max_if","sum":3},{"parent":"FUNC","rule":"max_of","sum":1281844},{"parent":"FUNC","rule":"maxby","sum":4088},{"parent":"FUNC","rule":"maxof","sum":853},{"parent":"FUNC","rule":"md5int","sum":1},{"parent":"FUNC","rule":"median","sum":382448},{"parent":"FUNC","rule":"metric_exp","sum":1},{"parent":"FUNC","rule":"min","sum":10266491},{"parent":"FUNC","rule":"minOf","sum":2},{"parent":"FUNC","rule":"min_BY","sum":8618},{"parent":"FUNC","rule":"min_By","sum":6},{"parent":"FUNC","rule":"min_OF","sum":9},{"parent":"FUNC","rule":"min_Of","sum":344},{"parent":"FUNC","rule":"min_by","sum":2330757},{"parent":"FUNC","rule":"min_if","sum":10},{"parent":"FUNC","rule":"min_of","sum":577383},{"parent":"FUNC","rule":"minby","sum":1},{"parent":"FUNC","rule":"minof","sum":98},{"parent":"FUNC","rule":"mode","sum":117625},{"parent":"FUNC","rule":"multiIf","sum":2},{"parent":"FUNC","rule":"multi_aggregate_by","sum":117848},{"parent":"FUNC","rule":"naNVL","sum":16},{"parent":"FUNC","rule":"nanvl","sum":129280},{"parent":"FUNC","rule":"notEmpty","sum":2},{"parent":"FUNC","rule":"nothing","sum":12897},{"parent":"FUNC","rule":"now","sum":16},{"parent":"FUNC","rule":"nth_value","sum":17},{"parent":"FUNC","rule":"ntile","sum":343},{"parent":"FUNC","rule":"nvL","sum":62},{"parent":"FUNC","rule":"nvl","sum":14035630},{"parent":"FUNC","rule":"on","sum":1},{"parent":"FUNC","rule":"optionaltype","sum":161},{"parent":"FUNC","rule":"or","sum":3},{"parent":"FUNC","rule":"order_nr","sum":1},{"parent":"FUNC","rule":"p25","sum":1},{"parent":"FUNC","rule":"p75","sum":1},{"parent":"FUNC","rule":"pERCENTILE","sum":11},{"parent":"FUNC","rule":"parseFile","sum":155},{"parent":"FUNC","rule":"parseForErrors","sum":32},{"parent":"FUNC","rule":"parse_dt_formatted","sum":1},{"parent":"FUNC","rule":"parsefile","sum":11186},{"parent":"FUNC","rule":"percent_rank","sum":2210},{"parent":"FUNC","rule":"percentile","sum":3351868},{"parent":"FUNC","rule":"pgInt2","sum":2},{"parent":"FUNC","rule":"pgarray","sum":2},{"parent":"FUNC","rule":"pgbpchar","sum":2},{"parent":"FUNC","rule":"pgbytea","sum":6},{"parent":"FUNC","rule":"pgcast","sum":39},{"parent":"FUNC","rule":"pgchar","sum":2},{"parent":"FUNC","rule":"pgdate","sum":94},{"parent":"FUNC","rule":"pgfloat4","sum":5},{"parent":"FUNC","rule":"pgfloat8","sum":3},{"parent":"FUNC","rule":"pgint2","sum":9},{"parent":"FUNC","rule":"pginterval","sum":176},{"parent":"FUNC","rule":"pgjson","sum":10},{"parent":"FUNC","rule":"pgname","sum":4},{"parent":"FUNC","rule":"pgnumeric","sum":4},{"parent":"FUNC","rule":"pgoidvector","sum":1},{"parent":"FUNC","rule":"pgtext","sum":9},{"parent":"FUNC","rule":"pgtimestamp","sum":7},{"parent":"FUNC","rule":"pgtimestamptz","sum":4},{"parent":"FUNC","rule":"pickle","sum":501},{"parent":"FUNC","rule":"pow","sum":8},{"parent":"FUNC","rule":"power","sum":3},{"parent":"FUNC","rule":"print","sum":1},{"parent":"FUNC","rule":"quantile","sum":1},{"parent":"FUNC","rule":"quantileExact","sum":1},{"parent":"FUNC","rule":"rFIND","sum":2},{"parent":"FUNC","rule":"rand","sum":5},{"parent":"FUNC","rule":"random","sum":260560},{"parent":"FUNC","rule":"randomNumber","sum":10},{"parent":"FUNC","rule":"randomUuid","sum":153},{"parent":"FUNC","rule":"random_number","sum":11},{"parent":"FUNC","rule":"randomnumber","sum":479},{"parent":"FUNC","rule":"randomuuid","sum":36},{"parent":"FUNC","rule":"range","sum":96},{"parent":"FUNC","rule":"rank","sum":222154},{"parent":"FUNC","rule":"regex_full_match","sum":1},{"parent":"FUNC","rule":"regex_replace_first","sum":1},{"parent":"FUNC","rule":"regionIn","sum":2},{"parent":"FUNC","rule":"removeMember","sum":160},{"parent":"FUNC","rule":"removemember","sum":18},{"parent":"FUNC","rule":"removemembers","sum":77},{"parent":"FUNC","rule":"removetimezone","sum":5},{"parent":"FUNC","rule":"renamemembers","sum":4},{"parent":"FUNC","rule":"replace","sum":1},{"parent":"FUNC","rule":"replaceRegexpAll","sum":2},{"parent":"FUNC","rule":"rfind","sum":127953},{"parent":"FUNC","rule":"round","sum":27},{"parent":"FUNC","rule":"row_NUMBER","sum":5},{"parent":"FUNC","rule":"row_Number","sum":3},{"parent":"FUNC","rule":"row_number","sum":2182073},{"parent":"FUNC","rule":"rownumber","sum":392},{"parent":"FUNC","rule":"sUBSTRING","sum":3},{"parent":"FUNC","rule":"sUM","sum":445},{"parent":"FUNC","rule":"sUM_IF","sum":20},{"parent":"FUNC","rule":"sUm","sum":8},{"parent":"FUNC","rule":"sessionWindow","sum":4},{"parent":"FUNC","rule":"session_start","sum":3},{"parent":"FUNC","rule":"sessionwindow","sum":172},{"parent":"FUNC","rule":"setDifference","sum":59},{"parent":"FUNC","rule":"setIntersection","sum":13},{"parent":"FUNC","rule":"setIsDisjoint","sum":1},{"parent":"FUNC","rule":"setUnion","sum":172},{"parent":"FUNC","rule":"setbit","sum":20},{"parent":"FUNC","rule":"setdifference","sum":171},{"parent":"FUNC","rule":"setincludes","sum":20},{"parent":"FUNC","rule":"setintersection","sum":122},{"parent":"FUNC","rule":"setisdisjoint","sum":1052},{"parent":"FUNC","rule":"setsymmetricdifference","sum":204},{"parent":"FUNC","rule":"setunion","sum":1790},{"parent":"FUNC","rule":"sign","sum":1},{"parent":"FUNC","rule":"sin","sum":16},{"parent":"FUNC","rule":"sipHash64","sum":2},{"parent":"FUNC","rule":"size","sum":1},{"parent":"FUNC","rule":"somE","sum":2},{"parent":"FUNC","rule":"some","sum":20357950},{"parent":"FUNC","rule":"somr","sum":1},{"parent":"FUNC","rule":"splitByChar","sum":1},{"parent":"FUNC","rule":"splitByString","sum":6},{"parent":"FUNC","rule":"spreadmembers","sum":3},{"parent":"FUNC","rule":"sqrt","sum":11},{"parent":"FUNC","rule":"ssubstring","sum":2},{"parent":"FUNC","rule":"stablepickle","sum":30},{"parent":"FUNC","rule":"startsWith","sum":200060},{"parent":"FUNC","rule":"starts_with","sum":14},{"parent":"FUNC","rule":"startswith","sum":20547},{"parent":"FUNC","rule":"staticmap","sum":22},{"parent":"FUNC","rule":"staticzip","sum":1},{"parent":"FUNC","rule":"status$$name","sum":3},{"parent":"FUNC","rule":"std_dev","sum":4},{"parent":"FUNC","rule":"stddev","sum":619791},{"parent":"FUNC","rule":"stddevPop","sum":13},{"parent":"FUNC","rule":"stddev_pop","sum":108},{"parent":"FUNC","rule":"stddev_population","sum":88},{"parent":"FUNC","rule":"stddev_samp","sum":27},{"parent":"FUNC","rule":"stddev_sample","sum":887},{"parent":"FUNC","rule":"stddevpop","sum":19},{"parent":"FUNC","rule":"stddevsamp","sum":5},{"parent":"FUNC","rule":"str","sum":15},{"parent":"FUNC","rule":"strfdate","sum":164},{"parent":"FUNC","rule":"string","sum":77},{"parent":"FUNC","rule":"string_agg","sum":1},{"parent":"FUNC","rule":"string_split","sum":1},{"parent":"FUNC","rule":"string_to_array","sum":3},{"parent":"FUNC","rule":"string_to_features","sum":1},{"parent":"FUNC","rule":"structMembers","sum":7},{"parent":"FUNC","rule":"structUnion","sum":41},{"parent":"FUNC","rule":"structdifference","sum":2},{"parent":"FUNC","rule":"structunion","sum":7},{"parent":"FUNC","rule":"suM","sum":185},{"parent":"FUNC","rule":"suM_if","sum":16},{"parent":"FUNC","rule":"subDate","sum":1},{"parent":"FUNC","rule":"subSTRING","sum":1},{"parent":"FUNC","rule":"subString","sum":581},{"parent":"FUNC","rule":"subqueryMergeFor","sum":21},{"parent":"FUNC","rule":"subqueryUnionMergeFor","sum":4390},{"parent":"FUNC","rule":"subquerymergefor","sum":1944},{"parent":"FUNC","rule":"subsTRING","sum":2},{"parent":"FUNC","rule":"subsrting","sum":3},{"parent":"FUNC","rule":"substing","sum":2},{"parent":"FUNC","rule":"substr","sum":173},{"parent":"FUNC","rule":"substring","sum":16541675},{"parent":"FUNC","rule":"substringUTF8","sum":1},{"parent":"FUNC","rule":"substring_index","sum":1},{"parent":"FUNC","rule":"sum","sum":45408099},{"parent":"FUNC","rule":"sumIF","sum":84},{"parent":"FUNC","rule":"sumIf","sum":94459},{"parent":"FUNC","rule":"sum_","sum":356},{"parent":"FUNC","rule":"sum_IF","sum":19531},{"parent":"FUNC","rule":"sum_If","sum":13050},{"parent":"FUNC","rule":"sum_if","sum":4234406},{"parent":"FUNC","rule":"sum_range2","sum":47},{"parent":"FUNC","rule":"sum_recursive_range","sum":1},{"parent":"FUNC","rule":"suma","sum":1},{"parent":"FUNC","rule":"sumif","sum":7488},{"parent":"FUNC","rule":"summ","sum":10},{"parent":"FUNC","rule":"sunstring","sum":2},{"parent":"FUNC","rule":"susbstring","sum":1},{"parent":"FUNC","rule":"tableName","sum":43283},{"parent":"FUNC","rule":"tablePath","sum":1488},{"parent":"FUNC","rule":"tableRecordIndex","sum":19},{"parent":"FUNC","rule":"tableRow","sum":22906},{"parent":"FUNC","rule":"table_name","sum":2893},{"parent":"FUNC","rule":"table_path","sum":46},{"parent":"FUNC","rule":"table_row","sum":377},{"parent":"FUNC","rule":"tablename","sum":165832},{"parent":"FUNC","rule":"tablepath","sum":32965},{"parent":"FUNC","rule":"tablerecordindex","sum":111},{"parent":"FUNC","rule":"tablerow","sum":42768},{"parent":"FUNC","rule":"tablerows","sum":5},{"parent":"FUNC","rule":"testBit","sum":34},{"parent":"FUNC","rule":"testbit","sum":39091},{"parent":"FUNC","rule":"testid","sum":2},{"parent":"FUNC","rule":"timestamp","sum":9976},{"parent":"FUNC","rule":"timestamp64","sum":7},{"parent":"FUNC","rule":"timezone","sum":2},{"parent":"FUNC","rule":"toBytes","sum":25779},{"parent":"FUNC","rule":"toDate","sum":57},{"parent":"FUNC","rule":"toDate32","sum":10},{"parent":"FUNC","rule":"toDateTime","sum":21},{"parent":"FUNC","rule":"toDateTimeOrNull","sum":3},{"parent":"FUNC","rule":"toDayOfWeek","sum":2},{"parent":"FUNC","rule":"toDict","sum":96413},{"parent":"FUNC","rule":"toFloat32","sum":4},{"parent":"FUNC","rule":"toInt128","sum":3},{"parent":"FUNC","rule":"toIntervalMonth","sum":2},{"parent":"FUNC","rule":"toLastDayOfMonth","sum":1},{"parent":"FUNC","rule":"toMonth","sum":1},{"parent":"FUNC","rule":"toMultiDict","sum":264},{"parent":"FUNC","rule":"toQuarter","sum":1},{"parent":"FUNC","rule":"toSet","sum":437979},{"parent":"FUNC","rule":"toStartOfMonth","sum":15},{"parent":"FUNC","rule":"toStartOfQuarter","sum":1},{"parent":"FUNC","rule":"toStartOfWeek","sum":9},{"parent":"FUNC","rule":"toString","sum":46},{"parent":"FUNC","rule":"toUInt64","sum":5},{"parent":"FUNC","rule":"toUnixTimestamp","sum":2},{"parent":"FUNC","rule":"toUnixTimestamp64Micro","sum":2},{"parent":"FUNC","rule":"toYear","sum":9},{"parent":"FUNC","rule":"to_bytes","sum":36},{"parent":"FUNC","rule":"to_char","sum":2},{"parent":"FUNC","rule":"to_date","sum":4},{"parent":"FUNC","rule":"to_dict","sum":65},{"parent":"FUNC","rule":"tobytes","sum":154},{"parent":"FUNC","rule":"today","sum":1},{"parent":"FUNC","rule":"todict","sum":100936},{"parent":"FUNC","rule":"tomultidict","sum":1164},{"parent":"FUNC","rule":"top","sum":54498},{"parent":"FUNC","rule":"topFreq","sum":95},{"parent":"FUNC","rule":"top_BY","sum":1},{"parent":"FUNC","rule":"top_by","sum":115758},{"parent":"FUNC","rule":"top_freq","sum":108},{"parent":"FUNC","rule":"topfreq","sum":23295},{"parent":"FUNC","rule":"topg","sum":2},{"parent":"FUNC","rule":"toset","sum":38801},{"parent":"FUNC","rule":"trunc","sum":13},{"parent":"FUNC","rule":"truncate","sum":2},{"parent":"FUNC","rule":"tryMember","sum":527},{"parent":"FUNC","rule":"trymember","sum":10140},{"parent":"FUNC","rule":"tupleElement","sum":2},{"parent":"FUNC","rule":"typeOf","sum":38},{"parent":"FUNC","rule":"typeof","sum":407},{"parent":"FUNC","rule":"tzdate","sum":8},{"parent":"FUNC","rule":"tzdate32","sum":7},{"parent":"FUNC","rule":"tzdatetime","sum":44},{"parent":"FUNC","rule":"tzdatetime64","sum":7},{"parent":"FUNC","rule":"tztimestamp","sum":35},{"parent":"FUNC","rule":"tztimestamp64","sum":7},{"parent":"FUNC","rule":"uNWRAP","sum":112},{"parent":"FUNC","rule":"udaf","sum":17583},{"parent":"FUNC","rule":"uint32","sum":13570},{"parent":"FUNC","rule":"uint64","sum":31},{"parent":"FUNC","rule":"uint8","sum":2},{"parent":"FUNC","rule":"unWRap","sum":3},{"parent":"FUNC","rule":"unWrap","sum":5},{"parent":"FUNC","rule":"uniq","sum":9},{"parent":"FUNC","rule":"uniqExact","sum":10},{"parent":"FUNC","rule":"unique","sum":1},{"parent":"FUNC","rule":"unique_pairs","sum":1},{"parent":"FUNC","rule":"unnest","sum":3},{"parent":"FUNC","rule":"untag","sum":1327},{"parent":"FUNC","rule":"unwrap","sum":27087950},{"parent":"FUNC","rule":"unwraped","sum":1},{"parent":"FUNC","rule":"upper","sum":2},{"parent":"FUNC","rule":"using","sum":12},{"parent":"FUNC","rule":"utc_action_created_dttm","sum":1},{"parent":"FUNC","rule":"utf8","sum":2038},{"parent":"FUNC","rule":"uuid","sum":25},{"parent":"FUNC","rule":"values","sum":6},{"parent":"FUNC","rule":"varPop","sum":77},{"parent":"FUNC","rule":"varSamp","sum":85},{"parent":"FUNC","rule":"var_samp","sum":43},{"parent":"FUNC","rule":"variance","sum":66655},{"parent":"FUNC","rule":"variance_population","sum":4},{"parent":"FUNC","rule":"variance_sample","sum":524},{"parent":"FUNC","rule":"varpop","sum":19},{"parent":"FUNC","rule":"version","sum":19},{"parent":"FUNC","rule":"vl","sum":2},{"parent":"FUNC","rule":"void","sum":1},{"parent":"FUNC","rule":"way","sum":42003},{"parent":"FUNC","rule":"weakField","sum":1077},{"parent":"FUNC","rule":"weakfield","sum":981176},{"parent":"FUNC","rule":"windowFunnel","sum":1},{"parent":"FUNC","rule":"worked_rules","sum":3},{"parent":"FUNC","rule":"wrap","sum":1},{"parent":"FUNC","rule":"yesterday","sum":4},{"parent":"FUNC","rule":"yson","sum":42},{"parent":"FUNC","rule":"ytListTables","sum":1},{"parent":"INSERT_HINT","rule":"COLUMN_GROUPS","sum":74},{"parent":"INSERT_HINT","rule":"COMPRESSION_CODEC","sum":855557},{"parent":"INSERT_HINT","rule":"ERASURE_CODEC","sum":67540},{"parent":"INSERT_HINT","rule":"EXPIRATION","sum":7127820},{"parent":"INSERT_HINT","rule":"Expiration","sum":175},{"parent":"INSERT_HINT","rule":"KEEPMETA","sum":10},{"parent":"INSERT_HINT","rule":"KEEP_META","sum":113218},{"parent":"INSERT_HINT","rule":"MODE","sum":2},{"parent":"INSERT_HINT","rule":"MONOTONIC_KEYS","sum":429636},{"parent":"INSERT_HINT","rule":"PRIMARY_MEDIUM","sum":88663},{"parent":"INSERT_HINT","rule":"REPLICATION_FACTOR","sum":7397},{"parent":"INSERT_HINT","rule":"SECURITY_TAGS","sum":4776},{"parent":"INSERT_HINT","rule":"TRUNCATE","sum":111356671},{"parent":"INSERT_HINT","rule":"TRUNCATe","sum":315},{"parent":"INSERT_HINT","rule":"TRUNCAtE","sum":3},{"parent":"INSERT_HINT","rule":"TRUNCAte","sum":11},{"parent":"INSERT_HINT","rule":"TRUNCaTE","sum":2},{"parent":"INSERT_HINT","rule":"TRUNCate","sum":10},{"parent":"INSERT_HINT","rule":"TRUNcATE","sum":6},{"parent":"INSERT_HINT","rule":"TRUnCATE","sum":1},{"parent":"INSERT_HINT","rule":"TRUncATE","sum":318},{"parent":"INSERT_HINT","rule":"TRUncate","sum":10},{"parent":"INSERT_HINT","rule":"TRuNCATE","sum":2},{"parent":"INSERT_HINT","rule":"TRuncaTE","sum":1},{"parent":"INSERT_HINT","rule":"TRuncate","sum":50},{"parent":"INSERT_HINT","rule":"TrUNCATE","sum":1},{"parent":"INSERT_HINT","rule":"Truncate","sum":4648},{"parent":"INSERT_HINT","rule":"USER_ATTRS","sum":2065234},{"parent":"INSERT_HINT","rule":"XLOCK","sum":1},{"parent":"INSERT_HINT","rule":"column_groups","sum":6440},{"parent":"INSERT_HINT","rule":"compression_codec","sum":2014},{"parent":"INSERT_HINT","rule":"erasure_codec","sum":3154},{"parent":"INSERT_HINT","rule":"expiration","sum":336077},{"parent":"INSERT_HINT","rule":"keep_meta","sum":134655},{"parent":"INSERT_HINT","rule":"monotonic_keys","sum":15},{"parent":"INSERT_HINT","rule":"primary_medium","sum":11528},{"parent":"INSERT_HINT","rule":"replication_factor","sum":1},{"parent":"INSERT_HINT","rule":"tRUNCATE","sum":1},{"parent":"INSERT_HINT","rule":"tRUNCAte","sum":1},{"parent":"INSERT_HINT","rule":"trUNCATE","sum":19},{"parent":"INSERT_HINT","rule":"truNCATE","sum":2},{"parent":"INSERT_HINT","rule":"trunCATE","sum":7},{"parent":"INSERT_HINT","rule":"truncate","sum":30986213},{"parent":"INSERT_HINT","rule":"user_attr","sum":1},{"parent":"INSERT_HINT","rule":"user_attrs","sum":66589},{"parent":"MODULE","rule":"Compress","sum":84351},{"parent":"MODULE","rule":"DATETIME","sum":1128},{"parent":"MODULE","rule":"DATEtime","sum":2},{"parent":"MODULE","rule":"DAteTime","sum":3233},{"parent":"MODULE","rule":"DAtetime","sum":7},{"parent":"MODULE","rule":"DIgest","sum":2},{"parent":"MODULE","rule":"DaTETIME","sum":334},{"parent":"MODULE","rule":"DaTeTime","sum":84},{"parent":"MODULE","rule":"DateTIME","sum":723},{"parent":"MODULE","rule":"DateTIme","sum":4369},{"parent":"MODULE","rule":"DateTime","sum":275534815},{"parent":"MODULE","rule":"DatetIme","sum":367},{"parent":"MODULE","rule":"Datetime","sum":7107067},{"parent":"MODULE","rule":"Decompress","sum":24698},{"parent":"MODULE","rule":"Digest","sum":7713118},{"parent":"MODULE","rule":"HyperScan","sum":2302},{"parent":"MODULE","rule":"Hyperscan","sum":389661},{"parent":"MODULE","rule":"Ip","sum":1348011},{"parent":"MODULE","rule":"JSON","sum":26908},{"parent":"MODULE","rule":"JSon","sum":2},{"parent":"MODULE","rule":"Json","sum":1012853},{"parent":"MODULE","rule":"MATH","sum":196},{"parent":"MODULE","rule":"Math","sum":44904674},{"parent":"MODULE","rule":"PG","sum":199},{"parent":"MODULE","rule":"PIRE","sum":29},{"parent":"MODULE","rule":"Pg","sum":4885},{"parent":"MODULE","rule":"PgAgg","sum":2},{"parent":"MODULE","rule":"PgProc","sum":2},{"parent":"MODULE","rule":"Pire","sum":1913457},{"parent":"MODULE","rule":"Protobuf","sum":270337},{"parent":"MODULE","rule":"RE2","sum":5148},{"parent":"MODULE","rule":"Re2","sum":12193295},{"parent":"MODULE","rule":"STRING","sum":6},{"parent":"MODULE","rule":"String","sum":95484074},{"parent":"MODULE","rule":"TryDecompress","sum":4761},{"parent":"MODULE","rule":"URL","sum":7},{"parent":"MODULE","rule":"Unicode","sum":4914960},{"parent":"MODULE","rule":"Url","sum":23538071},{"parent":"MODULE","rule":"YSON","sum":205},{"parent":"MODULE","rule":"YSon","sum":23},{"parent":"MODULE","rule":"Yson","sum":395534558},{"parent":"MODULE","rule":"dateTime","sum":471},{"parent":"MODULE","rule":"datetime","sum":14194},{"parent":"MODULE","rule":"digest","sum":15},{"parent":"MODULE","rule":"json","sum":8},{"parent":"MODULE","rule":"math","sum":68},{"parent":"MODULE","rule":"pg","sum":1796},{"parent":"MODULE","rule":"pire","sum":36},{"parent":"MODULE","rule":"re2","sum":3215},{"parent":"MODULE","rule":"string","sum":85},{"parent":"MODULE","rule":"url","sum":5},{"parent":"MODULE","rule":"ySoN","sum":1},{"parent":"MODULE","rule":"yson","sum":63},{"parent":"MODULE_FUNC","rule":"Compress::BZip2","sum":2},{"parent":"MODULE_FUNC","rule":"Compress::BlockCodec","sum":6},{"parent":"MODULE_FUNC","rule":"Compress::Brotli","sum":158},{"parent":"MODULE_FUNC","rule":"Compress::Gzip","sum":83368},{"parent":"MODULE_FUNC","rule":"Compress::Lz4","sum":623},{"parent":"MODULE_FUNC","rule":"Compress::Lzma","sum":7},{"parent":"MODULE_FUNC","rule":"Compress::Snappy","sum":7},{"parent":"MODULE_FUNC","rule":"Compress::Zlib","sum":32},{"parent":"MODULE_FUNC","rule":"Compress::Zstd","sum":148},{"parent":"MODULE_FUNC","rule":"DATETIME::Format","sum":10},{"parent":"MODULE_FUNC","rule":"DATETIME::FromMilliseconds","sum":49},{"parent":"MODULE_FUNC","rule":"DATETIME::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DATETIME::GetYear","sum":18},{"parent":"MODULE_FUNC","rule":"DATETIME::MakeDate","sum":742},{"parent":"MODULE_FUNC","rule":"DATETIME::MakeDatetime","sum":285},{"parent":"MODULE_FUNC","rule":"DATETIME::Parse","sum":9},{"parent":"MODULE_FUNC","rule":"DATETIME::StartOfWeek","sum":14},{"parent":"MODULE_FUNC","rule":"DATEtime::GetMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DATEtime::GetYear","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::GetDayOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::MakeDate","sum":584},{"parent":"MODULE_FUNC","rule":"DAteTime::Parse","sum":150},{"parent":"MODULE_FUNC","rule":"DAteTime::StartOfMonth","sum":2488},{"parent":"MODULE_FUNC","rule":"DAteTime::StartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::ToDays","sum":8},{"parent":"MODULE_FUNC","rule":"DAtetime::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DAtetime::MakeDatetime","sum":2},{"parent":"MODULE_FUNC","rule":"DAtetime::ToStartOfWeek","sum":4},{"parent":"MODULE_FUNC","rule":"DIgest::SipHash","sum":2},{"parent":"MODULE_FUNC","rule":"DaTETIME::StartOfWeek","sum":334},{"parent":"MODULE_FUNC","rule":"DaTeTime::GetMonth","sum":4},{"parent":"MODULE_FUNC","rule":"DaTeTime::GetYear","sum":4},{"parent":"MODULE_FUNC","rule":"DaTeTime::IntervalFromDays","sum":1},{"parent":"MODULE_FUNC","rule":"DaTeTime::MakeDate","sum":32},{"parent":"MODULE_FUNC","rule":"DaTeTime::ShiftMonths","sum":42},{"parent":"MODULE_FUNC","rule":"DaTeTime::StartOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIME::IntervalFromDays","sum":723},{"parent":"MODULE_FUNC","rule":"DateTIme::EndOfMonth","sum":3},{"parent":"MODULE_FUNC","rule":"DateTIme::Format","sum":11},{"parent":"MODULE_FUNC","rule":"DateTIme::FromMicroseconds","sum":11},{"parent":"MODULE_FUNC","rule":"DateTIme::FromSeconds","sum":64},{"parent":"MODULE_FUNC","rule":"DateTIme::GetDayOfWeek","sum":44},{"parent":"MODULE_FUNC","rule":"DateTIme::GetHour","sum":2},{"parent":"MODULE_FUNC","rule":"DateTIme::GetMinute","sum":38},{"parent":"MODULE_FUNC","rule":"DateTIme::GetYear","sum":71},{"parent":"MODULE_FUNC","rule":"DateTIme::IntervalFromDays","sum":46},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeDate","sum":3622},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeDatetime","sum":284},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeTimestamp","sum":7},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeTzTimestamp","sum":4},{"parent":"MODULE_FUNC","rule":"DateTIme::Parse","sum":2},{"parent":"MODULE_FUNC","rule":"DateTIme::ParseIso8601","sum":2},{"parent":"MODULE_FUNC","rule":"DateTIme::ShiftMonths","sum":6},{"parent":"MODULE_FUNC","rule":"DateTIme::StartOfMonth","sum":135},{"parent":"MODULE_FUNC","rule":"DateTIme::StartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIme::ToDays","sum":13},{"parent":"MODULE_FUNC","rule":"DateTIme::ToHours","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIme::ToMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIme::ToSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::AddTimezone","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Convert","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::CurrentDate","sum":5},{"parent":"MODULE_FUNC","rule":"DateTime::CurrentDateTimeUTC","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::CurrentUtcDate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Date","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::DateTime","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::DatetimeStartOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::DayOfWeek","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::Days","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::DiffMinutes","sum":8},{"parent":"MODULE_FUNC","rule":"DateTime::DiffMonths","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Difference","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::EndOf","sum":28},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfDay","sum":418},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfMonth","sum":39075},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfQuarter","sum":306},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfWeek","sum":615},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfYear","sum":145},{"parent":"MODULE_FUNC","rule":"DateTime::EndofMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::EndtOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ExtractHour","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::FROMMilliseconds","sum":14},{"parent":"MODULE_FUNC","rule":"DateTime::FROMSeconds","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Format","sum":39855318},{"parent":"MODULE_FUNC","rule":"DateTime::FormatTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::FromDays","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroSeconds","sum":240},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds","sum":4686487},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds64","sum":126},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliSeconds","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds","sum":9219972},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds64","sum":997},{"parent":"MODULE_FUNC","rule":"DateTime::FromSecond","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds","sum":15195569},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds64","sum":985},{"parent":"MODULE_FUNC","rule":"DateTime::FromString","sum":368},{"parent":"MODULE_FUNC","rule":"DateTime::FromTimeZone","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::Fromat","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetDay","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfMonth","sum":597594},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeek","sum":637048},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeekName","sum":126013},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfYear","sum":44540},{"parent":"MODULE_FUNC","rule":"DateTime::GetHour","sum":1454427},{"parent":"MODULE_FUNC","rule":"DateTime::GetIntervalLength","sum":12},{"parent":"MODULE_FUNC","rule":"DateTime::GetLastDayOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetMicrosecondOfSecond","sum":1248},{"parent":"MODULE_FUNC","rule":"DateTime::GetMillisecondOfSecond","sum":31},{"parent":"MODULE_FUNC","rule":"DateTime::GetMinute","sum":288786},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonth","sum":705134},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthName","sum":38934},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthOfYear","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetSecond","sum":85926},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneId","sum":104},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneName","sum":520},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeek","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYear","sum":504483},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYearIso8601","sum":34508},{"parent":"MODULE_FUNC","rule":"DateTime::GetYEAR","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetYear","sum":786911},{"parent":"MODULE_FUNC","rule":"DateTime::Getmonth","sum":16},{"parent":"MODULE_FUNC","rule":"DateTime::Interval","sum":33},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromDays","sum":2220},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromHours","sum":4358},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMicroseconds","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMilliseconds","sum":8},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMinutes","sum":193},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromSeconds","sum":133},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFROMDays","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFrom","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromDays","sum":15024513},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHDays","sum":28},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHours","sum":8962513},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMicroseconds","sum":77727},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMilliseconds","sum":516031},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinute","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinutes","sum":4276219},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonth","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonths","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromSeconds","sum":934655},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromYears","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalfromDays","sum":29},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalfromHours","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::LastDayOfMonth","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::MakeData","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDate","sum":23176904},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDate32","sum":73},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDateTime","sum":273},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime","sum":36661736},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime64","sum":114},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp","sum":7841906},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp64","sum":295},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDate","sum":262565},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDate32","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDateTime","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime","sum":3126666},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp","sum":153628},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp64","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Makedate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Makedatetime","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::MilliSeconds","sum":156},{"parent":"MODULE_FUNC","rule":"DateTime::NOW","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::Now","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Parce","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Parse","sum":23548906},{"parent":"MODULE_FUNC","rule":"DateTime::Parse64","sum":13},{"parent":"MODULE_FUNC","rule":"DateTime::Parse8601","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ParseDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseDateTimeBestEffort","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::ParseFromString","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseHttp","sum":26993},{"parent":"MODULE_FUNC","rule":"DateTime::ParseIso","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseIso8601","sum":18557078},{"parent":"MODULE_FUNC","rule":"DateTime::ParseRfc822","sum":1861},{"parent":"MODULE_FUNC","rule":"DateTime::ParseX509","sum":245},{"parent":"MODULE_FUNC","rule":"DateTime::STartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Shift","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftDay","sum":51},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftDays","sum":191},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonth","sum":11},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonths","sum":3307661},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftQuarters","sum":389086},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeek","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeeks","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftYears","sum":673368},{"parent":"MODULE_FUNC","rule":"DateTime::Split","sum":699782},{"parent":"MODULE_FUNC","rule":"DateTime::StartOf","sum":2340429},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfDay","sum":2654510},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfHour","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMohth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMonth","sum":4159745},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfQuarter","sum":555462},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfWeek","sum":2076212},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfYear","sum":943983},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfmonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfweek","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::TimeOfDay","sum":66946},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMicroSeconds","sum":364},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMilliSeconds","sum":2503},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromSeconds","sum":391},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromString","sum":423},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfMonth","sum":820},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfWeek","sum":398},{"parent":"MODULE_FUNC","rule":"DateTime::To","sum":5},{"parent":"MODULE_FUNC","rule":"DateTime::ToDate","sum":1430},{"parent":"MODULE_FUNC","rule":"DateTime::ToDateTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::ToDays","sum":3470339},{"parent":"MODULE_FUNC","rule":"DateTime::ToHours","sum":1320622},{"parent":"MODULE_FUNC","rule":"DateTime::ToIsoFormat","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMicroseconds","sum":2224035},{"parent":"MODULE_FUNC","rule":"DateTime::ToMilliseconds","sum":5310594},{"parent":"MODULE_FUNC","rule":"DateTime::ToMinutes","sum":861212},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonths","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds","sum":23418049},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Today","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Toseconds","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Trunc","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Update","sum":3591013},{"parent":"MODULE_FUNC","rule":"DateTime::format","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::fromSeconds","sum":15},{"parent":"MODULE_FUNC","rule":"DateTime::parse","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::parseiso8601","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::toDate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::toMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::toSeconds","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::toStartOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::todate","sum":1},{"parent":"MODULE_FUNC","rule":"DatetIme::IntervalFromDays","sum":367},{"parent":"MODULE_FUNC","rule":"Datetime::CurrentDate","sum":2},{"parent":"MODULE_FUNC","rule":"Datetime::CurrentUtcDatetime","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::DaysInMonth","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::EndOfMonth","sum":195},{"parent":"MODULE_FUNC","rule":"Datetime::EndOfWeek","sum":71},{"parent":"MODULE_FUNC","rule":"Datetime::Format","sum":366153},{"parent":"MODULE_FUNC","rule":"Datetime::FromMicroseconds","sum":36341},{"parent":"MODULE_FUNC","rule":"Datetime::FromMilliseconds","sum":789662},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds","sum":567592},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds64","sum":24},{"parent":"MODULE_FUNC","rule":"Datetime::GetDay","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfMonth","sum":709},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeek","sum":12423},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeekName","sum":838},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfYear","sum":59},{"parent":"MODULE_FUNC","rule":"Datetime::GetHour","sum":14707},{"parent":"MODULE_FUNC","rule":"Datetime::GetMinute","sum":13778},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonth","sum":1037},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonthName","sum":345},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYear","sum":2705},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYearIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"Datetime::GetYear","sum":2735},{"parent":"MODULE_FUNC","rule":"Datetime::Interval","sum":9},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFROMDays","sum":8},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromDays","sum":372724},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromHours","sum":266318},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMicroseconds","sum":194},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMilliseconds","sum":91},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMinutes","sum":50015},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromSeconds","sum":9639},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate","sum":679780},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate32","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime","sum":921448},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTimestamp","sum":416088},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDate","sum":2312},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDatetime","sum":24016},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzTimestamp","sum":33325},{"parent":"MODULE_FUNC","rule":"Datetime::Makedate","sum":37},{"parent":"MODULE_FUNC","rule":"Datetime::Parse","sum":138318},{"parent":"MODULE_FUNC","rule":"Datetime::ParseIso8601","sum":258024},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftMonths","sum":25923},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftQuarters","sum":554},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftYears","sum":318},{"parent":"MODULE_FUNC","rule":"Datetime::Split","sum":207},{"parent":"MODULE_FUNC","rule":"Datetime::StarOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::StartOf","sum":64225},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfDay","sum":23114},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfMonth","sum":74651},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfQuarter","sum":4402},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfWeek","sum":23006},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfYear","sum":11664},{"parent":"MODULE_FUNC","rule":"Datetime::TimeOfDay","sum":125},{"parent":"MODULE_FUNC","rule":"Datetime::ToDatetime","sum":12},{"parent":"MODULE_FUNC","rule":"Datetime::ToDays","sum":141728},{"parent":"MODULE_FUNC","rule":"Datetime::ToHours","sum":22949},{"parent":"MODULE_FUNC","rule":"Datetime::ToMicroseconds","sum":585},{"parent":"MODULE_FUNC","rule":"Datetime::ToMilliseconds","sum":121727},{"parent":"MODULE_FUNC","rule":"Datetime::ToMinutes","sum":45248},{"parent":"MODULE_FUNC","rule":"Datetime::ToSeconds","sum":1535357},{"parent":"MODULE_FUNC","rule":"Datetime::Update","sum":29536},{"parent":"MODULE_FUNC","rule":"Datetime::split","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::startOfmonth","sum":2},{"parent":"MODULE_FUNC","rule":"Decompress::BZip2","sum":525},{"parent":"MODULE_FUNC","rule":"Decompress::Brotli","sum":7863},{"parent":"MODULE_FUNC","rule":"Decompress::Gzip","sum":3914},{"parent":"MODULE_FUNC","rule":"Decompress::Lz4","sum":902},{"parent":"MODULE_FUNC","rule":"Decompress::Snappy","sum":461},{"parent":"MODULE_FUNC","rule":"Decompress::Zlib","sum":11002},{"parent":"MODULE_FUNC","rule":"Decompress::Zstd","sum":31},{"parent":"MODULE_FUNC","rule":"Digest::Argon2","sum":48524},{"parent":"MODULE_FUNC","rule":"Digest::Blake2B","sum":4530},{"parent":"MODULE_FUNC","rule":"Digest::CityHash","sum":1226103},{"parent":"MODULE_FUNC","rule":"Digest::CityHash128","sum":18003},{"parent":"MODULE_FUNC","rule":"Digest::Crc32c","sum":77270},{"parent":"MODULE_FUNC","rule":"Digest::Crc64","sum":140659},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint","sum":70089},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint128","sum":26},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint2","sum":166688},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint32","sum":208},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint64","sum":1051883},{"parent":"MODULE_FUNC","rule":"Digest::Fnv32","sum":1747},{"parent":"MODULE_FUNC","rule":"Digest::Fnv64","sum":260976},{"parent":"MODULE_FUNC","rule":"Digest::IntHash64","sum":18246},{"parent":"MODULE_FUNC","rule":"Digest::MD5Hex","sum":6},{"parent":"MODULE_FUNC","rule":"Digest::Md5","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::Md5HalfMix","sum":427858},{"parent":"MODULE_FUNC","rule":"Digest::Md5Hex","sum":568663},{"parent":"MODULE_FUNC","rule":"Digest::Md5Raw","sum":15705},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash","sum":2423211},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A","sum":2503},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A32","sum":837},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash32","sum":256178},{"parent":"MODULE_FUNC","rule":"Digest::MurMurhash","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::NimericHash","sum":3},{"parent":"MODULE_FUNC","rule":"Digest::NumericHash","sum":275478},{"parent":"MODULE_FUNC","rule":"Digest::Sha1","sum":42539},{"parent":"MODULE_FUNC","rule":"Digest::Sha256","sum":399849},{"parent":"MODULE_FUNC","rule":"Digest::SipHash","sum":132502},{"parent":"MODULE_FUNC","rule":"Digest::SuperFastHash","sum":34987},{"parent":"MODULE_FUNC","rule":"Digest::XXH3","sum":47821},{"parent":"MODULE_FUNC","rule":"Digest::XXH3_128","sum":19},{"parent":"MODULE_FUNC","rule":"Digest::murmurhash","sum":3},{"parent":"MODULE_FUNC","rule":"HyperScan::BacktrackingGrep","sum":1},{"parent":"MODULE_FUNC","rule":"HyperScan::Grep","sum":2295},{"parent":"MODULE_FUNC","rule":"HyperScan::Match","sum":6},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingGrep","sum":48625},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingMatch","sum":128},{"parent":"MODULE_FUNC","rule":"Hyperscan::Capture","sum":5607},{"parent":"MODULE_FUNC","rule":"Hyperscan::Grep","sum":144904},{"parent":"MODULE_FUNC","rule":"Hyperscan::Match","sum":52758},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiGrep","sum":64},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiMatch","sum":40583},{"parent":"MODULE_FUNC","rule":"Hyperscan::Replace","sum":96992},{"parent":"MODULE_FUNC","rule":"Ip::ConvertToIPv6","sum":44980},{"parent":"MODULE_FUNC","rule":"Ip::FromString","sum":391561},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnet","sum":135463},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnetByMask","sum":4},{"parent":"MODULE_FUNC","rule":"Ip::IsEmbeddedIPv4","sum":6951},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv4","sum":136021},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv6","sum":118459},{"parent":"MODULE_FUNC","rule":"Ip::SubnetFromString","sum":549},{"parent":"MODULE_FUNC","rule":"Ip::SubnetMatch","sum":502},{"parent":"MODULE_FUNC","rule":"Ip::ToFixedIPv6String","sum":3818},{"parent":"MODULE_FUNC","rule":"Ip::ToString","sum":509703},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToDouble","sum":19612},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToInt64","sum":3261},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToList","sum":15},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToString","sum":133},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToStringList","sum":4},{"parent":"MODULE_FUNC","rule":"JSON::From","sum":5},{"parent":"MODULE_FUNC","rule":"JSON::LookupBool","sum":5},{"parent":"MODULE_FUNC","rule":"JSON::LookupDouble","sum":10},{"parent":"MODULE_FUNC","rule":"JSON::LookupInt64","sum":8},{"parent":"MODULE_FUNC","rule":"JSON::LookupString","sum":255},{"parent":"MODULE_FUNC","rule":"JSON::PARSE","sum":2},{"parent":"MODULE_FUNC","rule":"JSON::Parse","sum":3598},{"parent":"MODULE_FUNC","rule":"JSon::From","sum":2},{"parent":"MODULE_FUNC","rule":"Json::Attributes","sum":2},{"parent":"MODULE_FUNC","rule":"Json::Contains","sum":1},{"parent":"MODULE_FUNC","rule":"Json::ConvertToBool","sum":5},{"parent":"MODULE_FUNC","rule":"Json::ConvertToDict","sum":114},{"parent":"MODULE_FUNC","rule":"Json::ConvertToDouble","sum":1},{"parent":"MODULE_FUNC","rule":"Json::ConvertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"Json::ConvertToList","sum":108},{"parent":"MODULE_FUNC","rule":"Json::ConvertToString","sum":161},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringDict","sum":5},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringList","sum":19},{"parent":"MODULE_FUNC","rule":"Json::From","sum":3925},{"parent":"MODULE_FUNC","rule":"Json::FromString","sum":16},{"parent":"MODULE_FUNC","rule":"Json::GetField","sum":21},{"parent":"MODULE_FUNC","rule":"Json::GetHash","sum":1},{"parent":"MODULE_FUNC","rule":"Json::GetLength","sum":19},{"parent":"MODULE_FUNC","rule":"Json::Lookup","sum":1},{"parent":"MODULE_FUNC","rule":"Json::LookupInt64","sum":821061},{"parent":"MODULE_FUNC","rule":"Json::LookupString","sum":53},{"parent":"MODULE_FUNC","rule":"Json::Options","sum":852},{"parent":"MODULE_FUNC","rule":"Json::Parse","sum":182633},{"parent":"MODULE_FUNC","rule":"Json::ParseJson","sum":213},{"parent":"MODULE_FUNC","rule":"Json::Serialize","sum":1557},{"parent":"MODULE_FUNC","rule":"Json::SerializeJson","sum":922},{"parent":"MODULE_FUNC","rule":"Json::SerializePretty","sum":1124},{"parent":"MODULE_FUNC","rule":"Json::SerializeText","sum":3},{"parent":"MODULE_FUNC","rule":"Json::YPath","sum":20},{"parent":"MODULE_FUNC","rule":"Json::YPathDict","sum":14},{"parent":"MODULE_FUNC","rule":"Json::YPathString","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::ABS","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::Cos","sum":5},{"parent":"MODULE_FUNC","rule":"MATH::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::Log","sum":5},{"parent":"MODULE_FUNC","rule":"MATH::NearbyINT","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::NearbyInt","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::ROUND","sum":181},{"parent":"MODULE_FUNC","rule":"MATH::Round","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Aabs","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Abs","sum":477545},{"parent":"MODULE_FUNC","rule":"Math::Acos","sum":13419},{"parent":"MODULE_FUNC","rule":"Math::Asin","sum":11346},{"parent":"MODULE_FUNC","rule":"Math::Asinh","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Atan","sum":7921},{"parent":"MODULE_FUNC","rule":"Math::Atan2","sum":13117},{"parent":"MODULE_FUNC","rule":"Math::Cbrt","sum":494},{"parent":"MODULE_FUNC","rule":"Math::Ceil","sum":1246311},{"parent":"MODULE_FUNC","rule":"Math::Cos","sum":97796},{"parent":"MODULE_FUNC","rule":"Math::Cosh","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Crbt","sum":1},{"parent":"MODULE_FUNC","rule":"Math::E","sum":9612},{"parent":"MODULE_FUNC","rule":"Math::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Eps","sum":179},{"parent":"MODULE_FUNC","rule":"Math::Erf","sum":2573},{"parent":"MODULE_FUNC","rule":"Math::ErfInv","sum":42},{"parent":"MODULE_FUNC","rule":"Math::ErfcInv","sum":6},{"parent":"MODULE_FUNC","rule":"Math::Exp","sum":557302},{"parent":"MODULE_FUNC","rule":"Math::Exp2","sum":1998},{"parent":"MODULE_FUNC","rule":"Math::Fabs","sum":144438},{"parent":"MODULE_FUNC","rule":"Math::Floor","sum":327974},{"parent":"MODULE_FUNC","rule":"Math::Flor","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Fmod","sum":9},{"parent":"MODULE_FUNC","rule":"Math::FuzzyEquals","sum":19564},{"parent":"MODULE_FUNC","rule":"Math::Hypot","sum":18758},{"parent":"MODULE_FUNC","rule":"Math::IsFinite","sum":186970},{"parent":"MODULE_FUNC","rule":"Math::IsInf","sum":77157},{"parent":"MODULE_FUNC","rule":"Math::IsNaN","sum":250333},{"parent":"MODULE_FUNC","rule":"Math::IsNan","sum":6},{"parent":"MODULE_FUNC","rule":"Math::Ldexp","sum":47},{"parent":"MODULE_FUNC","rule":"Math::Lgamma","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Log","sum":822848},{"parent":"MODULE_FUNC","rule":"Math::Log10","sum":153514},{"parent":"MODULE_FUNC","rule":"Math::Log2","sum":197742},{"parent":"MODULE_FUNC","rule":"Math::Max","sum":3},{"parent":"MODULE_FUNC","rule":"Math::Min","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Mod","sum":66547},{"parent":"MODULE_FUNC","rule":"Math::NearbyInt","sum":429031},{"parent":"MODULE_FUNC","rule":"Math::Pi","sum":74683},{"parent":"MODULE_FUNC","rule":"Math::Pow","sum":1332305},{"parent":"MODULE_FUNC","rule":"Math::Power","sum":6},{"parent":"MODULE_FUNC","rule":"Math::ROUND","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Rem","sum":2269},{"parent":"MODULE_FUNC","rule":"Math::Remainder","sum":163},{"parent":"MODULE_FUNC","rule":"Math::Rint","sum":20412},{"parent":"MODULE_FUNC","rule":"Math::Round","sum":36763997},{"parent":"MODULE_FUNC","rule":"Math::RoundDownward","sum":138580},{"parent":"MODULE_FUNC","rule":"Math::RoundToNearest","sum":76617},{"parent":"MODULE_FUNC","rule":"Math::RoundTowardZero","sum":894},{"parent":"MODULE_FUNC","rule":"Math::RoundUpward","sum":213012},{"parent":"MODULE_FUNC","rule":"Math::Sigmoid","sum":279208},{"parent":"MODULE_FUNC","rule":"Math::Sin","sum":82930},{"parent":"MODULE_FUNC","rule":"Math::Sinh","sum":6026},{"parent":"MODULE_FUNC","rule":"Math::Sqrt","sum":612692},{"parent":"MODULE_FUNC","rule":"Math::Tan","sum":4994},{"parent":"MODULE_FUNC","rule":"Math::Tanh","sum":4962},{"parent":"MODULE_FUNC","rule":"Math::Tgamma","sum":60},{"parent":"MODULE_FUNC","rule":"Math::Trunc","sum":156126},{"parent":"MODULE_FUNC","rule":"Math::abs","sum":2},{"parent":"MODULE_FUNC","rule":"Math::ceil","sum":8},{"parent":"MODULE_FUNC","rule":"Math::cos","sum":2},{"parent":"MODULE_FUNC","rule":"Math::exp","sum":6},{"parent":"MODULE_FUNC","rule":"Math::floor","sum":30},{"parent":"MODULE_FUNC","rule":"Math::isnan","sum":1},{"parent":"MODULE_FUNC","rule":"Math::round","sum":59},{"parent":"MODULE_FUNC","rule":"Math::sin","sum":2},{"parent":"MODULE_FUNC","rule":"Math::sqrt","sum":3},{"parent":"MODULE_FUNC","rule":"PG::ARRAY_AGG","sum":7},{"parent":"MODULE_FUNC","rule":"PG::STRING_AGG","sum":37},{"parent":"MODULE_FUNC","rule":"PG::generate_series","sum":7},{"parent":"MODULE_FUNC","rule":"PG::json_object_keys","sum":19},{"parent":"MODULE_FUNC","rule":"PG::jsonb_object_keys","sum":18},{"parent":"MODULE_FUNC","rule":"PG::string_agg","sum":102},{"parent":"MODULE_FUNC","rule":"PG::to_hex","sum":9},{"parent":"MODULE_FUNC","rule":"PIRE::Capture","sum":7},{"parent":"MODULE_FUNC","rule":"PIRE::Grep","sum":22},{"parent":"MODULE_FUNC","rule":"Pg::ARRAY_AGG","sum":11},{"parent":"MODULE_FUNC","rule":"Pg::Array_Agg","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::CONCAT","sum":12},{"parent":"MODULE_FUNC","rule":"Pg::Date","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::GENERATE_SERIES","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::SPLIT_PART","sum":5},{"parent":"MODULE_FUNC","rule":"Pg::STRING_AGG","sum":50},{"parent":"MODULE_FUNC","rule":"Pg::ST_Area","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsEWKB","sum":57},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsEWKT","sum":15},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsGeoJSON","sum":7},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsSVG","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsText","sum":57},{"parent":"MODULE_FUNC","rule":"Pg::ST_Boundary","sum":43},{"parent":"MODULE_FUNC","rule":"Pg::ST_Centroid","sum":14},{"parent":"MODULE_FUNC","rule":"Pg::ST_ClosestPoint","sum":37},{"parent":"MODULE_FUNC","rule":"Pg::ST_Contains","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::ST_Distance","sum":13},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeoHash","sum":15},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromEWKB","sum":86},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromGeoHash","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromText","sum":65},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromWKB","sum":7},{"parent":"MODULE_FUNC","rule":"Pg::ST_Intersects","sum":13},{"parent":"MODULE_FUNC","rule":"Pg::ST_IsValid","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::ST_MakePoint","sum":7},{"parent":"MODULE_FUNC","rule":"Pg::ST_MakeValid","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::ST_Point","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::ST_PointOnSurface","sum":17},{"parent":"MODULE_FUNC","rule":"Pg::ST_Scale","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::ST_SetSRID","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::ST_Transform","sum":183},{"parent":"MODULE_FUNC","rule":"Pg::ST_X","sum":72},{"parent":"MODULE_FUNC","rule":"Pg::ST_Y","sum":66},{"parent":"MODULE_FUNC","rule":"Pg::St_geomfromewkb","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::String_Agg","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::age","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::array_agg","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::array_length","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::bit_length","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::center","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::concat","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::date_generate_series","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::date_part","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::date_trunc","sum":11},{"parent":"MODULE_FUNC","rule":"Pg::extract","sum":136},{"parent":"MODULE_FUNC","rule":"Pg::generate_series","sum":1514},{"parent":"MODULE_FUNC","rule":"Pg::json_object_agg","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::lower","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::max","sum":364},{"parent":"MODULE_FUNC","rule":"Pg::sind","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::split_part","sum":20},{"parent":"MODULE_FUNC","rule":"Pg::st_asgeojson","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::st_astext","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::st_collect","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::st_geomfromewkb","sum":22},{"parent":"MODULE_FUNC","rule":"Pg::st_intersects","sum":9},{"parent":"MODULE_FUNC","rule":"Pg::st_transform","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::st_union","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::string_Agg","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::string_agg","sum":1765},{"parent":"MODULE_FUNC","rule":"Pg::to_char","sum":18},{"parent":"MODULE_FUNC","rule":"Pg::to_timestamp","sum":74},{"parent":"MODULE_FUNC","rule":"Pg::version","sum":3},{"parent":"MODULE_FUNC","rule":"PgAgg::string_agg","sum":2},{"parent":"MODULE_FUNC","rule":"PgProc::upper","sum":2},{"parent":"MODULE_FUNC","rule":"Pire::Capture","sum":528571},{"parent":"MODULE_FUNC","rule":"Pire::Grep","sum":144310},{"parent":"MODULE_FUNC","rule":"Pire::Match","sum":234577},{"parent":"MODULE_FUNC","rule":"Pire::MultiGrep","sum":686},{"parent":"MODULE_FUNC","rule":"Pire::MultiMatch","sum":152},{"parent":"MODULE_FUNC","rule":"Pire::Replace","sum":1005161},{"parent":"MODULE_FUNC","rule":"Protobuf::Parse","sum":21066},{"parent":"MODULE_FUNC","rule":"Protobuf::Serialize","sum":103753},{"parent":"MODULE_FUNC","rule":"Protobuf::TryParse","sum":145518},{"parent":"MODULE_FUNC","rule":"RE2::Capture","sum":4031},{"parent":"MODULE_FUNC","rule":"RE2::Count","sum":353},{"parent":"MODULE_FUNC","rule":"RE2::FindAndConsume","sum":31},{"parent":"MODULE_FUNC","rule":"RE2::Grep","sum":66},{"parent":"MODULE_FUNC","rule":"RE2::Match","sum":543},{"parent":"MODULE_FUNC","rule":"RE2::Replace","sum":124},{"parent":"MODULE_FUNC","rule":"Re2::Capture","sum":4405242},{"parent":"MODULE_FUNC","rule":"Re2::Catch","sum":1},{"parent":"MODULE_FUNC","rule":"Re2::Compile","sum":4},{"parent":"MODULE_FUNC","rule":"Re2::Count","sum":172465},{"parent":"MODULE_FUNC","rule":"Re2::FindAll","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAllSubmatch","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAndConsume","sum":389745},{"parent":"MODULE_FUNC","rule":"Re2::Grep","sum":653247},{"parent":"MODULE_FUNC","rule":"Re2::Match","sum":1686112},{"parent":"MODULE_FUNC","rule":"Re2::Options","sum":247912},{"parent":"MODULE_FUNC","rule":"Re2::Replace","sum":4638548},{"parent":"MODULE_FUNC","rule":"Re2::ReplaceAll","sum":15},{"parent":"MODULE_FUNC","rule":"STRING::AsciiToLower","sum":1},{"parent":"MODULE_FUNC","rule":"STRING::Contains","sum":2},{"parent":"MODULE_FUNC","rule":"STRING::RemoveAll","sum":1},{"parent":"MODULE_FUNC","rule":"STRING::SplitToList","sum":2},{"parent":"MODULE_FUNC","rule":"String::ASciiToLower","sum":2},{"parent":"MODULE_FUNC","rule":"String::AsciiToLower","sum":4122676},{"parent":"MODULE_FUNC","rule":"String::AsciiToTitle","sum":95633},{"parent":"MODULE_FUNC","rule":"String::AsciiToUpper","sum":548149},{"parent":"MODULE_FUNC","rule":"String::AsciiTolower","sum":5},{"parent":"MODULE_FUNC","rule":"String::Base32Decode","sum":275},{"parent":"MODULE_FUNC","rule":"String::Base32Encode","sum":194},{"parent":"MODULE_FUNC","rule":"String::Base32StrictDecode","sum":56},{"parent":"MODULE_FUNC","rule":"String::Base64Decode","sum":395027},{"parent":"MODULE_FUNC","rule":"String::Base64Encode","sum":112504},{"parent":"MODULE_FUNC","rule":"String::Base64EncodeUrl","sum":5737},{"parent":"MODULE_FUNC","rule":"String::Base64StrictDecode","sum":96549},{"parent":"MODULE_FUNC","rule":"String::Bin","sum":497},{"parent":"MODULE_FUNC","rule":"String::BinText","sum":121},{"parent":"MODULE_FUNC","rule":"String::CgiEscape","sum":72277},{"parent":"MODULE_FUNC","rule":"String::CgiUnescape","sum":24032},{"parent":"MODULE_FUNC","rule":"String::ColapseText","sum":4},{"parent":"MODULE_FUNC","rule":"String::Collapse","sum":198521},{"parent":"MODULE_FUNC","rule":"String::CollapseText","sum":200705},{"parent":"MODULE_FUNC","rule":"String::Contains","sum":6168048},{"parent":"MODULE_FUNC","rule":"String::DecodeHtml","sum":3040},{"parent":"MODULE_FUNC","rule":"String::EncodeHtml","sum":415},{"parent":"MODULE_FUNC","rule":"String::EndsWith","sum":539162},{"parent":"MODULE_FUNC","rule":"String::EndsWithIgnoreCase","sum":36087},{"parent":"MODULE_FUNC","rule":"String::EscapeC","sum":56112},{"parent":"MODULE_FUNC","rule":"String::Find","sum":654242},{"parent":"MODULE_FUNC","rule":"String::From","sum":2},{"parent":"MODULE_FUNC","rule":"String::FromByteList","sum":1046873},{"parent":"MODULE_FUNC","rule":"String::HasPrefix","sum":21339},{"parent":"MODULE_FUNC","rule":"String::HasPrefixIgnoreCase","sum":49},{"parent":"MODULE_FUNC","rule":"String::HasSuffix","sum":4922},{"parent":"MODULE_FUNC","rule":"String::HasSuffixIgnoreCase","sum":28702},{"parent":"MODULE_FUNC","rule":"String::Hex","sum":377608},{"parent":"MODULE_FUNC","rule":"String::HexDecode","sum":165852},{"parent":"MODULE_FUNC","rule":"String::HexEncode","sum":194850},{"parent":"MODULE_FUNC","rule":"String::HexText","sum":79183},{"parent":"MODULE_FUNC","rule":"String::HumanReadableBytes","sum":259},{"parent":"MODULE_FUNC","rule":"String::HumanReadableDuration","sum":1124415},{"parent":"MODULE_FUNC","rule":"String::HumanReadableQuantity","sum":342},{"parent":"MODULE_FUNC","rule":"String::IsAscii","sum":13988},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlnum","sum":1011},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlpha","sum":392},{"parent":"MODULE_FUNC","rule":"String::IsAsciiDigit","sum":8407},{"parent":"MODULE_FUNC","rule":"String::IsAsciiHex","sum":19424},{"parent":"MODULE_FUNC","rule":"String::IsAsciiLower","sum":22},{"parent":"MODULE_FUNC","rule":"String::IsAsciiSpace","sum":13},{"parent":"MODULE_FUNC","rule":"String::IsAsciiUpper","sum":357},{"parent":"MODULE_FUNC","rule":"String::Join","sum":2},{"parent":"MODULE_FUNC","rule":"String::JoinFROMList","sum":31824},{"parent":"MODULE_FUNC","rule":"String::JoinFromList","sum":14012536},{"parent":"MODULE_FUNC","rule":"String::LeftPad","sum":66086},{"parent":"MODULE_FUNC","rule":"String::Length","sum":2},{"parent":"MODULE_FUNC","rule":"String::LevenshteinDistance","sum":4},{"parent":"MODULE_FUNC","rule":"String::LevensteinDistance","sum":11760},{"parent":"MODULE_FUNC","rule":"String::Prec","sum":1847},{"parent":"MODULE_FUNC","rule":"String::RaplaceAll","sum":3},{"parent":"MODULE_FUNC","rule":"String::RemoveAll","sum":1248612},{"parent":"MODULE_FUNC","rule":"String::RemoveFirst","sum":641513},{"parent":"MODULE_FUNC","rule":"String::RemoveLast","sum":557607},{"parent":"MODULE_FUNC","rule":"String::Replace","sum":11},{"parent":"MODULE_FUNC","rule":"String::ReplaceALL","sum":3},{"parent":"MODULE_FUNC","rule":"String::ReplaceAll","sum":15670754},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirst","sum":1365972},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirstStartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::ReplaceLast","sum":174029},{"parent":"MODULE_FUNC","rule":"String::ReplaceRegex","sum":1},{"parent":"MODULE_FUNC","rule":"String::Reverse","sum":119021},{"parent":"MODULE_FUNC","rule":"String::ReverseFind","sum":38830},{"parent":"MODULE_FUNC","rule":"String::RightPad","sum":374102},{"parent":"MODULE_FUNC","rule":"String::SBin","sum":7},{"parent":"MODULE_FUNC","rule":"String::SHex","sum":6279},{"parent":"MODULE_FUNC","rule":"String::Split","sum":10},{"parent":"MODULE_FUNC","rule":"String::SplitToList","sum":31836924},{"parent":"MODULE_FUNC","rule":"String::SplitToSet","sum":12},{"parent":"MODULE_FUNC","rule":"String::StartWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::StartsWith","sum":3456482},{"parent":"MODULE_FUNC","rule":"String::StartsWithIgnoreCase","sum":56217},{"parent":"MODULE_FUNC","rule":"String::Strip","sum":3179583},{"parent":"MODULE_FUNC","rule":"String::Substring","sum":302682},{"parent":"MODULE_FUNC","rule":"String::ToByteList","sum":140412},{"parent":"MODULE_FUNC","rule":"String::ToLower","sum":5268432},{"parent":"MODULE_FUNC","rule":"String::ToLowerCase","sum":1},{"parent":"MODULE_FUNC","rule":"String::ToTitle","sum":34574},{"parent":"MODULE_FUNC","rule":"String::ToUpper","sum":140660},{"parent":"MODULE_FUNC","rule":"String::Trim","sum":3},{"parent":"MODULE_FUNC","rule":"String::UnescapeC","sum":329189},{"parent":"MODULE_FUNC","rule":"String::contains","sum":3},{"parent":"MODULE_FUNC","rule":"String::splittolist","sum":1},{"parent":"MODULE_FUNC","rule":"String::tolower","sum":2},{"parent":"MODULE_FUNC","rule":"TryDecompress::BZip2","sum":4},{"parent":"MODULE_FUNC","rule":"TryDecompress::BlockCodec","sum":1},{"parent":"MODULE_FUNC","rule":"TryDecompress::Brotli","sum":11},{"parent":"MODULE_FUNC","rule":"TryDecompress::Gzip","sum":1012},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lz4","sum":145},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lzma","sum":4},{"parent":"MODULE_FUNC","rule":"TryDecompress::Snappy","sum":10},{"parent":"MODULE_FUNC","rule":"TryDecompress::Xz","sum":4},{"parent":"MODULE_FUNC","rule":"TryDecompress::Zlib","sum":3552},{"parent":"MODULE_FUNC","rule":"TryDecompress::Zstd","sum":18},{"parent":"MODULE_FUNC","rule":"URL::Decode","sum":5},{"parent":"MODULE_FUNC","rule":"URL::GetHost","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::FInd","sum":4},{"parent":"MODULE_FUNC","rule":"Unicode::Find","sum":153636},{"parent":"MODULE_FUNC","rule":"Unicode::Fold","sum":29200},{"parent":"MODULE_FUNC","rule":"Unicode::FromCodePointList","sum":120346},{"parent":"MODULE_FUNC","rule":"Unicode::GetLength","sum":594925},{"parent":"MODULE_FUNC","rule":"Unicode::GetLengthn","sum":1},{"parent":"MODULE_FUNC","rule":"Unicode::IsAlnum","sum":551},{"parent":"MODULE_FUNC","rule":"Unicode::IsAlpha","sum":460},{"parent":"MODULE_FUNC","rule":"Unicode::IsAscii","sum":702},{"parent":"MODULE_FUNC","rule":"Unicode::IsDigit","sum":8983},{"parent":"MODULE_FUNC","rule":"Unicode::IsHex","sum":4},{"parent":"MODULE_FUNC","rule":"Unicode::IsLower","sum":96},{"parent":"MODULE_FUNC","rule":"Unicode::IsSpace","sum":18},{"parent":"MODULE_FUNC","rule":"Unicode::IsUnicodeSet","sum":441},{"parent":"MODULE_FUNC","rule":"Unicode::IsUpper","sum":1812},{"parent":"MODULE_FUNC","rule":"Unicode::IsUtf","sum":670858},{"parent":"MODULE_FUNC","rule":"Unicode::JoinFromList","sum":202977},{"parent":"MODULE_FUNC","rule":"Unicode::Length","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::LevensteinDistance","sum":39796},{"parent":"MODULE_FUNC","rule":"Unicode::Normalize","sum":110898},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFC","sum":526},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFD","sum":36},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKC","sum":6978},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKD","sum":1741},{"parent":"MODULE_FUNC","rule":"Unicode::RFind","sum":73307},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveAll","sum":138890},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveFirst","sum":7725},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveLast","sum":7763},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceAll","sum":270824},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceFirst","sum":1748},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceLast","sum":318},{"parent":"MODULE_FUNC","rule":"Unicode::Reverse","sum":52754},{"parent":"MODULE_FUNC","rule":"Unicode::SUBSTRING","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::SplitToList","sum":181496},{"parent":"MODULE_FUNC","rule":"Unicode::Strip","sum":64880},{"parent":"MODULE_FUNC","rule":"Unicode::Substring","sum":602103},{"parent":"MODULE_FUNC","rule":"Unicode::ToCodePointList","sum":122836},{"parent":"MODULE_FUNC","rule":"Unicode::ToLower","sum":1191627},{"parent":"MODULE_FUNC","rule":"Unicode::ToTitle","sum":35832},{"parent":"MODULE_FUNC","rule":"Unicode::ToUint64","sum":389},{"parent":"MODULE_FUNC","rule":"Unicode::ToUpper","sum":111960},{"parent":"MODULE_FUNC","rule":"Unicode::Translit","sum":103574},{"parent":"MODULE_FUNC","rule":"Unicode::TryToUint64","sum":1941},{"parent":"MODULE_FUNC","rule":"Url::AsciiToLower","sum":1},{"parent":"MODULE_FUNC","rule":"Url::BuildQueryString","sum":25950},{"parent":"MODULE_FUNC","rule":"Url::CanBePunycodeHostName","sum":6526},{"parent":"MODULE_FUNC","rule":"Url::CutQueryStringAndFragment","sum":232682},{"parent":"MODULE_FUNC","rule":"Url::CutScheme","sum":1134149},{"parent":"MODULE_FUNC","rule":"Url::CutWWW","sum":860920},{"parent":"MODULE_FUNC","rule":"Url::CutWWW2","sum":741308},{"parent":"MODULE_FUNC","rule":"Url::Decode","sum":1693514},{"parent":"MODULE_FUNC","rule":"Url::Encode","sum":370961},{"parent":"MODULE_FUNC","rule":"Url::ForceHostNameToPunycode","sum":200975},{"parent":"MODULE_FUNC","rule":"Url::ForcePunycodeToHostName","sum":132393},{"parent":"MODULE_FUNC","rule":"Url::GEtPath","sum":5},{"parent":"MODULE_FUNC","rule":"Url::GetCGIParam","sum":1822738},{"parent":"MODULE_FUNC","rule":"Url::GetCgiParam","sum":7},{"parent":"MODULE_FUNC","rule":"Url::GetDomain","sum":1125269},{"parent":"MODULE_FUNC","rule":"Url::GetDomainLevel","sum":70746},{"parent":"MODULE_FUNC","rule":"Url::GetFragment","sum":496},{"parent":"MODULE_FUNC","rule":"Url::GetHost","sum":4053079},{"parent":"MODULE_FUNC","rule":"Url::GetHostPort","sum":196601},{"parent":"MODULE_FUNC","rule":"Url::GetOwner","sum":1403752},{"parent":"MODULE_FUNC","rule":"Url::GetPath","sum":1693317},{"parent":"MODULE_FUNC","rule":"Url::GetPort","sum":818213},{"parent":"MODULE_FUNC","rule":"Url::GetScheme","sum":2059696},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHost","sum":145904},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHostPort","sum":698264},{"parent":"MODULE_FUNC","rule":"Url::GetSignificantDomain","sum":462687},{"parent":"MODULE_FUNC","rule":"Url::GetTLD","sum":35522},{"parent":"MODULE_FUNC","rule":"Url::GetTail","sum":575463},{"parent":"MODULE_FUNC","rule":"Url::Getowner","sum":1},{"parent":"MODULE_FUNC","rule":"Url::HostNameToPunycode","sum":581089},{"parent":"MODULE_FUNC","rule":"Url::IsAllowedByRobotsTxt","sum":7},{"parent":"MODULE_FUNC","rule":"Url::IsKnownTLD","sum":20870},{"parent":"MODULE_FUNC","rule":"Url::IsWellKnownTLD","sum":4919},{"parent":"MODULE_FUNC","rule":"Url::Normalize","sum":1050668},{"parent":"MODULE_FUNC","rule":"Url::NormalizeWithDefaultHttpScheme","sum":623726},{"parent":"MODULE_FUNC","rule":"Url::Parse","sum":299304},{"parent":"MODULE_FUNC","rule":"Url::PunycodeToHostName","sum":202823},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToDict","sum":154750},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToList","sum":38768},{"parent":"MODULE_FUNC","rule":"Url::ReplaceAll","sum":8},{"parent":"MODULE_FUNC","rule":"YSON::Co","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToBool","sum":12},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDict","sum":6},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDouble","sum":4},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDoubleList","sum":10},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToInt64","sum":2},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToList","sum":12},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToString","sum":91},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToStringList","sum":27},{"parent":"MODULE_FUNC","rule":"YSON::From","sum":7},{"parent":"MODULE_FUNC","rule":"YSON::IsDict","sum":3},{"parent":"MODULE_FUNC","rule":"YSON::Lookup","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupDict","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupDouble","sum":6},{"parent":"MODULE_FUNC","rule":"YSON::LookupInt64","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupList","sum":4},{"parent":"MODULE_FUNC","rule":"YSON::LookupString","sum":3},{"parent":"MODULE_FUNC","rule":"YSON::Parse","sum":5},{"parent":"MODULE_FUNC","rule":"YSON::ToString","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::convertToString","sum":7},{"parent":"MODULE_FUNC","rule":"YSON::from","sum":1},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToDouble","sum":12},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToList","sum":3},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToString","sum":2},{"parent":"MODULE_FUNC","rule":"YSon::LookupString","sum":1},{"parent":"MODULE_FUNC","rule":"YSon::Parse","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::AsList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Attributes","sum":1878},{"parent":"MODULE_FUNC","rule":"Yson::COntains","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::COnvertToDouble","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::CastToStringList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Contains","sum":2964953},{"parent":"MODULE_FUNC","rule":"Yson::Conver","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConverTToInt64","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConverToDouble","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConverToInt64","sum":10},{"parent":"MODULE_FUNC","rule":"Yson::ConverToList","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::ConverToString","sum":12},{"parent":"MODULE_FUNC","rule":"Yson::ConvertFromString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTOList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTo","sum":8893449},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToAttributes","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBool","sum":8777282},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolDict","sum":105242},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolList","sum":7419},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolgDict","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBytes","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDate","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDateTime","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDict","sum":8507382},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDictList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDictOfDouble","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDictString","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDouble","sum":9538271},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleDict","sum":280065},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleList","sum":1195596},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToFloat","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToFloat64","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToINT64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToIn64","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt","sum":37},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt32","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt32List","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64","sum":20437163},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64Dict","sum":186877},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64List","sum":2402436},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToIntList","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInteget","sum":169},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToJson","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToList","sum":18972909},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToListDouble","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToListString","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToListg","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToSTring","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToSTringList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToSetring","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToString","sum":96809421},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringDict","sum":1450323},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringInt64","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringList","sum":24390484},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStrint","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStruct","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToText","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUINT64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUInt64","sum":296},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUInt64List","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint32","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64","sum":8496332},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64Dict","sum":36424},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64List","sum":2199229},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUnit64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToevent_value","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToint64","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToint64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTolIST","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTolist","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTostring","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoBool","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoList","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoString","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::Converttostring","sum":14},{"parent":"MODULE_FUNC","rule":"Yson::ConvvertToString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Dict","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::Equals","sum":797786},{"parent":"MODULE_FUNC","rule":"Yson::Extract","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FROM","sum":8},{"parent":"MODULE_FUNC","rule":"Yson::Find","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::From","sum":25156251},{"parent":"MODULE_FUNC","rule":"Yson::From64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromAGG_LIST","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromASDFDSKLDJF","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromAboba","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::FromBinary","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromBytes","sum":17},{"parent":"MODULE_FUNC","rule":"Yson::FromDict","sum":3070},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble","sum":2798},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble64Dict","sum":3671},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleDict","sum":42633},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleList","sum":993},{"parent":"MODULE_FUNC","rule":"Yson::FromInt32","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64Dict","sum":2136},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64List","sum":7471},{"parent":"MODULE_FUNC","rule":"Yson::FromJson","sum":2171},{"parent":"MODULE_FUNC","rule":"Yson::FromKek","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::FromList","sum":4897},{"parent":"MODULE_FUNC","rule":"Yson::FromListTake","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromMap","sum":356},{"parent":"MODULE_FUNC","rule":"Yson::FromMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromSHEEEEEEEEEEEEE","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::FromSHIIIIIIIIIII","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromSeconds","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::FromSring","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::FromSting","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromString","sum":56322},{"parent":"MODULE_FUNC","rule":"Yson::FromStringDict","sum":69362},{"parent":"MODULE_FUNC","rule":"Yson::FromStringList","sum":59205},{"parent":"MODULE_FUNC","rule":"Yson::FromStruct","sum":652706},{"parent":"MODULE_FUNC","rule":"Yson::FromUi64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromUin64List","sum":377},{"parent":"MODULE_FUNC","rule":"Yson::FromUint32Dict","sum":10254},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64Dict","sum":16013},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64List","sum":25360},{"parent":"MODULE_FUNC","rule":"Yson::FromY2020MachoDachaTbIhaHouse","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Fromt","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::Get","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::GetHash","sum":864646},{"parent":"MODULE_FUNC","rule":"Yson::GetLength","sum":2813177},{"parent":"MODULE_FUNC","rule":"Yson::ISDict","sum":6},{"parent":"MODULE_FUNC","rule":"Yson::ISList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::IsBool","sum":33403},{"parent":"MODULE_FUNC","rule":"Yson::IsDict","sum":257269},{"parent":"MODULE_FUNC","rule":"Yson::IsDouble","sum":100319},{"parent":"MODULE_FUNC","rule":"Yson::IsEntity","sum":2675378},{"parent":"MODULE_FUNC","rule":"Yson::IsInt64","sum":288637},{"parent":"MODULE_FUNC","rule":"Yson::IsList","sum":287011},{"parent":"MODULE_FUNC","rule":"Yson::IsString","sum":1026312},{"parent":"MODULE_FUNC","rule":"Yson::IsUint64","sum":154118},{"parent":"MODULE_FUNC","rule":"Yson::ListMap","sum":12},{"parent":"MODULE_FUNC","rule":"Yson::Lo","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Loo","sum":10},{"parent":"MODULE_FUNC","rule":"Yson::LookUp","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookUpDict","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookUpString","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::Lookup","sum":6572221},{"parent":"MODULE_FUNC","rule":"Yson::LookupBool","sum":2151225},{"parent":"MODULE_FUNC","rule":"Yson::LookupDict","sum":402733},{"parent":"MODULE_FUNC","rule":"Yson::LookupDouble","sum":3063595},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt32","sum":91},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt64","sum":5506073},{"parent":"MODULE_FUNC","rule":"Yson::LookupInteger","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupList","sum":1627012},{"parent":"MODULE_FUNC","rule":"Yson::LookupSTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupString","sum":41357204},{"parent":"MODULE_FUNC","rule":"Yson::LookupStringList","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::LookupStruct","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::LookupTimestamp","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupUInt64","sum":6},{"parent":"MODULE_FUNC","rule":"Yson::LookupUint64","sum":3803411},{"parent":"MODULE_FUNC","rule":"Yson::LookupsTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LoopUpString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Options","sum":9255552},{"parent":"MODULE_FUNC","rule":"Yson::Parse","sum":8657637},{"parent":"MODULE_FUNC","rule":"Yson::ParseJSON","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ParseJson","sum":12622715},{"parent":"MODULE_FUNC","rule":"Yson::ParseJsonDecodeUtf8","sum":133932},{"parent":"MODULE_FUNC","rule":"Yson::Parsejson","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::Path","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::Serialize","sum":3873323},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJSON","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJson","sum":9860505},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJsonEncodeUtf8","sum":202134},{"parent":"MODULE_FUNC","rule":"Yson::SerializePretty","sum":1187693},{"parent":"MODULE_FUNC","rule":"Yson::SerializeText","sum":612491},{"parent":"MODULE_FUNC","rule":"Yson::WithAttributes","sum":660},{"parent":"MODULE_FUNC","rule":"Yson::YPath","sum":12621396},{"parent":"MODULE_FUNC","rule":"Yson::YPathBool","sum":1178381},{"parent":"MODULE_FUNC","rule":"Yson::YPathBoolean","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::YPathDict","sum":25581},{"parent":"MODULE_FUNC","rule":"Yson::YPathDouble","sum":1365022},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt16","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt64","sum":2724117},{"parent":"MODULE_FUNC","rule":"Yson::YPathList","sum":1395373},{"parent":"MODULE_FUNC","rule":"Yson::YPathListString","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::YPathString","sum":13557067},{"parent":"MODULE_FUNC","rule":"Yson::YPathUint64","sum":709161},{"parent":"MODULE_FUNC","rule":"Yson::YaPathString","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::Ypath","sum":51},{"parent":"MODULE_FUNC","rule":"Yson::YpathString","sum":10},{"parent":"MODULE_FUNC","rule":"Yson::Yson2","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToDict","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToString","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::convertToUint64","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::convertToUint64List","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::from","sum":48},{"parent":"MODULE_FUNC","rule":"Yson::fromJson","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::lookupString","sum":1},{"parent":"MODULE_FUNC","rule":"dateTime::Format","sum":3},{"parent":"MODULE_FUNC","rule":"dateTime::GetMonth","sum":6},{"parent":"MODULE_FUNC","rule":"dateTime::IntervalFromDays","sum":365},{"parent":"MODULE_FUNC","rule":"dateTime::IntervalFromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"dateTime::MakeDate","sum":87},{"parent":"MODULE_FUNC","rule":"dateTime::MakeDatetime","sum":7},{"parent":"MODULE_FUNC","rule":"dateTime::StartOfMonth","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::Format","sum":5},{"parent":"MODULE_FUNC","rule":"datetime::FromMilliseconds","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::FromSeconds","sum":3736},{"parent":"MODULE_FUNC","rule":"datetime::GetDayOfWeek","sum":4},{"parent":"MODULE_FUNC","rule":"datetime::GetDayOfWeekName","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::GetHour","sum":8},{"parent":"MODULE_FUNC","rule":"datetime::GetMonth","sum":14},{"parent":"MODULE_FUNC","rule":"datetime::GetWeekOfYear","sum":30},{"parent":"MODULE_FUNC","rule":"datetime::GetYear","sum":39},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromDays","sum":1341},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromHours","sum":37},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromMinutes","sum":6},{"parent":"MODULE_FUNC","rule":"datetime::MakeDate","sum":5399},{"parent":"MODULE_FUNC","rule":"datetime::MakeDatetime","sum":661},{"parent":"MODULE_FUNC","rule":"datetime::MakeTimestamp","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::Parse","sum":397},{"parent":"MODULE_FUNC","rule":"datetime::ParseIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::ShiftMonths","sum":310},{"parent":"MODULE_FUNC","rule":"datetime::StartOf","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::StartOfDay","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::StartOfMonth","sum":550},{"parent":"MODULE_FUNC","rule":"datetime::StartOfWeek","sum":530},{"parent":"MODULE_FUNC","rule":"datetime::ToDays","sum":375},{"parent":"MODULE_FUNC","rule":"datetime::ToSeconds","sum":735},{"parent":"MODULE_FUNC","rule":"datetime::fromseconds","sum":4},{"parent":"MODULE_FUNC","rule":"digest::Md5HalfMix","sum":14},{"parent":"MODULE_FUNC","rule":"digest::city_hash","sum":1},{"parent":"MODULE_FUNC","rule":"json::ConvertToString","sum":7},{"parent":"MODULE_FUNC","rule":"json::From","sum":1},{"parent":"MODULE_FUNC","rule":"math::Round","sum":2},{"parent":"MODULE_FUNC","rule":"math::floor","sum":2},{"parent":"MODULE_FUNC","rule":"math::log","sum":2},{"parent":"MODULE_FUNC","rule":"math::pow","sum":6},{"parent":"MODULE_FUNC","rule":"math::round","sum":56},{"parent":"MODULE_FUNC","rule":"pg::GENERATE_SERIES","sum":8},{"parent":"MODULE_FUNC","rule":"pg::SPLIT_PART","sum":2},{"parent":"MODULE_FUNC","rule":"pg::age","sum":737},{"parent":"MODULE_FUNC","rule":"pg::array_agg","sum":2},{"parent":"MODULE_FUNC","rule":"pg::date_part","sum":716},{"parent":"MODULE_FUNC","rule":"pg::extract","sum":285},{"parent":"MODULE_FUNC","rule":"pg::generate_series","sum":2},{"parent":"MODULE_FUNC","rule":"pg::st_asgeojson","sum":2},{"parent":"MODULE_FUNC","rule":"pg::st_astext","sum":4},{"parent":"MODULE_FUNC","rule":"pg::st_geomfromewkb","sum":14},{"parent":"MODULE_FUNC","rule":"pg::st_transform","sum":9},{"parent":"MODULE_FUNC","rule":"pg::string_agg","sum":15},{"parent":"MODULE_FUNC","rule":"pire::Capture","sum":7},{"parent":"MODULE_FUNC","rule":"pire::Match","sum":29},{"parent":"MODULE_FUNC","rule":"re2::Capture","sum":2753},{"parent":"MODULE_FUNC","rule":"re2::Grep","sum":1},{"parent":"MODULE_FUNC","rule":"re2::Match","sum":24},{"parent":"MODULE_FUNC","rule":"re2::Replace","sum":429},{"parent":"MODULE_FUNC","rule":"re2::capture","sum":8},{"parent":"MODULE_FUNC","rule":"string::AsciiToLower","sum":6},{"parent":"MODULE_FUNC","rule":"string::JoinFromList","sum":8},{"parent":"MODULE_FUNC","rule":"string::ReplaceFirst","sum":14},{"parent":"MODULE_FUNC","rule":"string::SplitToList","sum":6},{"parent":"MODULE_FUNC","rule":"string::StartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"string::contains","sum":4},{"parent":"MODULE_FUNC","rule":"string::joinfromlist","sum":17},{"parent":"MODULE_FUNC","rule":"string::removeall","sum":4},{"parent":"MODULE_FUNC","rule":"string::replaceall","sum":11},{"parent":"MODULE_FUNC","rule":"string::splittolist","sum":12},{"parent":"MODULE_FUNC","rule":"string::strip","sum":2},{"parent":"MODULE_FUNC","rule":"url::Encode","sum":2},{"parent":"MODULE_FUNC","rule":"url::decode","sum":2},{"parent":"MODULE_FUNC","rule":"url::gethost","sum":1},{"parent":"MODULE_FUNC","rule":"ySoN::CoNveRtTo","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToDict","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToDouble","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToString","sum":3},{"parent":"MODULE_FUNC","rule":"yson::ConvertToStringList","sum":2},{"parent":"MODULE_FUNC","rule":"yson::From","sum":1},{"parent":"MODULE_FUNC","rule":"yson::LookupString","sum":1},{"parent":"MODULE_FUNC","rule":"yson::PARSE","sum":2},{"parent":"MODULE_FUNC","rule":"yson::SerializeJson","sum":1},{"parent":"MODULE_FUNC","rule":"yson::convertto","sum":2},{"parent":"MODULE_FUNC","rule":"yson::converttodoubledict","sum":8},{"parent":"MODULE_FUNC","rule":"yson::converttolist","sum":1},{"parent":"MODULE_FUNC","rule":"yson::converttostring","sum":5},{"parent":"MODULE_FUNC","rule":"yson::converttostringdict","sum":8},{"parent":"MODULE_FUNC","rule":"yson::from","sum":2},{"parent":"MODULE_FUNC","rule":"yson::options","sum":8},{"parent":"MODULE_FUNC","rule":"yson::parsejson","sum":16},{"parent":"PRAGMA","rule":"AllowDotInAlias","sum":258287},{"parent":"PRAGMA","rule":"AllowUnnamedColumns","sum":4},{"parent":"PRAGMA","rule":"AnsiCurrentRow","sum":957},{"parent":"PRAGMA","rule":"AnsiImplicitCrossJoin","sum":13070},{"parent":"PRAGMA","rule":"AnsiInFOREmptyORNullableItemsCollections","sum":52},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNULLableItemsCollectiONs","sum":169},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNULLableItemsCollections","sum":4074},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNullableItemsCollections","sum":39620670},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrnullableItemsCollections","sum":263},{"parent":"PRAGMA","rule":"AnsiInForEmptyorNullableItemsCollections","sum":2141},{"parent":"PRAGMA","rule":"AnsiInForEmptyornullableItemsCollections","sum":1273},{"parent":"PRAGMA","rule":"AnsiInforEmptyOrNullableItemsCollections","sum":244},{"parent":"PRAGMA","rule":"AnsiOptionalAS","sum":4},{"parent":"PRAGMA","rule":"AnsiOptionalAs","sum":2152795},{"parent":"PRAGMA","rule":"AnsiOptionalas","sum":350},{"parent":"PRAGMA","rule":"AnsiOrderByLimitInUnionAll","sum":210333},{"parent":"PRAGMA","rule":"AnsiRankForNullableKeys","sum":223815},{"parent":"PRAGMA","rule":"AnsiinForEmptyOrNullableItemsCollections","sum":8517},{"parent":"PRAGMA","rule":"AnsiinForEmptyOrNullableitemsCollections","sum":16},{"parent":"PRAGMA","rule":"AutoCommit","sum":39168},{"parent":"PRAGMA","rule":"BlockEngine","sum":352454},{"parent":"PRAGMA","rule":"BogousStarInGroupByOverJoin","sum":2},{"parent":"PRAGMA","rule":"CLassicDivision","sum":9},{"parent":"PRAGMA","rule":"CheckedOps","sum":653},{"parent":"PRAGMA","rule":"ClASsicDivision","sum":639},{"parent":"PRAGMA","rule":"ClassicDIvision","sum":44},{"parent":"PRAGMA","rule":"ClassicDivisiON","sum":148},{"parent":"PRAGMA","rule":"ClassicDivision","sum":2557592},{"parent":"PRAGMA","rule":"Classicdivision","sum":6},{"parent":"PRAGMA","rule":"CoalesceJoinKeysOnQualifiedAll","sum":36},{"parent":"PRAGMA","rule":"CompactGroupBy","sum":26},{"parent":"PRAGMA","rule":"CompactNamedExprs","sum":2451},{"parent":"PRAGMA","rule":"CostBasedOptimizer","sum":14431},{"parent":"PRAGMA","rule":"DQ.ANALYZEQUERY","sum":1615},{"parent":"PRAGMA","rule":"DQEngine","sum":3},{"parent":"PRAGMA","rule":"DirectRead","sum":48},{"parent":"PRAGMA","rule":"DisableAnsiInForEmptyOrNullableItemsCollections","sum":233678},{"parent":"PRAGMA","rule":"DisableAnsiLike","sum":1},{"parent":"PRAGMA","rule":"DisableAnsiRankForNullableKeys","sum":38115},{"parent":"PRAGMA","rule":"DisableCoalesceJoinKeysOnQualifiedAll","sum":197713},{"parent":"PRAGMA","rule":"DisableCompactNamedExprs","sum":12},{"parent":"PRAGMA","rule":"DisableOrderedColumns","sum":536},{"parent":"PRAGMA","rule":"DisablePullUpFlatMapOverJoin","sum":2},{"parent":"PRAGMA","rule":"DisableSeqMode","sum":1},{"parent":"PRAGMA","rule":"DisableSimpleColumns","sum":398557},{"parent":"PRAGMA","rule":"DisableStrictJoinKeyTypes","sum":417},{"parent":"PRAGMA","rule":"DisableUnicodeLiterals","sum":34},{"parent":"PRAGMA","rule":"DisableUnordered","sum":867},{"parent":"PRAGMA","rule":"DistinctOverWindow","sum":7},{"parent":"PRAGMA","rule":"Dq.HashJoinMode","sum":6},{"parent":"PRAGMA","rule":"Dq.MaxTasksPerStage","sum":5},{"parent":"PRAGMA","rule":"Dq.SplitStageOnDqReplicate","sum":4},{"parent":"PRAGMA","rule":"Dq.UseBlockReader","sum":2},{"parent":"PRAGMA","rule":"DqEngine","sum":10793713},{"parent":"PRAGMA","rule":"Dqengine","sum":2},{"parent":"PRAGMA","rule":"EmitAggApply","sum":1},{"parent":"PRAGMA","rule":"EmitUnionMerge","sum":7},{"parent":"PRAGMA","rule":"EnableSystemColumns","sum":3},{"parent":"PRAGMA","rule":"FILE","sum":289896},{"parent":"PRAGMA","rule":"FeatureR010","sum":224},{"parent":"PRAGMA","rule":"File","sum":7406844},{"parent":"PRAGMA","rule":"FileOption","sum":15425},{"parent":"PRAGMA","rule":"FilterPushdownOverJoinOptionalSide","sum":6},{"parent":"PRAGMA","rule":"FlexibleTypes","sum":946},{"parent":"PRAGMA","rule":"Folder","sum":3771},{"parent":"PRAGMA","rule":"Greetings","sum":1453},{"parent":"PRAGMA","rule":"GroupByCubeLimit","sum":39642},{"parent":"PRAGMA","rule":"GroupByLimit","sum":151970},{"parent":"PRAGMA","rule":"JsonQueryReturnsJsonDocument","sum":300847},{"parent":"PRAGMA","rule":"LIBRARY","sum":247548},{"parent":"PRAGMA","rule":"LIbrary","sum":52},{"parent":"PRAGMA","rule":"Library","sum":15077641},{"parent":"PRAGMA","rule":"OrderedColumns","sum":5989922},{"parent":"PRAGMA","rule":"Orderedcolumns","sum":12},{"parent":"PRAGMA","rule":"OverrideLibrary","sum":182},{"parent":"PRAGMA","rule":"Package","sum":5},{"parent":"PRAGMA","rule":"PositionalUnionAll","sum":120124},{"parent":"PRAGMA","rule":"PqReadBy","sum":42},{"parent":"PRAGMA","rule":"REGEXUSERE2","sum":13439},{"parent":"PRAGMA","rule":"RefSelect","sum":435275},{"parent":"PRAGMA","rule":"RegExUseRe2","sum":32},{"parent":"PRAGMA","rule":"RegexUseRe2","sum":312065},{"parent":"PRAGMA","rule":"ResultRowsLimit","sum":3},{"parent":"PRAGMA","rule":"SampleSelect","sum":11},{"parent":"PRAGMA","rule":"SeqMode","sum":4},{"parent":"PRAGMA","rule":"SimpleColumns","sum":6946413},{"parent":"PRAGMA","rule":"Simplecolumns","sum":3},{"parent":"PRAGMA","rule":"StrictJoinKeyTypes","sum":76669},{"parent":"PRAGMA","rule":"TablePathPrefix","sum":5602522},{"parent":"PRAGMA","rule":"UDF","sum":2173643},{"parent":"PRAGMA","rule":"Udf","sum":1939655},{"parent":"PRAGMA","rule":"UnicodeLiterals","sum":98},{"parent":"PRAGMA","rule":"UnorderedSubqueries","sum":2},{"parent":"PRAGMA","rule":"UseBlocks","sum":57},{"parent":"PRAGMA","rule":"UseTablePrefixForEach","sum":52},{"parent":"PRAGMA","rule":"WARNING","sum":26},{"parent":"PRAGMA","rule":"WarnUnnamedColumns","sum":26243},{"parent":"PRAGMA","rule":"Warning","sum":2962238},{"parent":"PRAGMA","rule":"WarningMsg","sum":12699},{"parent":"PRAGMA","rule":"YSON.AutoConvert","sum":823},{"parent":"PRAGMA","rule":"YSON.DisableStrict","sum":44755},{"parent":"PRAGMA","rule":"YSON.Strict","sum":732},{"parent":"PRAGMA","rule":"YT.Auth","sum":68},{"parent":"PRAGMA","rule":"YT.DefaultOperationWeight","sum":252819},{"parent":"PRAGMA","rule":"YT.InferSchema","sum":17844},{"parent":"PRAGMA","rule":"YT.POOL","sum":275},{"parent":"PRAGMA","rule":"YT.Pool","sum":85880},{"parent":"PRAGMA","rule":"YT.StaticPool","sum":6},{"parent":"PRAGMA","rule":"YT.TableContentDeliveryMode","sum":1663},{"parent":"PRAGMA","rule":"YT.UseNativeYTTypes","sum":2},{"parent":"PRAGMA","rule":"YT.UseNativeYTtypes","sum":3},{"parent":"PRAGMA","rule":"YT.pOOL","sum":4},{"parent":"PRAGMA","rule":"YT.pool","sum":18812},{"parent":"PRAGMA","rule":"YsON.Disablestrict","sum":133},{"parent":"PRAGMA","rule":"Yson.AutoConvert","sum":41801},{"parent":"PRAGMA","rule":"Yson.DIsableStrict","sum":15251},{"parent":"PRAGMA","rule":"Yson.DisableStrict","sum":481261},{"parent":"PRAGMA","rule":"Yson.Strict","sum":6858},{"parent":"PRAGMA","rule":"Yson.disablestrict","sum":29},{"parent":"PRAGMA","rule":"Yt.Auth","sum":33},{"parent":"PRAGMA","rule":"Yt.Description","sum":4},{"parent":"PRAGMA","rule":"Yt.ExternalTx","sum":24798},{"parent":"PRAGMA","rule":"Yt.HybridDqExecution","sum":9},{"parent":"PRAGMA","rule":"Yt.InferSchema","sum":2744},{"parent":"PRAGMA","rule":"Yt.MaxRowWeight","sum":957},{"parent":"PRAGMA","rule":"Yt.ParallelOperationsLimit","sum":12},{"parent":"PRAGMA","rule":"Yt.Pool","sum":254713},{"parent":"PRAGMA","rule":"Yt.PoolTrees","sum":1},{"parent":"PRAGMA","rule":"Yt.StaticPool","sum":10080},{"parent":"PRAGMA","rule":"Yt.TmpFolder","sum":4},{"parent":"PRAGMA","rule":"Yt.UseNativeYtTypes","sum":2856},{"parent":"PRAGMA","rule":"Yt.pool","sum":82763},{"parent":"PRAGMA","rule":"ansiInForEmptyOrNullableItemsCollections","sum":118},{"parent":"PRAGMA","rule":"ansiimplicitcrossjoin","sum":2},{"parent":"PRAGMA","rule":"ansiinforemptyornullableitemscollections","sum":12},{"parent":"PRAGMA","rule":"ansioptionalas","sum":98},{"parent":"PRAGMA","rule":"autocommit","sum":133779},{"parent":"PRAGMA","rule":"classicDivision","sum":18},{"parent":"PRAGMA","rule":"classic_division","sum":11},{"parent":"PRAGMA","rule":"classicdivision","sum":77},{"parent":"PRAGMA","rule":"config.flags","sum":1289150},{"parent":"PRAGMA","rule":"direct_read","sum":2},{"parent":"PRAGMA","rule":"directread","sum":2},{"parent":"PRAGMA","rule":"disableSimpleColumns","sum":8},{"parent":"PRAGMA","rule":"disablesimplecolumns","sum":6},{"parent":"PRAGMA","rule":"dq.AnalyticsHopping","sum":4},{"parent":"PRAGMA","rule":"dq.AnalyzeQuery","sum":3086654},{"parent":"PRAGMA","rule":"dq.ENABLEDQREPLICATE","sum":1},{"parent":"PRAGMA","rule":"dq.EnableComputeActor","sum":1},{"parent":"PRAGMA","rule":"dq.EnableDqReplicate","sum":921734},{"parent":"PRAGMA","rule":"dq.EnableDqreplicate","sum":3},{"parent":"PRAGMA","rule":"dq.EnableFullResultWrite","sum":28699},{"parent":"PRAGMA","rule":"dq.EnableInsert","sum":86477},{"parent":"PRAGMA","rule":"dq.FallbackPolicy","sum":3},{"parent":"PRAGMA","rule":"dq.HashJoinMode","sum":6282},{"parent":"PRAGMA","rule":"dq.HashShuffleMaxTasks","sum":7},{"parent":"PRAGMA","rule":"dq.HashShuffleTasksRatio","sum":7},{"parent":"PRAGMA","rule":"dq.MaxDataSizePerJob","sum":11},{"parent":"PRAGMA","rule":"dq.MaxDataSizePerQuery","sum":2},{"parent":"PRAGMA","rule":"dq.MaxRetries","sum":1124},{"parent":"PRAGMA","rule":"dq.MaxTasksPerOperation","sum":23157},{"parent":"PRAGMA","rule":"dq.MaxTasksPerStage","sum":61204},{"parent":"PRAGMA","rule":"dq.MemoryLimit","sum":7977},{"parent":"PRAGMA","rule":"dq.OptLLVM","sum":11},{"parent":"PRAGMA","rule":"dq.SplitStageOnDqReplicate","sum":11034},{"parent":"PRAGMA","rule":"dq.UseBlockReader","sum":3993},{"parent":"PRAGMA","rule":"dq.UseFastPickleTransport","sum":3},{"parent":"PRAGMA","rule":"dq.UseFinalizeByKey","sum":10},{"parent":"PRAGMA","rule":"dq.UseOOBTransport","sum":9},{"parent":"PRAGMA","rule":"dq.UseWideBlockChannels","sum":2},{"parent":"PRAGMA","rule":"dq.UseWideChannels","sum":1},{"parent":"PRAGMA","rule":"dq.WorkerFilter","sum":104},{"parent":"PRAGMA","rule":"dq.enableDqReplicate","sum":348},{"parent":"PRAGMA","rule":"dq.enabledqreplicate","sum":24},{"parent":"PRAGMA","rule":"dqEngine","sum":91597},{"parent":"PRAGMA","rule":"dqengine","sum":21246},{"parent":"PRAGMA","rule":"equijoin","sum":4},{"parent":"PRAGMA","rule":"file","sum":1810746},{"parent":"PRAGMA","rule":"folder","sum":674},{"parent":"PRAGMA","rule":"greetings","sum":1},{"parent":"PRAGMA","rule":"library","sum":4878187},{"parent":"PRAGMA","rule":"orderedColumns","sum":7},{"parent":"PRAGMA","rule":"orderedcolumns","sum":15134},{"parent":"PRAGMA","rule":"override_library","sum":32},{"parent":"PRAGMA","rule":"package","sum":228921},{"parent":"PRAGMA","rule":"refselect","sum":32323},{"parent":"PRAGMA","rule":"rtmr.Account","sum":4},{"parent":"PRAGMA","rule":"rtmr.TaskName","sum":12},{"parent":"PRAGMA","rule":"rtmr.YfInstanceCount","sum":8},{"parent":"PRAGMA","rule":"rtmr.YfSlotCount","sum":8},{"parent":"PRAGMA","rule":"rtmr.yfPool","sum":1},{"parent":"PRAGMA","rule":"sampleselect","sum":177},{"parent":"PRAGMA","rule":"simpleColumns","sum":1446},{"parent":"PRAGMA","rule":"simplecolumns","sum":242914},{"parent":"PRAGMA","rule":"tablepathprefix","sum":2},{"parent":"PRAGMA","rule":"udf","sum":4336302},{"parent":"PRAGMA","rule":"warning","sum":66490},{"parent":"PRAGMA","rule":"yson.AutoConvert","sum":4731785},{"parent":"PRAGMA","rule":"yson.Auto_convert","sum":18},{"parent":"PRAGMA","rule":"yson.Autoconvert","sum":1158},{"parent":"PRAGMA","rule":"yson.DisableStrict","sum":20060072},{"parent":"PRAGMA","rule":"yson.Disablestrict","sum":46},{"parent":"PRAGMA","rule":"yson.Fast","sum":662},{"parent":"PRAGMA","rule":"yson.Strict","sum":3495746},{"parent":"PRAGMA","rule":"yson.autoConvert","sum":4},{"parent":"PRAGMA","rule":"yson.autoconvert","sum":3750},{"parent":"PRAGMA","rule":"yson.disableStrict","sum":2284},{"parent":"PRAGMA","rule":"yson.disable_strict","sum":3},{"parent":"PRAGMA","rule":"yson.disablestrict","sum":211473},{"parent":"PRAGMA","rule":"yson.strict","sum":709},{"parent":"PRAGMA","rule":"yt.AUth","sum":4},{"parent":"PRAGMA","rule":"yt.Annotations","sum":46551803},{"parent":"PRAGMA","rule":"yt.Auth","sum":1280645},{"parent":"PRAGMA","rule":"yt.AutoMerge","sum":4457191},{"parent":"PRAGMA","rule":"yt.Automerge","sum":2793},{"parent":"PRAGMA","rule":"yt.BatchListFolderConcurrency","sum":151},{"parent":"PRAGMA","rule":"yt.BinaryExpirationInterval","sum":6233208},{"parent":"PRAGMA","rule":"yt.BinaryTmpFolder","sum":6259531},{"parent":"PRAGMA","rule":"yt.BlockReaderSupportedDataTypes","sum":5},{"parent":"PRAGMA","rule":"yt.ColumnGroupMode","sum":445387},{"parent":"PRAGMA","rule":"yt.CombineCoreLimit","sum":76913},{"parent":"PRAGMA","rule":"yt.CommonJoinCoreLimit","sum":1854},{"parent":"PRAGMA","rule":"yt.CoreDumpPath","sum":2},{"parent":"PRAGMA","rule":"yt.DQRPCReaderInflight","sum":140},{"parent":"PRAGMA","rule":"yt.DQRPCReaderTimeout","sum":8},{"parent":"PRAGMA","rule":"yt.DatASizePerJob","sum":2150},{"parent":"PRAGMA","rule":"yt.DatASizePerPartition","sum":736},{"parent":"PRAGMA","rule":"yt.DataSizePerJob","sum":5238758},{"parent":"PRAGMA","rule":"yt.DataSizePerMapJob","sum":314915},{"parent":"PRAGMA","rule":"yt.DataSizePerPartition","sum":514836},{"parent":"PRAGMA","rule":"yt.DataSizePerSortJob","sum":200126},{"parent":"PRAGMA","rule":"yt.DatasizePerJob","sum":16},{"parent":"PRAGMA","rule":"yt.DatasizePerSortJob","sum":16},{"parent":"PRAGMA","rule":"yt.DefaultCalcMemoryLimit","sum":258857},{"parent":"PRAGMA","rule":"yt.DefaultCluster","sum":71816158},{"parent":"PRAGMA","rule":"yt.DefaultLocalityTimeout","sum":4075},{"parent":"PRAGMA","rule":"yt.DefaultMapSelectivityFactor","sum":53},{"parent":"PRAGMA","rule":"yt.DefaultMaxJobFails","sum":1549993},{"parent":"PRAGMA","rule":"yt.DefaultMemORyLimit","sum":7},{"parent":"PRAGMA","rule":"yt.DefaultMemoryLimit","sum":2061228},{"parent":"PRAGMA","rule":"yt.DefaultMemoryReserveFactor","sum":25421},{"parent":"PRAGMA","rule":"yt.DefaultOperationWeight","sum":9766568},{"parent":"PRAGMA","rule":"yt.Description","sum":236754},{"parent":"PRAGMA","rule":"yt.DisableFuseOperations","sum":2},{"parent":"PRAGMA","rule":"yt.DisableJobSplitting","sum":4770},{"parent":"PRAGMA","rule":"yt.DisableOptimizers","sum":30928},{"parent":"PRAGMA","rule":"yt.EnableDynamicStoreReadInDQ","sum":1},{"parent":"PRAGMA","rule":"yt.ErasureCodecCpu","sum":148399},{"parent":"PRAGMA","rule":"yt.EvaluationTableSizeLimit","sum":815543},{"parent":"PRAGMA","rule":"yt.ExpirationDeadline","sum":3432850},{"parent":"PRAGMA","rule":"yt.ExpirationInterval","sum":8121062},{"parent":"PRAGMA","rule":"yt.ExtendedStatsMaxChunkCount","sum":4},{"parent":"PRAGMA","rule":"yt.ExternalTx","sum":80697419},{"parent":"PRAGMA","rule":"yt.ExtraTmpfsSize","sum":95},{"parent":"PRAGMA","rule":"yt.FileCacheTtl","sum":8284523},{"parent":"PRAGMA","rule":"yt.FolderInlineDataLimit","sum":40},{"parent":"PRAGMA","rule":"yt.FolderInlineItemsLimit","sum":2},{"parent":"PRAGMA","rule":"yt.ForceInferSchema","sum":799593},{"parent":"PRAGMA","rule":"yt.ForceJobSizeAdjuster","sum":10239},{"parent":"PRAGMA","rule":"yt.GeobaseDownloadUrl","sum":62930},{"parent":"PRAGMA","rule":"yt.HybridDqDataSizeLimitForOrdered","sum":313623},{"parent":"PRAGMA","rule":"yt.HybridDqDataSizeLimitForUnordered","sum":316652},{"parent":"PRAGMA","rule":"yt.HybridDqExecution","sum":3706477},{"parent":"PRAGMA","rule":"yt.HybridDqExecutionFallback","sum":108},{"parent":"PRAGMA","rule":"yt.INFERSCHEMA","sum":1},{"parent":"PRAGMA","rule":"yt.INferSchema","sum":6},{"parent":"PRAGMA","rule":"yt.IgnoreTypeV3","sum":4588},{"parent":"PRAGMA","rule":"yt.IgnoreWeakSchema","sum":231291},{"parent":"PRAGMA","rule":"yt.IgnoreYamrDsv","sum":22558},{"parent":"PRAGMA","rule":"yt.InferSchemA","sum":11},{"parent":"PRAGMA","rule":"yt.InferSchema","sum":32288432},{"parent":"PRAGMA","rule":"yt.InferSchemaTableCountThreshold","sum":1},{"parent":"PRAGMA","rule":"yt.Inferschema","sum":85798},{"parent":"PRAGMA","rule":"yt.IntermediateAccount","sum":133151},{"parent":"PRAGMA","rule":"yt.IntermediateDataMedium","sum":296894},{"parent":"PRAGMA","rule":"yt.IntermediateReplicationFactor","sum":2809},{"parent":"PRAGMA","rule":"yt.JavascriptCpu","sum":42},{"parent":"PRAGMA","rule":"yt.JobBlockInput","sum":27},{"parent":"PRAGMA","rule":"yt.JobBlockOutput","sum":12},{"parent":"PRAGMA","rule":"yt.JobEnv","sum":14095},{"parent":"PRAGMA","rule":"yt.JoinAllowColumnRenames","sum":446},{"parent":"PRAGMA","rule":"yt.JoinCollectColumnarStatistics","sum":20346},{"parent":"PRAGMA","rule":"yt.JoinColumnarStatisticsFetcherMode","sum":593},{"parent":"PRAGMA","rule":"yt.JoinEnableStarJoin","sum":41751},{"parent":"PRAGMA","rule":"yt.JoinMergeForce","sum":53467},{"parent":"PRAGMA","rule":"yt.JoinMergeReduceJobMaxSize","sum":2741},{"parent":"PRAGMA","rule":"yt.JoinMergeTablesLimit","sum":3706},{"parent":"PRAGMA","rule":"yt.JoinMergeUnsortedFactor","sum":1663},{"parent":"PRAGMA","rule":"yt.JoinMergeUseSmallAsPrimary","sum":5978},{"parent":"PRAGMA","rule":"yt.JoinUseColumnarStatistics","sum":998},{"parent":"PRAGMA","rule":"yt.JoinWaitAllInputs","sum":16},{"parent":"PRAGMA","rule":"yt.KeepTempTables","sum":969},{"parent":"PRAGMA","rule":"yt.LayerPaths","sum":159199},{"parent":"PRAGMA","rule":"yt.LookupJoinLimit","sum":230793},{"parent":"PRAGMA","rule":"yt.LookupJoinMaxRows","sum":181147},{"parent":"PRAGMA","rule":"yt.MAXRowWeight","sum":58},{"parent":"PRAGMA","rule":"yt.MAxJobCount","sum":64},{"parent":"PRAGMA","rule":"yt.MAxRowWeight","sum":1},{"parent":"PRAGMA","rule":"yt.MapJOINLimit","sum":723},{"parent":"PRAGMA","rule":"yt.MapJoinLimit","sum":692785},{"parent":"PRAGMA","rule":"yt.MapJoinShardCount","sum":321708},{"parent":"PRAGMA","rule":"yt.MapJoinShardMinRows","sum":4},{"parent":"PRAGMA","rule":"yt.MapJoinUseFlow","sum":1},{"parent":"PRAGMA","rule":"yt.MapLocalityTimeout","sum":4},{"parent":"PRAGMA","rule":"yt.MaxChunksForDqRead","sum":120},{"parent":"PRAGMA","rule":"yt.MaxExtraJobMemoryToFuseOperations","sum":19950},{"parent":"PRAGMA","rule":"yt.MaxInputTables","sum":29603},{"parent":"PRAGMA","rule":"yt.MaxInputTablesForSortedMerge","sum":5914},{"parent":"PRAGMA","rule":"yt.MaxJobCount","sum":12548346},{"parent":"PRAGMA","rule":"yt.MaxJobcount","sum":1383},{"parent":"PRAGMA","rule":"yt.MaxKeyRangeCount","sum":9},{"parent":"PRAGMA","rule":"yt.MaxKeyWeight","sum":206800},{"parent":"PRAGMA","rule":"yt.MaxOutputTables","sum":54},{"parent":"PRAGMA","rule":"yt.MaxReplicationFactorToFuseOperations","sum":15},{"parent":"PRAGMA","rule":"yt.MaxRowWeight","sum":6104192},{"parent":"PRAGMA","rule":"yt.MaxSpeculativeJobCountPerTask","sum":2237},{"parent":"PRAGMA","rule":"yt.MinLocalityInputDataWeight","sum":8},{"parent":"PRAGMA","rule":"yt.MinPublishedAvgChunkSize","sum":3171409},{"parent":"PRAGMA","rule":"yt.MinTempAvgChunkSize","sum":178396},{"parent":"PRAGMA","rule":"yt.NativeYtTypeCompatibility","sum":15},{"parent":"PRAGMA","rule":"yt.NetworkProject","sum":609042},{"parent":"PRAGMA","rule":"yt.NightlyCompress","sum":146719},{"parent":"PRAGMA","rule":"yt.OWners","sum":21},{"parent":"PRAGMA","rule":"yt.OperationReaders","sum":12816428},{"parent":"PRAGMA","rule":"yt.OperationSpec","sum":8566187},{"parent":"PRAGMA","rule":"yt.OptimizeFor","sum":5784093},{"parent":"PRAGMA","rule":"yt.Owners","sum":65851849},{"parent":"PRAGMA","rule":"yt.POOL","sum":68},{"parent":"PRAGMA","rule":"yt.POol","sum":12},{"parent":"PRAGMA","rule":"yt.ParallelOperationsLimit","sum":1385400},{"parent":"PRAGMA","rule":"yt.PartitionByConstantKeysViaMap","sum":13},{"parent":"PRAGMA","rule":"yt.PooL","sum":1},{"parent":"PRAGMA","rule":"yt.Pool","sum":54672067},{"parent":"PRAGMA","rule":"yt.PoolTrees","sum":6601319},{"parent":"PRAGMA","rule":"yt.PrimaryMedium","sum":383871},{"parent":"PRAGMA","rule":"yt.PruneKeyFilterLambda","sum":562},{"parent":"PRAGMA","rule":"yt.PublishedAutoMerge","sum":3408556},{"parent":"PRAGMA","rule":"yt.PublishedCompressionCodec","sum":7408206},{"parent":"PRAGMA","rule":"yt.PublishedErasureCodec","sum":5395006},{"parent":"PRAGMA","rule":"yt.PublishedMedia","sum":4239},{"parent":"PRAGMA","rule":"yt.PublishedPrimaryMedium","sum":783428},{"parent":"PRAGMA","rule":"yt.PublishedReplicationFactor","sum":23632},{"parent":"PRAGMA","rule":"yt.PythonCpu","sum":82846},{"parent":"PRAGMA","rule":"yt.QueryCacheIgnoreTableRevision","sum":65393},{"parent":"PRAGMA","rule":"yt.QueryCacheMode","sum":24244197},{"parent":"PRAGMA","rule":"yt.QueryCacheSalt","sum":5},{"parent":"PRAGMA","rule":"yt.QueryCacheTtl","sum":8970969},{"parent":"PRAGMA","rule":"yt.QueryCacheUseForCalc","sum":8},{"parent":"PRAGMA","rule":"yt.QuerycacheMode","sum":2},{"parent":"PRAGMA","rule":"yt.ReleaseTempData","sum":2708518},{"parent":"PRAGMA","rule":"yt.STaticPool","sum":3},{"parent":"PRAGMA","rule":"yt.SamplingIoBlockSize","sum":3865},{"parent":"PRAGMA","rule":"yt.SchedulingTag","sum":39},{"parent":"PRAGMA","rule":"yt.SchedulingTagFilter","sum":2971},{"parent":"PRAGMA","rule":"yt.ScriptCpu","sum":4837},{"parent":"PRAGMA","rule":"yt.StartedBy","sum":264532},{"parent":"PRAGMA","rule":"yt.StaticPOol","sum":1},{"parent":"PRAGMA","rule":"yt.StaticPool","sum":113085962},{"parent":"PRAGMA","rule":"yt.Static_pool","sum":1},{"parent":"PRAGMA","rule":"yt.SuspendIfAccountLimitExceeded","sum":42782},{"parent":"PRAGMA","rule":"yt.TableContentDeliveryMode","sum":591},{"parent":"PRAGMA","rule":"yt.TableContentLocalExecution","sum":18},{"parent":"PRAGMA","rule":"yt.TableContentMaxChunksForNativeDelivery","sum":1},{"parent":"PRAGMA","rule":"yt.TableContentMaxInputTables","sum":6730},{"parent":"PRAGMA","rule":"yt.TableContentMinAvgChunkSize","sum":2629},{"parent":"PRAGMA","rule":"yt.TableContentTmpFolder","sum":28},{"parent":"PRAGMA","rule":"yt.TableContentUseSkiff","sum":11},{"parent":"PRAGMA","rule":"yt.TablesTmpFolder","sum":3437268},{"parent":"PRAGMA","rule":"yt.TempTablesTtl","sum":5386323},{"parent":"PRAGMA","rule":"yt.TemporaryAutoMerge","sum":8859300},{"parent":"PRAGMA","rule":"yt.TemporaryCompressionCodec","sum":5843040},{"parent":"PRAGMA","rule":"yt.TemporaryErasureCodec","sum":4764279},{"parent":"PRAGMA","rule":"yt.TemporaryPrimaryMedium","sum":496370},{"parent":"PRAGMA","rule":"yt.TemporaryReplicationFactor","sum":93},{"parent":"PRAGMA","rule":"yt.TentativePoolTrees","sum":1849032},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilityMaxJobDurationRatio","sum":17551},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilityMinJobDuration","sum":2179},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilitySampleJobCount","sum":16205},{"parent":"PRAGMA","rule":"yt.TmpFolder","sum":31281903},{"parent":"PRAGMA","rule":"yt.TopSortMaxLimit","sum":59},{"parent":"PRAGMA","rule":"yt.TopSortSizePerJob","sum":1},{"parent":"PRAGMA","rule":"yt.USENATIVEYTTYPES","sum":25},{"parent":"PRAGMA","rule":"yt.USeNativeYtTypes","sum":12},{"parent":"PRAGMA","rule":"yt.UseColumnarStatistics","sum":166732},{"parent":"PRAGMA","rule":"yt.UseDefaultTentativePoolTrees","sum":252593},{"parent":"PRAGMA","rule":"yt.UseFlow","sum":3},{"parent":"PRAGMA","rule":"yt.UseIntermediateStreams","sum":6},{"parent":"PRAGMA","rule":"yt.UseNAtiveYtTypes","sum":1},{"parent":"PRAGMA","rule":"yt.UseNativeDescSort","sum":2032},{"parent":"PRAGMA","rule":"yt.UseNativeYtTYpes","sum":1485},{"parent":"PRAGMA","rule":"yt.UseNativeYtTypes","sum":24309630},{"parent":"PRAGMA","rule":"yt.UseNativeYttypes","sum":764},{"parent":"PRAGMA","rule":"yt.UseNativeytTypes","sum":516},{"parent":"PRAGMA","rule":"yt.UseNewPredicateExtraction","sum":182334},{"parent":"PRAGMA","rule":"yt.UseRPCReaderInDQ","sum":79},{"parent":"PRAGMA","rule":"yt.UseRPCReaderInDq","sum":12130},{"parent":"PRAGMA","rule":"yt.UseSkiff","sum":4025},{"parent":"PRAGMA","rule":"yt.UseSystemColumns","sum":2139},{"parent":"PRAGMA","rule":"yt.UseTmpfs","sum":34352},{"parent":"PRAGMA","rule":"yt.UseTypeV2","sum":4398},{"parent":"PRAGMA","rule":"yt.UseYqlRowSpecCompactForm","sum":3767},{"parent":"PRAGMA","rule":"yt.UserSlots","sum":2522195},{"parent":"PRAGMA","rule":"yt.ViewIsolation","sum":969},{"parent":"PRAGMA","rule":"yt.WideFlowLimit","sum":158125},{"parent":"PRAGMA","rule":"yt.auth","sum":47218},{"parent":"PRAGMA","rule":"yt.datasizeperjob","sum":2026},{"parent":"PRAGMA","rule":"yt.defaultoperationweight","sum":47},{"parent":"PRAGMA","rule":"yt.forceinferschema","sum":48},{"parent":"PRAGMA","rule":"yt.inferSchema","sum":54889},{"parent":"PRAGMA","rule":"yt.infer_schema","sum":10},{"parent":"PRAGMA","rule":"yt.inferschema","sum":2977},{"parent":"PRAGMA","rule":"yt.mapjoinlimit","sum":97781},{"parent":"PRAGMA","rule":"yt.maxRowWeight","sum":1},{"parent":"PRAGMA","rule":"yt.max_row_weight","sum":19},{"parent":"PRAGMA","rule":"yt.maxjobcount","sum":5},{"parent":"PRAGMA","rule":"yt.maxrowweight","sum":41890},{"parent":"PRAGMA","rule":"yt.minPublishedAvgChunksize","sum":11},{"parent":"PRAGMA","rule":"yt.network_project","sum":14499},{"parent":"PRAGMA","rule":"yt.pool","sum":6845320},{"parent":"PRAGMA","rule":"yt.pool_trees","sum":1},{"parent":"PRAGMA","rule":"yt.pooltrees","sum":53},{"parent":"PRAGMA","rule":"yt.publishedcompressioncodec","sum":403},{"parent":"PRAGMA","rule":"yt.staticPool","sum":1265865},{"parent":"PRAGMA","rule":"yt.static_pool","sum":20},{"parent":"PRAGMA","rule":"yt.staticpool","sum":10639},{"parent":"PRAGMA","rule":"yt.tmpFolder","sum":76657},{"parent":"PRAGMA","rule":"yt.tmpfolder","sum":65},{"parent":"PRAGMA","rule":"yt.useNativeYtTYpes","sum":1},{"parent":"PRAGMA","rule":"yt.useNativeYtTypes","sum":911},{"parent":"PRAGMA","rule":"yt.usenativeyttypes","sum":168},{"parent":"READ_HINT","rule":"COLUMNS","sum":823297},{"parent":"READ_HINT","rule":"CoLUMNS","sum":2},{"parent":"READ_HINT","rule":"Columns","sum":24},{"parent":"READ_HINT","rule":"DIRECT_READ","sum":98},{"parent":"READ_HINT","rule":"FORCE_INFER_SCHEMA","sum":18211},{"parent":"READ_HINT","rule":"ForceInferSchema","sum":350},{"parent":"READ_HINT","rule":"IGNORETYPEV3","sum":2},{"parent":"READ_HINT","rule":"IGNORE_TYPE_V3","sum":4},{"parent":"READ_HINT","rule":"INFER_SCHEMA","sum":105278},{"parent":"READ_HINT","rule":"INLINE","sum":87384},{"parent":"READ_HINT","rule":"InferSchema","sum":2282},{"parent":"READ_HINT","rule":"Infer_Schema","sum":3},{"parent":"READ_HINT","rule":"SCHEMA","sum":16885246},{"parent":"READ_HINT","rule":"SChema","sum":2},{"parent":"READ_HINT","rule":"Schema","sum":39235},{"parent":"READ_HINT","rule":"TRUNCATE","sum":5},{"parent":"READ_HINT","rule":"UNORDERED","sum":6558},{"parent":"READ_HINT","rule":"USER_ATTRS","sum":1},{"parent":"READ_HINT","rule":"Unordered","sum":365},{"parent":"READ_HINT","rule":"XLOCK","sum":144066},{"parent":"READ_HINT","rule":"columns","sum":423998},{"parent":"READ_HINT","rule":"direct_read","sum":1},{"parent":"READ_HINT","rule":"downsampling.aggregation","sum":2218},{"parent":"READ_HINT","rule":"downsampling.disabled","sum":2100},{"parent":"READ_HINT","rule":"downsampling.fill","sum":1723},{"parent":"READ_HINT","rule":"downsampling.grid_interval","sum":2470},{"parent":"READ_HINT","rule":"force_infer_schema","sum":2},{"parent":"READ_HINT","rule":"from","sum":22919},{"parent":"READ_HINT","rule":"infer_schema","sum":190},{"parent":"READ_HINT","rule":"infer_scheme","sum":17},{"parent":"READ_HINT","rule":"inferschema","sum":1},{"parent":"READ_HINT","rule":"inline","sum":75007},{"parent":"READ_HINT","rule":"labels","sum":20802},{"parent":"READ_HINT","rule":"program","sum":23171},{"parent":"READ_HINT","rule":"schema","sum":773737},{"parent":"READ_HINT","rule":"to","sum":22919},{"parent":"READ_HINT","rule":"unordered","sum":13598},{"parent":"READ_HINT","rule":"xlock","sum":260971},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Block2","sum":4946777},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Rule_opt_bind_parameter1","sum":13965321},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Rule_opt_bind_parameter2","sum":7512439},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Token1","sum":7512439},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Block2","sum":136340311},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Rule_mul_subexpr1","sum":15625099920},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Rule_mul_subexpr2","sum":167934015},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Token1","sum":167934015},{"parent":"TRule_an_id","rule":"TRule_an_id.Alt_an_id1","sum":2004199787},{"parent":"TRule_an_id.TAlt1","rule":"TRule_an_id.TAlt1.Rule_id1","sum":2004199787},{"parent":"TRule_an_id_as_compat","rule":"TRule_an_id_as_compat.Alt_an_id_as_compat1","sum":2995725},{"parent":"TRule_an_id_as_compat.TAlt1","rule":"TRule_an_id_as_compat.TAlt1.Rule_id_as_compat1","sum":2995725},{"parent":"TRule_an_id_expr","rule":"TRule_an_id_expr.Alt_an_id_expr1","sum":96313621},{"parent":"TRule_an_id_expr.TAlt1","rule":"TRule_an_id_expr.TAlt1.Rule_id_expr1","sum":96313621},{"parent":"TRule_an_id_hint","rule":"TRule_an_id_hint.Alt_an_id_hint1","sum":154481585},{"parent":"TRule_an_id_hint.TAlt1","rule":"TRule_an_id_hint.TAlt1.Rule_id_hint1","sum":154481585},{"parent":"TRule_an_id_or_type","rule":"TRule_an_id_or_type.Alt_an_id_or_type1","sum":9630859718},{"parent":"TRule_an_id_or_type","rule":"TRule_an_id_or_type.Alt_an_id_or_type2","sum":7},{"parent":"TRule_an_id_or_type.TAlt1","rule":"TRule_an_id_or_type.TAlt1.Rule_id_or_type1","sum":9630859718},{"parent":"TRule_an_id_or_type.TAlt2","rule":"TRule_an_id_or_type.TAlt2.Token1","sum":7},{"parent":"TRule_an_id_pure","rule":"TRule_an_id_pure.Alt_an_id_pure1","sum":677783605},{"parent":"TRule_an_id_pure.TAlt1","rule":"TRule_an_id_pure.TAlt1.Rule_identifier1","sum":677783605},{"parent":"TRule_an_id_schema","rule":"TRule_an_id_schema.Alt_an_id_schema1","sum":1181},{"parent":"TRule_an_id_schema.TAlt1","rule":"TRule_an_id_schema.TAlt1.Rule_id_schema1","sum":1181},{"parent":"TRule_an_id_table","rule":"TRule_an_id_table.Alt_an_id_table1","sum":330889868},{"parent":"TRule_an_id_table","rule":"TRule_an_id_table.Alt_an_id_table2","sum":1},{"parent":"TRule_an_id_table.TAlt1","rule":"TRule_an_id_table.TAlt1.Rule_id_table1","sum":330889868},{"parent":"TRule_an_id_table.TAlt2","rule":"TRule_an_id_table.TAlt2.Token1","sum":1},{"parent":"TRule_an_id_window","rule":"TRule_an_id_window.Alt_an_id_window1","sum":46670411},{"parent":"TRule_an_id_window.TAlt1","rule":"TRule_an_id_window.TAlt1.Rule_id_window1","sum":46670411},{"parent":"TRule_an_id_without","rule":"TRule_an_id_without.Alt_an_id_without1","sum":23304335},{"parent":"TRule_an_id_without.TAlt1","rule":"TRule_an_id_without.TAlt1.Rule_id_without1","sum":23304335},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Block2","sum":29479},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Rule_xor_subexpr1","sum":14287217648},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Rule_xor_subexpr2","sum":29543},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Token1","sum":29543},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr1","sum":5164970128},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr10","sum":36006226},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr11","sum":8514188},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr12","sum":14625860},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr2","sum":1772155576},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr3","sum":446923069},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr4","sum":398528656},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr5","sum":77117},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr6","sum":61757734},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr7","sum":928573299},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr8","sum":164072},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr9","sum":511417},{"parent":"TRule_atom_expr.TAlt1","rule":"TRule_atom_expr.TAlt1.Rule_literal_value1","sum":5164970128},{"parent":"TRule_atom_expr.TAlt10","rule":"TRule_atom_expr.TAlt10.Rule_list_literal1","sum":36006226},{"parent":"TRule_atom_expr.TAlt11","rule":"TRule_atom_expr.TAlt11.Rule_dict_literal1","sum":8514188},{"parent":"TRule_atom_expr.TAlt12","rule":"TRule_atom_expr.TAlt12.Rule_struct_literal1","sum":14625860},{"parent":"TRule_atom_expr.TAlt2","rule":"TRule_atom_expr.TAlt2.Rule_bind_parameter1","sum":1772155576},{"parent":"TRule_atom_expr.TAlt3","rule":"TRule_atom_expr.TAlt3.Rule_lambda1","sum":446923069},{"parent":"TRule_atom_expr.TAlt4","rule":"TRule_atom_expr.TAlt4.Rule_cast_expr1","sum":398528656},{"parent":"TRule_atom_expr.TAlt5","rule":"TRule_atom_expr.TAlt5.Rule_exists_expr1","sum":77117},{"parent":"TRule_atom_expr.TAlt6","rule":"TRule_atom_expr.TAlt6.Rule_case_expr1","sum":61757734},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Block3","sum":928573299},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Rule_an_id_or_type1","sum":928573299},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Token2","sum":928573299},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt1","sum":928572063},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt2","sum":1236},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt1","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt1.Rule_id_or_type1","sum":928572063},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt2","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt2.Token1","sum":1236},{"parent":"TRule_atom_expr.TAlt8","rule":"TRule_atom_expr.TAlt8.Rule_value_constructor1","sum":164072},{"parent":"TRule_atom_expr.TAlt9","rule":"TRule_atom_expr.TAlt9.Rule_bitcast_expr1","sum":511417},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Block2","sum":3704552329},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Token1","sum":3704552329},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt1","sum":3704540399},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt2","sum":9450},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt3","sum":2480},{"parent":"TRule_bind_parameter.TBlock2.TAlt1","rule":"TRule_bind_parameter.TBlock2.TAlt1.Rule_an_id_or_type1","sum":3704540399},{"parent":"TRule_bind_parameter.TBlock2.TAlt2","rule":"TRule_bind_parameter.TBlock2.TAlt2.Token1","sum":9450},{"parent":"TRule_bind_parameter.TBlock2.TAlt3","rule":"TRule_bind_parameter.TBlock2.TAlt3.Token1","sum":2480},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Block2","sum":246364},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Rule_bind_parameter1","sum":1007810457},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Rule_bind_parameter2","sum":339375},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Token1","sum":339375},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Block2","sum":138818444},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Rule_add_subexpr1","sum":15466701546},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Rule_add_subexpr2","sum":158398374},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Token1","sum":158398374},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_expr3","sum":511417},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_type_name_simple5","sum":511417},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token1","sum":511417},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token2","sum":511417},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token4","sum":511417},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token6","sum":511417},{"parent":"TRule_bool_value","rule":"TRule_bool_value.Token1","sum":104326396},{"parent":"TRule_call_action","rule":"TRule_call_action.Block1","sum":9449135},{"parent":"TRule_call_action","rule":"TRule_call_action.Block3","sum":7177188},{"parent":"TRule_call_action","rule":"TRule_call_action.Token2","sum":9449135},{"parent":"TRule_call_action","rule":"TRule_call_action.Token4","sum":9449135},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt1","sum":9323053},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt2","sum":126082},{"parent":"TRule_call_action.TBlock1.TAlt1","rule":"TRule_call_action.TBlock1.TAlt1.Rule_bind_parameter1","sum":9323053},{"parent":"TRule_call_action.TBlock1.TAlt2","rule":"TRule_call_action.TBlock1.TAlt2.Token1","sum":126082},{"parent":"TRule_call_action.TBlock3","rule":"TRule_call_action.TBlock3.Rule_expr_list1","sum":7177188},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Block2","sum":1},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Rule_variant_arg1","sum":17996377},{"parent":"TRule_callable_arg.TBlock2","rule":"TRule_callable_arg.TBlock2.Token1","sum":1},{"parent":"TRule_callable_arg.TBlock2","rule":"TRule_callable_arg.TBlock2.Token2","sum":1},{"parent":"TRule_callable_arg.TBlock2","rule":"TRule_callable_arg.TBlock2.Token3","sum":1},{"parent":"TRule_callable_arg_list","rule":"TRule_callable_arg_list.Block2","sum":4372330},{"parent":"TRule_callable_arg_list","rule":"TRule_callable_arg_list.Rule_callable_arg1","sum":9778163},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Rule_callable_arg2","sum":8218214},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Token1","sum":8218214},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block2","sum":4698567},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block3","sum":61757738},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block4","sum":61757738},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token1","sum":61757738},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token5","sum":61757738},{"parent":"TRule_case_expr.TBlock2","rule":"TRule_case_expr.TBlock2.Rule_expr1","sum":4698567},{"parent":"TRule_case_expr.TBlock3","rule":"TRule_case_expr.TBlock3.Rule_when_expr1","sum":158362267},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Rule_expr2","sum":61757738},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Token1","sum":61757738},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_expr3","sum":398573044},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_type_name_or_bind5","sum":398573044},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token1","sum":398573044},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token2","sum":398573044},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token4","sum":398573044},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token6","sum":398573044},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block1","sum":6780419},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block2","sum":374925174},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Rule_an_id1","sum":6780419},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Token2","sum":6780419},{"parent":"TRule_cluster_expr.TBlock2","rule":"TRule_cluster_expr.TBlock2.Alt1","sum":374925174},{"parent":"TRule_cluster_expr.TBlock2.TAlt1","rule":"TRule_cluster_expr.TBlock2.TAlt1.Rule_pure_column_or_named1","sum":374925174},{"parent":"TRule_column_list","rule":"TRule_column_list.Block2","sum":283315},{"parent":"TRule_column_list","rule":"TRule_column_list.Block3","sum":812},{"parent":"TRule_column_list","rule":"TRule_column_list.Rule_column_name1","sum":850906},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Rule_column_name2","sum":1125538},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Token1","sum":1125538},{"parent":"TRule_column_list.TBlock3","rule":"TRule_column_list.TBlock3.Token1","sum":812},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_an_id2","sum":23349011},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_opt_id_prefix1","sum":23349011},{"parent":"TRule_column_order_by_specification","rule":"TRule_column_order_by_specification.Rule_an_id1","sum":107},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_an_id_schema1","sum":1181},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_opt_column_constraints4","sum":1181},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_type_name_or_bind2","sum":1181},{"parent":"TRule_commit_stmt","rule":"TRule_commit_stmt.Token1","sum":13024992},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr1","sum":15934798710},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr2","sum":87770220},{"parent":"TRule_con_subexpr.TAlt1","rule":"TRule_con_subexpr.TAlt1.Rule_unary_subexpr1","sum":15934798710},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_op1","sum":87770220},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_subexpr2","sum":87770220},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr1","sum":52236530},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr2","sum":126151164},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr3","sum":172789592},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr4","sum":25002100},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr5","sum":720021837},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block1","sum":9292433},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block4","sum":92834},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_eq_subexpr3","sum":52236530},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_match_op2","sum":52236530},{"parent":"TRule_cond_expr.TAlt1.TBlock1","rule":"TRule_cond_expr.TAlt1.TBlock1.Token1","sum":9292433},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Rule_eq_subexpr2","sum":92834},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Token1","sum":92834},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block1","sum":26188977},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block3","sum":3143455},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Rule_in_expr4","sum":126151164},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Token2","sum":126151164},{"parent":"TRule_cond_expr.TAlt2.TBlock1","rule":"TRule_cond_expr.TAlt2.TBlock1.Token1","sum":26188977},{"parent":"TRule_cond_expr.TAlt2.TBlock3","rule":"TRule_cond_expr.TAlt2.TBlock3.Token1","sum":3143455},{"parent":"TRule_cond_expr.TAlt3","rule":"TRule_cond_expr.TAlt3.Block1","sum":172789592},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt1","sum":163},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt2","sum":410},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt3","sum":60725071},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt4","sum":112063948},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt1","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt1.Token1","sum":163},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt2","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt2.Token1","sum":410},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token1","sum":60725071},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token2","sum":60725071},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Block1","sum":112022484},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token2","sum":112063948},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token3","sum":112063948},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1.Token1","sum":112022484},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Block1","sum":403852},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Block3","sum":25},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Rule_eq_subexpr4","sum":25002100},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Rule_eq_subexpr6","sum":25002100},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token2","sum":25002100},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token5","sum":25002100},{"parent":"TRule_cond_expr.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt4.TBlock1.Token1","sum":403852},{"parent":"TRule_cond_expr.TAlt4.TBlock3","rule":"TRule_cond_expr.TAlt4.TBlock3.Token1","sum":25},{"parent":"TRule_cond_expr.TAlt5","rule":"TRule_cond_expr.TAlt5.Block1","sum":720021837},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Block1","sum":720023818},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Rule_eq_subexpr2","sum":720023818},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt1","sum":492538742},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt2","sum":172429585},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt3","sum":49596380},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt4","sum":5060501},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt5","sum":398610},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1.Token1","sum":492538742},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2.Token1","sum":172429585},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3.Token1","sum":49596380},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4.Token1","sum":5060501},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5.Rule_distinct_from_op1","sum":398610},{"parent":"TRule_create_table_entry","rule":"TRule_create_table_entry.Alt_create_table_entry1","sum":1181},{"parent":"TRule_create_table_entry","rule":"TRule_create_table_entry.Alt_create_table_entry2","sum":233},{"parent":"TRule_create_table_entry.TAlt1","rule":"TRule_create_table_entry.TAlt1.Rule_column_schema1","sum":1181},{"parent":"TRule_create_table_entry.TAlt2","rule":"TRule_create_table_entry.TAlt2.Rule_table_constraint1","sum":233},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Block3","sum":127},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Block8","sum":127},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Rule_create_table_entry7","sum":127},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Rule_simple_table_ref5","sum":127},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token1","sum":127},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token10","sum":127},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token6","sum":127},{"parent":"TRule_create_table_stmt.TBlock3","rule":"TRule_create_table_stmt.TBlock3.Alt1","sum":127},{"parent":"TRule_create_table_stmt.TBlock3.TAlt1","rule":"TRule_create_table_stmt.TBlock3.TAlt1.Token1","sum":127},{"parent":"TRule_create_table_stmt.TBlock8","rule":"TRule_create_table_stmt.TBlock8.Rule_create_table_entry2","sum":1287},{"parent":"TRule_create_table_stmt.TBlock8","rule":"TRule_create_table_stmt.TBlock8.Token1","sum":1287},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Rule_ordinary_grouping_set_list3","sum":276720},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token1","sum":276720},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token2","sum":276720},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token4","sum":276720},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_bind_parameter2","sum":156488693},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_type_name4","sum":156488693},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token1","sum":156488693},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token3","sum":156488693},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block1","sum":45603},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block2","sum":36158492},{"parent":"TRule_define_action_or_subquery_body.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock1.Token1","sum":45603},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block2","sum":16097297},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block3","sum":23550413},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Rule_sql_stmt_core1","sum":36158492},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Block1","sum":45947941},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Rule_sql_stmt_core2","sum":45947941},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1.Token1","sum":45961035},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock3","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock3.Token1","sum":23576206},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Block5","sum":13965321},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_bind_parameter3","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_define_action_or_subquery_body8","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token1","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token10","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token2","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token4","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token6","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token7","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token9","sum":22288095},{"parent":"TRule_define_action_or_subquery_stmt.TBlock5","rule":"TRule_define_action_or_subquery_stmt.TBlock5.Rule_action_or_subquery_args1","sum":13965321},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block2","sum":8224534},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block3","sum":2250848},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token1","sum":8968921},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token4","sum":8968921},{"parent":"TRule_dict_literal.TBlock2","rule":"TRule_dict_literal.TBlock2.Rule_expr_dict_list1","sum":8224534},{"parent":"TRule_dict_literal.TBlock3","rule":"TRule_dict_literal.TBlock3.Token1","sum":2250848},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Block2","sum":118905},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token1","sum":398610},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token3","sum":398610},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token4","sum":398610},{"parent":"TRule_distinct_from_op.TBlock2","rule":"TRule_distinct_from_op.TBlock2.Token1","sum":118905},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Block2","sum":23326020},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Token1","sum":23326020},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt1","sum":9449135},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt2","sum":13876885},{"parent":"TRule_do_stmt.TBlock2.TAlt1","rule":"TRule_do_stmt.TBlock2.TAlt1.Rule_call_action1","sum":9449135},{"parent":"TRule_do_stmt.TBlock2.TAlt2","rule":"TRule_do_stmt.TBlock2.TAlt2.Rule_inline_action1","sum":13876885},{"parent":"TRule_double_question","rule":"TRule_double_question.Token1","sum":108282209},{"parent":"TRule_double_question","rule":"TRule_double_question.Token2","sum":108282209},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Block2","sum":2568070},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Block3","sum":3},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Rule_simple_table_ref4","sum":2568070},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Token1","sum":2568070},{"parent":"TRule_drop_table_stmt.TBlock2","rule":"TRule_drop_table_stmt.TBlock2.Alt1","sum":2568070},{"parent":"TRule_drop_table_stmt.TBlock2.TAlt1","rule":"TRule_drop_table_stmt.TBlock2.TAlt1.Token1","sum":2568070},{"parent":"TRule_drop_table_stmt.TBlock3","rule":"TRule_drop_table_stmt.TBlock3.Token1","sum":3},{"parent":"TRule_drop_table_stmt.TBlock3","rule":"TRule_drop_table_stmt.TBlock3.Token2","sum":3},{"parent":"TRule_eq_subexpr","rule":"TRule_eq_subexpr.Block2","sum":239600395},{"parent":"TRule_eq_subexpr","rule":"TRule_eq_subexpr.Rule_neq_subexpr1","sum":15109604573},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Rule_neq_subexpr2","sum":239600449},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Token1","sum":239600449},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Block3","sum":77117},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token1","sum":77117},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token2","sum":77117},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token4","sum":77117},{"parent":"TRule_exists_expr.TBlock3","rule":"TRule_exists_expr.TBlock3.Alt1","sum":77117},{"parent":"TRule_exists_expr.TBlock3.TAlt1","rule":"TRule_exists_expr.TBlock3.TAlt1.Rule_select_stmt1","sum":77117},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr1","sum":13700581585},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr2","sum":17389966},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Block2","sum":68378152},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Rule_or_subexpr1","sum":13700581585},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Rule_or_subexpr2","sum":115236866},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Token1","sum":115236866},{"parent":"TRule_expr.TAlt2","rule":"TRule_expr.TAlt2.Rule_type_name_composite1","sum":17389966},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block2","sum":7027260},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block3","sum":6637673},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Rule_expr1","sum":8224534},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Rule_expr2","sum":7027260},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Token1","sum":7027260},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Block3","sum":35232193},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Rule_expr2","sum":42176709},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Token1","sum":42176709},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Rule_expr2","sum":35232193},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Token1","sum":35232193},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Block2","sum":41939238},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Rule_expr1","sum":67533327},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Rule_expr2","sum":206470243},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Token1","sum":206470243},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Block4","sum":12555297},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr1","sum":14494469},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr3","sum":14494469},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Token2","sum":14494469},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr2","sum":31326759},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr4","sum":31326759},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token1","sum":31326759},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token3","sum":31326759},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Block1","sum":2597625},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Rule_order_by_clause2","sum":88715837},{"parent":"TRule_ext_order_by_clause.TBlock1","rule":"TRule_ext_order_by_clause.TBlock1.Token1","sum":2597625},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg1","sum":21372567},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg2","sum":4328246},{"parent":"TRule_flatten_by_arg.TAlt1","rule":"TRule_flatten_by_arg.TAlt1.Rule_named_column1","sum":21372567},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Block3","sum":52259},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Rule_named_expr_list2","sum":4328246},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token1","sum":4328246},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token4","sum":4328246},{"parent":"TRule_flatten_by_arg.TAlt2.TBlock3","rule":"TRule_flatten_by_arg.TAlt2.TBlock3.Token1","sum":52259},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Block2","sum":33642409},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Rule_named_single_source1","sum":1053231068},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Block2","sum":33642409},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Token1","sum":33642409},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt1","sum":25700813},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt2","sum":7941596},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Block1","sum":19640624},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Rule_flatten_by_arg3","sum":25700813},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Token2","sum":25700813},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1.Token1","sum":19640624},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt2","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt2.Token1","sum":7941596},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block1","sum":7010814},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block2","sum":8},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block8","sum":64786},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_bind_parameter4","sum":7010919},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_do_stmt7","sum":7010919},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_expr6","sum":7010919},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token3","sum":7010919},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token5","sum":7010919},{"parent":"TRule_for_stmt.TBlock1","rule":"TRule_for_stmt.TBlock1.Token1","sum":7010814},{"parent":"TRule_for_stmt.TBlock2","rule":"TRule_for_stmt.TBlock2.Token1","sum":8},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Rule_do_stmt2","sum":64786},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Token1","sum":64786},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Block2","sum":1605609},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Block6","sum":6},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Rule_grouping_element_list5","sum":137899286},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Rule_opt_set_quantifier4","sum":137899286},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token1","sum":137899286},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token3","sum":137899286},{"parent":"TRule_group_by_clause.TBlock2","rule":"TRule_group_by_clause.TBlock2.Token1","sum":1605609},{"parent":"TRule_group_by_clause.TBlock6","rule":"TRule_group_by_clause.TBlock6.Rule_an_id2","sum":6},{"parent":"TRule_group_by_clause.TBlock6","rule":"TRule_group_by_clause.TBlock6.Token1","sum":6},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element1","sum":300615590},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element2","sum":62641},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element3","sum":276720},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element4","sum":92425},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element5","sum":23},{"parent":"TRule_grouping_element.TAlt1","rule":"TRule_grouping_element.TAlt1.Rule_ordinary_grouping_set1","sum":300615590},{"parent":"TRule_grouping_element.TAlt2","rule":"TRule_grouping_element.TAlt2.Rule_rollup_list1","sum":62641},{"parent":"TRule_grouping_element.TAlt3","rule":"TRule_grouping_element.TAlt3.Rule_cube_list1","sum":276720},{"parent":"TRule_grouping_element.TAlt4","rule":"TRule_grouping_element.TAlt4.Rule_grouping_sets_specification1","sum":92425},{"parent":"TRule_grouping_element.TAlt5","rule":"TRule_grouping_element.TAlt5.Rule_hopping_window_specification1","sum":23},{"parent":"TRule_grouping_element_list","rule":"TRule_grouping_element_list.Block2","sum":62764930},{"parent":"TRule_grouping_element_list","rule":"TRule_grouping_element_list.Rule_grouping_element1","sum":137991711},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Rule_grouping_element2","sum":163055688},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Token1","sum":163055688},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Rule_grouping_element_list4","sum":92425},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token1","sum":92425},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token2","sum":92425},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token3","sum":92425},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token5","sum":92425},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr3","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr5","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr7","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr9","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token1","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token10","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token2","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token4","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token6","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token8","sum":23},{"parent":"TRule_id","rule":"TRule_id.Alt_id1","sum":12128005704},{"parent":"TRule_id","rule":"TRule_id.Alt_id2","sum":531926389},{"parent":"TRule_id.TAlt1","rule":"TRule_id.TAlt1.Rule_identifier1","sum":12128005704},{"parent":"TRule_id.TAlt2","rule":"TRule_id.TAlt2.Rule_keyword1","sum":531926389},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat1","sum":2993100},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat2","sum":2625},{"parent":"TRule_id_as_compat.TAlt1","rule":"TRule_id_as_compat.TAlt1.Rule_identifier1","sum":2993100},{"parent":"TRule_id_as_compat.TAlt2","rule":"TRule_id_as_compat.TAlt2.Rule_keyword_as_compat1","sum":2625},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr1","sum":6924072359},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr2","sum":319866905},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr3","sum":428215},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr5","sum":35200839},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr6","sum":181516},{"parent":"TRule_id_expr.TAlt1","rule":"TRule_id_expr.TAlt1.Rule_identifier1","sum":6924072359},{"parent":"TRule_id_expr.TAlt2","rule":"TRule_id_expr.TAlt2.Rule_keyword_compat1","sum":319866905},{"parent":"TRule_id_expr.TAlt3","rule":"TRule_id_expr.TAlt3.Rule_keyword_alter_uncompat1","sum":428215},{"parent":"TRule_id_expr.TAlt5","rule":"TRule_id_expr.TAlt5.Rule_keyword_window_uncompat1","sum":35200839},{"parent":"TRule_id_expr.TAlt6","rule":"TRule_id_expr.TAlt6.Rule_keyword_hint_uncompat1","sum":181516},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in1","sum":5638186},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in2","sum":74134},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in4","sum":213},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in5","sum":53},{"parent":"TRule_id_expr_in.TAlt1","rule":"TRule_id_expr_in.TAlt1.Rule_identifier1","sum":5638186},{"parent":"TRule_id_expr_in.TAlt2","rule":"TRule_id_expr_in.TAlt2.Rule_keyword_compat1","sum":74134},{"parent":"TRule_id_expr_in.TAlt4","rule":"TRule_id_expr_in.TAlt4.Rule_keyword_window_uncompat1","sum":213},{"parent":"TRule_id_expr_in.TAlt5","rule":"TRule_id_expr_in.TAlt5.Rule_keyword_hint_uncompat1","sum":53},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint1","sum":154435757},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint2","sum":22914},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint3","sum":22914},{"parent":"TRule_id_hint.TAlt1","rule":"TRule_id_hint.TAlt1.Rule_identifier1","sum":154435757},{"parent":"TRule_id_hint.TAlt2","rule":"TRule_id_hint.TAlt2.Rule_keyword_compat1","sum":22914},{"parent":"TRule_id_hint.TAlt3","rule":"TRule_id_hint.TAlt3.Rule_keyword_expr_uncompat1","sum":22914},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Block1","sum":4766922},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Rule_an_id_or_type2","sum":133786170},{"parent":"TRule_id_or_at.TBlock1","rule":"TRule_id_or_at.TBlock1.Token1","sum":4766922},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type1","sum":10550728727},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type2","sum":11671511},{"parent":"TRule_id_or_type.TAlt1","rule":"TRule_id_or_type.TAlt1.Rule_id1","sum":10550728727},{"parent":"TRule_id_or_type.TAlt2","rule":"TRule_id_or_type.TAlt2.Rule_type_id1","sum":11671511},{"parent":"TRule_id_schema","rule":"TRule_id_schema.Alt_id_schema1","sum":1169},{"parent":"TRule_id_schema","rule":"TRule_id_schema.Alt_id_schema2","sum":12},{"parent":"TRule_id_schema.TAlt1","rule":"TRule_id_schema.TAlt1.Rule_identifier1","sum":1169},{"parent":"TRule_id_schema.TAlt2","rule":"TRule_id_schema.TAlt2.Rule_keyword_compat1","sum":12},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table1","sum":330226976},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table2","sum":648184},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table3","sum":369},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table4","sum":12497},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table5","sum":4},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table6","sum":1828},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table7","sum":10},{"parent":"TRule_id_table.TAlt1","rule":"TRule_id_table.TAlt1.Rule_identifier1","sum":330226976},{"parent":"TRule_id_table.TAlt2","rule":"TRule_id_table.TAlt2.Rule_keyword_compat1","sum":648184},{"parent":"TRule_id_table.TAlt3","rule":"TRule_id_table.TAlt3.Rule_keyword_expr_uncompat1","sum":369},{"parent":"TRule_id_table.TAlt4","rule":"TRule_id_table.TAlt4.Rule_keyword_select_uncompat1","sum":12497},{"parent":"TRule_id_table.TAlt5","rule":"TRule_id_table.TAlt5.Rule_keyword_in_uncompat1","sum":4},{"parent":"TRule_id_table.TAlt6","rule":"TRule_id_table.TAlt6.Rule_keyword_window_uncompat1","sum":1828},{"parent":"TRule_id_table.TAlt7","rule":"TRule_id_table.TAlt7.Rule_keyword_hint_uncompat1","sum":10},{"parent":"TRule_id_table_or_type","rule":"TRule_id_table_or_type.Alt_id_table_or_type1","sum":330889869},{"parent":"TRule_id_table_or_type","rule":"TRule_id_table_or_type.Alt_id_table_or_type2","sum":4256},{"parent":"TRule_id_table_or_type.TAlt1","rule":"TRule_id_table_or_type.TAlt1.Rule_an_id_table1","sum":330889869},{"parent":"TRule_id_table_or_type.TAlt2","rule":"TRule_id_table_or_type.TAlt2.Rule_type_id1","sum":4256},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window1","sum":46399293},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window2","sum":15712},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window3","sum":247560},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window5","sum":7846},{"parent":"TRule_id_window.TAlt1","rule":"TRule_id_window.TAlt1.Rule_identifier1","sum":46399293},{"parent":"TRule_id_window.TAlt2","rule":"TRule_id_window.TAlt2.Rule_keyword_compat1","sum":15712},{"parent":"TRule_id_window.TAlt3","rule":"TRule_id_window.TAlt3.Rule_keyword_expr_uncompat1","sum":247560},{"parent":"TRule_id_window.TAlt5","rule":"TRule_id_window.TAlt5.Rule_keyword_select_uncompat1","sum":7846},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without1","sum":23026253},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without2","sum":276407},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without6","sum":1152},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without7","sum":523},{"parent":"TRule_id_without.TAlt1","rule":"TRule_id_without.TAlt1.Rule_identifier1","sum":23026253},{"parent":"TRule_id_without.TAlt2","rule":"TRule_id_without.TAlt2.Rule_keyword_compat1","sum":276407},{"parent":"TRule_id_without.TAlt6","rule":"TRule_id_without.TAlt6.Rule_keyword_window_uncompat1","sum":1152},{"parent":"TRule_id_without.TAlt7","rule":"TRule_id_without.TAlt7.Rule_keyword_hint_uncompat1","sum":523},{"parent":"TRule_identifier","rule":"TRule_identifier.Token1","sum":20292582404},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block1","sum":8565563},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block5","sum":2975205},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_do_stmt4","sum":8565607},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_expr3","sum":8565607},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Token2","sum":8565607},{"parent":"TRule_if_stmt.TBlock1","rule":"TRule_if_stmt.TBlock1.Token1","sum":8565563},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Rule_do_stmt2","sum":2975205},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Token1","sum":2975205},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_module_path2","sum":16595494},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_named_bind_parameter_list4","sum":16595494},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token1","sum":16595494},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token3","sum":16595494},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr1","sum":2232},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr10","sum":5119349},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr11","sum":454733},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr2","sum":36416170},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr3","sum":65683387},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr4","sum":44388},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr5","sum":4},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr6","sum":2968457},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr7","sum":9749806},{"parent":"TRule_in_atom_expr.TAlt1","rule":"TRule_in_atom_expr.TAlt1.Rule_literal_value1","sum":2232},{"parent":"TRule_in_atom_expr.TAlt10","rule":"TRule_in_atom_expr.TAlt10.Rule_list_literal1","sum":5119349},{"parent":"TRule_in_atom_expr.TAlt11","rule":"TRule_in_atom_expr.TAlt11.Rule_dict_literal1","sum":454733},{"parent":"TRule_in_atom_expr.TAlt2","rule":"TRule_in_atom_expr.TAlt2.Rule_bind_parameter1","sum":36416170},{"parent":"TRule_in_atom_expr.TAlt3","rule":"TRule_in_atom_expr.TAlt3.Rule_lambda1","sum":65683387},{"parent":"TRule_in_atom_expr.TAlt4","rule":"TRule_in_atom_expr.TAlt4.Rule_cast_expr1","sum":44388},{"parent":"TRule_in_atom_expr.TAlt5","rule":"TRule_in_atom_expr.TAlt5.Rule_case_expr1","sum":4},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Block3","sum":2968457},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Rule_an_id_or_type1","sum":2968457},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Token2","sum":2968457},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3","rule":"TRule_in_atom_expr.TAlt6.TBlock3.Alt1","sum":2968457},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1","rule":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1.Rule_id_or_type1","sum":2968457},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Rule_select_stmt2","sum":9749806},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token1","sum":9749806},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token3","sum":9749806},{"parent":"TRule_in_expr","rule":"TRule_in_expr.Rule_in_unary_subexpr1","sum":126151164},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Block1","sum":126151112},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":126151112},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt1","sum":5712586},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt2","sum":120438526},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr_in1","sum":5712586},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2.Rule_in_atom_expr1","sum":120438526},{"parent":"TRule_in_unary_subexpr","rule":"TRule_in_unary_subexpr.Alt_in_unary_subexpr1","sum":126151112},{"parent":"TRule_in_unary_subexpr","rule":"TRule_in_unary_subexpr.Alt_in_unary_subexpr2","sum":52},{"parent":"TRule_in_unary_subexpr.TAlt1","rule":"TRule_in_unary_subexpr.TAlt1.Rule_in_unary_casual_subexpr1","sum":126151112},{"parent":"TRule_in_unary_subexpr.TAlt2","rule":"TRule_in_unary_subexpr.TAlt2.Rule_json_api_expr1","sum":52},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Rule_define_action_or_subquery_body2","sum":13876885},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token1","sum":13876885},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token3","sum":13876885},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token4","sum":13876885},{"parent":"TRule_integer","rule":"TRule_integer.Token1","sum":2804251466},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind1","sum":55657901},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind2","sum":48703},{"parent":"TRule_integer_or_bind.TAlt1","rule":"TRule_integer_or_bind.TAlt1.Rule_integer1","sum":55657901},{"parent":"TRule_integer_or_bind.TAlt2","rule":"TRule_integer_or_bind.TAlt2.Rule_bind_parameter1","sum":48703},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Block2","sum":25371},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Rule_simple_table_ref1","sum":209091152},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Rule_pure_column_list3","sum":25371},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token1","sum":25371},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token2","sum":25371},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Block1","sum":209091152},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_simple_table_ref3","sum":209091152},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_values_source4","sum":209091152},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Token2","sum":209091152},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt1","sum":208980387},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt5","sum":110764},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt6","sum":1},{"parent":"TRule_into_table_stmt.TBlock1.TAlt1","rule":"TRule_into_table_stmt.TBlock1.TAlt1.Token1","sum":208980387},{"parent":"TRule_into_table_stmt.TBlock1.TAlt5","rule":"TRule_into_table_stmt.TBlock1.TAlt5.Token1","sum":110764},{"parent":"TRule_into_table_stmt.TBlock1.TAlt6","rule":"TRule_into_table_stmt.TBlock1.TAlt6.Token1","sum":1},{"parent":"TRule_into_values_source","rule":"TRule_into_values_source.Alt_into_values_source1","sum":209091152},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Block1","sum":4514874},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Rule_values_source2","sum":209091152},{"parent":"TRule_into_values_source.TAlt1.TBlock1","rule":"TRule_into_values_source.TAlt1.TBlock1.Rule_pure_column_list1","sum":4514874},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Block2","sum":2765415575},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Rule_invoke_expr_tail4","sum":2879693756},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token1","sum":2879693756},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token3","sum":2879693756},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt1","sum":2706379021},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt2","sum":59036554},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Block3","sum":9657583},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_named_expr_list2","sum":2706379021},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_opt_set_quantifier1","sum":2706379021},{"parent":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3","rule":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3.Token1","sum":9657583},{"parent":"TRule_invoke_expr.TBlock2.TAlt2","rule":"TRule_invoke_expr.TBlock2.TAlt2.Token1","sum":59036554},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block1","sum":7217779},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block2","sum":45342787},{"parent":"TRule_invoke_expr_tail.TBlock1","rule":"TRule_invoke_expr_tail.TBlock1.Alt1","sum":7217779},{"parent":"TRule_invoke_expr_tail.TBlock1.TAlt1","rule":"TRule_invoke_expr_tail.TBlock1.TAlt1.Rule_null_treatment1","sum":7217779},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Rule_window_name_or_specification2","sum":45342787},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Token1","sum":45342787},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint1","sum":173168424},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint2","sum":32475186},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Rule_expr2","sum":173168424},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Token1","sum":173168424},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Rule_pure_column_or_named_list2","sum":32475186},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Token1","sum":32475186},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op1","sum":28099},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op2","sum":208703034},{"parent":"TRule_join_op.TAlt1","rule":"TRule_join_op.TAlt1.Token1","sum":28099},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Block2","sum":208703034},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Token3","sum":208703034},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt1","sum":174912521},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt2","sum":30731089},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt3","sum":3059424},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block1","sum":126817883},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block2","sum":295367},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt1","sum":118904169},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt2","sum":1698819},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt3","sum":285680},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt4","sum":5929215},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Block2","sum":19688658},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Token1","sum":118904169},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2.Token1","sum":19688658},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Block2","sum":519436},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Token1","sum":1698819},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2.Token1","sum":519436},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3.Token1","sum":285680},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4.Token1","sum":5929215},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2.Token1","sum":295367},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt2.Token1","sum":30731089},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt3.Token1","sum":3059424},{"parent":"TRule_join_source","rule":"TRule_join_source.Block1","sum":616452},{"parent":"TRule_join_source","rule":"TRule_join_source.Block3","sum":145482737},{"parent":"TRule_join_source","rule":"TRule_join_source.Rule_flatten_source2","sum":844499935},{"parent":"TRule_join_source.TBlock1","rule":"TRule_join_source.TBlock1.Token1","sum":616452},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block2","sum":14042710},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block4","sum":205643610},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_flatten_source3","sum":208731133},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_join_op1","sum":208731133},{"parent":"TRule_join_source.TBlock3.TBlock2","rule":"TRule_join_source.TBlock3.TBlock2.Token1","sum":14042710},{"parent":"TRule_join_source.TBlock3.TBlock4","rule":"TRule_join_source.TBlock3.TBlock4.Rule_join_constraint1","sum":205643610},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr1","sum":5839155},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr2","sum":187482},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr3","sum":317059},{"parent":"TRule_json_api_expr.TAlt1","rule":"TRule_json_api_expr.TAlt1.Rule_json_value1","sum":5839155},{"parent":"TRule_json_api_expr.TAlt2","rule":"TRule_json_api_expr.TAlt2.Rule_json_exists1","sum":187482},{"parent":"TRule_json_api_expr.TAlt3","rule":"TRule_json_api_expr.TAlt3.Rule_json_query1","sum":317059},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler1","sum":6990},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler2","sum":14322},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler3","sum":200611},{"parent":"TRule_json_case_handler.TAlt1","rule":"TRule_json_case_handler.TAlt1.Token1","sum":6990},{"parent":"TRule_json_case_handler.TAlt2","rule":"TRule_json_case_handler.TAlt2.Token1","sum":14322},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Rule_expr2","sum":200611},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Token1","sum":200611},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Block4","sum":20534},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_expr1","sum":6343696},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_jsonpath_spec3","sum":6343696},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Token2","sum":6343696},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Rule_json_variables2","sum":20534},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Token1","sum":20534},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Block4","sum":92},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Rule_json_common_args3","sum":187482},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token1","sum":187482},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token2","sum":187482},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token5","sum":187482},{"parent":"TRule_json_exists.TBlock4","rule":"TRule_json_exists.TBlock4.Rule_json_exists_handler1","sum":92},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token1","sum":92},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token2","sum":92},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token3","sum":92},{"parent":"TRule_json_query","rule":"TRule_json_query.Block4","sum":190823},{"parent":"TRule_json_query","rule":"TRule_json_query.Block5","sum":86},{"parent":"TRule_json_query","rule":"TRule_json_query.Block6","sum":4124},{"parent":"TRule_json_query","rule":"TRule_json_query.Rule_json_common_args3","sum":317059},{"parent":"TRule_json_query","rule":"TRule_json_query.Token1","sum":317059},{"parent":"TRule_json_query","rule":"TRule_json_query.Token2","sum":317059},{"parent":"TRule_json_query","rule":"TRule_json_query.Token7","sum":317059},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Rule_json_query_wrapper1","sum":190823},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Token2","sum":190823},{"parent":"TRule_json_query.TBlock5","rule":"TRule_json_query.TBlock5.Rule_json_query_handler1","sum":86},{"parent":"TRule_json_query.TBlock5","rule":"TRule_json_query.TBlock5.Token2","sum":86},{"parent":"TRule_json_query.TBlock5","rule":"TRule_json_query.TBlock5.Token3","sum":86},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Rule_json_query_handler1","sum":4124},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Token2","sum":4124},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Token3","sum":4124},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler1","sum":1675},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler2","sum":26},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler3","sum":2290},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler4","sum":219},{"parent":"TRule_json_query_handler.TAlt1","rule":"TRule_json_query_handler.TAlt1.Token1","sum":1675},{"parent":"TRule_json_query_handler.TAlt2","rule":"TRule_json_query_handler.TAlt2.Token1","sum":26},{"parent":"TRule_json_query_handler.TAlt3","rule":"TRule_json_query_handler.TAlt3.Token1","sum":2290},{"parent":"TRule_json_query_handler.TAlt3","rule":"TRule_json_query_handler.TAlt3.Token2","sum":2290},{"parent":"TRule_json_query_handler.TAlt4","rule":"TRule_json_query_handler.TAlt4.Token1","sum":219},{"parent":"TRule_json_query_handler.TAlt4","rule":"TRule_json_query_handler.TAlt4.Token2","sum":219},{"parent":"TRule_json_query_wrapper","rule":"TRule_json_query_wrapper.Alt_json_query_wrapper1","sum":45},{"parent":"TRule_json_query_wrapper","rule":"TRule_json_query_wrapper.Alt_json_query_wrapper2","sum":190778},{"parent":"TRule_json_query_wrapper.TAlt1","rule":"TRule_json_query_wrapper.TAlt1.Block2","sum":10},{"parent":"TRule_json_query_wrapper.TAlt1","rule":"TRule_json_query_wrapper.TAlt1.Token1","sum":45},{"parent":"TRule_json_query_wrapper.TAlt1.TBlock2","rule":"TRule_json_query_wrapper.TAlt1.TBlock2.Token1","sum":10},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Block2","sum":166445},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Block3","sum":32190},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Token1","sum":190778},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock2","rule":"TRule_json_query_wrapper.TAlt2.TBlock2.Token1","sum":166445},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock3","rule":"TRule_json_query_wrapper.TAlt2.TBlock3.Token1","sum":32190},{"parent":"TRule_json_value","rule":"TRule_json_value.Block4","sum":1332342},{"parent":"TRule_json_value","rule":"TRule_json_value.Block5","sum":202460},{"parent":"TRule_json_value","rule":"TRule_json_value.Rule_json_common_args3","sum":5839155},{"parent":"TRule_json_value","rule":"TRule_json_value.Token1","sum":5839155},{"parent":"TRule_json_value","rule":"TRule_json_value.Token2","sum":5839155},{"parent":"TRule_json_value","rule":"TRule_json_value.Token6","sum":5839155},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Rule_type_name_simple2","sum":1332342},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Token1","sum":1332342},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Rule_json_case_handler1","sum":221923},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token2","sum":221923},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token3","sum":221923},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_expr1","sum":20541},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_json_variable_name3","sum":20541},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Token2","sum":20541},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name1","sum":18269},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name2","sum":2272},{"parent":"TRule_json_variable_name.TAlt1","rule":"TRule_json_variable_name.TAlt1.Rule_id_expr1","sum":18269},{"parent":"TRule_json_variable_name.TAlt2","rule":"TRule_json_variable_name.TAlt2.Token1","sum":2272},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Block2","sum":7},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Rule_json_variable1","sum":20534},{"parent":"TRule_json_variables.TBlock2","rule":"TRule_json_variables.TBlock2.Rule_json_variable2","sum":7},{"parent":"TRule_json_variables.TBlock2","rule":"TRule_json_variables.TBlock2.Token1","sum":7},{"parent":"TRule_jsonpath_spec","rule":"TRule_jsonpath_spec.Token1","sum":6343696},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Rule_expr2","sum":173531558},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token1","sum":173531558},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token3","sum":173531558},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword1","sum":481505456},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword2","sum":33556549},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword3","sum":509133},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword4","sum":9140242},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword5","sum":777905},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword6","sum":23579},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword7","sum":3897493},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword8","sum":2516032},{"parent":"TRule_keyword.TAlt1","rule":"TRule_keyword.TAlt1.Rule_keyword_compat1","sum":481505456},{"parent":"TRule_keyword.TAlt2","rule":"TRule_keyword.TAlt2.Rule_keyword_expr_uncompat1","sum":33556549},{"parent":"TRule_keyword.TAlt3","rule":"TRule_keyword.TAlt3.Rule_keyword_table_uncompat1","sum":509133},{"parent":"TRule_keyword.TAlt4","rule":"TRule_keyword.TAlt4.Rule_keyword_select_uncompat1","sum":9140242},{"parent":"TRule_keyword.TAlt5","rule":"TRule_keyword.TAlt5.Rule_keyword_alter_uncompat1","sum":777905},{"parent":"TRule_keyword.TAlt6","rule":"TRule_keyword.TAlt6.Rule_keyword_in_uncompat1","sum":23579},{"parent":"TRule_keyword.TAlt7","rule":"TRule_keyword.TAlt7.Rule_keyword_window_uncompat1","sum":3897493},{"parent":"TRule_keyword.TAlt8","rule":"TRule_keyword.TAlt8.Rule_keyword_hint_uncompat1","sum":2516032},{"parent":"TRule_keyword_alter_uncompat","rule":"TRule_keyword_alter_uncompat.Token1","sum":1206120},{"parent":"TRule_keyword_as_compat","rule":"TRule_keyword_as_compat.Token1","sum":2625},{"parent":"TRule_keyword_compat","rule":"TRule_keyword_compat.Token1","sum":802409724},{"parent":"TRule_keyword_expr_uncompat","rule":"TRule_keyword_expr_uncompat.Token1","sum":33827392},{"parent":"TRule_keyword_hint_uncompat","rule":"TRule_keyword_hint_uncompat.Token1","sum":2698134},{"parent":"TRule_keyword_in_uncompat","rule":"TRule_keyword_in_uncompat.Token1","sum":23583},{"parent":"TRule_keyword_select_uncompat","rule":"TRule_keyword_select_uncompat.Token1","sum":9160585},{"parent":"TRule_keyword_table_uncompat","rule":"TRule_keyword_table_uncompat.Token1","sum":509133},{"parent":"TRule_keyword_window_uncompat","rule":"TRule_keyword_window_uncompat.Token1","sum":39101525},{"parent":"TRule_lambda","rule":"TRule_lambda.Block2","sum":208939219},{"parent":"TRule_lambda","rule":"TRule_lambda.Rule_smart_parenthesis1","sum":512606456},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Block2","sum":208939219},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Token1","sum":208939219},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt1","sum":42650423},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt2","sum":166288796},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Rule_expr2","sum":42650423},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token1","sum":42650423},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token3","sum":42650423},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Rule_lambda_body2","sum":166288796},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token1","sum":166288796},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token3","sum":166288796},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block1","sum":158},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block2","sum":34782650},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block5","sum":87670061},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Rule_expr4","sum":166288796},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Token3","sum":166288796},{"parent":"TRule_lambda_body.TBlock1","rule":"TRule_lambda_body.TBlock1.Token1","sum":158},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Block2","sum":63758860},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Rule_lambda_stmt1","sum":63758860},{"parent":"TRule_lambda_body.TBlock2.TBlock2","rule":"TRule_lambda_body.TBlock2.TBlock2.Token1","sum":63760050},{"parent":"TRule_lambda_body.TBlock5","rule":"TRule_lambda_body.TBlock5.Token1","sum":87678636},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt1","sum":63756201},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt2","sum":2659},{"parent":"TRule_lambda_stmt.TAlt1","rule":"TRule_lambda_stmt.TAlt1.Rule_named_nodes_stmt1","sum":63756201},{"parent":"TRule_lambda_stmt.TAlt2","rule":"TRule_lambda_stmt.TAlt2.Rule_import_stmt1","sum":2659},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block2","sum":35369157},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block3","sum":2299735},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token1","sum":41125575},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token4","sum":41125575},{"parent":"TRule_list_literal.TBlock2","rule":"TRule_list_literal.TBlock2.Rule_expr_list1","sum":35369157},{"parent":"TRule_list_literal.TBlock3","rule":"TRule_list_literal.TBlock3.Token1","sum":2299735},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value1","sum":2748593564},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value10","sum":2},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value2","sum":109140186},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value3","sum":2123403353},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value5","sum":79508859},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value9","sum":104326396},{"parent":"TRule_literal_value.TAlt1","rule":"TRule_literal_value.TAlt1.Rule_integer1","sum":2748593564},{"parent":"TRule_literal_value.TAlt10","rule":"TRule_literal_value.TAlt10.Token1","sum":2},{"parent":"TRule_literal_value.TAlt2","rule":"TRule_literal_value.TAlt2.Rule_real1","sum":109140186},{"parent":"TRule_literal_value.TAlt3","rule":"TRule_literal_value.TAlt3.Token1","sum":2123403353},{"parent":"TRule_literal_value.TAlt5","rule":"TRule_literal_value.TAlt5.Token1","sum":79508859},{"parent":"TRule_literal_value.TAlt9","rule":"TRule_literal_value.TAlt9.Rule_bool_value1","sum":104326396},{"parent":"TRule_match_op","rule":"TRule_match_op.Token1","sum":52236530},{"parent":"TRule_module_path","rule":"TRule_module_path.Block3","sum":362424},{"parent":"TRule_module_path","rule":"TRule_module_path.Rule_an_id2","sum":16595494},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Rule_an_id2","sum":1080322},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Token1","sum":1080322},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Block2","sum":115281840},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Rule_con_subexpr1","sum":15793033935},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Rule_con_subexpr2","sum":229534995},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Token1","sum":229534995},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Block2","sum":137094},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Rule_bind_parameter1","sum":37928631},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Rule_bind_parameter2","sum":137094},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Token1","sum":137094},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Block2","sum":7067422},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Rule_named_bind_parameter1","sum":16595494},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Rule_named_bind_parameter2","sum":21333137},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Token1","sum":21333137},{"parent":"TRule_named_column","rule":"TRule_named_column.Block2","sum":7179412},{"parent":"TRule_named_column","rule":"TRule_named_column.Rule_column_name1","sum":21372567},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Rule_an_id2","sum":7179412},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Token1","sum":7179412},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Block2","sum":156378154},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Rule_expr1","sum":7199519757},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Rule_an_id_or_type2","sum":156378154},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Token1","sum":156378154},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Block2","sum":1184007000},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Rule_named_expr1","sum":3241310082},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Rule_named_expr2","sum":3464332706},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Token1","sum":3464332706},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Block3","sum":1007810457},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Rule_bind_parameter_list1","sum":1007810457},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Token2","sum":1007810457},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt1","sum":677636582},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt2","sum":330173875},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt1","rule":"TRule_named_nodes_stmt.TBlock3.TAlt1.Rule_expr1","sum":677636582},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt2","rule":"TRule_named_nodes_stmt.TBlock3.TAlt2.Rule_subselect_stmt1","sum":330173875},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block2","sum":1},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block3","sum":442845089},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block4","sum":404126},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Rule_single_source1","sum":1058832771},{"parent":"TRule_named_single_source.TBlock2","rule":"TRule_named_single_source.TBlock2.Rule_row_pattern_recognition_clause1","sum":1},{"parent":"TRule_named_single_source.TBlock3","rule":"TRule_named_single_source.TBlock3.Block1","sum":442845089},{"parent":"TRule_named_single_source.TBlock3","rule":"TRule_named_single_source.TBlock3.Block2","sum":159943},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt1","sum":440715497},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt2","sum":2129592},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Rule_an_id2","sum":440715497},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Token1","sum":440715497},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt2","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt2.Rule_an_id_as_compat1","sum":2129592},{"parent":"TRule_named_single_source.TBlock3.TBlock2","rule":"TRule_named_single_source.TBlock3.TBlock2.Rule_pure_column_list1","sum":159943},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt1","sum":75292},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt2","sum":328834},{"parent":"TRule_named_single_source.TBlock4.TAlt1","rule":"TRule_named_single_source.TBlock4.TAlt1.Rule_sample_clause1","sum":75292},{"parent":"TRule_named_single_source.TBlock4.TAlt2","rule":"TRule_named_single_source.TBlock4.TAlt2.Rule_tablesample_clause1","sum":328834},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block2","sum":9145239},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block3","sum":112058899},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Rule_bit_subexpr1","sum":15457487231},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Block1","sum":9214315},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Rule_bit_subexpr2","sum":9214315},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt1","sum":8101859},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt2","sum":53409},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt3","sum":469},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt4","sum":23},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt5","sum":758109},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt6","sum":134813},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt7","sum":165633},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1.Token1","sum":8101859},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2.Rule_shift_right1","sum":53409},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt3","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt3.Token1","sum":469},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt4","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt4.Rule_rot_right1","sum":23},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt5","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt5.Token1","sum":758109},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6.Token1","sum":134813},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7.Token1","sum":165633},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt1","sum":108282209},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt2","sum":3776690},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_double_question1","sum":108282209},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_neq_subexpr2","sum":108282209},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2","rule":"TRule_neq_subexpr.TBlock3.TAlt2.Block1","sum":3776690},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1","rule":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1.Token1","sum":3788579},{"parent":"TRule_new_window_name","rule":"TRule_new_window_name.Rule_window_name1","sum":14168963},{"parent":"TRule_null_treatment","rule":"TRule_null_treatment.Alt_null_treatment1","sum":45},{"parent":"TRule_null_treatment","rule":"TRule_null_treatment.Alt_null_treatment2","sum":7217734},{"parent":"TRule_null_treatment.TAlt1","rule":"TRule_null_treatment.TAlt1.Token1","sum":45},{"parent":"TRule_null_treatment.TAlt1","rule":"TRule_null_treatment.TAlt1.Token2","sum":45},{"parent":"TRule_null_treatment.TAlt2","rule":"TRule_null_treatment.TAlt2.Token1","sum":7217734},{"parent":"TRule_null_treatment.TAlt2","rule":"TRule_null_treatment.TAlt2.Token2","sum":7217734},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Block1","sum":5292495},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Rule_id_or_at2","sum":133786170},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Rule_cluster_expr1","sum":5292495},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Token2","sum":5292495},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Block2","sum":27133},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Rule_bind_parameter1","sum":21477760},{"parent":"TRule_opt_bind_parameter.TBlock2","rule":"TRule_opt_bind_parameter.TBlock2.Token1","sum":27133},{"parent":"TRule_opt_id_prefix","rule":"TRule_opt_id_prefix.Block1","sum":83040753},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Rule_an_id1","sum":83040753},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Token2","sum":83040753},{"parent":"TRule_opt_id_prefix_or_type","rule":"TRule_opt_id_prefix_or_type.Block1","sum":777899391},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Rule_an_id_or_type1","sum":777899391},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Token2","sum":777899391},{"parent":"TRule_opt_set_quantifier","rule":"TRule_opt_set_quantifier.Block1","sum":70393678},{"parent":"TRule_opt_set_quantifier.TBlock1","rule":"TRule_opt_set_quantifier.TBlock1.Token1","sum":70393678},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Block2","sum":277309968},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Rule_and_subexpr1","sum":13815818451},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Rule_and_subexpr2","sum":471399197},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Token1","sum":471399197},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Rule_sort_specification_list3","sum":107764368},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token1","sum":107764368},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token2","sum":107764368},{"parent":"TRule_ordinary_grouping_set","rule":"TRule_ordinary_grouping_set.Rule_named_expr1","sum":301387765},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Block2","sum":199610},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Rule_ordinary_grouping_set1","sum":339361},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Rule_ordinary_grouping_set2","sum":432814},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Token1","sum":432814},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Block4","sum":792392746},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_an_id3","sum":897035838},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_opt_id_prefix_or_type2","sum":897035838},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Token1","sum":897035838},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt1","sum":744372125},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt2","sum":48020621},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Rule_pragma_value2","sum":744372125},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Token1","sum":744372125},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Block3","sum":17718783},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Rule_pragma_value2","sum":48020621},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token1","sum":48020621},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token4","sum":48020621},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Rule_pragma_value2","sum":18536615},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Token1","sum":18536615},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value2","sum":256154},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value3","sum":798322117},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value5","sum":12351090},{"parent":"TRule_pragma_value.TAlt2","rule":"TRule_pragma_value.TAlt2.Rule_id1","sum":256154},{"parent":"TRule_pragma_value.TAlt3","rule":"TRule_pragma_value.TAlt3.Token1","sum":798322117},{"parent":"TRule_pragma_value.TAlt5","rule":"TRule_pragma_value.TAlt5.Rule_bind_parameter1","sum":12351090},{"parent":"TRule_process_core","rule":"TRule_process_core.Block4","sum":1132},{"parent":"TRule_process_core","rule":"TRule_process_core.Block5","sum":1921069},{"parent":"TRule_process_core","rule":"TRule_process_core.Rule_named_single_source3","sum":4540825},{"parent":"TRule_process_core","rule":"TRule_process_core.Token1","sum":4540825},{"parent":"TRule_process_core.TBlock4","rule":"TRule_process_core.TBlock4.Rule_named_single_source2","sum":1133},{"parent":"TRule_process_core.TBlock4","rule":"TRule_process_core.TBlock4.Token1","sum":1133},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block3","sum":46},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block5","sum":4667},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block7","sum":34},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Rule_using_call_expr2","sum":1921069},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Token1","sum":1921069},{"parent":"TRule_process_core.TBlock5.TBlock3","rule":"TRule_process_core.TBlock5.TBlock3.Rule_an_id2","sum":46},{"parent":"TRule_process_core.TBlock5.TBlock3","rule":"TRule_process_core.TBlock5.TBlock3.Token1","sum":46},{"parent":"TRule_process_core.TBlock5.TBlock5","rule":"TRule_process_core.TBlock5.TBlock5.Rule_expr2","sum":4667},{"parent":"TRule_process_core.TBlock5.TBlock5","rule":"TRule_process_core.TBlock5.TBlock5.Token1","sum":4667},{"parent":"TRule_process_core.TBlock5.TBlock7","rule":"TRule_process_core.TBlock5.TBlock7.Rule_order_by_clause2","sum":34},{"parent":"TRule_process_core.TBlock5.TBlock7","rule":"TRule_process_core.TBlock5.TBlock7.Token1","sum":34},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Block3","sum":3960275},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Rule_an_id2","sum":4700188},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token1","sum":4700188},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token4","sum":4700188},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Rule_an_id2","sum":35264390},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Token1","sum":35264390},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named1","sum":6597834},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named2","sum":425423322},{"parent":"TRule_pure_column_or_named.TAlt1","rule":"TRule_pure_column_or_named.TAlt1.Rule_bind_parameter1","sum":6597834},{"parent":"TRule_pure_column_or_named.TAlt2","rule":"TRule_pure_column_or_named.TAlt2.Rule_an_id1","sum":425423322},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Block3","sum":11686222},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Rule_pure_column_or_named2","sum":32475186},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token1","sum":32475186},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token4","sum":32475186},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Rule_pure_column_or_named2","sum":21737177},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Token1","sum":21737177},{"parent":"TRule_real","rule":"TRule_real.Token1","sum":109140186},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block11","sum":8903},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block13","sum":26296},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block3","sum":120701},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block4","sum":303456},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block8","sum":315166},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_column_list6","sum":850906},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_named_single_source2","sum":850906},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_using_call_expr9","sum":850906},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token1","sum":850906},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token5","sum":850906},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token7","sum":850906},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Rule_expr2","sum":8903},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Token1","sum":8903},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Rule_order_by_clause2","sum":26296},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Token1","sum":26296},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Rule_named_single_source2","sum":208839},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Token1","sum":208839},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Rule_sort_specification_list2","sum":303456},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Token1","sum":303456},{"parent":"TRule_reduce_core.TBlock8","rule":"TRule_reduce_core.TBlock8.Token1","sum":315166},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Rule_expr3","sum":9298},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token1","sum":9298},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token2","sum":9298},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token4","sum":9298},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column1","sum":250526986},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column2","sum":3450415722},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Rule_opt_id_prefix1","sum":250526986},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Token2","sum":250526986},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Block2","sum":1988884363},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Rule_expr1","sum":3450415722},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt1","sum":1988018230},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt2","sum":866133},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Rule_an_id_or_type2","sum":1988018230},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Token1","sum":1988018230},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt2","rule":"TRule_result_column.TAlt2.TBlock2.TAlt2.Rule_an_id_as_compat1","sum":866133},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Rule_ordinary_grouping_set_list3","sum":62641},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token1","sum":62641},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token2","sum":62641},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token4","sum":62641},{"parent":"TRule_rot_right","rule":"TRule_rot_right.Token1","sum":23},{"parent":"TRule_rot_right","rule":"TRule_rot_right.Token2","sum":23},{"parent":"TRule_rot_right","rule":"TRule_rot_right.Token3","sum":23},{"parent":"TRule_row_pattern","rule":"TRule_row_pattern.Rule_row_pattern_term1","sum":2},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Rule_row_pattern5","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Rule_row_pattern_definition_list9","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token3","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token4","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token6","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token8","sum":1},{"parent":"TRule_row_pattern_definition","rule":"TRule_row_pattern_definition.Rule_row_pattern_definition_search_condition3","sum":1},{"parent":"TRule_row_pattern_definition","rule":"TRule_row_pattern_definition.Rule_row_pattern_definition_variable_name1","sum":1},{"parent":"TRule_row_pattern_definition","rule":"TRule_row_pattern_definition.Token2","sum":1},{"parent":"TRule_row_pattern_definition_list","rule":"TRule_row_pattern_definition_list.Rule_row_pattern_definition1","sum":1},{"parent":"TRule_row_pattern_definition_search_condition","rule":"TRule_row_pattern_definition_search_condition.Rule_search_condition1","sum":1},{"parent":"TRule_row_pattern_definition_variable_name","rule":"TRule_row_pattern_definition_variable_name.Rule_row_pattern_variable_name1","sum":1},{"parent":"TRule_row_pattern_factor","rule":"TRule_row_pattern_factor.Block2","sum":1},{"parent":"TRule_row_pattern_factor","rule":"TRule_row_pattern_factor.Rule_row_pattern_primary1","sum":2},{"parent":"TRule_row_pattern_factor.TBlock2","rule":"TRule_row_pattern_factor.TBlock2.Rule_row_pattern_quantifier1","sum":1},{"parent":"TRule_row_pattern_measure_definition","rule":"TRule_row_pattern_measure_definition.Rule_an_id3","sum":3},{"parent":"TRule_row_pattern_measure_definition","rule":"TRule_row_pattern_measure_definition.Rule_expr1","sum":3},{"parent":"TRule_row_pattern_measure_definition","rule":"TRule_row_pattern_measure_definition.Token2","sum":3},{"parent":"TRule_row_pattern_measure_list","rule":"TRule_row_pattern_measure_list.Block2","sum":1},{"parent":"TRule_row_pattern_measure_list","rule":"TRule_row_pattern_measure_list.Rule_row_pattern_measure_definition1","sum":1},{"parent":"TRule_row_pattern_measure_list.TBlock2","rule":"TRule_row_pattern_measure_list.TBlock2.Rule_row_pattern_measure_definition2","sum":2},{"parent":"TRule_row_pattern_measure_list.TBlock2","rule":"TRule_row_pattern_measure_list.TBlock2.Token1","sum":2},{"parent":"TRule_row_pattern_measures","rule":"TRule_row_pattern_measures.Rule_row_pattern_measure_list2","sum":1},{"parent":"TRule_row_pattern_measures","rule":"TRule_row_pattern_measures.Token1","sum":1},{"parent":"TRule_row_pattern_primary","rule":"TRule_row_pattern_primary.Alt_row_pattern_primary1","sum":1},{"parent":"TRule_row_pattern_primary","rule":"TRule_row_pattern_primary.Alt_row_pattern_primary4","sum":1},{"parent":"TRule_row_pattern_primary.TAlt1","rule":"TRule_row_pattern_primary.TAlt1.Rule_row_pattern_primary_variable_name1","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4","rule":"TRule_row_pattern_primary.TAlt4.Block2","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4","rule":"TRule_row_pattern_primary.TAlt4.Token1","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4","rule":"TRule_row_pattern_primary.TAlt4.Token3","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4.TBlock2","rule":"TRule_row_pattern_primary.TAlt4.TBlock2.Rule_row_pattern1","sum":1},{"parent":"TRule_row_pattern_primary_variable_name","rule":"TRule_row_pattern_primary_variable_name.Rule_row_pattern_variable_name1","sum":1},{"parent":"TRule_row_pattern_quantifier","rule":"TRule_row_pattern_quantifier.Alt_row_pattern_quantifier5","sum":1},{"parent":"TRule_row_pattern_quantifier.TAlt5","rule":"TRule_row_pattern_quantifier.TAlt5.Rule_integer2","sum":1},{"parent":"TRule_row_pattern_quantifier.TAlt5","rule":"TRule_row_pattern_quantifier.TAlt5.Token1","sum":1},{"parent":"TRule_row_pattern_quantifier.TAlt5","rule":"TRule_row_pattern_quantifier.TAlt5.Token3","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block3","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block4","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block5","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block6","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Rule_row_pattern_common_syntax7","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Token1","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Token2","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Token8","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock3","rule":"TRule_row_pattern_recognition_clause.TBlock3.Rule_window_partition_clause1","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock4","rule":"TRule_row_pattern_recognition_clause.TBlock4.Rule_order_by_clause1","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock5","rule":"TRule_row_pattern_recognition_clause.TBlock5.Rule_row_pattern_measures1","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock6","rule":"TRule_row_pattern_recognition_clause.TBlock6.Rule_row_pattern_rows_per_match1","sum":1},{"parent":"TRule_row_pattern_rows_per_match","rule":"TRule_row_pattern_rows_per_match.Alt_row_pattern_rows_per_match1","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token1","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token2","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token3","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token4","sum":1},{"parent":"TRule_row_pattern_term","rule":"TRule_row_pattern_term.Block1","sum":2},{"parent":"TRule_row_pattern_term.TBlock1","rule":"TRule_row_pattern_term.TBlock1.Rule_row_pattern_factor1","sum":2},{"parent":"TRule_row_pattern_variable_name","rule":"TRule_row_pattern_variable_name.Rule_identifier1","sum":2},{"parent":"TRule_sample_clause","rule":"TRule_sample_clause.Rule_expr2","sum":75292},{"parent":"TRule_sample_clause","rule":"TRule_sample_clause.Token1","sum":75292},{"parent":"TRule_sampling_mode","rule":"TRule_sampling_mode.Token1","sum":328834},{"parent":"TRule_search_condition","rule":"TRule_search_condition.Rule_expr1","sum":1},{"parent":"TRule_select_core","rule":"TRule_select_core.Block1","sum":10673659},{"parent":"TRule_select_core","rule":"TRule_select_core.Block10","sum":340990952},{"parent":"TRule_select_core","rule":"TRule_select_core.Block11","sum":137899286},{"parent":"TRule_select_core","rule":"TRule_select_core.Block12","sum":12067250},{"parent":"TRule_select_core","rule":"TRule_select_core.Block13","sum":13593427},{"parent":"TRule_select_core","rule":"TRule_select_core.Block14","sum":88715837},{"parent":"TRule_select_core","rule":"TRule_select_core.Block3","sum":117},{"parent":"TRule_select_core","rule":"TRule_select_core.Block6","sum":529926726},{"parent":"TRule_select_core","rule":"TRule_select_core.Block7","sum":93760052},{"parent":"TRule_select_core","rule":"TRule_select_core.Block8","sum":24912265},{"parent":"TRule_select_core","rule":"TRule_select_core.Block9","sum":833826276},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_opt_set_quantifier4","sum":905048656},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_result_column5","sum":905048656},{"parent":"TRule_select_core","rule":"TRule_select_core.Token2","sum":905048656},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Rule_join_source2","sum":10673659},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Token1","sum":10673659},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Rule_expr2","sum":340990952},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Token1","sum":340990952},{"parent":"TRule_select_core.TBlock11","rule":"TRule_select_core.TBlock11.Rule_group_by_clause1","sum":137899286},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Rule_expr2","sum":12067250},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Token1","sum":12067250},{"parent":"TRule_select_core.TBlock13","rule":"TRule_select_core.TBlock13.Rule_window_clause1","sum":13593427},{"parent":"TRule_select_core.TBlock14","rule":"TRule_select_core.TBlock14.Rule_ext_order_by_clause1","sum":88715837},{"parent":"TRule_select_core.TBlock3","rule":"TRule_select_core.TBlock3.Token1","sum":117},{"parent":"TRule_select_core.TBlock6","rule":"TRule_select_core.TBlock6.Rule_result_column2","sum":2795894052},{"parent":"TRule_select_core.TBlock6","rule":"TRule_select_core.TBlock6.Token1","sum":2795894052},{"parent":"TRule_select_core.TBlock7","rule":"TRule_select_core.TBlock7.Token1","sum":93760052},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Block2","sum":50},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Rule_without_column_list3","sum":24912265},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Token1","sum":24912265},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token1","sum":50},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token2","sum":50},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Rule_join_source2","sum":833826276},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Token1","sum":833826276},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block1","sum":922928},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block2","sum":910440387},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block3","sum":2883619},{"parent":"TRule_select_kind.TBlock1","rule":"TRule_select_kind.TBlock1.Token1","sum":922928},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt1","sum":4540825},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt2","sum":850906},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt3","sum":905048656},{"parent":"TRule_select_kind.TBlock2.TAlt1","rule":"TRule_select_kind.TBlock2.TAlt1.Rule_process_core1","sum":4540825},{"parent":"TRule_select_kind.TBlock2.TAlt2","rule":"TRule_select_kind.TBlock2.TAlt2.Rule_reduce_core1","sum":850906},{"parent":"TRule_select_kind.TBlock2.TAlt3","rule":"TRule_select_kind.TBlock2.TAlt3.Rule_select_core1","sum":905048656},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Rule_pure_column_or_named3","sum":2883619},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token1","sum":2883619},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token2","sum":2883619},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis1","sum":779731897},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis2","sum":7982913},{"parent":"TRule_select_kind_parenthesis.TAlt1","rule":"TRule_select_kind_parenthesis.TAlt1.Rule_select_kind_partial1","sum":779731897},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Rule_select_kind_partial2","sum":7982913},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token1","sum":7982913},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token3","sum":7982913},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Block2","sum":30714415},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Rule_select_kind1","sum":910440387},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Block3","sum":4615623},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Rule_expr2","sum":30714415},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Token1","sum":30714415},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Rule_expr2","sum":4615623},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Token1","sum":4615623},{"parent":"TRule_select_op","rule":"TRule_select_op.Alt_select_op1","sum":63914805},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Block2","sum":62999622},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Token1","sum":63914805},{"parent":"TRule_select_op.TAlt1.TBlock2","rule":"TRule_select_op.TAlt1.TBlock2.Token1","sum":62999622},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Block2","sum":33291159},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Rule_select_kind_parenthesis1","sum":723800005},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":56947670},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_op1","sum":56947670},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Block2","sum":4301601},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Rule_select_kind_partial1","sum":122725577},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":6967135},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_op1","sum":6967135},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token1","sum":53409},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token2","sum":53409},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Block2","sum":143100620},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Rule_simple_table_ref_core1","sum":211659349},{"parent":"TRule_simple_table_ref.TBlock2","rule":"TRule_simple_table_ref.TBlock2.Rule_table_hints1","sum":143100620},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core1","sum":133786170},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core2","sum":77873179},{"parent":"TRule_simple_table_ref_core.TAlt1","rule":"TRule_simple_table_ref_core.TAlt1.Rule_object_ref1","sum":133786170},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Block1","sum":71525},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Rule_bind_parameter2","sum":77873179},{"parent":"TRule_simple_table_ref_core.TAlt2.TBlock1","rule":"TRule_simple_table_ref_core.TAlt2.TBlock1.Token1","sum":71525},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source1","sum":953815950},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source2","sum":104848265},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source3","sum":168556},{"parent":"TRule_single_source.TAlt1","rule":"TRule_single_source.TAlt1.Rule_table_ref1","sum":953815950},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Rule_select_stmt2","sum":104848265},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token1","sum":104848265},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token3","sum":104848265},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Rule_values_stmt2","sum":168556},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token1","sum":168556},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token3","sum":168556},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block2","sum":508791006},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block3","sum":2645106},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token1","sum":512606456},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token4","sum":512606456},{"parent":"TRule_smart_parenthesis.TBlock2","rule":"TRule_smart_parenthesis.TBlock2.Rule_named_expr_list1","sum":508791006},{"parent":"TRule_smart_parenthesis.TBlock3","rule":"TRule_smart_parenthesis.TBlock3.Token1","sum":2645106},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Block2","sum":33224244},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Rule_expr1","sum":181756851},{"parent":"TRule_sort_specification.TBlock2","rule":"TRule_sort_specification.TBlock2.Token1","sum":33224244},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Block2","sum":39892637},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Rule_sort_specification1","sum":108067824},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Rule_sort_specification2","sum":73689027},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Token1","sum":73689027},{"parent":"TRule_sql_query","rule":"TRule_sql_query.Alt_sql_query1","sum":320376481},{"parent":"TRule_sql_query.TAlt1","rule":"TRule_sql_query.TAlt1.Rule_sql_stmt_list1","sum":320376481},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Block1","sum":53},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Rule_sql_stmt_core2","sum":2722668438},{"parent":"TRule_sql_stmt.TBlock1","rule":"TRule_sql_stmt.TBlock1.Token1","sum":53},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core1","sum":897035838},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core12","sum":156488693},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core13","sum":16592835},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core17","sum":4709503},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core18","sum":22288095},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core19","sum":8565607},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core2","sum":193671855},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core20","sum":7010919},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core21","sum":321},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core3","sum":944054256},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core4","sum":127},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core5","sum":2568070},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core6","sum":329672608},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core7","sum":209091152},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core8","sum":13024992},{"parent":"TRule_sql_stmt_core.TAlt1","rule":"TRule_sql_stmt_core.TAlt1.Rule_pragma_stmt1","sum":897035838},{"parent":"TRule_sql_stmt_core.TAlt12","rule":"TRule_sql_stmt_core.TAlt12.Rule_declare_stmt1","sum":156488693},{"parent":"TRule_sql_stmt_core.TAlt13","rule":"TRule_sql_stmt_core.TAlt13.Rule_import_stmt1","sum":16592835},{"parent":"TRule_sql_stmt_core.TAlt17","rule":"TRule_sql_stmt_core.TAlt17.Rule_do_stmt1","sum":4709503},{"parent":"TRule_sql_stmt_core.TAlt18","rule":"TRule_sql_stmt_core.TAlt18.Rule_define_action_or_subquery_stmt1","sum":22288095},{"parent":"TRule_sql_stmt_core.TAlt19","rule":"TRule_sql_stmt_core.TAlt19.Rule_if_stmt1","sum":8565607},{"parent":"TRule_sql_stmt_core.TAlt2","rule":"TRule_sql_stmt_core.TAlt2.Rule_select_stmt1","sum":193671855},{"parent":"TRule_sql_stmt_core.TAlt20","rule":"TRule_sql_stmt_core.TAlt20.Rule_for_stmt1","sum":7010919},{"parent":"TRule_sql_stmt_core.TAlt21","rule":"TRule_sql_stmt_core.TAlt21.Rule_values_stmt1","sum":321},{"parent":"TRule_sql_stmt_core.TAlt3","rule":"TRule_sql_stmt_core.TAlt3.Rule_named_nodes_stmt1","sum":944054256},{"parent":"TRule_sql_stmt_core.TAlt4","rule":"TRule_sql_stmt_core.TAlt4.Rule_create_table_stmt1","sum":127},{"parent":"TRule_sql_stmt_core.TAlt5","rule":"TRule_sql_stmt_core.TAlt5.Rule_drop_table_stmt1","sum":2568070},{"parent":"TRule_sql_stmt_core.TAlt6","rule":"TRule_sql_stmt_core.TAlt6.Rule_use_stmt1","sum":329672608},{"parent":"TRule_sql_stmt_core.TAlt7","rule":"TRule_sql_stmt_core.TAlt7.Rule_into_table_stmt1","sum":209091152},{"parent":"TRule_sql_stmt_core.TAlt8","rule":"TRule_sql_stmt_core.TAlt8.Rule_commit_stmt1","sum":13024992},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block1","sum":437},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block3","sum":314893323},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block4","sum":195235820},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Rule_sql_stmt2","sum":320376481},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Token5","sum":320376481},{"parent":"TRule_sql_stmt_list.TBlock1","rule":"TRule_sql_stmt_list.TBlock1.Token1","sum":460},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Block1","sum":2402291957},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Rule_sql_stmt2","sum":2402291957},{"parent":"TRule_sql_stmt_list.TBlock3.TBlock1","rule":"TRule_sql_stmt_list.TBlock3.TBlock1.Token1","sum":2411363014},{"parent":"TRule_sql_stmt_list.TBlock4","rule":"TRule_sql_stmt_list.TBlock4.Token1","sum":197926078},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_or_bind3","sum":114011524},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_tag1","sum":114011524},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Token2","sum":114011524},{"parent":"TRule_struct_arg_positional","rule":"TRule_struct_arg_positional.Alt_struct_arg_positional1","sum":175},{"parent":"TRule_struct_arg_positional.TAlt1","rule":"TRule_struct_arg_positional.TAlt1.Block3","sum":146},{"parent":"TRule_struct_arg_positional.TAlt1","rule":"TRule_struct_arg_positional.TAlt1.Rule_type_name_or_bind2","sum":175},{"parent":"TRule_struct_arg_positional.TAlt1","rule":"TRule_struct_arg_positional.TAlt1.Rule_type_name_tag1","sum":175},{"parent":"TRule_struct_arg_positional.TAlt1.TBlock3","rule":"TRule_struct_arg_positional.TAlt1.TBlock3.Token2","sum":146},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Block2","sum":14494469},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Block3","sum":2539851},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token1","sum":14625860},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token4","sum":14625860},{"parent":"TRule_struct_literal.TBlock2","rule":"TRule_struct_literal.TBlock2.Rule_expr_struct_list1","sum":14494469},{"parent":"TRule_struct_literal.TBlock3","rule":"TRule_struct_literal.TBlock3.Token1","sum":2539851},{"parent":"TRule_subselect_stmt","rule":"TRule_subselect_stmt.Block1","sum":330173875},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt1","sum":207448298},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt2","sum":122725577},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Rule_select_stmt2","sum":207448298},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token1","sum":207448298},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token3","sum":207448298},{"parent":"TRule_subselect_stmt.TBlock1.TAlt2","rule":"TRule_subselect_stmt.TBlock1.TAlt2.Rule_select_unparenthesized_stmt1","sum":122725577},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block1","sum":116480},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block3","sum":265957},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Rule_named_expr2","sum":192489204},{"parent":"TRule_table_arg.TBlock1","rule":"TRule_table_arg.TBlock1.Token1","sum":116480},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Rule_view_name2","sum":265957},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Token1","sum":265957},{"parent":"TRule_table_constraint","rule":"TRule_table_constraint.Alt_table_constraint2","sum":126},{"parent":"TRule_table_constraint","rule":"TRule_table_constraint.Alt_table_constraint3","sum":107},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Block5","sum":105},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Rule_an_id4","sum":126},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token1","sum":126},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token2","sum":126},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token3","sum":126},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token6","sum":126},{"parent":"TRule_table_constraint.TAlt2.TBlock5","rule":"TRule_table_constraint.TAlt2.TBlock5.Rule_an_id2","sum":264},{"parent":"TRule_table_constraint.TAlt2.TBlock5","rule":"TRule_table_constraint.TAlt2.TBlock5.Token1","sum":264},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Rule_column_order_by_specification4","sum":107},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token1","sum":107},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token2","sum":107},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token3","sum":107},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token6","sum":107},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint1","sum":154481585},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint2","sum":18945529},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint3","sum":12},{"parent":"TRule_table_hint.TAlt1","rule":"TRule_table_hint.TAlt1.Block2","sum":10750741},{"parent":"TRule_table_hint.TAlt1","rule":"TRule_table_hint.TAlt1.Rule_an_id_hint1","sum":154481585},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Block2","sum":10750741},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Token1","sum":10750741},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.Alt1","sum":10750741},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1.Rule_type_name_tag1","sum":10750741},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Block2","sum":1683},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Rule_type_name_or_bind3","sum":18945529},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Token1","sum":18945529},{"parent":"TRule_table_hint.TAlt2.TBlock2","rule":"TRule_table_hint.TAlt2.TBlock2.Token1","sum":1683},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Block4","sum":12},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Token1","sum":12},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Token3","sum":12},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Token6","sum":12},{"parent":"TRule_table_hint.TAlt3.TBlock4","rule":"TRule_table_hint.TAlt3.TBlock4.Block2","sum":7},{"parent":"TRule_table_hint.TAlt3.TBlock4","rule":"TRule_table_hint.TAlt3.TBlock4.Rule_struct_arg_positional1","sum":12},{"parent":"TRule_table_hint.TAlt3.TBlock4.TBlock2","rule":"TRule_table_hint.TAlt3.TBlock4.TBlock2.Rule_struct_arg_positional2","sum":163},{"parent":"TRule_table_hint.TAlt3.TBlock4.TBlock2","rule":"TRule_table_hint.TAlt3.TBlock4.TBlock2.Token1","sum":163},{"parent":"TRule_table_hints","rule":"TRule_table_hints.Block2","sum":162764877},{"parent":"TRule_table_hints","rule":"TRule_table_hints.Token1","sum":162764877},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt1","sum":152231871},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt2","sum":10533006},{"parent":"TRule_table_hints.TBlock2.TAlt1","rule":"TRule_table_hints.TBlock2.TAlt1.Rule_table_hint1","sum":152231871},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Block3","sum":10261707},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Rule_table_hint2","sum":10533006},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token1","sum":10533006},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token4","sum":10533006},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Rule_table_hint2","sum":10662249},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Token1","sum":10662249},{"parent":"TRule_table_key","rule":"TRule_table_key.Block2","sum":865837},{"parent":"TRule_table_key","rule":"TRule_table_key.Rule_id_table_or_type1","sum":330894125},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Rule_view_name2","sum":865837},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Token1","sum":865837},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block1","sum":39960071},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block2","sum":6035888},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block3","sum":953815950},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block4","sum":19664257},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Rule_cluster_expr1","sum":39960071},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Token2","sum":39960071},{"parent":"TRule_table_ref.TBlock2","rule":"TRule_table_ref.TBlock2.Token1","sum":6035888},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt1","sum":330894125},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt2","sum":96313621},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt3","sum":526608204},{"parent":"TRule_table_ref.TBlock3.TAlt1","rule":"TRule_table_ref.TBlock3.TAlt1.Rule_table_key1","sum":330894125},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Block3","sum":96313596},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Rule_an_id_expr1","sum":96313621},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token2","sum":96313621},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token4","sum":96313621},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block2","sum":49697568},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block3","sum":356769},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Rule_table_arg1","sum":96313596},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Rule_table_arg2","sum":96175608},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Token1","sum":96175608},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3.Token1","sum":356769},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block2","sum":22294386},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block3","sum":177575},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Rule_bind_parameter1","sum":526608204},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Block2","sum":15925824},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token1","sum":22294386},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token3","sum":22294386},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2.Rule_expr_list1","sum":15925824},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Rule_view_name2","sum":177575},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Token1","sum":177575},{"parent":"TRule_table_ref.TBlock4","rule":"TRule_table_ref.TBlock4.Rule_table_hints1","sum":19664257},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Block6","sum":9298},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_expr4","sum":328834},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_sampling_mode2","sum":328834},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token1","sum":328834},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token3","sum":328834},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token5","sum":328834},{"parent":"TRule_tablesample_clause.TBlock6","rule":"TRule_tablesample_clause.TBlock6.Rule_repeatable_clause1","sum":9298},{"parent":"TRule_type_id","rule":"TRule_type_id.Token1","sum":11675767},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name1","sum":89405041},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name2","sum":703793148},{"parent":"TRule_type_name.TAlt1","rule":"TRule_type_name.TAlt1.Rule_type_name_composite1","sum":89405041},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block1","sum":703793148},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block2","sum":73563154},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt1","sum":27853302},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt2","sum":675939846},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt1","rule":"TRule_type_name.TAlt2.TBlock1.TAlt1.Rule_type_name_decimal1","sum":27853302},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt2","rule":"TRule_type_name.TAlt2.TBlock1.TAlt2.Rule_type_name_simple1","sum":675939846},{"parent":"TRule_type_name.TAlt2.TBlock2","rule":"TRule_type_name.TAlt2.TBlock2.Token1","sum":73564194},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block4","sum":9767728},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block5","sum":223950},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block6","sum":10435},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Rule_type_name_or_bind9","sum":10094706},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token1","sum":10094706},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token10","sum":10094706},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token2","sum":10094706},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token3","sum":10094706},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token7","sum":10094706},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token8","sum":10094706},{"parent":"TRule_type_name_callable.TBlock4","rule":"TRule_type_name_callable.TBlock4.Rule_callable_arg_list1","sum":9767728},{"parent":"TRule_type_name_callable.TBlock5","rule":"TRule_type_name_callable.TBlock5.Token1","sum":223950},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Rule_callable_arg_list2","sum":10435},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token1","sum":10435},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token3","sum":10435},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block1","sum":106795007},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block2","sum":4248366},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt1","sum":33266966},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt10","sum":20441},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt11","sum":456370},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt12","sum":7763},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt13","sum":10094706},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt2","sum":2160207},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt3","sum":26683306},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt4","sum":136902},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt5","sum":25785440},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt6","sum":1522146},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt8","sum":6647417},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt9","sum":13343},{"parent":"TRule_type_name_composite.TBlock1.TAlt1","rule":"TRule_type_name_composite.TBlock1.TAlt1.Rule_type_name_optional1","sum":33266966},{"parent":"TRule_type_name_composite.TBlock1.TAlt10","rule":"TRule_type_name_composite.TBlock1.TAlt10.Rule_type_name_enum1","sum":20441},{"parent":"TRule_type_name_composite.TBlock1.TAlt11","rule":"TRule_type_name_composite.TBlock1.TAlt11.Rule_type_name_resource1","sum":456370},{"parent":"TRule_type_name_composite.TBlock1.TAlt12","rule":"TRule_type_name_composite.TBlock1.TAlt12.Rule_type_name_tagged1","sum":7763},{"parent":"TRule_type_name_composite.TBlock1.TAlt13","rule":"TRule_type_name_composite.TBlock1.TAlt13.Rule_type_name_callable1","sum":10094706},{"parent":"TRule_type_name_composite.TBlock1.TAlt2","rule":"TRule_type_name_composite.TBlock1.TAlt2.Rule_type_name_tuple1","sum":2160207},{"parent":"TRule_type_name_composite.TBlock1.TAlt3","rule":"TRule_type_name_composite.TBlock1.TAlt3.Rule_type_name_struct1","sum":26683306},{"parent":"TRule_type_name_composite.TBlock1.TAlt4","rule":"TRule_type_name_composite.TBlock1.TAlt4.Rule_type_name_variant1","sum":136902},{"parent":"TRule_type_name_composite.TBlock1.TAlt5","rule":"TRule_type_name_composite.TBlock1.TAlt5.Rule_type_name_list1","sum":25785440},{"parent":"TRule_type_name_composite.TBlock1.TAlt6","rule":"TRule_type_name_composite.TBlock1.TAlt6.Rule_type_name_stream1","sum":1522146},{"parent":"TRule_type_name_composite.TBlock1.TAlt8","rule":"TRule_type_name_composite.TBlock1.TAlt8.Rule_type_name_dict1","sum":6647417},{"parent":"TRule_type_name_composite.TBlock1.TAlt9","rule":"TRule_type_name_composite.TBlock1.TAlt9.Rule_type_name_set1","sum":13343},{"parent":"TRule_type_name_composite.TBlock2","rule":"TRule_type_name_composite.TBlock2.Token1","sum":4248369},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind3","sum":27853302},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind5","sum":27853302},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token1","sum":27853302},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token2","sum":27853302},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token4","sum":27853302},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token6","sum":27853302},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind3","sum":6647417},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind5","sum":6647417},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token1","sum":6647417},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token2","sum":6647417},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token4","sum":6647417},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token6","sum":6647417},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block4","sum":20193},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block5","sum":377},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Rule_type_name_tag3","sum":20441},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token1","sum":20441},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token2","sum":20441},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token6","sum":20441},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Rule_type_name_tag2","sum":43975},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Token1","sum":43975},{"parent":"TRule_type_name_enum.TBlock5","rule":"TRule_type_name_enum.TBlock5.Token1","sum":377},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Rule_type_name_or_bind3","sum":25785440},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token1","sum":25785440},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token2","sum":25785440},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token4","sum":25785440},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Rule_type_name_or_bind3","sum":33266966},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token1","sum":33266966},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token2","sum":33266966},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token4","sum":33266966},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind1","sum":636709496},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind2","sum":2676185},{"parent":"TRule_type_name_or_bind.TAlt1","rule":"TRule_type_name_or_bind.TAlt1.Rule_type_name1","sum":636709496},{"parent":"TRule_type_name_or_bind.TAlt2","rule":"TRule_type_name_or_bind.TAlt2.Rule_bind_parameter1","sum":2676185},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Rule_type_name_tag3","sum":456370},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token1","sum":456370},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token2","sum":456370},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token4","sum":456370},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Rule_type_name_or_bind3","sum":13343},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token1","sum":13343},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token2","sum":13343},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token4","sum":13343},{"parent":"TRule_type_name_simple","rule":"TRule_type_name_simple.Rule_an_id_pure1","sum":677783605},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Rule_type_name_or_bind3","sum":1522146},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token1","sum":1522146},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token2","sum":1522146},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token4","sum":1522146},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Block2","sum":26683306},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Token1","sum":26683306},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt1","sum":26680414},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt2","sum":2892},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Block2","sum":26680404},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token1","sum":26680414},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token3","sum":26680414},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block2","sum":20364033},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block3","sum":2056555},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Rule_struct_arg1","sum":26680404},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Rule_struct_arg2","sum":87331120},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":87331120},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":2056555},{"parent":"TRule_type_name_struct.TBlock2.TAlt2","rule":"TRule_type_name_struct.TBlock2.TAlt2.Token1","sum":2892},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag1","sum":104747425},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag2","sum":18282215},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag3","sum":2617886},{"parent":"TRule_type_name_tag.TAlt1","rule":"TRule_type_name_tag.TAlt1.Rule_id1","sum":104747425},{"parent":"TRule_type_name_tag.TAlt2","rule":"TRule_type_name_tag.TAlt2.Token1","sum":18282215},{"parent":"TRule_type_name_tag.TAlt3","rule":"TRule_type_name_tag.TAlt3.Rule_bind_parameter1","sum":2617886},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_or_bind3","sum":7763},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_tag5","sum":7763},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token1","sum":7763},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token2","sum":7763},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token4","sum":7763},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token6","sum":7763},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Block2","sum":2160207},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Token1","sum":2160207},{"parent":"TRule_type_name_tuple.TBlock2","rule":"TRule_type_name_tuple.TBlock2.Alt1","sum":2160197},{"parent":"TRule_type_name_tuple.TBlock2","rule":"TRule_type_name_tuple.TBlock2.Alt2","sum":10},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Block2","sum":2160197},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token1","sum":2160197},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token3","sum":2160197},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block2","sum":2158663},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block3","sum":63559},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Rule_type_name_or_bind1","sum":2160197},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Rule_type_name_or_bind2","sum":3341642},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":3341642},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":63559},{"parent":"TRule_type_name_tuple.TBlock2.TAlt2","rule":"TRule_type_name_tuple.TBlock2.TAlt2.Token1","sum":10},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Block4","sum":122313},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Block5","sum":104},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Rule_variant_arg3","sum":136902},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token1","sum":136902},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token2","sum":136902},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token6","sum":136902},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Rule_variant_arg2","sum":233912},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Token1","sum":233912},{"parent":"TRule_type_name_variant.TBlock5","rule":"TRule_type_name_variant.TBlock5.Token1","sum":104},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Block1","sum":16016225286},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":16016225286},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt1","sum":7183417944},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt2","sum":8832807342},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr1","sum":7183417944},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt2.Rule_atom_expr1","sum":8832807342},{"parent":"TRule_unary_op","rule":"TRule_unary_op.Token1","sum":87770220},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr1","sum":16016225286},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr2","sum":6343644},{"parent":"TRule_unary_subexpr.TAlt1","rule":"TRule_unary_subexpr.TAlt1.Rule_unary_casual_subexpr1","sum":16016225286},{"parent":"TRule_unary_subexpr.TAlt2","rule":"TRule_unary_subexpr.TAlt2.Rule_json_api_expr1","sum":6343644},{"parent":"TRule_unary_subexpr_suffix","rule":"TRule_unary_subexpr_suffix.Block1","sum":4775126942},{"parent":"TRule_unary_subexpr_suffix.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.Block1","sum":5029718261},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt1","sum":173531558},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt2","sum":2876921781},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt3","sum":1979264922},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1.Rule_key_expr1","sum":173531558},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2.Rule_invoke_expr1","sum":2876921781},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Block2","sum":1979264922},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Token1","sum":1979264922},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt1","sum":3153885},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt2","sum":40460282},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt3","sum":1935650755},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1.Rule_bind_parameter1","sum":3153885},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2.Token1","sum":40460282},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt3.Rule_an_id_or_type1","sum":1935650755},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Rule_cluster_expr2","sum":329672608},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Token1","sum":329672608},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Block1","sum":2771975},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Rule_invoke_expr2","sum":2771975},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt1","sum":1522435},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt3","sum":1249540},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type1","sum":1522435},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type3","sum":1522435},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Token2","sum":1522435},{"parent":"TRule_using_call_expr.TBlock1.TAlt3","rule":"TRule_using_call_expr.TBlock1.TAlt3.Rule_bind_parameter1","sum":1249540},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor1","sum":32087},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor2","sum":51190},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor3","sum":80795},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr3","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr5","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr7","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token1","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token2","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token4","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token6","sum":32087},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token8","sum":32087},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr3","sum":51190},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr5","sum":51190},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token1","sum":51190},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token2","sum":51190},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token4","sum":51190},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token6","sum":51190},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr3","sum":80795},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr5","sum":80795},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token1","sum":80795},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token2","sum":80795},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token4","sum":80795},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token6","sum":80795},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source1","sum":1086488},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source2","sum":208004664},{"parent":"TRule_values_source.TAlt1","rule":"TRule_values_source.TAlt1.Rule_values_stmt1","sum":1086488},{"parent":"TRule_values_source.TAlt2","rule":"TRule_values_source.TAlt2.Rule_select_stmt1","sum":208004664},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Rule_expr_list2","sum":9061158},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token1","sum":9061158},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token3","sum":9061158},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Block2","sum":486892},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Rule_values_source_row1","sum":1255365},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Rule_values_source_row2","sum":7805793},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Token1","sum":7805793},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Rule_values_source_row_list2","sum":1255365},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Token1","sum":1255365},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Block1","sum":356537},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Rule_type_name_or_bind2","sum":18367191},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Rule_type_name_tag1","sum":356537},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Token2","sum":356537},{"parent":"TRule_view_name","rule":"TRule_view_name.Alt_view_name1","sum":1309369},{"parent":"TRule_view_name.TAlt1","rule":"TRule_view_name.TAlt1.Rule_an_id1","sum":1309369},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr2","sum":158362267},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr4","sum":158362267},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token1","sum":158362267},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token3","sum":158362267},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Rule_window_definition_list2","sum":13593427},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Token1","sum":13593427},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_new_window_name1","sum":14168963},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_window_specification3","sum":14168963},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Token2","sum":14168963},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Block2","sum":435449},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Rule_window_definition1","sum":13593427},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Rule_window_definition2","sum":575536},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Token1","sum":575536},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound2","sum":2317924},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound4","sum":2317924},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token1","sum":2317924},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token3","sum":2317924},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound1","sum":1326003},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound2","sum":3367748},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token1","sum":1326003},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token2","sum":1326003},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Block1","sum":3367748},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Token2","sum":3367748},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt1","sum":1114481},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt2","sum":2253267},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1.Rule_expr1","sum":1114481},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2.Token1","sum":2253267},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_extent2","sum":2375827},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_units1","sum":2375827},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent1","sum":57903},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent2","sum":2317924},{"parent":"TRule_window_frame_extent.TAlt1","rule":"TRule_window_frame_extent.TAlt1.Rule_window_frame_bound1","sum":57903},{"parent":"TRule_window_frame_extent.TAlt2","rule":"TRule_window_frame_extent.TAlt2.Rule_window_frame_between1","sum":2317924},{"parent":"TRule_window_frame_units","rule":"TRule_window_frame_units.Token1","sum":2375827},{"parent":"TRule_window_name","rule":"TRule_window_name.Rule_an_id_window1","sum":46670411},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification1","sum":32501448},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification2","sum":12841339},{"parent":"TRule_window_name_or_specification.TAlt1","rule":"TRule_window_name_or_specification.TAlt1.Rule_window_name1","sum":32501448},{"parent":"TRule_window_name_or_specification.TAlt2","rule":"TRule_window_name_or_specification.TAlt2.Rule_window_specification1","sum":12841339},{"parent":"TRule_window_order_clause","rule":"TRule_window_order_clause.Rule_order_by_clause1","sum":19022200},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Block2","sum":51775},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Rule_named_expr_list4","sum":21811809},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token1","sum":21811809},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token3","sum":21811809},{"parent":"TRule_window_partition_clause.TBlock2","rule":"TRule_window_partition_clause.TBlock2.Token1","sum":51775},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Rule_window_specification_details2","sum":27010302},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token1","sum":27010302},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token3","sum":27010302},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block2","sum":21811808},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block3","sum":19022200},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block4","sum":2375827},{"parent":"TRule_window_specification_details.TBlock2","rule":"TRule_window_specification_details.TBlock2.Rule_window_partition_clause1","sum":21811808},{"parent":"TRule_window_specification_details.TBlock3","rule":"TRule_window_specification_details.TBlock3.Rule_window_order_clause1","sum":19022200},{"parent":"TRule_window_specification_details.TBlock4","rule":"TRule_window_specification_details.TBlock4.Rule_window_frame_clause1","sum":2375827},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block2","sum":9212455},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block3","sum":1313805},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Rule_without_column_name1","sum":24912265},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Rule_without_column_name2","sum":29254680},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Token1","sum":29254680},{"parent":"TRule_without_column_list.TBlock3","rule":"TRule_without_column_list.TBlock3.Token1","sum":1313805},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name1","sum":30862610},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name2","sum":23304335},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id1","sum":30862610},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id3","sum":30862610},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Token2","sum":30862610},{"parent":"TRule_without_column_name.TAlt2","rule":"TRule_without_column_name.TAlt2.Rule_an_id_without1","sum":23304335},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Block2","sum":1096201223},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Rule_eq_subexpr1","sum":14287247191},{"parent":"TRule_xor_subexpr.TBlock2","rule":"TRule_xor_subexpr.TBlock2.Rule_cond_expr1","sum":1096201223},{"parent":"TSQLv1ParserAST","rule":"TSQLv1ParserAST.Rule_sql_query","sum":320376481},{"parent":"TYPE","rule":"BIGINT","sum":6966},{"parent":"TYPE","rule":"BOOL","sum":109222},{"parent":"TYPE","rule":"BYTEs","sum":1},{"parent":"TYPE","rule":"BigInt","sum":210},{"parent":"TYPE","rule":"Bool","sum":9307137},{"parent":"TYPE","rule":"Bytes","sum":422554},{"parent":"TYPE","rule":"DATE","sum":1255109},{"parent":"TYPE","rule":"DATETIME","sum":66830},{"parent":"TYPE","rule":"DATETime","sum":2},{"parent":"TYPE","rule":"DATEtIME","sum":1},{"parent":"TYPE","rule":"DATEtime","sum":34},{"parent":"TYPE","rule":"DAte","sum":9228},{"parent":"TYPE","rule":"DAteTime","sum":54},{"parent":"TYPE","rule":"DAtetime","sum":662},{"parent":"TYPE","rule":"DOUBLE","sum":1353329},{"parent":"TYPE","rule":"DOUBLe","sum":1},{"parent":"TYPE","rule":"DOUBle","sum":1},{"parent":"TYPE","rule":"DOUble","sum":3},{"parent":"TYPE","rule":"DOuble","sum":2152},{"parent":"TYPE","rule":"DaTeTime","sum":1},{"parent":"TYPE","rule":"Date","sum":20644045},{"parent":"TYPE","rule":"Date32","sum":64},{"parent":"TYPE","rule":"DateTIME","sum":19},{"parent":"TYPE","rule":"DateTIme","sum":112},{"parent":"TYPE","rule":"DateTime","sum":5002254},{"parent":"TYPE","rule":"DateTime64","sum":8},{"parent":"TYPE","rule":"DatetIME","sum":35},{"parent":"TYPE","rule":"Datetime","sum":3255820},{"parent":"TYPE","rule":"Datetime64","sum":37},{"parent":"TYPE","rule":"DoubLe","sum":13},{"parent":"TYPE","rule":"Double","sum":30117756},{"parent":"TYPE","rule":"EmptyDict","sum":28},{"parent":"TYPE","rule":"EmptyList","sum":28},{"parent":"TYPE","rule":"FLOAT","sum":191305},{"parent":"TYPE","rule":"FLoat","sum":3421},{"parent":"TYPE","rule":"FlOAT","sum":15},{"parent":"TYPE","rule":"FloaT","sum":326},{"parent":"TYPE","rule":"Float","sum":7088128},{"parent":"TYPE","rule":"Generic","sum":3},{"parent":"TYPE","rule":"INT","sum":418522},{"parent":"TYPE","rule":"INT16","sum":9450},{"parent":"TYPE","rule":"INT32","sum":140314},{"parent":"TYPE","rule":"INT64","sum":4150130},{"parent":"TYPE","rule":"INT8","sum":1830},{"parent":"TYPE","rule":"INTEGER","sum":73403},{"parent":"TYPE","rule":"INTERVAL","sum":10615},{"parent":"TYPE","rule":"INt16","sum":1},{"parent":"TYPE","rule":"INt32","sum":1179},{"parent":"TYPE","rule":"INt64","sum":38184},{"parent":"TYPE","rule":"InT32","sum":1},{"parent":"TYPE","rule":"Int","sum":523543},{"parent":"TYPE","rule":"Int16","sum":908526},{"parent":"TYPE","rule":"Int32","sum":13813761},{"parent":"TYPE","rule":"Int64","sum":47376804},{"parent":"TYPE","rule":"Int8","sum":1010275},{"parent":"TYPE","rule":"Integer","sum":468078},{"parent":"TYPE","rule":"Interval","sum":204821},{"parent":"TYPE","rule":"Interval64","sum":34},{"parent":"TYPE","rule":"JSON","sum":1738740},{"parent":"TYPE","rule":"JSONDocument","sum":257},{"parent":"TYPE","rule":"JSOn","sum":1},{"parent":"TYPE","rule":"JSon","sum":2},{"parent":"TYPE","rule":"Json","sum":5484795},{"parent":"TYPE","rule":"JsonDocument","sum":16958},{"parent":"TYPE","rule":"Jsondocument","sum":25},{"parent":"TYPE","rule":"PgBool","sum":20},{"parent":"TYPE","rule":"PgBox","sum":2},{"parent":"TYPE","rule":"PgByteA","sum":16},{"parent":"TYPE","rule":"PgCString","sum":19},{"parent":"TYPE","rule":"PgDate","sum":85},{"parent":"TYPE","rule":"PgFloat4","sum":31},{"parent":"TYPE","rule":"PgFloat8","sum":31},{"parent":"TYPE","rule":"PgInt","sum":1},{"parent":"TYPE","rule":"PgInt2","sum":97},{"parent":"TYPE","rule":"PgInt4","sum":37},{"parent":"TYPE","rule":"PgInt8","sum":32},{"parent":"TYPE","rule":"PgInterval","sum":238},{"parent":"TYPE","rule":"PgMoney","sum":2},{"parent":"TYPE","rule":"PgName","sum":2},{"parent":"TYPE","rule":"PgNumeric","sum":10},{"parent":"TYPE","rule":"PgPoint","sum":1279},{"parent":"TYPE","rule":"PgPolygon","sum":639},{"parent":"TYPE","rule":"PgText","sum":420},{"parent":"TYPE","rule":"PgTimestamp","sum":1885},{"parent":"TYPE","rule":"PgVarChar","sum":1},{"parent":"TYPE","rule":"PgVarchar","sum":231},{"parent":"TYPE","rule":"STRING","sum":2679012},{"parent":"TYPE","rule":"STRINg","sum":3},{"parent":"TYPE","rule":"STRing","sum":3},{"parent":"TYPE","rule":"STring","sum":1330},{"parent":"TYPE","rule":"StrINg","sum":45},{"parent":"TYPE","rule":"StrinG","sum":27},{"parent":"TYPE","rule":"String","sum":335343094},{"parent":"TYPE","rule":"TEXT","sum":20804},{"parent":"TYPE","rule":"TIMESTAMP","sum":316572},{"parent":"TYPE","rule":"TINYINT","sum":1},{"parent":"TYPE","rule":"TZDate","sum":30},{"parent":"TYPE","rule":"TZDateTime","sum":1},{"parent":"TYPE","rule":"TZDatetime","sum":25},{"parent":"TYPE","rule":"TZtimestamp","sum":1},{"parent":"TYPE","rule":"Text","sum":196975},{"parent":"TYPE","rule":"TimeStamp","sum":295674},{"parent":"TYPE","rule":"Timestamp","sum":5991764},{"parent":"TYPE","rule":"Timestamp64","sum":488},{"parent":"TYPE","rule":"TzDATE","sum":5},{"parent":"TYPE","rule":"TzDate","sum":48317},{"parent":"TYPE","rule":"TzDateTime","sum":43762},{"parent":"TYPE","rule":"TzDatetime","sum":672593},{"parent":"TYPE","rule":"TzTimeStamp","sum":6},{"parent":"TYPE","rule":"TzTimestamp","sum":8108},{"parent":"TYPE","rule":"TzTimestamp64","sum":1},{"parent":"TYPE","rule":"Tzdate","sum":5},{"parent":"TYPE","rule":"Tzdatetime","sum":4},{"parent":"TYPE","rule":"UINT16","sum":1236},{"parent":"TYPE","rule":"UINT32","sum":423872},{"parent":"TYPE","rule":"UINT64","sum":589596},{"parent":"TYPE","rule":"UINT8","sum":160},{"parent":"TYPE","rule":"UINt32","sum":44},{"parent":"TYPE","rule":"UINt64","sum":416},{"parent":"TYPE","rule":"UINt8","sum":24},{"parent":"TYPE","rule":"UInt16","sum":130050},{"parent":"TYPE","rule":"UInt32","sum":7336808},{"parent":"TYPE","rule":"UInt64","sum":9466348},{"parent":"TYPE","rule":"UInt8","sum":153035},{"parent":"TYPE","rule":"UNIT","sum":756},{"parent":"TYPE","rule":"UTF8","sum":268052},{"parent":"TYPE","rule":"UTf8","sum":144},{"parent":"TYPE","rule":"UUID","sum":1243345},{"parent":"TYPE","rule":"UiNt32","sum":4},{"parent":"TYPE","rule":"Uint16","sum":333960},{"parent":"TYPE","rule":"Uint32","sum":18494844},{"parent":"TYPE","rule":"Uint64","sum":32781958},{"parent":"TYPE","rule":"Uint8","sum":2330345},{"parent":"TYPE","rule":"Unit","sum":1145},{"parent":"TYPE","rule":"Utf8","sum":14377035},{"parent":"TYPE","rule":"Uuid","sum":43670},{"parent":"TYPE","rule":"VARCHAR","sum":517616},{"parent":"TYPE","rule":"Varchar","sum":2},{"parent":"TYPE","rule":"Void","sum":11091},{"parent":"TYPE","rule":"XML","sum":21},{"parent":"TYPE","rule":"YSON","sum":226731},{"parent":"TYPE","rule":"YSon","sum":341},{"parent":"TYPE","rule":"Yson","sum":17664858},{"parent":"TYPE","rule":"_PgMoney","sum":3},{"parent":"TYPE","rule":"bigint","sum":8828},{"parent":"TYPE","rule":"bool","sum":936190},{"parent":"TYPE","rule":"bytes","sum":35135},{"parent":"TYPE","rule":"dATE","sum":1},{"parent":"TYPE","rule":"daTE","sum":5},{"parent":"TYPE","rule":"date","sum":32420506},{"parent":"TYPE","rule":"date32","sum":41},{"parent":"TYPE","rule":"dateTIME","sum":8},{"parent":"TYPE","rule":"dateTime","sum":43592},{"parent":"TYPE","rule":"datetime","sum":7103828},{"parent":"TYPE","rule":"datetime64","sum":61},{"parent":"TYPE","rule":"double","sum":6941462},{"parent":"TYPE","rule":"emptyList","sum":1},{"parent":"TYPE","rule":"float","sum":4717598},{"parent":"TYPE","rule":"generic","sum":2},{"parent":"TYPE","rule":"iNT","sum":1},{"parent":"TYPE","rule":"iNT64","sum":27},{"parent":"TYPE","rule":"inT64","sum":260},{"parent":"TYPE","rule":"int","sum":1120407},{"parent":"TYPE","rule":"int16","sum":79087},{"parent":"TYPE","rule":"int32","sum":3210506},{"parent":"TYPE","rule":"int64","sum":8446097},{"parent":"TYPE","rule":"int8","sum":42063},{"parent":"TYPE","rule":"integer","sum":135781},{"parent":"TYPE","rule":"interval","sum":402198},{"parent":"TYPE","rule":"json","sum":1061189},{"parent":"TYPE","rule":"json_document","sum":1},{"parent":"TYPE","rule":"jsondocument","sum":1},{"parent":"TYPE","rule":"pgDate","sum":22},{"parent":"TYPE","rule":"pg_name","sum":2},{"parent":"TYPE","rule":"pgbigint","sum":1},{"parent":"TYPE","rule":"pgbool","sum":18},{"parent":"TYPE","rule":"pgdate","sum":14},{"parent":"TYPE","rule":"pgfloat8","sum":2},{"parent":"TYPE","rule":"pgint","sum":366},{"parent":"TYPE","rule":"pgint2","sum":6},{"parent":"TYPE","rule":"pgint4","sum":41},{"parent":"TYPE","rule":"pgint8","sum":1},{"parent":"TYPE","rule":"pginteger","sum":1},{"parent":"TYPE","rule":"pginterval","sum":371},{"parent":"TYPE","rule":"pgnumeric","sum":5},{"parent":"TYPE","rule":"pgoid","sum":1},{"parent":"TYPE","rule":"pgtext","sum":76},{"parent":"TYPE","rule":"pgtimestamp","sum":20},{"parent":"TYPE","rule":"sTRING","sum":16},{"parent":"TYPE","rule":"smallint","sum":1},{"parent":"TYPE","rule":"strINg","sum":14},{"parent":"TYPE","rule":"striNg","sum":1},{"parent":"TYPE","rule":"strinG","sum":73},{"parent":"TYPE","rule":"string","sum":45772323},{"parent":"TYPE","rule":"text","sum":4570081},{"parent":"TYPE","rule":"timeStamp","sum":82},{"parent":"TYPE","rule":"timestamp","sum":21902003},{"parent":"TYPE","rule":"timestamp64","sum":12},{"parent":"TYPE","rule":"tinyint","sum":3},{"parent":"TYPE","rule":"tzDate","sum":1},{"parent":"TYPE","rule":"tzDateTime","sum":3},{"parent":"TYPE","rule":"tzDatetime","sum":30},{"parent":"TYPE","rule":"tzTimestamp","sum":709},{"parent":"TYPE","rule":"tzdate","sum":19},{"parent":"TYPE","rule":"tzdatetime","sum":67},{"parent":"TYPE","rule":"tzdatetime64","sum":2},{"parent":"TYPE","rule":"tztimestamp","sum":32},{"parent":"TYPE","rule":"tztimestamp64","sum":3},{"parent":"TYPE","rule":"uINT32","sum":18},{"parent":"TYPE","rule":"uInt32","sum":12235},{"parent":"TYPE","rule":"uInt64","sum":2529},{"parent":"TYPE","rule":"uInt8","sum":52},{"parent":"TYPE","rule":"uint16","sum":27242},{"parent":"TYPE","rule":"uint32","sum":5311919},{"parent":"TYPE","rule":"uint64","sum":8655463},{"parent":"TYPE","rule":"uint8","sum":159908},{"parent":"TYPE","rule":"unit","sum":693697},{"parent":"TYPE","rule":"utf8","sum":4600990},{"parent":"TYPE","rule":"uuid","sum":2983539},{"parent":"TYPE","rule":"varchar","sum":58732},{"parent":"TYPE","rule":"void","sum":1},{"parent":"TYPE","rule":"xml","sum":32455},{"parent":"TYPE","rule":"yaml","sum":144},{"parent":"TYPE","rule":"yson","sum":1127366}] +[{"parent":"FUNC","rule":"ABC","sum":1},{"parent":"FUNC","rule":"ABS","sum":3117622},{"parent":"FUNC","rule":"ADAPTIVE_WARD_HISTOGRAM","sum":1},{"parent":"FUNC","rule":"ADDTIMEZONE","sum":405},{"parent":"FUNC","rule":"AGGLIST","sum":1245},{"parent":"FUNC","rule":"AGGList","sum":1},{"parent":"FUNC","rule":"AGGREATE_LIST","sum":2},{"parent":"FUNC","rule":"AGGREGATELIST","sum":71},{"parent":"FUNC","rule":"AGGREGATE_BY","sum":1601982},{"parent":"FUNC","rule":"AGGREGATE_LIST","sum":19737967},{"parent":"FUNC","rule":"AGGREGATE_LIST_","sum":2},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTINCT","sum":12914484},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTINCt","sum":2},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTNCT","sum":1},{"parent":"FUNC","rule":"AGGREGATE_LIST_DiSTINCT","sum":4},{"parent":"FUNC","rule":"AGGREGATE_LIST_Distinct","sum":774},{"parent":"FUNC","rule":"AGGREGATE_LIST_distINCT","sum":4},{"parent":"FUNC","rule":"AGGREGATE_LIST_distinct","sum":18948},{"parent":"FUNC","rule":"AGGREGATE_LISt","sum":6},{"parent":"FUNC","rule":"AGGREGATE_LiST","sum":106},{"parent":"FUNC","rule":"AGGREGATE_List","sum":75},{"parent":"FUNC","rule":"AGGREGATE_lIST","sum":59},{"parent":"FUNC","rule":"AGGREGATE_liST_DISTINCT","sum":9},{"parent":"FUNC","rule":"AGGREGATE_list","sum":321},{"parent":"FUNC","rule":"AGGREGATE_list_distinct","sum":1},{"parent":"FUNC","rule":"AGGREGATIONFACTORY","sum":57},{"parent":"FUNC","rule":"AGGREGATION_FACTORY","sum":66558},{"parent":"FUNC","rule":"AGGREGate_List","sum":2},{"parent":"FUNC","rule":"AGGR_LIST","sum":2994},{"parent":"FUNC","rule":"AGGR_LIST_DISTINCT","sum":44284},{"parent":"FUNC","rule":"AGGReGATE_LIST","sum":3},{"parent":"FUNC","rule":"AGGReGate_list","sum":1},{"parent":"FUNC","rule":"AGG_LIST","sum":5165435},{"parent":"FUNC","rule":"AGG_LIST_","sum":5},{"parent":"FUNC","rule":"AGG_LIST_DISTINCT","sum":2880462},{"parent":"FUNC","rule":"AGG_LIST_DISTINCt","sum":9},{"parent":"FUNC","rule":"AGG_LIST_DIStiNCT","sum":10},{"parent":"FUNC","rule":"AGG_LIST_DiSTINCT","sum":4},{"parent":"FUNC","rule":"AGG_LIST_Distinct","sum":47},{"parent":"FUNC","rule":"AGG_LIST_distinct","sum":647},{"parent":"FUNC","rule":"AGG_LISt","sum":2},{"parent":"FUNC","rule":"AGG_LIst","sum":11},{"parent":"FUNC","rule":"AGG_LiST","sum":4},{"parent":"FUNC","rule":"AGG_LiST_DIStiNCT","sum":2},{"parent":"FUNC","rule":"AGG_List","sum":6764},{"parent":"FUNC","rule":"AGG_List_DISTINCT","sum":39},{"parent":"FUNC","rule":"AGG_List_Distinct","sum":914},{"parent":"FUNC","rule":"AGG_List_distinct","sum":103},{"parent":"FUNC","rule":"AGG_lIST_DISTINCT","sum":5},{"parent":"FUNC","rule":"AGG_list","sum":17168},{"parent":"FUNC","rule":"AGG_list_DISTINCT","sum":3036},{"parent":"FUNC","rule":"AGG_list_distinct","sum":799},{"parent":"FUNC","rule":"AGGrEGATE_LIST","sum":2},{"parent":"FUNC","rule":"AGGreGATE_LIST_DISTINCT","sum":3},{"parent":"FUNC","rule":"AGGregateList","sum":19},{"parent":"FUNC","rule":"AGGregate_LIST","sum":3},{"parent":"FUNC","rule":"AGGregate_LIST_DISTINCT","sum":1},{"parent":"FUNC","rule":"AGGregate_list","sum":6},{"parent":"FUNC","rule":"AGGregate_list_distinct","sum":65},{"parent":"FUNC","rule":"AND","sum":46},{"parent":"FUNC","rule":"ARRAY_AGG","sum":2},{"parent":"FUNC","rule":"ASDICT","sum":198},{"parent":"FUNC","rule":"ASDict","sum":618},{"parent":"FUNC","rule":"ASEnum","sum":88},{"parent":"FUNC","rule":"ASIN","sum":2},{"parent":"FUNC","rule":"ASLIST","sum":27390},{"parent":"FUNC","rule":"ASLIst","sum":4},{"parent":"FUNC","rule":"ASList","sum":23161},{"parent":"FUNC","rule":"ASListStrict","sum":3},{"parent":"FUNC","rule":"ASSET","sum":17},{"parent":"FUNC","rule":"ASSTRUCT","sum":2732},{"parent":"FUNC","rule":"ASSet","sum":5},{"parent":"FUNC","rule":"ASStruct","sum":2498},{"parent":"FUNC","rule":"ASTAGGED","sum":15},{"parent":"FUNC","rule":"ASTAgged","sum":3},{"parent":"FUNC","rule":"ASTUPLE","sum":1574},{"parent":"FUNC","rule":"ASTagged","sum":63},{"parent":"FUNC","rule":"ASTuple","sum":5936},{"parent":"FUNC","rule":"AS_DICT","sum":6},{"parent":"FUNC","rule":"AS_LIST","sum":136},{"parent":"FUNC","rule":"AS_STRUCT","sum":13468},{"parent":"FUNC","rule":"AS_TABLE","sum":33},{"parent":"FUNC","rule":"AS_TUPLE","sum":853},{"parent":"FUNC","rule":"ASdict","sum":4},{"parent":"FUNC","rule":"ASlist","sum":1037},{"parent":"FUNC","rule":"ASstruct","sum":41},{"parent":"FUNC","rule":"AStagged","sum":3},{"parent":"FUNC","rule":"AStuple","sum":398},{"parent":"FUNC","rule":"AVG","sum":9148142},{"parent":"FUNC","rule":"AVGIF","sum":19},{"parent":"FUNC","rule":"AVG_IF","sum":734942},{"parent":"FUNC","rule":"AVG_If","sum":8},{"parent":"FUNC","rule":"AVG_if","sum":14181},{"parent":"FUNC","rule":"AVg","sum":4},{"parent":"FUNC","rule":"Abs","sum":323401},{"parent":"FUNC","rule":"AdaptiveDistanceHistogramCDF","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogram","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogramCDF","sum":3},{"parent":"FUNC","rule":"AdaptiveWeightHistogram","sum":57359},{"parent":"FUNC","rule":"AddMember","sum":885884},{"parent":"FUNC","rule":"AddTimeZone","sum":518426},{"parent":"FUNC","rule":"AddTimezone","sum":12027545},{"parent":"FUNC","rule":"Addtimezone","sum":60},{"parent":"FUNC","rule":"AggLIst","sum":1},{"parent":"FUNC","rule":"AggList","sum":20909},{"parent":"FUNC","rule":"AggListDistinct","sum":91},{"parent":"FUNC","rule":"Agg_LIST","sum":60},{"parent":"FUNC","rule":"Agg_LIST_DISTINCT","sum":30},{"parent":"FUNC","rule":"Agg_LIST_Distinct","sum":1},{"parent":"FUNC","rule":"Agg_LIst","sum":2},{"parent":"FUNC","rule":"Agg_LiSt","sum":3},{"parent":"FUNC","rule":"Agg_List","sum":129856},{"parent":"FUNC","rule":"Agg_List_","sum":8},{"parent":"FUNC","rule":"Agg_List_DISTINCT","sum":732},{"parent":"FUNC","rule":"Agg_List_Distinct","sum":2466},{"parent":"FUNC","rule":"Agg_List_distinct","sum":4},{"parent":"FUNC","rule":"Agg_list","sum":35750},{"parent":"FUNC","rule":"Agg_list_distinct","sum":8138},{"parent":"FUNC","rule":"Aggergate_List","sum":1},{"parent":"FUNC","rule":"Agglist","sum":93},{"parent":"FUNC","rule":"AggrList","sum":13},{"parent":"FUNC","rule":"Aggr_List","sum":1},{"parent":"FUNC","rule":"AggreGate_List","sum":6},{"parent":"FUNC","rule":"AggregateBy","sum":42482},{"parent":"FUNC","rule":"AggregateFlatten","sum":52498},{"parent":"FUNC","rule":"AggregateList","sum":40425},{"parent":"FUNC","rule":"AggregateListDistinct","sum":7681},{"parent":"FUNC","rule":"AggregateTransformInput","sum":25567},{"parent":"FUNC","rule":"AggregateTransformOutput","sum":44772},{"parent":"FUNC","rule":"Aggregate_BY","sum":237},{"parent":"FUNC","rule":"Aggregate_By","sum":136153},{"parent":"FUNC","rule":"Aggregate_LIST","sum":848},{"parent":"FUNC","rule":"Aggregate_LIST_DISTINCT","sum":2},{"parent":"FUNC","rule":"Aggregate_LIst","sum":1},{"parent":"FUNC","rule":"Aggregate_List","sum":346231},{"parent":"FUNC","rule":"Aggregate_List_Distinct","sum":5261},{"parent":"FUNC","rule":"Aggregate_List_distinct","sum":1372},{"parent":"FUNC","rule":"Aggregate_by","sum":79},{"parent":"FUNC","rule":"Aggregate_list","sum":230560},{"parent":"FUNC","rule":"Aggregate_list_DISTINCT","sum":36},{"parent":"FUNC","rule":"Aggregate_list_Distinct","sum":11},{"parent":"FUNC","rule":"Aggregate_list_distinct","sum":202995},{"parent":"FUNC","rule":"AggregationFactory","sum":1519387},{"parent":"FUNC","rule":"Apply","sum":1},{"parent":"FUNC","rule":"AsAtom","sum":688505},{"parent":"FUNC","rule":"AsDict","sum":2933238},{"parent":"FUNC","rule":"AsDictStrict","sum":4468},{"parent":"FUNC","rule":"AsEnum","sum":51781},{"parent":"FUNC","rule":"AsLIST","sum":917},{"parent":"FUNC","rule":"AsLIst","sum":2706},{"parent":"FUNC","rule":"AsLisT","sum":1511},{"parent":"FUNC","rule":"AsList","sum":17378189},{"parent":"FUNC","rule":"AsListStrict","sum":86759},{"parent":"FUNC","rule":"AsListstrict","sum":1},{"parent":"FUNC","rule":"AsSTruct","sum":374},{"parent":"FUNC","rule":"AsSet","sum":1600254},{"parent":"FUNC","rule":"AsSetStrict","sum":11394},{"parent":"FUNC","rule":"AsStruct","sum":23604103},{"parent":"FUNC","rule":"AsTAgged","sum":265},{"parent":"FUNC","rule":"AsTUPLE","sum":456},{"parent":"FUNC","rule":"AsTUple","sum":270},{"parent":"FUNC","rule":"AsTable","sum":6},{"parent":"FUNC","rule":"AsTaggeD","sum":1},{"parent":"FUNC","rule":"AsTagged","sum":183710},{"parent":"FUNC","rule":"AsTuPle","sum":1},{"parent":"FUNC","rule":"AsTuple","sum":30446583},{"parent":"FUNC","rule":"AsTupleunwrap","sum":4},{"parent":"FUNC","rule":"AsVariant","sum":357832},{"parent":"FUNC","rule":"As_List","sum":6},{"parent":"FUNC","rule":"As_Struct","sum":6},{"parent":"FUNC","rule":"As_list","sum":20},{"parent":"FUNC","rule":"As_tuple","sum":813},{"parent":"FUNC","rule":"Asdict","sum":186},{"parent":"FUNC","rule":"AslIst","sum":14},{"parent":"FUNC","rule":"Aslist","sum":23969},{"parent":"FUNC","rule":"Asset","sum":49},{"parent":"FUNC","rule":"Asstruct","sum":420},{"parent":"FUNC","rule":"AssumeStrict","sum":2912},{"parent":"FUNC","rule":"Astagged","sum":172},{"parent":"FUNC","rule":"Astuple","sum":783},{"parent":"FUNC","rule":"AtomCode","sum":526010},{"parent":"FUNC","rule":"Avg","sum":139829},{"parent":"FUNC","rule":"Avg_IF","sum":162},{"parent":"FUNC","rule":"Avg_If","sum":131},{"parent":"FUNC","rule":"Avg_if","sum":225},{"parent":"FUNC","rule":"BIT_AND","sum":4},{"parent":"FUNC","rule":"BIT_OR","sum":39261},{"parent":"FUNC","rule":"BIT_XOR","sum":447227},{"parent":"FUNC","rule":"BOOL_AND","sum":266337},{"parent":"FUNC","rule":"BOOL_OR","sum":880188},{"parent":"FUNC","rule":"BOOL_XOR","sum":52},{"parent":"FUNC","rule":"BOOL_and","sum":2},{"parent":"FUNC","rule":"BOOl_OR","sum":382},{"parent":"FUNC","rule":"BOTTOM","sum":11557},{"parent":"FUNC","rule":"BOTTOM_BY","sum":47958},{"parent":"FUNC","rule":"BOTTOM_by","sum":2},{"parent":"FUNC","rule":"Bool","sum":1369},{"parent":"FUNC","rule":"Bool_And","sum":118},{"parent":"FUNC","rule":"Bool_OR","sum":6},{"parent":"FUNC","rule":"Bool_Or","sum":597},{"parent":"FUNC","rule":"Bool_and","sum":85},{"parent":"FUNC","rule":"Bool_or","sum":820},{"parent":"FUNC","rule":"Bottom","sum":276},{"parent":"FUNC","rule":"Bottom_BY","sum":10},{"parent":"FUNC","rule":"Bottom_By","sum":121},{"parent":"FUNC","rule":"Bottom_by","sum":1684},{"parent":"FUNC","rule":"ByteAt","sum":17504},{"parent":"FUNC","rule":"Bytes","sum":5},{"parent":"FUNC","rule":"CHAR_LENGTH","sum":391},{"parent":"FUNC","rule":"COALECSE","sum":1},{"parent":"FUNC","rule":"COALESCE","sum":52024758},{"parent":"FUNC","rule":"COALESCe","sum":10},{"parent":"FUNC","rule":"COALESce","sum":8},{"parent":"FUNC","rule":"COALEsCE","sum":1},{"parent":"FUNC","rule":"COALEsce","sum":4},{"parent":"FUNC","rule":"COALeSCE","sum":1},{"parent":"FUNC","rule":"COALesce","sum":14},{"parent":"FUNC","rule":"COAlESCE","sum":2693},{"parent":"FUNC","rule":"COAlesce","sum":12},{"parent":"FUNC","rule":"CONCAT","sum":19},{"parent":"FUNC","rule":"COOUNT","sum":2},{"parent":"FUNC","rule":"CORR","sum":430},{"parent":"FUNC","rule":"CORRELATION","sum":21278},{"parent":"FUNC","rule":"COS","sum":4},{"parent":"FUNC","rule":"COUNT","sum":52979386},{"parent":"FUNC","rule":"COUNTD","sum":4},{"parent":"FUNC","rule":"COUNTDISTINCTESTIMATE","sum":609},{"parent":"FUNC","rule":"COUNTDistinctEstimate","sum":7},{"parent":"FUNC","rule":"COUNTIF","sum":14890},{"parent":"FUNC","rule":"COUNT_","sum":1},{"parent":"FUNC","rule":"COUNT_IF","sum":24159766},{"parent":"FUNC","rule":"COUNT_IF_","sum":24},{"parent":"FUNC","rule":"COUNT_If","sum":12957},{"parent":"FUNC","rule":"COUNT_iF","sum":44},{"parent":"FUNC","rule":"COUNT_if","sum":19390},{"parent":"FUNC","rule":"COUNt","sum":1261},{"parent":"FUNC","rule":"COUNt_IF","sum":24},{"parent":"FUNC","rule":"COUNt_If","sum":3},{"parent":"FUNC","rule":"COUNt_if","sum":11},{"parent":"FUNC","rule":"COUnT","sum":9},{"parent":"FUNC","rule":"COUnT_IF","sum":7},{"parent":"FUNC","rule":"COUnt","sum":40},{"parent":"FUNC","rule":"COVAR","sum":2870},{"parent":"FUNC","rule":"COVARIANCE","sum":1523},{"parent":"FUNC","rule":"COVARIANCE_POPULATION","sum":69},{"parent":"FUNC","rule":"COVARIANCE_SAMPLE","sum":4},{"parent":"FUNC","rule":"COVAR_POP","sum":4},{"parent":"FUNC","rule":"COalesce","sum":22},{"parent":"FUNC","rule":"COuNT","sum":64},{"parent":"FUNC","rule":"COuNT_If","sum":1},{"parent":"FUNC","rule":"COunt","sum":187},{"parent":"FUNC","rule":"COunt_IF","sum":57},{"parent":"FUNC","rule":"COunt_If","sum":2},{"parent":"FUNC","rule":"COunt_iF","sum":1},{"parent":"FUNC","rule":"COunt_if","sum":3},{"parent":"FUNC","rule":"CUME_DIST","sum":109},{"parent":"FUNC","rule":"CURRENTUTCDATE","sum":5408},{"parent":"FUNC","rule":"CURRENTUTCDATETIME","sum":6764},{"parent":"FUNC","rule":"CURRENTUTCDate","sum":109},{"parent":"FUNC","rule":"CURRENT_UTC_DATE","sum":8},{"parent":"FUNC","rule":"CUrrentUTCDate","sum":1},{"parent":"FUNC","rule":"CallableArgument","sum":10353},{"parent":"FUNC","rule":"CallableArgumentType","sum":18965},{"parent":"FUNC","rule":"CallableResultType","sum":114},{"parent":"FUNC","rule":"CallableType","sum":182912},{"parent":"FUNC","rule":"CallableTypeHandle","sum":5879},{"parent":"FUNC","rule":"Ceil","sum":3},{"parent":"FUNC","rule":"ChooseMember","sum":2},{"parent":"FUNC","rule":"ChooseMembers","sum":2490838},{"parent":"FUNC","rule":"Choosemembers","sum":21080},{"parent":"FUNC","rule":"ChosenMembers","sum":8},{"parent":"FUNC","rule":"ClearBit","sum":29489},{"parent":"FUNC","rule":"CoALESCE","sum":1},{"parent":"FUNC","rule":"CoUNT","sum":39},{"parent":"FUNC","rule":"CoUNT_IF","sum":17},{"parent":"FUNC","rule":"CoUNt","sum":2},{"parent":"FUNC","rule":"CoUnt","sum":2},{"parent":"FUNC","rule":"Coalesce","sum":728073},{"parent":"FUNC","rule":"Collect","sum":1},{"parent":"FUNC","rule":"CollectList","sum":1},{"parent":"FUNC","rule":"CombineMembers","sum":509813},{"parent":"FUNC","rule":"Concat","sum":1},{"parent":"FUNC","rule":"Correlation","sum":180},{"parent":"FUNC","rule":"CouNT","sum":2},{"parent":"FUNC","rule":"CounT","sum":17},{"parent":"FUNC","rule":"Count","sum":395738},{"parent":"FUNC","rule":"CountDistinctEstimate","sum":156846},{"parent":"FUNC","rule":"CountIF","sum":81},{"parent":"FUNC","rule":"CountIf","sum":505},{"parent":"FUNC","rule":"Count_IF","sum":15957},{"parent":"FUNC","rule":"Count_If","sum":42244},{"parent":"FUNC","rule":"Count_if","sum":323414},{"parent":"FUNC","rule":"Countif","sum":12},{"parent":"FUNC","rule":"CurrentAuthenticatedUser","sum":90845},{"parent":"FUNC","rule":"CurrentDatetime","sum":1},{"parent":"FUNC","rule":"CurrentOperationId","sum":89419},{"parent":"FUNC","rule":"CurrentOperationSharedId","sum":5755},{"parent":"FUNC","rule":"CurrentTZDate","sum":530},{"parent":"FUNC","rule":"CurrentTZDateTime","sum":35},{"parent":"FUNC","rule":"CurrentTZDatetime","sum":532},{"parent":"FUNC","rule":"CurrentTZTimestamp","sum":173},{"parent":"FUNC","rule":"CurrentTZdatetime","sum":68},{"parent":"FUNC","rule":"CurrentTzDate","sum":1612551},{"parent":"FUNC","rule":"CurrentTzDateTime","sum":1464812},{"parent":"FUNC","rule":"CurrentTzDatetime","sum":1999616},{"parent":"FUNC","rule":"CurrentTzTimeStamp","sum":4322},{"parent":"FUNC","rule":"CurrentTzTimestamp","sum":1908235},{"parent":"FUNC","rule":"CurrentUTCDATE","sum":20},{"parent":"FUNC","rule":"CurrentUTCDAte","sum":38},{"parent":"FUNC","rule":"CurrentUTCDate","sum":918777},{"parent":"FUNC","rule":"CurrentUTCDateTime","sum":182824},{"parent":"FUNC","rule":"CurrentUTCDatetime","sum":131694},{"parent":"FUNC","rule":"CurrentUTCTimeStamp","sum":99},{"parent":"FUNC","rule":"CurrentUTCTimestamp","sum":451698},{"parent":"FUNC","rule":"CurrentUTCdate","sum":71243},{"parent":"FUNC","rule":"CurrentUTcDate","sum":70},{"parent":"FUNC","rule":"CurrentUtCDate","sum":5},{"parent":"FUNC","rule":"CurrentUtCDatetime","sum":3},{"parent":"FUNC","rule":"CurrentUtcDATE","sum":2},{"parent":"FUNC","rule":"CurrentUtcDAte","sum":3},{"parent":"FUNC","rule":"CurrentUtcDatE","sum":1},{"parent":"FUNC","rule":"CurrentUtcDate","sum":19669061},{"parent":"FUNC","rule":"CurrentUtcDateTIME","sum":1},{"parent":"FUNC","rule":"CurrentUtcDateTime","sum":3211891},{"parent":"FUNC","rule":"CurrentUtcDatetime","sum":13829344},{"parent":"FUNC","rule":"CurrentUtcDttm","sum":3},{"parent":"FUNC","rule":"CurrentUtcTimeStamp","sum":59822},{"parent":"FUNC","rule":"CurrentUtcTimestamp","sum":15398914},{"parent":"FUNC","rule":"CurrentUtcdate","sum":11526},{"parent":"FUNC","rule":"CurrenttzDate","sum":352},{"parent":"FUNC","rule":"CurrenttzDatetime","sum":1},{"parent":"FUNC","rule":"CurrentutcDate","sum":21239},{"parent":"FUNC","rule":"CurrentutcDateTime","sum":625},{"parent":"FUNC","rule":"CurrentutcTimestamp","sum":4},{"parent":"FUNC","rule":"Currentutcdate","sum":1528},{"parent":"FUNC","rule":"Currentutcdatetime","sum":22633},{"parent":"FUNC","rule":"D","sum":1},{"parent":"FUNC","rule":"DATE","sum":128894},{"parent":"FUNC","rule":"DATEADD","sum":3},{"parent":"FUNC","rule":"DATEDIFF","sum":9},{"parent":"FUNC","rule":"DATETIME","sum":813},{"parent":"FUNC","rule":"DATE_PART","sum":16},{"parent":"FUNC","rule":"DATE_TRUNC","sum":29},{"parent":"FUNC","rule":"DATe","sum":20},{"parent":"FUNC","rule":"DAte","sum":179},{"parent":"FUNC","rule":"DAtetime","sum":61},{"parent":"FUNC","rule":"DENSE_RANK","sum":274578},{"parent":"FUNC","rule":"DICTKEYS","sum":27},{"parent":"FUNC","rule":"DICTLENGTH","sum":4},{"parent":"FUNC","rule":"DICTLength","sum":2},{"parent":"FUNC","rule":"DICTPAYLOADS","sum":2},{"parent":"FUNC","rule":"DICT_CONTAINS","sum":5},{"parent":"FUNC","rule":"DIctHasItems","sum":1},{"parent":"FUNC","rule":"DIctItems","sum":1},{"parent":"FUNC","rule":"DIctKeys","sum":1},{"parent":"FUNC","rule":"DIctLength","sum":1},{"parent":"FUNC","rule":"DIctLookup","sum":16},{"parent":"FUNC","rule":"DOUBLE","sum":63},{"parent":"FUNC","rule":"DatE","sum":3},{"parent":"FUNC","rule":"DataType","sum":69657},{"parent":"FUNC","rule":"DataTypeComponents","sum":37388},{"parent":"FUNC","rule":"DataTypeHandle","sum":2},{"parent":"FUNC","rule":"Datatype","sum":2},{"parent":"FUNC","rule":"Date","sum":1776018},{"parent":"FUNC","rule":"Date32","sum":74},{"parent":"FUNC","rule":"DateTime","sum":436381},{"parent":"FUNC","rule":"DateTime64","sum":45},{"parent":"FUNC","rule":"Date_Diff","sum":1},{"parent":"FUNC","rule":"DatetimE","sum":8},{"parent":"FUNC","rule":"Datetime","sum":288347},{"parent":"FUNC","rule":"Datetime64","sum":6},{"parent":"FUNC","rule":"Decimal","sum":31498},{"parent":"FUNC","rule":"DenseRank","sum":27},{"parent":"FUNC","rule":"Dense_RANK","sum":1},{"parent":"FUNC","rule":"Dense_Rank","sum":55},{"parent":"FUNC","rule":"Dense_rank","sum":6},{"parent":"FUNC","rule":"DicTKeys","sum":2},{"parent":"FUNC","rule":"DictAggregate","sum":140410},{"parent":"FUNC","rule":"DictCOntains","sum":350},{"parent":"FUNC","rule":"DictContains","sum":2023914},{"parent":"FUNC","rule":"DictCreate","sum":69740},{"parent":"FUNC","rule":"DictHasItems","sum":610877},{"parent":"FUNC","rule":"DictHasitems","sum":261},{"parent":"FUNC","rule":"DictItems","sum":2559168},{"parent":"FUNC","rule":"DictKEYS","sum":12},{"parent":"FUNC","rule":"DictKEys","sum":1},{"parent":"FUNC","rule":"DictKeYS","sum":3},{"parent":"FUNC","rule":"DictKeyType","sum":941},{"parent":"FUNC","rule":"DictKeys","sum":2717527},{"parent":"FUNC","rule":"DictLOokup","sum":7},{"parent":"FUNC","rule":"DictLength","sum":1020216},{"parent":"FUNC","rule":"DictLookUP","sum":3},{"parent":"FUNC","rule":"DictLookUp","sum":62348},{"parent":"FUNC","rule":"DictLookup","sum":5982095},{"parent":"FUNC","rule":"DictPayLoads","sum":10275},{"parent":"FUNC","rule":"DictPayloadType","sum":210},{"parent":"FUNC","rule":"DictPayloads","sum":928102},{"parent":"FUNC","rule":"DictType","sum":503},{"parent":"FUNC","rule":"DictTypeComponents","sum":3},{"parent":"FUNC","rule":"DictTypeHandle","sum":1},{"parent":"FUNC","rule":"DictValues","sum":5},{"parent":"FUNC","rule":"Dict_Keys","sum":12},{"parent":"FUNC","rule":"Dictcontains","sum":7},{"parent":"FUNC","rule":"Dictitems","sum":19780},{"parent":"FUNC","rule":"Dictkeys","sum":1159},{"parent":"FUNC","rule":"Dictlength","sum":6},{"parent":"FUNC","rule":"Dictlookup","sum":76634},{"parent":"FUNC","rule":"Double","sum":33704},{"parent":"FUNC","rule":"DyNumber","sum":4},{"parent":"FUNC","rule":"EACH","sum":4},{"parent":"FUNC","rule":"ENDSWITH","sum":13893},{"parent":"FUNC","rule":"ENDsWith","sum":85},{"parent":"FUNC","rule":"ENSURE","sum":833225},{"parent":"FUNC","rule":"EOMONTH","sum":1},{"parent":"FUNC","rule":"EmptyDict","sum":450},{"parent":"FUNC","rule":"EmptyDictTypeHandle","sum":3},{"parent":"FUNC","rule":"EmptyList","sum":23618},{"parent":"FUNC","rule":"Emptydict","sum":6},{"parent":"FUNC","rule":"EndsWIth","sum":870},{"parent":"FUNC","rule":"EndsWith","sum":1580550},{"parent":"FUNC","rule":"Endswith","sum":19806},{"parent":"FUNC","rule":"Ensure","sum":1438138},{"parent":"FUNC","rule":"EnsureConvertibleTo","sum":2062},{"parent":"FUNC","rule":"EnsureType","sum":229200},{"parent":"FUNC","rule":"EvaluateAtom","sum":429},{"parent":"FUNC","rule":"EvaluateCode","sum":465798},{"parent":"FUNC","rule":"EvaluateExpr","sum":902167},{"parent":"FUNC","rule":"EvaluateType","sum":122971},{"parent":"FUNC","rule":"ExpandStruct","sum":269664},{"parent":"FUNC","rule":"ExtractUkropCtx","sum":1},{"parent":"FUNC","rule":"FCatBoostUserActivityOnPage","sum":2},{"parent":"FUNC","rule":"FIND","sum":5651098},{"parent":"FUNC","rule":"FIRST","sum":3},{"parent":"FUNC","rule":"FIRST_VALUE","sum":8949141},{"parent":"FUNC","rule":"FIRST_value","sum":831},{"parent":"FUNC","rule":"FIRsT_VALUE","sum":1},{"parent":"FUNC","rule":"FIleContent","sum":1},{"parent":"FUNC","rule":"FLATTEN","sum":9},{"parent":"FUNC","rule":"FLOAT","sum":5},{"parent":"FUNC","rule":"FLOOR","sum":1},{"parent":"FUNC","rule":"FORMATTYPE","sum":1},{"parent":"FUNC","rule":"FROMBYTES","sum":5},{"parent":"FUNC","rule":"FROmbytes","sum":4},{"parent":"FUNC","rule":"FileCOntent","sum":55},{"parent":"FUNC","rule":"FileContent","sum":2391991},{"parent":"FUNC","rule":"FilePath","sum":1452670},{"parent":"FUNC","rule":"Filecontent","sum":11712},{"parent":"FUNC","rule":"Filepath","sum":10},{"parent":"FUNC","rule":"FinD","sum":16},{"parent":"FUNC","rule":"Find","sum":322130},{"parent":"FUNC","rule":"FirsT_VALUE","sum":3},{"parent":"FUNC","rule":"First_VALUE","sum":10},{"parent":"FUNC","rule":"First_Value","sum":28},{"parent":"FUNC","rule":"First_value","sum":180},{"parent":"FUNC","rule":"FlattenMembers","sum":109646},{"parent":"FUNC","rule":"Float","sum":12519},{"parent":"FUNC","rule":"FoldMap","sum":13},{"parent":"FUNC","rule":"FolderPath","sum":9918},{"parent":"FUNC","rule":"ForceRemoveMember","sum":403616},{"parent":"FUNC","rule":"ForceRemoveMembers","sum":1087165},{"parent":"FUNC","rule":"ForceRenameMembers","sum":64404},{"parent":"FUNC","rule":"ForceSpreadMembers","sum":116529},{"parent":"FUNC","rule":"ForceSpreadmembers","sum":4},{"parent":"FUNC","rule":"Format","sum":1},{"parent":"FUNC","rule":"FormatCode","sum":682},{"parent":"FUNC","rule":"FormatType","sum":455855},{"parent":"FUNC","rule":"FormatTypeDiff","sum":821},{"parent":"FUNC","rule":"FormatTypeDiffPretty","sum":103},{"parent":"FUNC","rule":"Formattype","sum":101},{"parent":"FUNC","rule":"FromBytes","sum":99585},{"parent":"FUNC","rule":"FromPg","sum":4898},{"parent":"FUNC","rule":"FromYsonSimpleType","sum":1},{"parent":"FUNC","rule":"From_bytes","sum":1},{"parent":"FUNC","rule":"FromatType","sum":1},{"parent":"FUNC","rule":"Frombytes","sum":12},{"parent":"FUNC","rule":"FuncCode","sum":1250611},{"parent":"FUNC","rule":"GETDATE","sum":1},{"parent":"FUNC","rule":"GREATEST","sum":390343},{"parent":"FUNC","rule":"GROUPING","sum":71960},{"parent":"FUNC","rule":"GROUPINg","sum":4},{"parent":"FUNC","rule":"GROUP_CONCAT","sum":1},{"parent":"FUNC","rule":"GatherMembers","sum":1479034},{"parent":"FUNC","rule":"Gather_Members","sum":38},{"parent":"FUNC","rule":"Gathermembers","sum":8},{"parent":"FUNC","rule":"GetLength","sum":2},{"parent":"FUNC","rule":"GetWeekOfYear","sum":1},{"parent":"FUNC","rule":"Greatest","sum":6047},{"parent":"FUNC","rule":"Grouping","sum":243},{"parent":"FUNC","rule":"HISTOGRAM","sum":276451},{"parent":"FUNC","rule":"HISTOGRAMCDF","sum":422},{"parent":"FUNC","rule":"HISTOGRAMCdf","sum":47},{"parent":"FUNC","rule":"HISTOGRAM_CDF","sum":3},{"parent":"FUNC","rule":"HISTOGRAMcdf","sum":2},{"parent":"FUNC","rule":"HISTOGrAM","sum":44},{"parent":"FUNC","rule":"HISTOgram","sum":1},{"parent":"FUNC","rule":"HISToGRAM","sum":1},{"parent":"FUNC","rule":"HISTogram","sum":1},{"parent":"FUNC","rule":"HIStOGRAM","sum":1},{"parent":"FUNC","rule":"HIstogram","sum":34},{"parent":"FUNC","rule":"HLL","sum":12389},{"parent":"FUNC","rule":"HOP_END","sum":16},{"parent":"FUNC","rule":"HOP_START","sum":4},{"parent":"FUNC","rule":"Histogram","sum":35328},{"parent":"FUNC","rule":"HistogramCDF","sum":507},{"parent":"FUNC","rule":"HistogramCdf","sum":34},{"parent":"FUNC","rule":"Histogram_CDF","sum":57},{"parent":"FUNC","rule":"Histogramcdf","sum":1},{"parent":"FUNC","rule":"Hll","sum":1903},{"parent":"FUNC","rule":"HyperLogLog","sum":3798},{"parent":"FUNC","rule":"IF","sum":75622624},{"parent":"FUNC","rule":"IFNULL","sum":9},{"parent":"FUNC","rule":"IF_STRICT","sum":1},{"parent":"FUNC","rule":"IN","sum":2},{"parent":"FUNC","rule":"INT","sum":16},{"parent":"FUNC","rule":"INT32","sum":1},{"parent":"FUNC","rule":"INTERVAL","sum":890810},{"parent":"FUNC","rule":"INterval","sum":763},{"parent":"FUNC","rule":"If","sum":1096955},{"parent":"FUNC","rule":"IfNull","sum":6},{"parent":"FUNC","rule":"InstanceOf","sum":248569},{"parent":"FUNC","rule":"Int","sum":1},{"parent":"FUNC","rule":"Int16","sum":37},{"parent":"FUNC","rule":"Int32","sum":32553},{"parent":"FUNC","rule":"Int64","sum":3648},{"parent":"FUNC","rule":"Int8","sum":302},{"parent":"FUNC","rule":"InterVal","sum":4},{"parent":"FUNC","rule":"Interva","sum":1},{"parent":"FUNC","rule":"Interval","sum":16089312},{"parent":"FUNC","rule":"Interval64","sum":2},{"parent":"FUNC","rule":"IntervalFromDays","sum":8},{"parent":"FUNC","rule":"IsInt64","sum":1},{"parent":"FUNC","rule":"JSON","sum":70},{"parent":"FUNC","rule":"JUST","sum":128739},{"parent":"FUNC","rule":"Join","sum":1},{"parent":"FUNC","rule":"JoinTableRow","sum":1323324},{"parent":"FUNC","rule":"JoinTablerow","sum":721},{"parent":"FUNC","rule":"JointableRow","sum":1},{"parent":"FUNC","rule":"Json","sum":54542},{"parent":"FUNC","rule":"JsonDocument","sum":7},{"parent":"FUNC","rule":"Just","sum":6603059},{"parent":"FUNC","rule":"LAG","sum":4063149},{"parent":"FUNC","rule":"LAST","sum":1},{"parent":"FUNC","rule":"LAST_VALUE","sum":1351241},{"parent":"FUNC","rule":"LAST_value","sum":2},{"parent":"FUNC","rule":"LEAD","sum":1661796},{"parent":"FUNC","rule":"LEAST","sum":428259},{"parent":"FUNC","rule":"LEFT","sum":3},{"parent":"FUNC","rule":"LEFT_SHIFT","sum":1},{"parent":"FUNC","rule":"LEN","sum":1687768},{"parent":"FUNC","rule":"LENGTH","sum":3859013},{"parent":"FUNC","rule":"LENgth","sum":23},{"parent":"FUNC","rule":"LEngth","sum":12},{"parent":"FUNC","rule":"LIKELY","sum":141121},{"parent":"FUNC","rule":"LINEARHISTOGRAM","sum":374},{"parent":"FUNC","rule":"LINEARHISTOGRAMCDF","sum":1},{"parent":"FUNC","rule":"LINEARHistogram","sum":3},{"parent":"FUNC","rule":"LINEAR_HISTOGRAM","sum":13},{"parent":"FUNC","rule":"LISTALL","sum":3038},{"parent":"FUNC","rule":"LISTANY","sum":103},{"parent":"FUNC","rule":"LISTAVG","sum":32},{"parent":"FUNC","rule":"LISTAny","sum":10},{"parent":"FUNC","rule":"LISTCOLLECT","sum":1},{"parent":"FUNC","rule":"LISTCONCAT","sum":1512},{"parent":"FUNC","rule":"LISTENUMERATE","sum":3},{"parent":"FUNC","rule":"LISTEXTEND","sum":16},{"parent":"FUNC","rule":"LISTFILTER","sum":1632},{"parent":"FUNC","rule":"LISTFLATTEN","sum":4280},{"parent":"FUNC","rule":"LISTFROMRANGE","sum":1489},{"parent":"FUNC","rule":"LISTHAS","sum":28962},{"parent":"FUNC","rule":"LISTHASITEMS","sum":2097},{"parent":"FUNC","rule":"LISTHASItems","sum":1},{"parent":"FUNC","rule":"LISTHEAD","sum":18146},{"parent":"FUNC","rule":"LISTHas","sum":9},{"parent":"FUNC","rule":"LISTHead","sum":2},{"parent":"FUNC","rule":"LISTLAST","sum":1569},{"parent":"FUNC","rule":"LISTLENGTH","sum":48412},{"parent":"FUNC","rule":"LISTLENGth","sum":5},{"parent":"FUNC","rule":"LISTLenGTH","sum":7},{"parent":"FUNC","rule":"LISTLength","sum":2149},{"parent":"FUNC","rule":"LISTMAP","sum":14343},{"parent":"FUNC","rule":"LISTMAX","sum":7817},{"parent":"FUNC","rule":"LISTMIN","sum":188},{"parent":"FUNC","rule":"LISTMap","sum":365},{"parent":"FUNC","rule":"LISTNOTNULL","sum":8600},{"parent":"FUNC","rule":"LISTREVERSE","sum":2},{"parent":"FUNC","rule":"LISTSKIP","sum":15},{"parent":"FUNC","rule":"LISTSORT","sum":7651},{"parent":"FUNC","rule":"LISTSORTASC","sum":1657},{"parent":"FUNC","rule":"LISTSORTDESC","sum":109},{"parent":"FUNC","rule":"LISTSUM","sum":172},{"parent":"FUNC","rule":"LISTSort","sum":19},{"parent":"FUNC","rule":"LISTSum","sum":6},{"parent":"FUNC","rule":"LISTTAKE","sum":261},{"parent":"FUNC","rule":"LISTUNIQ","sum":602},{"parent":"FUNC","rule":"LISTUniq","sum":26},{"parent":"FUNC","rule":"LISTZIP","sum":261},{"parent":"FUNC","rule":"LISTZIPALL","sum":305},{"parent":"FUNC","rule":"LIST_AGGREGATE","sum":1},{"parent":"FUNC","rule":"LIST_ALL","sum":1},{"parent":"FUNC","rule":"LIST_ANY","sum":7},{"parent":"FUNC","rule":"LIST_CONCAT","sum":18},{"parent":"FUNC","rule":"LIST_EXTEND","sum":1},{"parent":"FUNC","rule":"LIST_EXTRACT","sum":73},{"parent":"FUNC","rule":"LIST_FOLD","sum":30},{"parent":"FUNC","rule":"LIST_FROM_RANGE","sum":356},{"parent":"FUNC","rule":"LIST_HAS","sum":2084},{"parent":"FUNC","rule":"LIST_HEAD","sum":100},{"parent":"FUNC","rule":"LIST_LAST","sum":54},{"parent":"FUNC","rule":"LIST_LENGTH","sum":2453},{"parent":"FUNC","rule":"LIST_Length","sum":1},{"parent":"FUNC","rule":"LIST_MAP","sum":9},{"parent":"FUNC","rule":"LIST_MAX","sum":285},{"parent":"FUNC","rule":"LIST_SORT","sum":612},{"parent":"FUNC","rule":"LIST_SORT_DESC","sum":17},{"parent":"FUNC","rule":"LIST_SUM","sum":2},{"parent":"FUNC","rule":"LIST_TAKE","sum":2},{"parent":"FUNC","rule":"LIST_UNIQ","sum":349},{"parent":"FUNC","rule":"LIST_length","sum":1},{"parent":"FUNC","rule":"LISTfilter","sum":7},{"parent":"FUNC","rule":"LISTfromRange","sum":1424},{"parent":"FUNC","rule":"LISTfromrange","sum":3},{"parent":"FUNC","rule":"LISThas","sum":2},{"parent":"FUNC","rule":"LISTnotNull","sum":2},{"parent":"FUNC","rule":"LIStExtend","sum":3},{"parent":"FUNC","rule":"LIStHas","sum":2},{"parent":"FUNC","rule":"LIStLENGth","sum":1},{"parent":"FUNC","rule":"LIStLength","sum":1},{"parent":"FUNC","rule":"LIStmap","sum":1},{"parent":"FUNC","rule":"LIstConcat","sum":303},{"parent":"FUNC","rule":"LIstExtend","sum":3},{"parent":"FUNC","rule":"LIstFilter","sum":71},{"parent":"FUNC","rule":"LIstFromRange","sum":8},{"parent":"FUNC","rule":"LIstFromrange","sum":1},{"parent":"FUNC","rule":"LIstHas","sum":14},{"parent":"FUNC","rule":"LIstHasItems","sum":13},{"parent":"FUNC","rule":"LIstHead","sum":3},{"parent":"FUNC","rule":"LIstLength","sum":343},{"parent":"FUNC","rule":"LIstMap","sum":1363},{"parent":"FUNC","rule":"LIstMax","sum":7},{"parent":"FUNC","rule":"LIstSkip","sum":2},{"parent":"FUNC","rule":"LIstSort","sum":1},{"parent":"FUNC","rule":"LIstSum","sum":1},{"parent":"FUNC","rule":"LIstfilter","sum":2},{"parent":"FUNC","rule":"LIstlength","sum":13},{"parent":"FUNC","rule":"LIstmap","sum":12},{"parent":"FUNC","rule":"LOG","sum":1},{"parent":"FUNC","rule":"LOG10","sum":6},{"parent":"FUNC","rule":"LOGHISTOGRAM","sum":1},{"parent":"FUNC","rule":"LOWER","sum":5},{"parent":"FUNC","rule":"Lag","sum":12209},{"parent":"FUNC","rule":"LambdaArgumentsCount","sum":32},{"parent":"FUNC","rule":"LambdaCode","sum":332931},{"parent":"FUNC","rule":"LastValue","sum":5},{"parent":"FUNC","rule":"Last_VALUE","sum":14},{"parent":"FUNC","rule":"Last_Value","sum":29},{"parent":"FUNC","rule":"Last_value","sum":106},{"parent":"FUNC","rule":"Lead","sum":11214},{"parent":"FUNC","rule":"Least","sum":2256},{"parent":"FUNC","rule":"Len","sum":93638},{"parent":"FUNC","rule":"LenGTH","sum":12},{"parent":"FUNC","rule":"Length","sum":1252963},{"parent":"FUNC","rule":"LiSTMAP","sum":2},{"parent":"FUNC","rule":"Likely","sum":21239},{"parent":"FUNC","rule":"LinearHISTOGRAM","sum":86},{"parent":"FUNC","rule":"LinearHistogram","sum":46243},{"parent":"FUNC","rule":"LinearHistogramCDF","sum":347},{"parent":"FUNC","rule":"LinearHistogramcdf","sum":10},{"parent":"FUNC","rule":"Linear_Histogram","sum":7},{"parent":"FUNC","rule":"Linearhistogram","sum":4},{"parent":"FUNC","rule":"Lis","sum":1},{"parent":"FUNC","rule":"LisMap","sum":2},{"parent":"FUNC","rule":"LisTHas","sum":8},{"parent":"FUNC","rule":"LisTLength","sum":2},{"parent":"FUNC","rule":"ListALL","sum":1539},{"parent":"FUNC","rule":"ListALl","sum":8},{"parent":"FUNC","rule":"ListANY","sum":1765},{"parent":"FUNC","rule":"ListAVG","sum":267},{"parent":"FUNC","rule":"ListAgg","sum":1},{"parent":"FUNC","rule":"ListAggregate","sum":424700},{"parent":"FUNC","rule":"ListAll","sum":266378},{"parent":"FUNC","rule":"ListAny","sum":1881837},{"parent":"FUNC","rule":"ListAppend","sum":1},{"parent":"FUNC","rule":"ListAvg","sum":547883},{"parent":"FUNC","rule":"ListCOncat","sum":2},{"parent":"FUNC","rule":"ListCode","sum":211101},{"parent":"FUNC","rule":"ListCollect","sum":904831},{"parent":"FUNC","rule":"ListConCat","sum":99},{"parent":"FUNC","rule":"ListConcat","sum":5492226},{"parent":"FUNC","rule":"ListCount","sum":1},{"parent":"FUNC","rule":"ListCreate","sum":1959588},{"parent":"FUNC","rule":"ListDistinct","sum":1},{"parent":"FUNC","rule":"ListEnumerate","sum":1403741},{"parent":"FUNC","rule":"ListExtEnd","sum":1},{"parent":"FUNC","rule":"ListExtend","sum":4385295},{"parent":"FUNC","rule":"ListExtendStrict","sum":94001},{"parent":"FUNC","rule":"ListExtract","sum":3364774},{"parent":"FUNC","rule":"ListFILTER","sum":572},{"parent":"FUNC","rule":"ListFIlter","sum":350},{"parent":"FUNC","rule":"ListFLatMap","sum":258},{"parent":"FUNC","rule":"ListFLatten","sum":580},{"parent":"FUNC","rule":"ListFROMRange","sum":5100},{"parent":"FUNC","rule":"ListFilteR","sum":4},{"parent":"FUNC","rule":"ListFilter","sum":17869998},{"parent":"FUNC","rule":"ListFirst","sum":3},{"parent":"FUNC","rule":"ListFlatMap","sum":908417},{"parent":"FUNC","rule":"ListFlatmap","sum":29272},{"parent":"FUNC","rule":"ListFlatten","sum":2832777},{"parent":"FUNC","rule":"ListFold","sum":235244},{"parent":"FUNC","rule":"ListFold1","sum":35769},{"parent":"FUNC","rule":"ListFold1Map","sum":3456},{"parent":"FUNC","rule":"ListFoldMap","sum":43538},{"parent":"FUNC","rule":"ListFromPython","sum":2},{"parent":"FUNC","rule":"ListFromRANGE","sum":23},{"parent":"FUNC","rule":"ListFromRAnge","sum":45},{"parent":"FUNC","rule":"ListFromRange","sum":3104241},{"parent":"FUNC","rule":"ListFromTuple","sum":59596},{"parent":"FUNC","rule":"ListFromTyple","sum":2},{"parent":"FUNC","rule":"ListFromrange","sum":12},{"parent":"FUNC","rule":"ListHAS","sum":364},{"parent":"FUNC","rule":"ListHAs","sum":564},{"parent":"FUNC","rule":"ListHAsItems","sum":26},{"parent":"FUNC","rule":"ListHEAD","sum":2},{"parent":"FUNC","rule":"ListHEad","sum":76},{"parent":"FUNC","rule":"ListHaS","sum":1},{"parent":"FUNC","rule":"ListHas","sum":20698096},{"parent":"FUNC","rule":"ListHasITems","sum":9},{"parent":"FUNC","rule":"ListHasItemhs","sum":1},{"parent":"FUNC","rule":"ListHasItems","sum":5153780},{"parent":"FUNC","rule":"ListHasitems","sum":358},{"parent":"FUNC","rule":"ListHeaD","sum":89},{"parent":"FUNC","rule":"ListHead","sum":10851548},{"parent":"FUNC","rule":"ListINdexOf","sum":2},{"parent":"FUNC","rule":"ListIndex","sum":1},{"parent":"FUNC","rule":"ListIndexOF","sum":10},{"parent":"FUNC","rule":"ListIndexOf","sum":1237904},{"parent":"FUNC","rule":"ListIndexof","sum":19},{"parent":"FUNC","rule":"ListItemType","sum":211208},{"parent":"FUNC","rule":"ListJoin","sum":3},{"parent":"FUNC","rule":"ListJsonDocument","sum":1},{"parent":"FUNC","rule":"ListLAst","sum":10},{"parent":"FUNC","rule":"ListLENGTH","sum":2171},{"parent":"FUNC","rule":"ListLEngth","sum":19},{"parent":"FUNC","rule":"ListLasT","sum":12},{"parent":"FUNC","rule":"ListLast","sum":5994907},{"parent":"FUNC","rule":"ListLeNgth","sum":1},{"parent":"FUNC","rule":"ListLegth","sum":1},{"parent":"FUNC","rule":"ListLenght","sum":1},{"parent":"FUNC","rule":"ListLengtH","sum":2},{"parent":"FUNC","rule":"ListLength","sum":18603350},{"parent":"FUNC","rule":"ListMAP","sum":227},{"parent":"FUNC","rule":"ListMAX","sum":10586},{"parent":"FUNC","rule":"ListMAp","sum":4887},{"parent":"FUNC","rule":"ListMAx","sum":1},{"parent":"FUNC","rule":"ListMIN","sum":52},{"parent":"FUNC","rule":"ListMIn","sum":1},{"parent":"FUNC","rule":"ListMaP","sum":1152},{"parent":"FUNC","rule":"ListMap","sum":35552895},{"parent":"FUNC","rule":"ListMax","sum":1417613},{"parent":"FUNC","rule":"ListMin","sum":816878},{"parent":"FUNC","rule":"ListNOTNull","sum":719},{"parent":"FUNC","rule":"ListNoTNull","sum":17},{"parent":"FUNC","rule":"ListNoTnull","sum":1002},{"parent":"FUNC","rule":"ListNonNull","sum":1},{"parent":"FUNC","rule":"ListNotNULL","sum":30827},{"parent":"FUNC","rule":"ListNotNUll","sum":7688},{"parent":"FUNC","rule":"ListNotNuLL","sum":5},{"parent":"FUNC","rule":"ListNotNul","sum":1},{"parent":"FUNC","rule":"ListNotNulL","sum":3},{"parent":"FUNC","rule":"ListNotNull","sum":9371336},{"parent":"FUNC","rule":"ListNotnull","sum":22},{"parent":"FUNC","rule":"ListREplicate","sum":2},{"parent":"FUNC","rule":"ListRange","sum":4},{"parent":"FUNC","rule":"ListRepeat","sum":1},{"parent":"FUNC","rule":"ListReplicate","sum":953844},{"parent":"FUNC","rule":"ListReverse","sum":1330778},{"parent":"FUNC","rule":"ListSORT","sum":1},{"parent":"FUNC","rule":"ListSORtAsc","sum":26},{"parent":"FUNC","rule":"ListSOrt","sum":3},{"parent":"FUNC","rule":"ListSUM","sum":782},{"parent":"FUNC","rule":"ListSUm","sum":12},{"parent":"FUNC","rule":"ListSample","sum":13},{"parent":"FUNC","rule":"ListSampleN","sum":732},{"parent":"FUNC","rule":"ListShuffle","sum":560},{"parent":"FUNC","rule":"ListShuffleN","sum":1},{"parent":"FUNC","rule":"ListSkip","sum":617922},{"parent":"FUNC","rule":"ListSkipWhile","sum":139031},{"parent":"FUNC","rule":"ListSkipWhileInclusive","sum":8836},{"parent":"FUNC","rule":"ListSort","sum":5024768},{"parent":"FUNC","rule":"ListSortASC","sum":18351},{"parent":"FUNC","rule":"ListSortAsc","sum":488484},{"parent":"FUNC","rule":"ListSortDESC","sum":56},{"parent":"FUNC","rule":"ListSortDEsc","sum":2},{"parent":"FUNC","rule":"ListSortDesc","sum":1140951},{"parent":"FUNC","rule":"ListSortasc","sum":9},{"parent":"FUNC","rule":"ListSortdesc","sum":632},{"parent":"FUNC","rule":"ListSum","sum":1754680},{"parent":"FUNC","rule":"ListTail","sum":1},{"parent":"FUNC","rule":"ListTake","sum":2160879},{"parent":"FUNC","rule":"ListTakeWhile","sum":89576},{"parent":"FUNC","rule":"ListTakeWhileInclusive","sum":2411},{"parent":"FUNC","rule":"ListToTuple","sum":6582},{"parent":"FUNC","rule":"ListTop","sum":2410},{"parent":"FUNC","rule":"ListTopAsc","sum":132},{"parent":"FUNC","rule":"ListTopDESC","sum":1},{"parent":"FUNC","rule":"ListTopDesc","sum":11705},{"parent":"FUNC","rule":"ListTopSort","sum":1088},{"parent":"FUNC","rule":"ListTopSortAsc","sum":102},{"parent":"FUNC","rule":"ListTopSortDesc","sum":60334},{"parent":"FUNC","rule":"ListTopdesc","sum":1},{"parent":"FUNC","rule":"ListType","sum":32511},{"parent":"FUNC","rule":"ListTypeHandle","sum":1},{"parent":"FUNC","rule":"ListUNiq","sum":15},{"parent":"FUNC","rule":"ListUnionALL","sum":128},{"parent":"FUNC","rule":"ListUnionAll","sum":56616},{"parent":"FUNC","rule":"ListUniq","sum":3987721},{"parent":"FUNC","rule":"ListUniqStable","sum":76574},{"parent":"FUNC","rule":"ListZIP","sum":8},{"parent":"FUNC","rule":"ListZIp","sum":1},{"parent":"FUNC","rule":"ListZip","sum":2533519},{"parent":"FUNC","rule":"ListZipALL","sum":291501},{"parent":"FUNC","rule":"ListZipAll","sum":274990},{"parent":"FUNC","rule":"List_FromRange","sum":11},{"parent":"FUNC","rule":"List_Has","sum":23},{"parent":"FUNC","rule":"List_Length","sum":15},{"parent":"FUNC","rule":"List_Sort","sum":10},{"parent":"FUNC","rule":"List_Uniq","sum":1},{"parent":"FUNC","rule":"List_concat","sum":3},{"parent":"FUNC","rule":"List_length","sum":2},{"parent":"FUNC","rule":"List_sort","sum":80},{"parent":"FUNC","rule":"Listall","sum":4458},{"parent":"FUNC","rule":"Listany","sum":38},{"parent":"FUNC","rule":"Listcollect","sum":5312},{"parent":"FUNC","rule":"Listconcat","sum":14827},{"parent":"FUNC","rule":"Listenumerate","sum":3},{"parent":"FUNC","rule":"Listextend","sum":5},{"parent":"FUNC","rule":"Listfilter","sum":259840},{"parent":"FUNC","rule":"Listflatmap","sum":297},{"parent":"FUNC","rule":"Listflatten","sum":33},{"parent":"FUNC","rule":"ListfromRange","sum":31},{"parent":"FUNC","rule":"Listfromrange","sum":125},{"parent":"FUNC","rule":"Listfromtuple","sum":1},{"parent":"FUNC","rule":"Listhas","sum":69101},{"parent":"FUNC","rule":"ListhasItems","sum":259},{"parent":"FUNC","rule":"Listhasitems","sum":525},{"parent":"FUNC","rule":"Listhead","sum":18563},{"parent":"FUNC","rule":"ListindexOf","sum":2326},{"parent":"FUNC","rule":"Listindexof","sum":4},{"parent":"FUNC","rule":"ListlENGTH","sum":1},{"parent":"FUNC","rule":"ListlEngth","sum":2},{"parent":"FUNC","rule":"Listlast","sum":4458},{"parent":"FUNC","rule":"Listlength","sum":10842},{"parent":"FUNC","rule":"Listmap","sum":11243},{"parent":"FUNC","rule":"Listmax","sum":506},{"parent":"FUNC","rule":"Listmin","sum":1623},{"parent":"FUNC","rule":"ListnotNull","sum":38},{"parent":"FUNC","rule":"Listnotnull","sum":8},{"parent":"FUNC","rule":"Listreverse","sum":17},{"parent":"FUNC","rule":"Listskip","sum":148},{"parent":"FUNC","rule":"ListskipWhile","sum":409},{"parent":"FUNC","rule":"Listsort","sum":1096},{"parent":"FUNC","rule":"Listsortasc","sum":1},{"parent":"FUNC","rule":"Listsortdesc","sum":1},{"parent":"FUNC","rule":"Listsum","sum":27},{"parent":"FUNC","rule":"Listtake","sum":20214},{"parent":"FUNC","rule":"ListtakeWhile","sum":2},{"parent":"FUNC","rule":"Listuniq","sum":331},{"parent":"FUNC","rule":"Listzip","sum":789},{"parent":"FUNC","rule":"Listzipall","sum":1},{"parent":"FUNC","rule":"LogHISTOGRAM","sum":7},{"parent":"FUNC","rule":"LogHistogram","sum":284},{"parent":"FUNC","rule":"LogHistogramCDF","sum":6},{"parent":"FUNC","rule":"LogarithmicHISTOGRAM","sum":1},{"parent":"FUNC","rule":"LogarithmicHistogram","sum":614},{"parent":"FUNC","rule":"Logarithmichistogram","sum":20},{"parent":"FUNC","rule":"Lookup","sum":1},{"parent":"FUNC","rule":"MAX","sum":34609087},{"parent":"FUNC","rule":"MAXBY","sum":123},{"parent":"FUNC","rule":"MAXOF","sum":3},{"parent":"FUNC","rule":"MAX_BY","sum":22854976},{"parent":"FUNC","rule":"MAX_By","sum":19},{"parent":"FUNC","rule":"MAX_IF","sum":2},{"parent":"FUNC","rule":"MAX_OF","sum":2199737},{"parent":"FUNC","rule":"MAX_Of","sum":2},{"parent":"FUNC","rule":"MAX_bY","sum":7},{"parent":"FUNC","rule":"MAX_by","sum":10716},{"parent":"FUNC","rule":"MAX_of","sum":554},{"parent":"FUNC","rule":"MAx","sum":283},{"parent":"FUNC","rule":"MEDIAN","sum":920595},{"parent":"FUNC","rule":"MEDiAN","sum":4},{"parent":"FUNC","rule":"MEdian","sum":14},{"parent":"FUNC","rule":"MIN","sum":14670365},{"parent":"FUNC","rule":"MINBY","sum":1908},{"parent":"FUNC","rule":"MIN_BY","sum":5312374},{"parent":"FUNC","rule":"MIN_IF","sum":8},{"parent":"FUNC","rule":"MIN_OF","sum":2272013},{"parent":"FUNC","rule":"MIN_by","sum":1325},{"parent":"FUNC","rule":"MIN_of","sum":5},{"parent":"FUNC","rule":"MIn","sum":194},{"parent":"FUNC","rule":"MIn_OF","sum":3},{"parent":"FUNC","rule":"MODE","sum":901163},{"parent":"FUNC","rule":"MODe","sum":1},{"parent":"FUNC","rule":"MONTH","sum":1},{"parent":"FUNC","rule":"MULTI_AGGREGATE_BY","sum":702789},{"parent":"FUNC","rule":"MaX","sum":7},{"parent":"FUNC","rule":"MakeDate","sum":1},{"parent":"FUNC","rule":"Map","sum":4},{"parent":"FUNC","rule":"Max","sum":382457},{"parent":"FUNC","rule":"MaxBy","sum":5370},{"parent":"FUNC","rule":"MaxOf","sum":204},{"parent":"FUNC","rule":"Max_BY","sum":3200},{"parent":"FUNC","rule":"Max_By","sum":71883},{"parent":"FUNC","rule":"Max_OF","sum":689},{"parent":"FUNC","rule":"Max_Of","sum":657},{"parent":"FUNC","rule":"Max_by","sum":141471},{"parent":"FUNC","rule":"Max_of","sum":3901},{"parent":"FUNC","rule":"Median","sum":19475},{"parent":"FUNC","rule":"MiN","sum":32},{"parent":"FUNC","rule":"Min","sum":193742},{"parent":"FUNC","rule":"MinBy","sum":1221},{"parent":"FUNC","rule":"MinOf","sum":892},{"parent":"FUNC","rule":"Min_BY","sum":451},{"parent":"FUNC","rule":"Min_By","sum":10706},{"parent":"FUNC","rule":"Min_OF","sum":1095},{"parent":"FUNC","rule":"Min_Of","sum":855},{"parent":"FUNC","rule":"Min_by","sum":9075},{"parent":"FUNC","rule":"Min_of","sum":1293},{"parent":"FUNC","rule":"MoDE","sum":1},{"parent":"FUNC","rule":"Mode","sum":14889},{"parent":"FUNC","rule":"Mul","sum":1},{"parent":"FUNC","rule":"MultiAggregateBy","sum":653},{"parent":"FUNC","rule":"Multi_Aggregate_BY","sum":4},{"parent":"FUNC","rule":"Multi_Aggregate_By","sum":1157},{"parent":"FUNC","rule":"Multi_Aggregate_by","sum":4},{"parent":"FUNC","rule":"Multi_aggregate_by","sum":407},{"parent":"FUNC","rule":"NANVL","sum":720232},{"parent":"FUNC","rule":"NOTHING","sum":3334},{"parent":"FUNC","rule":"NOW","sum":2},{"parent":"FUNC","rule":"NOW64","sum":2},{"parent":"FUNC","rule":"NOthing","sum":1},{"parent":"FUNC","rule":"NTH_VALUE","sum":3048},{"parent":"FUNC","rule":"NTILE","sum":1844},{"parent":"FUNC","rule":"NULLIF","sum":3},{"parent":"FUNC","rule":"NVL","sum":17734420},{"parent":"FUNC","rule":"NVl","sum":756},{"parent":"FUNC","rule":"NaNvl","sum":26},{"parent":"FUNC","rule":"NanVL","sum":1},{"parent":"FUNC","rule":"NanVl","sum":3},{"parent":"FUNC","rule":"Nanvl","sum":10867},{"parent":"FUNC","rule":"NothiNG","sum":2},{"parent":"FUNC","rule":"Nothing","sum":814707},{"parent":"FUNC","rule":"NullTypeHandle","sum":2230},{"parent":"FUNC","rule":"Nvl","sum":28806},{"parent":"FUNC","rule":"ON","sum":1},{"parent":"FUNC","rule":"OR","sum":6},{"parent":"FUNC","rule":"OVER","sum":1},{"parent":"FUNC","rule":"OptionalItemType","sum":37237},{"parent":"FUNC","rule":"OptionalType","sum":135500},{"parent":"FUNC","rule":"OptionalTypeHandle","sum":44441},{"parent":"FUNC","rule":"PERCENTILE","sum":30169690},{"parent":"FUNC","rule":"PERCENTIlE","sum":4},{"parent":"FUNC","rule":"PERCENT_RANK","sum":6243},{"parent":"FUNC","rule":"PERCENtILE","sum":1994},{"parent":"FUNC","rule":"PERCEnTILE","sum":1},{"parent":"FUNC","rule":"PICKLE","sum":77},{"parent":"FUNC","rule":"PIckle","sum":7},{"parent":"FUNC","rule":"POPULATION_STDDEV","sum":360},{"parent":"FUNC","rule":"POPULATION_VARIANCE","sum":19},{"parent":"FUNC","rule":"POWER","sum":4},{"parent":"FUNC","rule":"ParseDuration","sum":2},{"parent":"FUNC","rule":"ParseFILE","sum":22},{"parent":"FUNC","rule":"ParseFIle","sum":8},{"parent":"FUNC","rule":"ParseFile","sum":950353},{"parent":"FUNC","rule":"ParseType","sum":467635},{"parent":"FUNC","rule":"ParseTypeHandle","sum":1210152},{"parent":"FUNC","rule":"Parsefile","sum":111},{"parent":"FUNC","rule":"Path","sum":4},{"parent":"FUNC","rule":"PeRCENTILE","sum":365},{"parent":"FUNC","rule":"Percentile","sum":72492},{"parent":"FUNC","rule":"PgArray","sum":17},{"parent":"FUNC","rule":"PgBool","sum":158},{"parent":"FUNC","rule":"PgCall","sum":562},{"parent":"FUNC","rule":"PgCast","sum":5679},{"parent":"FUNC","rule":"PgCircle","sum":5},{"parent":"FUNC","rule":"PgConst","sum":93},{"parent":"FUNC","rule":"PgDate","sum":104},{"parent":"FUNC","rule":"PgGeometry","sum":6},{"parent":"FUNC","rule":"PgInt4","sum":4},{"parent":"FUNC","rule":"PgInt8","sum":1},{"parent":"FUNC","rule":"PgInterval","sum":33},{"parent":"FUNC","rule":"PgOp","sum":1375},{"parent":"FUNC","rule":"PgPoint","sum":76},{"parent":"FUNC","rule":"PgPolygon","sum":517},{"parent":"FUNC","rule":"PgRangeCall","sum":7},{"parent":"FUNC","rule":"PgText","sum":24},{"parent":"FUNC","rule":"PgTimestamp","sum":42},{"parent":"FUNC","rule":"PgVarBit","sum":2},{"parent":"FUNC","rule":"Pickle","sum":118773},{"parent":"FUNC","rule":"QuoteCode","sum":715110},{"parent":"FUNC","rule":"RADIANS","sum":12},{"parent":"FUNC","rule":"RAND","sum":2},{"parent":"FUNC","rule":"RANDOM","sum":488032},{"parent":"FUNC","rule":"RANDOMNUMBER","sum":4004},{"parent":"FUNC","rule":"RANDOMNumber","sum":11},{"parent":"FUNC","rule":"RANDOMUUID","sum":5},{"parent":"FUNC","rule":"RANDOM_NUMBER","sum":83},{"parent":"FUNC","rule":"RANGE","sum":149},{"parent":"FUNC","rule":"RANK","sum":952478},{"parent":"FUNC","rule":"RAndom","sum":7},{"parent":"FUNC","rule":"REGEXP","sum":1},{"parent":"FUNC","rule":"REMOVEMEMBERS","sum":41},{"parent":"FUNC","rule":"REMOVE_mEMBER","sum":6},{"parent":"FUNC","rule":"REPLACE","sum":3},{"parent":"FUNC","rule":"RFIND","sum":3641157},{"parent":"FUNC","rule":"RFind","sum":247072},{"parent":"FUNC","rule":"RIGHT","sum":2},{"parent":"FUNC","rule":"ROUND","sum":10},{"parent":"FUNC","rule":"ROWNUMBER","sum":33},{"parent":"FUNC","rule":"ROW_NUMBER","sum":9443039},{"parent":"FUNC","rule":"ROW_NUMber","sum":11},{"parent":"FUNC","rule":"ROW_Number","sum":8},{"parent":"FUNC","rule":"ROW_nUMBER","sum":1},{"parent":"FUNC","rule":"ROW_nuMBER","sum":4},{"parent":"FUNC","rule":"ROW_number","sum":13426},{"parent":"FUNC","rule":"Rand","sum":1},{"parent":"FUNC","rule":"Random","sum":733297},{"parent":"FUNC","rule":"RandomNUmber","sum":167},{"parent":"FUNC","rule":"RandomNumber","sum":274828},{"parent":"FUNC","rule":"RandomUUID","sum":7899},{"parent":"FUNC","rule":"RandomUUid","sum":32479},{"parent":"FUNC","rule":"RandomUuid","sum":214069},{"parent":"FUNC","rule":"Randomnumber","sum":2},{"parent":"FUNC","rule":"Range","sum":2},{"parent":"FUNC","rule":"Rank","sum":3113},{"parent":"FUNC","rule":"RemoveMEmbers","sum":16},{"parent":"FUNC","rule":"RemoveMember","sum":432646},{"parent":"FUNC","rule":"RemoveMembers","sum":732652},{"parent":"FUNC","rule":"RemoveTimeZone","sum":13},{"parent":"FUNC","rule":"RemoveTimezone","sum":433750},{"parent":"FUNC","rule":"Removemember","sum":686},{"parent":"FUNC","rule":"Removemembers","sum":4},{"parent":"FUNC","rule":"RenameMembers","sum":519393},{"parent":"FUNC","rule":"ReplaceMember","sum":9364},{"parent":"FUNC","rule":"ReprCode","sum":196073},{"parent":"FUNC","rule":"ResourceType","sum":9},{"parent":"FUNC","rule":"Rfind","sum":869},{"parent":"FUNC","rule":"RootAttributes","sum":20},{"parent":"FUNC","rule":"RowNum","sum":1},{"parent":"FUNC","rule":"RowNumber","sum":20754},{"parent":"FUNC","rule":"Row_NUMBER","sum":33},{"parent":"FUNC","rule":"Row_NUmber","sum":16},{"parent":"FUNC","rule":"Row_Number","sum":59846},{"parent":"FUNC","rule":"Row_number","sum":4210},{"parent":"FUNC","rule":"SESSIONWINDOW","sum":131},{"parent":"FUNC","rule":"SETINTERSECTION","sum":20},{"parent":"FUNC","rule":"SIGN","sum":1},{"parent":"FUNC","rule":"SIN","sum":4},{"parent":"FUNC","rule":"SOME","sum":33042966},{"parent":"FUNC","rule":"SOMe","sum":17},{"parent":"FUNC","rule":"SON_VALUE","sum":1},{"parent":"FUNC","rule":"SOmE","sum":3},{"parent":"FUNC","rule":"SOme","sum":13},{"parent":"FUNC","rule":"SPLIT","sum":3},{"parent":"FUNC","rule":"SQL","sum":6},{"parent":"FUNC","rule":"SQRT","sum":2},{"parent":"FUNC","rule":"STARTSWITH","sum":25270},{"parent":"FUNC","rule":"STARTS_WITH","sum":54},{"parent":"FUNC","rule":"STARTsWITH","sum":17},{"parent":"FUNC","rule":"STATICMAP","sum":46},{"parent":"FUNC","rule":"STD","sum":6},{"parent":"FUNC","rule":"STDDEV","sum":400497},{"parent":"FUNC","rule":"STDDEVPOP","sum":2741},{"parent":"FUNC","rule":"STDDEVSAMP","sum":1106},{"parent":"FUNC","rule":"STDDEV_POP","sum":14},{"parent":"FUNC","rule":"STDDEV_POPULATION","sum":18667},{"parent":"FUNC","rule":"STDDEV_SAMP","sum":3263},{"parent":"FUNC","rule":"STDDEV_SAMPLE","sum":9958},{"parent":"FUNC","rule":"STDDev","sum":2},{"parent":"FUNC","rule":"STDdev","sum":4},{"parent":"FUNC","rule":"STRING_SPLIT","sum":1},{"parent":"FUNC","rule":"ST_AsText","sum":3},{"parent":"FUNC","rule":"ST_ClosestPoint","sum":3},{"parent":"FUNC","rule":"ST_DWithin","sum":4},{"parent":"FUNC","rule":"ST_Distance","sum":5},{"parent":"FUNC","rule":"ST_GeomFromGeoHash","sum":1},{"parent":"FUNC","rule":"ST_MakePoint","sum":4},{"parent":"FUNC","rule":"ST_Point","sum":10},{"parent":"FUNC","rule":"ST_PolygonFromText","sum":5},{"parent":"FUNC","rule":"ST_SetSRID","sum":10},{"parent":"FUNC","rule":"ST_Transform","sum":4},{"parent":"FUNC","rule":"STartsWith","sum":2},{"parent":"FUNC","rule":"STdDEV","sum":9},{"parent":"FUNC","rule":"SUBQUERYExtendFor","sum":6},{"parent":"FUNC","rule":"SUBSTIRNG","sum":4},{"parent":"FUNC","rule":"SUBSTRING","sum":29484013},{"parent":"FUNC","rule":"SUBSTRINg","sum":2},{"parent":"FUNC","rule":"SUBSTRInG","sum":4},{"parent":"FUNC","rule":"SUBSTRiNG","sum":2},{"parent":"FUNC","rule":"SUBSTRinG","sum":2},{"parent":"FUNC","rule":"SUBSTRing","sum":227},{"parent":"FUNC","rule":"SUBSTrING","sum":21},{"parent":"FUNC","rule":"SUBSTring","sum":14},{"parent":"FUNC","rule":"SUBStRING","sum":2},{"parent":"FUNC","rule":"SUBString","sum":20},{"parent":"FUNC","rule":"SUBstring","sum":3},{"parent":"FUNC","rule":"SUM","sum":42240466},{"parent":"FUNC","rule":"SUMIF","sum":3293},{"parent":"FUNC","rule":"SUM_","sum":318},{"parent":"FUNC","rule":"SUM_IF","sum":8459280},{"parent":"FUNC","rule":"SUM_If","sum":122},{"parent":"FUNC","rule":"SUM_iF","sum":19},{"parent":"FUNC","rule":"SUM_if","sum":269198},{"parent":"FUNC","rule":"SUbstring","sum":5},{"parent":"FUNC","rule":"SUm","sum":80},{"parent":"FUNC","rule":"SUm_IF","sum":30},{"parent":"FUNC","rule":"SWITCH","sum":2},{"parent":"FUNC","rule":"SecureParam","sum":907220},{"parent":"FUNC","rule":"SessionStart","sum":24180},{"parent":"FUNC","rule":"SessionState","sum":720},{"parent":"FUNC","rule":"SessionWindow","sum":102319},{"parent":"FUNC","rule":"SetBit","sum":43806},{"parent":"FUNC","rule":"SetContains","sum":1},{"parent":"FUNC","rule":"SetCreate","sum":45757},{"parent":"FUNC","rule":"SetDIfference","sum":11},{"parent":"FUNC","rule":"SetDifference","sum":487197},{"parent":"FUNC","rule":"SetINtersection","sum":1},{"parent":"FUNC","rule":"SetIncludes","sum":245705},{"parent":"FUNC","rule":"SetInterSection","sum":21},{"parent":"FUNC","rule":"SetIntersection","sum":1268919},{"parent":"FUNC","rule":"SetIsDisJOINt","sum":7985},{"parent":"FUNC","rule":"SetIsDisJoint","sum":1697},{"parent":"FUNC","rule":"SetIsDisjoint","sum":1251028},{"parent":"FUNC","rule":"SetSymmetricDifference","sum":8897},{"parent":"FUNC","rule":"SetUNION","sum":1},{"parent":"FUNC","rule":"SetUnion","sum":592702},{"parent":"FUNC","rule":"Setintersection","sum":4613},{"parent":"FUNC","rule":"SizeOf","sum":1},{"parent":"FUNC","rule":"Some","sum":2534820},{"parent":"FUNC","rule":"SplitToList","sum":6},{"parent":"FUNC","rule":"SpreadMembers","sum":345800},{"parent":"FUNC","rule":"StablePicke","sum":1},{"parent":"FUNC","rule":"StablePickle","sum":213884},{"parent":"FUNC","rule":"StartSwith","sum":105},{"parent":"FUNC","rule":"StartsWIth","sum":708},{"parent":"FUNC","rule":"StartsWith","sum":5782787},{"parent":"FUNC","rule":"Startswith","sum":20204},{"parent":"FUNC","rule":"StaticFold","sum":311},{"parent":"FUNC","rule":"StaticMap","sum":679859},{"parent":"FUNC","rule":"StaticZip","sum":15268},{"parent":"FUNC","rule":"Staticmap","sum":2},{"parent":"FUNC","rule":"StdDev","sum":33},{"parent":"FUNC","rule":"Stddev","sum":43},{"parent":"FUNC","rule":"StreamItemType","sum":5680},{"parent":"FUNC","rule":"StreamType","sum":79441},{"parent":"FUNC","rule":"StreamTypeHandle","sum":17},{"parent":"FUNC","rule":"String","sum":34247},{"parent":"FUNC","rule":"StringLength","sum":5},{"parent":"FUNC","rule":"StringSplitToList","sum":4},{"parent":"FUNC","rule":"StructDifference","sum":241},{"parent":"FUNC","rule":"StructIntersection","sum":859},{"parent":"FUNC","rule":"StructMemberType","sum":20787},{"parent":"FUNC","rule":"StructMembers","sum":974117},{"parent":"FUNC","rule":"StructSymmetricDifference","sum":172},{"parent":"FUNC","rule":"StructType","sum":17912},{"parent":"FUNC","rule":"StructTypeComponents","sum":100573},{"parent":"FUNC","rule":"StructTypeHandle","sum":88467},{"parent":"FUNC","rule":"StructUnion","sum":106490},{"parent":"FUNC","rule":"SuBSTRING","sum":1},{"parent":"FUNC","rule":"SuM","sum":9},{"parent":"FUNC","rule":"SuM_IF","sum":4},{"parent":"FUNC","rule":"SubQueryExtendFor","sum":3},{"parent":"FUNC","rule":"SubSTRING","sum":3},{"parent":"FUNC","rule":"SubString","sum":27710},{"parent":"FUNC","rule":"SubqueryAssumeOrderBy","sum":821},{"parent":"FUNC","rule":"SubqueryExtend","sum":37579},{"parent":"FUNC","rule":"SubqueryExtendFor","sum":769342},{"parent":"FUNC","rule":"SubqueryMerge","sum":19},{"parent":"FUNC","rule":"SubqueryMergeFor","sum":36687},{"parent":"FUNC","rule":"SubqueryOrderBy","sum":186437},{"parent":"FUNC","rule":"SubqueryUnionALLFor","sum":9},{"parent":"FUNC","rule":"SubqueryUnionALlFor","sum":82},{"parent":"FUNC","rule":"SubqueryUnionAll","sum":26085},{"parent":"FUNC","rule":"SubqueryUnionAllFor","sum":143430},{"parent":"FUNC","rule":"SubqueryUnionAllfor","sum":385},{"parent":"FUNC","rule":"SubqueryUnionMerge","sum":30557},{"parent":"FUNC","rule":"SubqueryUnionMergeFor","sum":73804},{"parent":"FUNC","rule":"SubsTRING","sum":3},{"parent":"FUNC","rule":"Substring","sum":2911730},{"parent":"FUNC","rule":"Sum","sum":454844},{"parent":"FUNC","rule":"SumIf","sum":1597},{"parent":"FUNC","rule":"Sum_IF","sum":85},{"parent":"FUNC","rule":"Sum_If","sum":13381},{"parent":"FUNC","rule":"Sum_if","sum":53747},{"parent":"FUNC","rule":"TABLENAME","sum":12256},{"parent":"FUNC","rule":"TABLEPATH","sum":264},{"parent":"FUNC","rule":"TABLERECORDINDEX","sum":45},{"parent":"FUNC","rule":"TABLEROW","sum":1251},{"parent":"FUNC","rule":"TABLE_NAME","sum":147},{"parent":"FUNC","rule":"TABLE_PATH","sum":53},{"parent":"FUNC","rule":"TABLE_ROW","sum":124},{"parent":"FUNC","rule":"TABLEname","sum":4},{"parent":"FUNC","rule":"TAbleName","sum":71},{"parent":"FUNC","rule":"TAblePath","sum":2},{"parent":"FUNC","rule":"TAbleRow","sum":25},{"parent":"FUNC","rule":"TAblename","sum":1},{"parent":"FUNC","rule":"TESTBIT","sum":3},{"parent":"FUNC","rule":"TEstBit","sum":1},{"parent":"FUNC","rule":"TIMESTAMP","sum":422},{"parent":"FUNC","rule":"TIMESTAMPDIFF","sum":2},{"parent":"FUNC","rule":"TIMESTAMP_SECONDS","sum":1},{"parent":"FUNC","rule":"TOBytes","sum":1},{"parent":"FUNC","rule":"TODICT","sum":21},{"parent":"FUNC","rule":"TODIct","sum":1},{"parent":"FUNC","rule":"TOP","sum":502571},{"parent":"FUNC","rule":"TOPBY","sum":1},{"parent":"FUNC","rule":"TOPFREQ","sum":509195},{"parent":"FUNC","rule":"TOPFreq","sum":3},{"parent":"FUNC","rule":"TOP_BY","sum":1779613},{"parent":"FUNC","rule":"TOP_FREQ","sum":46},{"parent":"FUNC","rule":"TOP_by","sum":26},{"parent":"FUNC","rule":"TOSET","sum":41},{"parent":"FUNC","rule":"TOSet","sum":787},{"parent":"FUNC","rule":"TO_NUMBER","sum":14},{"parent":"FUNC","rule":"TO_TIMESTAMP","sum":1},{"parent":"FUNC","rule":"TObytes","sum":3},{"parent":"FUNC","rule":"TRY_MEMBER","sum":37},{"parent":"FUNC","rule":"TYPEOF","sum":1},{"parent":"FUNC","rule":"TYPEof","sum":28},{"parent":"FUNC","rule":"TZDateTime","sum":139},{"parent":"FUNC","rule":"TZDatetime","sum":3},{"parent":"FUNC","rule":"TZTimestamp","sum":64},{"parent":"FUNC","rule":"TabLeName","sum":1},{"parent":"FUNC","rule":"TableNAME","sum":3},{"parent":"FUNC","rule":"TableNAme","sum":1751},{"parent":"FUNC","rule":"TableNamE","sum":2},{"parent":"FUNC","rule":"TableName","sum":15099355},{"parent":"FUNC","rule":"TablePATH","sum":1},{"parent":"FUNC","rule":"TablePAth","sum":5},{"parent":"FUNC","rule":"TablePath","sum":1504606},{"parent":"FUNC","rule":"TableROW","sum":4},{"parent":"FUNC","rule":"TableROw","sum":19},{"parent":"FUNC","rule":"TableRecordINdex","sum":4},{"parent":"FUNC","rule":"TableRecordIndex","sum":2312988},{"parent":"FUNC","rule":"TableRedordIndex","sum":1},{"parent":"FUNC","rule":"TableRow","sum":27122572},{"parent":"FUNC","rule":"TableRowIndex","sum":1},{"parent":"FUNC","rule":"TableRows","sum":1703144},{"parent":"FUNC","rule":"Table_Name","sum":55},{"parent":"FUNC","rule":"Table_Row","sum":5},{"parent":"FUNC","rule":"Table_name","sum":73},{"parent":"FUNC","rule":"Table_path","sum":3},{"parent":"FUNC","rule":"Tablename","sum":104553},{"parent":"FUNC","rule":"Tablepath","sum":193},{"parent":"FUNC","rule":"TablerRow","sum":1},{"parent":"FUNC","rule":"TablerecordIndex","sum":1},{"parent":"FUNC","rule":"Tablerecordindex","sum":3},{"parent":"FUNC","rule":"Tablerow","sum":26494},{"parent":"FUNC","rule":"TestBit","sum":255149},{"parent":"FUNC","rule":"Text","sum":20},{"parent":"FUNC","rule":"TimeStamp","sum":4378},{"parent":"FUNC","rule":"Timestamp","sum":1351497},{"parent":"FUNC","rule":"Timestamp64","sum":59},{"parent":"FUNC","rule":"ToBytes","sum":6690210},{"parent":"FUNC","rule":"ToDIct","sum":253},{"parent":"FUNC","rule":"ToDict","sum":6425145},{"parent":"FUNC","rule":"ToList","sum":3},{"parent":"FUNC","rule":"ToLower","sum":4},{"parent":"FUNC","rule":"ToMilliseconds","sum":2},{"parent":"FUNC","rule":"ToMultiDict","sum":338874},{"parent":"FUNC","rule":"ToPg","sum":3225},{"parent":"FUNC","rule":"ToSET","sum":80},{"parent":"FUNC","rule":"ToSet","sum":5487098},{"parent":"FUNC","rule":"ToSortedDict","sum":1116},{"parent":"FUNC","rule":"ToStartOfMonth","sum":4},{"parent":"FUNC","rule":"To_bytes","sum":3},{"parent":"FUNC","rule":"Todict","sum":250},{"parent":"FUNC","rule":"Top","sum":849},{"parent":"FUNC","rule":"TopBy","sum":77},{"parent":"FUNC","rule":"TopFreq","sum":13934},{"parent":"FUNC","rule":"Top_BY","sum":22},{"parent":"FUNC","rule":"Top_By","sum":114},{"parent":"FUNC","rule":"Top_by","sum":122},{"parent":"FUNC","rule":"Topfreq","sum":28},{"parent":"FUNC","rule":"Toset","sum":2324},{"parent":"FUNC","rule":"TryMember","sum":16823743},{"parent":"FUNC","rule":"Trymember","sum":36926},{"parent":"FUNC","rule":"TupleElementType","sum":7608},{"parent":"FUNC","rule":"TupleType","sum":2404},{"parent":"FUNC","rule":"TupleTypeComponents","sum":58},{"parent":"FUNC","rule":"TupleTypeHandle","sum":5566},{"parent":"FUNC","rule":"TypeHandle","sum":161528},{"parent":"FUNC","rule":"TypeKind","sum":55189},{"parent":"FUNC","rule":"TypeOF","sum":37},{"parent":"FUNC","rule":"TypeOf","sum":854631},{"parent":"FUNC","rule":"Typeof","sum":78},{"parent":"FUNC","rule":"TzDate","sum":670},{"parent":"FUNC","rule":"TzDate32","sum":7},{"parent":"FUNC","rule":"TzDateTime","sum":24903},{"parent":"FUNC","rule":"TzDateTime64","sum":7},{"parent":"FUNC","rule":"TzDatetime","sum":46413},{"parent":"FUNC","rule":"TzTimeStamp","sum":4},{"parent":"FUNC","rule":"TzTimestamp","sum":343344},{"parent":"FUNC","rule":"TzTimestamp64","sum":7},{"parent":"FUNC","rule":"UBSTRING","sum":1},{"parent":"FUNC","rule":"UDAF","sum":141570},{"parent":"FUNC","rule":"UDF","sum":1919},{"parent":"FUNC","rule":"UINT32","sum":4},{"parent":"FUNC","rule":"UINT64","sum":6},{"parent":"FUNC","rule":"UInt32","sum":111517},{"parent":"FUNC","rule":"UInt64","sum":829},{"parent":"FUNC","rule":"UInt8","sum":231},{"parent":"FUNC","rule":"UNIQ","sum":1},{"parent":"FUNC","rule":"UNPICKLE","sum":28},{"parent":"FUNC","rule":"UNTAG","sum":18},{"parent":"FUNC","rule":"UNWRAP","sum":14135041},{"parent":"FUNC","rule":"UNWRAp","sum":1},{"parent":"FUNC","rule":"UNWRaP","sum":2},{"parent":"FUNC","rule":"UNWRap","sum":10968},{"parent":"FUNC","rule":"UNWrAP","sum":18},{"parent":"FUNC","rule":"UNWraP","sum":8},{"parent":"FUNC","rule":"UNWrap","sum":4},{"parent":"FUNC","rule":"UNwRAP","sum":6},{"parent":"FUNC","rule":"UNwrap","sum":1417},{"parent":"FUNC","rule":"USING","sum":8},{"parent":"FUNC","rule":"UTF8","sum":333224},{"parent":"FUNC","rule":"UUID","sum":1},{"parent":"FUNC","rule":"Udf","sum":301959},{"parent":"FUNC","rule":"Uint16","sum":83},{"parent":"FUNC","rule":"Uint32","sum":333513},{"parent":"FUNC","rule":"Uint64","sum":11950},{"parent":"FUNC","rule":"Uint8","sum":2951},{"parent":"FUNC","rule":"UnTag","sum":55},{"parent":"FUNC","rule":"UnWRAP","sum":10},{"parent":"FUNC","rule":"UnWrAp","sum":1},{"parent":"FUNC","rule":"UnWrap","sum":1069425},{"parent":"FUNC","rule":"UnionAll","sum":3},{"parent":"FUNC","rule":"Unpickle","sum":178},{"parent":"FUNC","rule":"Untag","sum":16286},{"parent":"FUNC","rule":"Unwarp","sum":1},{"parent":"FUNC","rule":"Unwrap","sum":35848836},{"parent":"FUNC","rule":"UtcCurrentDatetime","sum":8},{"parent":"FUNC","rule":"Utf8","sum":40749},{"parent":"FUNC","rule":"Uuid","sum":450},{"parent":"FUNC","rule":"VALUES","sum":14},{"parent":"FUNC","rule":"VARIANCE","sum":31007},{"parent":"FUNC","rule":"VARIANCE_POPULATION","sum":3039},{"parent":"FUNC","rule":"VARIANCE_SAMPLE","sum":1223},{"parent":"FUNC","rule":"VARP","sum":146},{"parent":"FUNC","rule":"VARPOP","sum":15},{"parent":"FUNC","rule":"VAR_POP","sum":4},{"parent":"FUNC","rule":"VAR_SAMP","sum":44},{"parent":"FUNC","rule":"VERSION","sum":2},{"parent":"FUNC","rule":"Variance","sum":1145},{"parent":"FUNC","rule":"Variance_SAMPLE","sum":30},{"parent":"FUNC","rule":"Variance_Sample","sum":23},{"parent":"FUNC","rule":"Variance_sample","sum":24},{"parent":"FUNC","rule":"VariantType","sum":3129},{"parent":"FUNC","rule":"VariantTypeHandle","sum":8},{"parent":"FUNC","rule":"VariantUnderlyingType","sum":6499},{"parent":"FUNC","rule":"Version","sum":3},{"parent":"FUNC","rule":"Visit","sum":28},{"parent":"FUNC","rule":"Void","sum":91746},{"parent":"FUNC","rule":"WEAKFIELD","sum":837},{"parent":"FUNC","rule":"WEAK_FIELD","sum":364},{"parent":"FUNC","rule":"WEakField","sum":2},{"parent":"FUNC","rule":"Way","sum":9492},{"parent":"FUNC","rule":"WeakFIeld","sum":43},{"parent":"FUNC","rule":"WeakField","sum":21250353},{"parent":"FUNC","rule":"WeakFiled","sum":2},{"parent":"FUNC","rule":"Weakfield","sum":1953},{"parent":"FUNC","rule":"WorldCode","sum":396},{"parent":"FUNC","rule":"YPathDouble","sum":4},{"parent":"FUNC","rule":"YPathExtract","sum":4},{"parent":"FUNC","rule":"YPathInt64","sum":6},{"parent":"FUNC","rule":"YPathString","sum":4},{"parent":"FUNC","rule":"YSON","sum":752},{"parent":"FUNC","rule":"YSONExtractString","sum":6},{"parent":"FUNC","rule":"Yson","sum":613122},{"parent":"FUNC","rule":"aGGREGATE_LIST","sum":13},{"parent":"FUNC","rule":"aGGREGATE_LIST_DISTINCT","sum":4},{"parent":"FUNC","rule":"aGG_LIST","sum":2},{"parent":"FUNC","rule":"aGG_LIST_DISTINCT","sum":10},{"parent":"FUNC","rule":"aSSTRUCT","sum":1},{"parent":"FUNC","rule":"aSTuple","sum":3},{"parent":"FUNC","rule":"aVG","sum":2},{"parent":"FUNC","rule":"abs","sum":1555178},{"parent":"FUNC","rule":"addMember","sum":2634},{"parent":"FUNC","rule":"addTimezone","sum":780},{"parent":"FUNC","rule":"age","sum":2},{"parent":"FUNC","rule":"aggList","sum":265},{"parent":"FUNC","rule":"agg_LIST","sum":76},{"parent":"FUNC","rule":"agg_LIST_DISTINCT","sum":1},{"parent":"FUNC","rule":"agg_List","sum":546},{"parent":"FUNC","rule":"agg_List_distinct","sum":24},{"parent":"FUNC","rule":"agg_list","sum":1279120},{"parent":"FUNC","rule":"agg_list_DISTINCT","sum":2},{"parent":"FUNC","rule":"agg_list_Distinct","sum":1},{"parent":"FUNC","rule":"agg_list_distinct","sum":435905},{"parent":"FUNC","rule":"agg_set","sum":1},{"parent":"FUNC","rule":"agglist","sum":130},{"parent":"FUNC","rule":"agglistdistinct","sum":51},{"parent":"FUNC","rule":"aggr_list","sum":2599},{"parent":"FUNC","rule":"aggr_list_distinct","sum":18},{"parent":"FUNC","rule":"aggr_set","sum":2},{"parent":"FUNC","rule":"aggregATE_LIST","sum":16},{"parent":"FUNC","rule":"aggregateList","sum":392},{"parent":"FUNC","rule":"aggregateListDistinct","sum":38},{"parent":"FUNC","rule":"aggregate_List","sum":1000},{"parent":"FUNC","rule":"aggregate_List_Distinct","sum":8},{"parent":"FUNC","rule":"aggregate_List_distinct","sum":10},{"parent":"FUNC","rule":"aggregate_by","sum":369405},{"parent":"FUNC","rule":"aggregate_list","sum":2505307},{"parent":"FUNC","rule":"aggregate_list_","sum":2},{"parent":"FUNC","rule":"aggregate_list_DISTINCT","sum":1815},{"parent":"FUNC","rule":"aggregate_list_Distinct","sum":27},{"parent":"FUNC","rule":"aggregate_list_distinct","sum":947138},{"parent":"FUNC","rule":"aggregatelist","sum":569},{"parent":"FUNC","rule":"aggregatetransforminput","sum":1},{"parent":"FUNC","rule":"aggregationFactory","sum":154},{"parent":"FUNC","rule":"aggregation_factory","sum":8723},{"parent":"FUNC","rule":"aggregationfactory","sum":83},{"parent":"FUNC","rule":"agregate_list_distinct","sum":1},{"parent":"FUNC","rule":"and","sum":5},{"parent":"FUNC","rule":"anyLast","sum":8},{"parent":"FUNC","rule":"argMax","sum":15},{"parent":"FUNC","rule":"argMin","sum":3},{"parent":"FUNC","rule":"arrayElement","sum":1},{"parent":"FUNC","rule":"arrayJoin","sum":10},{"parent":"FUNC","rule":"arrayMax","sum":4},{"parent":"FUNC","rule":"array_agg","sum":5},{"parent":"FUNC","rule":"array_to_string","sum":2},{"parent":"FUNC","rule":"asDict","sum":3798},{"parent":"FUNC","rule":"asLIST","sum":50},{"parent":"FUNC","rule":"asList","sum":177274},{"parent":"FUNC","rule":"asSet","sum":1986},{"parent":"FUNC","rule":"asStruct","sum":125755},{"parent":"FUNC","rule":"asTUPLE","sum":1},{"parent":"FUNC","rule":"asTagged","sum":2255},{"parent":"FUNC","rule":"asTuple","sum":83172},{"parent":"FUNC","rule":"asVariant","sum":10},{"parent":"FUNC","rule":"as_dict","sum":4},{"parent":"FUNC","rule":"as_list","sum":77},{"parent":"FUNC","rule":"as_struct","sum":122},{"parent":"FUNC","rule":"as_table","sum":30},{"parent":"FUNC","rule":"as_tagged","sum":1},{"parent":"FUNC","rule":"as_tuple","sum":372},{"parent":"FUNC","rule":"asdict","sum":3802},{"parent":"FUNC","rule":"asenum","sum":13},{"parent":"FUNC","rule":"aslist","sum":164809},{"parent":"FUNC","rule":"assessments_integralListReverse","sum":2},{"parent":"FUNC","rule":"asset","sum":1126},{"parent":"FUNC","rule":"asstruct","sum":13075},{"parent":"FUNC","rule":"assumeNotNull","sum":3},{"parent":"FUNC","rule":"astagged","sum":1352},{"parent":"FUNC","rule":"astuple","sum":30810},{"parent":"FUNC","rule":"asvariant","sum":3},{"parent":"FUNC","rule":"atan2","sum":4},{"parent":"FUNC","rule":"avG","sum":52},{"parent":"FUNC","rule":"avg","sum":6034082},{"parent":"FUNC","rule":"avgIf","sum":19746},{"parent":"FUNC","rule":"avg_","sum":1},{"parent":"FUNC","rule":"avg_IF","sum":155},{"parent":"FUNC","rule":"avg_If","sum":153},{"parent":"FUNC","rule":"avg_if","sum":499296},{"parent":"FUNC","rule":"ax","sum":13},{"parent":"FUNC","rule":"bit_or","sum":26643},{"parent":"FUNC","rule":"bool","sum":274},{"parent":"FUNC","rule":"bool_and","sum":67987},{"parent":"FUNC","rule":"bool_or","sum":234728},{"parent":"FUNC","rule":"bool_xor","sum":2},{"parent":"FUNC","rule":"bottom","sum":10181},{"parent":"FUNC","rule":"bottom_by","sum":334498},{"parent":"FUNC","rule":"business_id","sum":1},{"parent":"FUNC","rule":"bytes","sum":2},{"parent":"FUNC","rule":"cOALESCE","sum":36},{"parent":"FUNC","rule":"cOUNT","sum":64},{"parent":"FUNC","rule":"cOUNT_IF","sum":40},{"parent":"FUNC","rule":"cOunt","sum":2},{"parent":"FUNC","rule":"ceil","sum":1},{"parent":"FUNC","rule":"char_LENGTH","sum":2},{"parent":"FUNC","rule":"char_length","sum":18},{"parent":"FUNC","rule":"check_google_id","sum":1},{"parent":"FUNC","rule":"choosemembers","sum":5},{"parent":"FUNC","rule":"client_id","sum":1},{"parent":"FUNC","rule":"cnt","sum":2},{"parent":"FUNC","rule":"coALESCE","sum":14},{"parent":"FUNC","rule":"coUNT","sum":3},{"parent":"FUNC","rule":"coUNt","sum":3},{"parent":"FUNC","rule":"coalESCE","sum":40},{"parent":"FUNC","rule":"coalescE","sum":1},{"parent":"FUNC","rule":"coalesce","sum":25106027},{"parent":"FUNC","rule":"coalescue","sum":2},{"parent":"FUNC","rule":"coalsece","sum":1},{"parent":"FUNC","rule":"combinemembers","sum":5},{"parent":"FUNC","rule":"concat","sum":26},{"parent":"FUNC","rule":"conunt","sum":1},{"parent":"FUNC","rule":"convert_to_360","sum":2},{"parent":"FUNC","rule":"corr","sum":716},{"parent":"FUNC","rule":"correlation","sum":3826},{"parent":"FUNC","rule":"cos","sum":8},{"parent":"FUNC","rule":"couNT","sum":1},{"parent":"FUNC","rule":"couNT_IF","sum":7},{"parent":"FUNC","rule":"counT","sum":24},{"parent":"FUNC","rule":"count","sum":38679935},{"parent":"FUNC","rule":"countDistinct","sum":1},{"parent":"FUNC","rule":"countDistinctEstimate","sum":263774},{"parent":"FUNC","rule":"countIF","sum":8273},{"parent":"FUNC","rule":"countIf","sum":1386283},{"parent":"FUNC","rule":"count_","sum":541},{"parent":"FUNC","rule":"count_IF","sum":34538},{"parent":"FUNC","rule":"count_If","sum":26678},{"parent":"FUNC","rule":"count_distinct_estimate","sum":33},{"parent":"FUNC","rule":"count_if","sum":18959232},{"parent":"FUNC","rule":"countdistinctEstimate","sum":1713},{"parent":"FUNC","rule":"countdistinctestimate","sum":2851},{"parent":"FUNC","rule":"countif","sum":20338},{"parent":"FUNC","rule":"covar","sum":247},{"parent":"FUNC","rule":"covariance","sum":292},{"parent":"FUNC","rule":"covariance_sample","sum":165},{"parent":"FUNC","rule":"cpunt","sum":1},{"parent":"FUNC","rule":"cume_dist","sum":69},{"parent":"FUNC","rule":"currentTzDate","sum":3922},{"parent":"FUNC","rule":"currentTzTimestamp","sum":53},{"parent":"FUNC","rule":"currentUTCDATETIME","sum":7},{"parent":"FUNC","rule":"currentUTCDate","sum":663},{"parent":"FUNC","rule":"currentUTCDateTime","sum":318},{"parent":"FUNC","rule":"currentUTCDatetime","sum":3},{"parent":"FUNC","rule":"currentUTCdate","sum":370},{"parent":"FUNC","rule":"currentUTCdatetime","sum":20},{"parent":"FUNC","rule":"currentUTcdate","sum":1343},{"parent":"FUNC","rule":"currentUtcDate","sum":6457},{"parent":"FUNC","rule":"currentUtcDateTime","sum":14876},{"parent":"FUNC","rule":"currentUtcDatetime","sum":2420},{"parent":"FUNC","rule":"currentUtcTimestamp","sum":197},{"parent":"FUNC","rule":"current_utc_timestamp","sum":2},{"parent":"FUNC","rule":"currenttzdate","sum":418},{"parent":"FUNC","rule":"currenttzdatetime","sum":257},{"parent":"FUNC","rule":"currenttztimestamp","sum":47},{"parent":"FUNC","rule":"currentutcDateTime","sum":3},{"parent":"FUNC","rule":"currentutcdate","sum":119245},{"parent":"FUNC","rule":"currentutcdatetime","sum":58922},{"parent":"FUNC","rule":"currentutctimestamp","sum":48538},{"parent":"FUNC","rule":"d","sum":1},{"parent":"FUNC","rule":"dATE","sum":4},{"parent":"FUNC","rule":"date","sum":416640},{"parent":"FUNC","rule":"date32","sum":11},{"parent":"FUNC","rule":"dateDiff","sum":1},{"parent":"FUNC","rule":"dateNow","sum":2},{"parent":"FUNC","rule":"dateTIME","sum":2},{"parent":"FUNC","rule":"dateTime","sum":10},{"parent":"FUNC","rule":"date_add","sum":8},{"parent":"FUNC","rule":"date_format","sum":2},{"parent":"FUNC","rule":"date_sub","sum":2},{"parent":"FUNC","rule":"dateadd","sum":1},{"parent":"FUNC","rule":"datediff","sum":4},{"parent":"FUNC","rule":"datetime","sum":11489},{"parent":"FUNC","rule":"datetime64","sum":19},{"parent":"FUNC","rule":"decimal","sum":342},{"parent":"FUNC","rule":"dense_RANK","sum":42},{"parent":"FUNC","rule":"dense_rank","sum":46459},{"parent":"FUNC","rule":"dictAggregate","sum":71},{"parent":"FUNC","rule":"dictContains","sum":7},{"parent":"FUNC","rule":"dictGetString","sum":1},{"parent":"FUNC","rule":"dictItems","sum":8586},{"parent":"FUNC","rule":"dictKeys","sum":1199},{"parent":"FUNC","rule":"dictLength","sum":104},{"parent":"FUNC","rule":"dictLookUp","sum":9267},{"parent":"FUNC","rule":"dictLookup","sum":678},{"parent":"FUNC","rule":"dictPayloads","sum":90},{"parent":"FUNC","rule":"dict_keys","sum":8695},{"parent":"FUNC","rule":"dictcontains","sum":346},{"parent":"FUNC","rule":"dictcreate","sum":2},{"parent":"FUNC","rule":"dicthasitems","sum":24},{"parent":"FUNC","rule":"dictitems","sum":2584},{"parent":"FUNC","rule":"dictkeys","sum":900},{"parent":"FUNC","rule":"dictlength","sum":6528},{"parent":"FUNC","rule":"dictlookup","sum":1613},{"parent":"FUNC","rule":"dictpayloads","sum":113},{"parent":"FUNC","rule":"disctinct","sum":2},{"parent":"FUNC","rule":"dol_show1","sum":1},{"parent":"FUNC","rule":"double","sum":134},{"parent":"FUNC","rule":"dynumber","sum":12},{"parent":"FUNC","rule":"each","sum":1},{"parent":"FUNC","rule":"empty","sum":3},{"parent":"FUNC","rule":"emptylist","sum":1},{"parent":"FUNC","rule":"endsWith","sum":2138},{"parent":"FUNC","rule":"endswith","sum":32167},{"parent":"FUNC","rule":"ensure","sum":411863},{"parent":"FUNC","rule":"ensuretype","sum":706},{"parent":"FUNC","rule":"evaluateCode","sum":47},{"parent":"FUNC","rule":"evaluateExpr","sum":304},{"parent":"FUNC","rule":"expandstruct","sum":20},{"parent":"FUNC","rule":"f","sum":1},{"parent":"FUNC","rule":"file_content","sum":10},{"parent":"FUNC","rule":"file_path","sum":1},{"parent":"FUNC","rule":"filecontent","sum":603},{"parent":"FUNC","rule":"filepath","sum":934},{"parent":"FUNC","rule":"filter","sum":2},{"parent":"FUNC","rule":"find","sum":4100173},{"parent":"FUNC","rule":"first_VALUE","sum":19},{"parent":"FUNC","rule":"first_route_timestamp","sum":1},{"parent":"FUNC","rule":"first_value","sum":1145796},{"parent":"FUNC","rule":"flatten","sum":1},{"parent":"FUNC","rule":"float","sum":23124},{"parent":"FUNC","rule":"floor","sum":1},{"parent":"FUNC","rule":"forceremovemember","sum":373},{"parent":"FUNC","rule":"format","sum":1},{"parent":"FUNC","rule":"formatType","sum":8},{"parent":"FUNC","rule":"formattype","sum":146},{"parent":"FUNC","rule":"fromBytes","sum":13},{"parent":"FUNC","rule":"fromPg","sum":141},{"parent":"FUNC","rule":"fromUnixTimestamp64Micro","sum":1},{"parent":"FUNC","rule":"from_bytes","sum":2},{"parent":"FUNC","rule":"frombytes","sum":47},{"parent":"FUNC","rule":"frompg","sum":134},{"parent":"FUNC","rule":"gatherMembers","sum":67},{"parent":"FUNC","rule":"gathermembers","sum":7},{"parent":"FUNC","rule":"get_auto_label","sum":1},{"parent":"FUNC","rule":"get_html","sum":1},{"parent":"FUNC","rule":"get_is_in_collection_feature","sum":1},{"parent":"FUNC","rule":"get_metrika_bro","sum":1},{"parent":"FUNC","rule":"get_pay_processing","sum":2},{"parent":"FUNC","rule":"get_post_profiles","sum":1},{"parent":"FUNC","rule":"get_rewrite_prompt","sum":1},{"parent":"FUNC","rule":"get_support_line","sum":1},{"parent":"FUNC","rule":"get_test_id","sum":7},{"parent":"FUNC","rule":"getdate","sum":2},{"parent":"FUNC","rule":"greatest","sum":317200},{"parent":"FUNC","rule":"groupArray","sum":4},{"parent":"FUNC","rule":"groupUniqArray","sum":2},{"parent":"FUNC","rule":"grouping","sum":17651},{"parent":"FUNC","rule":"hISTOGRAM","sum":2},{"parent":"FUNC","rule":"has","sum":20},{"parent":"FUNC","rule":"histOGRAM","sum":4},{"parent":"FUNC","rule":"histograM","sum":359},{"parent":"FUNC","rule":"histogram","sum":52870},{"parent":"FUNC","rule":"histogramcdf","sum":84},{"parent":"FUNC","rule":"hll","sum":82099},{"parent":"FUNC","rule":"iF","sum":2697},{"parent":"FUNC","rule":"iNtErVaL","sum":1},{"parent":"FUNC","rule":"if","sum":43313494},{"parent":"FUNC","rule":"ifNull","sum":6},{"parent":"FUNC","rule":"in","sum":10},{"parent":"FUNC","rule":"indexOf","sum":14},{"parent":"FUNC","rule":"instanceof","sum":55},{"parent":"FUNC","rule":"instr","sum":1},{"parent":"FUNC","rule":"int","sum":32691},{"parent":"FUNC","rule":"int32","sum":2},{"parent":"FUNC","rule":"int64","sum":19},{"parent":"FUNC","rule":"int8","sum":2},{"parent":"FUNC","rule":"intervaL","sum":9673},{"parent":"FUNC","rule":"interval","sum":1809588},{"parent":"FUNC","rule":"interval64","sum":7},{"parent":"FUNC","rule":"isNull","sum":7},{"parent":"FUNC","rule":"is_allowed_in_kz","sum":2},{"parent":"FUNC","rule":"is_valid_intent","sum":4},{"parent":"FUNC","rule":"is_valid_organic","sum":4},{"parent":"FUNC","rule":"istLast","sum":1},{"parent":"FUNC","rule":"isum","sum":6},{"parent":"FUNC","rule":"joinTableRow","sum":5},{"parent":"FUNC","rule":"jointablerow","sum":216},{"parent":"FUNC","rule":"json","sum":5659},{"parent":"FUNC","rule":"json_extract","sum":3},{"parent":"FUNC","rule":"json_object_agg","sum":1},{"parent":"FUNC","rule":"jsondocument","sum":6},{"parent":"FUNC","rule":"just","sum":248704},{"parent":"FUNC","rule":"lAG","sum":2220},{"parent":"FUNC","rule":"lEAD","sum":6802},{"parent":"FUNC","rule":"lEN","sum":30},{"parent":"FUNC","rule":"lINEARHISTOGRAM","sum":115},{"parent":"FUNC","rule":"lISTlENGTH","sum":2},{"parent":"FUNC","rule":"lISTlength","sum":1},{"parent":"FUNC","rule":"lag","sum":1013952},{"parent":"FUNC","rule":"last_VALUE","sum":14},{"parent":"FUNC","rule":"last_value","sum":1055540},{"parent":"FUNC","rule":"lead","sum":932701},{"parent":"FUNC","rule":"least","sum":378147},{"parent":"FUNC","rule":"len","sum":713279},{"parent":"FUNC","rule":"lenGTH","sum":1},{"parent":"FUNC","rule":"lenght","sum":1},{"parent":"FUNC","rule":"lengtH","sum":2},{"parent":"FUNC","rule":"length","sum":2575504},{"parent":"FUNC","rule":"like","sum":4},{"parent":"FUNC","rule":"likely","sum":16515},{"parent":"FUNC","rule":"linearHISTOGRAM","sum":10},{"parent":"FUNC","rule":"linearHistogram","sum":16},{"parent":"FUNC","rule":"linearhistogram","sum":174},{"parent":"FUNC","rule":"linearhistogramcdf","sum":20},{"parent":"FUNC","rule":"listALL","sum":3},{"parent":"FUNC","rule":"listAVG","sum":922},{"parent":"FUNC","rule":"listAggregateUnique","sum":1},{"parent":"FUNC","rule":"listAll","sum":86},{"parent":"FUNC","rule":"listAny","sum":128},{"parent":"FUNC","rule":"listAvg","sum":106},{"parent":"FUNC","rule":"listCollect","sum":378},{"parent":"FUNC","rule":"listConcat","sum":10966},{"parent":"FUNC","rule":"listEnumerate","sum":124},{"parent":"FUNC","rule":"listExtend","sum":6795},{"parent":"FUNC","rule":"listExtract","sum":24},{"parent":"FUNC","rule":"listFilter","sum":40338},{"parent":"FUNC","rule":"listFlatten","sum":292},{"parent":"FUNC","rule":"listFold","sum":305},{"parent":"FUNC","rule":"listFromRange","sum":752},{"parent":"FUNC","rule":"listHAs","sum":52},{"parent":"FUNC","rule":"listHas","sum":42008},{"parent":"FUNC","rule":"listHasItems","sum":3274},{"parent":"FUNC","rule":"listHead","sum":2187},{"parent":"FUNC","rule":"listIndexOf","sum":39},{"parent":"FUNC","rule":"listLENGTH","sum":223},{"parent":"FUNC","rule":"listLENgth","sum":2},{"parent":"FUNC","rule":"listLast","sum":1025},{"parent":"FUNC","rule":"listLength","sum":30279},{"parent":"FUNC","rule":"listMAX","sum":1},{"parent":"FUNC","rule":"listMIN","sum":1},{"parent":"FUNC","rule":"listMap","sum":54237},{"parent":"FUNC","rule":"listMax","sum":810},{"parent":"FUNC","rule":"listMin","sum":172},{"parent":"FUNC","rule":"listNotNull","sum":265},{"parent":"FUNC","rule":"listReverse","sum":4780},{"parent":"FUNC","rule":"listSkip","sum":18},{"parent":"FUNC","rule":"listSort","sum":24533},{"parent":"FUNC","rule":"listSortAsc","sum":2},{"parent":"FUNC","rule":"listSortDesc","sum":204},{"parent":"FUNC","rule":"listSum","sum":1460},{"parent":"FUNC","rule":"listTake","sum":720},{"parent":"FUNC","rule":"listTopSort","sum":18},{"parent":"FUNC","rule":"listUniq","sum":10594},{"parent":"FUNC","rule":"listUniqStable","sum":1},{"parent":"FUNC","rule":"listZip","sum":1365},{"parent":"FUNC","rule":"listZipAll","sum":1336},{"parent":"FUNC","rule":"list_Length","sum":1},{"parent":"FUNC","rule":"list_MAX","sum":1},{"parent":"FUNC","rule":"list_agg","sum":2},{"parent":"FUNC","rule":"list_avg","sum":25},{"parent":"FUNC","rule":"list_concat","sum":264},{"parent":"FUNC","rule":"list_filter","sum":2},{"parent":"FUNC","rule":"list_flatten","sum":15},{"parent":"FUNC","rule":"list_has","sum":6369},{"parent":"FUNC","rule":"list_has_items","sum":2},{"parent":"FUNC","rule":"list_head","sum":16},{"parent":"FUNC","rule":"list_length","sum":865},{"parent":"FUNC","rule":"list_map","sum":3},{"parent":"FUNC","rule":"list_min","sum":3},{"parent":"FUNC","rule":"list_not_null","sum":1},{"parent":"FUNC","rule":"list_sort","sum":102},{"parent":"FUNC","rule":"list_uniq","sum":1},{"parent":"FUNC","rule":"list_zip","sum":30},{"parent":"FUNC","rule":"listaggregate","sum":105},{"parent":"FUNC","rule":"listall","sum":13408},{"parent":"FUNC","rule":"listany","sum":15325},{"parent":"FUNC","rule":"listavg","sum":12124},{"parent":"FUNC","rule":"listcollect","sum":509},{"parent":"FUNC","rule":"listconcat","sum":19213},{"parent":"FUNC","rule":"listcreate","sum":10},{"parent":"FUNC","rule":"listenumerate","sum":2048},{"parent":"FUNC","rule":"listextend","sum":3932},{"parent":"FUNC","rule":"listextendstrict","sum":61},{"parent":"FUNC","rule":"listextract","sum":1813},{"parent":"FUNC","rule":"listfilter","sum":101149},{"parent":"FUNC","rule":"listflatmap","sum":7370},{"parent":"FUNC","rule":"listflatten","sum":23406},{"parent":"FUNC","rule":"listfold","sum":16},{"parent":"FUNC","rule":"listfold1map","sum":60},{"parent":"FUNC","rule":"listfromRange","sum":16},{"parent":"FUNC","rule":"listfromrange","sum":14106},{"parent":"FUNC","rule":"listfromtuple","sum":58},{"parent":"FUNC","rule":"listhas","sum":172035},{"parent":"FUNC","rule":"listhasItems","sum":34},{"parent":"FUNC","rule":"listhasitems","sum":10527},{"parent":"FUNC","rule":"listhead","sum":18583},{"parent":"FUNC","rule":"listindexof","sum":1201},{"parent":"FUNC","rule":"listlast","sum":3076},{"parent":"FUNC","rule":"listlength","sum":344746},{"parent":"FUNC","rule":"listmap","sum":513663},{"parent":"FUNC","rule":"listmax","sum":3930},{"parent":"FUNC","rule":"listmin","sum":2665},{"parent":"FUNC","rule":"listnotNull","sum":1},{"parent":"FUNC","rule":"listnotnull","sum":12967},{"parent":"FUNC","rule":"listreplicate","sum":49},{"parent":"FUNC","rule":"listreverse","sum":2249},{"parent":"FUNC","rule":"listskip","sum":1194},{"parent":"FUNC","rule":"listsort","sum":56744},{"parent":"FUNC","rule":"listsortDesc","sum":1},{"parent":"FUNC","rule":"listsortasc","sum":377},{"parent":"FUNC","rule":"listsortdesc","sum":3986},{"parent":"FUNC","rule":"listsum","sum":3392},{"parent":"FUNC","rule":"listtake","sum":16232},{"parent":"FUNC","rule":"listtop","sum":68},{"parent":"FUNC","rule":"listunionall","sum":8},{"parent":"FUNC","rule":"listuniq","sum":26219},{"parent":"FUNC","rule":"listuniqstable","sum":94},{"parent":"FUNC","rule":"listzip","sum":16893},{"parent":"FUNC","rule":"listzipALL","sum":2},{"parent":"FUNC","rule":"listzipAll","sum":15},{"parent":"FUNC","rule":"listzipall","sum":98},{"parent":"FUNC","rule":"log","sum":2},{"parent":"FUNC","rule":"logarithmicHistogram","sum":1},{"parent":"FUNC","rule":"logarithmichistogram","sum":6},{"parent":"FUNC","rule":"loghistogram","sum":1},{"parent":"FUNC","rule":"lower","sum":3},{"parent":"FUNC","rule":"mAX","sum":17},{"parent":"FUNC","rule":"mAX_BY","sum":132},{"parent":"FUNC","rule":"mIN","sum":2},{"parent":"FUNC","rule":"mIN_by","sum":10},{"parent":"FUNC","rule":"maX","sum":6},{"parent":"FUNC","rule":"maX_BY","sum":1},{"parent":"FUNC","rule":"map","sum":2},{"parent":"FUNC","rule":"max","sum":25228353},{"parent":"FUNC","rule":"maxBy","sum":1},{"parent":"FUNC","rule":"maxOf","sum":3595},{"parent":"FUNC","rule":"max_","sum":1},{"parent":"FUNC","rule":"max_BY","sum":2362},{"parent":"FUNC","rule":"max_By","sum":4552},{"parent":"FUNC","rule":"max_OF","sum":8},{"parent":"FUNC","rule":"max_Of","sum":29},{"parent":"FUNC","rule":"max_by","sum":29000324},{"parent":"FUNC","rule":"max_if","sum":3},{"parent":"FUNC","rule":"max_of","sum":1278387},{"parent":"FUNC","rule":"maxby","sum":3553},{"parent":"FUNC","rule":"maxof","sum":852},{"parent":"FUNC","rule":"md5int","sum":1},{"parent":"FUNC","rule":"median","sum":384656},{"parent":"FUNC","rule":"metric_exp","sum":1},{"parent":"FUNC","rule":"min","sum":10296946},{"parent":"FUNC","rule":"minOf","sum":2},{"parent":"FUNC","rule":"min_BY","sum":8619},{"parent":"FUNC","rule":"min_By","sum":6},{"parent":"FUNC","rule":"min_OF","sum":9},{"parent":"FUNC","rule":"min_Of","sum":348},{"parent":"FUNC","rule":"min_by","sum":2332840},{"parent":"FUNC","rule":"min_if","sum":1},{"parent":"FUNC","rule":"min_of","sum":577710},{"parent":"FUNC","rule":"minby","sum":1},{"parent":"FUNC","rule":"minof","sum":98},{"parent":"FUNC","rule":"mode","sum":117882},{"parent":"FUNC","rule":"multiIf","sum":2},{"parent":"FUNC","rule":"multi_aggregate_by","sum":118866},{"parent":"FUNC","rule":"naNVL","sum":16},{"parent":"FUNC","rule":"nanvl","sum":129219},{"parent":"FUNC","rule":"notEmpty","sum":2},{"parent":"FUNC","rule":"nothing","sum":13084},{"parent":"FUNC","rule":"now","sum":16},{"parent":"FUNC","rule":"nth_value","sum":17},{"parent":"FUNC","rule":"ntile","sum":343},{"parent":"FUNC","rule":"nvL","sum":63},{"parent":"FUNC","rule":"nvl","sum":14055156},{"parent":"FUNC","rule":"on","sum":1},{"parent":"FUNC","rule":"optionaltype","sum":161},{"parent":"FUNC","rule":"or","sum":3},{"parent":"FUNC","rule":"order_nr","sum":1},{"parent":"FUNC","rule":"p25","sum":1},{"parent":"FUNC","rule":"p75","sum":1},{"parent":"FUNC","rule":"pERCENTILE","sum":11},{"parent":"FUNC","rule":"parseFile","sum":155},{"parent":"FUNC","rule":"parseForErrors","sum":32},{"parent":"FUNC","rule":"parse_dt_formatted","sum":1},{"parent":"FUNC","rule":"parsefile","sum":10971},{"parent":"FUNC","rule":"percent_rank","sum":2230},{"parent":"FUNC","rule":"percentile","sum":3359965},{"parent":"FUNC","rule":"pgInt2","sum":2},{"parent":"FUNC","rule":"pgarray","sum":2},{"parent":"FUNC","rule":"pgbpchar","sum":2},{"parent":"FUNC","rule":"pgbytea","sum":6},{"parent":"FUNC","rule":"pgcast","sum":39},{"parent":"FUNC","rule":"pgchar","sum":2},{"parent":"FUNC","rule":"pgdate","sum":94},{"parent":"FUNC","rule":"pgfloat4","sum":5},{"parent":"FUNC","rule":"pgfloat8","sum":3},{"parent":"FUNC","rule":"pgint2","sum":9},{"parent":"FUNC","rule":"pginterval","sum":176},{"parent":"FUNC","rule":"pgjson","sum":10},{"parent":"FUNC","rule":"pgname","sum":4},{"parent":"FUNC","rule":"pgnumeric","sum":4},{"parent":"FUNC","rule":"pgoidvector","sum":1},{"parent":"FUNC","rule":"pgtext","sum":9},{"parent":"FUNC","rule":"pgtimestamp","sum":7},{"parent":"FUNC","rule":"pgtimestamptz","sum":4},{"parent":"FUNC","rule":"pickle","sum":925},{"parent":"FUNC","rule":"pow","sum":8},{"parent":"FUNC","rule":"power","sum":3},{"parent":"FUNC","rule":"print","sum":1},{"parent":"FUNC","rule":"quantile","sum":1},{"parent":"FUNC","rule":"quantileExact","sum":1},{"parent":"FUNC","rule":"rFIND","sum":2},{"parent":"FUNC","rule":"rand","sum":5},{"parent":"FUNC","rule":"random","sum":261110},{"parent":"FUNC","rule":"randomNumber","sum":10},{"parent":"FUNC","rule":"randomUuid","sum":157},{"parent":"FUNC","rule":"random_number","sum":11},{"parent":"FUNC","rule":"randomnumber","sum":478},{"parent":"FUNC","rule":"randomuuid","sum":34},{"parent":"FUNC","rule":"range","sum":96},{"parent":"FUNC","rule":"rank","sum":221725},{"parent":"FUNC","rule":"regex_full_match","sum":1},{"parent":"FUNC","rule":"regex_replace_first","sum":1},{"parent":"FUNC","rule":"regionIn","sum":2},{"parent":"FUNC","rule":"removeMember","sum":162},{"parent":"FUNC","rule":"removemember","sum":18},{"parent":"FUNC","rule":"removemembers","sum":77},{"parent":"FUNC","rule":"removetimezone","sum":5},{"parent":"FUNC","rule":"renamemembers","sum":4},{"parent":"FUNC","rule":"replace","sum":1},{"parent":"FUNC","rule":"replaceRegexpAll","sum":2},{"parent":"FUNC","rule":"rfind","sum":127572},{"parent":"FUNC","rule":"round","sum":27},{"parent":"FUNC","rule":"row_NUMBER","sum":5},{"parent":"FUNC","rule":"row_Number","sum":3},{"parent":"FUNC","rule":"row_number","sum":2193124},{"parent":"FUNC","rule":"rownumber","sum":399},{"parent":"FUNC","rule":"sUBSTRING","sum":3},{"parent":"FUNC","rule":"sUM","sum":449},{"parent":"FUNC","rule":"sUM_IF","sum":20},{"parent":"FUNC","rule":"sUm","sum":8},{"parent":"FUNC","rule":"sessionWindow","sum":4},{"parent":"FUNC","rule":"session_start","sum":3},{"parent":"FUNC","rule":"sessionwindow","sum":179},{"parent":"FUNC","rule":"setDifference","sum":59},{"parent":"FUNC","rule":"setIntersection","sum":13},{"parent":"FUNC","rule":"setIsDisjoint","sum":1},{"parent":"FUNC","rule":"setUnion","sum":172},{"parent":"FUNC","rule":"setbit","sum":20},{"parent":"FUNC","rule":"setdifference","sum":172},{"parent":"FUNC","rule":"setincludes","sum":20},{"parent":"FUNC","rule":"setintersection","sum":123},{"parent":"FUNC","rule":"setisdisjoint","sum":1032},{"parent":"FUNC","rule":"setsymmetricdifference","sum":204},{"parent":"FUNC","rule":"setunion","sum":1795},{"parent":"FUNC","rule":"sign","sum":1},{"parent":"FUNC","rule":"sin","sum":16},{"parent":"FUNC","rule":"sipHash64","sum":2},{"parent":"FUNC","rule":"size","sum":1},{"parent":"FUNC","rule":"somE","sum":2},{"parent":"FUNC","rule":"some","sum":20426723},{"parent":"FUNC","rule":"somr","sum":1},{"parent":"FUNC","rule":"splitByChar","sum":1},{"parent":"FUNC","rule":"splitByString","sum":6},{"parent":"FUNC","rule":"spreadmembers","sum":3},{"parent":"FUNC","rule":"sqrt","sum":11},{"parent":"FUNC","rule":"ssubstring","sum":2},{"parent":"FUNC","rule":"stablepickle","sum":30},{"parent":"FUNC","rule":"startsWith","sum":199037},{"parent":"FUNC","rule":"starts_with","sum":14},{"parent":"FUNC","rule":"startswith","sum":19928},{"parent":"FUNC","rule":"staticmap","sum":21},{"parent":"FUNC","rule":"staticzip","sum":1},{"parent":"FUNC","rule":"status$$name","sum":3},{"parent":"FUNC","rule":"std_dev","sum":4},{"parent":"FUNC","rule":"stddev","sum":624851},{"parent":"FUNC","rule":"stddevPop","sum":13},{"parent":"FUNC","rule":"stddev_pop","sum":108},{"parent":"FUNC","rule":"stddev_population","sum":88},{"parent":"FUNC","rule":"stddev_samp","sum":27},{"parent":"FUNC","rule":"stddev_sample","sum":884},{"parent":"FUNC","rule":"stddevpop","sum":19},{"parent":"FUNC","rule":"stddevsamp","sum":5},{"parent":"FUNC","rule":"str","sum":3},{"parent":"FUNC","rule":"strfdate","sum":164},{"parent":"FUNC","rule":"string","sum":77},{"parent":"FUNC","rule":"string_agg","sum":1},{"parent":"FUNC","rule":"string_split","sum":1},{"parent":"FUNC","rule":"string_to_array","sum":3},{"parent":"FUNC","rule":"string_to_features","sum":1},{"parent":"FUNC","rule":"structMembers","sum":7},{"parent":"FUNC","rule":"structUnion","sum":41},{"parent":"FUNC","rule":"structdifference","sum":2},{"parent":"FUNC","rule":"structunion","sum":7},{"parent":"FUNC","rule":"suM","sum":188},{"parent":"FUNC","rule":"suM_if","sum":16},{"parent":"FUNC","rule":"subDate","sum":1},{"parent":"FUNC","rule":"subSTRING","sum":1},{"parent":"FUNC","rule":"subString","sum":585},{"parent":"FUNC","rule":"subqueryMergeFor","sum":21},{"parent":"FUNC","rule":"subqueryUnionMergeFor","sum":4378},{"parent":"FUNC","rule":"subquerymergefor","sum":1984},{"parent":"FUNC","rule":"subsTRING","sum":2},{"parent":"FUNC","rule":"subsrting","sum":3},{"parent":"FUNC","rule":"substing","sum":2},{"parent":"FUNC","rule":"substr","sum":173},{"parent":"FUNC","rule":"substring","sum":16592865},{"parent":"FUNC","rule":"substringUTF8","sum":1},{"parent":"FUNC","rule":"substring_index","sum":1},{"parent":"FUNC","rule":"sum","sum":45292139},{"parent":"FUNC","rule":"sumIF","sum":84},{"parent":"FUNC","rule":"sumIf","sum":92909},{"parent":"FUNC","rule":"sum_","sum":356},{"parent":"FUNC","rule":"sum_IF","sum":19678},{"parent":"FUNC","rule":"sum_If","sum":13182},{"parent":"FUNC","rule":"sum_if","sum":4230704},{"parent":"FUNC","rule":"sum_range2","sum":47},{"parent":"FUNC","rule":"sum_recursive_range","sum":1},{"parent":"FUNC","rule":"suma","sum":1},{"parent":"FUNC","rule":"sumif","sum":7489},{"parent":"FUNC","rule":"summ","sum":10},{"parent":"FUNC","rule":"sunstring","sum":2},{"parent":"FUNC","rule":"susbstring","sum":1},{"parent":"FUNC","rule":"tableName","sum":43523},{"parent":"FUNC","rule":"tablePath","sum":1519},{"parent":"FUNC","rule":"tableRecordIndex","sum":19},{"parent":"FUNC","rule":"tableRow","sum":23218},{"parent":"FUNC","rule":"table_name","sum":2883},{"parent":"FUNC","rule":"table_path","sum":45},{"parent":"FUNC","rule":"table_row","sum":377},{"parent":"FUNC","rule":"tablename","sum":166587},{"parent":"FUNC","rule":"tablepath","sum":32910},{"parent":"FUNC","rule":"tablerecordindex","sum":111},{"parent":"FUNC","rule":"tablerow","sum":42998},{"parent":"FUNC","rule":"tablerows","sum":5},{"parent":"FUNC","rule":"testBit","sum":34},{"parent":"FUNC","rule":"testbit","sum":39563},{"parent":"FUNC","rule":"testid","sum":2},{"parent":"FUNC","rule":"timestamp","sum":10135},{"parent":"FUNC","rule":"timestamp64","sum":7},{"parent":"FUNC","rule":"timezone","sum":2},{"parent":"FUNC","rule":"toBytes","sum":26371},{"parent":"FUNC","rule":"toDate","sum":59},{"parent":"FUNC","rule":"toDate32","sum":10},{"parent":"FUNC","rule":"toDateTime","sum":21},{"parent":"FUNC","rule":"toDateTimeOrNull","sum":3},{"parent":"FUNC","rule":"toDayOfWeek","sum":2},{"parent":"FUNC","rule":"toDays","sum":1},{"parent":"FUNC","rule":"toDict","sum":97042},{"parent":"FUNC","rule":"toFloat32","sum":4},{"parent":"FUNC","rule":"toInt128","sum":3},{"parent":"FUNC","rule":"toIntervalMonth","sum":2},{"parent":"FUNC","rule":"toLastDayOfMonth","sum":1},{"parent":"FUNC","rule":"toMonth","sum":1},{"parent":"FUNC","rule":"toMultiDict","sum":264},{"parent":"FUNC","rule":"toQuarter","sum":1},{"parent":"FUNC","rule":"toSet","sum":448252},{"parent":"FUNC","rule":"toStartOfMonth","sum":15},{"parent":"FUNC","rule":"toStartOfQuarter","sum":1},{"parent":"FUNC","rule":"toStartOfWeek","sum":9},{"parent":"FUNC","rule":"toString","sum":46},{"parent":"FUNC","rule":"toUInt64","sum":5},{"parent":"FUNC","rule":"toUnixTimestamp","sum":2},{"parent":"FUNC","rule":"toUnixTimestamp64Micro","sum":2},{"parent":"FUNC","rule":"toYear","sum":9},{"parent":"FUNC","rule":"to_bytes","sum":36},{"parent":"FUNC","rule":"to_char","sum":2},{"parent":"FUNC","rule":"to_date","sum":4},{"parent":"FUNC","rule":"to_dict","sum":65},{"parent":"FUNC","rule":"tobytes","sum":155},{"parent":"FUNC","rule":"today","sum":1},{"parent":"FUNC","rule":"todict","sum":102846},{"parent":"FUNC","rule":"tomultidict","sum":1198},{"parent":"FUNC","rule":"top","sum":55371},{"parent":"FUNC","rule":"topFreq","sum":99},{"parent":"FUNC","rule":"top_BY","sum":1},{"parent":"FUNC","rule":"top_by","sum":115321},{"parent":"FUNC","rule":"top_freq","sum":107},{"parent":"FUNC","rule":"topfreq","sum":23300},{"parent":"FUNC","rule":"topg","sum":2},{"parent":"FUNC","rule":"toset","sum":39199},{"parent":"FUNC","rule":"trunc","sum":13},{"parent":"FUNC","rule":"truncate","sum":2},{"parent":"FUNC","rule":"tryMember","sum":527},{"parent":"FUNC","rule":"trymember","sum":10273},{"parent":"FUNC","rule":"tupleElement","sum":2},{"parent":"FUNC","rule":"typeOf","sum":38},{"parent":"FUNC","rule":"typeof","sum":397},{"parent":"FUNC","rule":"tzdate","sum":8},{"parent":"FUNC","rule":"tzdate32","sum":7},{"parent":"FUNC","rule":"tzdatetime","sum":44},{"parent":"FUNC","rule":"tzdatetime64","sum":7},{"parent":"FUNC","rule":"tztimestamp","sum":35},{"parent":"FUNC","rule":"tztimestamp64","sum":7},{"parent":"FUNC","rule":"uNWRAP","sum":118},{"parent":"FUNC","rule":"udaf","sum":17276},{"parent":"FUNC","rule":"uint32","sum":13705},{"parent":"FUNC","rule":"uint64","sum":35},{"parent":"FUNC","rule":"uint8","sum":2},{"parent":"FUNC","rule":"unWRap","sum":3},{"parent":"FUNC","rule":"unWrap","sum":5},{"parent":"FUNC","rule":"uniq","sum":9},{"parent":"FUNC","rule":"uniqExact","sum":10},{"parent":"FUNC","rule":"unique","sum":1},{"parent":"FUNC","rule":"unique_pairs","sum":1},{"parent":"FUNC","rule":"unnest","sum":3},{"parent":"FUNC","rule":"untag","sum":1180},{"parent":"FUNC","rule":"unwrap","sum":27136138},{"parent":"FUNC","rule":"unwraped","sum":1},{"parent":"FUNC","rule":"upper","sum":2},{"parent":"FUNC","rule":"using","sum":12},{"parent":"FUNC","rule":"utc_action_created_dttm","sum":1},{"parent":"FUNC","rule":"utf8","sum":2035},{"parent":"FUNC","rule":"uuid","sum":25},{"parent":"FUNC","rule":"values","sum":6},{"parent":"FUNC","rule":"varPop","sum":77},{"parent":"FUNC","rule":"varSamp","sum":85},{"parent":"FUNC","rule":"var_samp","sum":43},{"parent":"FUNC","rule":"variance","sum":66147},{"parent":"FUNC","rule":"variance_population","sum":4},{"parent":"FUNC","rule":"variance_sample","sum":524},{"parent":"FUNC","rule":"varpop","sum":19},{"parent":"FUNC","rule":"version","sum":19},{"parent":"FUNC","rule":"vl","sum":2},{"parent":"FUNC","rule":"void","sum":1},{"parent":"FUNC","rule":"way","sum":43731},{"parent":"FUNC","rule":"weakField","sum":1077},{"parent":"FUNC","rule":"weakfield","sum":988043},{"parent":"FUNC","rule":"windowFunnel","sum":1},{"parent":"FUNC","rule":"worked_rules","sum":3},{"parent":"FUNC","rule":"wrap","sum":1},{"parent":"FUNC","rule":"yesterday","sum":4},{"parent":"FUNC","rule":"yson","sum":42},{"parent":"FUNC","rule":"ytListTables","sum":1},{"parent":"INSERT_HINT","rule":"COLUMN_GROUPS","sum":225},{"parent":"INSERT_HINT","rule":"COMPRESSION_CODEC","sum":864489},{"parent":"INSERT_HINT","rule":"ERASURE_CODEC","sum":67995},{"parent":"INSERT_HINT","rule":"EXPIRATION","sum":7242661},{"parent":"INSERT_HINT","rule":"Expiration","sum":175},{"parent":"INSERT_HINT","rule":"KEEPMETA","sum":10},{"parent":"INSERT_HINT","rule":"KEEP_META","sum":115191},{"parent":"INSERT_HINT","rule":"MODE","sum":2},{"parent":"INSERT_HINT","rule":"MONOTONIC_KEYS","sum":429074},{"parent":"INSERT_HINT","rule":"PRIMARY_MEDIUM","sum":89502},{"parent":"INSERT_HINT","rule":"REPLICATION_FACTOR","sum":7389},{"parent":"INSERT_HINT","rule":"SECURITY_TAGS","sum":4831},{"parent":"INSERT_HINT","rule":"TRUNCATE","sum":111671227},{"parent":"INSERT_HINT","rule":"TRUNCATe","sum":321},{"parent":"INSERT_HINT","rule":"TRUNCAtE","sum":3},{"parent":"INSERT_HINT","rule":"TRUNCAte","sum":11},{"parent":"INSERT_HINT","rule":"TRUNCate","sum":10},{"parent":"INSERT_HINT","rule":"TRUNcATE","sum":6},{"parent":"INSERT_HINT","rule":"TRUnCATE","sum":1},{"parent":"INSERT_HINT","rule":"TRUncATE","sum":322},{"parent":"INSERT_HINT","rule":"TRUncate","sum":10},{"parent":"INSERT_HINT","rule":"TRuNCATE","sum":2},{"parent":"INSERT_HINT","rule":"TRuncaTE","sum":1},{"parent":"INSERT_HINT","rule":"TRuncate","sum":50},{"parent":"INSERT_HINT","rule":"TrUNCATE","sum":1},{"parent":"INSERT_HINT","rule":"Truncate","sum":4643},{"parent":"INSERT_HINT","rule":"USER_ATTRS","sum":2084355},{"parent":"INSERT_HINT","rule":"XLOCK","sum":1},{"parent":"INSERT_HINT","rule":"column_groups","sum":6541},{"parent":"INSERT_HINT","rule":"compression_codec","sum":2023},{"parent":"INSERT_HINT","rule":"erasure_codec","sum":3163},{"parent":"INSERT_HINT","rule":"expiration","sum":338636},{"parent":"INSERT_HINT","rule":"initial","sum":1},{"parent":"INSERT_HINT","rule":"keep_meta","sum":134738},{"parent":"INSERT_HINT","rule":"monotonic_keys","sum":15},{"parent":"INSERT_HINT","rule":"mutation_id","sum":3},{"parent":"INSERT_HINT","rule":"primary_medium","sum":11466},{"parent":"INSERT_HINT","rule":"replication_factor","sum":1},{"parent":"INSERT_HINT","rule":"tRUNCATE","sum":1},{"parent":"INSERT_HINT","rule":"tRUNCAte","sum":1},{"parent":"INSERT_HINT","rule":"trUNCATE","sum":19},{"parent":"INSERT_HINT","rule":"truNCATE","sum":2},{"parent":"INSERT_HINT","rule":"trunCATE","sum":7},{"parent":"INSERT_HINT","rule":"truncate","sum":31067516},{"parent":"INSERT_HINT","rule":"user_attr","sum":1},{"parent":"INSERT_HINT","rule":"user_attrs","sum":67268},{"parent":"KEYWORD","rule":"ABORT","sum":20},{"parent":"KEYWORD","rule":"ACTION","sum":15140547},{"parent":"KEYWORD","rule":"ADD","sum":1097680},{"parent":"KEYWORD","rule":"AFTER","sum":170643},{"parent":"KEYWORD","rule":"ALL","sum":68407457},{"parent":"KEYWORD","rule":"ALTER","sum":72},{"parent":"KEYWORD","rule":"ANALYZE","sum":5861},{"parent":"KEYWORD","rule":"AND","sum":499617854},{"parent":"KEYWORD","rule":"ANY","sum":14739224},{"parent":"KEYWORD","rule":"ARRAY","sum":47490},{"parent":"KEYWORD","rule":"AS","sum":3191320969},{"parent":"KEYWORD","rule":"ASC","sum":11404139},{"parent":"KEYWORD","rule":"ASSUME","sum":2653585},{"parent":"KEYWORD","rule":"ASYNC","sum":32420},{"parent":"KEYWORD","rule":"AT","sum":570055},{"parent":"KEYWORD","rule":"ATTACH","sum":30213},{"parent":"KEYWORD","rule":"ATTRIBUTES","sum":19192984},{"parent":"KEYWORD","rule":"AUTOMAP","sum":1},{"parent":"KEYWORD","rule":"BACKUP","sum":480150},{"parent":"KEYWORD","rule":"BATCH","sum":777254},{"parent":"KEYWORD","rule":"BEFORE","sum":115648},{"parent":"KEYWORD","rule":"BEGIN","sum":14996587},{"parent":"KEYWORD","rule":"BERNOULLI","sum":125782},{"parent":"KEYWORD","rule":"BETWEEN","sum":27434655},{"parent":"KEYWORD","rule":"BITCAST","sum":516962},{"parent":"KEYWORD","rule":"BY","sum":293888555},{"parent":"KEYWORD","rule":"CALLABLE","sum":11017342},{"parent":"KEYWORD","rule":"CASCADE","sum":6},{"parent":"KEYWORD","rule":"CASE","sum":62013190},{"parent":"KEYWORD","rule":"CAST","sum":399425614},{"parent":"KEYWORD","rule":"CHECK","sum":1306921},{"parent":"KEYWORD","rule":"CLASSIFIER","sum":32389},{"parent":"KEYWORD","rule":"COLLECTION","sum":233346},{"parent":"KEYWORD","rule":"COLUMN","sum":1199069},{"parent":"KEYWORD","rule":"COLUMNS","sum":9586995},{"parent":"KEYWORD","rule":"COMMIT","sum":13068360},{"parent":"KEYWORD","rule":"COMPACT","sum":4826758},{"parent":"KEYWORD","rule":"CONDITIONAL","sum":40362},{"parent":"KEYWORD","rule":"CONFLICT","sum":493},{"parent":"KEYWORD","rule":"CONNECT","sum":41497},{"parent":"KEYWORD","rule":"CONSTRAINT","sum":1235},{"parent":"KEYWORD","rule":"CONSUMER","sum":673115},{"parent":"KEYWORD","rule":"COVER","sum":42405},{"parent":"KEYWORD","rule":"CREATE","sum":449774},{"parent":"KEYWORD","rule":"CROSS","sum":3108046},{"parent":"KEYWORD","rule":"CUBE","sum":371916},{"parent":"KEYWORD","rule":"CURRENT","sum":3606127},{"parent":"KEYWORD","rule":"CURRENT_DATE","sum":2894412},{"parent":"KEYWORD","rule":"CURRENT_TIME","sum":583690},{"parent":"KEYWORD","rule":"CURRENT_TIMESTAMP","sum":589598},{"parent":"KEYWORD","rule":"DATA","sum":65702878},{"parent":"KEYWORD","rule":"DATABASE","sum":21193},{"parent":"KEYWORD","rule":"DECIMAL","sum":28187759},{"parent":"KEYWORD","rule":"DECLARE","sum":156792290},{"parent":"KEYWORD","rule":"DEFAULT","sum":1604032},{"parent":"KEYWORD","rule":"DEFERRED","sum":902},{"parent":"KEYWORD","rule":"DEFINE","sum":44751639},{"parent":"KEYWORD","rule":"DELETE","sum":19493},{"parent":"KEYWORD","rule":"DESC","sum":22095112},{"parent":"KEYWORD","rule":"DESCRIBE","sum":40},{"parent":"KEYWORD","rule":"DICT","sum":9923692},{"parent":"KEYWORD","rule":"DIRECTORY","sum":201912},{"parent":"KEYWORD","rule":"DISABLE","sum":313158},{"parent":"KEYWORD","rule":"DISCARD","sum":931019},{"parent":"KEYWORD","rule":"DISTINCT","sum":71048223},{"parent":"KEYWORD","rule":"DO","sum":37700462},{"parent":"KEYWORD","rule":"DROP","sum":2676674},{"parent":"KEYWORD","rule":"EACH","sum":18045183},{"parent":"KEYWORD","rule":"ELSE","sum":65051198},{"parent":"KEYWORD","rule":"EMPTY","sum":477937},{"parent":"KEYWORD","rule":"EMPTY_ACTION","sum":126380},{"parent":"KEYWORD","rule":"ENCRYPTED","sum":8973},{"parent":"KEYWORD","rule":"END","sum":108172892},{"parent":"KEYWORD","rule":"ENUM","sum":79387},{"parent":"KEYWORD","rule":"ERASE","sum":25532},{"parent":"KEYWORD","rule":"ERROR","sum":3492039},{"parent":"KEYWORD","rule":"ESCAPE","sum":1176049},{"parent":"KEYWORD","rule":"EVALUATE","sum":15637931},{"parent":"KEYWORD","rule":"EXCEPT","sum":562},{"parent":"KEYWORD","rule":"EXCLUDE","sum":240053},{"parent":"KEYWORD","rule":"EXCLUSION","sum":434271},{"parent":"KEYWORD","rule":"EXCLUSIVE","sum":2103},{"parent":"KEYWORD","rule":"EXISTS","sum":679423},{"parent":"KEYWORD","rule":"EXPLAIN","sum":77},{"parent":"KEYWORD","rule":"EXPORT","sum":505667},{"parent":"KEYWORD","rule":"EXTERNAL","sum":43331},{"parent":"KEYWORD","rule":"FAIL","sum":50133},{"parent":"KEYWORD","rule":"FALSE","sum":57888821},{"parent":"KEYWORD","rule":"FAMILY","sum":164621},{"parent":"KEYWORD","rule":"FILTER","sum":3873974},{"parent":"KEYWORD","rule":"FIRST","sum":784473},{"parent":"KEYWORD","rule":"FLATTEN","sum":34215436},{"parent":"KEYWORD","rule":"FLOW","sum":144090},{"parent":"KEYWORD","rule":"FOLLOWING","sum":979399},{"parent":"KEYWORD","rule":"FOR","sum":7050918},{"parent":"KEYWORD","rule":"FOREIGN","sum":21688},{"parent":"KEYWORD","rule":"FROM","sum":874058868},{"parent":"KEYWORD","rule":"FULL","sum":6177643},{"parent":"KEYWORD","rule":"FUNCTION","sum":81034},{"parent":"KEYWORD","rule":"GLOB","sum":5073},{"parent":"KEYWORD","rule":"GLOBAL","sum":293},{"parent":"KEYWORD","rule":"GRANT","sum":42987},{"parent":"KEYWORD","rule":"GROUP","sum":139923226},{"parent":"KEYWORD","rule":"GROUPING","sum":190047},{"parent":"KEYWORD","rule":"GROUPS","sum":1785345},{"parent":"KEYWORD","rule":"HASH","sum":6389784},{"parent":"KEYWORD","rule":"HAVING","sum":12007005},{"parent":"KEYWORD","rule":"HOP","sum":23},{"parent":"KEYWORD","rule":"IF","sum":128627611},{"parent":"KEYWORD","rule":"IGNORE","sum":8308713},{"parent":"KEYWORD","rule":"ILIKE","sum":10613820},{"parent":"KEYWORD","rule":"IMPORT","sum":16686234},{"parent":"KEYWORD","rule":"IN","sum":133742190},{"parent":"KEYWORD","rule":"INCREMENT","sum":558054},{"parent":"KEYWORD","rule":"INDEX","sum":2383417},{"parent":"KEYWORD","rule":"INDEXED","sum":184557},{"parent":"KEYWORD","rule":"INITIAL","sum":147066},{"parent":"KEYWORD","rule":"INNER","sum":30890968},{"parent":"KEYWORD","rule":"INSERT","sum":209792885},{"parent":"KEYWORD","rule":"INTERSECT","sum":49949},{"parent":"KEYWORD","rule":"INTO","sum":212610245},{"parent":"KEYWORD","rule":"IS","sum":173663787},{"parent":"KEYWORD","rule":"ISNULL","sum":5476},{"parent":"KEYWORD","rule":"JOIN","sum":210067566},{"parent":"KEYWORD","rule":"JSON_EXISTS","sum":184354},{"parent":"KEYWORD","rule":"JSON_QUERY","sum":316589},{"parent":"KEYWORD","rule":"JSON_VALUE","sum":6154167},{"parent":"KEYWORD","rule":"KEY","sum":39514934},{"parent":"KEYWORD","rule":"LAST","sum":976740},{"parent":"KEYWORD","rule":"LEFT","sum":120149213},{"parent":"KEYWORD","rule":"LEGACY","sum":18374},{"parent":"KEYWORD","rule":"LIKE","sum":41030922},{"parent":"KEYWORD","rule":"LIMIT","sum":33412717},{"parent":"KEYWORD","rule":"LIST","sum":50632334},{"parent":"KEYWORD","rule":"LOCAL","sum":4569},{"parent":"KEYWORD","rule":"LOGIN","sum":39271221},{"parent":"KEYWORD","rule":"MANAGE","sum":320160},{"parent":"KEYWORD","rule":"MATCH","sum":2546299},{"parent":"KEYWORD","rule":"MATCHES","sum":236320},{"parent":"KEYWORD","rule":"MATCH_RECOGNIZE","sum":1},{"parent":"KEYWORD","rule":"MEASURES","sum":35552},{"parent":"KEYWORD","rule":"MICROSECONDS","sum":6884},{"parent":"KEYWORD","rule":"MILLISECONDS","sum":4426235},{"parent":"KEYWORD","rule":"MODIFY","sum":4434},{"parent":"KEYWORD","rule":"NANOSECONDS","sum":488},{"parent":"KEYWORD","rule":"NEXT","sum":278533},{"parent":"KEYWORD","rule":"NO","sum":91482},{"parent":"KEYWORD","rule":"NOT","sum":186046250},{"parent":"KEYWORD","rule":"NOTNULL","sum":2174},{"parent":"KEYWORD","rule":"NULL","sum":253066440},{"parent":"KEYWORD","rule":"NULLS","sum":7298561},{"parent":"KEYWORD","rule":"OBJECT","sum":2234714},{"parent":"KEYWORD","rule":"OF","sum":1747513},{"parent":"KEYWORD","rule":"OFFSET","sum":6124731},{"parent":"KEYWORD","rule":"ON","sum":174603959},{"parent":"KEYWORD","rule":"ONE","sum":179399},{"parent":"KEYWORD","rule":"ONLY","sum":17310526},{"parent":"KEYWORD","rule":"OPTION","sum":365128},{"parent":"KEYWORD","rule":"OPTIONAL","sum":33347970},{"parent":"KEYWORD","rule":"OR","sum":115474847},{"parent":"KEYWORD","rule":"ORDER","sum":121503528},{"parent":"KEYWORD","rule":"OTHERS","sum":57263},{"parent":"KEYWORD","rule":"OUTER","sum":297175},{"parent":"KEYWORD","rule":"OVER","sum":45477559},{"parent":"KEYWORD","rule":"OWNER","sum":7128894},{"parent":"KEYWORD","rule":"PARALLEL","sum":1677},{"parent":"KEYWORD","rule":"PARTITION","sum":22815081},{"parent":"KEYWORD","rule":"PASSING","sum":20022},{"parent":"KEYWORD","rule":"PASSWORD","sum":35045},{"parent":"KEYWORD","rule":"PAST","sum":448562},{"parent":"KEYWORD","rule":"PATTERN","sum":471538},{"parent":"KEYWORD","rule":"PER","sum":51541},{"parent":"KEYWORD","rule":"PERMUTE","sum":60},{"parent":"KEYWORD","rule":"PLAN","sum":1507049},{"parent":"KEYWORD","rule":"POOL","sum":84747916},{"parent":"KEYWORD","rule":"PRAGMA","sum":900857162},{"parent":"KEYWORD","rule":"PRECEDING","sum":2395479},{"parent":"KEYWORD","rule":"PRESORT","sum":309613},{"parent":"KEYWORD","rule":"PRIMARY","sum":77532},{"parent":"KEYWORD","rule":"PROCESS","sum":5035742},{"parent":"KEYWORD","rule":"QUERY","sum":16700391},{"parent":"KEYWORD","rule":"QUEUE","sum":5028110},{"parent":"KEYWORD","rule":"RAISE","sum":80},{"parent":"KEYWORD","rule":"RANGE","sum":34178688},{"parent":"KEYWORD","rule":"REDUCE","sum":930444},{"parent":"KEYWORD","rule":"REFERENCES","sum":117434},{"parent":"KEYWORD","rule":"REGEXP","sum":4545892},{"parent":"KEYWORD","rule":"REINDEX","sum":16},{"parent":"KEYWORD","rule":"RELEASE","sum":31801},{"parent":"KEYWORD","rule":"REMOVE","sum":324614},{"parent":"KEYWORD","rule":"RENAME","sum":18041},{"parent":"KEYWORD","rule":"REPEATABLE","sum":9382},{"parent":"KEYWORD","rule":"REPLACE","sum":9224091},{"parent":"KEYWORD","rule":"REPLICATION","sum":80},{"parent":"KEYWORD","rule":"RESET","sum":66966},{"parent":"KEYWORD","rule":"RESOURCE","sum":692688},{"parent":"KEYWORD","rule":"RESPECT","sum":45},{"parent":"KEYWORD","rule":"RESTART","sum":89},{"parent":"KEYWORD","rule":"RESTORE","sum":150},{"parent":"KEYWORD","rule":"RESTRICT","sum":693},{"parent":"KEYWORD","rule":"RESULT","sum":35050793},{"parent":"KEYWORD","rule":"RETURN","sum":166802548},{"parent":"KEYWORD","rule":"RETURNING","sum":1331865},{"parent":"KEYWORD","rule":"REVERT","sum":45},{"parent":"KEYWORD","rule":"REVOKE","sum":10},{"parent":"KEYWORD","rule":"RIGHT","sum":2551125},{"parent":"KEYWORD","rule":"RLIKE","sum":545045},{"parent":"KEYWORD","rule":"ROLLBACK","sum":5476},{"parent":"KEYWORD","rule":"ROLLUP","sum":167291},{"parent":"KEYWORD","rule":"ROW","sum":17361901},{"parent":"KEYWORD","rule":"ROWS","sum":5567923},{"parent":"KEYWORD","rule":"SAMPLE","sum":1175534},{"parent":"KEYWORD","rule":"SCHEMA","sum":20038913},{"parent":"KEYWORD","rule":"SECONDS","sum":1124664},{"parent":"KEYWORD","rule":"SEEK","sum":31},{"parent":"KEYWORD","rule":"SELECT","sum":907217677},{"parent":"KEYWORD","rule":"SEMI","sum":2942603},{"parent":"KEYWORD","rule":"SEQUENCE","sum":124757},{"parent":"KEYWORD","rule":"SET","sum":63617},{"parent":"KEYWORD","rule":"SETS","sum":164950},{"parent":"KEYWORD","rule":"SHOW","sum":359109},{"parent":"KEYWORD","rule":"SOURCE","sum":25946400},{"parent":"KEYWORD","rule":"START","sum":14010422},{"parent":"KEYWORD","rule":"STREAM","sum":2017171},{"parent":"KEYWORD","rule":"STRUCT","sum":27615632},{"parent":"KEYWORD","rule":"SUBQUERY","sum":16023107},{"parent":"KEYWORD","rule":"SUBSET","sum":38704},{"parent":"KEYWORD","rule":"SYMBOLS","sum":16686411},{"parent":"KEYWORD","rule":"SYMMETRIC","sum":26},{"parent":"KEYWORD","rule":"SYNC","sum":61036},{"parent":"KEYWORD","rule":"SYSTEM","sum":556679},{"parent":"KEYWORD","rule":"TABLE","sum":44310526},{"parent":"KEYWORD","rule":"TABLES","sum":5309885},{"parent":"KEYWORD","rule":"TABLESAMPLE","sum":329247},{"parent":"KEYWORD","rule":"TAGGED","sum":82548},{"parent":"KEYWORD","rule":"TEMP","sum":6279100},{"parent":"KEYWORD","rule":"TEMPORARY","sum":15221},{"parent":"KEYWORD","rule":"THEN","sum":158730928},{"parent":"KEYWORD","rule":"TIES","sum":89},{"parent":"KEYWORD","rule":"TO","sum":1801515},{"parent":"KEYWORD","rule":"TOPIC","sum":12388311},{"parent":"KEYWORD","rule":"TRANSACTION","sum":515613},{"parent":"KEYWORD","rule":"TRANSFER","sum":160114},{"parent":"KEYWORD","rule":"TRIGGER","sum":233646},{"parent":"KEYWORD","rule":"TRUE","sum":46741617},{"parent":"KEYWORD","rule":"TUPLE","sum":3020519},{"parent":"KEYWORD","rule":"TYPE","sum":105264622},{"parent":"KEYWORD","rule":"UNBOUNDED","sum":2506338},{"parent":"KEYWORD","rule":"UNCONDITIONAL","sum":126246},{"parent":"KEYWORD","rule":"UNION","sum":65064443},{"parent":"KEYWORD","rule":"UNIQUE","sum":2276422},{"parent":"KEYWORD","rule":"UNKNOWN","sum":696408},{"parent":"KEYWORD","rule":"UNMATCHED","sum":21458},{"parent":"KEYWORD","rule":"UPDATE","sum":4900616},{"parent":"KEYWORD","rule":"UPSERT","sum":121636},{"parent":"KEYWORD","rule":"USE","sum":330556967},{"parent":"KEYWORD","rule":"USER","sum":7320829},{"parent":"KEYWORD","rule":"USING","sum":35330151},{"parent":"KEYWORD","rule":"VACUUM","sum":116},{"parent":"KEYWORD","rule":"VALUES","sum":3662842},{"parent":"KEYWORD","rule":"VARIANT","sum":461574},{"parent":"KEYWORD","rule":"VIEW","sum":2335873},{"parent":"KEYWORD","rule":"VIRTUAL","sum":49406},{"parent":"KEYWORD","rule":"WHEN","sum":158747397},{"parent":"KEYWORD","rule":"WHERE","sum":341529965},{"parent":"KEYWORD","rule":"WINDOW","sum":14012916},{"parent":"KEYWORD","rule":"WITH","sum":163350148},{"parent":"KEYWORD","rule":"WITHOUT","sum":25028587},{"parent":"KEYWORD","rule":"WRAPPER","sum":192773},{"parent":"KEYWORD","rule":"XOR","sum":29511},{"parent":"MODULE","rule":"Compress","sum":84557},{"parent":"MODULE","rule":"DATETIME","sum":1116},{"parent":"MODULE","rule":"DATEtime","sum":2},{"parent":"MODULE","rule":"DAteTime","sum":3197},{"parent":"MODULE","rule":"DAtetime","sum":7},{"parent":"MODULE","rule":"DIgest","sum":2},{"parent":"MODULE","rule":"DaTETIME","sum":330},{"parent":"MODULE","rule":"DaTeTime","sum":84},{"parent":"MODULE","rule":"DateTIME","sum":723},{"parent":"MODULE","rule":"DateTIme","sum":4377},{"parent":"MODULE","rule":"DateTime","sum":275922461},{"parent":"MODULE","rule":"DatetIme","sum":366},{"parent":"MODULE","rule":"Datetime","sum":7139738},{"parent":"MODULE","rule":"Decompress","sum":24958},{"parent":"MODULE","rule":"Digest","sum":7752078},{"parent":"MODULE","rule":"HyperScan","sum":2270},{"parent":"MODULE","rule":"Hyperscan","sum":391141},{"parent":"MODULE","rule":"Ip","sum":1332384},{"parent":"MODULE","rule":"JSON","sum":26868},{"parent":"MODULE","rule":"JSon","sum":2},{"parent":"MODULE","rule":"Json","sum":1000957},{"parent":"MODULE","rule":"MATH","sum":216},{"parent":"MODULE","rule":"MAth","sum":1},{"parent":"MODULE","rule":"Math","sum":45129415},{"parent":"MODULE","rule":"PG","sum":201},{"parent":"MODULE","rule":"PIRE","sum":29},{"parent":"MODULE","rule":"Pg","sum":4910},{"parent":"MODULE","rule":"PgAgg","sum":2},{"parent":"MODULE","rule":"PgProc","sum":2},{"parent":"MODULE","rule":"Pire","sum":1913717},{"parent":"MODULE","rule":"Protobuf","sum":272315},{"parent":"MODULE","rule":"RE2","sum":5210},{"parent":"MODULE","rule":"Re2","sum":12256127},{"parent":"MODULE","rule":"STRING","sum":31},{"parent":"MODULE","rule":"String","sum":95856698},{"parent":"MODULE","rule":"TryDecompress","sum":4825},{"parent":"MODULE","rule":"URL","sum":53},{"parent":"MODULE","rule":"Unicode","sum":4931335},{"parent":"MODULE","rule":"Url","sum":23599129},{"parent":"MODULE","rule":"YSON","sum":483},{"parent":"MODULE","rule":"YSon","sum":26},{"parent":"MODULE","rule":"Yson","sum":396694825},{"parent":"MODULE","rule":"dateTime","sum":483},{"parent":"MODULE","rule":"datetime","sum":14258},{"parent":"MODULE","rule":"digest","sum":15},{"parent":"MODULE","rule":"json","sum":8},{"parent":"MODULE","rule":"math","sum":178},{"parent":"MODULE","rule":"pg","sum":1844},{"parent":"MODULE","rule":"pire","sum":36},{"parent":"MODULE","rule":"re2","sum":3252},{"parent":"MODULE","rule":"string","sum":103},{"parent":"MODULE","rule":"url","sum":6},{"parent":"MODULE","rule":"ySoN","sum":1},{"parent":"MODULE","rule":"yson","sum":73},{"parent":"MODULE_FUNC","rule":"Compress::BZip2","sum":2},{"parent":"MODULE_FUNC","rule":"Compress::BlockCodec","sum":6},{"parent":"MODULE_FUNC","rule":"Compress::Brotli","sum":158},{"parent":"MODULE_FUNC","rule":"Compress::Gzip","sum":83567},{"parent":"MODULE_FUNC","rule":"Compress::Lz4","sum":630},{"parent":"MODULE_FUNC","rule":"Compress::Lzma","sum":7},{"parent":"MODULE_FUNC","rule":"Compress::Snappy","sum":7},{"parent":"MODULE_FUNC","rule":"Compress::Zlib","sum":32},{"parent":"MODULE_FUNC","rule":"Compress::Zstd","sum":148},{"parent":"MODULE_FUNC","rule":"DATETIME::Format","sum":10},{"parent":"MODULE_FUNC","rule":"DATETIME::FromMilliseconds","sum":49},{"parent":"MODULE_FUNC","rule":"DATETIME::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DATETIME::GetYear","sum":18},{"parent":"MODULE_FUNC","rule":"DATETIME::MakeDate","sum":734},{"parent":"MODULE_FUNC","rule":"DATETIME::MakeDatetime","sum":281},{"parent":"MODULE_FUNC","rule":"DATETIME::Parse","sum":9},{"parent":"MODULE_FUNC","rule":"DATETIME::StartOfWeek","sum":14},{"parent":"MODULE_FUNC","rule":"DATEtime::GetMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DATEtime::GetYear","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::GetDayOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::MakeDate","sum":596},{"parent":"MODULE_FUNC","rule":"DAteTime::Parse","sum":150},{"parent":"MODULE_FUNC","rule":"DAteTime::StartOfMonth","sum":2440},{"parent":"MODULE_FUNC","rule":"DAteTime::StartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DAteTime::ToDays","sum":8},{"parent":"MODULE_FUNC","rule":"DAtetime::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DAtetime::MakeDatetime","sum":2},{"parent":"MODULE_FUNC","rule":"DAtetime::ToStartOfWeek","sum":4},{"parent":"MODULE_FUNC","rule":"DIgest::SipHash","sum":2},{"parent":"MODULE_FUNC","rule":"DaTETIME::StartOfWeek","sum":330},{"parent":"MODULE_FUNC","rule":"DaTeTime::GetMonth","sum":4},{"parent":"MODULE_FUNC","rule":"DaTeTime::GetYear","sum":4},{"parent":"MODULE_FUNC","rule":"DaTeTime::IntervalFromDays","sum":1},{"parent":"MODULE_FUNC","rule":"DaTeTime::MakeDate","sum":32},{"parent":"MODULE_FUNC","rule":"DaTeTime::ShiftMonths","sum":42},{"parent":"MODULE_FUNC","rule":"DaTeTime::StartOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIME::IntervalFromDays","sum":723},{"parent":"MODULE_FUNC","rule":"DateTIme::EndOfMonth","sum":3},{"parent":"MODULE_FUNC","rule":"DateTIme::Format","sum":11},{"parent":"MODULE_FUNC","rule":"DateTIme::FromMicroseconds","sum":11},{"parent":"MODULE_FUNC","rule":"DateTIme::FromSeconds","sum":64},{"parent":"MODULE_FUNC","rule":"DateTIme::GetDayOfWeek","sum":44},{"parent":"MODULE_FUNC","rule":"DateTIme::GetHour","sum":2},{"parent":"MODULE_FUNC","rule":"DateTIme::GetMinute","sum":38},{"parent":"MODULE_FUNC","rule":"DateTIme::GetYear","sum":75},{"parent":"MODULE_FUNC","rule":"DateTIme::IntervalFromDays","sum":46},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeDate","sum":3624},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeDatetime","sum":284},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeTimestamp","sum":7},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeTzTimestamp","sum":4},{"parent":"MODULE_FUNC","rule":"DateTIme::Parse","sum":2},{"parent":"MODULE_FUNC","rule":"DateTIme::ParseIso8601","sum":2},{"parent":"MODULE_FUNC","rule":"DateTIme::ShiftMonths","sum":6},{"parent":"MODULE_FUNC","rule":"DateTIme::StartOfMonth","sum":135},{"parent":"MODULE_FUNC","rule":"DateTIme::StartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIme::ToDays","sum":15},{"parent":"MODULE_FUNC","rule":"DateTIme::ToHours","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIme::ToMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTIme::ToSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::AddTimezone","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Convert","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::CurrentDate","sum":5},{"parent":"MODULE_FUNC","rule":"DateTime::CurrentDateTimeUTC","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::CurrentUtcDate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Date","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::DateTime","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::DatetimeStartOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::DayOfWeek","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::Days","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::DiffMinutes","sum":8},{"parent":"MODULE_FUNC","rule":"DateTime::DiffMonths","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Difference","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::EndOf","sum":31},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfDay","sum":457},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfMonth","sum":39967},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfQuarter","sum":434},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfWeek","sum":700},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfYear","sum":159},{"parent":"MODULE_FUNC","rule":"DateTime::EndofMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::EndtOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ExtractHour","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::FROMMilliseconds","sum":14},{"parent":"MODULE_FUNC","rule":"DateTime::FROMSeconds","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Format","sum":39883228},{"parent":"MODULE_FUNC","rule":"DateTime::FormatTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::FromDays","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroSeconds","sum":347},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds","sum":4727932},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds64","sum":175},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliSeconds","sum":48},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliSeconds64","sum":13},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds","sum":9251322},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds64","sum":1137},{"parent":"MODULE_FUNC","rule":"DateTime::FromSecond","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds","sum":15178873},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds64","sum":1201},{"parent":"MODULE_FUNC","rule":"DateTime::FromString","sum":368},{"parent":"MODULE_FUNC","rule":"DateTime::FromTimeZone","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::Fromat","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetDay","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfMonth","sum":604386},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeek","sum":639764},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeekName","sum":126690},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfYear","sum":44849},{"parent":"MODULE_FUNC","rule":"DateTime::GetHour","sum":1456870},{"parent":"MODULE_FUNC","rule":"DateTime::GetIntervalLength","sum":12},{"parent":"MODULE_FUNC","rule":"DateTime::GetLastDayOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetMicrosecondOfSecond","sum":1228},{"parent":"MODULE_FUNC","rule":"DateTime::GetMillisecondOfSecond","sum":31},{"parent":"MODULE_FUNC","rule":"DateTime::GetMinute","sum":287562},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonth","sum":707908},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthName","sum":39490},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthOfYear","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetSecond","sum":84581},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneId","sum":105},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneName","sum":512},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeek","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYear","sum":507533},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYearIso8601","sum":34952},{"parent":"MODULE_FUNC","rule":"DateTime::GetYEAR","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetYear","sum":795744},{"parent":"MODULE_FUNC","rule":"DateTime::Getmonth","sum":24},{"parent":"MODULE_FUNC","rule":"DateTime::Interval","sum":33},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromDays","sum":2374},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromHours","sum":4731},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMicroseconds","sum":10},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMilliseconds","sum":40},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMinutes","sum":226},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromSeconds","sum":200},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFROMDays","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFrom","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromDays","sum":15040135},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHDays","sum":28},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHours","sum":8990692},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMicroseconds","sum":78478},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMilliseconds","sum":518252},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinute","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinutes","sum":4299944},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonth","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonths","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromSeconds","sum":930326},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromYears","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalfromDays","sum":32},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalfromHours","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::LastDayOfMonth","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::MakeData","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDate","sum":23268806},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDate32","sum":73},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDateTime","sum":401},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime","sum":36578590},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime64","sum":131},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp","sum":7846791},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp64","sum":295},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDate","sum":263241},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDate32","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime","sum":3125311},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp","sum":154779},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp64","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Makedate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Makedatetime","sum":8},{"parent":"MODULE_FUNC","rule":"DateTime::MilliSeconds","sum":156},{"parent":"MODULE_FUNC","rule":"DateTime::NOW","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::Now","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Parce","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Parse","sum":23497626},{"parent":"MODULE_FUNC","rule":"DateTime::Parse64","sum":13},{"parent":"MODULE_FUNC","rule":"DateTime::Parse8601","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ParseDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseDateTimeBestEffort","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::ParseFromString","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseHttp","sum":27026},{"parent":"MODULE_FUNC","rule":"DateTime::ParseIso","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseIso8601","sum":18634887},{"parent":"MODULE_FUNC","rule":"DateTime::ParseRfc822","sum":1864},{"parent":"MODULE_FUNC","rule":"DateTime::ParseX509","sum":245},{"parent":"MODULE_FUNC","rule":"DateTime::STartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Shift","sum":4},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftDay","sum":51},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftDays","sum":187},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonth","sum":11},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonths","sum":3325455},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftQuarters","sum":392141},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeek","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeeks","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftYears","sum":676181},{"parent":"MODULE_FUNC","rule":"DateTime::Split","sum":697412},{"parent":"MODULE_FUNC","rule":"DateTime::StartOf","sum":2349112},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfDay","sum":2667465},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfHour","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMohth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMonth","sum":4176127},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfQuarter","sum":559698},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfWeek","sum":2078604},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfYear","sum":948432},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfmonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfweek","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::StartofMonth","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::TimeOfDay","sum":66823},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMicroSeconds","sum":364},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMilliSeconds","sum":2455},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromSeconds","sum":391},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromString","sum":422},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfMonth","sum":819},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfWeek","sum":398},{"parent":"MODULE_FUNC","rule":"DateTime::To","sum":5},{"parent":"MODULE_FUNC","rule":"DateTime::ToDate","sum":1413},{"parent":"MODULE_FUNC","rule":"DateTime::ToDateTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::ToDays","sum":3480539},{"parent":"MODULE_FUNC","rule":"DateTime::ToHours","sum":1322837},{"parent":"MODULE_FUNC","rule":"DateTime::ToIsoFormat","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMicroseconds","sum":2238948},{"parent":"MODULE_FUNC","rule":"DateTime::ToMilliseconds","sum":5351906},{"parent":"MODULE_FUNC","rule":"DateTime::ToMinutes","sum":868711},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonths","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds","sum":23463369},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Today","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Toseconds","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Trunc","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Update","sum":3567595},{"parent":"MODULE_FUNC","rule":"DateTime::format","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::fromSeconds","sum":15},{"parent":"MODULE_FUNC","rule":"DateTime::makeDate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::parse","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::parseiso8601","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::toDate","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::toMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::toSeconds","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::toStartOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::todate","sum":1},{"parent":"MODULE_FUNC","rule":"DatetIme::IntervalFromDays","sum":366},{"parent":"MODULE_FUNC","rule":"Datetime::CurrentDate","sum":2},{"parent":"MODULE_FUNC","rule":"Datetime::CurrentUtcDatetime","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::DaysInMonth","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::EndOfMonth","sum":215},{"parent":"MODULE_FUNC","rule":"Datetime::EndOfWeek","sum":104},{"parent":"MODULE_FUNC","rule":"Datetime::Format","sum":366401},{"parent":"MODULE_FUNC","rule":"Datetime::FromMicroseconds","sum":36237},{"parent":"MODULE_FUNC","rule":"Datetime::FromMicroseconds64","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::FromMilliseconds","sum":802725},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds","sum":568395},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds64","sum":29},{"parent":"MODULE_FUNC","rule":"Datetime::GetDay","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfMonth","sum":701},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeek","sum":12377},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeekName","sum":838},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfYear","sum":59},{"parent":"MODULE_FUNC","rule":"Datetime::GetHour","sum":14926},{"parent":"MODULE_FUNC","rule":"Datetime::GetMinute","sum":13952},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonth","sum":1041},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonthName","sum":349},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYear","sum":2697},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYearIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"Datetime::GetYear","sum":2764},{"parent":"MODULE_FUNC","rule":"Datetime::Interval","sum":9},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFROMDays","sum":10},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromDays","sum":375392},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromHours","sum":268217},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMicroseconds","sum":194},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMilliseconds","sum":91},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMinutes","sum":50476},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromSeconds","sum":9682},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate","sum":682816},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate32","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime","sum":923606},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTimestamp","sum":412332},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDate","sum":2339},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDatetime","sum":24493},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzTimestamp","sum":33462},{"parent":"MODULE_FUNC","rule":"Datetime::Makedate","sum":37},{"parent":"MODULE_FUNC","rule":"Datetime::Parse","sum":138374},{"parent":"MODULE_FUNC","rule":"Datetime::ParseIso8601","sum":259540},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftMonths","sum":25893},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftQuarters","sum":561},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftYears","sum":333},{"parent":"MODULE_FUNC","rule":"Datetime::Split","sum":207},{"parent":"MODULE_FUNC","rule":"Datetime::StarOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::StartOf","sum":64208},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfDay","sum":24485},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfMonth","sum":74980},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfQuarter","sum":4440},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfWeek","sum":23101},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfYear","sum":11700},{"parent":"MODULE_FUNC","rule":"Datetime::TimeOfDay","sum":121},{"parent":"MODULE_FUNC","rule":"Datetime::ToDatetime","sum":12},{"parent":"MODULE_FUNC","rule":"Datetime::ToDays","sum":142671},{"parent":"MODULE_FUNC","rule":"Datetime::ToHours","sum":22974},{"parent":"MODULE_FUNC","rule":"Datetime::ToMicroseconds","sum":594},{"parent":"MODULE_FUNC","rule":"Datetime::ToMilliseconds","sum":121225},{"parent":"MODULE_FUNC","rule":"Datetime::ToMinutes","sum":45638},{"parent":"MODULE_FUNC","rule":"Datetime::ToSeconds","sum":1542105},{"parent":"MODULE_FUNC","rule":"Datetime::Update","sum":29592},{"parent":"MODULE_FUNC","rule":"Datetime::split","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::startOfmonth","sum":3},{"parent":"MODULE_FUNC","rule":"Decompress::BZip2","sum":525},{"parent":"MODULE_FUNC","rule":"Decompress::Brotli","sum":7877},{"parent":"MODULE_FUNC","rule":"Decompress::Gzip","sum":3875},{"parent":"MODULE_FUNC","rule":"Decompress::Lz4","sum":903},{"parent":"MODULE_FUNC","rule":"Decompress::Snappy","sum":458},{"parent":"MODULE_FUNC","rule":"Decompress::Zlib","sum":11289},{"parent":"MODULE_FUNC","rule":"Decompress::Zstd","sum":31},{"parent":"MODULE_FUNC","rule":"Digest::Argon2","sum":48395},{"parent":"MODULE_FUNC","rule":"Digest::Blake2B","sum":4505},{"parent":"MODULE_FUNC","rule":"Digest::CityHash","sum":1233478},{"parent":"MODULE_FUNC","rule":"Digest::CityHash128","sum":18331},{"parent":"MODULE_FUNC","rule":"Digest::Crc32c","sum":76791},{"parent":"MODULE_FUNC","rule":"Digest::Crc64","sum":141102},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint","sum":70611},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint128","sum":21},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint2","sum":168021},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint32","sum":196},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint64","sum":1054756},{"parent":"MODULE_FUNC","rule":"Digest::Fnv32","sum":1746},{"parent":"MODULE_FUNC","rule":"Digest::Fnv64","sum":261115},{"parent":"MODULE_FUNC","rule":"Digest::IntHash64","sum":18036},{"parent":"MODULE_FUNC","rule":"Digest::MD5Hex","sum":7},{"parent":"MODULE_FUNC","rule":"Digest::Md5","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::Md5HalfMix","sum":429950},{"parent":"MODULE_FUNC","rule":"Digest::Md5Hex","sum":570452},{"parent":"MODULE_FUNC","rule":"Digest::Md5Raw","sum":15682},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash","sum":2438433},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A","sum":2526},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A32","sum":825},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash32","sum":255241},{"parent":"MODULE_FUNC","rule":"Digest::MurMurhash","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::NimericHash","sum":3},{"parent":"MODULE_FUNC","rule":"Digest::NumericHash","sum":281580},{"parent":"MODULE_FUNC","rule":"Digest::Sha1","sum":42729},{"parent":"MODULE_FUNC","rule":"Digest::Sha256","sum":401820},{"parent":"MODULE_FUNC","rule":"Digest::SipHash","sum":133034},{"parent":"MODULE_FUNC","rule":"Digest::SuperFastHash","sum":35357},{"parent":"MODULE_FUNC","rule":"Digest::XXH3","sum":47306},{"parent":"MODULE_FUNC","rule":"Digest::XXH3_128","sum":22},{"parent":"MODULE_FUNC","rule":"Digest::murmurhash","sum":3},{"parent":"MODULE_FUNC","rule":"HyperScan::BacktrackingGrep","sum":1},{"parent":"MODULE_FUNC","rule":"HyperScan::Grep","sum":2263},{"parent":"MODULE_FUNC","rule":"HyperScan::Match","sum":6},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingGrep","sum":50608},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingMatch","sum":129},{"parent":"MODULE_FUNC","rule":"Hyperscan::Capture","sum":5532},{"parent":"MODULE_FUNC","rule":"Hyperscan::Grep","sum":144521},{"parent":"MODULE_FUNC","rule":"Hyperscan::Match","sum":52414},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiGrep","sum":64},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiMatch","sum":40524},{"parent":"MODULE_FUNC","rule":"Hyperscan::Replace","sum":97349},{"parent":"MODULE_FUNC","rule":"Ip::ConvertToIPv6","sum":45141},{"parent":"MODULE_FUNC","rule":"Ip::FromString","sum":392805},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnet","sum":135330},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnetByMask","sum":4},{"parent":"MODULE_FUNC","rule":"Ip::IsEmbeddedIPv4","sum":6947},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv4","sum":135888},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv6","sum":118294},{"parent":"MODULE_FUNC","rule":"Ip::SubnetFromString","sum":569},{"parent":"MODULE_FUNC","rule":"Ip::SubnetMatch","sum":516},{"parent":"MODULE_FUNC","rule":"Ip::ToFixedIPv6String","sum":3812},{"parent":"MODULE_FUNC","rule":"Ip::ToString","sum":493078},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToDouble","sum":19612},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToInt64","sum":3261},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToList","sum":15},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToString","sum":133},{"parent":"MODULE_FUNC","rule":"JSON::ConvertToStringList","sum":4},{"parent":"MODULE_FUNC","rule":"JSON::From","sum":5},{"parent":"MODULE_FUNC","rule":"JSON::LookupBool","sum":5},{"parent":"MODULE_FUNC","rule":"JSON::LookupDouble","sum":10},{"parent":"MODULE_FUNC","rule":"JSON::LookupInt64","sum":8},{"parent":"MODULE_FUNC","rule":"JSON::LookupString","sum":259},{"parent":"MODULE_FUNC","rule":"JSON::PARSE","sum":2},{"parent":"MODULE_FUNC","rule":"JSON::Parse","sum":3554},{"parent":"MODULE_FUNC","rule":"JSon::From","sum":2},{"parent":"MODULE_FUNC","rule":"Json::Attributes","sum":2},{"parent":"MODULE_FUNC","rule":"Json::Contains","sum":1},{"parent":"MODULE_FUNC","rule":"Json::ConvertToBool","sum":5},{"parent":"MODULE_FUNC","rule":"Json::ConvertToDict","sum":114},{"parent":"MODULE_FUNC","rule":"Json::ConvertToDouble","sum":1},{"parent":"MODULE_FUNC","rule":"Json::ConvertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"Json::ConvertToList","sum":117},{"parent":"MODULE_FUNC","rule":"Json::ConvertToString","sum":169},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringDict","sum":5},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringList","sum":19},{"parent":"MODULE_FUNC","rule":"Json::From","sum":4018},{"parent":"MODULE_FUNC","rule":"Json::FromString","sum":16},{"parent":"MODULE_FUNC","rule":"Json::GetField","sum":21},{"parent":"MODULE_FUNC","rule":"Json::GetHash","sum":1},{"parent":"MODULE_FUNC","rule":"Json::GetLength","sum":19},{"parent":"MODULE_FUNC","rule":"Json::Lookup","sum":1},{"parent":"MODULE_FUNC","rule":"Json::LookupInt64","sum":808376},{"parent":"MODULE_FUNC","rule":"Json::LookupString","sum":53},{"parent":"MODULE_FUNC","rule":"Json::Options","sum":852},{"parent":"MODULE_FUNC","rule":"Json::Parse","sum":183283},{"parent":"MODULE_FUNC","rule":"Json::ParseJson","sum":217},{"parent":"MODULE_FUNC","rule":"Json::Serialize","sum":1558},{"parent":"MODULE_FUNC","rule":"Json::SerializeJson","sum":934},{"parent":"MODULE_FUNC","rule":"Json::SerializePretty","sum":1136},{"parent":"MODULE_FUNC","rule":"Json::SerializeText","sum":3},{"parent":"MODULE_FUNC","rule":"Json::YPath","sum":20},{"parent":"MODULE_FUNC","rule":"Json::YPathDict","sum":14},{"parent":"MODULE_FUNC","rule":"Json::YPathString","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::ABS","sum":7},{"parent":"MODULE_FUNC","rule":"MATH::Cos","sum":5},{"parent":"MODULE_FUNC","rule":"MATH::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::Log","sum":5},{"parent":"MODULE_FUNC","rule":"MATH::NearbyINT","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::NearbyInt","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::ROUND","sum":194},{"parent":"MODULE_FUNC","rule":"MATH::Round","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::Sigmoid","sum":1},{"parent":"MODULE_FUNC","rule":"MAth::Round","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Abs","sum":477751},{"parent":"MODULE_FUNC","rule":"Math::Acos","sum":13940},{"parent":"MODULE_FUNC","rule":"Math::Asin","sum":11850},{"parent":"MODULE_FUNC","rule":"Math::Asinh","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Atan","sum":8001},{"parent":"MODULE_FUNC","rule":"Math::Atan2","sum":13656},{"parent":"MODULE_FUNC","rule":"Math::Cbrt","sum":499},{"parent":"MODULE_FUNC","rule":"Math::Ceil","sum":1243601},{"parent":"MODULE_FUNC","rule":"Math::Cos","sum":102867},{"parent":"MODULE_FUNC","rule":"Math::Cosh","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Crbt","sum":1},{"parent":"MODULE_FUNC","rule":"Math::E","sum":9592},{"parent":"MODULE_FUNC","rule":"Math::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Eps","sum":179},{"parent":"MODULE_FUNC","rule":"Math::Erf","sum":2571},{"parent":"MODULE_FUNC","rule":"Math::ErfInv","sum":42},{"parent":"MODULE_FUNC","rule":"Math::ErfcInv","sum":6},{"parent":"MODULE_FUNC","rule":"Math::Exp","sum":557432},{"parent":"MODULE_FUNC","rule":"Math::Exp2","sum":1896},{"parent":"MODULE_FUNC","rule":"Math::Fabs","sum":144275},{"parent":"MODULE_FUNC","rule":"Math::Floor","sum":328631},{"parent":"MODULE_FUNC","rule":"Math::Flor","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Fmod","sum":9},{"parent":"MODULE_FUNC","rule":"Math::FuzzyEquals","sum":20073},{"parent":"MODULE_FUNC","rule":"Math::Hypot","sum":18932},{"parent":"MODULE_FUNC","rule":"Math::IsFinite","sum":187126},{"parent":"MODULE_FUNC","rule":"Math::IsInf","sum":77827},{"parent":"MODULE_FUNC","rule":"Math::IsNaN","sum":250614},{"parent":"MODULE_FUNC","rule":"Math::IsNan","sum":6},{"parent":"MODULE_FUNC","rule":"Math::Ldexp","sum":47},{"parent":"MODULE_FUNC","rule":"Math::Lgamma","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Log","sum":822425},{"parent":"MODULE_FUNC","rule":"Math::Log10","sum":155984},{"parent":"MODULE_FUNC","rule":"Math::Log2","sum":197686},{"parent":"MODULE_FUNC","rule":"Math::Max","sum":3},{"parent":"MODULE_FUNC","rule":"Math::Min","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Mod","sum":66821},{"parent":"MODULE_FUNC","rule":"Math::NearbyInt","sum":437889},{"parent":"MODULE_FUNC","rule":"Math::Pi","sum":76334},{"parent":"MODULE_FUNC","rule":"Math::Pow","sum":1337716},{"parent":"MODULE_FUNC","rule":"Math::Power","sum":6},{"parent":"MODULE_FUNC","rule":"Math::ROUND","sum":7},{"parent":"MODULE_FUNC","rule":"Math::Rem","sum":2241},{"parent":"MODULE_FUNC","rule":"Math::Remainder","sum":163},{"parent":"MODULE_FUNC","rule":"Math::Rint","sum":20317},{"parent":"MODULE_FUNC","rule":"Math::Round","sum":36951846},{"parent":"MODULE_FUNC","rule":"Math::RoundDownward","sum":140193},{"parent":"MODULE_FUNC","rule":"Math::RoundToNearest","sum":77617},{"parent":"MODULE_FUNC","rule":"Math::RoundTowardZero","sum":887},{"parent":"MODULE_FUNC","rule":"Math::RoundUpward","sum":219263},{"parent":"MODULE_FUNC","rule":"Math::SQRT","sum":8},{"parent":"MODULE_FUNC","rule":"Math::Sigmoid","sum":278316},{"parent":"MODULE_FUNC","rule":"Math::Sin","sum":87071},{"parent":"MODULE_FUNC","rule":"Math::Sinh","sum":6023},{"parent":"MODULE_FUNC","rule":"Math::Sqrt","sum":612516},{"parent":"MODULE_FUNC","rule":"Math::Tan","sum":5112},{"parent":"MODULE_FUNC","rule":"Math::Tanh","sum":5032},{"parent":"MODULE_FUNC","rule":"Math::Tgamma","sum":60},{"parent":"MODULE_FUNC","rule":"Math::Trunc","sum":156248},{"parent":"MODULE_FUNC","rule":"Math::abs","sum":2},{"parent":"MODULE_FUNC","rule":"Math::ceil","sum":8},{"parent":"MODULE_FUNC","rule":"Math::cos","sum":2},{"parent":"MODULE_FUNC","rule":"Math::exp","sum":18},{"parent":"MODULE_FUNC","rule":"Math::floor","sum":55},{"parent":"MODULE_FUNC","rule":"Math::isnan","sum":1},{"parent":"MODULE_FUNC","rule":"Math::pow","sum":1},{"parent":"MODULE_FUNC","rule":"Math::round","sum":99},{"parent":"MODULE_FUNC","rule":"Math::sin","sum":2},{"parent":"MODULE_FUNC","rule":"Math::sqrt","sum":3},{"parent":"MODULE_FUNC","rule":"PG::ARRAY_AGG","sum":7},{"parent":"MODULE_FUNC","rule":"PG::STRING_AGG","sum":37},{"parent":"MODULE_FUNC","rule":"PG::generate_series","sum":7},{"parent":"MODULE_FUNC","rule":"PG::json_object_keys","sum":19},{"parent":"MODULE_FUNC","rule":"PG::jsonb_object_keys","sum":18},{"parent":"MODULE_FUNC","rule":"PG::string_agg","sum":104},{"parent":"MODULE_FUNC","rule":"PG::to_hex","sum":9},{"parent":"MODULE_FUNC","rule":"PIRE::Capture","sum":7},{"parent":"MODULE_FUNC","rule":"PIRE::Grep","sum":22},{"parent":"MODULE_FUNC","rule":"Pg::ARRAY_AGG","sum":11},{"parent":"MODULE_FUNC","rule":"Pg::Array_Agg","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::CONCAT","sum":12},{"parent":"MODULE_FUNC","rule":"Pg::Date","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::GENERATE_SERIES","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::SPLIT_PART","sum":5},{"parent":"MODULE_FUNC","rule":"Pg::STRING_AGG","sum":52},{"parent":"MODULE_FUNC","rule":"Pg::ST_Area","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsEWKB","sum":57},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsEWKT","sum":15},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsGeoJSON","sum":7},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsSVG","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::ST_AsText","sum":57},{"parent":"MODULE_FUNC","rule":"Pg::ST_Boundary","sum":43},{"parent":"MODULE_FUNC","rule":"Pg::ST_Centroid","sum":14},{"parent":"MODULE_FUNC","rule":"Pg::ST_ClosestPoint","sum":37},{"parent":"MODULE_FUNC","rule":"Pg::ST_Contains","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::ST_Distance","sum":13},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeoHash","sum":15},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromEWKB","sum":86},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromGeoHash","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromText","sum":65},{"parent":"MODULE_FUNC","rule":"Pg::ST_GeomFromWKB","sum":7},{"parent":"MODULE_FUNC","rule":"Pg::ST_Intersects","sum":13},{"parent":"MODULE_FUNC","rule":"Pg::ST_IsValid","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::ST_MakePoint","sum":7},{"parent":"MODULE_FUNC","rule":"Pg::ST_MakeValid","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::ST_Point","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::ST_PointOnSurface","sum":17},{"parent":"MODULE_FUNC","rule":"Pg::ST_Scale","sum":3},{"parent":"MODULE_FUNC","rule":"Pg::ST_SetSRID","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::ST_Transform","sum":183},{"parent":"MODULE_FUNC","rule":"Pg::ST_X","sum":72},{"parent":"MODULE_FUNC","rule":"Pg::ST_Y","sum":66},{"parent":"MODULE_FUNC","rule":"Pg::St_geomfromewkb","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::String_Agg","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::age","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::array_agg","sum":9},{"parent":"MODULE_FUNC","rule":"Pg::array_length","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::bit_length","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::center","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::concat","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::date_generate_series","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::date_part","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::date_trunc","sum":11},{"parent":"MODULE_FUNC","rule":"Pg::extract","sum":136},{"parent":"MODULE_FUNC","rule":"Pg::generate_series","sum":1523},{"parent":"MODULE_FUNC","rule":"Pg::json_object_agg","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::lower","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::max","sum":364},{"parent":"MODULE_FUNC","rule":"Pg::sind","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::split_part","sum":20},{"parent":"MODULE_FUNC","rule":"Pg::st_asgeojson","sum":1},{"parent":"MODULE_FUNC","rule":"Pg::st_astext","sum":6},{"parent":"MODULE_FUNC","rule":"Pg::st_collect","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::st_geomfromewkb","sum":22},{"parent":"MODULE_FUNC","rule":"Pg::st_intersects","sum":9},{"parent":"MODULE_FUNC","rule":"Pg::st_transform","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::st_union","sum":8},{"parent":"MODULE_FUNC","rule":"Pg::string_Agg","sum":2},{"parent":"MODULE_FUNC","rule":"Pg::string_agg","sum":1771},{"parent":"MODULE_FUNC","rule":"Pg::to_char","sum":18},{"parent":"MODULE_FUNC","rule":"Pg::to_timestamp","sum":79},{"parent":"MODULE_FUNC","rule":"Pg::version","sum":3},{"parent":"MODULE_FUNC","rule":"PgAgg::string_agg","sum":2},{"parent":"MODULE_FUNC","rule":"PgProc::upper","sum":2},{"parent":"MODULE_FUNC","rule":"Pire::Capture","sum":525813},{"parent":"MODULE_FUNC","rule":"Pire::Grep","sum":144439},{"parent":"MODULE_FUNC","rule":"Pire::Match","sum":235092},{"parent":"MODULE_FUNC","rule":"Pire::MultiGrep","sum":684},{"parent":"MODULE_FUNC","rule":"Pire::MultiMatch","sum":152},{"parent":"MODULE_FUNC","rule":"Pire::Replace","sum":1007537},{"parent":"MODULE_FUNC","rule":"Protobuf::Parse","sum":21267},{"parent":"MODULE_FUNC","rule":"Protobuf::Serialize","sum":104073},{"parent":"MODULE_FUNC","rule":"Protobuf::TryParse","sum":146975},{"parent":"MODULE_FUNC","rule":"RE2::Capture","sum":4074},{"parent":"MODULE_FUNC","rule":"RE2::Count","sum":370},{"parent":"MODULE_FUNC","rule":"RE2::FindAndConsume","sum":31},{"parent":"MODULE_FUNC","rule":"RE2::Grep","sum":68},{"parent":"MODULE_FUNC","rule":"RE2::Match","sum":543},{"parent":"MODULE_FUNC","rule":"RE2::Replace","sum":124},{"parent":"MODULE_FUNC","rule":"Re2::Capture","sum":4426150},{"parent":"MODULE_FUNC","rule":"Re2::Catch","sum":1},{"parent":"MODULE_FUNC","rule":"Re2::Compile","sum":4},{"parent":"MODULE_FUNC","rule":"Re2::Count","sum":172459},{"parent":"MODULE_FUNC","rule":"Re2::FindAll","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAllSubmatch","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAndConsume","sum":389398},{"parent":"MODULE_FUNC","rule":"Re2::Grep","sum":657664},{"parent":"MODULE_FUNC","rule":"Re2::Match","sum":1681940},{"parent":"MODULE_FUNC","rule":"Re2::Options","sum":246586},{"parent":"MODULE_FUNC","rule":"Re2::Replace","sum":4681906},{"parent":"MODULE_FUNC","rule":"Re2::ReplaceAll","sum":15},{"parent":"MODULE_FUNC","rule":"STRING::AsciiToLower","sum":1},{"parent":"MODULE_FUNC","rule":"STRING::CONTAINS","sum":2},{"parent":"MODULE_FUNC","rule":"STRING::Contains","sum":2},{"parent":"MODULE_FUNC","rule":"STRING::RemoveAll","sum":1},{"parent":"MODULE_FUNC","rule":"STRING::ReplaceFirst","sum":20},{"parent":"MODULE_FUNC","rule":"STRING::SplitToList","sum":5},{"parent":"MODULE_FUNC","rule":"String::ASciiToLower","sum":2},{"parent":"MODULE_FUNC","rule":"String::AsciiToLower","sum":4129718},{"parent":"MODULE_FUNC","rule":"String::AsciiToTitle","sum":98428},{"parent":"MODULE_FUNC","rule":"String::AsciiToUpper","sum":546689},{"parent":"MODULE_FUNC","rule":"String::AsciiTolower","sum":5},{"parent":"MODULE_FUNC","rule":"String::Base32Decode","sum":276},{"parent":"MODULE_FUNC","rule":"String::Base32Encode","sum":196},{"parent":"MODULE_FUNC","rule":"String::Base32StrictDecode","sum":56},{"parent":"MODULE_FUNC","rule":"String::Base64Decode","sum":396077},{"parent":"MODULE_FUNC","rule":"String::Base64Encode","sum":112569},{"parent":"MODULE_FUNC","rule":"String::Base64EncodeUrl","sum":5853},{"parent":"MODULE_FUNC","rule":"String::Base64StrictDecode","sum":96311},{"parent":"MODULE_FUNC","rule":"String::Bin","sum":496},{"parent":"MODULE_FUNC","rule":"String::BinText","sum":121},{"parent":"MODULE_FUNC","rule":"String::CgiEscape","sum":74375},{"parent":"MODULE_FUNC","rule":"String::CgiUnescape","sum":24260},{"parent":"MODULE_FUNC","rule":"String::ColapseText","sum":4},{"parent":"MODULE_FUNC","rule":"String::Collapse","sum":201577},{"parent":"MODULE_FUNC","rule":"String::CollapseText","sum":202243},{"parent":"MODULE_FUNC","rule":"String::Contains","sum":6171324},{"parent":"MODULE_FUNC","rule":"String::DecodeHtml","sum":3052},{"parent":"MODULE_FUNC","rule":"String::EncodeHtml","sum":415},{"parent":"MODULE_FUNC","rule":"String::EndsWith","sum":538944},{"parent":"MODULE_FUNC","rule":"String::EndsWithIgnoreCase","sum":36066},{"parent":"MODULE_FUNC","rule":"String::EscapeC","sum":55954},{"parent":"MODULE_FUNC","rule":"String::Find","sum":653752},{"parent":"MODULE_FUNC","rule":"String::From","sum":2},{"parent":"MODULE_FUNC","rule":"String::FromByteList","sum":1039651},{"parent":"MODULE_FUNC","rule":"String::HasPrefix","sum":21399},{"parent":"MODULE_FUNC","rule":"String::HasPrefixIgnoreCase","sum":49},{"parent":"MODULE_FUNC","rule":"String::HasSuffix","sum":4898},{"parent":"MODULE_FUNC","rule":"String::HasSuffixIgnoreCase","sum":28654},{"parent":"MODULE_FUNC","rule":"String::Hex","sum":381613},{"parent":"MODULE_FUNC","rule":"String::HexDecode","sum":166472},{"parent":"MODULE_FUNC","rule":"String::HexEncode","sum":196478},{"parent":"MODULE_FUNC","rule":"String::HexText","sum":78340},{"parent":"MODULE_FUNC","rule":"String::HumanReadableBytes","sum":260},{"parent":"MODULE_FUNC","rule":"String::HumanReadableDuration","sum":1132817},{"parent":"MODULE_FUNC","rule":"String::HumanReadableQuantity","sum":344},{"parent":"MODULE_FUNC","rule":"String::IsAscii","sum":14113},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlnum","sum":1024},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlpha","sum":383},{"parent":"MODULE_FUNC","rule":"String::IsAsciiDigit","sum":8385},{"parent":"MODULE_FUNC","rule":"String::IsAsciiHex","sum":19397},{"parent":"MODULE_FUNC","rule":"String::IsAsciiLower","sum":22},{"parent":"MODULE_FUNC","rule":"String::IsAsciiSpace","sum":13},{"parent":"MODULE_FUNC","rule":"String::IsAsciiUpper","sum":361},{"parent":"MODULE_FUNC","rule":"String::Join","sum":2},{"parent":"MODULE_FUNC","rule":"String::JoinFROMList","sum":31064},{"parent":"MODULE_FUNC","rule":"String::JoinFromList","sum":14043281},{"parent":"MODULE_FUNC","rule":"String::LeftPad","sum":66755},{"parent":"MODULE_FUNC","rule":"String::Length","sum":2},{"parent":"MODULE_FUNC","rule":"String::LevenshteinDistance","sum":4},{"parent":"MODULE_FUNC","rule":"String::LevensteinDistance","sum":11867},{"parent":"MODULE_FUNC","rule":"String::Prec","sum":1845},{"parent":"MODULE_FUNC","rule":"String::RaplaceAll","sum":3},{"parent":"MODULE_FUNC","rule":"String::RemoveAll","sum":1249625},{"parent":"MODULE_FUNC","rule":"String::RemoveFirst","sum":643653},{"parent":"MODULE_FUNC","rule":"String::RemoveLast","sum":560035},{"parent":"MODULE_FUNC","rule":"String::Replace","sum":15},{"parent":"MODULE_FUNC","rule":"String::ReplaceALL","sum":3},{"parent":"MODULE_FUNC","rule":"String::ReplaceAll","sum":15745280},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirst","sum":1371180},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirstStartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::ReplaceLast","sum":175893},{"parent":"MODULE_FUNC","rule":"String::ReplaceRegex","sum":1},{"parent":"MODULE_FUNC","rule":"String::Reverse","sum":119905},{"parent":"MODULE_FUNC","rule":"String::ReverseFind","sum":38777},{"parent":"MODULE_FUNC","rule":"String::RightPad","sum":378937},{"parent":"MODULE_FUNC","rule":"String::SBin","sum":7},{"parent":"MODULE_FUNC","rule":"String::SHex","sum":6272},{"parent":"MODULE_FUNC","rule":"String::Split","sum":10},{"parent":"MODULE_FUNC","rule":"String::SplitToList","sum":31992556},{"parent":"MODULE_FUNC","rule":"String::SplitToSet","sum":12},{"parent":"MODULE_FUNC","rule":"String::SplitTolist","sum":13},{"parent":"MODULE_FUNC","rule":"String::Splittolist","sum":2},{"parent":"MODULE_FUNC","rule":"String::StartWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::StartsWith","sum":3453365},{"parent":"MODULE_FUNC","rule":"String::StartsWithIgnoreCase","sum":55738},{"parent":"MODULE_FUNC","rule":"String::Strip","sum":3186400},{"parent":"MODULE_FUNC","rule":"String::Substring","sum":304256},{"parent":"MODULE_FUNC","rule":"String::ToByteList","sum":140742},{"parent":"MODULE_FUNC","rule":"String::ToLower","sum":5306981},{"parent":"MODULE_FUNC","rule":"String::ToLowerCase","sum":1},{"parent":"MODULE_FUNC","rule":"String::ToTitle","sum":34745},{"parent":"MODULE_FUNC","rule":"String::ToUpper","sum":141158},{"parent":"MODULE_FUNC","rule":"String::Trim","sum":3},{"parent":"MODULE_FUNC","rule":"String::UnescapeC","sum":352860},{"parent":"MODULE_FUNC","rule":"String::contains","sum":3},{"parent":"MODULE_FUNC","rule":"String::splittolist","sum":1},{"parent":"MODULE_FUNC","rule":"String::strip","sum":4},{"parent":"MODULE_FUNC","rule":"String::tolower","sum":2},{"parent":"MODULE_FUNC","rule":"TryDecompress::BZip2","sum":4},{"parent":"MODULE_FUNC","rule":"TryDecompress::BlockCodec","sum":1},{"parent":"MODULE_FUNC","rule":"TryDecompress::Brotli","sum":11},{"parent":"MODULE_FUNC","rule":"TryDecompress::Gzip","sum":1012},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lz4","sum":171},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lzma","sum":4},{"parent":"MODULE_FUNC","rule":"TryDecompress::Snappy","sum":10},{"parent":"MODULE_FUNC","rule":"TryDecompress::Xz","sum":4},{"parent":"MODULE_FUNC","rule":"TryDecompress::Zlib","sum":3590},{"parent":"MODULE_FUNC","rule":"TryDecompress::Zstd","sum":18},{"parent":"MODULE_FUNC","rule":"URL::Decode","sum":5},{"parent":"MODULE_FUNC","rule":"URL::GetHost","sum":2},{"parent":"MODULE_FUNC","rule":"URL::GetOwner","sum":40},{"parent":"MODULE_FUNC","rule":"URL::Normalize","sum":6},{"parent":"MODULE_FUNC","rule":"Unicode::FInd","sum":4},{"parent":"MODULE_FUNC","rule":"Unicode::Find","sum":154963},{"parent":"MODULE_FUNC","rule":"Unicode::Fold","sum":29226},{"parent":"MODULE_FUNC","rule":"Unicode::FromCodePointList","sum":120339},{"parent":"MODULE_FUNC","rule":"Unicode::GetLength","sum":595220},{"parent":"MODULE_FUNC","rule":"Unicode::GetLengthn","sum":1},{"parent":"MODULE_FUNC","rule":"Unicode::IsAlnum","sum":545},{"parent":"MODULE_FUNC","rule":"Unicode::IsAlpha","sum":460},{"parent":"MODULE_FUNC","rule":"Unicode::IsAscii","sum":719},{"parent":"MODULE_FUNC","rule":"Unicode::IsDigit","sum":8978},{"parent":"MODULE_FUNC","rule":"Unicode::IsHex","sum":5},{"parent":"MODULE_FUNC","rule":"Unicode::IsLower","sum":96},{"parent":"MODULE_FUNC","rule":"Unicode::IsSpace","sum":18},{"parent":"MODULE_FUNC","rule":"Unicode::IsUnicodeSet","sum":448},{"parent":"MODULE_FUNC","rule":"Unicode::IsUpper","sum":1803},{"parent":"MODULE_FUNC","rule":"Unicode::IsUtf","sum":671535},{"parent":"MODULE_FUNC","rule":"Unicode::JoinFromList","sum":204153},{"parent":"MODULE_FUNC","rule":"Unicode::Length","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::LevensteinDistance","sum":40464},{"parent":"MODULE_FUNC","rule":"Unicode::Normalize","sum":111830},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFC","sum":517},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFD","sum":36},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKC","sum":6970},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKD","sum":1785},{"parent":"MODULE_FUNC","rule":"Unicode::RFind","sum":73416},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveAll","sum":138640},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveFirst","sum":7632},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveLast","sum":7675},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceAll","sum":275447},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceFirst","sum":1715},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceLast","sum":318},{"parent":"MODULE_FUNC","rule":"Unicode::Reverse","sum":53941},{"parent":"MODULE_FUNC","rule":"Unicode::SUBSTRING","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::SplitToList","sum":183435},{"parent":"MODULE_FUNC","rule":"Unicode::Strip","sum":65408},{"parent":"MODULE_FUNC","rule":"Unicode::Substring","sum":604211},{"parent":"MODULE_FUNC","rule":"Unicode::ToCodePointList","sum":122752},{"parent":"MODULE_FUNC","rule":"Unicode::ToLower","sum":1193919},{"parent":"MODULE_FUNC","rule":"Unicode::ToTitle","sum":35194},{"parent":"MODULE_FUNC","rule":"Unicode::ToUint64","sum":447},{"parent":"MODULE_FUNC","rule":"Unicode::ToUpper","sum":111889},{"parent":"MODULE_FUNC","rule":"Unicode::Translit","sum":103239},{"parent":"MODULE_FUNC","rule":"Unicode::TryToUint64","sum":1938},{"parent":"MODULE_FUNC","rule":"Url::AsciiToLower","sum":1},{"parent":"MODULE_FUNC","rule":"Url::BuildQueryString","sum":26041},{"parent":"MODULE_FUNC","rule":"Url::CanBePunycodeHostName","sum":6519},{"parent":"MODULE_FUNC","rule":"Url::CutQueryStringAndFragment","sum":232483},{"parent":"MODULE_FUNC","rule":"Url::CutScheme","sum":1143458},{"parent":"MODULE_FUNC","rule":"Url::CutWWW","sum":867649},{"parent":"MODULE_FUNC","rule":"Url::CutWWW2","sum":740870},{"parent":"MODULE_FUNC","rule":"Url::Decode","sum":1694148},{"parent":"MODULE_FUNC","rule":"Url::Encode","sum":372537},{"parent":"MODULE_FUNC","rule":"Url::ForceHostNameToPunycode","sum":201392},{"parent":"MODULE_FUNC","rule":"Url::ForcePunycodeToHostName","sum":132566},{"parent":"MODULE_FUNC","rule":"Url::GEtPath","sum":5},{"parent":"MODULE_FUNC","rule":"Url::GetCGIParam","sum":1816638},{"parent":"MODULE_FUNC","rule":"Url::GetCgiParam","sum":7},{"parent":"MODULE_FUNC","rule":"Url::GetDomain","sum":1128500},{"parent":"MODULE_FUNC","rule":"Url::GetDomainLevel","sum":70869},{"parent":"MODULE_FUNC","rule":"Url::GetFragment","sum":491},{"parent":"MODULE_FUNC","rule":"Url::GetHost","sum":4064328},{"parent":"MODULE_FUNC","rule":"Url::GetHostPort","sum":197440},{"parent":"MODULE_FUNC","rule":"Url::GetOwner","sum":1402345},{"parent":"MODULE_FUNC","rule":"Url::GetPath","sum":1696043},{"parent":"MODULE_FUNC","rule":"Url::GetPort","sum":822090},{"parent":"MODULE_FUNC","rule":"Url::GetScheme","sum":2069232},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHost","sum":146095},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHostPort","sum":701539},{"parent":"MODULE_FUNC","rule":"Url::GetSignificantDomain","sum":459812},{"parent":"MODULE_FUNC","rule":"Url::GetTLD","sum":35530},{"parent":"MODULE_FUNC","rule":"Url::GetTail","sum":579230},{"parent":"MODULE_FUNC","rule":"Url::Getowner","sum":1},{"parent":"MODULE_FUNC","rule":"Url::HostNameToPunycode","sum":581560},{"parent":"MODULE_FUNC","rule":"Url::IsAllowedByRobotsTxt","sum":7},{"parent":"MODULE_FUNC","rule":"Url::IsKnownTLD","sum":21025},{"parent":"MODULE_FUNC","rule":"Url::IsWellKnownTLD","sum":4891},{"parent":"MODULE_FUNC","rule":"Url::Normalize","sum":1058335},{"parent":"MODULE_FUNC","rule":"Url::NormalizeWithDefaultHttpScheme","sum":627031},{"parent":"MODULE_FUNC","rule":"Url::Parse","sum":300344},{"parent":"MODULE_FUNC","rule":"Url::PunycodeToHostName","sum":203755},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToDict","sum":155530},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToList","sum":38784},{"parent":"MODULE_FUNC","rule":"Url::ReplaceAll","sum":8},{"parent":"MODULE_FUNC","rule":"YSON::Co","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToBool","sum":12},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDict","sum":13},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDouble","sum":4},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDoubleList","sum":10},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToInt64","sum":5},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToList","sum":37},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToString","sum":177},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToStringList","sum":174},{"parent":"MODULE_FUNC","rule":"YSON::From","sum":13},{"parent":"MODULE_FUNC","rule":"YSON::IsDict","sum":3},{"parent":"MODULE_FUNC","rule":"YSON::Lookup","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupDict","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupDouble","sum":6},{"parent":"MODULE_FUNC","rule":"YSON::LookupInt64","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupList","sum":4},{"parent":"MODULE_FUNC","rule":"YSON::LookupString","sum":7},{"parent":"MODULE_FUNC","rule":"YSON::Parse","sum":5},{"parent":"MODULE_FUNC","rule":"YSON::ToString","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::convertToString","sum":7},{"parent":"MODULE_FUNC","rule":"YSON::from","sum":1},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToDouble","sum":12},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToList","sum":3},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToString","sum":2},{"parent":"MODULE_FUNC","rule":"YSon::LookupString","sum":4},{"parent":"MODULE_FUNC","rule":"YSon::Parse","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::AsList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Attributes","sum":1871},{"parent":"MODULE_FUNC","rule":"Yson::COntains","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::COnvertToDouble","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::COnvertToString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::CastToStringList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Contains","sum":2963512},{"parent":"MODULE_FUNC","rule":"Yson::Conver","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConverTToInt64","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConverToDouble","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConverToInt64","sum":10},{"parent":"MODULE_FUNC","rule":"Yson::ConverToList","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::ConverToString","sum":12},{"parent":"MODULE_FUNC","rule":"Yson::ConvertFromString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTOInt64","sum":10},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTOList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTo","sum":8915300},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToAttributes","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBool","sum":8770158},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolDict","sum":105066},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolList","sum":7459},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolgDict","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBytes","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDate","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDateTime","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDict","sum":8518949},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDictList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDictOfDouble","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDictString","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDouble","sum":9561196},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleDict","sum":281239},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleList","sum":1207062},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToFloat","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToFloat64","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToINT64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToIn64","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt","sum":37},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt32","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt32List","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64","sum":20470188},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64Dict","sum":186638},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64List","sum":2409532},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToIntList","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInteget","sum":180},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToJson","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToList","sum":19055025},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToListDouble","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToListString","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToListg","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToSTring","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToSTringList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToSetring","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToString","sum":97084981},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringDict","sum":1453032},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringInt64","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringList","sum":24420655},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStrint","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStruct","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToText","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUINT64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUInt64","sum":1066},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUInt64List","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint32","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64","sum":8522752},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64Dict","sum":36344},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64List","sum":2194314},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUnit64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToevent_value","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToint64","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTolIST","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTolist","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTostring","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoBool","sum":6},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoInt64","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoList","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoString","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::Converttostring","sum":28},{"parent":"MODULE_FUNC","rule":"Yson::ConvvertToString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Dict","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::Equals","sum":799601},{"parent":"MODULE_FUNC","rule":"Yson::Extract","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FROM","sum":8},{"parent":"MODULE_FUNC","rule":"Yson::Find","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::From","sum":25307118},{"parent":"MODULE_FUNC","rule":"Yson::From64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromAGG_LIST","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromASDFDSKLDJF","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromAboba","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::FromBinary","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromBytes","sum":17},{"parent":"MODULE_FUNC","rule":"Yson::FromDict","sum":3075},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble","sum":2768},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble64Dict","sum":3663},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleDict","sum":42557},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleList","sum":981},{"parent":"MODULE_FUNC","rule":"Yson::FromInt32","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64Dict","sum":2134},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64List","sum":7437},{"parent":"MODULE_FUNC","rule":"Yson::FromJson","sum":2196},{"parent":"MODULE_FUNC","rule":"Yson::FromKek","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::FromList","sum":4896},{"parent":"MODULE_FUNC","rule":"Yson::FromListTake","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromMap","sum":356},{"parent":"MODULE_FUNC","rule":"Yson::FromMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromSHEEEEEEEEEEEEE","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::FromSHIIIIIIIIIII","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromSeconds","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::FromSring","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::FromSting","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromString","sum":56310},{"parent":"MODULE_FUNC","rule":"Yson::FromStringDict","sum":69847},{"parent":"MODULE_FUNC","rule":"Yson::FromStringList","sum":58827},{"parent":"MODULE_FUNC","rule":"Yson::FromStruct","sum":658126},{"parent":"MODULE_FUNC","rule":"Yson::FromUi64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromUin64List","sum":378},{"parent":"MODULE_FUNC","rule":"Yson::FromUint32Dict","sum":10236},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64Dict","sum":15964},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64List","sum":25824},{"parent":"MODULE_FUNC","rule":"Yson::FromY2020MachoDachaTbIhaHouse","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Fromt","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::Get","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::GetBool","sum":43},{"parent":"MODULE_FUNC","rule":"Yson::GetHash","sum":867376},{"parent":"MODULE_FUNC","rule":"Yson::GetLength","sum":2821320},{"parent":"MODULE_FUNC","rule":"Yson::ISDict","sum":6},{"parent":"MODULE_FUNC","rule":"Yson::ISList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::IsBool","sum":33609},{"parent":"MODULE_FUNC","rule":"Yson::IsDict","sum":254643},{"parent":"MODULE_FUNC","rule":"Yson::IsDouble","sum":101289},{"parent":"MODULE_FUNC","rule":"Yson::IsEntity","sum":2672410},{"parent":"MODULE_FUNC","rule":"Yson::IsInt64","sum":288474},{"parent":"MODULE_FUNC","rule":"Yson::IsList","sum":287576},{"parent":"MODULE_FUNC","rule":"Yson::IsString","sum":1032724},{"parent":"MODULE_FUNC","rule":"Yson::IsUint64","sum":153100},{"parent":"MODULE_FUNC","rule":"Yson::ListMap","sum":12},{"parent":"MODULE_FUNC","rule":"Yson::Lo","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Loo","sum":10},{"parent":"MODULE_FUNC","rule":"Yson::LookUp","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::LookUpDict","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookUpInt64","sum":11},{"parent":"MODULE_FUNC","rule":"Yson::LookUpString","sum":8},{"parent":"MODULE_FUNC","rule":"Yson::Lookup","sum":6599827},{"parent":"MODULE_FUNC","rule":"Yson::LookupBool","sum":2154016},{"parent":"MODULE_FUNC","rule":"Yson::LookupDict","sum":403310},{"parent":"MODULE_FUNC","rule":"Yson::LookupDouble","sum":3064290},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt32","sum":91},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt64","sum":5509623},{"parent":"MODULE_FUNC","rule":"Yson::LookupInteger","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupList","sum":1625649},{"parent":"MODULE_FUNC","rule":"Yson::LookupSTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupString","sum":41534098},{"parent":"MODULE_FUNC","rule":"Yson::LookupStringList","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::LookupStruct","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::LookupTimestamp","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupUInt64","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::LookupUint64","sum":3806322},{"parent":"MODULE_FUNC","rule":"Yson::LookupsTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LoopUpString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Options","sum":9261343},{"parent":"MODULE_FUNC","rule":"Yson::Parse","sum":8676471},{"parent":"MODULE_FUNC","rule":"Yson::ParseJSON","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ParseJson","sum":12624816},{"parent":"MODULE_FUNC","rule":"Yson::ParseJsonDecodeUtf8","sum":133168},{"parent":"MODULE_FUNC","rule":"Yson::Parsejson","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::Path","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::Serialize","sum":3883724},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJSON","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJson","sum":9897316},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJsonEncodeUtf8","sum":202661},{"parent":"MODULE_FUNC","rule":"Yson::SerializePretty","sum":1189975},{"parent":"MODULE_FUNC","rule":"Yson::SerializeText","sum":615049},{"parent":"MODULE_FUNC","rule":"Yson::TryGet","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::WithAttributes","sum":660},{"parent":"MODULE_FUNC","rule":"Yson::YPath","sum":12652442},{"parent":"MODULE_FUNC","rule":"Yson::YPathBool","sum":1182739},{"parent":"MODULE_FUNC","rule":"Yson::YPathBoolean","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::YPathDict","sum":25919},{"parent":"MODULE_FUNC","rule":"Yson::YPathDouble","sum":1360827},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt16","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt64","sum":2746595},{"parent":"MODULE_FUNC","rule":"Yson::YPathList","sum":1429308},{"parent":"MODULE_FUNC","rule":"Yson::YPathListString","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::YPathString","sum":13653535},{"parent":"MODULE_FUNC","rule":"Yson::YPathUInt64","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::YPathUint64","sum":709028},{"parent":"MODULE_FUNC","rule":"Yson::YaPathString","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::Ypath","sum":53},{"parent":"MODULE_FUNC","rule":"Yson::YpathString","sum":15},{"parent":"MODULE_FUNC","rule":"Yson::Yson2","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToDict","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToString","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::convertToUint64","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::convertToUint64List","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::converttostring","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::from","sum":52},{"parent":"MODULE_FUNC","rule":"Yson::fromJson","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::lookupString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::parseJson","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ypathstring","sum":11},{"parent":"MODULE_FUNC","rule":"dateTime::Format","sum":3},{"parent":"MODULE_FUNC","rule":"dateTime::GetMonth","sum":6},{"parent":"MODULE_FUNC","rule":"dateTime::IntervalFromDays","sum":375},{"parent":"MODULE_FUNC","rule":"dateTime::IntervalFromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"dateTime::MakeDate","sum":89},{"parent":"MODULE_FUNC","rule":"dateTime::MakeDatetime","sum":7},{"parent":"MODULE_FUNC","rule":"dateTime::StartOfMonth","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::Format","sum":5},{"parent":"MODULE_FUNC","rule":"datetime::FromMilliseconds","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::FromSeconds","sum":3696},{"parent":"MODULE_FUNC","rule":"datetime::GetDayOfWeek","sum":4},{"parent":"MODULE_FUNC","rule":"datetime::GetDayOfWeekName","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::GetHour","sum":8},{"parent":"MODULE_FUNC","rule":"datetime::GetMonth","sum":14},{"parent":"MODULE_FUNC","rule":"datetime::GetWeekOfYear","sum":106},{"parent":"MODULE_FUNC","rule":"datetime::GetYear","sum":115},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromDays","sum":1335},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromHours","sum":37},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromMinutes","sum":6},{"parent":"MODULE_FUNC","rule":"datetime::MakeDate","sum":5364},{"parent":"MODULE_FUNC","rule":"datetime::MakeDatetime","sum":664},{"parent":"MODULE_FUNC","rule":"datetime::MakeTimestamp","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::Parse","sum":397},{"parent":"MODULE_FUNC","rule":"datetime::ParseIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::ShiftMonths","sum":314},{"parent":"MODULE_FUNC","rule":"datetime::StartOf","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::StartOfDay","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::StartOfMonth","sum":529},{"parent":"MODULE_FUNC","rule":"datetime::StartOfWeek","sum":533},{"parent":"MODULE_FUNC","rule":"datetime::ToDays","sum":374},{"parent":"MODULE_FUNC","rule":"datetime::ToSeconds","sum":740},{"parent":"MODULE_FUNC","rule":"datetime::fromseconds","sum":4},{"parent":"MODULE_FUNC","rule":"digest::Md5HalfMix","sum":14},{"parent":"MODULE_FUNC","rule":"digest::city_hash","sum":1},{"parent":"MODULE_FUNC","rule":"json::ConvertToString","sum":7},{"parent":"MODULE_FUNC","rule":"json::From","sum":1},{"parent":"MODULE_FUNC","rule":"math::Floor","sum":1},{"parent":"MODULE_FUNC","rule":"math::Round","sum":4},{"parent":"MODULE_FUNC","rule":"math::floor","sum":2},{"parent":"MODULE_FUNC","rule":"math::log","sum":2},{"parent":"MODULE_FUNC","rule":"math::pow","sum":6},{"parent":"MODULE_FUNC","rule":"math::round","sum":163},{"parent":"MODULE_FUNC","rule":"pg::GENERATE_SERIES","sum":8},{"parent":"MODULE_FUNC","rule":"pg::SPLIT_PART","sum":2},{"parent":"MODULE_FUNC","rule":"pg::age","sum":761},{"parent":"MODULE_FUNC","rule":"pg::array_agg","sum":2},{"parent":"MODULE_FUNC","rule":"pg::date_part","sum":740},{"parent":"MODULE_FUNC","rule":"pg::extract","sum":285},{"parent":"MODULE_FUNC","rule":"pg::generate_series","sum":2},{"parent":"MODULE_FUNC","rule":"pg::st_asgeojson","sum":2},{"parent":"MODULE_FUNC","rule":"pg::st_astext","sum":4},{"parent":"MODULE_FUNC","rule":"pg::st_geomfromewkb","sum":14},{"parent":"MODULE_FUNC","rule":"pg::st_transform","sum":9},{"parent":"MODULE_FUNC","rule":"pg::string_agg","sum":15},{"parent":"MODULE_FUNC","rule":"pire::Capture","sum":7},{"parent":"MODULE_FUNC","rule":"pire::Match","sum":29},{"parent":"MODULE_FUNC","rule":"re2::Capture","sum":2789},{"parent":"MODULE_FUNC","rule":"re2::Grep","sum":1},{"parent":"MODULE_FUNC","rule":"re2::Match","sum":24},{"parent":"MODULE_FUNC","rule":"re2::Replace","sum":430},{"parent":"MODULE_FUNC","rule":"re2::capture","sum":8},{"parent":"MODULE_FUNC","rule":"string::AsciiToLower","sum":6},{"parent":"MODULE_FUNC","rule":"string::HexDecode","sum":2},{"parent":"MODULE_FUNC","rule":"string::HexEncode","sum":2},{"parent":"MODULE_FUNC","rule":"string::HexText","sum":1},{"parent":"MODULE_FUNC","rule":"string::JoinFromList","sum":8},{"parent":"MODULE_FUNC","rule":"string::ReplaceFirst","sum":14},{"parent":"MODULE_FUNC","rule":"string::Reverse","sum":4},{"parent":"MODULE_FUNC","rule":"string::SplitToList","sum":14},{"parent":"MODULE_FUNC","rule":"string::StartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"string::contains","sum":4},{"parent":"MODULE_FUNC","rule":"string::joinfromlist","sum":17},{"parent":"MODULE_FUNC","rule":"string::removeall","sum":4},{"parent":"MODULE_FUNC","rule":"string::replaceall","sum":11},{"parent":"MODULE_FUNC","rule":"string::splittolist","sum":13},{"parent":"MODULE_FUNC","rule":"string::strip","sum":2},{"parent":"MODULE_FUNC","rule":"url::Decode","sum":1},{"parent":"MODULE_FUNC","rule":"url::Encode","sum":2},{"parent":"MODULE_FUNC","rule":"url::decode","sum":2},{"parent":"MODULE_FUNC","rule":"url::gethost","sum":1},{"parent":"MODULE_FUNC","rule":"ySoN::CoNveRtTo","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToDict","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToDouble","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"yson::ConvertToString","sum":7},{"parent":"MODULE_FUNC","rule":"yson::ConvertToStringList","sum":2},{"parent":"MODULE_FUNC","rule":"yson::From","sum":1},{"parent":"MODULE_FUNC","rule":"yson::LookupString","sum":1},{"parent":"MODULE_FUNC","rule":"yson::PARSE","sum":2},{"parent":"MODULE_FUNC","rule":"yson::SerializeJson","sum":1},{"parent":"MODULE_FUNC","rule":"yson::convertto","sum":2},{"parent":"MODULE_FUNC","rule":"yson::converttodoubledict","sum":8},{"parent":"MODULE_FUNC","rule":"yson::converttolist","sum":1},{"parent":"MODULE_FUNC","rule":"yson::converttostring","sum":7},{"parent":"MODULE_FUNC","rule":"yson::converttostringdict","sum":8},{"parent":"MODULE_FUNC","rule":"yson::from","sum":6},{"parent":"MODULE_FUNC","rule":"yson::options","sum":8},{"parent":"MODULE_FUNC","rule":"yson::parsejson","sum":16},{"parent":"PRAGMA","rule":"AllowDotInAlias","sum":259035},{"parent":"PRAGMA","rule":"AllowUnnamedColumns","sum":4},{"parent":"PRAGMA","rule":"AnsiCurrentRow","sum":985},{"parent":"PRAGMA","rule":"AnsiImplicitCrossJoin","sum":13350},{"parent":"PRAGMA","rule":"AnsiInFOREmptyORNullableItemsCollections","sum":53},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNULLableItemsCollectiONs","sum":176},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNULLableItemsCollections","sum":4097},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNullableItemsCollections","sum":39739891},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrnullableItemsCollections","sum":248},{"parent":"PRAGMA","rule":"AnsiInForEmptyorNullableItemsCollections","sum":2125},{"parent":"PRAGMA","rule":"AnsiInForEmptyornullableItemsCollections","sum":1277},{"parent":"PRAGMA","rule":"AnsiInforEmptyOrNullableItemsCollections","sum":248},{"parent":"PRAGMA","rule":"AnsiOptionalAS","sum":4},{"parent":"PRAGMA","rule":"AnsiOptionalAs","sum":2180509},{"parent":"PRAGMA","rule":"AnsiOptionalas","sum":342},{"parent":"PRAGMA","rule":"AnsiOrderByLimitInUnionAll","sum":210567},{"parent":"PRAGMA","rule":"AnsiRankForNullableKeys","sum":224226},{"parent":"PRAGMA","rule":"AnsiinForEmptyOrNullableItemsCollections","sum":8649},{"parent":"PRAGMA","rule":"AnsiinForEmptyOrNullableitemsCollections","sum":16},{"parent":"PRAGMA","rule":"AutoCommit","sum":39271},{"parent":"PRAGMA","rule":"BlockEngine","sum":358233},{"parent":"PRAGMA","rule":"BogousStarInGroupByOverJoin","sum":2},{"parent":"PRAGMA","rule":"CLassicDivision","sum":9},{"parent":"PRAGMA","rule":"CheckedOps","sum":665},{"parent":"PRAGMA","rule":"ClASsicDivision","sum":670},{"parent":"PRAGMA","rule":"ClassicDIvision","sum":44},{"parent":"PRAGMA","rule":"ClassicDivisiON","sum":149},{"parent":"PRAGMA","rule":"ClassicDivision","sum":2573720},{"parent":"PRAGMA","rule":"Classicdivision","sum":6},{"parent":"PRAGMA","rule":"CoalesceJoinKeysOnQualifiedAll","sum":36},{"parent":"PRAGMA","rule":"CompactGroupBy","sum":19},{"parent":"PRAGMA","rule":"CompactNamedExprs","sum":2499},{"parent":"PRAGMA","rule":"CostBasedOptimizer","sum":14619},{"parent":"PRAGMA","rule":"DQ.ANALYZEQUERY","sum":1634},{"parent":"PRAGMA","rule":"DQEngine","sum":3},{"parent":"PRAGMA","rule":"DirectRead","sum":48},{"parent":"PRAGMA","rule":"DisableAnsiInForEmptyOrNullableItemsCollections","sum":234070},{"parent":"PRAGMA","rule":"DisableAnsiLike","sum":1},{"parent":"PRAGMA","rule":"DisableAnsiRankForNullableKeys","sum":38042},{"parent":"PRAGMA","rule":"DisableCoalesceJoinKeysOnQualifiedAll","sum":197985},{"parent":"PRAGMA","rule":"DisableCompactNamedExprs","sum":12},{"parent":"PRAGMA","rule":"DisableOrderedColumns","sum":540},{"parent":"PRAGMA","rule":"DisablePullUpFlatMapOverJoin","sum":2},{"parent":"PRAGMA","rule":"DisableSeqMode","sum":1},{"parent":"PRAGMA","rule":"DisableSimpleColumns","sum":401855},{"parent":"PRAGMA","rule":"DisableStrictJoinKeyTypes","sum":421},{"parent":"PRAGMA","rule":"DisableUnicodeLiterals","sum":34},{"parent":"PRAGMA","rule":"DisableUnordered","sum":856},{"parent":"PRAGMA","rule":"DistinctOverWindow","sum":10},{"parent":"PRAGMA","rule":"Dq.HashJoinMode","sum":6},{"parent":"PRAGMA","rule":"Dq.MaxTasksPerStage","sum":5},{"parent":"PRAGMA","rule":"Dq.SplitStageOnDqReplicate","sum":4},{"parent":"PRAGMA","rule":"Dq.UseBlockReader","sum":2},{"parent":"PRAGMA","rule":"DqEngine","sum":10773711},{"parent":"PRAGMA","rule":"Dqengine","sum":2},{"parent":"PRAGMA","rule":"EmitAggApply","sum":1},{"parent":"PRAGMA","rule":"EmitUnionMerge","sum":7},{"parent":"PRAGMA","rule":"EnableSystemColumns","sum":3},{"parent":"PRAGMA","rule":"FILE","sum":291436},{"parent":"PRAGMA","rule":"FeatureR010","sum":224},{"parent":"PRAGMA","rule":"File","sum":7432399},{"parent":"PRAGMA","rule":"FileOption","sum":15918},{"parent":"PRAGMA","rule":"FilterPushdownOverJoinOptionalSide","sum":6},{"parent":"PRAGMA","rule":"FlexibleTypes","sum":957},{"parent":"PRAGMA","rule":"Folder","sum":3764},{"parent":"PRAGMA","rule":"Greetings","sum":1497},{"parent":"PRAGMA","rule":"GroupByCubeLimit","sum":39630},{"parent":"PRAGMA","rule":"GroupByLimit","sum":151774},{"parent":"PRAGMA","rule":"JsonQueryReturnsJsonDocument","sum":301455},{"parent":"PRAGMA","rule":"LIBRARY","sum":252338},{"parent":"PRAGMA","rule":"LIbrary","sum":52},{"parent":"PRAGMA","rule":"Library","sum":15124200},{"parent":"PRAGMA","rule":"OrderedColumns","sum":6024265},{"parent":"PRAGMA","rule":"Orderedcolumns","sum":12},{"parent":"PRAGMA","rule":"OverrideLibrary","sum":182},{"parent":"PRAGMA","rule":"Package","sum":5},{"parent":"PRAGMA","rule":"PositionalUnionAll","sum":120676},{"parent":"PRAGMA","rule":"PqReadBy","sum":42},{"parent":"PRAGMA","rule":"REGEXUSERE2","sum":13432},{"parent":"PRAGMA","rule":"RefSelect","sum":441721},{"parent":"PRAGMA","rule":"RegExUseRe2","sum":26},{"parent":"PRAGMA","rule":"RegexUseRe2","sum":312053},{"parent":"PRAGMA","rule":"ResultRowsLimit","sum":3},{"parent":"PRAGMA","rule":"SampleSelect","sum":11},{"parent":"PRAGMA","rule":"SeqMode","sum":4},{"parent":"PRAGMA","rule":"SimpleColumns","sum":6957960},{"parent":"PRAGMA","rule":"Simplecolumns","sum":3},{"parent":"PRAGMA","rule":"StrictJoinKeyTypes","sum":77615},{"parent":"PRAGMA","rule":"TablePathPrefix","sum":5615617},{"parent":"PRAGMA","rule":"UDF","sum":2180491},{"parent":"PRAGMA","rule":"Udf","sum":1948075},{"parent":"PRAGMA","rule":"UnicodeLiterals","sum":98},{"parent":"PRAGMA","rule":"UnorderedSubqueries","sum":2},{"parent":"PRAGMA","rule":"UseBlocks","sum":57},{"parent":"PRAGMA","rule":"UseTablePrefixForEach","sum":52},{"parent":"PRAGMA","rule":"WARNING","sum":35},{"parent":"PRAGMA","rule":"WarnUnnamedColumns","sum":26263},{"parent":"PRAGMA","rule":"Warning","sum":2957753},{"parent":"PRAGMA","rule":"WarningMsg","sum":12965},{"parent":"PRAGMA","rule":"YSON.AutoConvert","sum":828},{"parent":"PRAGMA","rule":"YSON.DisableStrict","sum":44960},{"parent":"PRAGMA","rule":"YSON.Strict","sum":732},{"parent":"PRAGMA","rule":"YT.Auth","sum":68},{"parent":"PRAGMA","rule":"YT.DefaultOperationWeight","sum":248353},{"parent":"PRAGMA","rule":"YT.InferSchema","sum":17747},{"parent":"PRAGMA","rule":"YT.POOL","sum":275},{"parent":"PRAGMA","rule":"YT.Pool","sum":85113},{"parent":"PRAGMA","rule":"YT.StaticPool","sum":6},{"parent":"PRAGMA","rule":"YT.TableContentDeliveryMode","sum":1653},{"parent":"PRAGMA","rule":"YT.UseNativeYTTypes","sum":2},{"parent":"PRAGMA","rule":"YT.UseNativeYTtypes","sum":3},{"parent":"PRAGMA","rule":"YT.pOOL","sum":4},{"parent":"PRAGMA","rule":"YT.pool","sum":18756},{"parent":"PRAGMA","rule":"YsON.Disablestrict","sum":141},{"parent":"PRAGMA","rule":"Yson.AutoConvert","sum":41963},{"parent":"PRAGMA","rule":"Yson.DIsableStrict","sum":15459},{"parent":"PRAGMA","rule":"Yson.DisableStrict","sum":481506},{"parent":"PRAGMA","rule":"Yson.Strict","sum":6808},{"parent":"PRAGMA","rule":"Yson.disablestrict","sum":29},{"parent":"PRAGMA","rule":"Yt.Auth","sum":33},{"parent":"PRAGMA","rule":"Yt.Description","sum":4},{"parent":"PRAGMA","rule":"Yt.ExternalTx","sum":24791},{"parent":"PRAGMA","rule":"Yt.HybridDqExecution","sum":9},{"parent":"PRAGMA","rule":"Yt.InferSchema","sum":2770},{"parent":"PRAGMA","rule":"Yt.MaxRowWeight","sum":980},{"parent":"PRAGMA","rule":"Yt.ParallelOperationsLimit","sum":12},{"parent":"PRAGMA","rule":"Yt.Pool","sum":253071},{"parent":"PRAGMA","rule":"Yt.PoolTrees","sum":1},{"parent":"PRAGMA","rule":"Yt.StaticPool","sum":10319},{"parent":"PRAGMA","rule":"Yt.TmpFolder","sum":4},{"parent":"PRAGMA","rule":"Yt.UseNativeYtTypes","sum":2870},{"parent":"PRAGMA","rule":"Yt.pool","sum":83523},{"parent":"PRAGMA","rule":"ansiInForEmptyOrNullableItemsCollections","sum":118},{"parent":"PRAGMA","rule":"ansiimplicitcrossjoin","sum":2},{"parent":"PRAGMA","rule":"ansiinforemptyornullableitemscollections","sum":12},{"parent":"PRAGMA","rule":"ansioptionalas","sum":98},{"parent":"PRAGMA","rule":"autocommit","sum":134527},{"parent":"PRAGMA","rule":"classicDivision","sum":18},{"parent":"PRAGMA","rule":"classic_division","sum":11},{"parent":"PRAGMA","rule":"classicdivision","sum":82},{"parent":"PRAGMA","rule":"config.flags","sum":1294895},{"parent":"PRAGMA","rule":"direct_read","sum":2},{"parent":"PRAGMA","rule":"directread","sum":2},{"parent":"PRAGMA","rule":"disableSimpleColumns","sum":8},{"parent":"PRAGMA","rule":"disablesimplecolumns","sum":6},{"parent":"PRAGMA","rule":"dq.AnalyticsHopping","sum":4},{"parent":"PRAGMA","rule":"dq.AnalyzeQuery","sum":3055509},{"parent":"PRAGMA","rule":"dq.ENABLEDQREPLICATE","sum":1},{"parent":"PRAGMA","rule":"dq.EnableComputeActor","sum":1},{"parent":"PRAGMA","rule":"dq.EnableDqReplicate","sum":925662},{"parent":"PRAGMA","rule":"dq.EnableDqreplicate","sum":3},{"parent":"PRAGMA","rule":"dq.EnableFullResultWrite","sum":28633},{"parent":"PRAGMA","rule":"dq.EnableInsert","sum":88265},{"parent":"PRAGMA","rule":"dq.FallbackPolicy","sum":3},{"parent":"PRAGMA","rule":"dq.HashJoinMode","sum":6356},{"parent":"PRAGMA","rule":"dq.HashShuffleMaxTasks","sum":7},{"parent":"PRAGMA","rule":"dq.HashShuffleTasksRatio","sum":7},{"parent":"PRAGMA","rule":"dq.MaxDataSizePerJob","sum":11},{"parent":"PRAGMA","rule":"dq.MaxDataSizePerQuery","sum":2},{"parent":"PRAGMA","rule":"dq.MaxRetries","sum":1132},{"parent":"PRAGMA","rule":"dq.MaxTasksPerOperation","sum":22497},{"parent":"PRAGMA","rule":"dq.MaxTasksPerStage","sum":60716},{"parent":"PRAGMA","rule":"dq.MemoryLimit","sum":8204},{"parent":"PRAGMA","rule":"dq.OptLLVM","sum":11},{"parent":"PRAGMA","rule":"dq.SplitStageOnDqReplicate","sum":11038},{"parent":"PRAGMA","rule":"dq.UseBlockReader","sum":4185},{"parent":"PRAGMA","rule":"dq.UseFastPickleTransport","sum":3},{"parent":"PRAGMA","rule":"dq.UseFinalizeByKey","sum":10},{"parent":"PRAGMA","rule":"dq.UseOOBTransport","sum":9},{"parent":"PRAGMA","rule":"dq.UseWideBlockChannels","sum":2},{"parent":"PRAGMA","rule":"dq.UseWideChannels","sum":1},{"parent":"PRAGMA","rule":"dq.WorkerFilter","sum":107},{"parent":"PRAGMA","rule":"dq.enableDqReplicate","sum":348},{"parent":"PRAGMA","rule":"dq.enabledqreplicate","sum":40},{"parent":"PRAGMA","rule":"dqEngine","sum":91502},{"parent":"PRAGMA","rule":"dqengine","sum":21283},{"parent":"PRAGMA","rule":"file","sum":1817381},{"parent":"PRAGMA","rule":"folder","sum":674},{"parent":"PRAGMA","rule":"greetings","sum":1},{"parent":"PRAGMA","rule":"library","sum":4875262},{"parent":"PRAGMA","rule":"orderedColumns","sum":7},{"parent":"PRAGMA","rule":"orderedcolumns","sum":15135},{"parent":"PRAGMA","rule":"override_library","sum":32},{"parent":"PRAGMA","rule":"package","sum":231528},{"parent":"PRAGMA","rule":"refselect","sum":31760},{"parent":"PRAGMA","rule":"rtmr.Account","sum":4},{"parent":"PRAGMA","rule":"rtmr.TaskName","sum":12},{"parent":"PRAGMA","rule":"rtmr.YfInstanceCount","sum":8},{"parent":"PRAGMA","rule":"rtmr.YfSlotCount","sum":8},{"parent":"PRAGMA","rule":"rtmr.yfPool","sum":1},{"parent":"PRAGMA","rule":"sampleselect","sum":177},{"parent":"PRAGMA","rule":"simpleColumns","sum":1454},{"parent":"PRAGMA","rule":"simplecolumns","sum":241976},{"parent":"PRAGMA","rule":"tablepathprefix","sum":2},{"parent":"PRAGMA","rule":"udf","sum":4351587},{"parent":"PRAGMA","rule":"warning","sum":66266},{"parent":"PRAGMA","rule":"yson.AutoConvert","sum":4745561},{"parent":"PRAGMA","rule":"yson.Auto_convert","sum":18},{"parent":"PRAGMA","rule":"yson.Autoconvert","sum":1152},{"parent":"PRAGMA","rule":"yson.DisableStrict","sum":20131677},{"parent":"PRAGMA","rule":"yson.Disablestrict","sum":46},{"parent":"PRAGMA","rule":"yson.Fast","sum":654},{"parent":"PRAGMA","rule":"yson.Strict","sum":3508636},{"parent":"PRAGMA","rule":"yson.autoConvert","sum":4},{"parent":"PRAGMA","rule":"yson.autoconvert","sum":3813},{"parent":"PRAGMA","rule":"yson.disableStrict","sum":2237},{"parent":"PRAGMA","rule":"yson.disable_strict","sum":3},{"parent":"PRAGMA","rule":"yson.disablestrict","sum":210592},{"parent":"PRAGMA","rule":"yson.strict","sum":710},{"parent":"PRAGMA","rule":"yt.AUth","sum":4},{"parent":"PRAGMA","rule":"yt.Annotations","sum":47106441},{"parent":"PRAGMA","rule":"yt.Auth","sum":1292526},{"parent":"PRAGMA","rule":"yt.AutoMerge","sum":4457647},{"parent":"PRAGMA","rule":"yt.Automerge","sum":2765},{"parent":"PRAGMA","rule":"yt.BatchListFolderConcurrency","sum":147},{"parent":"PRAGMA","rule":"yt.BinaryExpirationInterval","sum":6313281},{"parent":"PRAGMA","rule":"yt.BinaryTmpFolder","sum":6340972},{"parent":"PRAGMA","rule":"yt.BlockMapJoin","sum":1},{"parent":"PRAGMA","rule":"yt.BlockReaderSupportedDataTypes","sum":6},{"parent":"PRAGMA","rule":"yt.BlockReaderSupportedTypes","sum":1},{"parent":"PRAGMA","rule":"yt.ColumnGroupMode","sum":452760},{"parent":"PRAGMA","rule":"yt.CombineCoreLimit","sum":77254},{"parent":"PRAGMA","rule":"yt.CommonJoinCoreLimit","sum":1892},{"parent":"PRAGMA","rule":"yt.CoreDumpPath","sum":2},{"parent":"PRAGMA","rule":"yt.DQRPCReaderInflight","sum":140},{"parent":"PRAGMA","rule":"yt.DQRPCReaderTimeout","sum":7},{"parent":"PRAGMA","rule":"yt.DatASizePerJob","sum":2166},{"parent":"PRAGMA","rule":"yt.DatASizePerPartition","sum":744},{"parent":"PRAGMA","rule":"yt.DataSizePerJob","sum":5235784},{"parent":"PRAGMA","rule":"yt.DataSizePerMapJob","sum":317581},{"parent":"PRAGMA","rule":"yt.DataSizePerPartition","sum":520584},{"parent":"PRAGMA","rule":"yt.DataSizePerSortJob","sum":201823},{"parent":"PRAGMA","rule":"yt.DatasizePerJob","sum":16},{"parent":"PRAGMA","rule":"yt.DatasizePerSortJob","sum":16},{"parent":"PRAGMA","rule":"yt.DefaultCalcMemoryLimit","sum":258964},{"parent":"PRAGMA","rule":"yt.DefaultCluster","sum":71882463},{"parent":"PRAGMA","rule":"yt.DefaultLocalityTimeout","sum":4123},{"parent":"PRAGMA","rule":"yt.DefaultMapSelectivityFactor","sum":3},{"parent":"PRAGMA","rule":"yt.DefaultMaxJobFails","sum":1544458},{"parent":"PRAGMA","rule":"yt.DefaultMemORyLimit","sum":7},{"parent":"PRAGMA","rule":"yt.DefaultMemoryLimit","sum":2068340},{"parent":"PRAGMA","rule":"yt.DefaultMemoryReserveFactor","sum":25257},{"parent":"PRAGMA","rule":"yt.DefaultOperationWeight","sum":9832401},{"parent":"PRAGMA","rule":"yt.Description","sum":238813},{"parent":"PRAGMA","rule":"yt.DisableFuseOperations","sum":2},{"parent":"PRAGMA","rule":"yt.DisableJobSplitting","sum":4886},{"parent":"PRAGMA","rule":"yt.DisableOptimizers","sum":30964},{"parent":"PRAGMA","rule":"yt.EnableDynamicStoreReadInDQ","sum":1},{"parent":"PRAGMA","rule":"yt.ErasureCodecCpu","sum":149921},{"parent":"PRAGMA","rule":"yt.EvaluationTableSizeLimit","sum":817366},{"parent":"PRAGMA","rule":"yt.ExpirationDeadline","sum":3467779},{"parent":"PRAGMA","rule":"yt.ExpirationInterval","sum":8245641},{"parent":"PRAGMA","rule":"yt.ExtendedStatsMaxChunkCount","sum":4},{"parent":"PRAGMA","rule":"yt.ExternalTx","sum":80798903},{"parent":"PRAGMA","rule":"yt.ExtraTmpfsSize","sum":95},{"parent":"PRAGMA","rule":"yt.FileCacheTtl","sum":8505324},{"parent":"PRAGMA","rule":"yt.FolderInlineDataLimit","sum":40},{"parent":"PRAGMA","rule":"yt.FolderInlineItemsLimit","sum":2},{"parent":"PRAGMA","rule":"yt.ForceInferSchema","sum":794278},{"parent":"PRAGMA","rule":"yt.ForceJobSizeAdjuster","sum":10247},{"parent":"PRAGMA","rule":"yt.GeobaseDownloadUrl","sum":62837},{"parent":"PRAGMA","rule":"yt.HybridDqDataSizeLimitForOrdered","sum":318548},{"parent":"PRAGMA","rule":"yt.HybridDqDataSizeLimitForUnordered","sum":321622},{"parent":"PRAGMA","rule":"yt.HybridDqExecution","sum":3739576},{"parent":"PRAGMA","rule":"yt.HybridDqExecutionFallback","sum":108},{"parent":"PRAGMA","rule":"yt.INFERSCHEMA","sum":1},{"parent":"PRAGMA","rule":"yt.INferSchema","sum":6},{"parent":"PRAGMA","rule":"yt.IgnoreTypeV3","sum":4579},{"parent":"PRAGMA","rule":"yt.IgnoreWeakSchema","sum":230394},{"parent":"PRAGMA","rule":"yt.IgnoreYamrDsv","sum":22561},{"parent":"PRAGMA","rule":"yt.InferSchemA","sum":11},{"parent":"PRAGMA","rule":"yt.InferSchema","sum":32267438},{"parent":"PRAGMA","rule":"yt.InferSchemaTableCountThreshold","sum":1},{"parent":"PRAGMA","rule":"yt.Inferschema","sum":86524},{"parent":"PRAGMA","rule":"yt.IntermediateAccount","sum":133764},{"parent":"PRAGMA","rule":"yt.IntermediateDataMedium","sum":305807},{"parent":"PRAGMA","rule":"yt.IntermediateReplicationFactor","sum":2986},{"parent":"PRAGMA","rule":"yt.JavascriptCpu","sum":42},{"parent":"PRAGMA","rule":"yt.JobBlockInput","sum":27},{"parent":"PRAGMA","rule":"yt.JobBlockOutput","sum":12},{"parent":"PRAGMA","rule":"yt.JobEnv","sum":13907},{"parent":"PRAGMA","rule":"yt.JoinAllowColumnRenames","sum":452},{"parent":"PRAGMA","rule":"yt.JoinCollectColumnarStatistics","sum":20280},{"parent":"PRAGMA","rule":"yt.JoinColumnarStatisticsFetcherMode","sum":594},{"parent":"PRAGMA","rule":"yt.JoinEnableStarJoin","sum":42050},{"parent":"PRAGMA","rule":"yt.JoinMergeForce","sum":52982},{"parent":"PRAGMA","rule":"yt.JoinMergeReduceJobMaxSize","sum":2703},{"parent":"PRAGMA","rule":"yt.JoinMergeTablesLimit","sum":3945},{"parent":"PRAGMA","rule":"yt.JoinMergeUnsortedFactor","sum":1625},{"parent":"PRAGMA","rule":"yt.JoinMergeUseSmallAsPrimary","sum":6020},{"parent":"PRAGMA","rule":"yt.JoinUseColumnarStatistics","sum":958},{"parent":"PRAGMA","rule":"yt.JoinWaitAllInputs","sum":16},{"parent":"PRAGMA","rule":"yt.KeepTempTables","sum":944},{"parent":"PRAGMA","rule":"yt.LayerPaths","sum":159569},{"parent":"PRAGMA","rule":"yt.LookupJoinLimit","sum":230902},{"parent":"PRAGMA","rule":"yt.LookupJoinMaxRows","sum":179815},{"parent":"PRAGMA","rule":"yt.MAXRowWeight","sum":66},{"parent":"PRAGMA","rule":"yt.MAxJobCount","sum":64},{"parent":"PRAGMA","rule":"yt.MAxRowWeight","sum":1},{"parent":"PRAGMA","rule":"yt.MapJOINLimit","sum":733},{"parent":"PRAGMA","rule":"yt.MapJoinLimit","sum":700922},{"parent":"PRAGMA","rule":"yt.MapJoinShardCount","sum":325591},{"parent":"PRAGMA","rule":"yt.MapJoinShardMinRows","sum":4},{"parent":"PRAGMA","rule":"yt.MapJoinUseFlow","sum":1},{"parent":"PRAGMA","rule":"yt.MapLocalityTimeout","sum":4},{"parent":"PRAGMA","rule":"yt.MaxChunksForDqRead","sum":120},{"parent":"PRAGMA","rule":"yt.MaxExtraJobMemoryToFuseOperations","sum":19625},{"parent":"PRAGMA","rule":"yt.MaxInputTables","sum":29548},{"parent":"PRAGMA","rule":"yt.MaxInputTablesForSortedMerge","sum":5885},{"parent":"PRAGMA","rule":"yt.MaxJobCount","sum":12604723},{"parent":"PRAGMA","rule":"yt.MaxJobcount","sum":1379},{"parent":"PRAGMA","rule":"yt.MaxKeyRangeCount","sum":9},{"parent":"PRAGMA","rule":"yt.MaxKeyWeight","sum":210503},{"parent":"PRAGMA","rule":"yt.MaxOutputTables","sum":53},{"parent":"PRAGMA","rule":"yt.MaxReplicationFactorToFuseOperations","sum":15},{"parent":"PRAGMA","rule":"yt.MaxRowWeight","sum":6129619},{"parent":"PRAGMA","rule":"yt.MaxSpeculativeJobCountPerTask","sum":2223},{"parent":"PRAGMA","rule":"yt.MinLocalityInputDataWeight","sum":8},{"parent":"PRAGMA","rule":"yt.MinPublishedAvgChunkSize","sum":3203547},{"parent":"PRAGMA","rule":"yt.MinTempAvgChunkSize","sum":179189},{"parent":"PRAGMA","rule":"yt.NativeYtTypeCompatibility","sum":15},{"parent":"PRAGMA","rule":"yt.NetworkProject","sum":609959},{"parent":"PRAGMA","rule":"yt.NightlyCompress","sum":146059},{"parent":"PRAGMA","rule":"yt.OWners","sum":21},{"parent":"PRAGMA","rule":"yt.OperationReaders","sum":12929391},{"parent":"PRAGMA","rule":"yt.OperationSpec","sum":8595182},{"parent":"PRAGMA","rule":"yt.OptimizeFor","sum":5854994},{"parent":"PRAGMA","rule":"yt.Owners","sum":65834227},{"parent":"PRAGMA","rule":"yt.POOL","sum":68},{"parent":"PRAGMA","rule":"yt.POol","sum":12},{"parent":"PRAGMA","rule":"yt.ParallelOperationsLimit","sum":1389738},{"parent":"PRAGMA","rule":"yt.PartitionByConstantKeysViaMap","sum":13},{"parent":"PRAGMA","rule":"yt.PooL","sum":1},{"parent":"PRAGMA","rule":"yt.Pool","sum":54578353},{"parent":"PRAGMA","rule":"yt.PoolTrees","sum":6604811},{"parent":"PRAGMA","rule":"yt.PrimaryMedium","sum":391200},{"parent":"PRAGMA","rule":"yt.PruneKeyFilterLambda","sum":570},{"parent":"PRAGMA","rule":"yt.PublishedAutoMerge","sum":3424208},{"parent":"PRAGMA","rule":"yt.PublishedCompressionCodec","sum":7477762},{"parent":"PRAGMA","rule":"yt.PublishedErasureCodec","sum":5461359},{"parent":"PRAGMA","rule":"yt.PublishedMedia","sum":4323},{"parent":"PRAGMA","rule":"yt.PublishedPrimaryMedium","sum":787756},{"parent":"PRAGMA","rule":"yt.PublishedReplicationFactor","sum":24049},{"parent":"PRAGMA","rule":"yt.PythonCpu","sum":87204},{"parent":"PRAGMA","rule":"yt.QueryCacheIgnoreTableRevision","sum":64613},{"parent":"PRAGMA","rule":"yt.QueryCacheMode","sum":24322168},{"parent":"PRAGMA","rule":"yt.QueryCacheSalt","sum":5},{"parent":"PRAGMA","rule":"yt.QueryCacheTtl","sum":9068170},{"parent":"PRAGMA","rule":"yt.QueryCacheUseForCalc","sum":8},{"parent":"PRAGMA","rule":"yt.QuerycacheMode","sum":2},{"parent":"PRAGMA","rule":"yt.ReleaseTempData","sum":2733894},{"parent":"PRAGMA","rule":"yt.STaticPool","sum":3},{"parent":"PRAGMA","rule":"yt.SamplingIoBlockSize","sum":3846},{"parent":"PRAGMA","rule":"yt.SchedulingTag","sum":61},{"parent":"PRAGMA","rule":"yt.SchedulingTagFilter","sum":2941},{"parent":"PRAGMA","rule":"yt.ScriptCpu","sum":4980},{"parent":"PRAGMA","rule":"yt.StartedBy","sum":266284},{"parent":"PRAGMA","rule":"yt.StaticPOol","sum":1},{"parent":"PRAGMA","rule":"yt.StaticPool","sum":113682792},{"parent":"PRAGMA","rule":"yt.Static_pool","sum":1},{"parent":"PRAGMA","rule":"yt.SuspendIfAccountLimitExceeded","sum":42957},{"parent":"PRAGMA","rule":"yt.TableContentDeliveryMode","sum":591},{"parent":"PRAGMA","rule":"yt.TableContentLocalExecution","sum":18},{"parent":"PRAGMA","rule":"yt.TableContentMaxChunksForNativeDelivery","sum":1},{"parent":"PRAGMA","rule":"yt.TableContentMaxInputTables","sum":6690},{"parent":"PRAGMA","rule":"yt.TableContentMinAvgChunkSize","sum":2589},{"parent":"PRAGMA","rule":"yt.TableContentTmpFolder","sum":28},{"parent":"PRAGMA","rule":"yt.TableContentUseSkiff","sum":11},{"parent":"PRAGMA","rule":"yt.TablesTmpFolder","sum":3476119},{"parent":"PRAGMA","rule":"yt.TempTablesTtl","sum":5550556},{"parent":"PRAGMA","rule":"yt.TemporaryAutoMerge","sum":8920140},{"parent":"PRAGMA","rule":"yt.TemporaryCompressionCodec","sum":5905781},{"parent":"PRAGMA","rule":"yt.TemporaryErasureCodec","sum":4825183},{"parent":"PRAGMA","rule":"yt.TemporaryPrimaryMedium","sum":505233},{"parent":"PRAGMA","rule":"yt.TemporaryReplicationFactor","sum":84},{"parent":"PRAGMA","rule":"yt.TentativePoolTrees","sum":1843714},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilityMaxJobDurationRatio","sum":17598},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilityMinJobDuration","sum":2168},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilitySampleJobCount","sum":16259},{"parent":"PRAGMA","rule":"yt.TmpFolder","sum":31478968},{"parent":"PRAGMA","rule":"yt.TopSortMaxLimit","sum":59},{"parent":"PRAGMA","rule":"yt.TopSortSizePerJob","sum":1},{"parent":"PRAGMA","rule":"yt.USENATIVEYTTYPES","sum":29},{"parent":"PRAGMA","rule":"yt.USeNativeYtTypes","sum":12},{"parent":"PRAGMA","rule":"yt.UseColumnarStatistics","sum":168549},{"parent":"PRAGMA","rule":"yt.UseDefaultTentativePoolTrees","sum":253045},{"parent":"PRAGMA","rule":"yt.UseFlow","sum":3},{"parent":"PRAGMA","rule":"yt.UseIntermediateStreams","sum":6},{"parent":"PRAGMA","rule":"yt.UseNAtiveYtTypes","sum":1},{"parent":"PRAGMA","rule":"yt.UseNativeDescSort","sum":2102},{"parent":"PRAGMA","rule":"yt.UseNativeYtTYpes","sum":1485},{"parent":"PRAGMA","rule":"yt.UseNativeYtTypes","sum":24543429},{"parent":"PRAGMA","rule":"yt.UseNativeYttypes","sum":780},{"parent":"PRAGMA","rule":"yt.UseNativeytTypes","sum":524},{"parent":"PRAGMA","rule":"yt.UseNewPredicateExtraction","sum":182732},{"parent":"PRAGMA","rule":"yt.UseRPCReaderInDQ","sum":79},{"parent":"PRAGMA","rule":"yt.UseRPCReaderInDq","sum":12120},{"parent":"PRAGMA","rule":"yt.UseSkiff","sum":3926},{"parent":"PRAGMA","rule":"yt.UseSystemColumns","sum":2131},{"parent":"PRAGMA","rule":"yt.UseTmpfs","sum":34355},{"parent":"PRAGMA","rule":"yt.UseTypeV2","sum":4302},{"parent":"PRAGMA","rule":"yt.UseYqlRowSpecCompactForm","sum":3798},{"parent":"PRAGMA","rule":"yt.UserSlots","sum":2526588},{"parent":"PRAGMA","rule":"yt.ViewIsolation","sum":983},{"parent":"PRAGMA","rule":"yt.WideFlowLimit","sum":158676},{"parent":"PRAGMA","rule":"yt.auth","sum":46536},{"parent":"PRAGMA","rule":"yt.datasizeperjob","sum":2022},{"parent":"PRAGMA","rule":"yt.defaultoperationweight","sum":47},{"parent":"PRAGMA","rule":"yt.forceinferschema","sum":48},{"parent":"PRAGMA","rule":"yt.inferSchema","sum":56183},{"parent":"PRAGMA","rule":"yt.infer_schema","sum":10},{"parent":"PRAGMA","rule":"yt.inferschema","sum":2911},{"parent":"PRAGMA","rule":"yt.mapjoinlimit","sum":98499},{"parent":"PRAGMA","rule":"yt.maxRowWeight","sum":1},{"parent":"PRAGMA","rule":"yt.max_row_weight","sum":19},{"parent":"PRAGMA","rule":"yt.maxjobcount","sum":5},{"parent":"PRAGMA","rule":"yt.maxrowweight","sum":41949},{"parent":"PRAGMA","rule":"yt.minPublishedAvgChunksize","sum":11},{"parent":"PRAGMA","rule":"yt.network_project","sum":14594},{"parent":"PRAGMA","rule":"yt.pool","sum":6824278},{"parent":"PRAGMA","rule":"yt.pool_trees","sum":1},{"parent":"PRAGMA","rule":"yt.pooltrees","sum":53},{"parent":"PRAGMA","rule":"yt.publishedcompressioncodec","sum":403},{"parent":"PRAGMA","rule":"yt.staticPool","sum":1276802},{"parent":"PRAGMA","rule":"yt.static_pool","sum":20},{"parent":"PRAGMA","rule":"yt.staticpool","sum":10554},{"parent":"PRAGMA","rule":"yt.tmpFolder","sum":76757},{"parent":"PRAGMA","rule":"yt.tmpfolder","sum":65},{"parent":"PRAGMA","rule":"yt.useNativeYtTYpes","sum":1},{"parent":"PRAGMA","rule":"yt.useNativeYtTypes","sum":919},{"parent":"PRAGMA","rule":"yt.usenativeyttypes","sum":172},{"parent":"READ_HINT","rule":"COLUMNS","sum":826110},{"parent":"READ_HINT","rule":"CoLUMNS","sum":2},{"parent":"READ_HINT","rule":"Columns","sum":24},{"parent":"READ_HINT","rule":"DIRECT_READ","sum":98},{"parent":"READ_HINT","rule":"FORCE_INFER_SCHEMA","sum":18276},{"parent":"READ_HINT","rule":"ForceInferSchema","sum":364},{"parent":"READ_HINT","rule":"IGNORETYPEV3","sum":2},{"parent":"READ_HINT","rule":"IGNORE_TYPE_V3","sum":4},{"parent":"READ_HINT","rule":"INFER_SCHEMA","sum":105090},{"parent":"READ_HINT","rule":"INLINE","sum":88183},{"parent":"READ_HINT","rule":"InferSchema","sum":2275},{"parent":"READ_HINT","rule":"Infer_Schema","sum":3},{"parent":"READ_HINT","rule":"SCHEMA","sum":16862952},{"parent":"READ_HINT","rule":"SChema","sum":2},{"parent":"READ_HINT","rule":"Schema","sum":38545},{"parent":"READ_HINT","rule":"TRUNCATE","sum":5},{"parent":"READ_HINT","rule":"UNORDERED","sum":6456},{"parent":"READ_HINT","rule":"USER_ATTRS","sum":1},{"parent":"READ_HINT","rule":"Unordered","sum":365},{"parent":"READ_HINT","rule":"XLOCK","sum":140088},{"parent":"READ_HINT","rule":"columns","sum":428022},{"parent":"READ_HINT","rule":"direct_read","sum":1},{"parent":"READ_HINT","rule":"downsampling.aggregation","sum":2273},{"parent":"READ_HINT","rule":"downsampling.disabled","sum":2198},{"parent":"READ_HINT","rule":"downsampling.fill","sum":1773},{"parent":"READ_HINT","rule":"downsampling.grid_interval","sum":2574},{"parent":"READ_HINT","rule":"force_infer_schema","sum":2},{"parent":"READ_HINT","rule":"from","sum":24174},{"parent":"READ_HINT","rule":"infer_schema","sum":198},{"parent":"READ_HINT","rule":"infer_scheme","sum":17},{"parent":"READ_HINT","rule":"inferschema","sum":1},{"parent":"READ_HINT","rule":"inline","sum":75427},{"parent":"READ_HINT","rule":"labels","sum":22025},{"parent":"READ_HINT","rule":"program","sum":24426},{"parent":"READ_HINT","rule":"schema","sum":786926},{"parent":"READ_HINT","rule":"to","sum":24174},{"parent":"READ_HINT","rule":"unordered","sum":14252},{"parent":"READ_HINT","rule":"xlock","sum":261771},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Block2","sum":4986143},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Rule_opt_bind_parameter1","sum":14027239},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Rule_opt_bind_parameter2","sum":7565014},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Token1","sum":7565014},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Block2","sum":136327164},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Rule_mul_subexpr1","sum":15639753502},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Rule_mul_subexpr2","sum":168035288},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Token1","sum":168035288},{"parent":"TRule_an_id","rule":"TRule_an_id.Alt_an_id1","sum":2011167410},{"parent":"TRule_an_id.TAlt1","rule":"TRule_an_id.TAlt1.Rule_id1","sum":2011167410},{"parent":"TRule_an_id_as_compat","rule":"TRule_an_id_as_compat.Alt_an_id_as_compat1","sum":3037134},{"parent":"TRule_an_id_as_compat.TAlt1","rule":"TRule_an_id_as_compat.TAlt1.Rule_id_as_compat1","sum":3037134},{"parent":"TRule_an_id_expr","rule":"TRule_an_id_expr.Alt_an_id_expr1","sum":96457781},{"parent":"TRule_an_id_expr.TAlt1","rule":"TRule_an_id_expr.TAlt1.Rule_id_expr1","sum":96457781},{"parent":"TRule_an_id_hint","rule":"TRule_an_id_hint.Alt_an_id_hint1","sum":155030406},{"parent":"TRule_an_id_hint.TAlt1","rule":"TRule_an_id_hint.TAlt1.Rule_id_hint1","sum":155030406},{"parent":"TRule_an_id_or_type","rule":"TRule_an_id_or_type.Alt_an_id_or_type1","sum":9657689504},{"parent":"TRule_an_id_or_type","rule":"TRule_an_id_or_type.Alt_an_id_or_type2","sum":7},{"parent":"TRule_an_id_or_type.TAlt1","rule":"TRule_an_id_or_type.TAlt1.Rule_id_or_type1","sum":9657689504},{"parent":"TRule_an_id_or_type.TAlt2","rule":"TRule_an_id_or_type.TAlt2.Token1","sum":7},{"parent":"TRule_an_id_pure","rule":"TRule_an_id_pure.Alt_an_id_pure1","sum":678937497},{"parent":"TRule_an_id_pure.TAlt1","rule":"TRule_an_id_pure.TAlt1.Rule_identifier1","sum":678937497},{"parent":"TRule_an_id_schema","rule":"TRule_an_id_schema.Alt_an_id_schema1","sum":1160},{"parent":"TRule_an_id_schema.TAlt1","rule":"TRule_an_id_schema.TAlt1.Rule_id_schema1","sum":1160},{"parent":"TRule_an_id_table","rule":"TRule_an_id_table.Alt_an_id_table1","sum":331261943},{"parent":"TRule_an_id_table","rule":"TRule_an_id_table.Alt_an_id_table2","sum":1},{"parent":"TRule_an_id_table.TAlt1","rule":"TRule_an_id_table.TAlt1.Rule_id_table1","sum":331261943},{"parent":"TRule_an_id_table.TAlt2","rule":"TRule_an_id_table.TAlt2.Token1","sum":1},{"parent":"TRule_an_id_window","rule":"TRule_an_id_window.Alt_an_id_window1","sum":46794903},{"parent":"TRule_an_id_window.TAlt1","rule":"TRule_an_id_window.TAlt1.Rule_id_window1","sum":46794903},{"parent":"TRule_an_id_without","rule":"TRule_an_id_without.Alt_an_id_without1","sum":23422764},{"parent":"TRule_an_id_without.TAlt1","rule":"TRule_an_id_without.TAlt1.Rule_id_without1","sum":23422764},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Block2","sum":29447},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Rule_xor_subexpr1","sum":14301292117},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Rule_xor_subexpr2","sum":29511},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Token1","sum":29511},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr1","sum":5157361938},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr10","sum":36160238},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr11","sum":8542848},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr12","sum":14736673},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr2","sum":1777610750},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr3","sum":448136730},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr4","sum":399237067},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr5","sum":77242},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr6","sum":62000126},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr7","sum":931114620},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr8","sum":165732},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr9","sum":516962},{"parent":"TRule_atom_expr.TAlt1","rule":"TRule_atom_expr.TAlt1.Rule_literal_value1","sum":5157361938},{"parent":"TRule_atom_expr.TAlt10","rule":"TRule_atom_expr.TAlt10.Rule_list_literal1","sum":36160238},{"parent":"TRule_atom_expr.TAlt11","rule":"TRule_atom_expr.TAlt11.Rule_dict_literal1","sum":8542848},{"parent":"TRule_atom_expr.TAlt12","rule":"TRule_atom_expr.TAlt12.Rule_struct_literal1","sum":14736673},{"parent":"TRule_atom_expr.TAlt2","rule":"TRule_atom_expr.TAlt2.Rule_bind_parameter1","sum":1777610750},{"parent":"TRule_atom_expr.TAlt3","rule":"TRule_atom_expr.TAlt3.Rule_lambda1","sum":448136730},{"parent":"TRule_atom_expr.TAlt4","rule":"TRule_atom_expr.TAlt4.Rule_cast_expr1","sum":399237067},{"parent":"TRule_atom_expr.TAlt5","rule":"TRule_atom_expr.TAlt5.Rule_exists_expr1","sum":77242},{"parent":"TRule_atom_expr.TAlt6","rule":"TRule_atom_expr.TAlt6.Rule_case_expr1","sum":62000126},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Block3","sum":931114620},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Rule_an_id_or_type1","sum":931114620},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Token2","sum":931114620},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt1","sum":931113385},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt2","sum":1235},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt1","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt1.Rule_id_or_type1","sum":931113385},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt2","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt2.Token1","sum":1235},{"parent":"TRule_atom_expr.TAlt8","rule":"TRule_atom_expr.TAlt8.Rule_value_constructor1","sum":165732},{"parent":"TRule_atom_expr.TAlt9","rule":"TRule_atom_expr.TAlt9.Rule_bitcast_expr1","sum":516962},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Block2","sum":3715856694},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Token1","sum":3715856694},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt1","sum":3715844742},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt2","sum":9462},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt3","sum":2490},{"parent":"TRule_bind_parameter.TBlock2.TAlt1","rule":"TRule_bind_parameter.TBlock2.TAlt1.Rule_an_id_or_type1","sum":3715844742},{"parent":"TRule_bind_parameter.TBlock2.TAlt2","rule":"TRule_bind_parameter.TBlock2.TAlt2.Token1","sum":9462},{"parent":"TRule_bind_parameter.TBlock2.TAlt3","rule":"TRule_bind_parameter.TBlock2.TAlt3.Token1","sum":2490},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Block2","sum":251552},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Rule_bind_parameter1","sum":1010795718},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Rule_bind_parameter2","sum":348012},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Token1","sum":348012},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Block2","sum":138589425},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Rule_add_subexpr1","sum":15482613119},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Rule_add_subexpr2","sum":157140383},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Token1","sum":157140383},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_expr3","sum":516962},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_type_name_simple5","sum":516962},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token1","sum":516962},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token2","sum":516962},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token4","sum":516962},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token6","sum":516962},{"parent":"TRule_bool_value","rule":"TRule_bool_value.Token1","sum":104618486},{"parent":"TRule_call_action","rule":"TRule_call_action.Block1","sum":9487200},{"parent":"TRule_call_action","rule":"TRule_call_action.Block3","sum":7206525},{"parent":"TRule_call_action","rule":"TRule_call_action.Token2","sum":9487200},{"parent":"TRule_call_action","rule":"TRule_call_action.Token4","sum":9487200},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt1","sum":9360822},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt2","sum":126378},{"parent":"TRule_call_action.TBlock1.TAlt1","rule":"TRule_call_action.TBlock1.TAlt1.Rule_bind_parameter1","sum":9360822},{"parent":"TRule_call_action.TBlock1.TAlt2","rule":"TRule_call_action.TBlock1.TAlt2.Token1","sum":126378},{"parent":"TRule_call_action.TBlock3","rule":"TRule_call_action.TBlock3.Rule_expr_list1","sum":7206525},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Block2","sum":1},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Rule_variant_arg1","sum":18037904},{"parent":"TRule_callable_arg.TBlock2","rule":"TRule_callable_arg.TBlock2.Token1","sum":1},{"parent":"TRule_callable_arg.TBlock2","rule":"TRule_callable_arg.TBlock2.Token2","sum":1},{"parent":"TRule_callable_arg.TBlock2","rule":"TRule_callable_arg.TBlock2.Token3","sum":1},{"parent":"TRule_callable_arg_list","rule":"TRule_callable_arg_list.Block2","sum":4390160},{"parent":"TRule_callable_arg_list","rule":"TRule_callable_arg_list.Rule_callable_arg1","sum":9799746},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Rule_callable_arg2","sum":8238158},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Token1","sum":8238158},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block2","sum":4677251},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block3","sum":62000130},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block4","sum":62000130},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token1","sum":62000130},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token5","sum":62000130},{"parent":"TRule_case_expr.TBlock2","rule":"TRule_case_expr.TBlock2.Rule_expr1","sum":4677251},{"parent":"TRule_case_expr.TBlock3","rule":"TRule_case_expr.TBlock3.Rule_when_expr1","sum":158729543},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Rule_expr2","sum":62000130},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Token1","sum":62000130},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_expr3","sum":399281360},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_type_name_or_bind5","sum":399281360},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token1","sum":399281360},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token2","sum":399281360},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token4","sum":399281360},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token6","sum":399281360},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block1","sum":6795363},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block2","sum":375904721},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Rule_an_id1","sum":6795363},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Token2","sum":6795363},{"parent":"TRule_cluster_expr.TBlock2","rule":"TRule_cluster_expr.TBlock2.Alt1","sum":375904721},{"parent":"TRule_cluster_expr.TBlock2.TAlt1","rule":"TRule_cluster_expr.TBlock2.TAlt1.Rule_pure_column_or_named1","sum":375904721},{"parent":"TRule_column_list","rule":"TRule_column_list.Block2","sum":286232},{"parent":"TRule_column_list","rule":"TRule_column_list.Block3","sum":890},{"parent":"TRule_column_list","rule":"TRule_column_list.Rule_column_name1","sum":858313},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Rule_column_name2","sum":1129270},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Token1","sum":1129270},{"parent":"TRule_column_list.TBlock3","rule":"TRule_column_list.TBlock3.Token1","sum":890},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_an_id2","sum":23439287},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_opt_id_prefix1","sum":23439287},{"parent":"TRule_column_order_by_specification","rule":"TRule_column_order_by_specification.Rule_an_id1","sum":105},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_an_id_schema1","sum":1160},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_opt_column_constraints4","sum":1160},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_type_name_or_bind2","sum":1160},{"parent":"TRule_commit_stmt","rule":"TRule_commit_stmt.Token1","sum":13057020},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr1","sum":15949808357},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr2","sum":87839446},{"parent":"TRule_con_subexpr.TAlt1","rule":"TRule_con_subexpr.TAlt1.Rule_unary_subexpr1","sum":15949808357},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_op1","sum":87839446},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_subexpr2","sum":87839446},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr1","sum":52393370},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr2","sum":126255554},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr3","sum":173278806},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr4","sum":25108695},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr5","sum":721369232},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block1","sum":9336525},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block4","sum":92172},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_eq_subexpr3","sum":52393370},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_match_op2","sum":52393370},{"parent":"TRule_cond_expr.TAlt1.TBlock1","rule":"TRule_cond_expr.TAlt1.TBlock1.Token1","sum":9336525},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Rule_eq_subexpr2","sum":92172},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Token1","sum":92172},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block1","sum":26271760},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block3","sum":3141787},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Rule_in_expr4","sum":126255554},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Token2","sum":126255554},{"parent":"TRule_cond_expr.TAlt2.TBlock1","rule":"TRule_cond_expr.TAlt2.TBlock1.Token1","sum":26271760},{"parent":"TRule_cond_expr.TAlt2.TBlock3","rule":"TRule_cond_expr.TAlt2.TBlock3.Token1","sum":3141787},{"parent":"TRule_cond_expr.TAlt3","rule":"TRule_cond_expr.TAlt3.Block1","sum":173278806},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt1","sum":162},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt2","sum":390},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt3","sum":60881961},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt4","sum":112396293},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt1","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt1.Token1","sum":162},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt2","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt2.Token1","sum":390},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token1","sum":60881961},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token2","sum":60881961},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Block1","sum":112354867},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token2","sum":112396293},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token3","sum":112396293},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1.Token1","sum":112354867},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Block1","sum":406296},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Block3","sum":26},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Rule_eq_subexpr4","sum":25108695},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Rule_eq_subexpr6","sum":25108695},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token2","sum":25108695},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token5","sum":25108695},{"parent":"TRule_cond_expr.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt4.TBlock1.Token1","sum":406296},{"parent":"TRule_cond_expr.TAlt4.TBlock3","rule":"TRule_cond_expr.TAlt4.TBlock3.Token1","sum":26},{"parent":"TRule_cond_expr.TAlt5","rule":"TRule_cond_expr.TAlt5.Block1","sum":721369232},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Block1","sum":721371197},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Rule_eq_subexpr2","sum":721371197},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt1","sum":493355233},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt2","sum":172963026},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt3","sum":49642288},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt4","sum":5008709},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt5","sum":401941},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1.Token1","sum":493355233},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2.Token1","sum":172963026},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3.Token1","sum":49642288},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4.Token1","sum":5008709},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5.Rule_distinct_from_op1","sum":401941},{"parent":"TRule_create_table_entry","rule":"TRule_create_table_entry.Alt_create_table_entry1","sum":1160},{"parent":"TRule_create_table_entry","rule":"TRule_create_table_entry.Alt_create_table_entry2","sum":229},{"parent":"TRule_create_table_entry.TAlt1","rule":"TRule_create_table_entry.TAlt1.Rule_column_schema1","sum":1160},{"parent":"TRule_create_table_entry.TAlt2","rule":"TRule_create_table_entry.TAlt2.Rule_table_constraint1","sum":229},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Block3","sum":125},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Block8","sum":125},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Rule_create_table_entry7","sum":125},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Rule_simple_table_ref5","sum":125},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token1","sum":125},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token10","sum":125},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token6","sum":125},{"parent":"TRule_create_table_stmt.TBlock3","rule":"TRule_create_table_stmt.TBlock3.Alt1","sum":125},{"parent":"TRule_create_table_stmt.TBlock3.TAlt1","rule":"TRule_create_table_stmt.TBlock3.TAlt1.Token1","sum":125},{"parent":"TRule_create_table_stmt.TBlock8","rule":"TRule_create_table_stmt.TBlock8.Rule_create_table_entry2","sum":1264},{"parent":"TRule_create_table_stmt.TBlock8","rule":"TRule_create_table_stmt.TBlock8.Token1","sum":1264},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Rule_ordinary_grouping_set_list3","sum":276361},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token1","sum":276361},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token2","sum":276361},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token4","sum":276361},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_bind_parameter2","sum":156792290},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_type_name4","sum":156792290},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token1","sum":156792290},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token3","sum":156792290},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block1","sum":45718},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block2","sum":36285457},{"parent":"TRule_define_action_or_subquery_body.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock1.Token1","sum":45718},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block2","sum":16156594},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block3","sum":23643182},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Rule_sql_stmt_core1","sum":36285457},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Block1","sum":46112405},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Rule_sql_stmt_core2","sum":46112405},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1.Token1","sum":46125679},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock3","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock3.Token1","sum":23669314},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Block5","sum":14027239},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_bind_parameter3","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_define_action_or_subquery_body8","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token1","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token10","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token2","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token4","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token6","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token7","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token9","sum":22375819},{"parent":"TRule_define_action_or_subquery_stmt.TBlock5","rule":"TRule_define_action_or_subquery_stmt.TBlock5.Rule_action_or_subquery_args1","sum":14027239},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block2","sum":8248170},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block3","sum":2256610},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token1","sum":8997473},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token4","sum":8997473},{"parent":"TRule_dict_literal.TBlock2","rule":"TRule_dict_literal.TBlock2.Rule_expr_dict_list1","sum":8248170},{"parent":"TRule_dict_literal.TBlock3","rule":"TRule_dict_literal.TBlock3.Token1","sum":2256610},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Block2","sum":118884},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token1","sum":401941},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token3","sum":401941},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token4","sum":401941},{"parent":"TRule_distinct_from_op.TBlock2","rule":"TRule_distinct_from_op.TBlock2.Token1","sum":118884},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Block2","sum":23403292},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Token1","sum":23403292},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt1","sum":9487200},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt2","sum":13916092},{"parent":"TRule_do_stmt.TBlock2.TAlt1","rule":"TRule_do_stmt.TBlock2.TAlt1.Rule_call_action1","sum":9487200},{"parent":"TRule_do_stmt.TBlock2.TAlt2","rule":"TRule_do_stmt.TBlock2.TAlt2.Rule_inline_action1","sum":13916092},{"parent":"TRule_double_question","rule":"TRule_double_question.Token1","sum":108073061},{"parent":"TRule_double_question","rule":"TRule_double_question.Token2","sum":108073061},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Block2","sum":2572734},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Block3","sum":3},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Rule_simple_table_ref4","sum":2572734},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Token1","sum":2572734},{"parent":"TRule_drop_table_stmt.TBlock2","rule":"TRule_drop_table_stmt.TBlock2.Alt1","sum":2572734},{"parent":"TRule_drop_table_stmt.TBlock2.TAlt1","rule":"TRule_drop_table_stmt.TBlock2.TAlt1.Token1","sum":2572734},{"parent":"TRule_drop_table_stmt.TBlock3","rule":"TRule_drop_table_stmt.TBlock3.Token1","sum":3},{"parent":"TRule_drop_table_stmt.TBlock3","rule":"TRule_drop_table_stmt.TBlock3.Token2","sum":3},{"parent":"TRule_eq_subexpr","rule":"TRule_eq_subexpr.Block2","sum":239920260},{"parent":"TRule_eq_subexpr","rule":"TRule_eq_subexpr.Rule_neq_subexpr1","sum":15125395757},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Rule_neq_subexpr2","sum":239920314},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Token1","sum":239920314},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Block3","sum":77242},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token1","sum":77242},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token2","sum":77242},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token4","sum":77242},{"parent":"TRule_exists_expr.TBlock3","rule":"TRule_exists_expr.TBlock3.Alt1","sum":77242},{"parent":"TRule_exists_expr.TBlock3.TAlt1","rule":"TRule_exists_expr.TBlock3.TAlt1.Rule_select_stmt1","sum":77242},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr1","sum":13713697233},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr2","sum":17425556},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Block2","sum":68508745},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Rule_or_subexpr1","sum":13713697233},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Rule_or_subexpr2","sum":115429705},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Token1","sum":115429705},{"parent":"TRule_expr.TAlt2","rule":"TRule_expr.TAlt2.Rule_type_name_composite1","sum":17425556},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block2","sum":7050783},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block3","sum":6655688},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Rule_expr1","sum":8248170},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Rule_expr2","sum":7050783},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Token1","sum":7050783},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Block3","sum":35369774},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Rule_expr2","sum":42335591},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Token1","sum":42335591},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Rule_expr2","sum":35369774},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Token1","sum":35369774},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Block2","sum":42099297},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Rule_expr1","sum":67782951},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Rule_expr2","sum":206854597},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Token1","sum":206854597},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Block4","sum":12650040},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr1","sum":14603829},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr3","sum":14603829},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Token2","sum":14603829},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr2","sum":31557138},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr4","sum":31557138},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token1","sum":31557138},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token3","sum":31557138},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Block1","sum":2627040},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Rule_order_by_clause2","sum":89004653},{"parent":"TRule_ext_order_by_clause.TBlock1","rule":"TRule_ext_order_by_clause.TBlock1.Token1","sum":2627040},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg1","sum":21451704},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg2","sum":4343368},{"parent":"TRule_flatten_by_arg.TAlt1","rule":"TRule_flatten_by_arg.TAlt1.Rule_named_column1","sum":21451704},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Block3","sum":53158},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Rule_named_expr_list2","sum":4343368},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token1","sum":4343368},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token4","sum":4343368},{"parent":"TRule_flatten_by_arg.TAlt2.TBlock3","rule":"TRule_flatten_by_arg.TAlt2.TBlock3.Token1","sum":53158},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Block2","sum":33768374},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Rule_named_single_source1","sum":1055367403},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Block2","sum":33768374},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Token1","sum":33768374},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt1","sum":25795072},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt2","sum":7973302},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Block1","sum":19723502},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Rule_flatten_by_arg3","sum":25795072},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Token2","sum":25795072},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1.Token1","sum":19723502},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt2","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt2.Token1","sum":7973302},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block1","sum":7048099},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block2","sum":8},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block8","sum":64969},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_bind_parameter4","sum":7048194},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_do_stmt7","sum":7048194},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_expr6","sum":7048194},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token3","sum":7048194},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token5","sum":7048194},{"parent":"TRule_for_stmt.TBlock1","rule":"TRule_for_stmt.TBlock1.Token1","sum":7048099},{"parent":"TRule_for_stmt.TBlock2","rule":"TRule_for_stmt.TBlock2.Token1","sum":8},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Rule_do_stmt2","sum":64969},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Token1","sum":64969},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Block2","sum":1609399},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Block6","sum":6},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Rule_grouping_element_list5","sum":138061902},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Rule_opt_set_quantifier4","sum":138061902},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token1","sum":138061902},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token3","sum":138061902},{"parent":"TRule_group_by_clause.TBlock2","rule":"TRule_group_by_clause.TBlock2.Token1","sum":1609399},{"parent":"TRule_group_by_clause.TBlock6","rule":"TRule_group_by_clause.TBlock6.Rule_an_id2","sum":6},{"parent":"TRule_group_by_clause.TBlock6","rule":"TRule_group_by_clause.TBlock6.Token1","sum":6},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element1","sum":301105925},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element2","sum":63017},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element3","sum":276361},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element4","sum":92394},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element5","sum":23},{"parent":"TRule_grouping_element.TAlt1","rule":"TRule_grouping_element.TAlt1.Rule_ordinary_grouping_set1","sum":301105925},{"parent":"TRule_grouping_element.TAlt2","rule":"TRule_grouping_element.TAlt2.Rule_rollup_list1","sum":63017},{"parent":"TRule_grouping_element.TAlt3","rule":"TRule_grouping_element.TAlt3.Rule_cube_list1","sum":276361},{"parent":"TRule_grouping_element.TAlt4","rule":"TRule_grouping_element.TAlt4.Rule_grouping_sets_specification1","sum":92394},{"parent":"TRule_grouping_element.TAlt5","rule":"TRule_grouping_element.TAlt5.Rule_hopping_window_specification1","sum":23},{"parent":"TRule_grouping_element_list","rule":"TRule_grouping_element_list.Block2","sum":62884956},{"parent":"TRule_grouping_element_list","rule":"TRule_grouping_element_list.Rule_grouping_element1","sum":138154296},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Rule_grouping_element2","sum":163383424},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Token1","sum":163383424},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Rule_grouping_element_list4","sum":92394},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token1","sum":92394},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token2","sum":92394},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token3","sum":92394},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token5","sum":92394},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr3","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr5","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr7","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Rule_expr9","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token1","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token10","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token2","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token4","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token6","sum":23},{"parent":"TRule_hopping_window_specification","rule":"TRule_hopping_window_specification.Token8","sum":23},{"parent":"TRule_id","rule":"TRule_id.Alt_id1","sum":12163133686},{"parent":"TRule_id","rule":"TRule_id.Alt_id2","sum":533050547},{"parent":"TRule_id.TAlt1","rule":"TRule_id.TAlt1.Rule_identifier1","sum":12163133686},{"parent":"TRule_id.TAlt2","rule":"TRule_id.TAlt2.Rule_keyword1","sum":533050547},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat1","sum":3034444},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat2","sum":2690},{"parent":"TRule_id_as_compat.TAlt1","rule":"TRule_id_as_compat.TAlt1.Rule_identifier1","sum":3034444},{"parent":"TRule_id_as_compat.TAlt2","rule":"TRule_id_as_compat.TAlt2.Rule_keyword_as_compat1","sum":2690},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr1","sum":6935456183},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr2","sum":320834100},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr3","sum":417538},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr5","sum":35238238},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr6","sum":181460},{"parent":"TRule_id_expr.TAlt1","rule":"TRule_id_expr.TAlt1.Rule_identifier1","sum":6935456183},{"parent":"TRule_id_expr.TAlt2","rule":"TRule_id_expr.TAlt2.Rule_keyword_compat1","sum":320834100},{"parent":"TRule_id_expr.TAlt3","rule":"TRule_id_expr.TAlt3.Rule_keyword_alter_uncompat1","sum":417538},{"parent":"TRule_id_expr.TAlt5","rule":"TRule_id_expr.TAlt5.Rule_keyword_window_uncompat1","sum":35238238},{"parent":"TRule_id_expr.TAlt6","rule":"TRule_id_expr.TAlt6.Rule_keyword_hint_uncompat1","sum":181460},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in1","sum":5652110},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in2","sum":75406},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in4","sum":217},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in5","sum":53},{"parent":"TRule_id_expr_in.TAlt1","rule":"TRule_id_expr_in.TAlt1.Rule_identifier1","sum":5652110},{"parent":"TRule_id_expr_in.TAlt2","rule":"TRule_id_expr_in.TAlt2.Rule_keyword_compat1","sum":75406},{"parent":"TRule_id_expr_in.TAlt4","rule":"TRule_id_expr_in.TAlt4.Rule_keyword_window_uncompat1","sum":217},{"parent":"TRule_id_expr_in.TAlt5","rule":"TRule_id_expr_in.TAlt5.Rule_keyword_hint_uncompat1","sum":53},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint1","sum":154982067},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint2","sum":24170},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint3","sum":24169},{"parent":"TRule_id_hint.TAlt1","rule":"TRule_id_hint.TAlt1.Rule_identifier1","sum":154982067},{"parent":"TRule_id_hint.TAlt2","rule":"TRule_id_hint.TAlt2.Rule_keyword_compat1","sum":24170},{"parent":"TRule_id_hint.TAlt3","rule":"TRule_id_hint.TAlt3.Rule_keyword_expr_uncompat1","sum":24169},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Block1","sum":4799824},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Rule_an_id_or_type2","sum":133959216},{"parent":"TRule_id_or_at.TBlock1","rule":"TRule_id_or_at.TBlock1.Token1","sum":4799824},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type1","sum":10580056071},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type2","sum":11723733},{"parent":"TRule_id_or_type.TAlt1","rule":"TRule_id_or_type.TAlt1.Rule_id1","sum":10580056071},{"parent":"TRule_id_or_type.TAlt2","rule":"TRule_id_or_type.TAlt2.Rule_type_id1","sum":11723733},{"parent":"TRule_id_schema","rule":"TRule_id_schema.Alt_id_schema1","sum":1148},{"parent":"TRule_id_schema","rule":"TRule_id_schema.Alt_id_schema2","sum":12},{"parent":"TRule_id_schema.TAlt1","rule":"TRule_id_schema.TAlt1.Rule_identifier1","sum":1148},{"parent":"TRule_id_schema.TAlt2","rule":"TRule_id_schema.TAlt2.Rule_keyword_compat1","sum":12},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table1","sum":330592812},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table2","sum":654441},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table3","sum":365},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table4","sum":12473},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table5","sum":4},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table6","sum":1838},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table7","sum":10},{"parent":"TRule_id_table.TAlt1","rule":"TRule_id_table.TAlt1.Rule_identifier1","sum":330592812},{"parent":"TRule_id_table.TAlt2","rule":"TRule_id_table.TAlt2.Rule_keyword_compat1","sum":654441},{"parent":"TRule_id_table.TAlt3","rule":"TRule_id_table.TAlt3.Rule_keyword_expr_uncompat1","sum":365},{"parent":"TRule_id_table.TAlt4","rule":"TRule_id_table.TAlt4.Rule_keyword_select_uncompat1","sum":12473},{"parent":"TRule_id_table.TAlt5","rule":"TRule_id_table.TAlt5.Rule_keyword_in_uncompat1","sum":4},{"parent":"TRule_id_table.TAlt6","rule":"TRule_id_table.TAlt6.Rule_keyword_window_uncompat1","sum":1838},{"parent":"TRule_id_table.TAlt7","rule":"TRule_id_table.TAlt7.Rule_keyword_hint_uncompat1","sum":10},{"parent":"TRule_id_table_or_type","rule":"TRule_id_table_or_type.Alt_id_table_or_type1","sum":331261944},{"parent":"TRule_id_table_or_type","rule":"TRule_id_table_or_type.Alt_id_table_or_type2","sum":4190},{"parent":"TRule_id_table_or_type.TAlt1","rule":"TRule_id_table_or_type.TAlt1.Rule_an_id_table1","sum":331261944},{"parent":"TRule_id_table_or_type.TAlt2","rule":"TRule_id_table_or_type.TAlt2.Rule_type_id1","sum":4190},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window1","sum":46523701},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window2","sum":15783},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window3","sum":247560},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window5","sum":7859},{"parent":"TRule_id_window.TAlt1","rule":"TRule_id_window.TAlt1.Rule_identifier1","sum":46523701},{"parent":"TRule_id_window.TAlt2","rule":"TRule_id_window.TAlt2.Rule_keyword_compat1","sum":15783},{"parent":"TRule_id_window.TAlt3","rule":"TRule_id_window.TAlt3.Rule_keyword_expr_uncompat1","sum":247560},{"parent":"TRule_id_window.TAlt5","rule":"TRule_id_window.TAlt5.Rule_keyword_select_uncompat1","sum":7859},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without1","sum":23143060},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without2","sum":278042},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without6","sum":1135},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without7","sum":527},{"parent":"TRule_id_without.TAlt1","rule":"TRule_id_without.TAlt1.Rule_identifier1","sum":23143060},{"parent":"TRule_id_without.TAlt2","rule":"TRule_id_without.TAlt2.Rule_keyword_compat1","sum":278042},{"parent":"TRule_id_without.TAlt6","rule":"TRule_id_without.TAlt6.Rule_keyword_window_uncompat1","sum":1135},{"parent":"TRule_id_without.TAlt7","rule":"TRule_id_without.TAlt7.Rule_keyword_hint_uncompat1","sum":527},{"parent":"TRule_identifier","rule":"TRule_identifier.Token1","sum":20341456710},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block1","sum":8585409},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block5","sum":2984759},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_do_stmt4","sum":8585453},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_expr3","sum":8585453},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Token2","sum":8585453},{"parent":"TRule_if_stmt.TBlock1","rule":"TRule_if_stmt.TBlock1.Token1","sum":8585409},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Rule_do_stmt2","sum":2984759},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Token1","sum":2984759},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_module_path2","sum":16683079},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_named_bind_parameter_list4","sum":16683079},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token1","sum":16683079},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token3","sum":16683079},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr1","sum":2234},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr10","sum":5136597},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr11","sum":454625},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr2","sum":36512023},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr3","sum":65607797},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr4","sum":44293},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr5","sum":4},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr6","sum":2976915},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr7","sum":9793228},{"parent":"TRule_in_atom_expr.TAlt1","rule":"TRule_in_atom_expr.TAlt1.Rule_literal_value1","sum":2234},{"parent":"TRule_in_atom_expr.TAlt10","rule":"TRule_in_atom_expr.TAlt10.Rule_list_literal1","sum":5136597},{"parent":"TRule_in_atom_expr.TAlt11","rule":"TRule_in_atom_expr.TAlt11.Rule_dict_literal1","sum":454625},{"parent":"TRule_in_atom_expr.TAlt2","rule":"TRule_in_atom_expr.TAlt2.Rule_bind_parameter1","sum":36512023},{"parent":"TRule_in_atom_expr.TAlt3","rule":"TRule_in_atom_expr.TAlt3.Rule_lambda1","sum":65607797},{"parent":"TRule_in_atom_expr.TAlt4","rule":"TRule_in_atom_expr.TAlt4.Rule_cast_expr1","sum":44293},{"parent":"TRule_in_atom_expr.TAlt5","rule":"TRule_in_atom_expr.TAlt5.Rule_case_expr1","sum":4},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Block3","sum":2976915},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Rule_an_id_or_type1","sum":2976915},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Token2","sum":2976915},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3","rule":"TRule_in_atom_expr.TAlt6.TBlock3.Alt1","sum":2976915},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1","rule":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1.Rule_id_or_type1","sum":2976915},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Rule_select_stmt2","sum":9793228},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token1","sum":9793228},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token3","sum":9793228},{"parent":"TRule_in_expr","rule":"TRule_in_expr.Rule_in_unary_subexpr1","sum":126255554},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Block1","sum":126255502},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":126255502},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt1","sum":5727786},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt2","sum":120527716},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr_in1","sum":5727786},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2.Rule_in_atom_expr1","sum":120527716},{"parent":"TRule_in_unary_subexpr","rule":"TRule_in_unary_subexpr.Alt_in_unary_subexpr1","sum":126255502},{"parent":"TRule_in_unary_subexpr","rule":"TRule_in_unary_subexpr.Alt_in_unary_subexpr2","sum":52},{"parent":"TRule_in_unary_subexpr.TAlt1","rule":"TRule_in_unary_subexpr.TAlt1.Rule_in_unary_casual_subexpr1","sum":126255502},{"parent":"TRule_in_unary_subexpr.TAlt2","rule":"TRule_in_unary_subexpr.TAlt2.Rule_json_api_expr1","sum":52},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Rule_define_action_or_subquery_body2","sum":13916092},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token1","sum":13916092},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token3","sum":13916092},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token4","sum":13916092},{"parent":"TRule_integer","rule":"TRule_integer.Token1","sum":2790874162},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind1","sum":55447575},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind2","sum":48703},{"parent":"TRule_integer_or_bind.TAlt1","rule":"TRule_integer_or_bind.TAlt1.Rule_integer1","sum":55447575},{"parent":"TRule_integer_or_bind.TAlt2","rule":"TRule_integer_or_bind.TAlt2.Rule_bind_parameter1","sum":48703},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Block2","sum":25526},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Rule_simple_table_ref1","sum":209729253},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Rule_pure_column_list3","sum":25526},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token1","sum":25526},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token2","sum":25526},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Block1","sum":209729253},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_simple_table_ref3","sum":209729253},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_values_source4","sum":209729253},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Token2","sum":209729253},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt1","sum":209619187},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt5","sum":110065},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt6","sum":1},{"parent":"TRule_into_table_stmt.TBlock1.TAlt1","rule":"TRule_into_table_stmt.TBlock1.TAlt1.Token1","sum":209619187},{"parent":"TRule_into_table_stmt.TBlock1.TAlt5","rule":"TRule_into_table_stmt.TBlock1.TAlt5.Token1","sum":110065},{"parent":"TRule_into_table_stmt.TBlock1.TAlt6","rule":"TRule_into_table_stmt.TBlock1.TAlt6.Token1","sum":1},{"parent":"TRule_into_values_source","rule":"TRule_into_values_source.Alt_into_values_source1","sum":209729253},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Block1","sum":4547156},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Rule_values_source2","sum":209729253},{"parent":"TRule_into_values_source.TAlt1.TBlock1","rule":"TRule_into_values_source.TAlt1.TBlock1.Rule_pure_column_list1","sum":4547156},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Block2","sum":2772691048},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Rule_invoke_expr_tail4","sum":2887374802},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token1","sum":2887374802},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token3","sum":2887374802},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt1","sum":2713595432},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt2","sum":59095616},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Block3","sum":9708052},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_named_expr_list2","sum":2713595432},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_opt_set_quantifier1","sum":2713595432},{"parent":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3","rule":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3.Token1","sum":9708052},{"parent":"TRule_invoke_expr.TBlock2.TAlt2","rule":"TRule_invoke_expr.TBlock2.TAlt2.Token1","sum":59095616},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block1","sum":7293225},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block2","sum":45477385},{"parent":"TRule_invoke_expr_tail.TBlock1","rule":"TRule_invoke_expr_tail.TBlock1.Alt1","sum":7293225},{"parent":"TRule_invoke_expr_tail.TBlock1.TAlt1","rule":"TRule_invoke_expr_tail.TBlock1.TAlt1.Rule_null_treatment1","sum":7293225},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Rule_window_name_or_specification2","sum":45477385},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Token1","sum":45477385},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint1","sum":173497169},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint2","sum":32540623},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Rule_expr2","sum":173497169},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Token1","sum":173497169},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Rule_pure_column_or_named_list2","sum":32540623},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Token1","sum":32540623},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op1","sum":28765},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op2","sum":209109240},{"parent":"TRule_join_op.TAlt1","rule":"TRule_join_op.TAlt1.Token1","sum":28765},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Block2","sum":209109240},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Token3","sum":209109240},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt1","sum":175229648},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt2","sum":30808144},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt3","sum":3071448},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block1","sum":127077276},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block2","sum":295958},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt1","sum":119139880},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt2","sum":1700064},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt3","sum":285919},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt4","sum":5951413},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Block2","sum":19730652},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Token1","sum":119139880},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2.Token1","sum":19730652},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Block2","sum":519930},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Token1","sum":1700064},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2.Token1","sum":519930},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3.Token1","sum":285919},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4.Token1","sum":5951413},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2.Token1","sum":295958},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt2.Token1","sum":30808144},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt3.Token1","sum":3071448},{"parent":"TRule_join_source","rule":"TRule_join_source.Block1","sum":625518},{"parent":"TRule_join_source","rule":"TRule_join_source.Block3","sum":145768895},{"parent":"TRule_join_source","rule":"TRule_join_source.Rule_flatten_source2","sum":846229398},{"parent":"TRule_join_source.TBlock1","rule":"TRule_join_source.TBlock1.Token1","sum":625518},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block2","sum":14080518},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block4","sum":206037792},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_flatten_source3","sum":209138005},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_join_op1","sum":209138005},{"parent":"TRule_join_source.TBlock3.TBlock2","rule":"TRule_join_source.TBlock3.TBlock2.Token1","sum":14080518},{"parent":"TRule_join_source.TBlock3.TBlock4","rule":"TRule_join_source.TBlock3.TBlock4.Rule_join_constraint1","sum":206037792},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr1","sum":5833983},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr2","sum":184354},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr3","sum":316587},{"parent":"TRule_json_api_expr.TAlt1","rule":"TRule_json_api_expr.TAlt1.Rule_json_value1","sum":5833983},{"parent":"TRule_json_api_expr.TAlt2","rule":"TRule_json_api_expr.TAlt2.Rule_json_exists1","sum":184354},{"parent":"TRule_json_api_expr.TAlt3","rule":"TRule_json_api_expr.TAlt3.Rule_json_query1","sum":316587},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler1","sum":7134},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler2","sum":14319},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler3","sum":200472},{"parent":"TRule_json_case_handler.TAlt1","rule":"TRule_json_case_handler.TAlt1.Token1","sum":7134},{"parent":"TRule_json_case_handler.TAlt2","rule":"TRule_json_case_handler.TAlt2.Token1","sum":14319},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Rule_expr2","sum":200472},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Token1","sum":200472},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Block4","sum":20022},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_expr1","sum":6334924},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_jsonpath_spec3","sum":6334924},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Token2","sum":6334924},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Rule_json_variables2","sum":20022},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Token1","sum":20022},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Block4","sum":116},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Rule_json_common_args3","sum":184354},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token1","sum":184354},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token2","sum":184354},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token5","sum":184354},{"parent":"TRule_json_exists.TBlock4","rule":"TRule_json_exists.TBlock4.Rule_json_exists_handler1","sum":116},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token1","sum":116},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token2","sum":116},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token3","sum":116},{"parent":"TRule_json_query","rule":"TRule_json_query.Block4","sum":191123},{"parent":"TRule_json_query","rule":"TRule_json_query.Block5","sum":86},{"parent":"TRule_json_query","rule":"TRule_json_query.Block6","sum":4123},{"parent":"TRule_json_query","rule":"TRule_json_query.Rule_json_common_args3","sum":316587},{"parent":"TRule_json_query","rule":"TRule_json_query.Token1","sum":316587},{"parent":"TRule_json_query","rule":"TRule_json_query.Token2","sum":316587},{"parent":"TRule_json_query","rule":"TRule_json_query.Token7","sum":316587},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Rule_json_query_wrapper1","sum":191123},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Token2","sum":191123},{"parent":"TRule_json_query.TBlock5","rule":"TRule_json_query.TBlock5.Rule_json_query_handler1","sum":86},{"parent":"TRule_json_query.TBlock5","rule":"TRule_json_query.TBlock5.Token2","sum":86},{"parent":"TRule_json_query.TBlock5","rule":"TRule_json_query.TBlock5.Token3","sum":86},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Rule_json_query_handler1","sum":4123},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Token2","sum":4123},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Token3","sum":4123},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler1","sum":1675},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler2","sum":26},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler3","sum":2289},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler4","sum":219},{"parent":"TRule_json_query_handler.TAlt1","rule":"TRule_json_query_handler.TAlt1.Token1","sum":1675},{"parent":"TRule_json_query_handler.TAlt2","rule":"TRule_json_query_handler.TAlt2.Token1","sum":26},{"parent":"TRule_json_query_handler.TAlt3","rule":"TRule_json_query_handler.TAlt3.Token1","sum":2289},{"parent":"TRule_json_query_handler.TAlt3","rule":"TRule_json_query_handler.TAlt3.Token2","sum":2289},{"parent":"TRule_json_query_handler.TAlt4","rule":"TRule_json_query_handler.TAlt4.Token1","sum":219},{"parent":"TRule_json_query_handler.TAlt4","rule":"TRule_json_query_handler.TAlt4.Token2","sum":219},{"parent":"TRule_json_query_wrapper","rule":"TRule_json_query_wrapper.Alt_json_query_wrapper1","sum":45},{"parent":"TRule_json_query_wrapper","rule":"TRule_json_query_wrapper.Alt_json_query_wrapper2","sum":191078},{"parent":"TRule_json_query_wrapper.TAlt1","rule":"TRule_json_query_wrapper.TAlt1.Block2","sum":10},{"parent":"TRule_json_query_wrapper.TAlt1","rule":"TRule_json_query_wrapper.TAlt1.Token1","sum":45},{"parent":"TRule_json_query_wrapper.TAlt1.TBlock2","rule":"TRule_json_query_wrapper.TAlt1.TBlock2.Token1","sum":10},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Block2","sum":166591},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Block3","sum":32430},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Token1","sum":191078},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock2","rule":"TRule_json_query_wrapper.TAlt2.TBlock2.Token1","sum":166591},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock3","rule":"TRule_json_query_wrapper.TAlt2.TBlock3.Token1","sum":32430},{"parent":"TRule_json_value","rule":"TRule_json_value.Block4","sum":1331547},{"parent":"TRule_json_value","rule":"TRule_json_value.Block5","sum":202436},{"parent":"TRule_json_value","rule":"TRule_json_value.Rule_json_common_args3","sum":5833983},{"parent":"TRule_json_value","rule":"TRule_json_value.Token1","sum":5833983},{"parent":"TRule_json_value","rule":"TRule_json_value.Token2","sum":5833983},{"parent":"TRule_json_value","rule":"TRule_json_value.Token6","sum":5833983},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Rule_type_name_simple2","sum":1331547},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Token1","sum":1331547},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Rule_json_case_handler1","sum":221925},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token2","sum":221925},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token3","sum":221925},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_expr1","sum":20029},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_json_variable_name3","sum":20029},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Token2","sum":20029},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name1","sum":17733},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name2","sum":2296},{"parent":"TRule_json_variable_name.TAlt1","rule":"TRule_json_variable_name.TAlt1.Rule_id_expr1","sum":17733},{"parent":"TRule_json_variable_name.TAlt2","rule":"TRule_json_variable_name.TAlt2.Token1","sum":2296},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Block2","sum":7},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Rule_json_variable1","sum":20022},{"parent":"TRule_json_variables.TBlock2","rule":"TRule_json_variables.TBlock2.Rule_json_variable2","sum":7},{"parent":"TRule_json_variables.TBlock2","rule":"TRule_json_variables.TBlock2.Token1","sum":7},{"parent":"TRule_jsonpath_spec","rule":"TRule_jsonpath_spec.Token1","sum":6334924},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Rule_expr2","sum":174308643},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token1","sum":174308643},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token3","sum":174308643},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword1","sum":482428535},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword2","sum":33736185},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword3","sum":520570},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword4","sum":9123289},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword5","sum":781531},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword6","sum":23587},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword7","sum":3908877},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword8","sum":2527973},{"parent":"TRule_keyword.TAlt1","rule":"TRule_keyword.TAlt1.Rule_keyword_compat1","sum":482428535},{"parent":"TRule_keyword.TAlt2","rule":"TRule_keyword.TAlt2.Rule_keyword_expr_uncompat1","sum":33736185},{"parent":"TRule_keyword.TAlt3","rule":"TRule_keyword.TAlt3.Rule_keyword_table_uncompat1","sum":520570},{"parent":"TRule_keyword.TAlt4","rule":"TRule_keyword.TAlt4.Rule_keyword_select_uncompat1","sum":9123289},{"parent":"TRule_keyword.TAlt5","rule":"TRule_keyword.TAlt5.Rule_keyword_alter_uncompat1","sum":781531},{"parent":"TRule_keyword.TAlt6","rule":"TRule_keyword.TAlt6.Rule_keyword_in_uncompat1","sum":23587},{"parent":"TRule_keyword.TAlt7","rule":"TRule_keyword.TAlt7.Rule_keyword_window_uncompat1","sum":3908877},{"parent":"TRule_keyword.TAlt8","rule":"TRule_keyword.TAlt8.Rule_keyword_hint_uncompat1","sum":2527973},{"parent":"TRule_keyword_alter_uncompat","rule":"TRule_keyword_alter_uncompat.Token1","sum":1199069},{"parent":"TRule_keyword_as_compat","rule":"TRule_keyword_as_compat.Token1","sum":2690},{"parent":"TRule_keyword_compat","rule":"TRule_keyword_compat.Token1","sum":804310489},{"parent":"TRule_keyword_expr_uncompat","rule":"TRule_keyword_expr_uncompat.Token1","sum":34008279},{"parent":"TRule_keyword_hint_uncompat","rule":"TRule_keyword_hint_uncompat.Token1","sum":2710023},{"parent":"TRule_keyword_in_uncompat","rule":"TRule_keyword_in_uncompat.Token1","sum":23591},{"parent":"TRule_keyword_select_uncompat","rule":"TRule_keyword_select_uncompat.Token1","sum":9143621},{"parent":"TRule_keyword_table_uncompat","rule":"TRule_keyword_table_uncompat.Token1","sum":520570},{"parent":"TRule_keyword_window_uncompat","rule":"TRule_keyword_window_uncompat.Token1","sum":39150305},{"parent":"TRule_lambda","rule":"TRule_lambda.Block2","sum":209437719},{"parent":"TRule_lambda","rule":"TRule_lambda.Rule_smart_parenthesis1","sum":513744527},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Block2","sum":209437719},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Token1","sum":209437719},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt1","sum":42716613},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt2","sum":166721106},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Rule_expr2","sum":42716613},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token1","sum":42716613},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token3","sum":42716613},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Rule_lambda_body2","sum":166721106},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token1","sum":166721106},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token3","sum":166721106},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block1","sum":158},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block2","sum":34886821},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block5","sum":87884482},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Rule_expr4","sum":166721106},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Token3","sum":166721106},{"parent":"TRule_lambda_body.TBlock1","rule":"TRule_lambda_body.TBlock1.Token1","sum":158},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Block2","sum":63980565},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Rule_lambda_stmt1","sum":63980565},{"parent":"TRule_lambda_body.TBlock2.TBlock2","rule":"TRule_lambda_body.TBlock2.TBlock2.Token1","sum":63981788},{"parent":"TRule_lambda_body.TBlock5","rule":"TRule_lambda_body.TBlock5.Token1","sum":87892837},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt1","sum":63977894},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt2","sum":2671},{"parent":"TRule_lambda_stmt.TAlt1","rule":"TRule_lambda_stmt.TAlt1.Rule_named_nodes_stmt1","sum":63977894},{"parent":"TRule_lambda_stmt.TAlt2","rule":"TRule_lambda_stmt.TAlt2.Rule_import_stmt1","sum":2671},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block2","sum":35495407},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block3","sum":2318102},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token1","sum":41296835},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token4","sum":41296835},{"parent":"TRule_list_literal.TBlock2","rule":"TRule_list_literal.TBlock2.Rule_expr_list1","sum":35495407},{"parent":"TRule_list_literal.TBlock3","rule":"TRule_list_literal.TBlock3.Token1","sum":2318102},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value1","sum":2735426586},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value10","sum":2},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value2","sum":109366652},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value3","sum":2128186998},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value5","sum":79765448},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value9","sum":104618486},{"parent":"TRule_literal_value.TAlt1","rule":"TRule_literal_value.TAlt1.Rule_integer1","sum":2735426586},{"parent":"TRule_literal_value.TAlt10","rule":"TRule_literal_value.TAlt10.Token1","sum":2},{"parent":"TRule_literal_value.TAlt2","rule":"TRule_literal_value.TAlt2.Rule_real1","sum":109366652},{"parent":"TRule_literal_value.TAlt3","rule":"TRule_literal_value.TAlt3.Token1","sum":2128186998},{"parent":"TRule_literal_value.TAlt5","rule":"TRule_literal_value.TAlt5.Token1","sum":79765448},{"parent":"TRule_literal_value.TAlt9","rule":"TRule_literal_value.TAlt9.Rule_bool_value1","sum":104618486},{"parent":"TRule_match_op","rule":"TRule_match_op.Token1","sum":52393370},{"parent":"TRule_module_path","rule":"TRule_module_path.Block3","sum":366179},{"parent":"TRule_module_path","rule":"TRule_module_path.Rule_an_id2","sum":16683079},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Rule_an_id2","sum":1091501},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Token1","sum":1091501},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Block2","sum":115511745},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Rule_con_subexpr1","sum":15807788790},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Rule_con_subexpr2","sum":229859013},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Token1","sum":229859013},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Block2","sum":146935},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Rule_bind_parameter1","sum":38101725},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Rule_bind_parameter2","sum":146935},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Token1","sum":146935},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Block2","sum":7116652},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Rule_named_bind_parameter1","sum":16683079},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Rule_named_bind_parameter2","sum":21418646},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Token1","sum":21418646},{"parent":"TRule_named_column","rule":"TRule_named_column.Block2","sum":7211613},{"parent":"TRule_named_column","rule":"TRule_named_column.Rule_column_name1","sum":21451704},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Rule_an_id2","sum":7211613},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Token1","sum":7211613},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Block2","sum":156898577},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Rule_expr1","sum":7198460211},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Rule_an_id_or_type2","sum":156898577},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Token1","sum":156898577},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Block2","sum":1187842181},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Rule_named_expr1","sum":3249792168},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Rule_named_expr2","sum":3454448866},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Token1","sum":3454448866},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Block3","sum":1010795718},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Rule_bind_parameter_list1","sum":1010795718},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Token2","sum":1010795718},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt1","sum":679747353},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt2","sum":331048365},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt1","rule":"TRule_named_nodes_stmt.TBlock3.TAlt1.Rule_expr1","sum":679747353},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt2","rule":"TRule_named_nodes_stmt.TBlock3.TAlt2.Rule_subselect_stmt1","sum":331048365},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block2","sum":1},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block3","sum":443834067},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block4","sum":404619},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Rule_single_source1","sum":1061003000},{"parent":"TRule_named_single_source.TBlock2","rule":"TRule_named_single_source.TBlock2.Rule_row_pattern_recognition_clause1","sum":1},{"parent":"TRule_named_single_source.TBlock3","rule":"TRule_named_single_source.TBlock3.Block1","sum":443834067},{"parent":"TRule_named_single_source.TBlock3","rule":"TRule_named_single_source.TBlock3.Block2","sum":160877},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt1","sum":441664725},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt2","sum":2169342},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Rule_an_id2","sum":441664725},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Token1","sum":441664725},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt2","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt2.Rule_an_id_as_compat1","sum":2169342},{"parent":"TRule_named_single_source.TBlock3.TBlock2","rule":"TRule_named_single_source.TBlock3.TBlock2.Rule_pure_column_list1","sum":160877},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt1","sum":75458},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt2","sum":329161},{"parent":"TRule_named_single_source.TBlock4.TAlt1","rule":"TRule_named_single_source.TBlock4.TAlt1.Rule_sample_clause1","sum":75458},{"parent":"TRule_named_single_source.TBlock4.TAlt2","rule":"TRule_named_single_source.TBlock4.TAlt2.Rule_tablesample_clause1","sum":329161},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block2","sum":9155251},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block3","sum":111857165},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Rule_bit_subexpr1","sum":15473389132},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Block1","sum":9223987},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Rule_bit_subexpr2","sum":9223987},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt1","sum":8107015},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt2","sum":53924},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt3","sum":469},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt4","sum":23},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt5","sum":761022},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt6","sum":134512},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt7","sum":167022},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1.Token1","sum":8107015},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2.Rule_shift_right1","sum":53924},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt3","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt3.Token1","sum":469},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt4","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt4.Rule_rot_right1","sum":23},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt5","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt5.Token1","sum":761022},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6.Token1","sum":134512},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7.Token1","sum":167022},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt1","sum":108073061},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt2","sum":3784104},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_double_question1","sum":108073061},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_neq_subexpr2","sum":108073061},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2","rule":"TRule_neq_subexpr.TBlock3.TAlt2.Block1","sum":3784104},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1","rule":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1.Token1","sum":3796088},{"parent":"TRule_new_window_name","rule":"TRule_new_window_name.Rule_window_name1","sum":14203555},{"parent":"TRule_null_treatment","rule":"TRule_null_treatment.Alt_null_treatment1","sum":45},{"parent":"TRule_null_treatment","rule":"TRule_null_treatment.Alt_null_treatment2","sum":7293180},{"parent":"TRule_null_treatment.TAlt1","rule":"TRule_null_treatment.TAlt1.Token1","sum":45},{"parent":"TRule_null_treatment.TAlt1","rule":"TRule_null_treatment.TAlt1.Token2","sum":45},{"parent":"TRule_null_treatment.TAlt2","rule":"TRule_null_treatment.TAlt2.Token1","sum":7293180},{"parent":"TRule_null_treatment.TAlt2","rule":"TRule_null_treatment.TAlt2.Token2","sum":7293180},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Block1","sum":5299636},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Rule_id_or_at2","sum":133959216},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Rule_cluster_expr1","sum":5299636},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Token2","sum":5299636},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Block2","sum":27110},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Rule_bind_parameter1","sum":21592253},{"parent":"TRule_opt_bind_parameter.TBlock2","rule":"TRule_opt_bind_parameter.TBlock2.Token1","sum":27110},{"parent":"TRule_opt_id_prefix","rule":"TRule_opt_id_prefix.Block1","sum":83358715},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Rule_an_id1","sum":83358715},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Token2","sum":83358715},{"parent":"TRule_opt_id_prefix_or_type","rule":"TRule_opt_id_prefix_or_type.Block1","sum":781387829},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Rule_an_id_or_type1","sum":781387829},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Token2","sum":781387829},{"parent":"TRule_opt_set_quantifier","rule":"TRule_opt_set_quantifier.Block1","sum":70623450},{"parent":"TRule_opt_set_quantifier.TBlock1","rule":"TRule_opt_set_quantifier.TBlock1.Token1","sum":70623450},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Block2","sum":277843391},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Rule_and_subexpr1","sum":13829126938},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Rule_and_subexpr2","sum":472165179},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Token1","sum":472165179},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Rule_sort_specification_list3","sum":108121721},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token1","sum":108121721},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token2","sum":108121721},{"parent":"TRule_ordinary_grouping_set","rule":"TRule_ordinary_grouping_set.Rule_named_expr1","sum":301878091},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Block2","sum":199601},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Rule_ordinary_grouping_set1","sum":339378},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Rule_ordinary_grouping_set2","sum":432788},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Token1","sum":432788},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Block4","sum":795793494},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_an_id3","sum":900857158},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_opt_id_prefix_or_type2","sum":900857158},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Token1","sum":900857158},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt1","sum":747636788},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt2","sum":48156706},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Rule_pragma_value2","sum":747636788},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Token1","sum":747636788},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Block3","sum":17774430},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Rule_pragma_value2","sum":48156706},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token1","sum":48156706},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token4","sum":48156706},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Rule_pragma_value2","sum":18600130},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Token1","sum":18600130},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value2","sum":256129},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value3","sum":801902681},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value5","sum":12234814},{"parent":"TRule_pragma_value.TAlt2","rule":"TRule_pragma_value.TAlt2.Rule_id1","sum":256129},{"parent":"TRule_pragma_value.TAlt3","rule":"TRule_pragma_value.TAlt3.Token1","sum":801902681},{"parent":"TRule_pragma_value.TAlt5","rule":"TRule_pragma_value.TAlt5.Rule_bind_parameter1","sum":12234814},{"parent":"TRule_process_core","rule":"TRule_process_core.Block4","sum":1132},{"parent":"TRule_process_core","rule":"TRule_process_core.Block5","sum":1930068},{"parent":"TRule_process_core","rule":"TRule_process_core.Rule_named_single_source3","sum":4560899},{"parent":"TRule_process_core","rule":"TRule_process_core.Token1","sum":4560899},{"parent":"TRule_process_core.TBlock4","rule":"TRule_process_core.TBlock4.Rule_named_single_source2","sum":1133},{"parent":"TRule_process_core.TBlock4","rule":"TRule_process_core.TBlock4.Token1","sum":1133},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block3","sum":46},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block5","sum":4746},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block7","sum":34},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Rule_using_call_expr2","sum":1930068},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Token1","sum":1930068},{"parent":"TRule_process_core.TBlock5.TBlock3","rule":"TRule_process_core.TBlock5.TBlock3.Rule_an_id2","sum":46},{"parent":"TRule_process_core.TBlock5.TBlock3","rule":"TRule_process_core.TBlock5.TBlock3.Token1","sum":46},{"parent":"TRule_process_core.TBlock5.TBlock5","rule":"TRule_process_core.TBlock5.TBlock5.Rule_expr2","sum":4746},{"parent":"TRule_process_core.TBlock5.TBlock5","rule":"TRule_process_core.TBlock5.TBlock5.Token1","sum":4746},{"parent":"TRule_process_core.TBlock5.TBlock7","rule":"TRule_process_core.TBlock5.TBlock7.Rule_order_by_clause2","sum":34},{"parent":"TRule_process_core.TBlock5.TBlock7","rule":"TRule_process_core.TBlock5.TBlock7.Token1","sum":34},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Block3","sum":3992593},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Rule_an_id2","sum":4733559},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token1","sum":4733559},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token4","sum":4733559},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Rule_an_id2","sum":35642659},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Token1","sum":35642659},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named1","sum":6613454},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named2","sum":426458416},{"parent":"TRule_pure_column_or_named.TAlt1","rule":"TRule_pure_column_or_named.TAlt1.Rule_bind_parameter1","sum":6613454},{"parent":"TRule_pure_column_or_named.TAlt2","rule":"TRule_pure_column_or_named.TAlt2.Rule_an_id1","sum":426458416},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Block3","sum":11681930},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Rule_pure_column_or_named2","sum":32540623},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token1","sum":32540623},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token4","sum":32540623},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Rule_pure_column_or_named2","sum":21745838},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Token1","sum":21745838},{"parent":"TRule_real","rule":"TRule_real.Token1","sum":109366652},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block11","sum":8856},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block13","sum":26511},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block3","sum":124903},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block4","sum":307402},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block8","sum":320487},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_column_list6","sum":858313},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_named_single_source2","sum":858313},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_using_call_expr9","sum":858313},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token1","sum":858313},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token5","sum":858313},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token7","sum":858313},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Rule_expr2","sum":8856},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Token1","sum":8856},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Rule_order_by_clause2","sum":26511},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Token1","sum":26511},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Rule_named_single_source2","sum":215252},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Token1","sum":215252},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Rule_sort_specification_list2","sum":307402},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Token1","sum":307402},{"parent":"TRule_reduce_core.TBlock8","rule":"TRule_reduce_core.TBlock8.Token1","sum":320487},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Rule_expr3","sum":9382},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token1","sum":9382},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token2","sum":9382},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token4","sum":9382},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column1","sum":251358239},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column2","sum":3456316763},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Rule_opt_id_prefix1","sum":251358239},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Token2","sum":251358239},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Block2","sum":1993067250},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Rule_expr1","sum":3456316763},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt1","sum":1992199458},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt2","sum":867792},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Rule_an_id_or_type2","sum":1992199458},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Token1","sum":1992199458},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt2","rule":"TRule_result_column.TAlt2.TBlock2.TAlt2.Rule_an_id_as_compat1","sum":867792},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Rule_ordinary_grouping_set_list3","sum":63017},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token1","sum":63017},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token2","sum":63017},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token4","sum":63017},{"parent":"TRule_rot_right","rule":"TRule_rot_right.Token1","sum":23},{"parent":"TRule_rot_right","rule":"TRule_rot_right.Token2","sum":23},{"parent":"TRule_rot_right","rule":"TRule_rot_right.Token3","sum":23},{"parent":"TRule_row_pattern","rule":"TRule_row_pattern.Rule_row_pattern_term1","sum":2},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Rule_row_pattern5","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Rule_row_pattern_definition_list9","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token3","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token4","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token6","sum":1},{"parent":"TRule_row_pattern_common_syntax","rule":"TRule_row_pattern_common_syntax.Token8","sum":1},{"parent":"TRule_row_pattern_definition","rule":"TRule_row_pattern_definition.Rule_row_pattern_definition_search_condition3","sum":1},{"parent":"TRule_row_pattern_definition","rule":"TRule_row_pattern_definition.Rule_row_pattern_definition_variable_name1","sum":1},{"parent":"TRule_row_pattern_definition","rule":"TRule_row_pattern_definition.Token2","sum":1},{"parent":"TRule_row_pattern_definition_list","rule":"TRule_row_pattern_definition_list.Rule_row_pattern_definition1","sum":1},{"parent":"TRule_row_pattern_definition_search_condition","rule":"TRule_row_pattern_definition_search_condition.Rule_search_condition1","sum":1},{"parent":"TRule_row_pattern_definition_variable_name","rule":"TRule_row_pattern_definition_variable_name.Rule_row_pattern_variable_name1","sum":1},{"parent":"TRule_row_pattern_factor","rule":"TRule_row_pattern_factor.Block2","sum":1},{"parent":"TRule_row_pattern_factor","rule":"TRule_row_pattern_factor.Rule_row_pattern_primary1","sum":2},{"parent":"TRule_row_pattern_factor.TBlock2","rule":"TRule_row_pattern_factor.TBlock2.Rule_row_pattern_quantifier1","sum":1},{"parent":"TRule_row_pattern_measure_definition","rule":"TRule_row_pattern_measure_definition.Rule_an_id3","sum":3},{"parent":"TRule_row_pattern_measure_definition","rule":"TRule_row_pattern_measure_definition.Rule_expr1","sum":3},{"parent":"TRule_row_pattern_measure_definition","rule":"TRule_row_pattern_measure_definition.Token2","sum":3},{"parent":"TRule_row_pattern_measure_list","rule":"TRule_row_pattern_measure_list.Block2","sum":1},{"parent":"TRule_row_pattern_measure_list","rule":"TRule_row_pattern_measure_list.Rule_row_pattern_measure_definition1","sum":1},{"parent":"TRule_row_pattern_measure_list.TBlock2","rule":"TRule_row_pattern_measure_list.TBlock2.Rule_row_pattern_measure_definition2","sum":2},{"parent":"TRule_row_pattern_measure_list.TBlock2","rule":"TRule_row_pattern_measure_list.TBlock2.Token1","sum":2},{"parent":"TRule_row_pattern_measures","rule":"TRule_row_pattern_measures.Rule_row_pattern_measure_list2","sum":1},{"parent":"TRule_row_pattern_measures","rule":"TRule_row_pattern_measures.Token1","sum":1},{"parent":"TRule_row_pattern_primary","rule":"TRule_row_pattern_primary.Alt_row_pattern_primary1","sum":1},{"parent":"TRule_row_pattern_primary","rule":"TRule_row_pattern_primary.Alt_row_pattern_primary4","sum":1},{"parent":"TRule_row_pattern_primary.TAlt1","rule":"TRule_row_pattern_primary.TAlt1.Rule_row_pattern_primary_variable_name1","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4","rule":"TRule_row_pattern_primary.TAlt4.Block2","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4","rule":"TRule_row_pattern_primary.TAlt4.Token1","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4","rule":"TRule_row_pattern_primary.TAlt4.Token3","sum":1},{"parent":"TRule_row_pattern_primary.TAlt4.TBlock2","rule":"TRule_row_pattern_primary.TAlt4.TBlock2.Rule_row_pattern1","sum":1},{"parent":"TRule_row_pattern_primary_variable_name","rule":"TRule_row_pattern_primary_variable_name.Rule_row_pattern_variable_name1","sum":1},{"parent":"TRule_row_pattern_quantifier","rule":"TRule_row_pattern_quantifier.Alt_row_pattern_quantifier5","sum":1},{"parent":"TRule_row_pattern_quantifier.TAlt5","rule":"TRule_row_pattern_quantifier.TAlt5.Rule_integer2","sum":1},{"parent":"TRule_row_pattern_quantifier.TAlt5","rule":"TRule_row_pattern_quantifier.TAlt5.Token1","sum":1},{"parent":"TRule_row_pattern_quantifier.TAlt5","rule":"TRule_row_pattern_quantifier.TAlt5.Token3","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block3","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block4","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block5","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Block6","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Rule_row_pattern_common_syntax7","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Token1","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Token2","sum":1},{"parent":"TRule_row_pattern_recognition_clause","rule":"TRule_row_pattern_recognition_clause.Token8","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock3","rule":"TRule_row_pattern_recognition_clause.TBlock3.Rule_window_partition_clause1","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock4","rule":"TRule_row_pattern_recognition_clause.TBlock4.Rule_order_by_clause1","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock5","rule":"TRule_row_pattern_recognition_clause.TBlock5.Rule_row_pattern_measures1","sum":1},{"parent":"TRule_row_pattern_recognition_clause.TBlock6","rule":"TRule_row_pattern_recognition_clause.TBlock6.Rule_row_pattern_rows_per_match1","sum":1},{"parent":"TRule_row_pattern_rows_per_match","rule":"TRule_row_pattern_rows_per_match.Alt_row_pattern_rows_per_match1","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token1","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token2","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token3","sum":1},{"parent":"TRule_row_pattern_rows_per_match.TAlt1","rule":"TRule_row_pattern_rows_per_match.TAlt1.Token4","sum":1},{"parent":"TRule_row_pattern_term","rule":"TRule_row_pattern_term.Block1","sum":2},{"parent":"TRule_row_pattern_term.TBlock1","rule":"TRule_row_pattern_term.TBlock1.Rule_row_pattern_factor1","sum":2},{"parent":"TRule_row_pattern_variable_name","rule":"TRule_row_pattern_variable_name.Rule_identifier1","sum":2},{"parent":"TRule_sample_clause","rule":"TRule_sample_clause.Rule_expr2","sum":75458},{"parent":"TRule_sample_clause","rule":"TRule_sample_clause.Token1","sum":75458},{"parent":"TRule_sampling_mode","rule":"TRule_sampling_mode.Token1","sum":329161},{"parent":"TRule_search_condition","rule":"TRule_search_condition.Rule_expr1","sum":1},{"parent":"TRule_select_core","rule":"TRule_select_core.Block1","sum":10677032},{"parent":"TRule_select_core","rule":"TRule_select_core.Block10","sum":341490928},{"parent":"TRule_select_core","rule":"TRule_select_core.Block11","sum":138061902},{"parent":"TRule_select_core","rule":"TRule_select_core.Block12","sum":12007001},{"parent":"TRule_select_core","rule":"TRule_select_core.Block13","sum":13625726},{"parent":"TRule_select_core","rule":"TRule_select_core.Block14","sum":89004653},{"parent":"TRule_select_core","rule":"TRule_select_core.Block3","sum":117},{"parent":"TRule_select_core","rule":"TRule_select_core.Block6","sum":530771003},{"parent":"TRule_select_core","rule":"TRule_select_core.Block7","sum":94096389},{"parent":"TRule_select_core","rule":"TRule_select_core.Block8","sum":25026920},{"parent":"TRule_select_core","rule":"TRule_select_core.Block9","sum":835552366},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_opt_set_quantifier4","sum":907141337},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_result_column5","sum":907141337},{"parent":"TRule_select_core","rule":"TRule_select_core.Token2","sum":907141337},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Rule_join_source2","sum":10677032},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Token1","sum":10677032},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Rule_expr2","sum":341490928},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Token1","sum":341490928},{"parent":"TRule_select_core.TBlock11","rule":"TRule_select_core.TBlock11.Rule_group_by_clause1","sum":138061902},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Rule_expr2","sum":12007001},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Token1","sum":12007001},{"parent":"TRule_select_core.TBlock13","rule":"TRule_select_core.TBlock13.Rule_window_clause1","sum":13625726},{"parent":"TRule_select_core.TBlock14","rule":"TRule_select_core.TBlock14.Rule_ext_order_by_clause1","sum":89004653},{"parent":"TRule_select_core.TBlock3","rule":"TRule_select_core.TBlock3.Token1","sum":117},{"parent":"TRule_select_core.TBlock6","rule":"TRule_select_core.TBlock6.Rule_result_column2","sum":2800533665},{"parent":"TRule_select_core.TBlock6","rule":"TRule_select_core.TBlock6.Token1","sum":2800533665},{"parent":"TRule_select_core.TBlock7","rule":"TRule_select_core.TBlock7.Token1","sum":94096389},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Block2","sum":63},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Rule_without_column_list3","sum":25026920},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Token1","sum":25026920},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token1","sum":63},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token2","sum":63},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Rule_join_source2","sum":835552366},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Token1","sum":835552366},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block1","sum":927614},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block2","sum":912560549},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block3","sum":2880688},{"parent":"TRule_select_kind.TBlock1","rule":"TRule_select_kind.TBlock1.Token1","sum":927614},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt1","sum":4560899},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt2","sum":858313},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt3","sum":907141337},{"parent":"TRule_select_kind.TBlock2.TAlt1","rule":"TRule_select_kind.TBlock2.TAlt1.Rule_process_core1","sum":4560899},{"parent":"TRule_select_kind.TBlock2.TAlt2","rule":"TRule_select_kind.TBlock2.TAlt2.Rule_reduce_core1","sum":858313},{"parent":"TRule_select_kind.TBlock2.TAlt3","rule":"TRule_select_kind.TBlock2.TAlt3.Rule_select_core1","sum":907141337},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Rule_pure_column_or_named3","sum":2880688},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token1","sum":2880688},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token2","sum":2880688},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis1","sum":781508132},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis2","sum":8012379},{"parent":"TRule_select_kind_parenthesis.TAlt1","rule":"TRule_select_kind_parenthesis.TAlt1.Rule_select_kind_partial1","sum":781508132},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Rule_select_kind_partial2","sum":8012379},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token1","sum":8012379},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token3","sum":8012379},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Block2","sum":30835525},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Rule_select_kind1","sum":912560549},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Block3","sum":4694367},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Rule_expr2","sum":30835525},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Token1","sum":30835525},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Rule_expr2","sum":4694367},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Token1","sum":4694367},{"parent":"TRule_select_op","rule":"TRule_select_op.Alt_select_op1","sum":63995060},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Block2","sum":63061679},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Token1","sum":63995060},{"parent":"TRule_select_op.TAlt1.TBlock2","rule":"TRule_select_op.TAlt1.TBlock2.Token1","sum":63061679},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Block2","sum":33347504},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Rule_select_kind_parenthesis1","sum":725525451},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":56999230},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_op1","sum":56999230},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Block2","sum":4320245},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Rule_select_kind_partial1","sum":123040038},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":6995830},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_op1","sum":6995830},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token1","sum":53924},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token2","sum":53924},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Block2","sum":143496843},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Rule_simple_table_ref_core1","sum":212302112},{"parent":"TRule_simple_table_ref.TBlock2","rule":"TRule_simple_table_ref.TBlock2.Rule_table_hints1","sum":143496843},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core1","sum":133959216},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core2","sum":78342896},{"parent":"TRule_simple_table_ref_core.TAlt1","rule":"TRule_simple_table_ref_core.TAlt1.Rule_object_ref1","sum":133959216},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Block1","sum":71527},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Rule_bind_parameter2","sum":78342896},{"parent":"TRule_simple_table_ref_core.TAlt2.TBlock1","rule":"TRule_simple_table_ref_core.TAlt2.TBlock1.Token1","sum":71527},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source1","sum":955906317},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source2","sum":104927242},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source3","sum":169441},{"parent":"TRule_single_source.TAlt1","rule":"TRule_single_source.TAlt1.Rule_table_ref1","sum":955906317},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Rule_select_stmt2","sum":104927242},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token1","sum":104927242},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token3","sum":104927242},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Rule_values_stmt2","sum":169441},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token1","sum":169441},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token3","sum":169441},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block2","sum":509972815},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block3","sum":2668059},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token1","sum":513744527},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token4","sum":513744527},{"parent":"TRule_smart_parenthesis.TBlock2","rule":"TRule_smart_parenthesis.TBlock2.Rule_named_expr_list1","sum":509972815},{"parent":"TRule_smart_parenthesis.TBlock3","rule":"TRule_smart_parenthesis.TBlock3.Token1","sum":2668059},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Block2","sum":33272816},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Rule_expr1","sum":182332141},{"parent":"TRule_sort_specification.TBlock2","rule":"TRule_sort_specification.TBlock2.Token1","sum":33272816},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Block2","sum":40028678},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Rule_sort_specification1","sum":108429123},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Rule_sort_specification2","sum":73903018},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Token1","sum":73903018},{"parent":"TRule_sql_query","rule":"TRule_sql_query.Alt_sql_query1","sum":321178940},{"parent":"TRule_sql_query.TAlt1","rule":"TRule_sql_query.TAlt1.Rule_sql_stmt_list1","sum":321178940},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Block1","sum":53},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Rule_sql_stmt_core2","sum":2731471309},{"parent":"TRule_sql_stmt.TBlock1","rule":"TRule_sql_stmt.TBlock1.Token1","sum":53},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core1","sum":900857158},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core12","sum":156792290},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core13","sum":16680408},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core17","sum":4719917},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core18","sum":22375819},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core19","sum":8585453},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core2","sum":194079479},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core20","sum":7048194},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core21","sum":322},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core3","sum":946817824},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core4","sum":125},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core5","sum":2572734},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core6","sum":330553175},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core7","sum":209729253},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core8","sum":13057020},{"parent":"TRule_sql_stmt_core.TAlt1","rule":"TRule_sql_stmt_core.TAlt1.Rule_pragma_stmt1","sum":900857158},{"parent":"TRule_sql_stmt_core.TAlt12","rule":"TRule_sql_stmt_core.TAlt12.Rule_declare_stmt1","sum":156792290},{"parent":"TRule_sql_stmt_core.TAlt13","rule":"TRule_sql_stmt_core.TAlt13.Rule_import_stmt1","sum":16680408},{"parent":"TRule_sql_stmt_core.TAlt17","rule":"TRule_sql_stmt_core.TAlt17.Rule_do_stmt1","sum":4719917},{"parent":"TRule_sql_stmt_core.TAlt18","rule":"TRule_sql_stmt_core.TAlt18.Rule_define_action_or_subquery_stmt1","sum":22375819},{"parent":"TRule_sql_stmt_core.TAlt19","rule":"TRule_sql_stmt_core.TAlt19.Rule_if_stmt1","sum":8585453},{"parent":"TRule_sql_stmt_core.TAlt2","rule":"TRule_sql_stmt_core.TAlt2.Rule_select_stmt1","sum":194079479},{"parent":"TRule_sql_stmt_core.TAlt20","rule":"TRule_sql_stmt_core.TAlt20.Rule_for_stmt1","sum":7048194},{"parent":"TRule_sql_stmt_core.TAlt21","rule":"TRule_sql_stmt_core.TAlt21.Rule_values_stmt1","sum":322},{"parent":"TRule_sql_stmt_core.TAlt3","rule":"TRule_sql_stmt_core.TAlt3.Rule_named_nodes_stmt1","sum":946817824},{"parent":"TRule_sql_stmt_core.TAlt4","rule":"TRule_sql_stmt_core.TAlt4.Rule_create_table_stmt1","sum":125},{"parent":"TRule_sql_stmt_core.TAlt5","rule":"TRule_sql_stmt_core.TAlt5.Rule_drop_table_stmt1","sum":2572734},{"parent":"TRule_sql_stmt_core.TAlt6","rule":"TRule_sql_stmt_core.TAlt6.Rule_use_stmt1","sum":330553175},{"parent":"TRule_sql_stmt_core.TAlt7","rule":"TRule_sql_stmt_core.TAlt7.Rule_into_table_stmt1","sum":209729253},{"parent":"TRule_sql_stmt_core.TAlt8","rule":"TRule_sql_stmt_core.TAlt8.Rule_commit_stmt1","sum":13057020},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block1","sum":435},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block3","sum":315770059},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block4","sum":195437753},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Rule_sql_stmt2","sum":321178940},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Token5","sum":321178940},{"parent":"TRule_sql_stmt_list.TBlock1","rule":"TRule_sql_stmt_list.TBlock1.Token1","sum":458},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Block1","sum":2410292369},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Rule_sql_stmt2","sum":2410292369},{"parent":"TRule_sql_stmt_list.TBlock3.TBlock1","rule":"TRule_sql_stmt_list.TBlock3.TBlock1.Token1","sum":2419377654},{"parent":"TRule_sql_stmt_list.TBlock4","rule":"TRule_sql_stmt_list.TBlock4.Token1","sum":198139030},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_or_bind3","sum":113973263},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_tag1","sum":113973263},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Token2","sum":113973263},{"parent":"TRule_struct_arg_positional","rule":"TRule_struct_arg_positional.Alt_struct_arg_positional1","sum":195},{"parent":"TRule_struct_arg_positional.TAlt1","rule":"TRule_struct_arg_positional.TAlt1.Block3","sum":166},{"parent":"TRule_struct_arg_positional.TAlt1","rule":"TRule_struct_arg_positional.TAlt1.Rule_type_name_or_bind2","sum":195},{"parent":"TRule_struct_arg_positional.TAlt1","rule":"TRule_struct_arg_positional.TAlt1.Rule_type_name_tag1","sum":195},{"parent":"TRule_struct_arg_positional.TAlt1.TBlock3","rule":"TRule_struct_arg_positional.TAlt1.TBlock3.Token2","sum":166},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Block2","sum":14603829},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Block3","sum":2563557},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token1","sum":14736673},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token4","sum":14736673},{"parent":"TRule_struct_literal.TBlock2","rule":"TRule_struct_literal.TBlock2.Rule_expr_struct_list1","sum":14603829},{"parent":"TRule_struct_literal.TBlock3","rule":"TRule_struct_literal.TBlock3.Token1","sum":2563557},{"parent":"TRule_subselect_stmt","rule":"TRule_subselect_stmt.Block1","sum":331048365},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt1","sum":208008327},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt2","sum":123040038},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Rule_select_stmt2","sum":208008327},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token1","sum":208008327},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token3","sum":208008327},{"parent":"TRule_subselect_stmt.TBlock1.TAlt2","rule":"TRule_subselect_stmt.TBlock1.TAlt2.Rule_select_unparenthesized_stmt1","sum":123040038},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block1","sum":117005},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block3","sum":271664},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Rule_named_expr2","sum":192341086},{"parent":"TRule_table_arg.TBlock1","rule":"TRule_table_arg.TBlock1.Token1","sum":117005},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Rule_view_name2","sum":271664},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Token1","sum":271664},{"parent":"TRule_table_constraint","rule":"TRule_table_constraint.Alt_table_constraint2","sum":124},{"parent":"TRule_table_constraint","rule":"TRule_table_constraint.Alt_table_constraint3","sum":105},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Block5","sum":103},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Rule_an_id4","sum":124},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token1","sum":124},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token2","sum":124},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token3","sum":124},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token6","sum":124},{"parent":"TRule_table_constraint.TAlt2.TBlock5","rule":"TRule_table_constraint.TAlt2.TBlock5.Rule_an_id2","sum":259},{"parent":"TRule_table_constraint.TAlt2.TBlock5","rule":"TRule_table_constraint.TAlt2.TBlock5.Token1","sum":259},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Rule_column_order_by_specification4","sum":105},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token1","sum":105},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token2","sum":105},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token3","sum":105},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token6","sum":105},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint1","sum":155030406},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint2","sum":18942561},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint3","sum":22},{"parent":"TRule_table_hint.TAlt1","rule":"TRule_table_hint.TAlt1.Block2","sum":10903829},{"parent":"TRule_table_hint.TAlt1","rule":"TRule_table_hint.TAlt1.Rule_an_id_hint1","sum":155030406},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Block2","sum":10903829},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Token1","sum":10903829},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.Alt1","sum":10903829},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1.Rule_type_name_tag1","sum":10903829},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Block2","sum":1745},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Rule_type_name_or_bind3","sum":18942561},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Token1","sum":18942561},{"parent":"TRule_table_hint.TAlt2.TBlock2","rule":"TRule_table_hint.TAlt2.TBlock2.Token1","sum":1745},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Block4","sum":22},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Block5","sum":10},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Token1","sum":22},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Token3","sum":22},{"parent":"TRule_table_hint.TAlt3","rule":"TRule_table_hint.TAlt3.Token6","sum":22},{"parent":"TRule_table_hint.TAlt3.TBlock4","rule":"TRule_table_hint.TAlt3.TBlock4.Block2","sum":17},{"parent":"TRule_table_hint.TAlt3.TBlock4","rule":"TRule_table_hint.TAlt3.TBlock4.Rule_struct_arg_positional1","sum":22},{"parent":"TRule_table_hint.TAlt3.TBlock4.TBlock2","rule":"TRule_table_hint.TAlt3.TBlock4.TBlock2.Rule_struct_arg_positional2","sum":173},{"parent":"TRule_table_hint.TAlt3.TBlock4.TBlock2","rule":"TRule_table_hint.TAlt3.TBlock4.TBlock2.Token1","sum":173},{"parent":"TRule_table_hint.TAlt3.TBlock5","rule":"TRule_table_hint.TAlt3.TBlock5.Token1","sum":10},{"parent":"TRule_table_hints","rule":"TRule_table_hints.Block2","sum":163157673},{"parent":"TRule_table_hints","rule":"TRule_table_hints.Token1","sum":163157673},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt1","sum":152472662},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt2","sum":10685011},{"parent":"TRule_table_hints.TBlock2.TAlt1","rule":"TRule_table_hints.TBlock2.TAlt1.Rule_table_hint1","sum":152472662},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Block3","sum":10409927},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Rule_table_hint2","sum":10685011},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token1","sum":10685011},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token4","sum":10685011},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Rule_table_hint2","sum":10815316},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Token1","sum":10815316},{"parent":"TRule_table_key","rule":"TRule_table_key.Block2","sum":869375},{"parent":"TRule_table_key","rule":"TRule_table_key.Rule_id_table_or_type1","sum":331266134},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Rule_view_name2","sum":869375},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Token1","sum":869375},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block1","sum":40051910},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block2","sum":6068166},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block3","sum":955906317},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block4","sum":19660830},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Rule_cluster_expr1","sum":40051910},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Token2","sum":40051910},{"parent":"TRule_table_ref.TBlock2","rule":"TRule_table_ref.TBlock2.Token1","sum":6068166},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt1","sum":331266134},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt2","sum":96457781},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt3","sum":528182402},{"parent":"TRule_table_ref.TBlock3.TAlt1","rule":"TRule_table_ref.TBlock3.TAlt1.Rule_table_key1","sum":331266134},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Block3","sum":96457757},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Rule_an_id_expr1","sum":96457781},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token2","sum":96457781},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token4","sum":96457781},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block2","sum":49681294},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block3","sum":358512},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Rule_table_arg1","sum":96457757},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Rule_table_arg2","sum":95883329},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Token1","sum":95883329},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3.Token1","sum":358512},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block2","sum":22391157},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block3","sum":179571},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Rule_bind_parameter1","sum":528182402},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Block2","sum":16009153},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token1","sum":22391157},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token3","sum":22391157},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2.Rule_expr_list1","sum":16009153},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Rule_view_name2","sum":179571},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Token1","sum":179571},{"parent":"TRule_table_ref.TBlock4","rule":"TRule_table_ref.TBlock4.Rule_table_hints1","sum":19660830},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Block6","sum":9382},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_expr4","sum":329161},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_sampling_mode2","sum":329161},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token1","sum":329161},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token3","sum":329161},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token5","sum":329161},{"parent":"TRule_tablesample_clause.TBlock6","rule":"TRule_tablesample_clause.TBlock6.Rule_repeatable_clause1","sum":9382},{"parent":"TRule_type_id","rule":"TRule_type_id.Token1","sum":11727923},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name1","sum":89568358},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name2","sum":704837127},{"parent":"TRule_type_name.TAlt1","rule":"TRule_type_name.TAlt1.Rule_type_name_composite1","sum":89568358},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block1","sum":704837127},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block2","sum":73447647},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt1","sum":27748139},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt2","sum":677088988},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt1","rule":"TRule_type_name.TAlt2.TBlock1.TAlt1.Rule_type_name_decimal1","sum":27748139},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt2","rule":"TRule_type_name.TAlt2.TBlock1.TAlt2.Rule_type_name_simple1","sum":677088988},{"parent":"TRule_type_name.TAlt2.TBlock2","rule":"TRule_type_name.TAlt2.TBlock2.Token1","sum":73448705},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block4","sum":9789399},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block5","sum":227874},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block6","sum":10347},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Rule_type_name_or_bind9","sum":10116228},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token1","sum":10116228},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token10","sum":10116228},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token2","sum":10116228},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token3","sum":10116228},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token7","sum":10116228},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token8","sum":10116228},{"parent":"TRule_type_name_callable.TBlock4","rule":"TRule_type_name_callable.TBlock4.Rule_callable_arg_list1","sum":9789399},{"parent":"TRule_type_name_callable.TBlock5","rule":"TRule_type_name_callable.TBlock5.Token1","sum":227874},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Rule_callable_arg_list2","sum":10347},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token1","sum":10347},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token3","sum":10347},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block1","sum":106993914},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block2","sum":4261399},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt1","sum":33300382},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt10","sum":20856},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt11","sum":451633},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt12","sum":7569},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt13","sum":10116228},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt2","sum":2167125},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt3","sum":26707667},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt4","sum":138745},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt5","sum":25872035},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt6","sum":1529678},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt8","sum":6668423},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt9","sum":13573},{"parent":"TRule_type_name_composite.TBlock1.TAlt1","rule":"TRule_type_name_composite.TBlock1.TAlt1.Rule_type_name_optional1","sum":33300382},{"parent":"TRule_type_name_composite.TBlock1.TAlt10","rule":"TRule_type_name_composite.TBlock1.TAlt10.Rule_type_name_enum1","sum":20856},{"parent":"TRule_type_name_composite.TBlock1.TAlt11","rule":"TRule_type_name_composite.TBlock1.TAlt11.Rule_type_name_resource1","sum":451633},{"parent":"TRule_type_name_composite.TBlock1.TAlt12","rule":"TRule_type_name_composite.TBlock1.TAlt12.Rule_type_name_tagged1","sum":7569},{"parent":"TRule_type_name_composite.TBlock1.TAlt13","rule":"TRule_type_name_composite.TBlock1.TAlt13.Rule_type_name_callable1","sum":10116228},{"parent":"TRule_type_name_composite.TBlock1.TAlt2","rule":"TRule_type_name_composite.TBlock1.TAlt2.Rule_type_name_tuple1","sum":2167125},{"parent":"TRule_type_name_composite.TBlock1.TAlt3","rule":"TRule_type_name_composite.TBlock1.TAlt3.Rule_type_name_struct1","sum":26707667},{"parent":"TRule_type_name_composite.TBlock1.TAlt4","rule":"TRule_type_name_composite.TBlock1.TAlt4.Rule_type_name_variant1","sum":138745},{"parent":"TRule_type_name_composite.TBlock1.TAlt5","rule":"TRule_type_name_composite.TBlock1.TAlt5.Rule_type_name_list1","sum":25872035},{"parent":"TRule_type_name_composite.TBlock1.TAlt6","rule":"TRule_type_name_composite.TBlock1.TAlt6.Rule_type_name_stream1","sum":1529678},{"parent":"TRule_type_name_composite.TBlock1.TAlt8","rule":"TRule_type_name_composite.TBlock1.TAlt8.Rule_type_name_dict1","sum":6668423},{"parent":"TRule_type_name_composite.TBlock1.TAlt9","rule":"TRule_type_name_composite.TBlock1.TAlt9.Rule_type_name_set1","sum":13573},{"parent":"TRule_type_name_composite.TBlock2","rule":"TRule_type_name_composite.TBlock2.Token1","sum":4261402},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind3","sum":27748139},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind5","sum":27748139},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token1","sum":27748139},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token2","sum":27748139},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token4","sum":27748139},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token6","sum":27748139},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind3","sum":6668423},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind5","sum":6668423},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token1","sum":6668423},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token2","sum":6668423},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token4","sum":6668423},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token6","sum":6668423},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block4","sum":20608},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block5","sum":352},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Rule_type_name_tag3","sum":20856},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token1","sum":20856},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token2","sum":20856},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token6","sum":20856},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Rule_type_name_tag2","sum":44864},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Token1","sum":44864},{"parent":"TRule_type_name_enum.TBlock5","rule":"TRule_type_name_enum.TBlock5.Token1","sum":352},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Rule_type_name_or_bind3","sum":25872035},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token1","sum":25872035},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token2","sum":25872035},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token4","sum":25872035},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Rule_type_name_or_bind3","sum":33300382},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token1","sum":33300382},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token2","sum":33300382},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token4","sum":33300382},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind1","sum":637613195},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind2","sum":2692737},{"parent":"TRule_type_name_or_bind.TAlt1","rule":"TRule_type_name_or_bind.TAlt1.Rule_type_name1","sum":637613195},{"parent":"TRule_type_name_or_bind.TAlt2","rule":"TRule_type_name_or_bind.TAlt2.Rule_bind_parameter1","sum":2692737},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Rule_type_name_tag3","sum":451633},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token1","sum":451633},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token2","sum":451633},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token4","sum":451633},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Rule_type_name_or_bind3","sum":13573},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token1","sum":13573},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token2","sum":13573},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token4","sum":13573},{"parent":"TRule_type_name_simple","rule":"TRule_type_name_simple.Rule_an_id_pure1","sum":678937497},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Rule_type_name_or_bind3","sum":1529678},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token1","sum":1529678},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token2","sum":1529678},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token4","sum":1529678},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Block2","sum":26707667},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Token1","sum":26707667},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt1","sum":26704759},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt2","sum":2908},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Block2","sum":26704749},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token1","sum":26704759},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token3","sum":26704759},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block2","sum":20382974},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block3","sum":2062225},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Rule_struct_arg1","sum":26704749},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Rule_struct_arg2","sum":87268514},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":87268514},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":2062225},{"parent":"TRule_type_name_struct.TBlock2.TAlt2","rule":"TRule_type_name_struct.TBlock2.TAlt2.Token1","sum":2908},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag1","sum":104704623},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag2","sum":18411822},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag3","sum":2640961},{"parent":"TRule_type_name_tag.TAlt1","rule":"TRule_type_name_tag.TAlt1.Rule_id1","sum":104704623},{"parent":"TRule_type_name_tag.TAlt2","rule":"TRule_type_name_tag.TAlt2.Token1","sum":18411822},{"parent":"TRule_type_name_tag.TAlt3","rule":"TRule_type_name_tag.TAlt3.Rule_bind_parameter1","sum":2640961},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_or_bind3","sum":7569},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_tag5","sum":7569},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token1","sum":7569},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token2","sum":7569},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token4","sum":7569},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token6","sum":7569},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Block2","sum":2167125},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Token1","sum":2167125},{"parent":"TRule_type_name_tuple.TBlock2","rule":"TRule_type_name_tuple.TBlock2.Alt1","sum":2167115},{"parent":"TRule_type_name_tuple.TBlock2","rule":"TRule_type_name_tuple.TBlock2.Alt2","sum":10},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Block2","sum":2167115},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token1","sum":2167115},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token3","sum":2167115},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block2","sum":2165561},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block3","sum":63364},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Rule_type_name_or_bind1","sum":2167115},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Rule_type_name_or_bind2","sum":3348110},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":3348110},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":63364},{"parent":"TRule_type_name_tuple.TBlock2.TAlt2","rule":"TRule_type_name_tuple.TBlock2.TAlt2.Token1","sum":10},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Block4","sum":124427},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Block5","sum":106},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Rule_variant_arg3","sum":138745},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token1","sum":138745},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token2","sum":138745},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token6","sum":138745},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Rule_variant_arg2","sum":239208},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Token1","sum":239208},{"parent":"TRule_type_name_variant.TBlock5","rule":"TRule_type_name_variant.TBlock5.Token1","sum":106},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Block1","sum":16031312931},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":16031312931},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt1","sum":7195652005},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt2","sum":8835660926},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr1","sum":7195652005},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt2.Rule_atom_expr1","sum":8835660926},{"parent":"TRule_unary_op","rule":"TRule_unary_op.Token1","sum":87839446},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr1","sum":16031312931},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr2","sum":6334872},{"parent":"TRule_unary_subexpr.TAlt1","rule":"TRule_unary_subexpr.TAlt1.Rule_unary_casual_subexpr1","sum":16031312931},{"parent":"TRule_unary_subexpr.TAlt2","rule":"TRule_unary_subexpr.TAlt2.Rule_json_api_expr1","sum":6334872},{"parent":"TRule_unary_subexpr_suffix","rule":"TRule_unary_subexpr_suffix.Block1","sum":4787377355},{"parent":"TRule_unary_subexpr_suffix.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.Block1","sum":5042894322},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt1","sum":174308643},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt2","sum":2884586421},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt3","sum":1983999258},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1.Rule_key_expr1","sum":174308643},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2.Rule_invoke_expr1","sum":2884586421},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Block2","sum":1983999258},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Token1","sum":1983999258},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt1","sum":3156035},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt2","sum":40591529},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt3","sum":1940251694},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1.Rule_bind_parameter1","sum":3156035},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2.Token1","sum":40591529},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt3.Rule_an_id_or_type1","sum":1940251694},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Rule_cluster_expr2","sum":330553175},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Token1","sum":330553175},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Block1","sum":2788381},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Rule_invoke_expr2","sum":2788381},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt1","sum":1528230},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt3","sum":1260151},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type1","sum":1528230},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type3","sum":1528230},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Token2","sum":1528230},{"parent":"TRule_using_call_expr.TBlock1.TAlt3","rule":"TRule_using_call_expr.TBlock1.TAlt3.Rule_bind_parameter1","sum":1260151},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor1","sum":32197},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor2","sum":52564},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor3","sum":80971},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr3","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr5","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr7","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token1","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token2","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token4","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token6","sum":32197},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token8","sum":32197},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr3","sum":52564},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr5","sum":52564},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token1","sum":52564},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token2","sum":52564},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token4","sum":52564},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token6","sum":52564},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr3","sum":80971},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr5","sum":80971},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token1","sum":80971},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token2","sum":80971},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token4","sum":80971},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token6","sum":80971},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source1","sum":1089320},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source2","sum":208639933},{"parent":"TRule_values_source.TAlt1","rule":"TRule_values_source.TAlt1.Rule_values_stmt1","sum":1089320},{"parent":"TRule_values_source.TAlt2","rule":"TRule_values_source.TAlt2.Rule_select_stmt1","sum":208639933},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Rule_expr_list2","sum":9071866},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token1","sum":9071866},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token3","sum":9071866},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Block2","sum":486688},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Rule_values_source_row1","sum":1259083},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Rule_values_source_row2","sum":7812783},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Token1","sum":7812783},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Rule_values_source_row_list2","sum":1259083},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Token1","sum":1259083},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Block1","sum":355197},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Rule_type_name_or_bind2","sum":18415857},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Rule_type_name_tag1","sum":355197},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Token2","sum":355197},{"parent":"TRule_view_name","rule":"TRule_view_name.Alt_view_name1","sum":1320610},{"parent":"TRule_view_name.TAlt1","rule":"TRule_view_name.TAlt1.Rule_an_id1","sum":1320610},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr2","sum":158729543},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr4","sum":158729543},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token1","sum":158729543},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token3","sum":158729543},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Rule_window_definition_list2","sum":13625726},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Token1","sum":13625726},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_new_window_name1","sum":14203555},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_window_specification3","sum":14203555},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Token2","sum":14203555},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Block2","sum":437513},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Rule_window_definition1","sum":13625726},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Rule_window_definition2","sum":577829},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Token1","sum":577829},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound2","sum":2323616},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound4","sum":2323616},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token1","sum":2323616},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token3","sum":2323616},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound1","sum":1330552},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound2","sum":3374715},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token1","sum":1330552},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token2","sum":1330552},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Block1","sum":3374715},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Token2","sum":3374715},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt1","sum":1115948},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt2","sum":2258767},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1.Rule_expr1","sum":1115948},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2.Token1","sum":2258767},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_extent2","sum":2381651},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_units1","sum":2381651},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent1","sum":58035},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent2","sum":2323616},{"parent":"TRule_window_frame_extent.TAlt1","rule":"TRule_window_frame_extent.TAlt1.Rule_window_frame_bound1","sum":58035},{"parent":"TRule_window_frame_extent.TAlt2","rule":"TRule_window_frame_extent.TAlt2.Rule_window_frame_between1","sum":2323616},{"parent":"TRule_window_frame_units","rule":"TRule_window_frame_units.Token1","sum":2381651},{"parent":"TRule_window_name","rule":"TRule_window_name.Rule_an_id_window1","sum":46794903},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification1","sum":32591348},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification2","sum":12886037},{"parent":"TRule_window_name_or_specification.TAlt1","rule":"TRule_window_name_or_specification.TAlt1.Rule_window_name1","sum":32591348},{"parent":"TRule_window_name_or_specification.TAlt2","rule":"TRule_window_name_or_specification.TAlt2.Rule_window_specification1","sum":12886037},{"parent":"TRule_window_order_clause","rule":"TRule_window_order_clause.Rule_order_by_clause1","sum":19090522},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Block2","sum":51981},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Rule_named_expr_list4","sum":21880553},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token1","sum":21880553},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token3","sum":21880553},{"parent":"TRule_window_partition_clause.TBlock2","rule":"TRule_window_partition_clause.TBlock2.Token1","sum":51981},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Rule_window_specification_details2","sum":27089592},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token1","sum":27089592},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token3","sum":27089592},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block2","sum":21880552},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block3","sum":19090522},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block4","sum":2381651},{"parent":"TRule_window_specification_details.TBlock2","rule":"TRule_window_specification_details.TBlock2.Rule_window_partition_clause1","sum":21880552},{"parent":"TRule_window_specification_details.TBlock3","rule":"TRule_window_specification_details.TBlock3.Rule_window_order_clause1","sum":19090522},{"parent":"TRule_window_specification_details.TBlock4","rule":"TRule_window_specification_details.TBlock4.Rule_window_frame_clause1","sum":2381651},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block2","sum":9254793},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block3","sum":1324200},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Rule_without_column_name1","sum":25026920},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Rule_without_column_name2","sum":29350935},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Token1","sum":29350935},{"parent":"TRule_without_column_list.TBlock3","rule":"TRule_without_column_list.TBlock3.Token1","sum":1324200},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name1","sum":30955091},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name2","sum":23422764},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id1","sum":30955091},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id3","sum":30955091},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Token2","sum":30955091},{"parent":"TRule_without_column_name.TAlt2","rule":"TRule_without_column_name.TAlt2.Rule_an_id_without1","sum":23422764},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Block2","sum":1098405657},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Rule_eq_subexpr1","sum":14301321628},{"parent":"TRule_xor_subexpr.TBlock2","rule":"TRule_xor_subexpr.TBlock2.Rule_cond_expr1","sum":1098405657},{"parent":"TSQLv1ParserAST","rule":"TSQLv1ParserAST.Rule_sql_query","sum":321178940},{"parent":"TYPE","rule":"BIGINT","sum":6932},{"parent":"TYPE","rule":"BOOL","sum":109593},{"parent":"TYPE","rule":"BYTEs","sum":1},{"parent":"TYPE","rule":"BigInt","sum":210},{"parent":"TYPE","rule":"Bool","sum":9328918},{"parent":"TYPE","rule":"Bytes","sum":428005},{"parent":"TYPE","rule":"DATE","sum":1262181},{"parent":"TYPE","rule":"DATETIME","sum":66984},{"parent":"TYPE","rule":"DATETime","sum":2},{"parent":"TYPE","rule":"DATEtIME","sum":1},{"parent":"TYPE","rule":"DATEtime","sum":34},{"parent":"TYPE","rule":"DAte","sum":9072},{"parent":"TYPE","rule":"DAteTime","sum":54},{"parent":"TYPE","rule":"DAtetime","sum":650},{"parent":"TYPE","rule":"DOUBLE","sum":1363060},{"parent":"TYPE","rule":"DOUBLe","sum":1},{"parent":"TYPE","rule":"DOUBle","sum":1},{"parent":"TYPE","rule":"DOUble","sum":3},{"parent":"TYPE","rule":"DOuble","sum":2183},{"parent":"TYPE","rule":"DaTeTime","sum":1},{"parent":"TYPE","rule":"Date","sum":20697406},{"parent":"TYPE","rule":"Date32","sum":65},{"parent":"TYPE","rule":"DateTIME","sum":21},{"parent":"TYPE","rule":"DateTIme","sum":112},{"parent":"TYPE","rule":"DateTime","sum":5026810},{"parent":"TYPE","rule":"DateTime64","sum":8},{"parent":"TYPE","rule":"DatetIME","sum":35},{"parent":"TYPE","rule":"Datetime","sum":3265600},{"parent":"TYPE","rule":"Datetime64","sum":38},{"parent":"TYPE","rule":"DoubLe","sum":13},{"parent":"TYPE","rule":"Double","sum":30150647},{"parent":"TYPE","rule":"EmptyDict","sum":28},{"parent":"TYPE","rule":"EmptyList","sum":28},{"parent":"TYPE","rule":"FLOAT","sum":188567},{"parent":"TYPE","rule":"FLoat","sum":3386},{"parent":"TYPE","rule":"FlOAT","sum":15},{"parent":"TYPE","rule":"FloaT","sum":338},{"parent":"TYPE","rule":"Float","sum":7111544},{"parent":"TYPE","rule":"Generic","sum":3},{"parent":"TYPE","rule":"INT","sum":410042},{"parent":"TYPE","rule":"INT16","sum":9417},{"parent":"TYPE","rule":"INT32","sum":140859},{"parent":"TYPE","rule":"INT64","sum":4166541},{"parent":"TYPE","rule":"INT8","sum":1862},{"parent":"TYPE","rule":"INTEGER","sum":73375},{"parent":"TYPE","rule":"INTERVAL","sum":10426},{"parent":"TYPE","rule":"INt16","sum":1},{"parent":"TYPE","rule":"INt32","sum":1191},{"parent":"TYPE","rule":"INt64","sum":37874},{"parent":"TYPE","rule":"InT32","sum":1},{"parent":"TYPE","rule":"Int","sum":524499},{"parent":"TYPE","rule":"Int16","sum":914040},{"parent":"TYPE","rule":"Int32","sum":13884136},{"parent":"TYPE","rule":"Int64","sum":47272161},{"parent":"TYPE","rule":"Int8","sum":1029823},{"parent":"TYPE","rule":"Integer","sum":467686},{"parent":"TYPE","rule":"Interval","sum":205400},{"parent":"TYPE","rule":"Interval64","sum":34},{"parent":"TYPE","rule":"JSON","sum":1757583},{"parent":"TYPE","rule":"JSONDocument","sum":265},{"parent":"TYPE","rule":"JSOn","sum":1},{"parent":"TYPE","rule":"JSon","sum":2},{"parent":"TYPE","rule":"Json","sum":5507192},{"parent":"TYPE","rule":"JsonDocument","sum":16890},{"parent":"TYPE","rule":"Jsondocument","sum":25},{"parent":"TYPE","rule":"PgBool","sum":20},{"parent":"TYPE","rule":"PgBox","sum":2},{"parent":"TYPE","rule":"PgByteA","sum":16},{"parent":"TYPE","rule":"PgCString","sum":19},{"parent":"TYPE","rule":"PgDate","sum":85},{"parent":"TYPE","rule":"PgFloat4","sum":31},{"parent":"TYPE","rule":"PgFloat8","sum":31},{"parent":"TYPE","rule":"PgInt","sum":1},{"parent":"TYPE","rule":"PgInt2","sum":97},{"parent":"TYPE","rule":"PgInt4","sum":37},{"parent":"TYPE","rule":"PgInt8","sum":32},{"parent":"TYPE","rule":"PgInterval","sum":238},{"parent":"TYPE","rule":"PgMoney","sum":2},{"parent":"TYPE","rule":"PgName","sum":2},{"parent":"TYPE","rule":"PgNumeric","sum":10},{"parent":"TYPE","rule":"PgPoint","sum":1296},{"parent":"TYPE","rule":"PgPolygon","sum":651},{"parent":"TYPE","rule":"PgText","sum":429},{"parent":"TYPE","rule":"PgTimestamp","sum":1933},{"parent":"TYPE","rule":"PgVarChar","sum":1},{"parent":"TYPE","rule":"PgVarchar","sum":231},{"parent":"TYPE","rule":"STRING","sum":2680222},{"parent":"TYPE","rule":"STRINg","sum":3},{"parent":"TYPE","rule":"STRing","sum":3},{"parent":"TYPE","rule":"STring","sum":1330},{"parent":"TYPE","rule":"StrINg","sum":45},{"parent":"TYPE","rule":"StrinG","sum":27},{"parent":"TYPE","rule":"String","sum":335692096},{"parent":"TYPE","rule":"TEXT","sum":21570},{"parent":"TYPE","rule":"TIMESTAMP","sum":319390},{"parent":"TYPE","rule":"TINYINT","sum":1},{"parent":"TYPE","rule":"TZDate","sum":30},{"parent":"TYPE","rule":"TZDateTime","sum":1},{"parent":"TYPE","rule":"TZDatetime","sum":25},{"parent":"TYPE","rule":"TZtimestamp","sum":1},{"parent":"TYPE","rule":"Text","sum":204450},{"parent":"TYPE","rule":"TimeStamp","sum":294978},{"parent":"TYPE","rule":"Timestamp","sum":6007260},{"parent":"TYPE","rule":"Timestamp64","sum":488},{"parent":"TYPE","rule":"TzDATE","sum":5},{"parent":"TYPE","rule":"TzDate","sum":48936},{"parent":"TYPE","rule":"TzDateTime","sum":43711},{"parent":"TYPE","rule":"TzDatetime","sum":670798},{"parent":"TYPE","rule":"TzTimeStamp","sum":6},{"parent":"TYPE","rule":"TzTimestamp","sum":8231},{"parent":"TYPE","rule":"TzTimestamp64","sum":1},{"parent":"TYPE","rule":"Tzdate","sum":5},{"parent":"TYPE","rule":"Tzdatetime","sum":4},{"parent":"TYPE","rule":"UINT16","sum":1256},{"parent":"TYPE","rule":"UINT32","sum":423512},{"parent":"TYPE","rule":"UINT64","sum":586047},{"parent":"TYPE","rule":"UINT8","sum":160},{"parent":"TYPE","rule":"UINt32","sum":44},{"parent":"TYPE","rule":"UINt64","sum":416},{"parent":"TYPE","rule":"UINt8","sum":24},{"parent":"TYPE","rule":"UInt16","sum":130653},{"parent":"TYPE","rule":"UInt32","sum":7368130},{"parent":"TYPE","rule":"UInt64","sum":9491372},{"parent":"TYPE","rule":"UInt8","sum":153048},{"parent":"TYPE","rule":"UNIT","sum":756},{"parent":"TYPE","rule":"UTF8","sum":269828},{"parent":"TYPE","rule":"UTf8","sum":142},{"parent":"TYPE","rule":"UUID","sum":1247896},{"parent":"TYPE","rule":"UiNt32","sum":4},{"parent":"TYPE","rule":"Uint16","sum":332190},{"parent":"TYPE","rule":"Uint32","sum":18462946},{"parent":"TYPE","rule":"Uint64","sum":32896918},{"parent":"TYPE","rule":"Uint8","sum":2325435},{"parent":"TYPE","rule":"Unit","sum":1123},{"parent":"TYPE","rule":"Utf8","sum":14459445},{"parent":"TYPE","rule":"Uuid","sum":44029},{"parent":"TYPE","rule":"VARCHAR","sum":518834},{"parent":"TYPE","rule":"Varchar","sum":2},{"parent":"TYPE","rule":"Void","sum":10821},{"parent":"TYPE","rule":"XML","sum":21},{"parent":"TYPE","rule":"YSON","sum":226297},{"parent":"TYPE","rule":"YSon","sum":277},{"parent":"TYPE","rule":"Yson","sum":17709535},{"parent":"TYPE","rule":"_PgMoney","sum":3},{"parent":"TYPE","rule":"bigint","sum":8977},{"parent":"TYPE","rule":"bool","sum":933913},{"parent":"TYPE","rule":"bytes","sum":34732},{"parent":"TYPE","rule":"dATE","sum":1},{"parent":"TYPE","rule":"daTE","sum":5},{"parent":"TYPE","rule":"date","sum":32529879},{"parent":"TYPE","rule":"date32","sum":41},{"parent":"TYPE","rule":"dateTIME","sum":8},{"parent":"TYPE","rule":"dateTime","sum":44165},{"parent":"TYPE","rule":"datetime","sum":7090167},{"parent":"TYPE","rule":"datetime64","sum":61},{"parent":"TYPE","rule":"double","sum":6955432},{"parent":"TYPE","rule":"emptyList","sum":1},{"parent":"TYPE","rule":"float","sum":4706820},{"parent":"TYPE","rule":"generic","sum":2},{"parent":"TYPE","rule":"iNT","sum":1},{"parent":"TYPE","rule":"iNT64","sum":25},{"parent":"TYPE","rule":"inT64","sum":260},{"parent":"TYPE","rule":"int","sum":1125005},{"parent":"TYPE","rule":"int16","sum":78359},{"parent":"TYPE","rule":"int32","sum":3222384},{"parent":"TYPE","rule":"int64","sum":8453909},{"parent":"TYPE","rule":"int8","sum":41932},{"parent":"TYPE","rule":"integer","sum":136328},{"parent":"TYPE","rule":"interval","sum":408838},{"parent":"TYPE","rule":"json","sum":1060285},{"parent":"TYPE","rule":"json_document","sum":1},{"parent":"TYPE","rule":"jsondocument","sum":1},{"parent":"TYPE","rule":"pgDate","sum":22},{"parent":"TYPE","rule":"pg_name","sum":2},{"parent":"TYPE","rule":"pgbigint","sum":1},{"parent":"TYPE","rule":"pgbool","sum":18},{"parent":"TYPE","rule":"pgdate","sum":14},{"parent":"TYPE","rule":"pgfloat8","sum":2},{"parent":"TYPE","rule":"pgint","sum":366},{"parent":"TYPE","rule":"pgint2","sum":6},{"parent":"TYPE","rule":"pgint4","sum":41},{"parent":"TYPE","rule":"pgint8","sum":1},{"parent":"TYPE","rule":"pginteger","sum":1},{"parent":"TYPE","rule":"pginterval","sum":368},{"parent":"TYPE","rule":"pgnumeric","sum":5},{"parent":"TYPE","rule":"pgoid","sum":1},{"parent":"TYPE","rule":"pgtext","sum":76},{"parent":"TYPE","rule":"pgtimestamp","sum":20},{"parent":"TYPE","rule":"sTRING","sum":16},{"parent":"TYPE","rule":"smallint","sum":1},{"parent":"TYPE","rule":"strINg","sum":14},{"parent":"TYPE","rule":"striNg","sum":1},{"parent":"TYPE","rule":"strinG","sum":73},{"parent":"TYPE","rule":"string","sum":45963463},{"parent":"TYPE","rule":"text","sum":4589439},{"parent":"TYPE","rule":"timeStamp","sum":80},{"parent":"TYPE","rule":"timestamp","sum":21925377},{"parent":"TYPE","rule":"timestamp64","sum":12},{"parent":"TYPE","rule":"tinyint","sum":3},{"parent":"TYPE","rule":"tzDate","sum":1},{"parent":"TYPE","rule":"tzDateTime","sum":3},{"parent":"TYPE","rule":"tzDatetime","sum":30},{"parent":"TYPE","rule":"tzTimestamp","sum":709},{"parent":"TYPE","rule":"tzdate","sum":19},{"parent":"TYPE","rule":"tzdatetime","sum":67},{"parent":"TYPE","rule":"tzdatetime64","sum":2},{"parent":"TYPE","rule":"tztimestamp","sum":32},{"parent":"TYPE","rule":"tztimestamp64","sum":3},{"parent":"TYPE","rule":"uINT32","sum":21},{"parent":"TYPE","rule":"uInt32","sum":12046},{"parent":"TYPE","rule":"uInt64","sum":2534},{"parent":"TYPE","rule":"uInt8","sum":52},{"parent":"TYPE","rule":"uint16","sum":27461},{"parent":"TYPE","rule":"uint32","sum":5327264},{"parent":"TYPE","rule":"uint64","sum":8708288},{"parent":"TYPE","rule":"uint8","sum":160798},{"parent":"TYPE","rule":"unit","sum":694461},{"parent":"TYPE","rule":"utf8","sum":4655490},{"parent":"TYPE","rule":"uuid","sum":2992838},{"parent":"TYPE","rule":"varchar","sum":58394},{"parent":"TYPE","rule":"void","sum":1},{"parent":"TYPE","rule":"xml","sum":32763},{"parent":"TYPE","rule":"yaml","sum":145},{"parent":"TYPE","rule":"yson","sum":1126517}] diff --git a/yql/essentials/data/language/statements_opensource.json b/yql/essentials/data/language/statements_opensource.json index a3bd452b180..d26308b6a3d 100644 --- a/yql/essentials/data/language/statements_opensource.json +++ b/yql/essentials/data/language/statements_opensource.json @@ -1 +1 @@ -{"read":{"yt":{"hints":[{"name":"infer_scheme"},{"name":"force_infer_schema"},{"name":"inline"},{"name":"xlock"},{"name":"unordered"},{"name":"non_unique"},{"name":"ignore_type_v3"}]}},"insert":{"yt":{"hints":[{"name":"truncate"},{"name":"compression_codec"},{"name":"erasure_codec"},{"name":"expiration"},{"name":"replication_factor"},{"name":"user_attrs"},{"name":"media"},{"name":"primary_medium"},{"name":"keep_meta"},{"name":"monotonic_keys"},{"name":"column_groups"},{"name":"security_tags"}]}},"replace":{},"upsert":{},"update":{},"delete":{},"create_table":{},"create_view":{}} +{"read":{"yt":{"hints":[{"name":"infer_scheme"},{"name":"inferscheme"},{"name":"infer_schema"},{"name":"inferschema"},{"name":"force_infer_schema"},{"name":"forceinferschema"},{"name":"inline"},{"name":"xlock"},{"name":"unordered"},{"name":"non_unique"},{"name":"nonUnique"},{"name":"ignore_type_v3"},{"name":"ignoretypev3"}]}},"insert":{"yt":{"hints":[{"name":"truncate"},{"name":"compression_codec"},{"name":"compressioncodec"},{"name":"erasure_codec"},{"name":"erasurecodec"},{"name":"expiration"},{"name":"replication_factor"},{"name":"replicationfactor"},{"name":"user_attrs"},{"name":"userattrs"},{"name":"media"},{"name":"primary_medium"},{"name":"primarymedium"},{"name":"keep_meta"},{"name":"keepmeta"},{"name":"monotonic_keys"},{"name":"monotonickeys"},{"name":"column_groups"},{"name":"columngroups"},{"name":"security_tags"},{"name":"securitytags"}]}},"replace":{},"upsert":{},"update":{},"delete":{},"create_table":{},"create_view":{}} diff --git a/yql/essentials/docs/en/builtins/list.md b/yql/essentials/docs/en/builtins/list.md index 50b8182ee7a..fffa60aaf9c 100644 --- a/yql/essentials/docs/en/builtins/list.md +++ b/yql/essentials/docs/en/builtins/list.md @@ -322,7 +322,12 @@ Returns `true` for a list of Boolean values, if: * `ListAny`: At least one element is `true`. * `ListAll`: All elements are `true`. -Otherwise, it returns false. +Otherwise, it returns `false`. + +Results on an empty list: + +* `ListAny` returns `false`; +* `ListAll` returns `true`. #### Examples diff --git a/yql/essentials/docs/ru/builtins/list.md b/yql/essentials/docs/ru/builtins/list.md index 4e153ef7bf8..aad2f4e3a32 100644 --- a/yql/essentials/docs/ru/builtins/list.md +++ b/yql/essentials/docs/ru/builtins/list.md @@ -528,7 +528,12 @@ ListUniqStable(List<T>?)->List<T>? * `ListAny` — хотя бы один элемент равен `true`; * `ListAll` — все элементы равны `true`. -В противном случае возвращает false. +В противном случае возвращает `false`. + +Поведение на пустом списке: + +* `ListAny` возвращает `false`; +* `ListAll` возвращает `true`. #### Примеры diff --git a/yql/essentials/docs/ru/syntax/group_by.md b/yql/essentials/docs/ru/syntax/group_by.md index 4e1acc58968..2d5d3422356 100644 --- a/yql/essentials/docs/ru/syntax/group_by.md +++ b/yql/essentials/docs/ru/syntax/group_by.md @@ -19,7 +19,7 @@ GROUP BY -- которое может быть использовано в SELECT ``` -Запрос вида `SELECT * FROM table GROUP BY k1, k2, ...` вернет все колонки, перечисленные в GROUP BY, то есть экивалентент запросу `SELECT DISTINCT k1, k2, ... FROM table`. +Запрос вида `SELECT * FROM table GROUP BY k1, k2, ...` вернет все колонки, перечисленные в GROUP BY, то есть эквивалентен запросу `SELECT DISTINCT k1, k2, ... FROM table`. Звездочка может также применяться в качестве аргумента агрегатной функции `COUNT`. `COUNT(*)` означает "число строк в группе". @@ -101,8 +101,8 @@ GROUP BY user, SessionWindow(<time_expr>, <timeout_expr>) AS session_start * `<order_expr>` – выражение по которому сортируется исходная партиция * `<init_lambda>` – лямбда-функция для инициализации состояния расчета сессий. Имеет сигнатуру `(TableRow())->State`. Вызывается один раз на первом (по порядку сортировки) элементе исходной партиции -* `<update_lambda>` – лямбда-функция для обновления состояния расчета сессий и определения границ сессий. Имеет сигнатуру `(TableRow(), State)->Tuple<Bool, State>`. Вызывается на каждом элементе исходной партиции, кроме первого. Новое значения состояния вычисляется на основе текущей строки таблицы и предыдущего состояния. Если первый элемент возвращенного кортежа имеет значение `True`, то с _текущей_ строки начнется новая сессия. Ключ новой сессии получается путем применения `<calculate_lambda>` ко второму элементу кортежа. -* `<calculate_lambda>` – лямбда-функция для вычисления ключа сессии ("значения" SessionWindow(), которое также доступно через SessionStart()). Функция имеет сигнатуру `(TableRow(), State)->SessionKey`. Вызывается на первом элемента партиции (после `<init_lambda>`) и на тех элементах, для которых `<update_lambda>` вернула `True` в качестве первого элемента кортежа. Стоит отметить, что для начала новой сессии необходимо, чтобы `<calculate_lambda>` вернула значение, которое отличается от предыдущего ключа сессии. При этом сессии с одинаковыми ключами не объединяются. Например, если `<calculate_lambda>` последовательно возвращает `0, 1, 0, 1`, то это будут четыре различные сессии. +* `<update_lambda>` – лямбда-функция для обновления состояния расчета сессий и определения границ сессий. Имеет сигнатуру `(TableRow(), State)->Tuple<Bool, State>`. Вызывается на каждом элементе исходной партиции, кроме первого. Новое значение состояния вычисляется на основе текущей строки таблицы и предыдущего состояния. Если первый элемент возвращенного кортежа имеет значение `True`, то с _текущей_ строки начнется новая сессия. Ключ новой сессии получается путем применения `<calculate_lambda>` ко второму элементу кортежа. +* `<calculate_lambda>` – лямбда-функция для вычисления ключа сессии ("значения" SessionWindow(), которое также доступно через SessionStart()). Функция имеет сигнатуру `(TableRow(), State)->SessionKey`. Вызывается на первом элементе партиции (после `<init_lambda>`) и на тех элементах, для которых `<update_lambda>` вернула `True` в качестве первого элемента кортежа. Стоит отметить, что для начала новой сессии необходимо, чтобы `<calculate_lambda>` вернула значение, которое отличается от предыдущего ключа сессии. При этом сессии с одинаковыми ключами не объединяются. Например, если `<calculate_lambda>` последовательно возвращает `0, 1, 0, 1`, то это будут четыре различные сессии. С помощью расширенного варианта SessionWindow можно решить, например, такую задачу: разделить партицию на сессии как в варианте SessionWindow с двумя аргументами, но с ограничением максимальной длины сессии некоторой константой: diff --git a/yql/essentials/docs/ru/syntax/join.md b/yql/essentials/docs/ru/syntax/join.md index bcbdd9a4652..84c7cffadcc 100644 --- a/yql/essentials/docs/ru/syntax/join.md +++ b/yql/essentials/docs/ru/syntax/join.md @@ -24,26 +24,26 @@ WHERE ... {% note warning "Внимание" %} -Так как колонки в YQL идентифицируются по именам, и в выборке не может быть двух колонок с одинаковыми именами, `SELECT * FROM ... JOIN ...` не может быть исполнен при наличии колонок с одинаковыми именами в объединяемых таблицах. +Так как колонки в YQL идентифицируются по именам и в выборке не может быть двух колонок с одинаковыми именами, `SELECT * FROM ... JOIN ...` не может быть исполнен при наличии колонок с одинаковыми именами в объединяемых таблицах. {% endnote %} ## Типы объединения (Join_Type) -* `INNER` <span style="color: gray;">(по умолчанию)</span> — Строки объединяемых выборок, для которых не найдено соответствие ни с одной строкой с другой стороны, не попадут в результат. -* `LEFT` - При отсутствии значения в присоединяемой выборке включает строку в результат со значениям колонок из исходной выборки, оставляя пустыми (`NULL`) колонки присоединяемой выборки -* `RIGHT` - При отсутствии значения в исходной выборке включает строку в результат со значениям колонок из присоединяемой выборки, оставляя пустыми (`NULL`) колонки исходной выборки +* `INNER` <span style="color: gray;">(по умолчанию)</span> — строки объединяемых выборок, для которых не найдено соответствие ни с одной строкой с другой стороны, не попадут в результат. +* `LEFT` — при отсутствии значения в присоединяемой выборке включает строку в результат со значениями колонок из исходной выборки, оставляя пустыми (`NULL`) колонки присоединяемой выборки. +* `RIGHT` — при отсутствии значения в исходной выборке включает строку в результат со значениям колонок из присоединяемой выборки, оставляя пустыми (`NULL`) колонки исходной выборки. * `FULL` = `LEFT` + `RIGHT` -* `LEFT/RIGHT SEMI` — одна сторона выступает как белый список (whitelist) ключей, её значения недоступны. В результат включаются столбцы только из одной таблицы, декартового произведения не возникает; -* `LEFT/RIGHT ONLY` — вычитание множеств по ключам (blacklist). Практически эквивалентно добавлению условия `IS NULL` на ключ противоположной стороны в обычном `LEFT/RIGHT`, но, как и в `SEMI`, нет доступа к значениям; -* `CROSS` — декартово произведение двух таблиц целиком без указания ключевых колонок, секция с `ON/USING` явно не пишется; -* `EXCLUSION` — обе стороны минус пересечение. +* `LEFT/RIGHT SEMI` — одна сторона выступает как белый список (whitelist) ключей, её значения недоступны. В результат включаются столбцы только из одной таблицы, декартового произведения не возникает. +* `LEFT/RIGHT ONLY` — вычитание множеств по ключам (blacklist). Практически эквивалентно добавлению условия `IS NULL` на ключ противоположной стороны в обычном `LEFT/RIGHT`, но, как и в `SEMI`, нет доступа к значениям. +* `CROSS` — декартово произведение двух таблиц целиком без указания ключевых колонок, секция с `ON/USING` явно не пишется. +* `EXCLUSION` — обе стороны минус пересечение.  {% note info %} -`NULL` является особым значением, которое ничему не равно. Таким образом, `NULL` с двух сторон не считаются равными друг другу. Это избавляет от неоднозначности в некоторых типах `JOIN`, а также от гигантского декартового произведения, которое часто возникает в противном случае. +`NULL` является особым значением, которое ничему не равно. Таким образом, значения `NULL` с двух сторон не считаются равными друг другу. Это избавляет от неоднозначности в некоторых типах `JOIN`, а также от гигантского декартового произведения, которое часто возникает в противном случае. {% endnote %} @@ -96,6 +96,7 @@ INNER JOIN b_table VIEW b_index_ref AS b ON a.ref = b.ref; Если в выражении помимо `JOIN` выполняется фильтрация данных, то рекомендуется обернуть те условия, про которые известно, что они вернут `true` для большинства строк, в вызов функции `LIKELY(...)`. Если предположение о преобладании положительных значений в условии окажется верно, такая подсказка может положительно сказаться на времени выполнения запроса. Также `LIKELY` может быть полезен в том случае, когда вычисление предиката ресурсоёмко и при этом сам JOIN значительно сокращает число строк. Перед любым источником данных для `JOIN` можно указать ключевое слово `ANY`, которое служит для подавления дубликатов по ключам `JOIN` с соответствующей стороны. В этом случае из множества строк с одинаковым значением ключей `JOIN` остается только одна (не уточняется какая именно – отсюда и название `ANY`). + Данный синтаксис отличается от принятого в [ClickHouse](https://clickhouse.tech/docs/ru/sql-reference/statements/select/join/), где `ANY` пишется перед типом `JOIN` и работает только для правой стороны. Запрос diff --git a/yql/essentials/docs/ru/syntax/pragma.md b/yql/essentials/docs/ru/syntax/pragma.md index 6c9584fc58b..4b380de4a1a 100644 --- a/yql/essentials/docs/ru/syntax/pragma.md +++ b/yql/essentials/docs/ru/syntax/pragma.md @@ -15,6 +15,8 @@ * `Kb`, `Mb`, `Gb` — для объема информации. * `sec`, `min`, `h`, `d` — для временных значений. +За некоторым исключением, значение настроек можно вернуть в состояние по умолчанию с помощью `PRAGMA my_pragma = default;`. + ### Примеры ```yql @@ -29,16 +31,15 @@ PRAGMA TablePathPrefix = "home/yql"; PRAGMA Warning("disable", "1101"); ``` -За некоторым исключением, значение настроек можно вернуть в состояние по умолчанию с помощью `PRAGMA my_pragma = default;`. - Полный список доступных настроек [см. в таблице ниже](#pragmas). ### Область действия {#pragmascope} -Если не указано иное, прагма влияет на все идущие следом выражения вплоть до конца модуля, в котором она встречается. -При необходимости и логической возможности допустимо менять значение настройки несколько раз в одном запросе, чтобы оно было разным на разных этапах выполнения. +Если не указано иное, прагма влияет на все идущие следом выражения вплоть до конца модуля, в котором она встречается. При необходимости и логической возможности можно менять значение настройки несколько раз в одном запросе, чтобы оно было разным на разных этапах выполнения. + Существуют также специальные scoped прагмы, область действия которых определяется по тем же правилам, что и область видимости [именованных выражений](expressions.md#named-nodes). -В отличие от scoped прагм, обычные прагмы могут использоваться только в глобальной области видимости (не внутри лямбда-функций, ACTION, SUBQUERY и т.п.). + +В отличие от scoped прагм, обычные прагмы могут использоваться только в глобальной области видимости (не внутри [DEFINE ACTION](action.md#define-action) и [DEFINE SUBQUERY](subquery.md#define-subquery)). ## Глобальные {#pragmas} @@ -70,11 +71,11 @@ SELECT * FROM test; | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | | Строка | — | Статическая | -| Строка - имя префикса, добавляемого ко всем модулям | "" | Статическая | +| Строка — имя префикса, добавляемого ко всем модулям | "" | Статическая | + +Импорт всех UDF из указанной библиотеки. Чтобы прагма сработала, библиотеку необходимо приложить к запросу. Обратите внимание: библиотека должна быть разделяемой (.so) и она должна быть скомпилирована под Linux x64. -Импорт всех UDF из указанной приложенной к запросу скомпилированной под Linux x64 разделяемой библиотеки (.so). -При указании префикса, он добавляется перед названием всех загруженных модулей, например, CustomPrefixIp::IsIPv4 вместо Ip::IsIPv4. -Указание префикса позволяет подгрузить одну и ту же UDF разных версий. +При указании префикса, он добавляется перед названием всех загруженных модулей, например, CustomPrefixIp::IsIPv4 вместо Ip::IsIPv4. Указание префикса позволяет подгрузить одну и ту же UDF разных версий. ### RuntimeLogLevel {#runtime-log-level} @@ -112,9 +113,7 @@ SELECT * FROM test; `PRAGMA Warning("disable", "1101");` `PRAGMA Warning("default", "4503");` -В данном случае все предупреждения будут считаться ошибками, за исключением предупреждение с кодом `1101`, которое будет отключено, и `4503`, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией `PRAGMA Warning("error", "*");` (как минимум покрывать такие запросы автотестами). - - +В данном случае все предупреждения будут считаться ошибками, за исключением предупреждения с кодом `1101`, которое будет отключено, и `4503`, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией `PRAGMA Warning("error", "*");` (как минимум покрывать такие запросы автотестами). ### Greetings {#greetings} @@ -124,8 +123,7 @@ SELECT * FROM test; Выдать указанный текст в качестве Info сообщения запроса. -Пример: -`PRAGMA Greetings("It's a good day!");` +Пример: `PRAGMA Greetings("It's a good day!");` ### WarningMsg {#warningmsg} @@ -158,7 +156,7 @@ SELECT * FROM test; | --- | --- | | Флаг | true | -Управляет неявным Coalesce для ключевых колонок `JOIN` в режиме SimpleColumns. Если флаг установлен, то Coalesce ключевых колонок происходит при наличии хотя бы одного выражения вида `foo.*` или `*` в SELECT - например `SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key)`. Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после `SELECT` +Управляет неявным Coalesce для ключевых колонок `JOIN` в режиме SimpleColumns. Если флаг установлен, то Coalesce ключевых колонок происходит при наличии хотя бы одного выражения вида `foo.*` или `*` в SELECT — например `SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key)`. Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после `SELECT`. ### StrictJoinKeyTypes @@ -170,8 +168,10 @@ SELECT * FROM test; Если флаг установлен, то [JOIN](join.md) будет требовать строгого совпадения типов ключей. По умолчанию JOIN предварительно конвертирует ключи к общему типу, что может быть нежелательно с точки зрения производительности. + StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. + ### AnsiInForEmptyOrNullableItemsCollections | Тип значения | По умолчанию | @@ -184,7 +184,7 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. `NULL IN () = Just(False) (было NULL)` `(1, null) IN ((2, 2), (3, 3)) = Just(False) (было NULL)` -Подробнее про поведение `IN` при наличии `NULL`ов в операндах можно почитать [здесь](expressions.md#in). Явным образом выбрать старое поведение можно указав прагму `DisableAnsiInForEmptyOrNullableItemsCollections`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. +Подробнее про поведение `IN` при наличии NULL-ов в операндах можно почитать [здесь](expressions.md#in). Явным образом выбрать старое поведение можно, указав прагму `DisableAnsiInForEmptyOrNullableItemsCollections`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. ### AnsiRankForNullableKeys @@ -197,7 +197,7 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. * типом результата всегда является Uint64, а не Uint64?; * null-ы в ключах считаются равными друг другу (текущая реализация возвращает NULL). -Явным образом выбрать старое поведению можно указав прагму `DisableAnsiRankForNullableKeys`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. +Явным образом выбрать старое поведение можно, указав прагму `DisableAnsiRankForNullableKeys`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. ### AnsiCurrentRow @@ -205,9 +205,10 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | false | -Приводит неявное задание рамки окна при наличии ORDER BY в соответствие со стандартом. -Если AnsiCurrentRow не установлен, то окно `(ORDER BY key)` эквивалентно `(ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. -Стандарт же требует, чтобы такое окно вело себя как `(ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. +Приводит неявное задание рамки окна при наличии [ORDER BY](select/order_by.md) в соответствие со стандартом. + +Если AnsiCurrentRow не установлен, то окно `(ORDER BY key)` эквивалентно `(ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. Стандарт же требует, чтобы такое окно вело себя как `(ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. + Разница состоит в трактовке `CURRENT ROW`. В режиме `ROWS` `CURRENT ROW` трактуется буквально – текущая строка в партиции. А в режиме `RANGE` конец рамки `CURRENT ROW` означает "последняя строка в партиции с ключом сортировки, равным текущей строке". @@ -219,8 +220,7 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. ### PositionalUnionAll {#positionalunionall} -Включить соответствующий стандарту поколоночный режим выполнения [UNION ALL](select/index.md#unionall). При этом автоматически включается -[упорядоченность колонок](#orderedcolumns). +Включить соответствующий стандарту поколоночный режим выполнения [UNION ALL](select/index.md#unionall). При этом автоматически включается [упорядоченность колонок](#orderedcolumns). ### RegexUseRe2 @@ -236,9 +236,9 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | true | -В классическом варианте результат целочисленного деления остаётся целочисленным (по умолчанию). -Если отключить — результат всегда становится Double. -ClassicDivision является [scoped](#pragmascope) настройкой. +В классическом варианте результат целочисленного деления остается целочисленным (по умолчанию). Если отключить — результат всегда становится Double. + +`ClassicDivision` является [scoped](#pragmascope) настройкой. ### CheckedOps @@ -246,10 +246,11 @@ ClassicDivision является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | false | -При включенном режиме если в результате выполнения агрегационных функций SUM/SUM_IF, бинарных операций `+`,`-`,`*`,`/`,`%` или унарной операции `-` над целыми числами происходит выход за границы целевого типа аргументов или результата, то возвращается `NULL`. -Если отключить - переполнение не проверяется. +При включенном режиме: если в результате выполнения агрегационных функций SUM/SUM_IF, бинарных операций `+`,`-`,`*`,`/`,`%` или унарной операции `-` над целыми числами происходит выход за границы целевого типа аргументов или результата, то возвращается `NULL`. Если отключить — переполнение не проверяется. + Не влияет на операции с числами с плавающей точкой или `Decimal`. -CheckedOps является [scoped](#pragmascope) настройкой. + +`CheckedOps` является [scoped](#pragmascope) настройкой. ### UnicodeLiterals @@ -259,8 +260,9 @@ CheckedOps является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | false | -При включенном режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип `Utf8`, при выключенном - `String`. -UnicodeLiterals является [scoped](#pragmascope) настройкой. +При включенном режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип `Utf8`, при выключенном — `String`. + +`UnicodeLiterals` является [scoped](#pragmascope) настройкой. ### WarnUntypedStringLiterals @@ -271,7 +273,8 @@ UnicodeLiterals является [scoped](#pragmascope) настройкой. | Флаг | false | При включенном режиме для строковых литералов без суффиксов вида "foo"/'bar'/@@multiline@@ будет генерироваться предупреждение. Его можно подавить, если явно выбрать суффикс `s` для типа `String`, либо `u` для типа `Utf8`. -WarnUntypedStringLiterals является [scoped](#pragmascope) настройкой. + +`WarnUntypedStringLiterals` является [scoped](#pragmascope) настройкой. ### AllowDotInAlias @@ -279,7 +282,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т.к. дальнейшее использование таких колонок в JOIN полностью не реализовано. +Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т. к. дальнейшее использование таких колонок в JOIN полностью не реализовано. ### WarnUnnamedColumns @@ -287,7 +290,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Генерировать предупреждение если для безымянного выражения в `SELECT` было автоматически сгенерировано имя колонки (вида `column[0-9]+`). +Генерировать предупреждение, если для безымянного выражения в `SELECT` было автоматически сгенерировано имя колонки (вида `column[0-9]+`). ### GroupByLimit @@ -295,7 +298,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Положительное число | 32 | -Увеличение лимита на число группировок в [GROUP BY](group_by.md). +Увеличение лимита на число группировок в [GROUP BY](group_by.md). ### GroupByCubeLimit @@ -310,7 +313,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой ## Yson -Управление поведением Yson UDF по умолчанию, подробнее см. в [документации по ней](../udf/list/yson.md) и в частности [Yson::Options](../udf/list/yson.md#ysonoptions). +Управление поведением Yson UDF по умолчанию, подробнее см. в [документации](../udf/list/yson.md) и в частности [Yson::Options](../udf/list/yson.md#ysonoptions). ### `yson.AutoConvert` @@ -318,7 +321,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Автоматическое конвертация значений в требуемый тип данных во всех вызовах Yson UDF, в том числе и неявных. +Автоматическая конвертация значений в требуемый тип данных во всех вызовах Yson UDF, в том числе и неявных. ### `yson.Strict` @@ -326,7 +329,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | true | -Управление строгим режимом во всех вызовах Yson UDF, в том числе и неявных. Без значения или при значении `"true"` - включает строгий режим. Со значением `"false"` - отключает. +Управление строгим режимом во всех вызовах Yson UDF, в том числе и неявных. Без значения или при значении `"true"` — включает строгий режим. Со значением `"false"` — отключает. ### `yson.DisableStrict` @@ -334,7 +337,8 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Инвертированная версия `yson.Strict`. Без значения или при значении `"true"` - отключает строгий режим. Со значением `"false"` - включает. +Инвертированная версия `yson.Strict`. Без значения или при значении `"true"` — отключает строгий режим. Со значением `"false"` — включает. + ## Работа с файлами @@ -354,8 +358,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой |-------------------------------------------------|--------------|--------------------------------| | Три строковых аргумента — алиас, ключ, значение | — | Статическая | -Установить у указанного файла опцию по заданному ключу в заданное значение. Файл с этим алиасом уже должен быть объявлен -через [PRAGMA File](#file) или приложен к запросу. +Установить для указанного файла опцию по заданному ключу в заданное значение. Файл с этим алиасом уже должен быть объявлен через [PRAGMA File](#file) или приложен к запросу. @@ -373,7 +376,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | -| Один или два аргумента - имя файла и опциональный URL | — | Статическая | +| Один или два аргумента — имя файла и опциональный URL | — | Статическая | Интерпретировать указанный приложенный файл как библиотеку, из которой можно делать [IMPORT](export_import.md). Тип синтаксиса библиотеки определяется по расширению файла: * `.sql` для YQL диалекта SQL <span style="color: green;">(рекомендуется)</span>; @@ -408,13 +411,13 @@ SELECT $x; | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | -| Два или три аргумента - имя пакета, URL и опциональный токен | — | Статическая | +| Два или три аргумента — имя пакета, URL и опциональный токен | — | Статическая | -Приложить иерархический набор файлов к запросу по URL, интерпретируя их в качестве пакета с указанным именем - взаимосвязанного набора библиотек. +Приложить иерархический набор файлов к запросу по URL, интерпретируя их в качестве пакета с указанным именем — взаимосвязанного набора библиотек. -Имя пакета ожидается в формате ``project_name.package_name``; из библиотек пакета в дальнейшнем можно делать [IMPORT](export_import.md) с именем модуля вида ``pkg.project_name.package_name.maybe.nested.module.name``. +Имя пакета ожидается в формате ``project_name.package_name``; из библиотек пакета в дальнейшем можно делать [IMPORT](export_import.md) с именем модуля вида ``pkg.project_name.package_name.maybe.nested.module.name``. -Пример для пакета с плоской иерархией, состоящего из двух библиотек - foo.sql и bar.sql: +Пример для пакета с плоской иерархией, состоящего из двух библиотек — foo.sql и bar.sql: ```yql PRAGMA package("project.package", "http://intranet.site/path/to/package"); @@ -437,7 +440,7 @@ SELECT $foo, $bar; | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | -| Один аргумент - имя файла | — | Статическая | +| Один аргумент — имя файла | — | Статическая | Интерпретировать указанный приложенный файл как библиотеку и перекрыть ей одну из библиотек пакета. diff --git a/yql/essentials/minikql/codegen/codegen_ut.cpp b/yql/essentials/minikql/codegen/codegen_ut.cpp index 9ac6030358d..5d96b342017 100644 --- a/yql/essentials/minikql/codegen/codegen_ut.cpp +++ b/yql/essentials/minikql/codegen/codegen_ut.cpp @@ -8,6 +8,12 @@ using namespace NYql::NCodegen; using namespace llvm; +#ifdef _win_ +constexpr bool SupportsBitCode = false; +#else +constexpr bool SupportsBitCode = true; +#endif + extern "C" int mul(int x, int y) { return x * y; } @@ -268,6 +274,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(FibFromBitCode) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); @@ -281,6 +291,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(LinkWithNativeFunction) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); @@ -295,6 +309,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(LinkWithGeneratedFunction) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto mulFunc = CreateMulFunction(codegen->GetModule(), codegen->GetContext()); Y_UNUSED(mulFunc); @@ -310,6 +328,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(ReuseExternalCode) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); @@ -323,6 +345,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(UseObjectReference) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); @@ -349,6 +375,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(UseExternalFromGeneratedFunction) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); @@ -363,6 +393,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(UseExternalFromGeneratedFunction_128bit_Compiled) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); @@ -389,6 +423,10 @@ Y_UNIT_TEST_SUITE(TCodegenTests) { } Y_UNIT_TEST(UseExternalFromGeneratedFunction_128bit_Bitcode) { + if (!SupportsBitCode) { + return; + } + auto codegen = ICodegen::Make(ETarget::Native); auto bitcode = NResource::Find("/llvm_bc/Funcs"); codegen->LoadBitCode(bitcode, "Funcs"); diff --git a/yql/essentials/minikql/codegen/ut/ya.make.inc b/yql/essentials/minikql/codegen/ut/ya.make.inc index 0d658075fe6..c1eacbb2b6e 100644 --- a/yql/essentials/minikql/codegen/ut/ya.make.inc +++ b/yql/essentials/minikql/codegen/ut/ya.make.inc @@ -24,23 +24,25 @@ COPY_FILE( SRCDIR(yql/essentials/minikql/codegen/ut) IF (OS_WINDOWS) - LLVM_BC( - fib.cpp - sum_sqr.cpp - sum_sqr2.cpp - str.cpp - 128_bit.cpp - 128_bit_win.ll - NAME Funcs - SUFFIX .${LLVM_VER} - SYMBOLS - fib - sum_sqr - sum_sqr2 - sum_sqr_128 - sum_sqr_128_ir - str_size - ) + PEERDIR(library/cpp/resource) + # FIXME: llvm18 + #LLVM_BC( + # fib.cpp + # sum_sqr.cpp + # sum_sqr2.cpp + # str.cpp + # 128_bit.cpp + # 128_bit_win.ll + # NAME Funcs + # SUFFIX .${LLVM_VER} + # SYMBOLS + # fib + # sum_sqr + # sum_sqr2 + # sum_sqr_128 + # sum_sqr_128_ir + # str_size + #) ELSE() LLVM_BC( fib.cpp diff --git a/yql/essentials/minikql/comp_nodes/mkql_block_map_join.cpp b/yql/essentials/minikql/comp_nodes/mkql_block_map_join.cpp index 17c549202ce..e37a1874f2c 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_block_map_join.cpp +++ b/yql/essentials/minikql/comp_nodes/mkql_block_map_join.cpp @@ -26,11 +26,11 @@ size_t CalcMaxBlockLength(const TVector<TType*>& items) { })); } -ui64 CalculateTupleHash(const std::vector<ui64>& hashes) { +TMaybe<ui64> CalculateTupleHash(const std::vector<NYql::NUdf::TBlockItem>& items, const std::vector<ui64>& hashes) { ui64 hash = 0; for (size_t i = 0; i < hashes.size(); i++) { - if (!hashes[i]) { - return 0; + if (!items[i]) { + return {}; } hash = CombineHashes(hash, hashes[i]); @@ -315,57 +315,66 @@ public: TBlockStorage( TMemoryUsageInfo* memInfo, - const TVector<TType*>& itemTypes, - NUdf::TUnboxedValue stream, + const TVector<TType*>& types, + size_t blockLengthIndex, + NUdf::TUnboxedValue listIter, TStringBuf resourceTag, arrow::MemoryPool* pool ) : TBase(memInfo) - , InputsDescr_(ToValueDescr(itemTypes)) - , Stream_(std::move(stream)) - , Inputs_(itemTypes.size()) + , InputsDescr_(ToValueDescr(types)) + , Readers_(types.size()) + , Hashers_(types.size()) + , Comparators_(types.size()) + , Trimmers_(types.size()) + , ListIter_(std::move(listIter)) + , BlockLengthIndex_(blockLengthIndex) , ResourceTag_(std::move(resourceTag)) { TBlockTypeHelper helper; - for (size_t i = 0; i < itemTypes.size(); i++) { - TType* blockItemType = AS_TYPE(TBlockType, itemTypes[i])->GetItemType(); - Readers_.push_back(MakeBlockReader(TTypeInfoHelper(), blockItemType)); - Hashers_.push_back(helper.MakeHasher(blockItemType)); - Comparators_.push_back(helper.MakeComparator(blockItemType)); - Trimmers_.push_back(MakeBlockTrimmer(TTypeInfoHelper(), blockItemType, pool)); + for (size_t i = 0; i < types.size(); i++) { + if (i == BlockLengthIndex_) { + continue; + } + + TType* blockItemType = AS_TYPE(TBlockType, types[i])->GetItemType(); + Readers_[i] = MakeBlockReader(TTypeInfoHelper(), blockItemType); + Hashers_[i] = helper.MakeHasher(blockItemType); + Comparators_[i] = helper.MakeComparator(blockItemType); + Trimmers_[i] = MakeBlockTrimmer(TTypeInfoHelper(), blockItemType, pool); } } - NUdf::EFetchStatus FetchStream() { - switch (Stream_.WideFetch(Inputs_.data(), Inputs_.size())) { - case NUdf::EFetchStatus::Yield: - return NUdf::EFetchStatus::Yield; - case NUdf::EFetchStatus::Finish: + bool FetchNextBlock() { + if (!ListIter_.Next(Block_)) { IsFinished_ = true; - return NUdf::EFetchStatus::Finish; - case NUdf::EFetchStatus::Ok: - break; + return false; } + BlockItems_ = Block_.GetElements(); Y_ENSURE(!IsFinished_, "Got data on finished stream"); - std::vector<arrow::Datum> blockColumns; - for (size_t i = 0; i < Inputs_.size() - 1; i++) { - auto& datum = TArrowBlock::From(Inputs_[i]).GetDatum(); + std::vector<arrow::Datum> blockColumns(Readers_.size()); + for (size_t i = 0; i < Readers_.size(); i++) { + if (i == BlockLengthIndex_) { + continue; + } + + auto& datum = TArrowBlock::From(BlockItems_[i]).GetDatum(); ARROW_DEBUG_CHECK_DATUM_TYPES(InputsDescr_[i], datum.descr()); if (datum.is_scalar()) { - blockColumns.push_back(datum); + blockColumns[i] = datum; } else { MKQL_ENSURE(datum.is_array(), "Expecting array"); - blockColumns.push_back(Trimmers_[i]->Trim(datum.array())); + blockColumns[i] = Trimmers_[i]->Trim(datum.array()); } } - auto blockSize = ::GetBlockCount(Inputs_[Inputs_.size() - 1]); + auto blockSize = ::GetBlockCount(BlockItems_[BlockLengthIndex_]); Data_.emplace_back(blockSize, std::move(blockColumns)); RowCount_ += blockSize; - return NUdf::EFetchStatus::Ok; + return true; } const TBlock& GetBlock(size_t blockOffset) const { @@ -392,11 +401,11 @@ public: } TBlockItem GetItem(TRowEntry entry, ui32 columnIdx) const { - Y_ENSURE(columnIdx < Inputs_.size() - 1); return GetItemFromBlock(GetBlock(entry.BlockOffset), columnIdx, entry.ItemOffset); } TBlockItem GetItemFromBlock(const TBlock& block, ui32 columnIdx, size_t offset) const { + Y_ENSURE(columnIdx < Readers_.size() && columnIdx != BlockLengthIndex_); Y_ENSURE(offset < block.Size); const auto& datum = block.Columns[columnIdx]; if (datum.is_scalar()) { @@ -447,8 +456,11 @@ protected: size_t RowCount_ = 0; bool IsFinished_ = false; - NUdf::TUnboxedValue Stream_; - TUnboxedValueVector Inputs_; + NUdf::TUnboxedValue ListIter_; + NUdf::TUnboxedValue Block_; + const NUdf::TUnboxedValue* BlockItems_ = nullptr; + + size_t BlockLengthIndex_ = 0; const TStringBuf ResourceTag_; }; @@ -459,20 +471,29 @@ class TBlockStorageWrapper : public TMutableComputationNode<TBlockStorageWrapper public: TBlockStorageWrapper( TComputationMutables& mutables, - TVector<TType*>&& itemTypes, - IComputationNode* stream, + TStructType* structType, + IComputationNode* list, const TStringBuf& resourceTag ) : TBaseComputation(mutables, EValueRepresentation::Boxed) - , ItemTypes_(std::move(itemTypes)) - , Stream_(stream) + , List_(list) , ResourceTag_(resourceTag) - {} + { + for (size_t i = 0; i < structType->GetMembersCount(); i++) { + if (structType->GetMemberName(i) == NYql::BlockLengthColumnName) { + BlockLengthIndex_ = i; + Types_.push_back(nullptr); + continue; + } + Types_.push_back(structType->GetMemberType(i)); + } + } NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { return ctx.HolderFactory.Create<TBlockStorage>( - ItemTypes_, - std::move(Stream_->GetValue(ctx)), + Types_, + BlockLengthIndex_, + List_->GetValue(ctx).GetListIterator(), ResourceTag_, &ctx.ArrowMemoryPool ); @@ -480,12 +501,14 @@ public: private: void RegisterDependencies() const final { - DependsOn(Stream_); + DependsOn(List_); } private: - const TVector<TType*> ItemTypes_; - IComputationNode* const Stream_; + TVector<TType*> Types_; + size_t BlockLengthIndex_ = 0; + + IComputationNode* const List_; const TString ResourceTag_; }; @@ -750,13 +773,13 @@ public: Y_ENSURE(blockOffset <= std::numeric_limits<ui32>::max()); Y_ENSURE(blockSize <= std::numeric_limits<ui32>::max()); for (size_t itemOffset = 0; itemOffset < blockSize; itemOffset++) { - ui64 keyHash = GetKey(block, itemOffset, insertBatchKeys[insertBatchLen]); + auto keyHash = GetKey(block, itemOffset, insertBatchKeys[insertBatchLen]); if (!keyHash) { continue; } insertBatchEntries[insertBatchLen] = TBlockStorage::TRowEntry(blockOffset, itemOffset); - insertBatch[insertBatchLen].ConstructKey(keyHash); + insertBatch[insertBatchLen].ConstructKey(*keyHash); insertBatchLen++; if (insertBatchLen == PrefetchBatchSize) { @@ -777,15 +800,22 @@ public: std::array<TRobinHoodBatchRequestItem<ui64>, PrefetchBatchSize> lookupBatch; std::array<std::vector<NYql::NUdf::TBlockItem>, PrefetchBatchSize> itemsBatch; + std::array<bool, PrefetchBatchSize> notNullBatch = {}; for (size_t i = 0; i < batchSize; i++) { const auto& [items, keyHash] = getKey(i); - lookupBatch[i].ConstructKey(keyHash); + if (!keyHash) { + lookupBatch[i].ConstructKey(0); + continue; + } + + notNullBatch[i] = true; + lookupBatch[i].ConstructKey(*keyHash); itemsBatch[i] = items; } Index_->BatchLookup({lookupBatch.data(), batchSize}, [&](size_t i, TIndexMap::iterator iter) { - if (!iter) { + if (!notNullBatch[i] || !iter) { // Empty iterator iterators[i] = TIterator(this); return; @@ -819,7 +849,7 @@ public: } private: - ui64 GetKey(const TBlockStorage::TBlock& block, size_t offset, std::vector<NYql::NUdf::TBlockItem>& keyItems) const { + TMaybe<ui64> GetKey(const TBlockStorage::TBlock& block, size_t offset, std::vector<NYql::NUdf::TBlockItem>& keyItems) const { auto& blockStorage = *static_cast<TBlockStorage*>(BlockStorage_.GetResource()); ui64 keyHash = 0; @@ -828,7 +858,7 @@ private: auto item = blockStorage.GetItemFromBlock(block, keyColumn, offset); if (!item) { keyItems.clear(); - return 0; + return {}; } keyHash = CombineHashes(keyHash, blockStorage.GetItemHashers()[keyColumn]->Hash(item)); @@ -992,17 +1022,13 @@ private: auto& indexState = *static_cast<TIndexState*>(RightBlockIndex_.GetResource()); auto& storageState = *static_cast<TStorageState*>(indexState.GetBlockStorage().GetResource()); - if (!RightStreamConsumed_) { - auto fetchStatus = NUdf::EFetchStatus::Ok; - while (fetchStatus != NUdf::EFetchStatus::Finish) { - fetchStatus = storageState.FetchStream(); - if (fetchStatus == NUdf::EFetchStatus::Yield) { - return NUdf::EFetchStatus::Yield; - } + if (!RightInputConsumed_) { + while (storageState.FetchNextBlock()) { + // Fetch entire data from the right input } indexState.BuildIndex(); - RightStreamConsumed_ = true; + RightInputConsumed_ = true; } auto* inputFields = joinState.GetRawInputFields(); @@ -1052,7 +1078,7 @@ private: LookupBatchSize_ = std::min(PrefetchBatchSize, static_cast<ui32>(joinState.RemainingRowsCount())); indexState.BatchLookup(LookupBatchSize_, LookupBatchIterators_, [&](size_t i) { MakeLeftKeys(leftKeyColumns, leftKeyColumnHashes, i); - ui64 keyHash = CalculateTupleHash(leftKeyColumnHashes); + auto keyHash = CalculateTupleHash(leftKeyColumns, leftKeyColumnHashes); return std::make_pair(std::ref(leftKeyColumns), keyHash); }); @@ -1104,7 +1130,7 @@ private: const TVector<ui32>& LeftKeyColumns_; const TVector<ui32>& RightIOMap_; - bool RightStreamConsumed_ = false; + bool RightInputConsumed_ = false; std::array<typename TIndexState::TIterator, PrefetchBatchSize> LookupBatchIterators_; ui32 LookupBatchCurrent_ = 0; @@ -1204,16 +1230,12 @@ private: auto& joinState = *static_cast<TJoinState*>(JoinState_.AsBoxed().Get()); auto& storageState = *static_cast<TStorageState*>(RightBlockStorage_.GetResource()); - if (!RightStreamConsumed_) { - auto fetchStatus = NUdf::EFetchStatus::Ok; - while (fetchStatus != NUdf::EFetchStatus::Finish) { - fetchStatus = storageState.FetchStream(); - if (fetchStatus == NUdf::EFetchStatus::Yield) { - return NUdf::EFetchStatus::Yield; - } + if (!RightInputConsumed_) { + while (storageState.FetchNextBlock()) { + // Fetch entire data from the right input } - RightStreamConsumed_ = true; + RightInputConsumed_ = true; RightRowIterator_ = storageState.GetRowIterator(); } @@ -1270,7 +1292,7 @@ private: NUdf::TUnboxedValue JoinState_; const TVector<ui32>& RightIOMap_; - bool RightStreamConsumed_ = false; + bool RightInputConsumed_ = false; TStorageState::TRowIterator RightRowIterator_; @@ -1310,19 +1332,15 @@ IComputationNode* WrapBlockStorage(TCallable& callable, const TComputationNodeFa MKQL_ENSURE(resultResourceType->GetTag().StartsWith(BlockStorageResourcePrefix), "Expected block storage resource"); const auto inputType = callable.GetInput(0).GetStaticType(); - MKQL_ENSURE(inputType->IsStream(), "Expected WideStream as an input stream"); - const auto inputStreamType = AS_TYPE(TStreamType, inputType); - MKQL_ENSURE(inputStreamType->GetItemType()->IsMulti(), - "Expected Multi as a left stream item type"); - const auto inputStreamComponents = GetWideComponents(inputStreamType); - MKQL_ENSURE(inputStreamComponents.size() > 0, "Expected at least one column"); - TVector<TType*> inputStreamItems(inputStreamComponents.cbegin(), inputStreamComponents.cend()); + MKQL_ENSURE(inputType->IsList(), "Expected List as an input stream"); + const auto inputItemType = AS_TYPE(TListType, inputType)->GetItemType();; + MKQL_ENSURE(inputItemType->IsStruct(), "Expected Struct as a list item type"); - const auto inputStream = LocateNode(ctx.NodeLocator, callable, 0); + const auto list = LocateNode(ctx.NodeLocator, callable, 0); return new TBlockStorageWrapper( ctx.Mutables, - std::move(inputStreamItems), - inputStream, + AS_TYPE(TStructType, inputItemType), + list, resultResourceType->GetTag() ); } @@ -1341,9 +1359,9 @@ IComputationNode* WrapBlockMapJoinIndex(TCallable& callable, const TComputationN MKQL_ENSURE(inputResourceType->GetTag().StartsWith(BlockStorageResourcePrefix), "Expected block storage resource"); auto origInputItemType = AS_VALUE(TTypeType, callable.GetInput(1)); - MKQL_ENSURE(origInputItemType->IsMulti(), "Expected Multi as an input item type"); - const auto streamComponents = AS_TYPE(TMultiType, origInputItemType)->GetElements(); - MKQL_ENSURE(streamComponents.size() > 0, "Expected at least one column"); + MKQL_ENSURE(origInputItemType->IsStruct(), "Expected Struct as an input item type"); + const auto origInputItemStructType = AS_TYPE(TStructType, origInputItemType); + MKQL_ENSURE(origInputItemStructType->GetMembersCount() > 0, "Expected at least one column"); const auto keyColumnsLiteral = callable.GetInput(2); const auto keyColumnsTuple = AS_VALUE(TTupleLiteral, keyColumnsLiteral); @@ -1355,7 +1373,7 @@ IComputationNode* WrapBlockMapJoinIndex(TCallable& callable, const TComputationN } for (ui32 keyColumn : keyColumns) { - MKQL_ENSURE(keyColumn < streamComponents.size() - 1, "Key column out of range"); + MKQL_ENSURE(keyColumn < origInputItemStructType->GetMembersCount(), "Key column out of range"); } const auto anyNode = callable.GetInput(3); @@ -1408,10 +1426,9 @@ IComputationNode* WrapBlockMapJoinCore(TCallable& callable, const TComputationNo } auto origRightItemType = AS_VALUE(TTypeType, callable.GetInput(2)); - MKQL_ENSURE(origRightItemType->IsMulti(), "Expected Multi as a right stream item type"); - const auto rightStreamComponents = AS_TYPE(TMultiType, origRightItemType)->GetElements(); - MKQL_ENSURE(rightStreamComponents.size() > 0, "Expected at least one column"); - const TVector<TType*> rightStreamItems(rightStreamComponents.cbegin(), rightStreamComponents.cend()); + MKQL_ENSURE(origRightItemType->IsStruct(), "Expected Struct as a right stream item type"); + const auto origRightItemStructType = AS_TYPE(TStructType, origRightItemType); + MKQL_ENSURE(origRightItemStructType->GetMembersCount() > 0, "Expected at least one column"); const auto leftKeyColumnsLiteral = callable.GetInput(4); const auto leftKeyColumnsTuple = AS_VALUE(TTupleLiteral, leftKeyColumnsLiteral); @@ -1479,8 +1496,8 @@ IComputationNode* WrapBlockMapJoinCore(TCallable& callable, const TComputationNo // XXX: Mind the last wide item, containing block length. TVector<ui32> rightIOMap; if (joinKind == EJoinKind::Inner || joinKind == EJoinKind::Left || joinKind == EJoinKind::Cross) { - for (size_t i = 0; i < rightStreamItems.size() - 1; i++) { - if (rightKeyDrops.contains(i)) { + for (size_t i = 0; i < origRightItemStructType->GetMembersCount(); i++) { + if (rightKeyDrops.contains(i) || origRightItemStructType->GetMemberName(i) == NYql::BlockLengthColumnName) { continue; } rightIOMap.push_back(i); diff --git a/yql/essentials/minikql/comp_nodes/mkql_grace_join.cpp b/yql/essentials/minikql/comp_nodes/mkql_grace_join.cpp index ac5e5108e3c..bb319984526 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_grace_join.cpp +++ b/yql/essentials/minikql/comp_nodes/mkql_grace_join.cpp @@ -80,9 +80,12 @@ struct TGraceJoinPacker { ui64 DataIColumnsNum = TotalIColumnsNum - KeyIColumnsNum; std::vector<GraceJoin::TColTypeInterface> ColumnInterfaces; bool IsAny; // Flag to support any join attribute + const NUdf::TLoggerPtr Logger; // Logger instance + const NUdf::TLogComponentId LogComponent; // Id of current component for logging. GracejJoin here inline void Pack() ; // Packs new tuple from TupleHolder and TuplePtrs to TupleIntVals, TupleStrSizes, TupleStrings inline void UnPack(); // Unpacks packed values from TupleIntVals, TupleStrSizes, TupleStrings into TupleHolder and TuplePtrs - TGraceJoinPacker(const std::vector<TType*>& columnTypes, const std::vector<ui32>& keyColumns, const THolderFactory& holderFactory, bool isAny); + TGraceJoinPacker(const std::vector<TType*>& columnTypes, const std::vector<ui32>& keyColumns, + const THolderFactory& holderFactory, bool isAny, NUdf::TLoggerPtr logger, NUdf::TLogComponentId logComponent); }; @@ -430,10 +433,13 @@ void TGraceJoinPacker::UnPack() { } -TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, const std::vector<ui32>& keyColumns, const THolderFactory& holderFactory, bool isAny) : +TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, const std::vector<ui32>& keyColumns, + const THolderFactory& holderFactory, bool isAny, NUdf::TLoggerPtr logger = nullptr, NUdf::TLogComponentId logComponent = 0) : ColumnTypes(columnTypes) , HolderFactory(holderFactory) - , IsAny(isAny) { + , IsAny(isAny) + , Logger(logger) + , LogComponent(logComponent) { ui64 nColumns = ColumnTypes.size(); ui64 nKeyColumns = keyColumns.size(); @@ -550,8 +556,9 @@ TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, con } TablePtr = std::make_unique<GraceJoin::TTable>( + Logger, LogComponent, PackedKeyIntColumnsNum, KeyStrColumnsNum, PackedDataIntColumnsNum, - DataStrColumnsNum, KeyIColumnsNum, DataIColumnsNum, NullsBitmapSize, cti_p, IsAny ); + DataStrColumnsNum, KeyIColumnsNum, DataIColumnsNum, NullsBitmapSize, cti_p, IsAny); } @@ -569,7 +576,7 @@ public: EJoinKind joinKind, EAnyJoinSettings anyJoinSettings, const std::vector<ui32>& leftKeyColumns, const std::vector<ui32>& rightKeyColumns, const std::vector<ui32>& leftRenames, const std::vector<ui32>& rightRenames, const std::vector<TType*>& leftColumnsTypes, const std::vector<TType*>& rightColumnsTypes, TComputationContext& ctx, - const bool isSelfJoin, bool isSpillingAllowed) + const bool isSelfJoin, bool isSpillingAllowed, NUdf::TLoggerPtr logger, NUdf::TLogComponentId logComponent) : TBase(memInfo) , FlowLeft(flowLeft) , FlowRight(flowRight) @@ -578,9 +585,9 @@ public: , RightKeyColumns(rightKeyColumns) , LeftRenames(leftRenames) , RightRenames(rightRenames) - , LeftPacker(std::make_unique<TGraceJoinPacker>(leftColumnsTypes, leftKeyColumns, ctx.HolderFactory, (anyJoinSettings == EAnyJoinSettings::Left || anyJoinSettings == EAnyJoinSettings::Both || joinKind == EJoinKind::RightSemi || joinKind == EJoinKind::RightOnly))) - , RightPacker(std::make_unique<TGraceJoinPacker>(rightColumnsTypes, rightKeyColumns, ctx.HolderFactory, (anyJoinSettings == EAnyJoinSettings::Right || anyJoinSettings == EAnyJoinSettings::Both || joinKind == EJoinKind::LeftSemi || joinKind == EJoinKind::LeftOnly))) - , JoinedTablePtr(std::make_unique<GraceJoin::TTable>()) + , LeftPacker(std::make_unique<TGraceJoinPacker>(leftColumnsTypes, leftKeyColumns, ctx.HolderFactory, (anyJoinSettings == EAnyJoinSettings::Left || anyJoinSettings == EAnyJoinSettings::Both || joinKind == EJoinKind::RightSemi || joinKind == EJoinKind::RightOnly), logger, logComponent)) + , RightPacker(std::make_unique<TGraceJoinPacker>(rightColumnsTypes, rightKeyColumns, ctx.HolderFactory, (anyJoinSettings == EAnyJoinSettings::Right || anyJoinSettings == EAnyJoinSettings::Both || joinKind == EJoinKind::LeftSemi || joinKind == EJoinKind::LeftOnly), logger, logComponent)) + , JoinedTablePtr(std::make_unique<GraceJoin::TTable>(logger, logComponent)) , JoinCompleted(std::make_unique<bool>(false)) , PartialJoinCompleted(std::make_unique<bool>(false)) , HaveMoreLeftRows(std::make_unique<bool>(true)) @@ -588,8 +595,10 @@ public: , IsSelfJoin_(isSelfJoin) , SelfJoinSameKeys_(isSelfJoin && (leftKeyColumns == rightKeyColumns)) , IsSpillingAllowed(isSpillingAllowed) + , Logger(logger) + , LogComponent(logComponent) { - YQL_LOG(GRACEJOIN_DEBUG) << (const void *)&*JoinedTablePtr << "# AnyJoinSettings=" << (int)anyJoinSettings << " JoinKind=" << (int)joinKind; + UDF_LOG(Logger, LogComponent, GRACEJOIN_DEBUG, TStringBuilder() << (const void *)&*JoinedTablePtr << "# AnyJoinSettings=" << (int)anyJoinSettings << " JoinKind=" << (int)joinKind); if (IsSelfJoin_) { LeftPacker->BatchSize = std::numeric_limits<ui64>::max(); RightPacker->BatchSize = std::numeric_limits<ui64>::max(); @@ -646,12 +655,14 @@ private: LogMemoryUsage(); switch(mode) { case EOperatingMode::InMemory: { - YQL_LOG(INFO) << (const void *)&*JoinedTablePtr << "# switching Memory mode to InMemory"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, TStringBuilder() + << (const void *)&*JoinedTablePtr << "# switching Memory mode to InMemory"); MKQL_ENSURE(false, "Internal logic error"); break; } case EOperatingMode::Spilling: { - YQL_LOG(INFO) << (const void *)&*JoinedTablePtr << "# switching Memory mode to Spilling"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, TStringBuilder() + << (const void *)&*JoinedTablePtr << "# switching Memory mode to Spilling"); MKQL_ENSURE(EOperatingMode::InMemory == Mode, "Internal logic error"); auto spiller = ctx.SpillerFactory->CreateSpiller(); RightPacker->TablePtr->InitializeBucketSpillers(spiller); @@ -659,7 +670,8 @@ private: break; } case EOperatingMode::ProcessSpilled: { - YQL_LOG(INFO) << (const void *)&*JoinedTablePtr << "# switching Memory mode to ProcessSpilled"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, TStringBuilder() + << (const void *)&*JoinedTablePtr << "# switching Memory mode to ProcessSpilled"); SpilledBucketsJoinOrder.reserve(GraceJoin::NumberOfBuckets); for (ui32 i = 0; i < GraceJoin::NumberOfBuckets; ++i) SpilledBucketsJoinOrder.push_back(i); @@ -796,6 +808,11 @@ private: } void LogMemoryUsage() const { + const auto memoryUsageLogLevel = NUdf::ELogLevel::Info; + if (!Logger->IsActive(LogComponent, memoryUsageLogLevel)) { + return; + } + const auto used = TlsAllocState->GetUsed(); const auto limit = TlsAllocState->GetLimit(); TStringBuilder logmsg; @@ -805,7 +822,7 @@ private: } logmsg << (used/1_MB) << "MB/" << (limit/1_MB) << "MB"; - YQL_LOG(INFO) << logmsg; + UDF_LOG(Logger, LogComponent, memoryUsageLogLevel, logmsg); } EFetchResult DoCalculateInMemory(TComputationContext& ctx, NUdf::TUnboxedValue*const* output) { @@ -857,11 +874,10 @@ private: (!*HaveMoreRightRows && (!*HaveMoreLeftRows || LeftPacker->TuplesBatchPacked >= LeftPacker->BatchSize )) || (!*HaveMoreLeftRows && RightPacker->TuplesBatchPacked >= RightPacker->BatchSize))) { - YQL_LOG(GRACEJOIN_TRACE) + UDF_LOG(Logger, LogComponent, GRACEJOIN_TRACE, TStringBuilder() << (const void *)&*JoinedTablePtr << '#' << " HaveLeft " << *HaveMoreLeftRows << " LeftPacked " << LeftPacker->TuplesBatchPacked << " LeftBatch " << LeftPacker->BatchSize - << " HaveRight " << *HaveMoreRightRows << " RightPacked " << RightPacker->TuplesBatchPacked << " RightBatch " << RightPacker->BatchSize - ; + << " HaveRight " << *HaveMoreRightRows << " RightPacked " << RightPacker->TuplesBatchPacked << " RightBatch " << RightPacker->BatchSize); auto& leftTable = *LeftPacker->TablePtr; auto& rightTable = SelfJoinSameKeys_ ? *LeftPacker->TablePtr : *RightPacker->TablePtr; @@ -1048,6 +1064,9 @@ private: NYql::NUdf::TCounter CounterOutputRows_; ui32 SpilledBucketsJoinOrderCurrentIndex = 0; std::vector<ui32> SpilledBucketsJoinOrder; + + const NUdf::TLoggerPtr Logger; + const NUdf::TLogComponentId LogComponent; }; class TGraceJoinWrapper : public TStatefulWideFlowCodegeneratorNode<TGraceJoinWrapper> { @@ -1167,10 +1186,14 @@ class TGraceJoinWrapper : public TStatefulWideFlowCodegeneratorNode<TGraceJoinWr } void MakeSpillingSupportState(TComputationContext& ctx, NUdf::TUnboxedValue& state) const { + NYql::NUdf::TLoggerPtr logger = ctx.MakeLogger(); + NYql::NUdf::TLogComponentId logComponent = logger->RegisterComponent("GraceJoin"); + UDF_LOG(logger, logComponent, NUdf::ELogLevel::Debug, TStringBuilder() << "State initialized"); + state = ctx.HolderFactory.Create<TGraceJoinSpillingSupportState>( FlowLeft, FlowRight, JoinKind, AnyJoinSettings_, LeftKeyColumns, RightKeyColumns, LeftRenames, RightRenames, LeftColumnsTypes, RightColumnsTypes, - ctx, IsSelfJoin_, IsSpillingAllowed); + ctx, IsSelfJoin_, IsSpillingAllowed, logger, logComponent); } IComputationWideFlowNode *const FlowLeft; diff --git a/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.cpp b/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.cpp index 5163d779423..5ea63283143 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.cpp +++ b/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.cpp @@ -368,6 +368,7 @@ bool TTable::TryToPreallocateMemoryForJoin(TTable & t1, TTable & t2, EJoinKind / } if (wasException || TlsAllocState->IsMemoryYellowZoneEnabled()) { + UDF_LOG(Logger_, LogComponent_, NUdf::ELogLevel::Debug, TStringBuilder() << "Preallocation failed. WasException: " << wasException); for (ui64 i = 0; i < bucket; ++i) { auto& b1 = t1.TableBuckets[i]; b1.JoinSlots.resize(0); @@ -673,7 +674,7 @@ void TTable::Join( TTable & t1, TTable & t2, EJoinKind joinKind, bool hasMoreLef BloomHits_ += bloomHits; BloomLookups_ += bloomLookups; - YQL_LOG(GRACEJOIN_TRACE) + UDF_LOG(Logger_, LogComponent_, GRACEJOIN_TRACE, TStringBuilder() << (const void *)this << '#' << bucket << " Table1 " << JoinTable1->TableBucketsStats[bucket].TuplesNum @@ -685,7 +686,7 @@ void TTable::Join( TTable & t1, TTable & t2, EJoinKind joinKind, bool hasMoreLef << " joinKind " << (int)JoinKind << " swapTables " << swapTables << " initHashTable " << initHashTable - ; + ); } HasMoreLeftTuples_ = hasMoreLeftTuples; @@ -1062,10 +1063,12 @@ void TTable::PrepareBucket(ui64 bucket) { } // Creates new table with key columns and data columns -TTable::TTable( ui64 numberOfKeyIntColumns, ui64 numberOfKeyStringColumns, +TTable::TTable( NUdf::TLoggerPtr logger, NUdf::TLogComponentId logComponent, + ui64 numberOfKeyIntColumns, ui64 numberOfKeyStringColumns, ui64 numberOfDataIntColumns, ui64 numberOfDataStringColumns, ui64 numberOfKeyIColumns, ui64 numberOfDataIColumns, - ui64 nullsBitmapSize, TColTypeInterface * colInterfaces, bool isAny ) : + ui64 nullsBitmapSize, TColTypeInterface * colInterfaces, + bool isAny) : NumberOfKeyIntColumns(numberOfKeyIntColumns), NumberOfKeyStringColumns(numberOfKeyStringColumns), @@ -1075,7 +1078,9 @@ TTable::TTable( ui64 numberOfKeyIntColumns, ui64 numberOfKeyStringColumns, NumberOfDataIColumns(numberOfDataIColumns), ColInterfaces(colInterfaces), NullsBitmapSize_(nullsBitmapSize), - IsAny_(isAny) { + IsAny_(isAny), + Logger_(logger), + LogComponent_(logComponent) { NumberOfKeyColumns = NumberOfKeyIntColumns + NumberOfKeyStringColumns + NumberOfKeyIColumns; NumberOfDataColumns = NumberOfDataIntColumns + NumberOfDataStringColumns + NumberOfDataIColumns; @@ -1114,16 +1119,21 @@ TTable::TTable( ui64 numberOfKeyIntColumns, ui64 numberOfKeyStringColumns, } TTable::~TTable() { - YQL_LOG_IF(GRACEJOIN_DEBUG, InitHashTableCount_) + UDF_LOG_IF(InitHashTableCount_, Logger_, LogComponent_, GRACEJOIN_DEBUG, TStringBuilder() << (const void *)this << '#' << "InitHashTableCount " << InitHashTableCount_ << " BloomLookups " << BloomLookups_ << " BloomHits " << BloomHits_ << " BloomFalsePositives " << BloomFalsePositives_ << " HashLookups " << HashLookups_ << " HashChainTraversal " << HashO1Iterations_/(double)HashLookups_ << " HashSlotOperations " << HashSlotIterations_/(double)HashLookups_ << " Table1 " << JoinTable1Total_ << " Table2 " << JoinTable2Total_ << " TuplesFound " << TuplesFound_ - ; - YQL_LOG_IF(GRACEJOIN_DEBUG, JoinTable1 && JoinTable1->AnyFiltered_) << (const void *)this << '#' << "L AnyFiltered " << JoinTable1->AnyFiltered_; - YQL_LOG_IF(GRACEJOIN_DEBUG, JoinTable1 && JoinTable1->BloomLookups_) << (const void *)this << '#' << "L BloomLookups " << JoinTable1->BloomLookups_ << " BloomHits " << JoinTable1->BloomHits_; - YQL_LOG_IF(GRACEJOIN_DEBUG, JoinTable2 && JoinTable2->AnyFiltered_) << (const void *)this << '#' << "R AnyFiltered " << JoinTable2->AnyFiltered_; - YQL_LOG_IF(GRACEJOIN_DEBUG, JoinTable2 && JoinTable2->BloomLookups_) << (const void *)this << '#' << "R BloomLookups " << JoinTable2->BloomLookups_ << " BloomHits " << JoinTable2->BloomHits_; + ); + + UDF_LOG_IF(JoinTable1 && JoinTable1->AnyFiltered_, Logger_, LogComponent_, GRACEJOIN_DEBUG, TStringBuilder() + << (const void *)this << '#' << "L AnyFiltered " << JoinTable1->AnyFiltered_); + UDF_LOG_IF(JoinTable1 && JoinTable1->BloomLookups_, Logger_, LogComponent_, GRACEJOIN_DEBUG, TStringBuilder() + << (const void *)this << '#' << "L BloomLookups " << JoinTable1->BloomLookups_ << " BloomHits " << JoinTable1->BloomHits_); + UDF_LOG_IF(JoinTable2 && JoinTable2->AnyFiltered_, Logger_, LogComponent_, GRACEJOIN_DEBUG, TStringBuilder() + << (const void *)this << '#' << "R AnyFiltered " << JoinTable2->AnyFiltered_); + UDF_LOG_IF(JoinTable2 && JoinTable2->BloomLookups_, Logger_, LogComponent_, GRACEJOIN_DEBUG, TStringBuilder() + << (const void *)this << '#' << "R BloomLookups " << JoinTable2->BloomLookups_ << " BloomHits " << JoinTable2->BloomHits_); }; TTableBucketSpiller::TTableBucketSpiller(ISpiller::TPtr spiller, size_t sizeLimit) diff --git a/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.h b/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.h index b918ce9b909..6c9256bc036 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.h +++ b/yql/essentials/minikql/comp_nodes/mkql_grace_join_imp.h @@ -11,8 +11,8 @@ namespace NMiniKQL { namespace GraceJoin { class TTableBucketSpiller; -#define GRACEJOIN_DEBUG DEBUG -#define GRACEJOIN_TRACE TRACE +#define GRACEJOIN_DEBUG NUdf::ELogLevel::Debug +#define GRACEJOIN_TRACE NUdf::ELogLevel::Trace const ui64 BitsForNumberOfBuckets = 6; // 2^6 = 64 const ui64 BucketsMask = (0x00000001 << BitsForNumberOfBuckets) - 1; @@ -348,6 +348,9 @@ class TTable { ui64 TuplesFound_ = 0; // Total number of matching keys found during join + const NUdf::TLoggerPtr Logger_ = nullptr; // Logger instance + const NUdf::TLogComponentId LogComponent_ = 0; // Unique component id. GraceJoin here. + public: @@ -417,10 +420,12 @@ public: void Clear(); // Creates new table with key columns and data columns - TTable(ui64 numberOfKeyIntColumns = 0, ui64 numberOfKeyStringColumns = 0, - ui64 numberOfDataIntColumns = 0, ui64 numberOfDataStringColumns = 0, - ui64 numberOfKeyIColumns = 0, ui64 numberOfDataIColumns = 0, - ui64 nullsBitmapSize = 1, TColTypeInterface * colInterfaces = nullptr, bool isAny = false); + TTable(NUdf::TLoggerPtr logger = nullptr, NUdf::TLogComponentId logComponent = 0, + ui64 numberOfKeyIntColumns = 0, ui64 numberOfKeyStringColumns = 0, + ui64 numberOfDataIntColumns = 0, ui64 numberOfDataStringColumns = 0, + ui64 numberOfKeyIColumns = 0, ui64 numberOfDataIColumns = 0, + ui64 nullsBitmapSize = 1, TColTypeInterface * colInterfaces = nullptr, + bool isAny = false); enum class EAddTupleResult { Added, Unmatched, AnyMatch }; // Adds new tuple to the table. intColumns, stringColumns - data of columns, diff --git a/yql/essentials/minikql/comp_nodes/mkql_iterable.cpp b/yql/essentials/minikql/comp_nodes/mkql_iterable.cpp index f5602fb8e85..4036b225dc5 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_iterable.cpp +++ b/yql/essentials/minikql/comp_nodes/mkql_iterable.cpp @@ -123,7 +123,7 @@ public: private: void RegisterDependencies() const final { DependsOn(Stream); - Arg->AddDependence(Stream); + Own(Arg); } IComputationNode* const Stream; diff --git a/yql/essentials/minikql/comp_nodes/mkql_wide_combine.cpp b/yql/essentials/minikql/comp_nodes/mkql_wide_combine.cpp index 8a3052faa1a..68b22cd7364 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_wide_combine.cpp +++ b/yql/essentials/minikql/comp_nodes/mkql_wide_combine.cpp @@ -248,8 +248,19 @@ private: return KeyWidth + StateWidth; } public: - TState(TMemoryUsageInfo* memInfo, ui32 keyWidth, ui32 stateWidth, const THashFunc& hash, const TEqualsFunc& equal, bool allowOutOfMemory = true) - : TBase(memInfo), KeyWidth(keyWidth), StateWidth(stateWidth), AllowOutOfMemory(allowOutOfMemory), Hash(hash), Equal(equal) { + TState( + TMemoryUsageInfo* memInfo, ui32 keyWidth, ui32 stateWidth, const THashFunc& hash, const TEqualsFunc& equal, + NUdf::TLoggerPtr logger, NUdf::TLogComponentId logComponent, bool allowOutOfMemory = true + ) + : TBase(memInfo) + , KeyWidth(keyWidth) + , StateWidth(stateWidth) + , AllowOutOfMemory(allowOutOfMemory) + , Hash(hash) + , Equal(equal) + , Logger(logger) + , LogComponent(logComponent) + { CurrentPage = &Storage.emplace_back(RowSize() * CountRowsOnPage, NUdf::TUnboxedValuePod()); CurrentPosition = 0; Tongue = CurrentPage->data(); @@ -295,7 +306,7 @@ public: try { States->CheckGrow(); } catch (TMemoryLimitExceededException) { - YQL_LOG(INFO) << "State failed to grow"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, TStringBuilder() << "State failed to grow"); if (IsOutOfMemory || !AllowOutOfMemory) { throw; } else { @@ -373,6 +384,8 @@ private: std::unique_ptr<TStates> States; const THashFunc Hash; const TEqualsFunc Equal; + const NUdf::TLoggerPtr Logger; + const NUdf::TLogComponentId LogComponent; }; class TSpillingSupportState : public TComputationValue<TSpillingSupportState> { @@ -421,10 +434,11 @@ public: TSpillingSupportState( TMemoryUsageInfo* memInfo, const TMultiType* usedInputItemType, const TMultiType* keyAndStateType, ui32 keyWidth, size_t itemNodesSize, - const THashFunc& hash, const TEqualsFunc& equal, bool allowSpilling, TComputationContext& ctx + const THashFunc& hash, const TEqualsFunc& equal, bool allowSpilling, TComputationContext& ctx, + NUdf::TLoggerPtr logger, NUdf::TLogComponentId logComponent ) : TBase(memInfo) - , InMemoryProcessingState(memInfo, keyWidth, keyAndStateType->GetElementsCount() - keyWidth, hash, equal, allowSpilling && ctx.SpillerFactory) + , InMemoryProcessingState(memInfo, keyWidth, keyAndStateType->GetElementsCount() - keyWidth, hash, equal, logger, logComponent, allowSpilling && ctx.SpillerFactory) , UsedInputItemType(usedInputItemType) , KeyAndStateType(keyAndStateType) , KeyWidth(keyWidth) @@ -436,6 +450,8 @@ public: , Equal(equal) , AllowSpilling(allowSpilling) , Ctx(ctx) + , Logger(logger) + , LogComponent(logComponent) { BufferForUsedInputItems.reserve(usedInputItemType->GetElementsCount()); Tongue = InMemoryProcessingState.Tongue; @@ -726,6 +742,10 @@ private: } void LogMemoryUsage() const { + const auto memoryUsageLogLevel = NUdf::ELogLevel::Info; + if (!Logger->IsActive(LogComponent, memoryUsageLogLevel)) { + return; + } const auto used = TlsAllocState->GetUsed(); const auto limit = TlsAllocState->GetLimit(); TStringBuilder logmsg; @@ -735,7 +755,7 @@ private: } logmsg << (used/1_MB) << "MB/" << (limit/1_MB) << "MB"; - YQL_LOG(INFO) << logmsg; + UDF_LOG(Logger, LogComponent, memoryUsageLogLevel, logmsg); } void SpillMoreStateFromBucket(TSpilledBucket& bucket) { @@ -858,31 +878,32 @@ private: void SwitchMode(EOperatingMode mode) { switch(mode) { case EOperatingMode::InMemory: { - YQL_LOG(INFO) << "switching Memory mode to InMemory"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, "switching Memory mode to InMemory"); MKQL_ENSURE(false, "Internal logic error"); break; } case EOperatingMode::SplittingState: { - YQL_LOG(INFO) << "switching Memory mode to SplittingState"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, "switching Memory mode to SplittingState"); MKQL_ENSURE(EOperatingMode::InMemory == Mode, "Internal logic error"); SpilledBuckets.resize(SpilledBucketCount); auto spiller = Ctx.SpillerFactory->CreateSpiller(); for (auto &b: SpilledBuckets) { b.SpilledState = std::make_unique<TWideUnboxedValuesSpillerAdapter>(spiller, KeyAndStateType, 5_MB); b.SpilledData = std::make_unique<TWideUnboxedValuesSpillerAdapter>(spiller, UsedInputItemType, 5_MB); - b.InMemoryProcessingState = std::make_unique<TState>(MemInfo, KeyWidth, KeyAndStateType->GetElementsCount() - KeyWidth, Hasher, Equal, false); + b.InMemoryProcessingState = std::make_unique<TState>(MemInfo, KeyWidth, + KeyAndStateType->GetElementsCount() - KeyWidth, Hasher, Equal, Logger, LogComponent, false); } break; } case EOperatingMode::Spilling: { - YQL_LOG(INFO) << "switching Memory mode to Spilling"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, "switching Memory mode to Spilling"); MKQL_ENSURE(EOperatingMode::SplittingState == Mode || EOperatingMode::InMemory == Mode, "Internal logic error"); Tongue = ViewForKeyAndState.data(); break; } case EOperatingMode::ProcessSpilled: { - YQL_LOG(INFO) << "switching Memory mode to ProcessSpilled"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, "switching Memory mode to ProcessSpilled"); MKQL_ENSURE(EOperatingMode::Spilling == Mode, "Internal logic error"); MKQL_ENSURE(SpilledBuckets.size() == SpilledBucketCount, "Internal logic error"); MKQL_ENSURE(BufferForUsedInputItems.empty(), "Internal logic error"); @@ -940,6 +961,9 @@ private: TComputationContext& Ctx; NYql::NUdf::TCounter CounterOutputRows_; + + const NUdf::TLoggerPtr Logger; + const NUdf::TLogComponentId LogComponent; }; #ifndef MKQL_DISABLE_CODEGEN @@ -1402,12 +1426,18 @@ public: #endif private: void MakeState(TComputationContext& ctx, NUdf::TUnboxedValue& state) const { + NYql::NUdf::TLoggerPtr logger = ctx.MakeLogger(); + NYql::NUdf::TLogComponentId logComponent = logger->RegisterComponent("WideCombine"); + UDF_LOG(logger, logComponent, NUdf::ELogLevel::Debug, TStringBuilder() << "State initialized"); + #ifdef MKQL_DISABLE_CODEGEN - state = ctx.HolderFactory.Create<TState>(Nodes.KeyNodes.size(), Nodes.StateNodes.size(), TMyValueHasher(KeyTypes), TMyValueEqual(KeyTypes)); + state = ctx.HolderFactory.Create<TState>(Nodes.KeyNodes.size(), Nodes.StateNodes.size(), + TMyValueHasher(KeyTypes), TMyValueEqual(KeyTypes), logger, logComponent); #else state = ctx.HolderFactory.Create<TState>(Nodes.KeyNodes.size(), Nodes.StateNodes.size(), ctx.ExecuteLLVM && Hash ? THashFunc(std::ptr_fun(Hash)) : THashFunc(TMyValueHasher(KeyTypes)), - ctx.ExecuteLLVM && Equals ? TEqualsFunc(std::ptr_fun(Equals)) : TEqualsFunc(TMyValueEqual(KeyTypes)) + ctx.ExecuteLLVM && Equals ? TEqualsFunc(std::ptr_fun(Equals)) : TEqualsFunc(TMyValueEqual(KeyTypes)), + logger, logComponent ); #endif if (ctx.CountersProvider) { @@ -1832,6 +1862,10 @@ public: #endif private: void MakeState(TComputationContext& ctx, NUdf::TUnboxedValue& state) const { + NYql::NUdf::TLoggerPtr logger = ctx.MakeLogger(); + NYql::NUdf::TLogComponentId logComponent = logger->RegisterComponent("WideLastCombine"); + UDF_LOG(logger, logComponent, NUdf::ELogLevel::Debug, TStringBuilder() << "State initialized"); + state = ctx.HolderFactory.Create<TSpillingSupportState>(UsedInputItemType, KeyAndStateType, Nodes.KeyNodes.size(), Nodes.ItemNodes.size(), @@ -1839,11 +1873,13 @@ private: TMyValueHasher(KeyTypes), TMyValueEqual(KeyTypes), #else - ctx.ExecuteLLVM && Hash ? THashFunc(std::ptr_fun(Hash)) : THashFunc(TMyValueHasher(KeyTypes)), - ctx.ExecuteLLVM && Equals ? TEqualsFunc(std::ptr_fun(Equals)) : TEqualsFunc(TMyValueEqual(KeyTypes)), + ctx.ExecuteLLVM && Hash ? THashFunc(std::ptr_fun(Hash)) : THashFunc(TMyValueHasher(KeyTypes)), + ctx.ExecuteLLVM && Equals ? TEqualsFunc(std::ptr_fun(Equals)) : TEqualsFunc(TMyValueEqual(KeyTypes)), #endif AllowSpilling, - ctx + ctx, + logger, + logComponent ); } @@ -1996,7 +2032,6 @@ IComputationNode* WrapWideCombiner(TCallable& callable, const TComputationNodeFa } IComputationNode* WrapWideLastCombiner(TCallable& callable, const TComputationNodeFactoryContext& ctx) { - YQL_LOG(INFO) << "Found non-serializable type, spilling is disabled"; return WrapWideCombinerT<true>(callable, ctx, false); } diff --git a/yql/essentials/minikql/comp_nodes/mkql_wide_top_sort.cpp b/yql/essentials/minikql/comp_nodes/mkql_wide_top_sort.cpp index def9de2b960..c814cf09a0d 100644 --- a/yql/essentials/minikql/comp_nodes/mkql_wide_top_sort.cpp +++ b/yql/essentials/minikql/comp_nodes/mkql_wide_top_sort.cpp @@ -651,7 +651,7 @@ private: public: TSpillingSupportState(TMemoryUsageInfo* memInfo, const bool* directons, size_t keyWidth, const TCompareFunc& compare, - const std::vector<ui32>& indexes, TMultiType* tupleMultiType, const TComputationContext& ctx) + const std::vector<ui32>& indexes, TMultiType* tupleMultiType, const TComputationContext& ctx, NUdf::TLoggerPtr logger, NUdf::TLogComponentId logComponent) : TBase(memInfo) , Indexes(indexes) , Directions(directons, directons + keyWidth) @@ -659,6 +659,8 @@ public: , Fields(Indexes.size(), nullptr) , TupleMultiType(tupleMultiType) , Ctx(ctx) + , Logger(logger) + , LogComponent(logComponent) { if (Ctx.SpillerFactory) { Spiller = Ctx.SpillerFactory->CreateSpiller(); @@ -678,7 +680,8 @@ public: ResetFields(); auto nextMode = (IsReadFromChannelFinished() ? EOperatingMode::ProcessSpilled : EOperatingMode::InMemory); - YQL_LOG(INFO) << (nextMode == EOperatingMode::ProcessSpilled ? "Switching to ProcessSpilled" : "Switching to Memory mode"); + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, TStringBuilder() << + (nextMode == EOperatingMode::ProcessSpilled ? "Switching to ProcessSpilled" : "Switching to Memory mode")); SwitchMode(nextMode); return IsReadyToContinue(); @@ -712,8 +715,8 @@ public: const auto used = TlsAllocState->GetUsed(); const auto limit = TlsAllocState->GetLimit(); - YQL_LOG(INFO) << "Yellow zone reached " << (used*100/limit) << "%=" << used << "/" << limit; - YQL_LOG(INFO) << "Switching Memory mode to Spilling"; + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, TStringBuilder() << "Yellow zone reached " << (used*100/limit) << "%=" << used << "/" << limit); + UDF_LOG(Logger, LogComponent, NUdf::ELogLevel::Info, "Switching Memory mode to Spilling"); SwitchMode(EOperatingMode::Spilling); } @@ -860,6 +863,8 @@ private: std::vector<TSpilledUnboxedValuesIterator> SpilledUnboxedValuesIterators; ISpiller::TPtr Spiller = nullptr; bool IsHeapBuilt = false; + const NYql::NUdf::TLoggerPtr Logger; + const NYql::NUdf::TLogComponentId LogComponent; }; class TWideSortWrapper: public TStatefulWideFlowCodegeneratorNode<TWideSortWrapper> @@ -1101,10 +1106,13 @@ public: #endif private: void MakeState(TComputationContext& ctx, NUdf::TUnboxedValue& state, const bool* directions) const { + NYql::NUdf::TLoggerPtr logger = ctx.MakeLogger(); + NYql::NUdf::TLogComponentId logComponent = logger->RegisterComponent("WideSort"); + UDF_LOG(logger, logComponent, NUdf::ELogLevel::Debug, TStringBuilder() << "State initialized"); #ifdef MKQL_DISABLE_CODEGEN - state = ctx.HolderFactory.Create<TSpillingSupportState>(directions, Directions.size(), TMyValueCompare(Keys), Indexes, TupleMultiType, ctx); + state = ctx.HolderFactory.Create<TSpillingSupportState>(directions, Directions.size(), TMyValueCompare(Keys), Indexes, TupleMultiType, ctx, logger, logComponent); #else - state = ctx.HolderFactory.Create<TSpillingSupportState>(directions, Directions.size(), ctx.ExecuteLLVM && Compare ? TCompareFunc(Compare) : TCompareFunc(TMyValueCompare(Keys)), Indexes, TupleMultiType, ctx); + state = ctx.HolderFactory.Create<TSpillingSupportState>(directions, Directions.size(), ctx.ExecuteLLVM && Compare ? TCompareFunc(Compare) : TCompareFunc(TMyValueCompare(Keys)), Indexes, TupleMultiType, ctx, logger, logComponent); #endif } diff --git a/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut.cpp b/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut.cpp index add6f4731a0..27ca8502a85 100644 --- a/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut.cpp +++ b/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut.cpp @@ -25,6 +25,22 @@ TRuntimeNode ToWideStream(TProgramBuilder& pgmBuilder, TRuntimeNode list) { return pgmBuilder.FromFlow(wideFlow); } +// List<Tuple<T1, ..., Tn, Tlast>> -> List<Struct<"0": Block<T1>, ..., "n": Block<Tn>, "_yql_block_length": Scalar<Tlast>>> +TRuntimeNode ToBlockList(TProgramBuilder& pgmBuilder, TRuntimeNode list) { + return pgmBuilder.Map(list, + [&](TRuntimeNode tupleNode) -> TRuntimeNode { + TTupleType* tupleType = AS_TYPE(TTupleType, tupleNode.GetStaticType()); + std::vector<const std::pair<std::string_view, TRuntimeNode>> items; + items.emplace_back(NYql::BlockLengthColumnName, pgmBuilder.Nth(tupleNode, tupleType->GetElementsCount() - 1)); + for (size_t i = 0; i < tupleType->GetElementsCount() - 1; i++) { + const auto& memberName = pgmBuilder.GetTypeEnvironment().InternName(ToString(i)); + items.emplace_back(memberName.Str(), pgmBuilder.Nth(tupleNode, i)); + } + return pgmBuilder.NewStruct(items); + } + ); +} + // Stream<Multi<...>> -> List<Tuple<...>> TRuntimeNode FromWideStream(TProgramBuilder& pgmBuilder, TRuntimeNode stream) { return pgmBuilder.Collect(pgmBuilder.NarrowMap(pgmBuilder.ToFlow(stream), @@ -44,21 +60,21 @@ TRuntimeNode BuildBlockJoin(TProgramBuilder& pgmBuilder, EJoinKind joinKind, TRuntimeNode rightList, const TVector<ui32>& rightKeyColumns, const TVector<ui32>& rightKeyDrops, bool rightAny ) { const auto leftStream = ThrottleStream(pgmBuilder, ToWideStream(pgmBuilder, leftList)); - const auto rightStream = ThrottleStream(pgmBuilder, ToWideStream(pgmBuilder, rightList)); + const auto rightBlockList = ToBlockList(pgmBuilder, rightList); const auto joinReturnType = MakeJoinType(pgmBuilder, joinKind, leftStream.GetStaticType(), leftKeyDrops, - rightStream.GetStaticType(), + rightBlockList.GetStaticType(), rightKeyDrops ); - auto rightBlockStorageNode = pgmBuilder.BlockStorage(rightStream, pgmBuilder.NewResourceType(BlockStorageResourcePrefix)); + auto rightBlockStorageNode = pgmBuilder.BlockStorage(rightBlockList, pgmBuilder.NewResourceType(BlockStorageResourcePrefix)); if (joinKind != EJoinKind::Cross) { rightBlockStorageNode = pgmBuilder.BlockMapJoinIndex( rightBlockStorageNode, - AS_TYPE(TStreamType, rightStream.GetStaticType())->GetItemType(), + AS_TYPE(TListType, rightBlockList.GetStaticType())->GetItemType(), rightKeyColumns, rightAny, pgmBuilder.NewResourceType(BlockMapJoinIndexResourcePrefix) @@ -68,7 +84,7 @@ TRuntimeNode BuildBlockJoin(TProgramBuilder& pgmBuilder, EJoinKind joinKind, auto joinNode = pgmBuilder.BlockMapJoinCore( leftStream, rightBlockStorageNode, - AS_TYPE(TStreamType, rightStream.GetStaticType())->GetItemType(), + AS_TYPE(TListType, rightBlockList.GetStaticType())->GetItemType(), joinKind, leftKeyColumns, leftKeyDrops, @@ -92,20 +108,20 @@ TRuntimeNode BuildBlockJoinsWithNodeMultipleUsage(TProgramBuilder& pgmBuilder, E const auto leftStream2 = ThrottleStream(pgmBuilder, ToWideStream(pgmBuilder, leftList)); const auto leftStream3 = ThrottleStream(pgmBuilder, ToWideStream(pgmBuilder, leftList)); - const auto rightStream = ThrottleStream(pgmBuilder, ToWideStream(pgmBuilder, rightList)); + const auto rightBlockList = ToBlockList(pgmBuilder, rightList); const auto joinReturnType = MakeJoinType(pgmBuilder, joinKind, leftStream.GetStaticType(), leftKeyDrops, - rightStream.GetStaticType(), + rightBlockList.GetStaticType(), rightKeyDrops ); - auto rightBlockStorageNode = pgmBuilder.BlockStorage(rightStream, pgmBuilder.NewResourceType(BlockStorageResourcePrefix)); + auto rightBlockStorageNode = pgmBuilder.BlockStorage(rightBlockList, pgmBuilder.NewResourceType(BlockStorageResourcePrefix)); auto rightBlockIndexNode = pgmBuilder.BlockMapJoinIndex( rightBlockStorageNode, - AS_TYPE(TStreamType, rightStream.GetStaticType())->GetItemType(), + AS_TYPE(TListType, rightBlockList.GetStaticType())->GetItemType(), rightKeyColumns, rightAny, pgmBuilder.NewResourceType(BlockMapJoinIndexResourcePrefix) @@ -114,7 +130,7 @@ TRuntimeNode BuildBlockJoinsWithNodeMultipleUsage(TProgramBuilder& pgmBuilder, E auto joinNode = pgmBuilder.BlockMapJoinCore( leftStream, rightBlockIndexNode, - AS_TYPE(TStreamType, rightStream.GetStaticType())->GetItemType(), + AS_TYPE(TListType, rightBlockList.GetStaticType())->GetItemType(), EJoinKind::Inner, leftKeyColumns, leftKeyDrops, @@ -126,7 +142,7 @@ TRuntimeNode BuildBlockJoinsWithNodeMultipleUsage(TProgramBuilder& pgmBuilder, E auto joinNode2 = pgmBuilder.BlockMapJoinCore( leftStream2, rightBlockIndexNode, - AS_TYPE(TStreamType, rightStream.GetStaticType())->GetItemType(), + AS_TYPE(TListType, rightBlockList.GetStaticType())->GetItemType(), EJoinKind::Inner, leftKeyColumns, leftKeyDrops, @@ -138,7 +154,7 @@ TRuntimeNode BuildBlockJoinsWithNodeMultipleUsage(TProgramBuilder& pgmBuilder, E auto joinNode3 = pgmBuilder.BlockMapJoinCore( leftStream3, rightBlockStorageNode, - AS_TYPE(TStreamType, rightStream.GetStaticType())->GetItemType(), + AS_TYPE(TListType, rightBlockList.GetStaticType())->GetItemType(), EJoinKind::Cross, {}, {}, @@ -805,6 +821,62 @@ Y_UNIT_TEST_SUITE(TMiniKQLBlockMapJoinTestBasic) { ); } + Y_UNIT_TEST(TestKeyCollisionBug) { + TSetup<false> setup(GetNodeFactory()); + const size_t testSize = 8; + + // 1. Make input for the "left" stream. + // Presence of zero key is important in order to make collision + // with NULL sentinel value in previous implementation + TVector<ui64> leftKeyInit(testSize); + std::iota(leftKeyInit.begin(), leftKeyInit.end(), 0); + TVector<ui64> leftSubkeyInit; + std::transform(leftKeyInit.cbegin(), leftKeyInit.cend(), std::back_inserter(leftSubkeyInit), + [](const auto key) { return key * 1001; }); + TVector<TString> leftValueInit; + std::transform(leftKeyInit.cbegin(), leftKeyInit.cend(), std::back_inserter(leftValueInit), + [](const auto key) { return threeLetterValues[key]; }); + + // 2. Make input for the "right" stream. + TVector<ui64> rightKeyInit(testSize); + std::iota(rightKeyInit.begin(), rightKeyInit.end(), 0); + TVector<TString> rightValueInit; + std::transform(rightKeyInit.cbegin(), rightKeyInit.cend(), std::back_inserter(rightValueInit), + [](const auto key) { return std::to_string(key); }); + + // 3. Make "expected" data. + TMap<ui64, TString> rightMap; + for (size_t i = 0; i < rightKeyInit.size(); i++) { + rightMap[rightKeyInit[i]] = rightValueInit[i]; + } + TVector<ui64> expectedKey; + TVector<ui64> expectedSubkey; + TVector<TString> expectedValue; + TVector<TString> expectedRightValue; + for (size_t i = 0; i < leftKeyInit.size(); i++) { + const auto& found = rightMap.find(leftKeyInit[i]); + if (found != rightMap.cend()) { + expectedKey.push_back(leftKeyInit[i]); + expectedSubkey.push_back(leftSubkeyInit[i]); + expectedValue.push_back(leftValueInit[i]); + expectedRightValue.push_back(found->second); + } + } + + auto [leftType, leftList] = ConvertVectorsToTuples(setup, + leftKeyInit, leftSubkeyInit, leftValueInit); + auto [rightType, rightList] = ConvertVectorsToTuples(setup, + rightKeyInit, rightValueInit); + auto [expectedType, expected] = ConvertVectorsToTuples(setup, + expectedKey, expectedSubkey, expectedValue, expectedRightValue); + + RunTestBlockJoin(setup, EJoinKind::Inner, expectedType, expected, + leftType, std::move(leftList), {0}, + rightType, std::move(rightList), {0}, + {}, {0} + ); + } + } // Y_UNIT_TEST_SUITE Y_UNIT_TEST_SUITE(TMiniKQLBlockMapJoinTestOptional) { diff --git a/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.cpp b/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.cpp index 2dbeb2dbac6..e68356068ca 100644 --- a/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.cpp +++ b/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.cpp @@ -155,10 +155,11 @@ TType* MakeBlockTupleType(TProgramBuilder& pgmBuilder, TType* tupleType, bool sc TType* MakeJoinType(TProgramBuilder& pgmBuilder, EJoinKind joinKind, TType* leftStreamType, const TVector<ui32>& leftKeyDrops, - TType* rightStreamType, const TVector<ui32>& rightKeyDrops + TType* rightListType, const TVector<ui32>& rightKeyDrops ) { const auto leftStreamItems = ValidateBlockStreamType(leftStreamType); - const auto rightStreamItems = ValidateBlockStreamType(rightStreamType); + const auto rightListItemType = AS_TYPE(TListType, rightListType)->GetItemType(); + const auto rightPlainStructType = AS_TYPE(TStructType, pgmBuilder.ValidateBlockStructType(AS_TYPE(TStructType, rightListItemType))); TVector<TType*> joinReturnItems; @@ -172,15 +173,17 @@ TType* MakeJoinType(TProgramBuilder& pgmBuilder, EJoinKind joinKind, if (joinKind != EJoinKind::LeftSemi && joinKind != EJoinKind::LeftOnly) { const THashSet<ui32> rightKeyDropsSet(rightKeyDrops.cbegin(), rightKeyDrops.cend()); - for (size_t i = 0; i < rightStreamItems.size() - 1; i++) { // Excluding block size - if (rightKeyDropsSet.contains(i)) { + for (size_t i = 0; i < rightPlainStructType->GetMembersCount(); i++) { + const auto& memberName = rightPlainStructType->GetMemberName(i); + if (rightKeyDropsSet.contains(i) || memberName == NYql::BlockLengthColumnName) { continue; } + auto memberType = rightPlainStructType->GetMemberType(i); joinReturnItems.push_back(pgmBuilder.NewBlockType( - joinKind == EJoinKind::Inner ? rightStreamItems[i] - : IsOptionalOrNull(rightStreamItems[i]) ? rightStreamItems[i] - : pgmBuilder.NewOptionalType(rightStreamItems[i]), + joinKind == EJoinKind::Inner ? memberType + : IsOptionalOrNull(memberType) ? memberType + : pgmBuilder.NewOptionalType(memberType), TBlockType::EShape::Many )); } diff --git a/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.h b/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.h index 5d4642a87c3..ad54d72668c 100644 --- a/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.h +++ b/yql/essentials/minikql/comp_nodes/ut/mkql_block_map_join_ut_utils.h @@ -12,7 +12,7 @@ inline bool IsOptionalOrNull(const TType* type) { TType* MakeBlockTupleType(TProgramBuilder& pgmBuilder, TType* tupleType, bool scalar); TType* MakeJoinType(TProgramBuilder& pgmBuilder, EJoinKind joinKind, TType* leftStreamType, const TVector<ui32>& leftKeyDrops, - TType* rightStreamType, const TVector<ui32>& rightKeyDrops + TType* rightListType, const TVector<ui32>& rightKeyDrops ); NUdf::TUnboxedValuePod ToBlocks(TComputationContext& ctx, size_t blockSize, diff --git a/yql/essentials/minikql/comp_nodes/ut/mkql_grace_join_ut.cpp b/yql/essentials/minikql/comp_nodes/ut/mkql_grace_join_ut.cpp index 3bedebe1c87..293518a991c 100644 --- a/yql/essentials/minikql/comp_nodes/ut/mkql_grace_join_ut.cpp +++ b/yql/essentials/minikql/comp_nodes/ut/mkql_grace_join_ut.cpp @@ -205,9 +205,9 @@ Y_UNIT_TEST_SUITE(TMiniKQLGraceJoinImpTest) { ui32 bigStrSize[2] = {151, 151}; - GraceJoin::TTable bigTable(1,1,1,1); - GraceJoin::TTable smallTable(1,1,1,1); - GraceJoin::TTable joinTable(1,1,1,1); + GraceJoin::TTable bigTable(nullptr,0,1,1,1,1); + GraceJoin::TTable smallTable(nullptr,0,1,1,1,1); + GraceJoin::TTable joinTable(nullptr,0,1,1,1,1); const ui64 TupleSize = 1024; @@ -269,9 +269,9 @@ Y_UNIT_TEST_SUITE(TMiniKQLGraceJoinImpTest) { NMemInfo::TMemInfo mi = NMemInfo::GetMemInfo(); CTEST << "Mem usage before tables tuples added (MB): " << mi.RSS / (1024 * 1024) << Endl; - GraceJoin::TTable bigTable(1,1,1,1); - GraceJoin::TTable smallTable(1,1,1,1); - GraceJoin::TTable joinTable(1,1,1,1); + GraceJoin::TTable bigTable(nullptr,0,1,1,1,1); + GraceJoin::TTable smallTable(nullptr,0,1,1,1,1); + GraceJoin::TTable joinTable(nullptr,0,1,1,1,1); std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now(); @@ -442,9 +442,9 @@ Y_UNIT_TEST_SUITE(TMiniKQLGraceJoinImpTest) { NMemInfo::TMemInfo mi = NMemInfo::GetMemInfo(); CTEST << "Mem usage before tables tuples added (MB): " << mi.RSS / (1024 * 1024) << Endl; - GraceJoin::TTable bigTable(1,1,1,1); - GraceJoin::TTable smallTable(1,1,1,1); - GraceJoin::TTable joinTable(1,1,1,1); + GraceJoin::TTable bigTable(nullptr,0,1,1,1,1); + GraceJoin::TTable smallTable(nullptr,0,1,1,1,1); + GraceJoin::TTable joinTable(nullptr,0,1,1,1,1); std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now(); @@ -625,9 +625,9 @@ Y_UNIT_TEST_SUITE(TMiniKQLGraceJoinAnyTest) { - GraceJoin::TTable bigTable (1,1,1,1,0,0,1, nullptr, true); - GraceJoin::TTable smallTable(1,1,1,1,0,0,1, nullptr, true); - GraceJoin::TTable joinTable (1,1,1,1,0,0,1, nullptr, true); + GraceJoin::TTable bigTable (nullptr, 0, 1,1,1,1,0,0,1, nullptr, true); + GraceJoin::TTable smallTable(nullptr, 0, 1,1,1,1,0,0,1, nullptr, true); + GraceJoin::TTable joinTable (nullptr, 0, 1,1,1,1,0,0,1, nullptr, true); std::mt19937_64 rng; std::uniform_int_distribution<ui64> dist(0, 10000 - 1); @@ -763,9 +763,9 @@ Y_UNIT_TEST_SUITE(TMiniKQLGraceSelfJoinTest) { - GraceJoin::TTable bigTable (1,1,1,1,0,0,1, nullptr, false); - GraceJoin::TTable smallTable(1,1,1,1,0,0,1, nullptr, false); - GraceJoin::TTable joinTable (1,1,1,1,0,0,1, nullptr, false); + GraceJoin::TTable bigTable (nullptr, 0, 1,1,1,1,0,0,1, nullptr, false); + GraceJoin::TTable smallTable(nullptr, 0, 1,1,1,1,0,0,1, nullptr, false); + GraceJoin::TTable joinTable (nullptr, 0, 1,1,1,1,0,0,1, nullptr, false); std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now(); diff --git a/yql/essentials/minikql/comp_nodes/ut/mkql_iterable_ut.cpp b/yql/essentials/minikql/comp_nodes/ut/mkql_iterable_ut.cpp new file mode 100644 index 00000000000..4060beb5507 --- /dev/null +++ b/yql/essentials/minikql/comp_nodes/ut/mkql_iterable_ut.cpp @@ -0,0 +1,40 @@ +#include "mkql_computation_node_ut.h" + +namespace NKikimr::NMiniKQL { + +Y_UNIT_TEST_SUITE(TMiniKQLIterableTest) { + + // This particular test builds the graph similar to the one + // below, that is a part of the reproducer in YQL-19836. + // (return SqueezeToDict (Map (ToFlow (Iterable + // (lambda '() (EmptyIterator (StreamType (StructType '('"a" (DataType 'Uint64)))))) + // )) (lambda '($9) '((Member $9 '"a") $9))) + // (lambda '($10) (Nth $10 '0)) + // (lambda '($11) (Nth $11 '1)) + // '('Many 'Hashed 'Compact)) + Y_UNIT_TEST_LLVM(TestEmptyIterable) { + TSetup<LLVM> setup; + TProgramBuilder& pb = *setup.PgmBuilder; + + const TProgramBuilder::TZeroLambda lambda = [&pb]() { + return pb.EmptyIterator(pb.NewStreamType(pb.NewStructType({ + {"a", pb.NewDataType(NUdf::EDataSlot::Uint64)} + }))); + }; + const auto root = pb.SqueezeToHashedDict( + pb.ToFlow(pb.Iterable(lambda)), + /* isMany = */ true, + [&pb](TRuntimeNode node) { return pb.Member(node, "a"); }, + [](TRuntimeNode node) { return node; }, + /* isCompact = */ true + ); + auto graph = setup.BuildGraph(root); + NUdf::TUnboxedValue dict = graph->GetValue(); + + UNIT_ASSERT(!dict.IsSpecial()); + UNIT_ASSERT_EQUAL(dict.GetDictLength(), 0); + } + +} // Y_UNIT_TEST_SUITE(TMiniKQLIterableTest) + +} // namespace NKikimr::NMiniKQL diff --git a/yql/essentials/minikql/comp_nodes/ut/ya.make.inc b/yql/essentials/minikql/comp_nodes/ut/ya.make.inc index 73c063d865c..aa6ff27a465 100644 --- a/yql/essentials/minikql/comp_nodes/ut/ya.make.inc +++ b/yql/essentials/minikql/comp_nodes/ut/ya.make.inc @@ -51,6 +51,7 @@ SET(ORIG_SOURCES mkql_group_ut.cpp mkql_dict_ut.cpp mkql_isa_detection_ut.cpp + mkql_iterable_ut.cpp mkql_join_ut.cpp mkql_join_dict_ut.cpp mkql_grace_join_ut.cpp diff --git a/yql/essentials/minikql/mkql_program_builder.cpp b/yql/essentials/minikql/mkql_program_builder.cpp index 5e8e89da4ca..97d681db74e 100644 --- a/yql/essentials/minikql/mkql_program_builder.cpp +++ b/yql/essentials/minikql/mkql_program_builder.cpp @@ -5756,25 +5756,30 @@ TRuntimeNode TProgramBuilder::ScalarApply(const TArrayRef<const TRuntimeNode>& a return TRuntimeNode(builder.Build(), false); } -TRuntimeNode TProgramBuilder::BlockStorage(TRuntimeNode stream, TType* returnType) { - if constexpr (RuntimeVersion < 59U) { +TRuntimeNode TProgramBuilder::BlockStorage(TRuntimeNode list, TType* returnType) { + if constexpr (RuntimeVersion < 62U) { THROW yexception() << "Runtime version (" << RuntimeVersion << ") too old for " << __func__; } - ValidateBlockStreamType(stream.GetStaticType()); + MKQL_ENSURE(list.GetStaticType()->IsList(), "Expected List as input type"); + const auto listType = AS_TYPE(TListType, list.GetStaticType()); + + MKQL_ENSURE(listType->GetItemType()->IsStruct(), "Expected List of Struct as input type"); + const auto itemBlockStructType = AS_TYPE(TStructType, listType->GetItemType()); + ValidateBlockStructType(itemBlockStructType); MKQL_ENSURE(returnType->IsResource(), "Expected Resource as a result type"); auto returnResourceType = AS_TYPE(TResourceType, returnType); MKQL_ENSURE(returnResourceType->GetTag().StartsWith(BlockStorageResourcePrefix), "Expected block storage resource"); TCallableBuilder callableBuilder(Env, __func__, returnType); - callableBuilder.Add(stream); + callableBuilder.Add(list); return TRuntimeNode(callableBuilder.Build(), false); } -TRuntimeNode TProgramBuilder::BlockMapJoinIndex(TRuntimeNode blockStorage, TType* streamItemType, const TArrayRef<const ui32>& keyColumns, bool any, TType* returnType) { - if constexpr (RuntimeVersion < 59U) { +TRuntimeNode TProgramBuilder::BlockMapJoinIndex(TRuntimeNode blockStorage, TType* listItemType, const TArrayRef<const ui32>& keyColumns, bool any, TType* returnType) { + if constexpr (RuntimeVersion < 62U) { THROW yexception() << "Runtime version (" << RuntimeVersion << ") too old for " << __func__; } @@ -5782,7 +5787,9 @@ TRuntimeNode TProgramBuilder::BlockMapJoinIndex(TRuntimeNode blockStorage, TType auto blockStorageType = AS_TYPE(TResourceType, blockStorage.GetStaticType()); MKQL_ENSURE(blockStorageType->GetTag().StartsWith(BlockStorageResourcePrefix), "Expected block storage resource"); - ValidateBlockType(streamItemType); + MKQL_ENSURE(listItemType->IsStruct(), "Expected Struct as an item type"); + const auto itemBlockStructType = AS_TYPE(TStructType, listItemType); + ValidateBlockStructType(itemBlockStructType); MKQL_ENSURE(returnType->IsResource(), "Expected Resource as a result type"); auto returnResourceType = AS_TYPE(TResourceType, returnType); @@ -5797,18 +5804,18 @@ TRuntimeNode TProgramBuilder::BlockMapJoinIndex(TRuntimeNode blockStorage, TType TCallableBuilder callableBuilder(Env, __func__, returnType); callableBuilder.Add(blockStorage); - callableBuilder.Add(TRuntimeNode(streamItemType, true)); + callableBuilder.Add(TRuntimeNode(listItemType, true)); callableBuilder.Add(NewTuple(keyColumnsNodes)); callableBuilder.Add(NewDataLiteral((bool)any)); return TRuntimeNode(callableBuilder.Build(), false); } -TRuntimeNode TProgramBuilder::BlockMapJoinCore(TRuntimeNode leftStream, TRuntimeNode rightBlockStorage, TType* rightStreamItemType, EJoinKind joinKind, +TRuntimeNode TProgramBuilder::BlockMapJoinCore(TRuntimeNode leftStream, TRuntimeNode rightBlockStorage, TType* rightListItemType, EJoinKind joinKind, const TArrayRef<const ui32>& leftKeyColumns, const TArrayRef<const ui32>& leftKeyDrops, const TArrayRef<const ui32>& rightKeyColumns, const TArrayRef<const ui32>& rightKeyDrops, TType* returnType ) { - if constexpr (RuntimeVersion < 59U) { + if constexpr (RuntimeVersion < 62U) { THROW yexception() << "Runtime version (" << RuntimeVersion << ") too old for " << __func__; } @@ -5831,9 +5838,12 @@ TRuntimeNode TProgramBuilder::BlockMapJoinCore(TRuntimeNode leftStream, TRuntime } ValidateBlockStreamType(leftStream.GetStaticType()); - ValidateBlockType(rightStreamItemType); ValidateBlockStreamType(returnType); + MKQL_ENSURE(rightListItemType->IsStruct(), "Expected Struct as an right item type"); + const auto rightItemBlockStructType = AS_TYPE(TStructType, rightListItemType); + ValidateBlockStructType(rightItemBlockStructType); + TRuntimeNode::TList leftKeyColumnsNodes; leftKeyColumnsNodes.reserve(leftKeyColumns.size()); std::transform(leftKeyColumns.cbegin(), leftKeyColumns.cend(), @@ -5865,7 +5875,7 @@ TRuntimeNode TProgramBuilder::BlockMapJoinCore(TRuntimeNode leftStream, TRuntime TCallableBuilder callableBuilder(Env, __func__, returnType); callableBuilder.Add(leftStream); callableBuilder.Add(rightBlockStorage); - callableBuilder.Add(TRuntimeNode(rightStreamItemType, true)); + callableBuilder.Add(TRuntimeNode(rightListItemType, true)); callableBuilder.Add(NewDataLiteral((ui32)joinKind)); callableBuilder.Add(NewTuple(leftKeyColumnsNodes)); callableBuilder.Add(NewTuple(leftKeyDropsNodes)); diff --git a/yql/essentials/minikql/mkql_program_builder.h b/yql/essentials/minikql/mkql_program_builder.h index f71d47a3872..e801d97da44 100644 --- a/yql/essentials/minikql/mkql_program_builder.h +++ b/yql/essentials/minikql/mkql_program_builder.h @@ -264,9 +264,9 @@ public: TRuntimeNode BlockFromPg(TRuntimeNode input, TType* returnType); TRuntimeNode BlockPgResolvedCall(const std::string_view& name, ui32 id, const TArrayRef<const TRuntimeNode>& args, TType* returnType); - TRuntimeNode BlockStorage(TRuntimeNode stream, TType* returnType); - TRuntimeNode BlockMapJoinIndex(TRuntimeNode blockStorage, TType* streamItemType, const TArrayRef<const ui32>& keyColumns, bool any, TType* returnType); - TRuntimeNode BlockMapJoinCore(TRuntimeNode leftStream, TRuntimeNode rightBlockStorage, TType* rightStreamItemType, EJoinKind joinKind, + TRuntimeNode BlockStorage(TRuntimeNode list, TType* returnType); + TRuntimeNode BlockMapJoinIndex(TRuntimeNode blockStorage, TType* listItemType, const TArrayRef<const ui32>& keyColumns, bool any, TType* returnType); + TRuntimeNode BlockMapJoinCore(TRuntimeNode leftStream, TRuntimeNode rightBlockStorage, TType* rightListItemType, EJoinKind joinKind, const TArrayRef<const ui32>& leftKeyColumns, const TArrayRef<const ui32>& leftKeyDrops, const TArrayRef<const ui32>& rightKeyColumns, const TArrayRef<const ui32>& rightKeyDrops, TType* returnType ); diff --git a/yql/essentials/minikql/mkql_runtime_version.h b/yql/essentials/minikql/mkql_runtime_version.h index ed228c7b03d..be71a1646f3 100644 --- a/yql/essentials/minikql/mkql_runtime_version.h +++ b/yql/essentials/minikql/mkql_runtime_version.h @@ -24,7 +24,7 @@ namespace NMiniKQL { // 1. Bump this version every time incompatible runtime nodes are introduced. // 2. Make sure you provide runtime node generation for previous runtime versions. #ifndef MKQL_RUNTIME_VERSION -#define MKQL_RUNTIME_VERSION 61U +#define MKQL_RUNTIME_VERSION 62U #endif // History: diff --git a/yql/essentials/minikql/protobuf_udf/type_builder.cpp b/yql/essentials/minikql/protobuf_udf/type_builder.cpp index f44c58e580d..fc28bb1548c 100644 --- a/yql/essentials/minikql/protobuf_udf/type_builder.cpp +++ b/yql/essentials/minikql/protobuf_udf/type_builder.cpp @@ -37,9 +37,17 @@ private: TType* GetBytesType(); TType* GetInt64Type(); TType* GetYsonType(); - TType* GetType(const FieldDescriptor* fd, bool defaultYtSerialize); + // Get type without optional/repeated/required modifier. + TType* GetUnderlyingType(const FieldDescriptor* fd, bool defaultYtSerialize); + // Wrap |type| based on modifiers. + TType* WrapTypeFromModifiers(TType* type, + const FieldDescriptor* fd, + EFieldContext fieldContext, + const std::optional<NYT::NDetail::TProtobufFieldOptions>& ytOpts, + TFlags<EFieldFlag>& flags, + bool recursive); TType* GetOptionalType(TType* type); - TType* GetListType(TType* type); + TType* GetListType(TType* type, const std::optional<NYT::NDetail::TProtobufFieldOptions>& ytOpts, TFlags<EFieldFlag>& flags); private: using TTypeMap = THashMap<TType*, TType*>; @@ -111,6 +119,7 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default ythrow yexception() << "can't handle recursive types: " << fullName; case ERecursionTraits::Bytes: + case ERecursionTraits::BytesV2: case ERecursionTraits::Ignore: return nullptr; } @@ -122,9 +131,7 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default std::shared_ptr<TMessageInfo> message = std::make_shared<TMessageInfo>(); - auto makeField = [&](ui32& pos, TFlags<EFieldFlag>& flags, const IStructTypeBuilder::TPtr& structType, const FieldDescriptor* fd, std::optional<bool> fromVariant) { - bool isMessageField = fd->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE; - + auto makeField = [&](ui32& pos, TFlags<EFieldFlag>& flags, const IStructTypeBuilder::TPtr& structType, const FieldDescriptor* fd, EFieldContext fieldContext) { auto name = fd->name(); if (UseJsonName_) { Y_ASSERT(!fd->json_name().empty()); @@ -136,8 +143,13 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default // Создаём тип поля TType* type = nullptr; std::optional<NYT::NDetail::TProtobufFieldOptions> ytOpts; - - auto wrapRecursiveType = [&](TType* type, TFlags<EFieldFlag>& flags) { + if (YtMode_) { + ytOpts = NYT::NDetail::GetFieldOptions(fd, + defaultYtSerialize + ? MakeMaybe<NYT::NDetail::TProtobufFieldOptions>(NYT::NDetail::TProtobufFieldOptions{.SerializationMode = NYT::NDetail::EProtobufSerializationMode::Yt}) + : Nothing()); + } + auto wrapRecursiveType = [&](TType* type, TFlags<EFieldFlag>& flags, bool wrapWithModifiers) { if (type) { return type; } @@ -145,20 +157,16 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default flags |= EFieldFlag::Void; return Builder_.Void(); } - Y_ENSURE(Recursion_ == ERecursionTraits::Bytes); + Y_ENSURE(Recursion_ == ERecursionTraits::Bytes || Recursion_ == ERecursionTraits::BytesV2); flags |= EFieldFlag::Binary; type = GetBytesType(); - if (fromVariant && !*fromVariant) { - type = GetOptionalType(type); + if (!wrapWithModifiers) { + return type; } - return type; + return WrapTypeFromModifiers(type, fd, fieldContext, ytOpts, flags, /*recursive=*/true); }; if (YtMode_) { - ytOpts = NYT::NDetail::GetFieldOptions(fd, - defaultYtSerialize - ? MakeMaybe<NYT::NDetail::TProtobufFieldOptions>(NYT::NDetail::TProtobufFieldOptions{.SerializationMode = NYT::NDetail::EProtobufSerializationMode::Yt}) - : Nothing()); if (fd->is_map()) { auto mapMessage = fd->message_type(); switch (ytOpts->MapMode) { @@ -171,8 +179,8 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default Y_ENSURE(mapMessage->field_count() == 2); flags |= EFieldFlag::Dict; type = Builder_.Dict() - ->Key(GetType(mapMessage->map_key(), false)) - .Value(wrapRecursiveType(GetType(mapMessage->map_value(), true), flags)) + ->Key(GetUnderlyingType(mapMessage->map_key(), false)) + .Value(wrapRecursiveType(GetUnderlyingType(mapMessage->map_value(), true), flags, /*wrapWithModifiers=*/false)) .Build(); message->DictTypes[fd->number()] = type; if (NYT::NDetail::EProtobufMapMode::OptionalDict == ytOpts->MapMode) { @@ -181,7 +189,7 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default } break; } - } else if (isMessageField && ytOpts->SerializationMode == NYT::NDetail::EProtobufSerializationMode::Protobuf) { + } else if (fd->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE && ytOpts->SerializationMode == NYT::NDetail::EProtobufSerializationMode::Protobuf) { type = GetBytesType(); flags |= EFieldFlag::Binary; } else if (ytOpts->Type) { @@ -211,35 +219,17 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default << ", field: " << fd->name(); } } else { - type = GetType(fd, false); + type = GetUnderlyingType(fd, false); } } else { - type = GetType(fd, false); + type = GetUnderlyingType(fd, false); } if (!flags.HasFlags(EFieldFlag::Dict)) { if (type) { - if (fd->is_repeated()) { - // Преобразуем базовый тип к списку - type = GetListType(type); - // и к nullable, если это необходимо. - if (OptionalLists_ || (ytOpts && NYT::NDetail::EProtobufListMode::Optional == ytOpts->ListMode)) { - flags |= EFieldFlag::OptionalContainer; - type = GetOptionalType(type); - } - } else { - if (fromVariant) { - if (!*fromVariant) { - // For 'variant as separate fields' always make optional type - // Otherwise always ignore optionality - type = GetOptionalType(type); - } - } else if (fd->is_optional() && (isMessageField || !AvoidOptionalScalars(SyntaxAware_, fd))) { - type = GetOptionalType(type); - } - } + type = WrapTypeFromModifiers(type, fd, fieldContext, ytOpts, flags, /*recursive=*/false); } else { - type = wrapRecursiveType(type, flags); + type = wrapRecursiveType(type, flags, /*wrapWithModifiers=*/true); } } @@ -253,6 +243,7 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default THashMap<const OneofDescriptor*, ui32> visitedOneofs; for (int i = 0, end = descriptor->field_count(); i < end; ++i) { const FieldDescriptor* fd = descriptor->field(i); + EFieldContext fieldContext = GetFieldContext(fd, YtMode_); if (auto oneofDescriptor = fd->containing_oneof(); YtMode_ && oneofDescriptor) { if (!visitedOneofs.contains(oneofDescriptor)) { auto oneofOptions = NYT::NDetail::GetOneofOptions(oneofDescriptor); @@ -260,7 +251,8 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default case NYT::NDetail::EProtobufOneofMode::SeparateFields: for (int i = 0; i < oneofDescriptor->field_count(); ++i) { auto& field = message->Fields[oneofDescriptor->field(i)->number()]; - makeField(field.Pos, field.Flags, structType, oneofDescriptor->field(i), false); + Y_ENSURE(fieldContext == EFieldContext::InsideOneofYtSeparateFields); + makeField(field.Pos, field.Flags, structType, oneofDescriptor->field(i), fieldContext); } visitedOneofs.emplace(oneofDescriptor, Max<ui32>()); break; @@ -269,8 +261,9 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default for (int i = 0; i < oneofDescriptor->field_count(); ++i) { auto fdOneof = oneofDescriptor->field(i); auto& field = message->Fields[fdOneof->number()]; + Y_ENSURE(fieldContext == EFieldContext::InsideOneofYtVariant); field.Flags |= EFieldFlag::Variant; - makeField(message->VariantIndicies[fdOneof->number()], field.Flags, varStructType, fdOneof, true); + makeField(message->VariantIndicies[fdOneof->number()], field.Flags, varStructType, fdOneof, fieldContext); } structType->AddField(oneofOptions.VariantFieldName, Builder_.Optional()->Item(Builder_.Variant()->Over(varStructType->Build()).Build()).Build(), &visitedOneofs[oneofDescriptor]); break; @@ -280,7 +273,7 @@ TType* TTypeBuilder::GenerateTypeInfo(const Descriptor* descriptor, bool default } else { // Запоминаем поле по соответствующему тегу из proto auto& field = message->Fields[fd->number()]; - makeField(field.Pos, field.Flags, structType, fd, std::nullopt); + makeField(field.Pos, field.Flags, structType, fd, fieldContext); } } @@ -332,7 +325,7 @@ TType* TTypeBuilder::GetYsonType() { return YsonType; } -TType* TTypeBuilder::GetType(const FieldDescriptor* fd, bool defaultYtSerialize) { +TType* TTypeBuilder::GetUnderlyingType(const FieldDescriptor* fd, bool defaultYtSerialize) { FieldDescriptor::Type type = fd->type(); // Unify types @@ -416,6 +409,36 @@ TType* TTypeBuilder::GetType(const FieldDescriptor* fd, bool defaultYtSerialize) return BasicTypes_[type]; } +TType* TTypeBuilder::WrapTypeFromModifiers(TType* type, + const FieldDescriptor* fd, + EFieldContext fieldContext, + const std::optional<NYT::NDetail::TProtobufFieldOptions>& ytOpts, + TFlags<EFieldFlag>& flags, + bool recursiveType) { + + if (fd->is_repeated()) { + // Преобразуем базовый тип к списку + return GetListType(type, ytOpts, flags); + } else if (fieldContext == EFieldContext::InsideOneofYtSeparateFields) { + // For 'one of as separate fields' always make optional type + // Otherwise always ignore optionality. + return GetOptionalType(type); + } else if (fieldContext == EFieldContext::InsideOneofYtVariant) { + // Do not wrap type for 'one of as variant'. + } else if (fd->is_optional() && (fd->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE || !AvoidOptionalScalars(SyntaxAware_, fd))) { + if (!recursiveType || Recursion_ == ERecursionTraits::BytesV2) { + return GetOptionalType(type); + } + // Needs for backward compatability. + // We cannot just wrap optional to not break old queries. + flags |= EFieldFlag::RecursiveOptionalUnwrapped; + return type; + } else if (fd->is_required()) { + // Do not wrap required type. + } + return type; +} + TType* TTypeBuilder::GetOptionalType(TType* type) { auto ti = Optionals_.find(type); if (ti != Optionals_.end()) { @@ -427,19 +450,60 @@ TType* TTypeBuilder::GetOptionalType(TType* type) { } } -TType* TTypeBuilder::GetListType(TType* type) { +TType* TTypeBuilder::GetListType(TType* type, const std::optional<NYT::NDetail::TProtobufFieldOptions>& ytOpts, TFlags<EFieldFlag>& flags) { auto ti = Lists_.find(type); if (ti != Lists_.end()) { - return ti->second; + type = ti->second; } else { auto listType = Builder_.List()->Item(type).Build(); Lists_.insert(std::make_pair(type, listType)); - return listType; + type = listType; + } + + if (OptionalLists_ || (ytOpts && NYT::NDetail::EProtobufListMode::Optional == ytOpts->ListMode)) { + flags |= EFieldFlag::OptionalContainer; + type = GetOptionalType(type); } + return type; } } // namespace +EFieldContext GetFieldContext(const NProtoBuf::FieldDescriptor* fieldDescriptor, bool ytMode) { + Y_ABORT_UNLESS(fieldDescriptor); + + // Check if the field is part of a map (key or value) + if (fieldDescriptor->containing_type()->map_key() == fieldDescriptor) { + return EFieldContext::MapKey; + } else if (fieldDescriptor->containing_type()->map_value() == fieldDescriptor) { + return EFieldContext::MapValue; + } + + // Check if the field is part of a oneof + if (fieldDescriptor->containing_oneof() != nullptr) { + if (!ytMode) { + return EFieldContext::InsideOneofProtobufSeparateFields; + } + switch (NYT::NDetail::GetOneofOptions(fieldDescriptor->containing_oneof()).Mode) { + case NYT::NDetail::EProtobufOneofMode::SeparateFields: + return EFieldContext::InsideOneofYtSeparateFields; + case NYT::NDetail::EProtobufOneofMode::Variant: + return EFieldContext::InsideOneofYtVariant; + } + } + + // Determine if the field is optional, required, or repeated + if (fieldDescriptor->is_optional()) { + return EFieldContext::SeparateOptional; + } else if (fieldDescriptor->is_required()) { + return EFieldContext::SeparateRequired; + } else if (fieldDescriptor->is_repeated()) { + return EFieldContext::SeparateRepeated; + } + + Y_ABORT("Unhandled field type case"); +} + void ProtoTypeBuild(const NProtoBuf::Descriptor* descriptor, const EEnumFormat enumFormat, const ERecursionTraits recursion, diff --git a/yql/essentials/minikql/protobuf_udf/type_builder.h b/yql/essentials/minikql/protobuf_udf/type_builder.h index 8262c0c0733..9d9652a6f5a 100644 --- a/yql/essentials/minikql/protobuf_udf/type_builder.h +++ b/yql/essentials/minikql/protobuf_udf/type_builder.h @@ -22,8 +22,22 @@ enum class EFieldFlag: ui16 { Dict = 1 << 4, EnumInt = 1 << 5, EnumString = 1 << 6, + RecursiveOptionalUnwrapped = 1 << 7, }; +enum class EFieldContext { + SeparateOptional, + SeparateRequired, + SeparateRepeated, + MapKey, + MapValue, + InsideOneofYtVariant, + InsideOneofYtSeparateFields, + InsideOneofProtobufSeparateFields, +}; + +EFieldContext GetFieldContext(const NProtoBuf::FieldDescriptor* fieldDescriptor, bool ytMode); + struct TMessageInfo { struct TFieldInfo { ui32 Pos; diff --git a/yql/essentials/minikql/protobuf_udf/ut/type_builder_ut.cpp b/yql/essentials/minikql/protobuf_udf/ut/type_builder_ut.cpp index 8e1d20662d1..4e903f43a05 100644 --- a/yql/essentials/minikql/protobuf_udf/ut/type_builder_ut.cpp +++ b/yql/essentials/minikql/protobuf_udf/ut/type_builder_ut.cpp @@ -1,6 +1,5 @@ #include "type_builder.h" -//#include <alice/wonderlogs/protos/wonderlogs.pb.h> #include <yql/essentials/minikql/protobuf_udf/ut/protobuf_ut.pb.h> #include <yt/yql/providers/yt/lib/schema/schema.h> #include <yt/yql/providers/yt/common/yql_names.h> @@ -118,9 +117,65 @@ Y_UNIT_TEST_SUITE(TProtobufTypeBuilderTests) { CheckYtSchemaCompatibility<NYql::NProtoTest::TAggregated>(); } -/* - Y_UNIT_TEST(YtMode_Wonderlog) { - CheckYtSchemaCompatibility<NAlice::NWonderlogs::TWonderlog, EEnumFormat::Name, ERecursionTraits::Bytes>(); + Y_UNIT_TEST(FieldTypeParsing) { + // Test SeparateOptional. + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(NYql::NProtoTest::TIntegral::descriptor()->FindFieldByName("DoubleField"), /*ytMode=*/true), NUdf::EFieldContext::SeparateOptional); + + // Test SeparateRequired. + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(NYql::NProtoTest::TWithTypeOptions::descriptor()->FindFieldByName("RequiredAnyField"), /*ytMode=*/true), NUdf::EFieldContext::SeparateRequired); + + // Test SeparateRepeated. + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(NYql::NProtoTest::TRepeated::descriptor()->FindFieldByName("Int32Field"), /*ytMode=*/true), NUdf::EFieldContext::SeparateRepeated); + + // Test MapKey and MapValue. + auto mapDescriptor = NYql::NProtoTest::TWithMap::descriptor()->FindFieldByName("MapDefault")->message_type(); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(mapDescriptor->map_key(), /*ytMode=*/true), NUdf::EFieldContext::MapKey); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(mapDescriptor->map_value(), /*ytMode=*/true), NUdf::EFieldContext::MapValue); + + // Test InsideOneofVariant fields in TDefaultSeparateFields. + auto defaultSeparateFields = NYql::NProtoTest::TWithOneof::TDefaultSeparateFields::descriptor(); + auto oneof2 = defaultSeparateFields->FindOneofByName("Oneof2"); + UNIT_ASSERT(oneof2); + + // Test all fields in the Oneof2 oneof. + for (int i = 0; i < oneof2->field_count(); ++i) { + auto field = oneof2->field(i); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(field, /*ytMode=*/true), NUdf::EFieldContext::InsideOneofYtVariant); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(field, /*ytMode=*/false), NUdf::EFieldContext::InsideOneofProtobufSeparateFields); + } + + // Test InsideOneofYtSeparateFields fields in TNoDefault. + auto noDefault = NYql::NProtoTest::TWithOneof::TNoDefault::descriptor(); + auto oneof1 = noDefault->FindOneofByName("Oneof1"); + UNIT_ASSERT(oneof1); + + // Test all fields in the Oneof1 oneof. + for (int i = 0; i < oneof1->field_count(); ++i) { + auto field = oneof1->field(i); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(field, /*ytMode=*/true), NUdf::EFieldContext::InsideOneofYtSeparateFields); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(field, /*ytMode=*/false), NUdf::EFieldContext::InsideOneofProtobufSeparateFields); + } + + // Test InsideOneofYtSeparateFields fields in TSerializationProtobuf. + auto serializationProtobuf = NYql::NProtoTest::TWithOneof::TSerializationProtobuf::descriptor(); + auto oneof = serializationProtobuf->FindOneofByName("Oneof"); + UNIT_ASSERT(oneof); + + // Test all fields in the Oneof oneof. + for (int i = 0; i < oneof->field_count(); ++i) { + auto field = oneof->field(i); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(field, /*ytMode=*/true), NUdf::EFieldContext::InsideOneofYtSeparateFields); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(field, /*ytMode=*/false), NUdf::EFieldContext::InsideOneofProtobufSeparateFields); + } + + // Test TopLevelOneof in TWithOneof. + auto withOneof = NYql::NProtoTest::TWithOneof::descriptor(); + auto topLevelOneof = withOneof->FindOneofByName("TopLevelOneof"); + UNIT_ASSERT(topLevelOneof); + + // Test the field in TopLevelOneof. + auto memberField = topLevelOneof->field(0); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(memberField, /*ytMode=*/true), NUdf::EFieldContext::InsideOneofYtVariant); + UNIT_ASSERT_EQUAL(NUdf::GetFieldContext(memberField, /*ytMode=*/false), NUdf::EFieldContext::InsideOneofProtobufSeparateFields); } -*/ }; diff --git a/yql/essentials/minikql/protobuf_udf/value_builder.cpp b/yql/essentials/minikql/protobuf_udf/value_builder.cpp index 3696308f232..c0da534eb6f 100644 --- a/yql/essentials/minikql/protobuf_udf/value_builder.cpp +++ b/yql/essentials/minikql/protobuf_udf/value_builder.cpp @@ -289,6 +289,10 @@ TUnboxedValue FillValueFromProto( } else if (fd->is_optional()) { if (r->HasField(proto, fd)) { return CreateSingleField(valueBuilder, proto, fd, info, fInfo.Flags); + } else if (fInfo.Flags.HasFlag(EFieldFlag::RecursiveOptionalUnwrapped)) { + throw yexception() << "The recursive field" + << " '" << fd->full_name() << "' " + << "was attempted to be parsed as a string, but actually it has no value. Consider using the BytesV2 parsing mode to allow for optional recursive messages."; } else if (fd->has_default_value() || AvoidOptionalScalars(info.SyntaxAware, fd)) { return CreateDefaultValue(valueBuilder, fd, info, fInfo.Flags); } else { diff --git a/yql/essentials/minikql/protobuf_udf/ya.make b/yql/essentials/minikql/protobuf_udf/ya.make index 352606cab69..0a986282481 100644 --- a/yql/essentials/minikql/protobuf_udf/ya.make +++ b/yql/essentials/minikql/protobuf_udf/ya.make @@ -16,7 +16,6 @@ PEERDIR( yql/essentials/minikql yt/cpp/mapreduce/interface yt/yt_proto/yt/formats - yt/yt_proto/yt/formats ) END() diff --git a/yql/essentials/providers/common/mkql/yql_provider_mkql.cpp b/yql/essentials/providers/common/mkql/yql_provider_mkql.cpp index abe2f9c1e9a..848284e2b41 100644 --- a/yql/essentials/providers/common/mkql/yql_provider_mkql.cpp +++ b/yql/essentials/providers/common/mkql/yql_provider_mkql.cpp @@ -1675,17 +1675,17 @@ TMkqlCommonCallableCompiler::TShared::TShared() { }); AddCallable("BlockStorage", [](const TExprNode& node, TMkqlBuildContext& ctx) { - const auto stream = MkqlBuildExpr(node.Head(), ctx); + const auto list = MkqlBuildExpr(node.Head(), ctx); const auto returnType = BuildType(node, *node.GetTypeAnn(), ctx.ProgramBuilder); - return ctx.ProgramBuilder.BlockStorage(stream, returnType); + return ctx.ProgramBuilder.BlockStorage(list, returnType); }); AddCallable("BlockMapJoinIndex", [](const TExprNode& node, TMkqlBuildContext& ctx) { const auto blockStorage = MkqlBuildExpr(node.Head(), ctx); - const auto itemType = node.Child(1)->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TMultiExprType>(); + const auto itemType = node.Child(1)->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TStructExprType>(); std::vector<ui32> keyColumns; - node.Child(2)->ForEachChild([&](const TExprNode& child){ keyColumns.emplace_back(*GetWideBlockFieldPosition(*itemType, child.Content())); }); + node.Child(2)->ForEachChild([&](const TExprNode& child){ keyColumns.emplace_back(*GetFieldPosition(*itemType, child.Content())); }); const bool any = HasSetting(node.Tail(), "any"); @@ -1699,15 +1699,15 @@ TMkqlCommonCallableCompiler::TShared::TShared() { const auto rightBlockStorage = MkqlBuildExpr(*node.Child(1), ctx); const auto leftItemType = node.Head().GetTypeAnn()->Cast<TStreamExprType>()->GetItemType()->Cast<TMultiExprType>(); - const auto rightItemType = node.Child(2)->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TMultiExprType>(); + const auto rightItemType = node.Child(2)->GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TStructExprType>(); const auto joinKind = GetJoinKind(node, node.Child(3)->Content()); std::vector<ui32> leftKeyColumns, leftKeyDrops, rightKeyColumns, rightKeyDrops; node.Child(4)->ForEachChild([&](const TExprNode& child){ leftKeyColumns.emplace_back(*GetWideBlockFieldPosition(*leftItemType, child.Content())); }); node.Child(5)->ForEachChild([&](const TExprNode& child){ leftKeyDrops.emplace_back(*GetWideBlockFieldPosition(*leftItemType, child.Content())); }); - node.Child(6)->ForEachChild([&](const TExprNode& child){ rightKeyColumns.emplace_back(*GetWideBlockFieldPosition(*rightItemType, child.Content())); }); - node.Child(7)->ForEachChild([&](const TExprNode& child){ rightKeyDrops.emplace_back(*GetWideBlockFieldPosition(*rightItemType, child.Content())); }); + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightKeyColumns.emplace_back(*GetFieldPosition(*rightItemType, child.Content())); }); + node.Child(7)->ForEachChild([&](const TExprNode& child){ rightKeyDrops.emplace_back(*GetFieldPosition(*rightItemType, child.Content())); }); const auto rightItemMkqlType = BuildType(*node.Child(2), *rightItemType, ctx.ProgramBuilder); const auto returnType = BuildType(node, *node.GetTypeAnn(), ctx.ProgramBuilder); diff --git a/yql/essentials/public/fastcheck/format.cpp b/yql/essentials/public/fastcheck/format.cpp index d4717b4bf79..b487c56fc19 100644 --- a/yql/essentials/public/fastcheck/format.cpp +++ b/yql/essentials/public/fastcheck/format.cpp @@ -25,6 +25,21 @@ TString NormalizeEOL(TStringBuf input) { return res; } +TString ReplaceHidden(TStringBuf input) { + TStringBuilder res; + for (const auto c : input) { + if (c == ' ') { + res << "\xe2\x80\xa2"; + } else if (c == '\t') { + res << "\xe2\x86\x92"; + } else { + res << c; + } + } + + return res; +} + class TFormatRunner : public ICheckRunner { public: TString GetCheckName() const final { @@ -107,7 +122,7 @@ private: } auto issue = TIssue(origPos, TStringBuilder() << - "Format mismatch, expected:\n" << formattedSample << "\nbut got:\n" << origSample); + "Format mismatch, expected:\n" << ReplaceHidden(formattedSample) << "\nbut got:\n" << ReplaceHidden(origSample) << "\n"); issue.SetCode(EYqlIssueCode::TIssuesIds_EIssueCode_WARNING, ESeverity::TSeverityIds_ESeverityId_S_WARNING); res.Issues.AddIssue(issue); } diff --git a/yql/essentials/public/fastcheck/linter_ut.cpp b/yql/essentials/public/fastcheck/linter_ut.cpp index c0315d20cf3..c7f7cb45d20 100644 --- a/yql/essentials/public/fastcheck/linter_ut.cpp +++ b/yql/essentials/public/fastcheck/linter_ut.cpp @@ -173,6 +173,26 @@ Y_UNIT_TEST_SUITE(TLinterTests) { UNIT_ASSERT_VALUES_EQUAL(pos.Column, 13); } + Y_UNIT_TEST(BadFormatYqlHidden) { + TChecksRequest request; + request.Program = "select\t1 "; + request.Syntax = ESyntax::YQL; + request.Filters.ConstructInPlace(); + request.Filters->push_back(TCheckFilter{.CheckNameGlob = "format"}); + auto res = RunChecks(request); + UNIT_ASSERT_VALUES_EQUAL(res.Checks.size(), 1); + UNIT_ASSERT_VALUES_EQUAL(res.Checks[0].CheckName, "format"); + UNIT_ASSERT(!res.Checks[0].Success); + UNIT_ASSERT_NO_DIFF(res.Checks[0].Issues.ToString(), + "<main>:1:0: Warning: Format mismatch, expected:\n" + "SELECT\n" + "••••1\n" + ";\n\n" + "but got:\n" + "select→1•\n" + ", code: 3\n"); + } + Y_UNIT_TEST(GoodParserSExpr) { TChecksRequest request; request.Program = "((return world))"; diff --git a/yql/essentials/public/udf/udf_log.h b/yql/essentials/public/udf/udf_log.h index 2e39ad1e040..b09edef148f 100644 --- a/yql/essentials/public/udf/udf_log.h +++ b/yql/essentials/public/udf/udf_log.h @@ -11,6 +11,20 @@ namespace NYql { namespace NUdf { +#define UDF_LOG(logger, component, level, msg) \ +do { \ + if ((logger) && (logger)->IsActive(component, level)) { \ + (logger)->Log(component, level, msg); \ + } \ +} while (0) + +#define UDF_LOG_IF(condition, logger, component, level, msg) \ +do { \ + if ((logger) && (condition) && (logger)->IsActive(component, level)) { \ + (logger)->Log(component, level, msg); \ + } \ +} while (0) + #define UDF_LOG_LEVEL(XX) \ XX(Fatal, 0) \ XX(Error, 1) \ diff --git a/yql/essentials/scripts/collect-coverage.sh b/yql/essentials/scripts/collect-coverage.sh new file mode 100755 index 00000000000..5d7a6510a1d --- /dev/null +++ b/yql/essentials/scripts/collect-coverage.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# +# Script to collect the coverage report for the specified contents +# in yql/essentials/core (i.e. type annotation machinery, optimizers) +# to the directory, given as the first argument. +set -eu + +ARC_ROOT=$(arc rev-parse --show-toplevel) +# Save the coverage report with to the given directory; otherwise, +# save the list into the temporary file. +REPORT_ROOT=${1:-$(mktemp --tmpdir -d yql-essentials-core-coverage-XXXXXXX)} +# Define the array of the prefixes to be collected to the coverage +# report. +COVERAGE_PREFIXES=( + 'yql/essentials/core/type_ann' +) +# XXX: Join the prefixes listed above by a pipe (|) to make a +# valid regexp alternatives for COVERAGE_TARGET_REGEXP parameter. +COVERAGE_PREFIX_ALTERNATIVES=$(IFS='|'; echo "${COVERAGE_PREFIXES[*]}") + +# Run the command to collect code coverage over the sources in +# /yql/essentials/core/ by the minirun test suite. +# XXX: Here are the rationales for the particular options: +# * --clang-coverage -- collect the code coverage only for C++ +# sources; +# * --coverage-report --output $REPORT_ROOT -- build the HTML +# report for the collected code coverage; +# * -DCOVERAGE_TARGET_REGEXP -- collect the code coverage only +# for the dedicated source files; +# XXX: --coverage-prefix-filter doesn't work properly if several +# paths are given, but fortunately, there is a recipe for C++ +# coverage in DEVTOOLSSUPPORT-52275#67093d22473c6c1da0bd17fd, that +# uses -DCOVERAGE_TARGET_REGEXP and allows to specify several +# paths by regexp. +# See more info here: https://docs.yandex-team.ru/devtools/test/coverage. +ya make -tA \ + -C ${ARC_ROOT}/yql/essentials/tests/sql/minirun \ + -C ${ARC_ROOT}/yql/essentials/tests/s-expressions/minirun \ + -DCOVERAGE_TARGET_REGEXP="($COVERAGE_PREFIX_ALTERNATIVES)" \ + --build profile \ + --clang-coverage \ + --coverage-report \ + --output ${REPORT_ROOT} \ + --test-disable-timeout + +# Create an anchor for each prefix, to ensure the analyzer part +# that the coverage for particular prefixes is collected. +for prefix in ${COVERAGE_PREFIXES[@]}; do + COLLECTED_PREFIX=${REPORT_ROOT}/$(basename $0)/$prefix + mkdir -p ${COLLECTED_PREFIX} + touch ${COLLECTED_PREFIX}/collected +done + +echo "The coverage report is stored in ${REPORT_ROOT}" diff --git a/yql/essentials/scripts/separate-yql-proto-compile.sh b/yql/essentials/scripts/separate-yql-proto-compile.sh new file mode 100755 index 00000000000..9a7a4042a20 --- /dev/null +++ b/yql/essentials/scripts/separate-yql-proto-compile.sh @@ -0,0 +1,8 @@ +# The script takes the content of your Protocol Buffer (.proto) file and processes it to generate a compressed and encoded message meta info. +# This meta info needs to be passed to the config. +# 1. Run the script in your terminal. +# 2. Paste your .proto file content when prompted. +# 3. Press Ctrl+D to signal the end of input. +# 4. Receive the Base64-encoded, gzipped descriptor set as output and paste to "meta" field of your config. + +ya make contrib/tools/protoc && tmp=$(mktemp --suffix=.proto) && cat > "$tmp" && ./contrib/tools/protoc/protoc -I "$(dirname "$tmp")" --include_imports --descriptor_set_out=/dev/stdout "$tmp" | gzip | base64 -w 0 && rm "$tmp" diff --git a/yql/essentials/sql/v1/aggregation.cpp b/yql/essentials/sql/v1/aggregation.cpp index 875ae7d97d6..a1e98d2352c 100644 --- a/yql/essentials/sql/v1/aggregation.cpp +++ b/yql/essentials/sql/v1/aggregation.cpp @@ -52,7 +52,7 @@ public: BuildBind(Pos, aggMode == EAggregateMode::OverWindow || aggMode == EAggregateMode::OverWindowDistinct ? "window_module" : "aggregate_module", func) : nullptr), Multi(multi), ValidateArgs(validateArgs), DynamicFactory(!Factory) { - if (aggMode != EAggregateMode::OverWindow && !func.empty() && AggApplyFuncs.contains(func)) { + if (aggMode != EAggregateMode::OverWindow && aggMode != EAggregateMode::OverWindowDistinct && !func.empty() && AggApplyFuncs.contains(func)) { AggApplyName = func.substr(0, func.size() - 15); } @@ -112,7 +112,7 @@ protected: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } @@ -156,7 +156,7 @@ protected: if (!x->Init(ctx, src)) { return false; } - if (x->IsAggregated() && !x->IsAggregationKey() && !IsOverWindow()) { + if (x->IsAggregated() && !x->IsAggregationKey() && !IsOverWindow() && !IsOverWindowDistinct()) { ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; return false; } @@ -172,7 +172,7 @@ protected: if (!Expr->Init(ctx, src)) { return false; } - if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow()) { + if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow() && !IsOverWindowDistinct()) { ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; return false; } @@ -196,7 +196,7 @@ protected: DistinctKey = DotJoin(*sourcePtr, DistinctKey); } } - if (src->IsGroupByColumn(DistinctKey)) { + if (!ctx.DistinctOverKeys && src->IsGroupByColumn(DistinctKey)) { ctx.Error(Expr->GetPos()) << ErrorDistinctByGroupKey(DistinctKey); return false; } @@ -292,7 +292,7 @@ private: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } @@ -393,7 +393,7 @@ private: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } @@ -480,7 +480,7 @@ private: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } @@ -516,7 +516,7 @@ private: return false; } - if ((One->IsAggregated() || Two->IsAggregated()) && !IsOverWindow()) { + if ((One->IsAggregated() || Two->IsAggregated()) && !IsOverWindow() && !IsOverWindowDistinct()) { ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; return false; } @@ -1014,7 +1014,7 @@ private: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } @@ -1130,7 +1130,7 @@ private: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } @@ -1205,7 +1205,7 @@ private: if (!isFactory) { node.Add("Member", "row", Q(Name)); - if (IsOverWindow()) { + if (IsOverWindow() || IsOverWindowDistinct()) { src->AddTmpWindowColumn(Name); } } diff --git a/yql/essentials/sql/v1/complete/antlr4/vocabulary.cpp b/yql/essentials/sql/v1/complete/antlr4/vocabulary.cpp new file mode 100644 index 00000000000..0938ae3aca0 --- /dev/null +++ b/yql/essentials/sql/v1/complete/antlr4/vocabulary.cpp @@ -0,0 +1,14 @@ +#include "vocabulary.h" + +namespace NSQLComplete { + + std::string Display(const antlr4::dfa::Vocabulary& vocabulary, TTokenId tokenType) { + auto name = vocabulary.getDisplayName(tokenType); + if (2 <= name.length() && name.starts_with('\'') && name.ends_with('\'')) { + name.erase(static_cast<std::string::size_type>(0), 1); + name.pop_back(); + } + return name; + } + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/antlr4/vocabulary.h b/yql/essentials/sql/v1/complete/antlr4/vocabulary.h new file mode 100644 index 00000000000..deb67828800 --- /dev/null +++ b/yql/essentials/sql/v1/complete/antlr4/vocabulary.h @@ -0,0 +1,13 @@ +#pragma once + +#include "defs.h" + +#include <contrib/libs/antlr4_cpp_runtime/src/Vocabulary.h> + +#include <string> + +namespace NSQLComplete { + + std::string Display(const antlr4::dfa::Vocabulary& vocabulary, TTokenId tokenType); + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/antlr4/ya.make b/yql/essentials/sql/v1/complete/antlr4/ya.make index 36145606177..b79ae1b60bb 100644 --- a/yql/essentials/sql/v1/complete/antlr4/ya.make +++ b/yql/essentials/sql/v1/complete/antlr4/ya.make @@ -1,5 +1,9 @@ LIBRARY() +SRCS( + vocabulary.cpp +) + PEERDIR( contrib/libs/antlr4_cpp_runtime contrib/libs/antlr4-c3 diff --git a/yql/essentials/sql/v1/complete/core/statement.h b/yql/essentials/sql/v1/complete/core/statement.h new file mode 100644 index 00000000000..d4c095a0e1f --- /dev/null +++ b/yql/essentials/sql/v1/complete/core/statement.h @@ -0,0 +1,10 @@ +#pragma once + +namespace NSQLComplete { + + enum class EStatementKind { + Select, + Insert, + }; + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/core/ya.make b/yql/essentials/sql/v1/complete/core/ya.make new file mode 100644 index 00000000000..9865d255c8f --- /dev/null +++ b/yql/essentials/sql/v1/complete/core/ya.make @@ -0,0 +1,3 @@ +LIBRARY() + +END() diff --git a/yql/essentials/sql/v1/complete/name/name_service.h b/yql/essentials/sql/v1/complete/name/name_service.h index d3cf153341e..665068e1520 100644 --- a/yql/essentials/sql/v1/complete/name/name_service.h +++ b/yql/essentials/sql/v1/complete/name/name_service.h @@ -1,5 +1,7 @@ #pragma once +#include <yql/essentials/sql/v1/complete/core/statement.h> + #include <library/cpp/threading/future/core/future.h> #include <util/generic/vector.h> @@ -13,28 +15,56 @@ namespace NSQLComplete { TString Indentifier; }; + struct TNamespaced { + TString Namespace; + }; + + struct TKeyword { + TString Content; + }; + + struct TPragmaName: TIndentifier { + struct TConstraints: TNamespaced {}; + }; + struct TTypeName: TIndentifier { using TConstraints = std::monostate; }; struct TFunctionName: TIndentifier { - using TConstraints = std::monostate; + struct TConstraints: TNamespaced {}; + }; + + struct THintName: TIndentifier { + struct TConstraints { + EStatementKind Statement; + }; }; using TGenericName = std::variant< + TKeyword, + TPragmaName, TTypeName, - TFunctionName>; + TFunctionName, + THintName>; struct TNameRequest { + TVector<TString> Keywords; struct { - std::optional<TTypeName::TConstraints> TypeName; - std::optional<TTypeName::TConstraints> Function; + std::optional<TPragmaName::TConstraints> Pragma; + std::optional<TTypeName::TConstraints> Type; + std::optional<TFunctionName::TConstraints> Function; + std::optional<THintName::TConstraints> Hint; } Constraints; TString Prefix = ""; size_t Limit = 128; bool IsEmpty() const { - return !Constraints.TypeName && !Constraints.Function; + return Keywords.empty() && + !Constraints.Pragma && + !Constraints.Type && + !Constraints.Function && + !Constraints.Hint; } }; diff --git a/yql/essentials/sql/v1/complete/name/static/frequency.cpp b/yql/essentials/sql/v1/complete/name/static/frequency.cpp index d9c8ba9652c..62997ccff7a 100644 --- a/yql/essentials/sql/v1/complete/name/static/frequency.cpp +++ b/yql/essentials/sql/v1/complete/name/static/frequency.cpp @@ -14,10 +14,14 @@ namespace NSQLComplete { const char* Sum = "sum"; } Key; struct { + const char* Pragma = "PRAGMA"; const char* Type = "TYPE"; const char* Func = "FUNC"; + const char* Keyword = "KEYWORD"; const char* Module = "MODULE"; const char* ModuleFunc = "MODULE_FUNC"; + const char* ReadHint = "READ_HINT"; + const char* InsertHint = "INSERT_HINT"; } Parent; } Json; @@ -53,20 +57,31 @@ namespace NSQLComplete { TFrequencyData Convert(TVector<TFrequencyItem> items) { TFrequencyData data; for (auto& item : items) { - if (item.Parent == Json.Parent.Type || + if (item.Parent == Json.Parent.Pragma || + item.Parent == Json.Parent.Type || item.Parent == Json.Parent.Func || + item.Parent == Json.Parent.Keyword || item.Parent == Json.Parent.ModuleFunc || - item.Parent == Json.Parent.Module) { + item.Parent == Json.Parent.Module || + item.Parent == Json.Parent.ReadHint || + item.Parent == Json.Parent.InsertHint) { item.Rule = ToLowerUTF8(item.Rule); } - if (item.Parent == Json.Parent.Type) { + if (item.Parent == Json.Parent.Pragma) { + data.Pragmas[item.Rule] += item.Sum; + } else if (item.Parent == Json.Parent.Type) { data.Types[item.Rule] += item.Sum; + } else if (item.Parent == Json.Parent.Keyword) { + data.Keywords[item.Rule] += item.Sum; + } else if (item.Parent == Json.Parent.Module) { + // Ignore, unsupported: Modules } else if (item.Parent == Json.Parent.Func || item.Parent == Json.Parent.ModuleFunc) { data.Functions[item.Rule] += item.Sum; - } else if (item.Parent == Json.Parent.Module) { - // Ignore, unsupported: Modules + } else if (item.Parent == Json.Parent.ReadHint || + item.Parent == Json.Parent.InsertHint) { + data.Hints[item.Rule] += item.Sum; } else { // Ignore, unsupported: Parser Call Stacks } diff --git a/yql/essentials/sql/v1/complete/name/static/frequency.h b/yql/essentials/sql/v1/complete/name/static/frequency.h index 3d128f824b4..6925c99fa5e 100644 --- a/yql/essentials/sql/v1/complete/name/static/frequency.h +++ b/yql/essentials/sql/v1/complete/name/static/frequency.h @@ -6,8 +6,11 @@ namespace NSQLComplete { struct TFrequencyData { + THashMap<TString, size_t> Keywords; + THashMap<TString, size_t> Pragmas; THashMap<TString, size_t> Types; THashMap<TString, size_t> Functions; + THashMap<TString, size_t> Hints; }; TFrequencyData ParseJsonFrequencyData(const TStringBuf text); diff --git a/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp b/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp index dd6ee2cfbb2..8f7eafed2ea 100644 --- a/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp +++ b/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp @@ -10,12 +10,18 @@ Y_UNIT_TEST_SUITE(FrequencyTests) { TFrequencyData actual = ParseJsonFrequencyData(R"([ {"parent":"FUNC","rule":"ABC","sum":1}, {"parent":"TYPE","rule":"BIGINT","sum":7101}, + {"parent":"KEYWORD","rule":"UNION","sum":65064443}, {"parent":"MODULE_FUNC","rule":"Compress::BZip2","sum":2}, {"parent":"MODULE","rule":"re2","sum":3094}, + {"parent":"READ_HINT","rule":"COLUMNS","sum":826110}, + {"parent":"INSERT_HINT","rule":"COLUMN_GROUPS","sum":225}, {"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Block2","sum":4874480} ])"); TFrequencyData expected = { + .Keywords = { + {"union", 65064443}, + }, .Types = { {"bigint", 7101}, }, @@ -23,10 +29,16 @@ Y_UNIT_TEST_SUITE(FrequencyTests) { {"abc", 1}, {"compress::bzip2", 2}, }, + .Hints = { + {"columns", 826110}, + {"column_groups", 225}, + }, }; + UNIT_ASSERT_VALUES_EQUAL(actual.Keywords, expected.Keywords); UNIT_ASSERT_VALUES_EQUAL(actual.Types, expected.Types); UNIT_ASSERT_VALUES_EQUAL(actual.Functions, expected.Functions); + UNIT_ASSERT_VALUES_EQUAL(actual.Hints, expected.Hints); } Y_UNIT_TEST(FrequencyDataResouce) { diff --git a/yql/essentials/sql/v1/complete/name/static/json_name_set.cpp b/yql/essentials/sql/v1/complete/name/static/json_name_set.cpp index 29c303b3102..bc522fd674c 100644 --- a/yql/essentials/sql/v1/complete/name/static/json_name_set.cpp +++ b/yql/essentials/sql/v1/complete/name/static/json_name_set.cpp @@ -3,6 +3,8 @@ #include <library/cpp/json/json_reader.h> #include <library/cpp/resource/resource.h> +#include <util/charset/utf8.h> + namespace NSQLComplete { NJson::TJsonValue LoadJsonResource(const TStringBuf filename) { @@ -26,6 +28,10 @@ namespace NSQLComplete { return keys; } + TVector<TString> ParsePragmas(NJson::TJsonValue json) { + return ParseNames(json.GetArraySafe()); + } + TVector<TString> ParseTypes(NJson::TJsonValue json) { return ParseNames(json.GetArraySafe()); } @@ -34,7 +40,7 @@ namespace NSQLComplete { return ParseNames(json.GetArraySafe()); } - TVector<TString> ParseUfs(NJson::TJsonValue json) { + TVector<TString> ParseUdfs(NJson::TJsonValue json) { TVector<TString> names; for (auto& [module, v] : json.GetMapSafe()) { auto functions = ParseNames(v.GetArraySafe()); @@ -46,12 +52,40 @@ namespace NSQLComplete { return names; } + // TODO(YQL-19747): support multiple systems, name service/set hierarchy - common & special + THashMap<EStatementKind, TVector<TString>> ParseHints(NJson::TJsonValue json) { + THashMap<EStatementKind, TVector<TString>> hints; + + THashMap<EStatementKind, TString> StatementNames = { + {EStatementKind::Select, "read"}, + {EStatementKind::Insert, "insert"}, + }; + + for (const auto& [k, kname] : StatementNames) { + for (auto& [_, values] : json.GetMapSafe().at(kname).GetMapSafe()) { + for (auto& name : ParseNames(values.GetMapSafe().at("hints").GetArraySafe())) { + hints[k].emplace_back(std::move(name)); + } + } + } + + for (auto& [_, hints] : hints) { + for (auto& hint : hints) { + hint = ToUpperUTF8(hint); + } + } + + return hints; + } + NameSet MakeDefaultNameSet() { return { + .Pragmas = ParsePragmas(LoadJsonResource("pragmas_opensource.json")), .Types = ParseTypes(LoadJsonResource("types.json")), .Functions = Merge( ParseFunctions(LoadJsonResource("sql_functions.json")), - ParseUfs(LoadJsonResource("udfs_basic.json"))), + ParseUdfs(LoadJsonResource("udfs_basic.json"))), + .Hints = ParseHints(LoadJsonResource("statements_opensource.json")), }; } diff --git a/yql/essentials/sql/v1/complete/name/static/name_service.cpp b/yql/essentials/sql/v1/complete/name/static/name_service.cpp index fdb1dd4eae1..3fd33102d61 100644 --- a/yql/essentials/sql/v1/complete/name/static/name_service.cpp +++ b/yql/essentials/sql/v1/complete/name/static/name_service.cpp @@ -2,22 +2,9 @@ #include "ranking.h" -namespace NSQLComplete { - - bool NoCaseCompare(const TString& lhs, const TString& rhs) { - return std::lexicographical_compare( - std::begin(lhs), std::end(lhs), - std::begin(rhs), std::end(rhs), - [](const char lhs, const char rhs) { - return ToLower(lhs) < ToLower(rhs); - }); - } +#include <yql/essentials/sql/v1/complete/text/case.h> - auto NoCaseCompareLimit(size_t size) { - return [size](const TString& lhs, const TString& rhs) -> bool { - return strncasecmp(lhs.data(), rhs.data(), size) < 0; - }; - } +namespace NSQLComplete { const TVector<TStringBuf> FilteredByPrefix( const TString& prefix, @@ -28,40 +15,96 @@ namespace NSQLComplete { return TVector<TStringBuf>(first, last); } - template <class T> - void AppendAs(TVector<TGenericName>& target, const TVector<TStringBuf>& source) { + template <class T, class S = TStringBuf> + void AppendAs(TVector<TGenericName>& target, const TVector<S>& source) { for (const auto& element : source) { target.emplace_back(T{TString(element)}); } } + TString Prefixed(const TStringBuf requestPrefix, const TStringBuf delimeter, const TNamespaced& namespaced) { + TString prefix; + if (!namespaced.Namespace.empty()) { + prefix += namespaced.Namespace; + prefix += delimeter; + } + prefix += requestPrefix; + return prefix; + } + + void FixPrefix(TString& name, const TStringBuf delimeter, const TNamespaced& namespaced) { + if (namespaced.Namespace.empty()) { + return; + } + name.remove(0, namespaced.Namespace.size() + delimeter.size()); + } + + void FixPrefix(TGenericName& name, const TNameRequest& request) { + std::visit([&](auto& name) -> size_t { + using T = std::decay_t<decltype(name)>; + if constexpr (std::is_same_v<T, TPragmaName>) { + FixPrefix(name.Indentifier, ".", *request.Constraints.Pragma); + } + if constexpr (std::is_same_v<T, TFunctionName>) { + FixPrefix(name.Indentifier, "::", *request.Constraints.Function); + } + return 0; + }, name); + } + class TStaticNameService: public INameService { public: explicit TStaticNameService(NameSet names, IRanking::TPtr ranking) : NameSet_(std::move(names)) , Ranking_(std::move(ranking)) { + Sort(NameSet_.Pragmas, NoCaseCompare); Sort(NameSet_.Types, NoCaseCompare); Sort(NameSet_.Functions, NoCaseCompare); + for (auto& [_, hints] : NameSet_.Hints) { + Sort(hints, NoCaseCompare); + } } TFuture<TNameResponse> Lookup(TNameRequest request) override { TNameResponse response; - if (request.Constraints.TypeName) { + Sort(request.Keywords, NoCaseCompare); + AppendAs<TKeyword>( + response.RankedNames, + FilteredByPrefix(request.Prefix, request.Keywords)); + + if (request.Constraints.Pragma) { + auto prefix = Prefixed(request.Prefix, ".", *request.Constraints.Pragma); + auto names = FilteredByPrefix(prefix, NameSet_.Pragmas); + AppendAs<TPragmaName>(response.RankedNames, names); + } + + if (request.Constraints.Type) { AppendAs<TTypeName>( response.RankedNames, FilteredByPrefix(request.Prefix, NameSet_.Types)); } if (request.Constraints.Function) { - AppendAs<TFunctionName>( + auto prefix = Prefixed(request.Prefix, "::", *request.Constraints.Function); + auto names = FilteredByPrefix(prefix, NameSet_.Functions); + AppendAs<TFunctionName>(response.RankedNames, names); + } + + if (request.Constraints.Hint) { + const auto stmt = request.Constraints.Hint->Statement; + AppendAs<THintName>( response.RankedNames, - FilteredByPrefix(request.Prefix, NameSet_.Functions)); + FilteredByPrefix(request.Prefix, NameSet_.Hints[stmt])); } Ranking_->CropToSortedPrefix(response.RankedNames, request.Limit); + for (auto& name : response.RankedNames) { + FixPrefix(name, request); + } + return NThreading::MakeFuture(std::move(response)); } diff --git a/yql/essentials/sql/v1/complete/name/static/name_service.h b/yql/essentials/sql/v1/complete/name/static/name_service.h index a5c90465c83..d5459faa1d7 100644 --- a/yql/essentials/sql/v1/complete/name/static/name_service.h +++ b/yql/essentials/sql/v1/complete/name/static/name_service.h @@ -7,8 +7,10 @@ namespace NSQLComplete { struct NameSet { + TVector<TString> Pragmas; TVector<TString> Types; TVector<TString> Functions; + THashMap<EStatementKind, TVector<TString>> Hints; }; NameSet MakeDefaultNameSet(); diff --git a/yql/essentials/sql/v1/complete/name/static/ranking.cpp b/yql/essentials/sql/v1/complete/name/static/ranking.cpp index 45e6e2b2fa2..ee1cbef08f5 100644 --- a/yql/essentials/sql/v1/complete/name/static/ranking.cpp +++ b/yql/essentials/sql/v1/complete/name/static/ranking.cpp @@ -57,16 +57,34 @@ namespace NSQLComplete { return std::visit([this](const auto& name) -> size_t { using T = std::decay_t<decltype(name)>; - auto identifier = ToLowerUTF8(ContentView(name)); + auto content = ToLowerUTF8(ContentView(name)); + + if constexpr (std::is_same_v<T, TKeyword>) { + if (auto weight = Frequency_.Keywords.FindPtr(content)) { + return *weight; + } + } + + if constexpr (std::is_same_v<T, TPragmaName>) { + if (auto weight = Frequency_.Pragmas.FindPtr(content)) { + return *weight; + } + } if constexpr (std::is_same_v<T, TFunctionName>) { - if (auto weight = Frequency_.Functions.FindPtr(identifier)) { + if (auto weight = Frequency_.Functions.FindPtr(content)) { return *weight; } } if constexpr (std::is_same_v<T, TTypeName>) { - if (auto weight = Frequency_.Types.FindPtr(identifier)) { + if (auto weight = Frequency_.Types.FindPtr(content)) { + return *weight; + } + } + + if constexpr (std::is_same_v<T, THintName>) { + if (auto weight = Frequency_.Hints.FindPtr(content)) { return *weight; } } @@ -82,6 +100,9 @@ namespace NSQLComplete { const TStringBuf ContentView(const TGenericName& name Y_LIFETIME_BOUND) const { return std::visit([](const auto& name) -> TStringBuf { using T = std::decay_t<decltype(name)>; + if constexpr (std::is_base_of_v<TKeyword, T>) { + return name.Content; + } if constexpr (std::is_base_of_v<TIndentifier, T>) { return name.Indentifier; } diff --git a/yql/essentials/sql/v1/complete/name/static/ya.make b/yql/essentials/sql/v1/complete/name/static/ya.make index 639371447af..155c0926399 100644 --- a/yql/essentials/sql/v1/complete/name/static/ya.make +++ b/yql/essentials/sql/v1/complete/name/static/ya.make @@ -13,9 +13,11 @@ PEERDIR( ) RESOURCE( + yql/essentials/data/language/pragmas_opensource.json pragmas_opensource.json yql/essentials/data/language/types.json types.json yql/essentials/data/language/sql_functions.json sql_functions.json yql/essentials/data/language/udfs_basic.json udfs_basic.json + yql/essentials/data/language/statements_opensource.json statements_opensource.json yql/essentials/data/language/rules_corr_basic.json rules_corr_basic.json ) diff --git a/yql/essentials/sql/v1/complete/name/ya.make b/yql/essentials/sql/v1/complete/name/ya.make index c8af42acfb0..43f7dc2c1b3 100644 --- a/yql/essentials/sql/v1/complete/name/ya.make +++ b/yql/essentials/sql/v1/complete/name/ya.make @@ -1,5 +1,9 @@ LIBRARY() +PEERDIR( + yql/essentials/sql/v1/complete/core +) + END() RECURSE( diff --git a/yql/essentials/sql/v1/complete/sql_complete.cpp b/yql/essentials/sql/v1/complete/sql_complete.cpp index ed3afa29df4..0789aa4bfc0 100644 --- a/yql/essentials/sql/v1/complete/sql_complete.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete.cpp @@ -3,10 +3,7 @@ #include <yql/essentials/sql/v1/complete/text/word.h> #include <yql/essentials/sql/v1/complete/name/static/name_service.h> #include <yql/essentials/sql/v1/complete/syntax/local.h> - -// FIXME(YQL-19747): unwanted dependency on a lexer implementation -#include <yql/essentials/sql/v1/lexer/antlr4_pure/lexer.h> -#include <yql/essentials/sql/v1/lexer/antlr4_pure_ansi/lexer.h> +#include <yql/essentials/sql/v1/complete/syntax/format.h> #include <util/generic/algorithm.h> #include <util/charset/utf8.h> @@ -35,18 +32,14 @@ namespace NSQLComplete { << " for input size " << input.Text.size(); } - auto prefix = input.Text.Head(input.CursorPosition); - auto completedToken = GetCompletedToken(prefix); - - auto context = SyntaxAnalysis->Analyze(input); + TLocalSyntaxContext context = SyntaxAnalysis->Analyze(input); - TVector<TCandidate> candidates; - EnrichWithKeywords(candidates, std::move(context.Keywords), completedToken); - EnrichWithNames(candidates, context, completedToken); + TStringBuf prefix = input.Text.Head(input.CursorPosition); + TCompletedToken completedToken = GetCompletedToken(prefix); return { .CompletedToken = std::move(completedToken), - .Candidates = std::move(candidates), + .Candidates = GetCanidates(std::move(context), completedToken), }; } @@ -58,55 +51,61 @@ namespace NSQLComplete { }; } - void EnrichWithKeywords( - TVector<TCandidate>& candidates, - TVector<TString> keywords, - const TCompletedToken& prefix) { - for (auto keyword : keywords) { - candidates.push_back({ - .Kind = ECandidateKind::Keyword, - .Content = std::move(keyword), - }); - } - FilterByContent(candidates, prefix.Content); - candidates.crop(Configuration.Limit); - } - - void EnrichWithNames( - TVector<TCandidate>& candidates, - const TLocalSyntaxContext& context, - const TCompletedToken& prefix) { - if (candidates.size() == Configuration.Limit) { - return; - } - + TVector<TCandidate> GetCanidates(TLocalSyntaxContext context, const TCompletedToken& prefix) { TNameRequest request = { .Prefix = TString(prefix.Content), - .Limit = Configuration.Limit - candidates.size(), + .Limit = Configuration.Limit, }; + for (const auto& [first, _] : context.Keywords) { + request.Keywords.emplace_back(first); + } + + if (context.Pragma) { + TPragmaName::TConstraints constraints; + constraints.Namespace = context.Pragma->Namespace; + request.Constraints.Pragma = std::move(constraints); + } + if (context.IsTypeName) { - request.Constraints.TypeName = TTypeName::TConstraints(); + request.Constraints.Type = TTypeName::TConstraints(); + } + + if (context.Function) { + TFunctionName::TConstraints constraints; + constraints.Namespace = context.Function->Namespace; + request.Constraints.Function = std::move(constraints); } - if (context.IsFunctionName) { - request.Constraints.Function = TFunctionName::TConstraints(); + if (context.Hint) { + THintName::TConstraints constraints; + constraints.Statement = context.Hint->StatementKind; + request.Constraints.Hint = std::move(constraints); } if (request.IsEmpty()) { - return; + return {}; } // User should prepare a robust INameService TNameResponse response = Names->Lookup(std::move(request)).ExtractValueSync(); - EnrichWithNames(candidates, std::move(response.RankedNames)); + return Convert(std::move(response.RankedNames), std::move(context.Keywords)); } - void EnrichWithNames(TVector<TCandidate>& candidates, TVector<TGenericName> names) { + TVector<TCandidate> Convert(TVector<TGenericName> names, TLocalSyntaxContext::TKeywords keywords) { + TVector<TCandidate> candidates; for (auto& name : names) { - candidates.emplace_back(std::visit([](auto&& name) -> TCandidate { + candidates.emplace_back(std::visit([&](auto&& name) -> TCandidate { using T = std::decay_t<decltype(name)>; + if constexpr (std::is_base_of_v<TKeyword, T>) { + TVector<TString>& seq = keywords[name.Content]; + seq.insert(std::begin(seq), name.Content); + return {ECandidateKind::Keyword, FormatKeywords(seq)}; + } + if constexpr (std::is_base_of_v<TPragmaName, T>) { + return {ECandidateKind::PragmaName, std::move(name.Indentifier)}; + } if constexpr (std::is_base_of_v<TTypeName, T>) { return {ECandidateKind::TypeName, std::move(name.Indentifier)}; } @@ -114,16 +113,12 @@ namespace NSQLComplete { name.Indentifier += "("; return {ECandidateKind::FunctionName, std::move(name.Indentifier)}; } + if constexpr (std::is_base_of_v<THintName, T>) { + return {ECandidateKind::HintName, std::move(name.Indentifier)}; + } }, std::move(name))); } - } - - void FilterByContent(TVector<TCandidate>& candidates, TStringBuf prefix) { - const auto lowerPrefix = ToLowerUTF8(prefix); - auto removed = std::ranges::remove_if(candidates, [&](const auto& candidate) { - return !ToLowerUTF8(candidate.Content).StartsWith(lowerPrefix); - }); - candidates.erase(std::begin(removed), std::end(removed)); + return candidates; } TConfiguration Configuration; @@ -131,21 +126,6 @@ namespace NSQLComplete { INameService::TPtr Names; }; - // FIXME(YQL-19747): unwanted dependency on a lexer implementation - ISqlCompletionEngine::TPtr MakeSqlCompletionEngine() { - NSQLTranslationV1::TLexers lexers; - lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); - lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); - - INameService::TPtr names = MakeStaticNameService(MakeDefaultNameSet(), MakeDefaultRanking()); - - return MakeSqlCompletionEngine([lexers = std::move(lexers)](bool ansi) { - return NSQLTranslationV1::MakeLexer( - lexers, ansi, /* antlr4 = */ true, - NSQLTranslationV1::ELexerFlavor::Pure); - }, std::move(names)); - } - ISqlCompletionEngine::TPtr MakeSqlCompletionEngine( TLexerSupplier lexer, INameService::TPtr names, @@ -162,12 +142,18 @@ void Out<NSQLComplete::ECandidateKind>(IOutputStream& out, NSQLComplete::ECandid case NSQLComplete::ECandidateKind::Keyword: out << "Keyword"; break; + case NSQLComplete::ECandidateKind::PragmaName: + out << "PragmaName"; + break; case NSQLComplete::ECandidateKind::TypeName: out << "TypeName"; break; case NSQLComplete::ECandidateKind::FunctionName: out << "FunctionName"; break; + case NSQLComplete::ECandidateKind::HintName: + out << "HintName"; + break; } } diff --git a/yql/essentials/sql/v1/complete/sql_complete.h b/yql/essentials/sql/v1/complete/sql_complete.h index b8a970efd8f..44bb98c3b21 100644 --- a/yql/essentials/sql/v1/complete/sql_complete.h +++ b/yql/essentials/sql/v1/complete/sql_complete.h @@ -20,8 +20,10 @@ namespace NSQLComplete { enum class ECandidateKind { Keyword, + PragmaName, TypeName, FunctionName, + HintName, }; struct TCandidate { @@ -50,9 +52,6 @@ namespace NSQLComplete { using TLexerSupplier = std::function<NSQLTranslation::ILexer::TPtr(bool ansi)>; - // FIXME(YQL-19747): unwanted dependency on a lexer implementation - ISqlCompletionEngine::TPtr MakeSqlCompletionEngine(); - ISqlCompletionEngine::TPtr MakeSqlCompletionEngine( TLexerSupplier lexer, INameService::TPtr names, diff --git a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp index e9f5dbdfb73..a0681b1888f 100644 --- a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp @@ -38,7 +38,9 @@ public: Y_UNIT_TEST_SUITE(SqlCompleteTests) { using ECandidateKind::FunctionName; + using ECandidateKind::HintName; using ECandidateKind::Keyword; + using ECandidateKind::PragmaName; using ECandidateKind::TypeName; TLexerSupplier MakePureLexerSupplier() { @@ -55,8 +57,13 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { ISqlCompletionEngine::TPtr MakeSqlCompletionEngineUT() { TLexerSupplier lexer = MakePureLexerSupplier(); NameSet names = { + .Pragmas = {"yson.CastToString"}, .Types = {"Uint64"}, - .Functions = {"StartsWith"}, + .Functions = {"StartsWith", "DateTime::Split"}, + .Hints = { + {EStatementKind::Select, {"XLOCK"}}, + {EStatementKind::Insert, {"EXPIRATION"}}, + }, }; auto ranking = MakeDefaultRanking({}); INameService::TPtr service = MakeStaticNameService(std::move(names), std::move(ranking)); @@ -67,6 +74,12 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { return engine->Complete(input).Candidates; } + TVector<TCandidate> CompleteTop(size_t limit, ISqlCompletionEngine::TPtr& engine, TCompletionInput input) { + auto candidates = Complete(engine, input); + candidates.crop(limit); + return candidates; + } + Y_UNIT_TEST(Beginning) { TVector<TCandidate> expected = { {Keyword, "ALTER"}, @@ -267,12 +280,36 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { } Y_UNIT_TEST(Pragma) { - TVector<TCandidate> expected = { - {Keyword, "ANSI"}, - }; - auto engine = MakeSqlCompletionEngineUT(); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"PRAGMA "}), expected); + { + TVector<TCandidate> expected = { + {Keyword, "ANSI"}, + {PragmaName, "yson.CastToString"}}; + auto completion = engine->Complete({"PRAGMA "}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, ""); + } + { + TVector<TCandidate> expected = { + {PragmaName, "yson.CastToString"}}; + auto completion = engine->Complete({"PRAGMA yson"}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, "yson"); + } + { + TVector<TCandidate> expected = { + {PragmaName, "CastToString"}}; + auto completion = engine->Complete({"PRAGMA yson."}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, ""); + } + { + TVector<TCandidate> expected = { + {PragmaName, "CastToString"}}; + auto completion = engine->Complete({"PRAGMA yson.cast"}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, "cast"); + } } Y_UNIT_TEST(Select) { @@ -287,6 +324,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "CURRENT_TIMESTAMP"}, {Keyword, "DICT<"}, {Keyword, "DISTINCT"}, + {FunctionName, "DateTime::Split("}, {Keyword, "EMPTY_ACTION"}, {Keyword, "ENUM"}, {Keyword, "EXISTS("}, @@ -303,11 +341,11 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "SET<"}, {Keyword, "STREAM"}, {Keyword, "STRUCT"}, + {FunctionName, "StartsWith("}, {Keyword, "TAGGED<"}, {Keyword, "TRUE"}, {Keyword, "TUPLE"}, {Keyword, "VARIANT"}, - {FunctionName, "StartsWith("}, }; auto engine = MakeSqlCompletionEngineUT(); @@ -324,6 +362,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "CURRENT_TIME"}, {Keyword, "CURRENT_TIMESTAMP"}, {Keyword, "DICT<"}, + {FunctionName, "DateTime::Split("}, {Keyword, "EMPTY_ACTION"}, {Keyword, "ENUM"}, {Keyword, "EXISTS("}, @@ -340,11 +379,11 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "SET<"}, {Keyword, "STREAM<"}, {Keyword, "STRUCT"}, + {FunctionName, "StartsWith("}, {Keyword, "TAGGED<"}, {Keyword, "TRUE"}, {Keyword, "TUPLE"}, {Keyword, "VARIANT"}, - {FunctionName, "StartsWith("}, }; auto engine = MakeSqlCompletionEngineUT(); @@ -376,8 +415,8 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "STRUCT"}, {Keyword, "TAGGED<"}, {Keyword, "TUPLE"}, - {Keyword, "VARIANT<"}, {TypeName, "Uint64"}, + {Keyword, "VARIANT<"}, }; auto engine = MakeSqlCompletionEngineUT(); @@ -402,6 +441,78 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { } } + Y_UNIT_TEST(FunctionName) { + auto engine = MakeSqlCompletionEngineUT(); + { + TVector<TCandidate> expected = { + {FunctionName, "DateTime::Split("}, + }; + auto completion = engine->Complete({"SELECT Date"}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, "Date"); + } + { + TVector<TCandidate> expected = { + {FunctionName, "Split("}, + }; + auto completion = engine->Complete({"SELECT DateTime:"}); + UNIT_ASSERT(completion.Candidates.empty()); + } + { + TVector<TCandidate> expected = { + {FunctionName, "Split("}, + }; + auto completion = engine->Complete({"SELECT DateTime::"}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, ""); + } + { + TVector<TCandidate> expected = { + {FunctionName, "Split("}, + }; + auto completion = engine->Complete({"SELECT DateTime::s"}); + UNIT_ASSERT_VALUES_EQUAL(completion.Candidates, expected); + UNIT_ASSERT_VALUES_EQUAL(completion.CompletedToken.Content, "s"); + } + } + + Y_UNIT_TEST(SelectTableHintName) { + auto engine = MakeSqlCompletionEngineUT(); + { + TVector<TCandidate> expected = { + {HintName, "XLOCK"}, + }; + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"PROCESS my_table USING $udf(TableRows()) WITH "}), expected); + } + { + TVector<TCandidate> expected = { + {Keyword, "COLUMNS"}, + {Keyword, "SCHEMA"}, + {HintName, "XLOCK"}, + }; + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"REDUCE my_table WITH "}), expected); + } + { + TVector<TCandidate> expected = { + {Keyword, "COLUMNS"}, + {Keyword, "SCHEMA"}, + {HintName, "XLOCK"}, + }; + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT key FROM my_table WITH "}), expected); + } + } + + Y_UNIT_TEST(InsertTableHintName) { + TVector<TCandidate> expected = { + {Keyword, "COLUMNS"}, + {HintName, "EXPIRATION"}, + {Keyword, "SCHEMA"}, + }; + + auto engine = MakeSqlCompletionEngineUT(); + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"INSERT INTO my_table WITH "}), expected); + } + Y_UNIT_TEST(UTF8Wide) { auto engine = MakeSqlCompletionEngineUT(); UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"\xF0\x9F\x98\x8A"}).size(), 0); @@ -410,9 +521,9 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(WordBreak) { auto engine = MakeSqlCompletionEngineUT(); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT ("}).size(), 29); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT (1)"}).size(), 30); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT 1;"}).size(), 35); + UNIT_ASSERT_GE(Complete(engine, {"SELECT ("}).size(), 29); + UNIT_ASSERT_GE(Complete(engine, {"SELECT (1)"}).size(), 30); + UNIT_ASSERT_GE(Complete(engine, {"SELECT 1;"}).size(), 35); } Y_UNIT_TEST(Typing) { @@ -481,12 +592,29 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { }; UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT OPTIONAL<U"}), expected); } + { + TVector<TCandidate> expected = { + {PragmaName, "yson.DisableStrict"}, + {PragmaName, "yson.AutoConvert"}, + {PragmaName, "yson.Strict"}, + {PragmaName, "yson.CastToString"}, + {PragmaName, "yson.DisableCastToString"}, + }; + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"PRAGMA yson"}), expected); + } + { + TVector<TCandidate> expected = { + {HintName, "IGNORE_TYPE_V3"}, + {HintName, "IGNORETYPEV3"}, + }; + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"REDUCE a WITH ig"}), expected); + } } Y_UNIT_TEST(OnFailingNameService) { auto service = MakeHolder<TFailingNameService>(); auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(service)); - UNIT_ASSERT_NO_EXCEPTION(Complete(engine, {""})); + UNIT_ASSERT_EXCEPTION(Complete(engine, {""}), TDummyException); UNIT_ASSERT_EXCEPTION(Complete(engine, {"SELECT OPTIONAL<U"}), TDummyException); UNIT_ASSERT_EXCEPTION(Complete(engine, {"SELECT CAST (1 AS "}).size(), TDummyException); } @@ -516,6 +644,14 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(Ranking) { TFrequencyData frequency = { + .Keywords = { + {"select", 2}, + {"insert", 4}, + }, + .Pragmas = { + {"yt.defaultmemorylimit", 16}, + {"yt.annotations", 8}, + }, .Types = { {"int32", 128}, {"int64", 64}, @@ -529,11 +665,29 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {"minby", 32}, {"maxby", 32}, }, + .Hints = { + {"xlock", 4}, + {"unordered", 2}, + }, }; auto service = MakeStaticNameService(MakeDefaultNameSet(), MakeDefaultRanking(frequency)); auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(service)); { TVector<TCandidate> expected = { + {Keyword, "INSERT"}, + {Keyword, "SELECT"}, + }; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(expected.size(), engine, {""}), expected); + } + { + TVector<TCandidate> expected = { + {PragmaName, "DefaultMemoryLimit"}, + {PragmaName, "Annotations"}, + }; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(expected.size(), engine, {"PRAGMA yt."}), expected); + } + { + TVector<TCandidate> expected = { {TypeName, "Int32"}, {TypeName, "Int64"}, {TypeName, "Interval"}, @@ -544,7 +698,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT OPTIONAL<I"}), expected); } { - TVector<TCandidate> expectedPrefix = { + TVector<TCandidate> expected = { {FunctionName, "Min("}, {FunctionName, "Max("}, {FunctionName, "MaxOf("}, @@ -554,11 +708,16 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {FunctionName, "Math::Acos("}, {FunctionName, "Math::Asin("}, }; - - auto actualPrefix = Complete(engine, {"SELECT m"}); - actualPrefix.crop(expectedPrefix.size()); - - UNIT_ASSERT_VALUES_EQUAL(actualPrefix, expectedPrefix); + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(expected.size(), engine, {"SELECT m"}), expected); + } + { + TVector<TCandidate> expected = { + {HintName, "XLOCK"}, + {HintName, "UNORDERED"}, + {Keyword, "COLUMNS"}, + {HintName, "FORCEINFERSCHEMA"}, + }; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(expected.size(), engine, {"SELECT * FROM a WITH "}), expected); } } diff --git a/yql/essentials/sql/v1/complete/syntax/format.cpp b/yql/essentials/sql/v1/complete/syntax/format.cpp new file mode 100644 index 00000000000..1c9f146c923 --- /dev/null +++ b/yql/essentials/sql/v1/complete/syntax/format.cpp @@ -0,0 +1,38 @@ +#include "format.h" + +#include "grammar.h" + +#include <yql/essentials/sql/v1/complete/antlr4/vocabulary.h> + +#include <util/generic/hash_set.h> + +namespace NSQLComplete { + + TString FormatKeywords(const TVector<TString>& seq) { + static const THashSet<std::string> Keywords = [] { + const auto& grammar = GetSqlGrammar(); + const auto& vocabulary = grammar.GetVocabulary(); + + THashSet<std::string> keywords; + for (auto& token : grammar.GetKeywordTokens()) { + keywords.emplace(Display(vocabulary, token)); + } + return keywords; + }(); + + if (seq.empty()) { + return ""; + } + + TString text = seq[0]; + for (size_t i = 1; i < seq.size(); ++i) { + const auto& token = seq[i]; + if (Keywords.contains(token)) { + text += " "; + } + text += token; + } + return text; + } + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/syntax/format.h b/yql/essentials/sql/v1/complete/syntax/format.h new file mode 100644 index 00000000000..6c2f1b72ac2 --- /dev/null +++ b/yql/essentials/sql/v1/complete/syntax/format.h @@ -0,0 +1,10 @@ +#pragma once + +#include <util/generic/string.h> +#include <util/generic/vector.h> + +namespace NSQLComplete { + + TString FormatKeywords(const TVector<TString>& seq); + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/syntax/local.cpp b/yql/essentials/sql/v1/complete/syntax/local.cpp index cac43e5a320..4b6fac094d5 100644 --- a/yql/essentials/sql/v1/complete/syntax/local.cpp +++ b/yql/essentials/sql/v1/complete/syntax/local.cpp @@ -6,6 +6,7 @@ #include <yql/essentials/sql/v1/complete/antlr4/c3i.h> #include <yql/essentials/sql/v1/complete/antlr4/c3t.h> +#include <yql/essentials/sql/v1/complete/antlr4/vocabulary.h> #include <yql/essentials/core/issue/yql_issue.h> @@ -22,6 +23,13 @@ namespace NSQLComplete { + template <std::regular_invocable<TParserCallStack> StackPredicate> + std::regular_invocable<TMatchedRule> auto RuleAdapted(StackPredicate predicate) { + return [=](const TMatchedRule& rule) { + return predicate(rule.ParserCallStack); + }; + } + template <bool IsAnsiLexer> class TSpecializedLocalSyntaxAnalysis: public ILocalSyntaxAnalysis { private: @@ -53,10 +61,15 @@ namespace NSQLComplete { } auto candidates = C3.Complete(prefix); + + NSQLTranslation::TParsedTokenList tokens = Tokenized(prefix); + return { .Keywords = SiftedKeywords(candidates), + .Pragma = PragmaMatch(tokens, candidates), .IsTypeName = IsTypeNameMatched(candidates), - .IsFunctionName = IsFunctionNameMatched(candidates), + .Function = FunctionMatch(tokens, candidates), + .Hint = HintMatch(candidates), }; } @@ -103,44 +116,98 @@ namespace NSQLComplete { return true; } - TVector<TString> SiftedKeywords(const TC3Candidates& candidates) { + TLocalSyntaxContext::TKeywords SiftedKeywords(const TC3Candidates& candidates) { const auto& vocabulary = Grammar->GetVocabulary(); const auto& keywordTokens = Grammar->GetKeywordTokens(); - TVector<TString> keywords; + TLocalSyntaxContext::TKeywords keywords; for (const auto& token : candidates.Tokens) { if (keywordTokens.contains(token.Number)) { - keywords.emplace_back(Display(vocabulary, token.Number)); - for (auto following : token.Following) { - if (keywordTokens.contains(following)) { - keywords.back() += " "; - } - keywords.back() += Display(vocabulary, following); + auto& following = keywords[Display(vocabulary, token.Number)]; + for (auto next : token.Following) { + following.emplace_back(Display(vocabulary, next)); } } } return keywords; } - std::string Display(const antlr4::dfa::Vocabulary& vocabulary, TTokenId tokenType) { - auto name = vocabulary.getDisplayName(tokenType); - if (2 <= name.length() && name.starts_with('\'') && name.ends_with('\'')) { - name.erase(static_cast<std::string::size_type>(0), 1); - name.pop_back(); + std::optional<TLocalSyntaxContext::TPragma> PragmaMatch( + const NSQLTranslation::TParsedTokenList& tokens, const TC3Candidates& candidates) { + if (!AnyOf(candidates.Rules, RuleAdapted(IsLikelyPragmaStack))) { + return std::nullopt; } - return name; + + TLocalSyntaxContext::TPragma pragma; + if (EndsWith(tokens, {"ID_PLAIN", "DOT"})) { + pragma.Namespace = tokens[tokens.size() - 2].Content; + } else if (EndsWith(tokens, {"ID_PLAIN", "DOT", ""})) { + pragma.Namespace = tokens[tokens.size() - 3].Content; + } + return pragma; } bool IsTypeNameMatched(const TC3Candidates& candidates) { - return AnyOf(candidates.Rules, [&](const TMatchedRule& rule) { - return IsLikelyTypeStack(rule.ParserCallStack); - }); + return AnyOf(candidates.Rules, RuleAdapted(IsLikelyTypeStack)); + } + + std::optional<TLocalSyntaxContext::TFunction> FunctionMatch( + const NSQLTranslation::TParsedTokenList& tokens, const TC3Candidates& candidates) { + if (!AnyOf(candidates.Rules, RuleAdapted(IsLikelyFunctionStack))) { + return std::nullopt; + } + + TLocalSyntaxContext::TFunction function; + if (EndsWith(tokens, {"ID_PLAIN", "NAMESPACE"})) { + function.Namespace = tokens[tokens.size() - 2].Content; + } else if (EndsWith(tokens, {"ID_PLAIN", "NAMESPACE", ""})) { + function.Namespace = tokens[tokens.size() - 3].Content; + } + return function; + } + + std::optional<TLocalSyntaxContext::THint> HintMatch(const TC3Candidates& candidates) { + // TODO(YQL-19747): detect local contexts with a single iteration through the candidates.Rules + auto rule = FindIf(candidates.Rules, RuleAdapted(IsLikelyHintStack)); + if (rule == std::end(candidates.Rules)) { + return std::nullopt; + } + + auto stmt = StatementKindOf(rule->ParserCallStack); + if (stmt == std::nullopt) { + return std::nullopt; + } + + return TLocalSyntaxContext::THint{ + .StatementKind = *stmt, + }; + } + + NSQLTranslation::TParsedTokenList Tokenized(const TStringBuf text) { + NSQLTranslation::TParsedTokenList tokens; + NYql::TIssues issues; + if (!NSQLTranslation::Tokenize( + *Lexer_, TString(text), /* queryName = */ "", + tokens, issues, /* maxErrors = */ 0)) { + return {}; + } + Y_ENSURE(!tokens.empty() && tokens.back().Name == "EOF"); + tokens.pop_back(); + return tokens; } - bool IsFunctionNameMatched(const TC3Candidates& candidates) { - return AnyOf(candidates.Rules, [&](const TMatchedRule& rule) { - return IsLikelyFunctionStack(rule.ParserCallStack); - }); + bool EndsWith( + const NSQLTranslation::TParsedTokenList& tokens, + const TVector<TStringBuf>& pattern) { + if (tokens.size() < pattern.size()) { + return false; + } + for (yssize_t i = tokens.ysize() - 1, j = pattern.ysize() - 1; 0 <= j; --i, --j) { + if (!pattern[j].empty() && tokens[i].Name != pattern[j]) { + return false; + } + } + return true; } const ISqlGrammar* Grammar; diff --git a/yql/essentials/sql/v1/complete/syntax/local.h b/yql/essentials/sql/v1/complete/syntax/local.h index 79984d00e2b..2b926e1296e 100644 --- a/yql/essentials/sql/v1/complete/syntax/local.h +++ b/yql/essentials/sql/v1/complete/syntax/local.h @@ -5,14 +5,30 @@ #include <yql/essentials/sql/v1/lexer/lexer.h> #include <util/generic/string.h> -#include <util/generic/vector.h> +#include <util/generic/hash.h> namespace NSQLComplete { struct TLocalSyntaxContext { - TVector<TString> Keywords; + using TKeywords = THashMap<TString, TVector<TString>>; + + struct TPragma { + TString Namespace; + }; + + struct TFunction { + TString Namespace; + }; + + struct THint { + EStatementKind StatementKind; + }; + + TKeywords Keywords; + std::optional<TPragma> Pragma; bool IsTypeName; - bool IsFunctionName; + std::optional<TFunction> Function; + std::optional<THint> Hint; }; class ILocalSyntaxAnalysis { diff --git a/yql/essentials/sql/v1/complete/syntax/parser_call_stack.cpp b/yql/essentials/sql/v1/complete/syntax/parser_call_stack.cpp index 57e058fa900..cdd284b0ad4 100644 --- a/yql/essentials/sql/v1/complete/syntax/parser_call_stack.cpp +++ b/yql/essentials/sql/v1/complete/syntax/parser_call_stack.cpp @@ -6,6 +6,8 @@ #include <util/generic/algorithm.h> #include <util/generic/yexception.h> +#include <ranges> + #define DEBUG_SYMBOLIZE_STACK(stack) \ auto debug_symbolized_##stack = Symbolized(stack) @@ -24,6 +26,11 @@ namespace NSQLComplete { RULE(Keyword_compat), }; + const TVector<TRuleId> PragmaNameRules = { + RULE(Opt_id_prefix_or_type), + RULE(An_id), + }; + const TVector<TRuleId> TypeNameRules = { RULE(Type_name_simple), RULE(An_id_or_type), @@ -35,6 +42,11 @@ namespace NSQLComplete { RULE(Id_or_type), }; + const TVector<TRuleId> HintNameRules = { + RULE(Id_hint), + RULE(An_id), + }; + TVector<std::string> Symbolized(const TParserCallStack& stack) { const ISqlGrammar& grammar = GetSqlGrammar(); @@ -62,6 +74,11 @@ namespace NSQLComplete { return Find(stack, rule) != std::end(stack); } + bool IsLikelyPragmaStack(const TParserCallStack& stack) { + return EndsWith({RULE(Pragma_stmt), RULE(Opt_id_prefix_or_type)}, stack) || + EndsWith({RULE(Pragma_stmt), RULE(An_id)}, stack); + } + bool IsLikelyTypeStack(const TParserCallStack& stack) { return EndsWith({RULE(Type_name_simple)}, stack) || (Contains({RULE(Invoke_expr), @@ -75,12 +92,31 @@ namespace NSQLComplete { return EndsWith({RULE(Unary_casual_subexpr), RULE(Id_expr)}, stack) || EndsWith({RULE(Unary_casual_subexpr), RULE(Atom_expr), - RULE(An_id_or_type)}, stack); + RULE(An_id_or_type)}, stack) || + EndsWith({RULE(Atom_expr), RULE(Id_or_type)}, stack); + } + + bool IsLikelyHintStack(const TParserCallStack& stack) { + return ContainsRule(RULE(Id_hint), stack) || + Contains({RULE(External_call_param), RULE(An_id)}, stack); + } + + std::optional<EStatementKind> StatementKindOf(const TParserCallStack& stack) { + for (TRuleId rule : std::ranges::views::reverse(stack)) { + if (rule == RULE(Process_core) || rule == RULE(Reduce_core) || rule == RULE(Select_core)) { + return EStatementKind::Select; + } + if (rule == RULE(Into_table_stmt)) { + return EStatementKind::Insert; + } + } + return std::nullopt; } std::unordered_set<TRuleId> GetC3PreferredRules() { std::unordered_set<TRuleId> preferredRules; preferredRules.insert(std::begin(KeywordRules), std::end(KeywordRules)); + preferredRules.insert(std::begin(PragmaNameRules), std::end(PragmaNameRules)); preferredRules.insert(std::begin(TypeNameRules), std::end(TypeNameRules)); preferredRules.insert(std::begin(FunctionNameRules), std::end(FunctionNameRules)); return preferredRules; diff --git a/yql/essentials/sql/v1/complete/syntax/parser_call_stack.h b/yql/essentials/sql/v1/complete/syntax/parser_call_stack.h index 756586988db..98738728231 100644 --- a/yql/essentials/sql/v1/complete/syntax/parser_call_stack.h +++ b/yql/essentials/sql/v1/complete/syntax/parser_call_stack.h @@ -1,13 +1,20 @@ #pragma once #include <yql/essentials/sql/v1/complete/antlr4/defs.h> +#include <yql/essentials/sql/v1/complete/core/statement.h> namespace NSQLComplete { + bool IsLikelyPragmaStack(const TParserCallStack& stack); + bool IsLikelyTypeStack(const TParserCallStack& stack); bool IsLikelyFunctionStack(const TParserCallStack& stack); + bool IsLikelyHintStack(const TParserCallStack& stack); + + std::optional<EStatementKind> StatementKindOf(const TParserCallStack& stack); + std::unordered_set<TRuleId> GetC3PreferredRules(); } // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/syntax/ya.make b/yql/essentials/sql/v1/complete/syntax/ya.make index 24fd94a952a..6631a0d9c1d 100644 --- a/yql/essentials/sql/v1/complete/syntax/ya.make +++ b/yql/essentials/sql/v1/complete/syntax/ya.make @@ -2,6 +2,7 @@ LIBRARY() SRCS( ansi.cpp + format.cpp grammar.cpp local.cpp parser_call_stack.cpp @@ -13,11 +14,9 @@ ADDINCL( PEERDIR( yql/essentials/core/issue - yql/essentials/parser/antlr_ast/gen/v1_ansi_antlr4 yql/essentials/parser/antlr_ast/gen/v1_antlr4 yql/essentials/parser/lexer_common - yql/essentials/sql/settings yql/essentials/sql/v1/lexer yql/essentials/sql/v1/reflect diff --git a/yql/essentials/sql/v1/complete/text/case.cpp b/yql/essentials/sql/v1/complete/text/case.cpp new file mode 100644 index 00000000000..ea1b39e1613 --- /dev/null +++ b/yql/essentials/sql/v1/complete/text/case.cpp @@ -0,0 +1,11 @@ +#include "case.h" + +#include <util/string/ascii.h> + +namespace NSQLComplete { + + bool NoCaseCompare(const TString& lhs, const TString& rhs) { + return AsciiCompareIgnoreCase(lhs, rhs) < 0; + } + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/text/case.h b/yql/essentials/sql/v1/complete/text/case.h new file mode 100644 index 00000000000..883cb7f5048 --- /dev/null +++ b/yql/essentials/sql/v1/complete/text/case.h @@ -0,0 +1,15 @@ +#pragma once + +#include <util/generic/string.h> + +namespace NSQLComplete { + + bool NoCaseCompare(const TString& lhs, const TString& rhs); + + inline auto NoCaseCompareLimit(size_t size) { + return [size](const TString& lhs, const TString& rhs) -> bool { + return strncasecmp(lhs.data(), rhs.data(), size) < 0; + }; + } + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/text/ya.make b/yql/essentials/sql/v1/complete/text/ya.make index 030e69172ab..3d26b895e52 100644 --- a/yql/essentials/sql/v1/complete/text/ya.make +++ b/yql/essentials/sql/v1/complete/text/ya.make @@ -1,6 +1,7 @@ LIBRARY() SRCS( + case.cpp word.cpp ) diff --git a/yql/essentials/sql/v1/complete/ya.make b/yql/essentials/sql/v1/complete/ya.make index 4db8f92d5aa..59c15502af5 100644 --- a/yql/essentials/sql/v1/complete/ya.make +++ b/yql/essentials/sql/v1/complete/ya.make @@ -6,11 +6,6 @@ SRCS( PEERDIR( yql/essentials/sql/v1/lexer - - # FIXME(YQL-19747): unwanted dependency on a lexer implementation - yql/essentials/sql/v1/lexer/antlr4_pure - yql/essentials/sql/v1/lexer/antlr4_pure_ansi - yql/essentials/sql/v1/complete/antlr4 yql/essentials/sql/v1/complete/name yql/essentials/sql/v1/complete/name/static @@ -22,6 +17,7 @@ END() RECURSE( antlr4 + core name syntax text diff --git a/yql/essentials/sql/v1/context.cpp b/yql/essentials/sql/v1/context.cpp index de2668608ea..1a0a1f4b18d 100644 --- a/yql/essentials/sql/v1/context.cpp +++ b/yql/essentials/sql/v1/context.cpp @@ -68,6 +68,7 @@ THashMap<TStringBuf, TPragmaField> CTX_PRAGMA_FIELDS = { {"DistinctOverWindow", &TContext::DistinctOverWindow}, {"EmitUnionMerge", &TContext::EmitUnionMerge}, {"SeqMode", &TContext::SeqMode}, + {"DistinctOverKeys", &TContext::DistinctOverKeys}, }; typedef TMaybe<bool> TContext::*TPragmaMaybeField; diff --git a/yql/essentials/sql/v1/context.h b/yql/essentials/sql/v1/context.h index 17e86c77c3d..3bdfa1ceab4 100644 --- a/yql/essentials/sql/v1/context.h +++ b/yql/essentials/sql/v1/context.h @@ -372,6 +372,7 @@ namespace NSQLTranslationV1 { bool AnsiImplicitCrossJoin = false; // select * from A,B bool DistinctOverWindow = false; bool SeqMode = false; + bool DistinctOverKeys = false; bool EmitUnionMerge = false; TVector<size_t> ForAllStatementsParts; diff --git a/yql/essentials/sql/v1/lexer/check/check_lexers.cpp b/yql/essentials/sql/v1/lexer/check/check_lexers.cpp new file mode 100644 index 00000000000..d0cccefdc79 --- /dev/null +++ b/yql/essentials/sql/v1/lexer/check/check_lexers.cpp @@ -0,0 +1,82 @@ +#include "check_lexers.h" + + +#include <yql/essentials/sql/settings/translation_settings.h> +#include <yql/essentials/sql/v1/lexer/lexer.h> +#include <yql/essentials/sql/v1/lexer/antlr4/lexer.h> +#include <yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h> +#include <yql/essentials/sql/v1/lexer/antlr4_pure/lexer.h> +#include <yql/essentials/sql/v1/lexer/antlr4_pure_ansi/lexer.h> +#include <yql/essentials/sql/v1/lexer/regex/lexer.h> +#include <yql/essentials/sql/v1/proto_parser/antlr4/proto_parser.h> +#include <yql/essentials/sql/v1/proto_parser/antlr4_ansi/proto_parser.h> +#include <yql/essentials/core/issue/yql_issue.h> + +#include <util/string/builder.h> + +namespace NSQLTranslationV1 { + +bool CheckLexers(NYql::TPosition pos, const TString& query, NYql::TIssues& issues) { + NSQLTranslationV1::TLexers lexers; + NSQLTranslation::TTranslationSettings settings; + if (!NSQLTranslation::ParseTranslationSettings(query, settings, issues)) { + return false; + } + + lexers.Antlr4 = NSQLTranslationV1::MakeAntlr4LexerFactory(); + lexers.Antlr4Ansi = NSQLTranslationV1::MakeAntlr4AnsiLexerFactory(); + lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); + lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); + auto lexerMain = NSQLTranslationV1::MakeLexer(lexers, settings.AnsiLexer, true, NSQLTranslationV1::ELexerFlavor::Default); + auto lexerPure = NSQLTranslationV1::MakeLexer(lexers, settings.AnsiLexer, true, NSQLTranslationV1::ELexerFlavor::Pure); + auto lexerRegex = NSQLTranslationV1::MakeRegexLexerFactory(settings.AnsiLexer)->MakeLexer(); + TVector<NSQLTranslation::TParsedToken> mainTokens; + if (!lexerMain->Tokenize(query, "", [&](auto token) { mainTokens.push_back(token);}, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS)) { + return false; + } + + TVector<NSQLTranslation::TParsedToken> pureTokens; + if (!lexerPure->Tokenize(query, "", [&](auto token) { pureTokens.push_back(token);}, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS)) { + return false; + } + + TVector<NSQLTranslation::TParsedToken> regexTokens; + if (!lexerRegex->Tokenize(query, "", [&](auto token) { regexTokens.push_back(token);}, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS)) { + return false; + } + + bool hasErrors = false; + auto check = [&](const char* name, const TVector<NSQLTranslation::TParsedToken>& otherTokens) { + if (mainTokens.size() != otherTokens.size()) { + hasErrors = true; + issues.AddIssue(NYql::TIssue(pos, TStringBuilder () << "Mismatch token count, main: " << + mainTokens.size() << ", " << name << ": " << otherTokens.size() << "\n")); + } + + TStringBuilder textBuilder; + + for (size_t i = 0; i < Min(mainTokens.size(), otherTokens.size()); ++i) { + if (mainTokens[i].Name != otherTokens[i].Name || mainTokens[i].Content != otherTokens[i].Content) { + hasErrors = true; + TStringBuilder err; + err << "Mismatch token #" << i << ", main: " << mainTokens[i].Name << ":" << mainTokens[i].Content + << ", " << name << ": " << otherTokens[i].Name << ":" << otherTokens[i].Content << "\n"; + err << "Text sample: ["; + TString text = textBuilder; + constexpr size_t LexerContextSample = 50; + err << text.substr(text.size() >= LexerContextSample ? text.size() - LexerContextSample : 0u, LexerContextSample); + err << "]\n"; + issues.AddIssue(NYql::TIssue(pos, err)); + break; + } + + textBuilder << mainTokens[i].Content; + } + }; + + check("pure", pureTokens); + check("regex", regexTokens); + return !hasErrors; +} + +} diff --git a/yql/essentials/sql/v1/lexer/check/check_lexers.h b/yql/essentials/sql/v1/lexer/check/check_lexers.h new file mode 100644 index 00000000000..0fceaa2e0bd --- /dev/null +++ b/yql/essentials/sql/v1/lexer/check/check_lexers.h @@ -0,0 +1,9 @@ +#pragma once +#include <yql/essentials/core/issue/yql_issue.h> +#include <util/generic/string.h> + +namespace NSQLTranslationV1 { + +bool CheckLexers(NYql::TPosition pos, const TString& query, NYql::TIssues& issues); + +} diff --git a/yql/essentials/sql/v1/lexer/check/ya.make b/yql/essentials/sql/v1/lexer/check/ya.make new file mode 100644 index 00000000000..dc4ac21836d --- /dev/null +++ b/yql/essentials/sql/v1/lexer/check/ya.make @@ -0,0 +1,21 @@ +LIBRARY() + +SRCS( + check_lexers.h + check_lexers.cpp +) + +PEERDIR( + yql/essentials/core/issue + yql/essentials/sql/settings + yql/essentials/sql/v1/lexer + yql/essentials/sql/v1/lexer/antlr4 + yql/essentials/sql/v1/lexer/antlr4_ansi + yql/essentials/sql/v1/lexer/antlr4_pure + yql/essentials/sql/v1/lexer/antlr4_pure_ansi + yql/essentials/sql/v1/lexer/regex + yql/essentials/sql/v1/proto_parser/antlr4 + yql/essentials/sql/v1/proto_parser/antlr4_ansi +) + +END() diff --git a/yql/essentials/sql/v1/lexer/lexer_ut.cpp b/yql/essentials/sql/v1/lexer/lexer_ut.cpp index 549dc9d8fa9..c59089efd63 100644 --- a/yql/essentials/sql/v1/lexer/lexer_ut.cpp +++ b/yql/essentials/sql/v1/lexer/lexer_ut.cpp @@ -28,7 +28,7 @@ using namespace NSQLTranslationV1; TLexers Lexers = { .Antlr3 = MakeAntlr3LexerFactory(), - .Antlr3Ansi = MakeAntlr4AnsiLexerFactory(), + .Antlr3Ansi = MakeAntlr3AnsiLexerFactory(), .Antlr4 = MakeAntlr4LexerFactory(), .Antlr4Ansi = MakeAntlr4AnsiLexerFactory(), .Antlr4Pure = MakeAntlr4PureLexerFactory(), @@ -307,6 +307,20 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { UNIT_ASSERT_TOKENIZED(lexer, "INSERT", "INSERT EOF"); UNIT_ASSERT_TOKENIZED(lexer, "FROM", "FROM EOF"); UNIT_ASSERT_TOKENIZED(lexer, "from", "FROM(from) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, " UPSERT ", "WS( ) UPSERT WS( ) EOF"); + } + + Y_UNIT_TEST_ON_EACH_LEXER(KeywordSkip) { + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + if (ANTLR4 || FLAVOR == ELexerFlavor::Regex) { + UNIT_ASSERT_TOKENIZED(lexer, "sKip", "TSKIP(sKip) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "SKIP", "TSKIP(SKIP) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, " SKIP ", "WS( ) TSKIP(SKIP) WS( ) EOF"); + } else { + UNIT_ASSERT_TOKENIZED(lexer, "sKip", "SKIP(sKip) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "SKIP", "SKIP EOF"); + UNIT_ASSERT_TOKENIZED(lexer, " SKIP ", "WS( ) SKIP WS( ) EOF"); + } } Y_UNIT_TEST_ON_EACH_LEXER(Punctuation) { @@ -337,6 +351,7 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { UNIT_ASSERT_TOKENIZED(lexer, "123", "DIGITS(123) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "123u", "INTEGER_VALUE(123u) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "123ui", "INTEGER_VALUE(123ui) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "0xDEADbeef", "DIGITS(0xDEADbeef) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "123.45", "REAL(123.45) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "123.45E10", "REAL(123.45E10) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "123.45E+10", "REAL(123.45E+10) EOF"); @@ -353,7 +368,7 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { if (!ANSI) { UNIT_ASSERT_TOKENIZED(lexer, "\"\\\"\"", "STRING_VALUE(\"\\\"\") EOF"); UNIT_ASSERT_TOKENIZED(lexer, "\"\"\"\"", "STRING_VALUE(\"\") STRING_VALUE(\"\") EOF"); - } else { + } else if (ANTLR4 || FLAVOR == ELexerFlavor::Regex) { UNIT_ASSERT_TOKENIZED(lexer, "\"\\\"\"", "[INVALID] STRING_VALUE(\"\\\") EOF"); UNIT_ASSERT_TOKENIZED(lexer, "\"\"\"\"", "STRING_VALUE(\"\"\"\") EOF"); } @@ -365,6 +380,7 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { UNIT_ASSERT_TOKENIZED(lexer, "@@ @@@", "STRING_VALUE(@@ @@@) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "@@test@@", "STRING_VALUE(@@test@@) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "@@line1\nline2@@", "STRING_VALUE(@@line1\nline2@@) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "@@@@ @@A@@ @@@A@@", "STRING_VALUE(@@@@) WS( ) STRING_VALUE(@@A@@) WS( ) STRING_VALUE(@@@A@@) EOF"); } Y_UNIT_TEST_ON_EACH_LEXER(SingleLineComment) { @@ -387,7 +403,7 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { if (!ANSI) { UNIT_ASSERT_TOKENIZED(lexer, "/* /* yql */", "COMMENT(/* /* yql */) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "/* /* yql */ */", "COMMENT(/* /* yql */) WS( ) ASTERISK(*) SLASH(/) EOF"); - } else { + } else if (ANTLR4 || FLAVOR == ELexerFlavor::Regex) { UNIT_ASSERT_TOKENIZED(lexer, "/* /* yql */", "COMMENT(/* /* yql */) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "/* yql */ */", "COMMENT(/* yql */) WS( ) ASTERISK(*) SLASH(/) EOF"); UNIT_ASSERT_TOKENIZED(lexer, "/* /* /* yql */ */", "COMMENT(/* /* /* yql */ */) EOF"); @@ -408,8 +424,8 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { auto reference = MakeLexer(Lexers, ANSI, /* antlr4 = */ true, ELexerFlavor::Pure); SetRandomSeed(100); - for (size_t i = 0; i < 512; ++i) { - auto input = RandomMultilineCommentLikeText(/* maxSize = */ 32); + for (size_t i = 0; i < 128; ++i) { + auto input = RandomMultilineCommentLikeText(/* maxSize = */ 16); TString actual = Tokenized(lexer, input); TString expected = Tokenized(reference, input); @@ -453,4 +469,58 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { UNIT_ASSERT_TOKENIZED(lexer, query, expected); } + Y_UNIT_TEST_ON_EACH_LEXER(Examples) { + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + UNIT_ASSERT_TOKENIZED( + lexer, + R"( +SELECT + YQL::@@(Uint32 '100500)@@, + YQL::@@(String '[WAT])@@ +;)", + "WS(\n) " + "SELECT WS(\n) WS( ) ID_PLAIN(YQL) NAMESPACE(::) STRING_VALUE(@@(Uint32 '100500)@@) COMMA(,) WS(\n) " + "WS( ) ID_PLAIN(YQL) NAMESPACE(::) STRING_VALUE(@@(String '[WAT])@@) WS(\n) " + "SEMICOLON(;) EOF"); + } + + Y_UNIT_TEST_ON_EACH_LEXER(AsciiEscape) { + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + UNIT_ASSERT_TOKENIZED(lexer, "\0", "EOF"); // Null character + UNIT_ASSERT_TOKENIZED(lexer, "\t", "WS(\t) EOF"); // Horizontal Tab + UNIT_ASSERT_TOKENIZED(lexer, "\n", "WS(\n) EOF"); // Line Feed + UNIT_ASSERT_TOKENIZED(lexer, "\v", "[INVALID] EOF"); // Vertical Tabulation + UNIT_ASSERT_TOKENIZED(lexer, "\f", "WS(\x0C) EOF"); // Form Feed + UNIT_ASSERT_TOKENIZED(lexer, "\r", "WS(\r) EOF"); // Carriage Return + UNIT_ASSERT_TOKENIZED(lexer, "\r\n", "WS(\r) WS(\n) EOF"); + } + + Y_UNIT_TEST_ON_EACH_LEXER(AsciiEscapeCanon) { + static THashMap<char, TString> canon; + + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + + for (char c = 0; c < std::numeric_limits<char>::max(); ++c) { + TString input; + input += c; + + TString& expected = canon[c]; + if (expected.empty()) { + expected = Tokenized(lexer, input); + } + + UNIT_ASSERT_TOKENIZED(lexer, input, expected); + } + } + + Y_UNIT_TEST_ON_EACH_LEXER(Utf8BOM) { + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + if (ANTLR4 || FLAVOR == ELexerFlavor::Regex) { + UNIT_ASSERT_TOKENIZED(lexer, "\xEF\xBB\xBF 1", "WS( ) DIGITS(1) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "\xEF\xBB\xBF \xEF\xBB\xBF", "[INVALID] WS( ) EOF"); + } else { + UNIT_ASSERT_TOKENIZED(lexer, "\xEF\xBB\xBF 1", "[INVALID] WS( ) DIGITS(1) EOF"); + } + } + } // Y_UNIT_TEST_SUITE(SQLv1Lexer) diff --git a/yql/essentials/sql/v1/lexer/regex/lexer.cpp b/yql/essentials/sql/v1/lexer/regex/lexer.cpp index b8ca033b0c6..a1d96253bf7 100644 --- a/yql/essentials/sql/v1/lexer/regex/lexer.cpp +++ b/yql/essentials/sql/v1/lexer/regex/lexer.cpp @@ -19,6 +19,9 @@ namespace NSQLTranslationV1 { class TRegexLexer: public NSQLTranslation::ILexer { static constexpr const char* CommentTokenName = "COMMENT"; + static constexpr const char* StringValueName = "STRING_VALUE"; + + static constexpr const TStringBuf Utf8BOM = "\xEF\xBB\xBF"; public: TRegexLexer( @@ -29,10 +32,16 @@ namespace NSQLTranslationV1 { , Ansi_(ansi) { for (const auto& [token, regex] : RegexByOtherName) { + RE2::Options custom; + if (token != CommentTokenName && token != StringValueName) { + custom.set_longest_match(true); + } + + RE2* re2 = new RE2(regex, custom); if (token == CommentTokenName) { - CommentRegex_.Reset(new RE2(regex)); + CommentRegex_.Reset(re2); } else { - OtherRegexes_.emplace_back(token, new RE2(regex)); + OtherRegexes_.emplace_back(token, re2); } } } @@ -44,7 +53,13 @@ namespace NSQLTranslationV1 { NYql::TIssues& issues, size_t maxErrors) override { size_t errors = 0; - for (size_t pos = 0; pos < query.size();) { + + size_t pos = 0; + if (query.StartsWith(Utf8BOM)) { + pos += Utf8BOM.size(); + } + + while (pos < query.size()) { TParsedToken matched = Match(TStringBuf(query, pos)); if (matched.Name.empty() && maxErrors == errors) { @@ -62,7 +77,7 @@ namespace NSQLTranslationV1 { onNextToken(std::move(matched)); } - onNextToken(TParsedToken{.Name = "EOF"}); + onNextToken(TParsedToken{.Name = "EOF", .Content = "<EOF>"}); return errors == 0; } @@ -109,8 +124,9 @@ namespace NSQLTranslationV1 { bool MatchKeyword(const TStringBuf prefix, TParsedTokenList& matches) { size_t count = 0; for (const auto& keyword : Grammar_.KeywordNames) { - const TStringBuf content = prefix.substr(0, keyword.length()); - if (AsciiEqualsIgnoreCase(content, keyword)) { + const TStringBuf block = NSQLReflect::TLexerGrammar::KeywordBlock(keyword); + const TStringBuf content = prefix.substr(0, block.length()); + if (AsciiEqualsIgnoreCase(content, block)) { matches.emplace_back(keyword, TString(content)); count += 1; } diff --git a/yql/essentials/sql/v1/lexer/regex/lexer_ut.cpp b/yql/essentials/sql/v1/lexer/regex/lexer_ut.cpp index 03c84bcffe3..6ac25008b34 100644 --- a/yql/essentials/sql/v1/lexer/regex/lexer_ut.cpp +++ b/yql/essentials/sql/v1/lexer/regex/lexer_ut.cpp @@ -216,4 +216,4 @@ Y_UNIT_TEST_SUITE(RegexLexerTests) { Check("\" SELECT", "[INVALID] WS( ) SELECT EOF"); } -} // Y_UNIT_TEST_SUITE(RegexLexerTests)
\ No newline at end of file +} // Y_UNIT_TEST_SUITE(RegexLexerTests) diff --git a/yql/essentials/sql/v1/lexer/regex/regex.cpp b/yql/essentials/sql/v1/lexer/regex/regex.cpp index 937d21572fc..e634ff009a7 100644 --- a/yql/essentials/sql/v1/lexer/regex/regex.cpp +++ b/yql/essentials/sql/v1/lexer/regex/regex.cpp @@ -135,7 +135,7 @@ namespace NSQLTranslationV1 { R"(\bEOF\b)", R"($)")); rules.emplace_back(RegexRewriteRule( - R"('\\u000C' \|)", "")); + R"('\\u000C' \|)", R"('\\f' |)")); } void Finalize(TString& text) { diff --git a/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp b/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp index dad0b2ebd2d..e62bb0e609f 100644 --- a/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp +++ b/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp @@ -76,7 +76,7 @@ Y_UNIT_TEST_SUITE(SqlRegexTests) { CheckRegex( /* ansi = */ false, "WS", - R"(( |\r|\t|\n))"); + R"(( |\r|\t|\f|\n))"); } Y_UNIT_TEST(Comment) { @@ -93,4 +93,4 @@ Y_UNIT_TEST_SUITE(SqlRegexTests) { Get(defaultRegexes, "COMMENT")); } -} // Y_UNIT_TEST_SUITE(SqlRegexTests)
\ No newline at end of file +} // Y_UNIT_TEST_SUITE(SqlRegexTests) diff --git a/yql/essentials/sql/v1/lexer/ya.make b/yql/essentials/sql/v1/lexer/ya.make index 66c0c87f15f..6462ced1991 100644 --- a/yql/essentials/sql/v1/lexer/ya.make +++ b/yql/essentials/sql/v1/lexer/ya.make @@ -22,6 +22,7 @@ RECURSE( antlr4_ansi antlr4_pure antlr4_pure_ansi + check regex ) diff --git a/yql/essentials/sql/v1/reflect/sql_reflect.cpp b/yql/essentials/sql/v1/reflect/sql_reflect.cpp index c0af06e0b46..262209cfc39 100644 --- a/yql/essentials/sql/v1/reflect/sql_reflect.cpp +++ b/yql/essentials/sql/v1/reflect/sql_reflect.cpp @@ -15,6 +15,13 @@ namespace NSQLReflect { const TStringBuf SectionOther = "//! section:other"; const TStringBuf FragmentPrefix = "fragment "; + const TStringBuf TLexerGrammar::KeywordBlock(const TStringBuf name) { + if (name == "TSKIP") { + return "SKIP"; + } + return name; + } + TVector<TString> GetResourceLines(const TStringBuf key) { TString text; Y_ENSURE(NResource::FindExact(key, &text)); @@ -126,7 +133,7 @@ namespace NSQLReflect { SubstGlobal(block, "'", ""); SubstGlobal(block, " ", ""); - Y_ENSURE(name == block || (name == "TSKIP" && block == "SKIP")); + Y_ENSURE(name == block || (name == "TSKIP" && block == TLexerGrammar::KeywordBlock("TSKIP"))); grammar.KeywordNames.emplace(std::move(name)); } diff --git a/yql/essentials/sql/v1/reflect/sql_reflect.h b/yql/essentials/sql/v1/reflect/sql_reflect.h index ca398706873..1f67a2f93a3 100644 --- a/yql/essentials/sql/v1/reflect/sql_reflect.h +++ b/yql/essentials/sql/v1/reflect/sql_reflect.h @@ -12,6 +12,8 @@ namespace NSQLReflect { THashSet<TString> PunctuationNames; TVector<TString> OtherNames; THashMap<TString, TString> BlockByName; + + static const TStringBuf KeywordBlock(const TStringBuf name); }; TLexerGrammar LoadLexerGrammar(); diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp index a860571698b..b60a338d02f 100644 --- a/yql/essentials/sql/v1/sql_query.cpp +++ b/yql/essentials/sql/v1/sql_query.cpp @@ -3387,6 +3387,12 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success } else if (normalizedPragma == "disableemitunionmerge") { Ctx.EmitUnionMerge = false; Ctx.IncrementMonCounter("sql_pragma", "DisableEmitUnionMerge"); + } else if (normalizedPragma == "distinctoverkeys") { + Ctx.DistinctOverKeys = true; + Ctx.IncrementMonCounter("sql_pragma", "DistinctOverKeys"); + } else if (normalizedPragma == "disabledistinctoverkeys") { + Ctx.DistinctOverKeys = false; + Ctx.IncrementMonCounter("sql_pragma", "DisableDistinctOverKeys"); } else if (normalizedPragma == "engine") { Ctx.IncrementMonCounter("sql_pragma", "Engine"); diff --git a/yql/essentials/tests/s-expressions/minirun/part0/canondata/result.json b/yql/essentials/tests/s-expressions/minirun/part0/canondata/result.json index 0a80f2cd10c..5902893a5ac 100644 --- a/yql/essentials/tests/s-expressions/minirun/part0/canondata/result.json +++ b/yql/essentials/tests/s-expressions/minirun/part0/canondata/result.json @@ -13,6 +13,20 @@ "uri": "https://{canondata_backend}/1942671/fe442fb9178873beea37ece387e67a5d541a25b2/resource.tar.gz#test.test_Aggregation-AggrCount-default.txt-Results_/results.txt" } ], + "test.test[Blocks-WideToBlocks-WideFromBlocks-default.txt-Debug]": [ + { + "checksum": "7838538438ce14638ded18f1defb2380", + "size": 627, + "uri": "https://{canondata_backend}/1925842/3d4a337c6b21036cefb828b5de69295a7ec717f6/resource.tar.gz#test.test_Blocks-WideToBlocks-WideFromBlocks-default.txt-Debug_/opt.yql" + } + ], + "test.test[Blocks-WideToBlocks-WideFromBlocks-default.txt-Results]": [ + { + "checksum": "f98666abfa816dc9b28ac6c28c9b5e7c", + "size": 1257, + "uri": "https://{canondata_backend}/1925842/3d4a337c6b21036cefb828b5de69295a7ec717f6/resource.tar.gz#test.test_Blocks-WideToBlocks-WideFromBlocks-default.txt-Results_/results.txt" + } + ], "test.test[Builtins-ByteString-default.txt-Debug]": [ { "checksum": "056b689b9c8cf44642288e79f8cd0185", diff --git a/yql/essentials/tests/s-expressions/minirun/part7/canondata/result.json b/yql/essentials/tests/s-expressions/minirun/part7/canondata/result.json index 9da54766c1d..f9029941a62 100644 --- a/yql/essentials/tests/s-expressions/minirun/part7/canondata/result.json +++ b/yql/essentials/tests/s-expressions/minirun/part7/canondata/result.json @@ -1,9 +1,9 @@ { "test.test[Blocks-BlockMapJoinCore-default.txt-Debug]": [ { - "checksum": "445a5d7f7918455fc74eefafa41b519d", - "size": 2187, - "uri": "https://{canondata_backend}/1871182/dd0654c5ee04d3c397f5f6c37ba02b2ae503ed1f/resource.tar.gz#test.test_Blocks-BlockMapJoinCore-default.txt-Debug_/opt.yql" + "checksum": "b4e62992f4922bfdc10db8ffd370cfbe", + "size": 1952, + "uri": "https://{canondata_backend}/1031349/b655b23222eeb79fdf6d4802458aa188f67c1db4/resource.tar.gz#test.test_Blocks-BlockMapJoinCore-default.txt-Debug_/opt.yql" } ], "test.test[Blocks-BlockMapJoinCore-default.txt-Results]": [ diff --git a/yql/essentials/tests/s-expressions/minirun/part8/canondata/result.json b/yql/essentials/tests/s-expressions/minirun/part8/canondata/result.json index 2e739109485..3d8ae83f3b5 100644 --- a/yql/essentials/tests/s-expressions/minirun/part8/canondata/result.json +++ b/yql/essentials/tests/s-expressions/minirun/part8/canondata/result.json @@ -55,6 +55,20 @@ "uri": "https://{canondata_backend}/1937429/6dc717bd36879ce84e2fa1eb85b97eefce0733e9/resource.tar.gz#test.test_Blocks-ListFromBlocks-default.txt-Results_/results.txt" } ], + "test.test[Blocks-WideFromBlocks-WideToBlocks-default.txt-Debug]": [ + { + "checksum": "d6c0024db8898aef8f8b31b1025667cc", + "size": 483, + "uri": "https://{canondata_backend}/1925842/70c39ce7d6aa898d26d58abf8d512eebac34de7f/resource.tar.gz#test.test_Blocks-WideFromBlocks-WideToBlocks-default.txt-Debug_/opt.yql" + } + ], + "test.test[Blocks-WideFromBlocks-WideToBlocks-default.txt-Results]": [ + { + "checksum": "3326d454244059e96a0b61b3fdf53480", + "size": 878, + "uri": "https://{canondata_backend}/1925842/70c39ce7d6aa898d26d58abf8d512eebac34de7f/resource.tar.gz#test.test_Blocks-WideFromBlocks-WideToBlocks-default.txt-Results_/results.txt" + } + ], "test.test[Builtins-ToIntegral-default.txt-Debug]": [ { "checksum": "33f569baf5940bbd79fbf635f47cc363", diff --git a/yql/essentials/tests/s-expressions/minirun/pure.make b/yql/essentials/tests/s-expressions/minirun/pure.make index 72d38121773..64002f529d1 100644 --- a/yql/essentials/tests/s-expressions/minirun/pure.make +++ b/yql/essentials/tests/s-expressions/minirun/pure.make @@ -13,7 +13,11 @@ ENDIF() IF (SANITIZER_TYPE OR WITH_VALGRIND) TIMEOUT(1800) SIZE(LARGE) - TAG(ya:fat sb:ttl=2) + TAG( + ya:fat + sb:ttl=2 + ya:large_tests_on_multi_slots + ) ELSE() TIMEOUT(600) SIZE(MEDIUM) diff --git a/yql/essentials/tests/s-expressions/suites/Blocks/BlockMapJoinCore.yqls b/yql/essentials/tests/s-expressions/suites/Blocks/BlockMapJoinCore.yqls index 35154e67ac2..7ace8d9e550 100644 --- a/yql/essentials/tests/s-expressions/suites/Blocks/BlockMapJoinCore.yqls +++ b/yql/essentials/tests/s-expressions/suites/Blocks/BlockMapJoinCore.yqls @@ -16,15 +16,15 @@ (let doJoin (lambda '(left right narrowMapLambda joinKind leftKeyColumns leftKeyDrops rightKeyColumns rightKeyDrops) (block '( (let leftStream (WideToBlocks (FromFlow (ExpandMap left expandLambda)))) - (let rightStream (WideToBlocks (FromFlow (ExpandMap right expandLambda)))) - (let rightStreamItemType (StreamItemType (TypeOf rightStream))) - (let rightBlockIndex (BlockMapJoinIndex (BlockStorage rightStream) rightStreamItemType rightKeyColumns '())) - (return (Collect (NarrowMap (ToFlow (WideFromBlocks (BlockMapJoinCore leftStream rightBlockIndex rightStreamItemType joinKind leftKeyColumns leftKeyDrops rightKeyColumns rightKeyDrops))) narrowMapLambda))) + (let rightList (ListToBlocks right)) + (let rightListItemType (ListItemType (TypeOf rightList))) + (let rightBlockIndex (BlockMapJoinIndex (BlockStorage rightList) rightListItemType rightKeyColumns '())) + (return (ForwardList (NarrowMap (ToFlow (WideFromBlocks (BlockMapJoinCore leftStream rightBlockIndex rightListItemType joinKind leftKeyColumns leftKeyDrops rightKeyColumns rightKeyDrops))) narrowMapLambda))) )))) -(let innerJoin (Apply doJoin (ToFlow table (DependsOn (String '0))) (ToFlow table (DependsOn (String '1))) narrowLambdaInner 'Inner '('0) '() '('0) '())) -(let leftJoin (Apply doJoin (ToFlow table (DependsOn (String '2))) (ToFlow table (DependsOn (String '3))) narrowLambdaLeft 'Left '('0) '('0) '('0) '('0))) -(let leftSemiJoin (Apply doJoin (ToFlow table (DependsOn (String '4))) (ToFlow table (DependsOn (String '5))) narrowLambdaLeftSemi 'LeftSemi '('0) '('0) '('0) '())) +(let innerJoin (Apply doJoin (ToFlow table (DependsOn (String '0))) table narrowLambdaInner 'Inner '('0) '() '('"key") '())) +(let leftJoin (Apply doJoin (ToFlow table (DependsOn (String '2))) table narrowLambdaLeft 'Left '('0) '('0) '('"key") '('"key"))) +(let leftSemiJoin (Apply doJoin (ToFlow table (DependsOn (String '4))) table narrowLambdaLeftSemi 'LeftSemi '('0) '('0) '('"key") '())) (let world (Write! world res_sink (Key) (AsStruct '('"inner" innerJoin) '('"left" leftJoin) '('"leftSemi" leftSemiJoin)) '('('type)))) (let world (Commit! world res_sink)) diff --git a/yql/essentials/tests/s-expressions/suites/Blocks/WideFromBlocks-WideToBlocks.yqls b/yql/essentials/tests/s-expressions/suites/Blocks/WideFromBlocks-WideToBlocks.yqls new file mode 100644 index 00000000000..cd1a5d60d23 --- /dev/null +++ b/yql/essentials/tests/s-expressions/suites/Blocks/WideFromBlocks-WideToBlocks.yqls @@ -0,0 +1,24 @@ +( +# XXX: Explicitly enable PeepHoleBlock and PeepHoleFinalBlock steps. +(let world (Configure! world (DataSource 'config) 'BlockEngine 'force)) +(let wconf (DataSink 'result)) + +(let x1 (AsStruct '('"x" (Int32 '"1")))) +(let x2 (AsStruct '('"x" (Int32 '"2")))) +(let x3 (AsStruct '('"x" (Int32 '"3")))) +(let x4 (AsStruct '('"x" (Int32 '"4")))) + +(let list (AsList x1 x2 x3 x4)) + +(let expandLambda (lambda '(item) (Member item '"x"))) +(let wideStream (FromFlow (ExpandMap (ToFlow list) expandLambda))) + +(let nopFromBlocksToBlocks (WideFromBlocks (WideToBlocks wideStream))) + +(let narrowLambda (lambda '(x) (AsStruct '('"x" x)))) +(let scalarList (ForwardList (NarrowMap (ToFlow nopFromBlocksToBlocks) narrowLambda))) + +(let world (Write! world wconf (Key) scalarList '('('type)))) +(let world (Commit! world wconf)) +(return world) +) diff --git a/yql/essentials/tests/s-expressions/suites/Blocks/WideToBlocks-WideFromBlocks.yqls b/yql/essentials/tests/s-expressions/suites/Blocks/WideToBlocks-WideFromBlocks.yqls new file mode 100644 index 00000000000..cafd0f45a81 --- /dev/null +++ b/yql/essentials/tests/s-expressions/suites/Blocks/WideToBlocks-WideFromBlocks.yqls @@ -0,0 +1,25 @@ +( +# XXX: Explicitly enable PeepHoleBlock and PeepHoleFinalBlock steps. +(let world (Configure! world (DataSource 'config) 'BlockEngine 'force)) +(let wconf (DataSink 'result)) + +(let x1 (AsStruct '('"x" (Int32 '"1")))) +(let x2 (AsStruct '('"x" (Int32 '"2")))) +(let x3 (AsStruct '('"x" (Int32 '"3")))) +(let x4 (AsStruct '('"x" (Int32 '"4")))) +(let scalar0 (AsScalar (Int32 '"0"))) + +(let blockList (ListToBlocks (AsList x1 x2 x3 x4))) + +(let expandLambda (lambda '(item) (Member item '"x") scalar0 (Member item '"_yql_block_length"))) +(let wideBlocksStream (FromFlow (ExpandMap (ToFlow blockList) expandLambda))) + +(let nopToBlocksFromBlocks (WideToBlocks (WideFromBlocks wideBlocksStream))) + +(let narrowLambda (lambda '(x scalar blockLength) (AsStruct '('"x" x) '('"scalar" scalar) '('"_yql_block_length" blockLength)))) +(let scalarList (ListFromBlocks (ForwardList (NarrowMap (ToFlow nopToBlocksFromBlocks) narrowLambda)))) + +(let world (Write! world wconf (Key) scalarList '('('type)))) +(let world (Commit! world wconf)) +(return world) +) diff --git a/yql/essentials/tests/sql/minirun/part0/canondata/result.json b/yql/essentials/tests/sql/minirun/part0/canondata/result.json index 1ff158d38e3..52d9fa7481b 100644 --- a/yql/essentials/tests/sql/minirun/part0/canondata/result.json +++ b/yql/essentials/tests/sql/minirun/part0/canondata/result.json @@ -1477,5 +1477,19 @@ "size": 1452, "uri": "https://{canondata_backend}/1777230/9825a8684763af6f5aebf2f2145914be57ea6969/resource.tar.gz#test.test_window-yql-14179-default.txt-Results_/results.txt" } + ], + "test.test[window-yql-19801-default.txt-Debug]": [ + { + "checksum": "411035e2598db68705427ac77743c32a", + "size": 1396, + "uri": "https://{canondata_backend}/1920236/7066f75808999d7c9bd16ab40270eb0f41ecd22c/resource.tar.gz#test.test_window-yql-19801-default.txt-Debug_/opt.yql" + } + ], + "test.test[window-yql-19801-default.txt-Results]": [ + { + "checksum": "83fd4e361203ed32edf38dbc8ea21995", + "size": 3559, + "uri": "https://{canondata_backend}/1920236/7066f75808999d7c9bd16ab40270eb0f41ecd22c/resource.tar.gz#test.test_window-yql-19801-default.txt-Results_/results.txt" + } ] } diff --git a/yql/essentials/tests/sql/minirun/part6/canondata/result.json b/yql/essentials/tests/sql/minirun/part6/canondata/result.json index dc02c1edb0c..26ca736cfcf 100644 --- a/yql/essentials/tests/sql/minirun/part6/canondata/result.json +++ b/yql/essentials/tests/sql/minirun/part6/canondata/result.json @@ -181,6 +181,20 @@ "uri": "https://{canondata_backend}/1775319/518b63edef9310755d69d072503bf9cdd808485f/resource.tar.gz#test.test_aggr_factory-flatten--Results_/results.txt" } ], + "test.test[aggregate-distinct_over_keys-default.txt-Debug]": [ + { + "checksum": "1516e40d1a52326748a51997ca9d12cc", + "size": 581, + "uri": "https://{canondata_backend}/1936273/614fe8dff439fd011c07c47361f2a1d0d854297f/resource.tar.gz#test.test_aggregate-distinct_over_keys-default.txt-Debug_/opt.yql" + } + ], + "test.test[aggregate-distinct_over_keys-default.txt-Results]": [ + { + "checksum": "ea21211faeda4acfea29190f37b50995", + "size": 979, + "uri": "https://{canondata_backend}/1936273/614fe8dff439fd011c07c47361f2a1d0d854297f/resource.tar.gz#test.test_aggregate-distinct_over_keys-default.txt-Results_/results.txt" + } + ], "test.test[ansi_idents-escaping-default.txt-Debug]": [ { "checksum": "13dd30dd58fd993aa21441bec427f12b", diff --git a/yql/essentials/tests/sql/sql2yql/canondata/result.json b/yql/essentials/tests/sql/sql2yql/canondata/result.json index bd605930b7f..4cb7e6cc7af 100644 --- a/yql/essentials/tests/sql/sql2yql/canondata/result.json +++ b/yql/essentials/tests/sql/sql2yql/canondata/result.json @@ -930,6 +930,13 @@ "uri": "https://{canondata_backend}/1942173/99e88108149e222741552e7e6cddef041d6a2846/resource.tar.gz#test_sql2yql.test_aggregate-aggregate_inmem_list_in_key_/sql.yql" } ], + "test_sql2yql.test[aggregate-distinct_over_keys]": [ + { + "checksum": "42a928ce273f847de20ea4cd8b59cb1c", + "size": 1487, + "uri": "https://{canondata_backend}/1936273/e22f8123b51c2802f50d5a8d4626267f2f28e9ab/resource.tar.gz#test_sql2yql.test_aggregate-distinct_over_keys_/sql.yql" + } + ], "test_sql2yql.test[aggregate-group_by_rollup_rename]": [ { "checksum": "bc5b27508587d82ba3e9d0a752d25dcc", @@ -7202,6 +7209,13 @@ "uri": "https://{canondata_backend}/1775319/f1fa0c55bf9f13cff57cf1c990c2330caed8eb1b/resource.tar.gz#test_sql2yql.test_udf-wrong_args_fail_/sql.yql" } ], + "test_sql2yql.test[union-unhashed_column]": [ + { + "checksum": "7518a24843443901f9727c734bb16e91", + "size": 1407, + "uri": "https://{canondata_backend}/1936273/63195eda4f72befa869aaf8010fe57be8318f0a0/resource.tar.gz#test_sql2yql.test_union-unhashed_column_/sql.yql" + } + ], "test_sql2yql.test[union-union_column_extention]": [ { "checksum": "75294382d48ff3801b42ef1c8bb26dbd", @@ -7412,6 +7426,13 @@ "uri": "https://{canondata_backend}/1847551/ee61b63f66a264ad4afe7437ef7f90941caf4456/resource.tar.gz#test_sql2yql.test_window-yql-19709_/sql.yql" } ], + "test_sql2yql.test[window-yql-19801]": [ + { + "checksum": "35e09384575075270c999c01e90779ac", + "size": 2644, + "uri": "https://{canondata_backend}/1130705/f4f303dd683b2715fca90fc1337a2858da6e1467/resource.tar.gz#test_sql2yql.test_window-yql-19801_/sql.yql" + } + ], "test_sql_format.test[action-action_opt_args]": [ { "uri": "file://test_sql_format.test_action-action_opt_args_/formatted.sql" @@ -8077,6 +8098,11 @@ "uri": "file://test_sql_format.test_aggregate-aggregate_inmem_list_in_key_/formatted.sql" } ], + "test_sql_format.test[aggregate-distinct_over_keys]": [ + { + "uri": "file://test_sql_format.test_aggregate-distinct_over_keys_/formatted.sql" + } + ], "test_sql_format.test[aggregate-group_by_rollup_rename]": [ { "uri": "file://test_sql_format.test_aggregate-group_by_rollup_rename_/formatted.sql" @@ -11102,6 +11128,11 @@ "uri": "file://test_sql_format.test_udf-wrong_args_fail_/formatted.sql" } ], + "test_sql_format.test[union-unhashed_column]": [ + { + "uri": "file://test_sql_format.test_union-unhashed_column_/formatted.sql" + } + ], "test_sql_format.test[union-union_column_extention]": [ { "uri": "file://test_sql_format.test_union-union_column_extention_/formatted.sql" @@ -11252,6 +11283,11 @@ "uri": "file://test_sql_format.test_window-yql-19709_/formatted.sql" } ], + "test_sql_format.test[window-yql-19801]": [ + { + "uri": "file://test_sql_format.test_window-yql-19801_/formatted.sql" + } + ], "test_sql_negative.test[action-no_columns_in_do-default.txt]": [ { "checksum": "0fad6da8e4c5a2ab2c1e5a231ea430d1", diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_aggregate-distinct_over_keys_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_aggregate-distinct_over_keys_/formatted.sql new file mode 100644 index 00000000000..8959cc5de96 --- /dev/null +++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_aggregate-distinct_over_keys_/formatted.sql @@ -0,0 +1,15 @@ +PRAGMA DistinctOverKeys; + +SELECT + x, + count(DISTINCT x) AS cnt +FROM ( + VALUES + (1), + (1) +) AS a ( + x +) +GROUP BY + x +; diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_union-unhashed_column_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_union-unhashed_column_/formatted.sql new file mode 100644 index 00000000000..a900f6eb987 --- /dev/null +++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_union-unhashed_column_/formatted.sql @@ -0,0 +1,7 @@ +/* custom error: Expected hashable and equatable type for column: x, but got: Yson */ +SELECT + "1"y AS x +UNION +SELECT + "2"y AS x +; diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_window-yql-19801_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_window-yql-19801_/formatted.sql new file mode 100644 index 00000000000..e4bbbc38c8c --- /dev/null +++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_window-yql-19801_/formatted.sql @@ -0,0 +1,19 @@ +/* syntax version 1 */ +/* postgres can not */ +PRAGMA DistinctOverWindow; + +$input = AsList( + AsStruct(1 AS key, 1001 AS subkey, 'AAA' AS value), + AsStruct(150 AS key, 150 AS subkey, 'AAB' AS value), + AsStruct(3 AS key, 3003 AS subkey, 'AAC' AS value), + AsStruct(150 AS key, 150 AS subkey, 'AAD' AS value), + AsStruct(5 AS key, 5005 AS subkey, 'AAE' AS value), +); + +SELECT + i.*, + count(DISTINCT key) OVER () AS cnt, + AggregateList(DISTINCT key) OVER () AS agg_list, +FROM + AS_TABLE($input) AS i +; diff --git a/yql/essentials/tests/sql/suites/aggregate/distinct_over_keys.sql b/yql/essentials/tests/sql/suites/aggregate/distinct_over_keys.sql new file mode 100644 index 00000000000..c74e5e2f3c3 --- /dev/null +++ b/yql/essentials/tests/sql/suites/aggregate/distinct_over_keys.sql @@ -0,0 +1,4 @@ +pragma DistinctOverKeys; +SELECT x, count(distinct x) AS cnt +FROM (values (1),(1)) as a(x) GROUP BY x + diff --git a/yql/essentials/tests/sql/suites/union/unhashed_column.cfg b/yql/essentials/tests/sql/suites/union/unhashed_column.cfg new file mode 100644 index 00000000000..5dae597903c --- /dev/null +++ b/yql/essentials/tests/sql/suites/union/unhashed_column.cfg @@ -0,0 +1 @@ +xfail diff --git a/yql/essentials/tests/sql/suites/union/unhashed_column.sql b/yql/essentials/tests/sql/suites/union/unhashed_column.sql new file mode 100644 index 00000000000..400e8ac84cf --- /dev/null +++ b/yql/essentials/tests/sql/suites/union/unhashed_column.sql @@ -0,0 +1,5 @@ +/* custom error: Expected hashable and equatable type for column: x, but got: Yson */ +select "1"y as x +union +select "2"y as x + diff --git a/yql/essentials/tests/sql/suites/window/yql-19801.sql b/yql/essentials/tests/sql/suites/window/yql-19801.sql new file mode 100644 index 00000000000..478c261c984 --- /dev/null +++ b/yql/essentials/tests/sql/suites/window/yql-19801.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +/* postgres can not */ + +PRAGMA DistinctOverWindow; + +$input = AsList( + AsStruct(1 AS key, 1001 AS subkey, "AAA" AS value), + AsStruct(150 AS key, 150 AS subkey, "AAB" AS value), + AsStruct(3 AS key, 3003 AS subkey, "AAC" AS value), + AsStruct(150 AS key, 150 AS subkey, "AAD" AS value), + AsStruct(5 AS key, 5005 AS subkey, "AAE" AS value), +); + +SELECT + i.*, + count(DISTINCT key) OVER () AS cnt, + AggregateList(DISTINCT key) OVER () AS agg_list, +FROM AS_TABLE($input) AS i; diff --git a/yql/essentials/tools/sql2yql/sql2yql.cpp b/yql/essentials/tools/sql2yql/sql2yql.cpp index f285ca89a50..c3ffc588a13 100644 --- a/yql/essentials/tools/sql2yql/sql2yql.cpp +++ b/yql/essentials/tools/sql2yql/sql2yql.cpp @@ -6,10 +6,9 @@ #include <yql/essentials/sql/sql.h> #include <yql/essentials/sql/v1/sql.h> +#include <yql/essentials/sql/v1/lexer/check/check_lexers.h> #include <yql/essentials/sql/v1/lexer/antlr4/lexer.h> #include <yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h> -#include <yql/essentials/sql/v1/lexer/antlr4_pure/lexer.h> -#include <yql/essentials/sql/v1/lexer/antlr4_pure_ansi/lexer.h> #include <yql/essentials/sql/v1/proto_parser/antlr4/proto_parser.h> #include <yql/essentials/sql/v1/proto_parser/antlr4_ansi/proto_parser.h> #include <yql/essentials/providers/common/provider/yql_provider_names.h> @@ -154,51 +153,14 @@ bool TestFormat( return true; } -bool TestLexers( - const TString& query -) { - NSQLTranslationV1::TLexers lexers; - NSQLTranslation::TTranslationSettings settings; +bool TestLexers(const TString& query) { NYql::TIssues issues; - if (!NSQLTranslation::ParseTranslationSettings(query, settings, issues)) { - Cerr << issues.ToString(); - return false; - } - - lexers.Antlr4 = NSQLTranslationV1::MakeAntlr4LexerFactory(); - lexers.Antlr4Ansi = NSQLTranslationV1::MakeAntlr4AnsiLexerFactory(); - lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); - lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); - auto lexerMain = NSQLTranslationV1::MakeLexer(lexers, settings.AnsiLexer, true, NSQLTranslationV1::ELexerFlavor::Default); - auto lexerPure = NSQLTranslationV1::MakeLexer(lexers, settings.AnsiLexer, true, NSQLTranslationV1::ELexerFlavor::Pure); - TVector<NSQLTranslation::TParsedToken> mainTokens; - if (!lexerMain->Tokenize(query, "", [&](auto token) { mainTokens.push_back(token);}, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS)) { - Cerr << issues.ToString(); - return false; - } - - TVector<NSQLTranslation::TParsedToken> pureTokens; - if (!lexerPure->Tokenize(query, "", [&](auto token) { pureTokens.push_back(token);}, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS)) { + if (!NSQLTranslationV1::CheckLexers({}, query, issues)) { Cerr << issues.ToString(); return false; } - bool hasErrors = false; - if (mainTokens.size() != pureTokens.size()) { - hasErrors = true; - Cerr << "Mismatch token count, main: " << mainTokens.size() << ", pure: " << pureTokens.size() << "\n"; - } - - for (size_t i = 0; i < Min(mainTokens.size(), pureTokens.size()); ++i) { - if (mainTokens[i].Name != pureTokens[i].Name || mainTokens[i].Content != pureTokens[i].Content) { - hasErrors = true; - Cerr << "Mismatch token #" << i << ", main: " << mainTokens[i].Name << ":" << mainTokens[i].Content - << ", pure: " << pureTokens[i].Name << ":" << pureTokens[i].Content << "\n"; - break; - } - } - - return !hasErrors; + return true; } class TStoreMappingFunctor: public NLastGetopt::IOptHandler { diff --git a/yql/essentials/tools/sql2yql/ya.make b/yql/essentials/tools/sql2yql/ya.make index 2b415f1227f..81efdd0dc92 100644 --- a/yql/essentials/tools/sql2yql/ya.make +++ b/yql/essentials/tools/sql2yql/ya.make @@ -13,10 +13,9 @@ PEERDIR( yql/essentials/sql/v1 yql/essentials/sql/pg yql/essentials/sql/v1/format + yql/essentials/sql/v1/lexer/check yql/essentials/sql/v1/lexer/antlr4 yql/essentials/sql/v1/lexer/antlr4_ansi - yql/essentials/sql/v1/lexer/antlr4_pure - yql/essentials/sql/v1/lexer/antlr4_pure_ansi yql/essentials/sql/v1/proto_parser/antlr4 yql/essentials/sql/v1/proto_parser/antlr4_ansi ) diff --git a/yql/essentials/tools/yql_complete/yql_complete.cpp b/yql/essentials/tools/yql_complete/yql_complete.cpp index 0d592240ebf..18e57492282 100644 --- a/yql/essentials/tools/yql_complete/yql_complete.cpp +++ b/yql/essentials/tools/yql_complete/yql_complete.cpp @@ -38,9 +38,11 @@ int Run(int argc, char* argv[]) { NLastGetopt::TOpts opts = NLastGetopt::TOpts::Default(); TString inFileName; + TString inQueryText; TString freqFileName; TMaybe<ui64> pos; opts.AddLongOption('i', "input", "input file").RequiredArgument("input").StoreResult(&inFileName); + opts.AddLongOption('q', "query", "input query text").RequiredArgument("query").StoreResult(&inQueryText); opts.AddLongOption('f', "freq", "frequences file").StoreResult(&freqFileName); opts.AddLongOption('p', "pos", "position").StoreResult(&pos); opts.SetFreeArgsNum(0); @@ -48,12 +50,21 @@ int Run(int argc, char* argv[]) { NLastGetopt::TOptsParseResult res(&opts, argc, argv); - THolder<TUnbufferedFileInput> inFile; - if (!inFileName.empty()) { - inFile.Reset(new TUnbufferedFileInput(inFileName)); + if (res.Has("input") && res.Has("query")) { + ythrow yexception() << "use either 'input' or 'query', not both"; + } + + TString queryString; + if (res.Has("query")) { + queryString = std::move(inQueryText); + } else { + THolder<TUnbufferedFileInput> inFile; + if (!inFileName.empty()) { + inFile.Reset(new TUnbufferedFileInput(inFileName)); + } + IInputStream& in = inFile ? *inFile.Get() : Cin; + queryString = in.ReadAll(); } - IInputStream& in = inFile ? *inFile.Get() : Cin; - auto queryString = in.ReadAll(); NSQLComplete::IRanking::TPtr ranking; if (freqFileName.empty()) { diff --git a/yql/essentials/tools/yql_facade_run/ya.make b/yql/essentials/tools/yql_facade_run/ya.make index d08df659479..662276a8577 100644 --- a/yql/essentials/tools/yql_facade_run/ya.make +++ b/yql/essentials/tools/yql_facade_run/ya.make @@ -37,6 +37,7 @@ PEERDIR( yql/essentials/protos yql/essentials/sql/settings yql/essentials/sql/v1/format + yql/essentials/sql/v1/lexer/check yql/essentials/sql/v1/lexer/antlr4 yql/essentials/sql/v1/lexer/antlr4_ansi yql/essentials/sql/v1/proto_parser/antlr4 diff --git a/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp b/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp index fdfe60a433e..64fef291635 100644 --- a/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp +++ b/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp @@ -43,6 +43,7 @@ #include <yql/essentials/sql/v1/format/sql_format.h> #include <yql/essentials/sql/v1/sql.h> #include <yql/essentials/sql/sql.h> +#include <yql/essentials/sql/v1/lexer/check/check_lexers.h> #include <yql/essentials/sql/v1/lexer/antlr4/lexer.h> #include <yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h> #include <yql/essentials/sql/v1/proto_parser/antlr4/proto_parser.h> @@ -436,6 +437,7 @@ void TFacadeRunOptions::Parse(int argc, const char *argv[]) { if (CustomTests) { opts.AddLongOption("test-antlr4", "Check antlr4 parser").NoArgument().SetFlag(&TestAntlr4); opts.AddLongOption("test-format", "Compare formatted query's AST with the original query's AST (only syntaxVersion=1 is supported)").NoArgument().SetFlag(&TestSqlFormat); + opts.AddLongOption("test-lexers", "Compare lexers").NoArgument().SetFlag(&TestLexers); opts.AddLongOption("validate-result-format", "Check that result-format can parse Result").NoArgument().SetFlag(&ValidateResultFormat); } @@ -575,6 +577,24 @@ int TFacadeRunner::DoMain(int argc, const char *argv[]) { ctx.NextUniqueId = NPg::GetSqlLanguageParser()->GetContext().NextUniqueId; } IModuleResolver::TPtr moduleResolver; + TModuleResolver::TModuleChecker moduleChecker; + if (RunOptions_.TestLexers) { + moduleChecker = [](const TString& query, const TString& fileName, TExprContext& ctx) { + TIssues issues; + if (!NSQLTranslationV1::CheckLexers(TPosition(0, 0, fileName), query, issues)) { + auto issue = TIssue(TPosition(0, 0, fileName), "Lexers mismatched"); + for (const auto& i : issues) { + issue.AddSubIssue(MakeIntrusive<TIssue>(i)); + } + + ctx.AddError(issue); + return false; + } + + return true; + }; + } + if (RunOptions_.MountConfig) { TModulesTable modules; FillUserDataTableFromFileSystem(*RunOptions_.MountConfig, RunOptions_.DataTable); @@ -585,9 +605,11 @@ int TFacadeRunner::DoMain(int argc, const char *argv[]) { return -1; } - moduleResolver = std::make_shared<TModuleResolver>(translators, std::move(modules), ctx.NextUniqueId, ClusterMapping_, RunOptions_.SqlFlags, RunOptions_.Mode >= ERunMode::Validate); + moduleResolver = std::make_shared<TModuleResolver>(translators, std::move(modules), ctx.NextUniqueId, + ClusterMapping_, RunOptions_.SqlFlags, RunOptions_.Mode >= ERunMode::Validate, THolder<TExprContext>(), moduleChecker); } else { - if (!GetYqlDefaultModuleResolver(ctx, moduleResolver, ClusterMapping_, RunOptions_.OptimizeLibs && RunOptions_.Mode >= ERunMode::Validate)) { + if (!GetYqlDefaultModuleResolver(ctx, moduleResolver, ClusterMapping_, + RunOptions_.OptimizeLibs && RunOptions_.Mode >= ERunMode::Validate, moduleChecker)) { *RunOptions_.ErrStream << "Errors loading default YQL libraries:" << Endl; ctx.IssueManager.GetIssues().PrintTo(*RunOptions_.ErrStream); return -1; @@ -746,6 +768,14 @@ int TFacadeRunner::DoRun(TProgramFactory& factory) { return -1; } } + if (!fail && RunOptions_.TestLexers && 1 == RunOptions_.SyntaxVersion) { + TIssues issues; + if (!NSQLTranslationV1::CheckLexers({}, RunOptions_.ProgramText, issues)) { + *RunOptions_.ErrStream << "Lexers mismatched" << Endl; + issues.PrintTo(*RunOptions_.ErrStream); + return -1; + } + } } else { RunOptions_.PrintInfo("Parse YQL..."); if (!program->ParseYql()) { diff --git a/yql/essentials/tools/yql_facade_run/yql_facade_run.h b/yql/essentials/tools/yql_facade_run/yql_facade_run.h index d6037766c6f..e7169322924 100644 --- a/yql/essentials/tools/yql_facade_run/yql_facade_run.h +++ b/yql/essentials/tools/yql_facade_run/yql_facade_run.h @@ -86,6 +86,7 @@ public: bool TestAntlr4 = false; bool AssumeYdbOnClusterWithSlash = false; bool TestSqlFormat = false; + bool TestLexers = false; THashMap<TString, NSQLTranslation::TTableBindingSettings> Bindings; bool PrintAst = false; diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/result.json b/yql/essentials/udfs/common/protobuf/test/canondata/result.json index be8251f2ae0..b9ced890508 100644 --- a/yql/essentials/udfs/common/protobuf/test/canondata/result.json +++ b/yql/essentials/udfs/common/protobuf/test/canondata/result.json @@ -39,11 +39,44 @@ "uri": "https://storage.yandex-team.ru/get-devtools/1923547/edc65c62e064cae64c748b355e12a480cac0c768/resource.tar.gz#test.test_YQL-8307_/results.txt" } ], - "test.test[recursion_bytes]": [ + "test.test[map_bytes_v1]": [ { - "checksum": "eeb1ca24bdc09529bd0a320965b3123d", - "size": 1241, - "uri": "https://storage.yandex-team.ru/get-devtools/1937492/9579ab43fa70f08e465aa7673b27a5da5460a75e/resource.tar.gz#test.test_recursion_bytes_/results.txt" + "uri": "file://test.test_map_bytes_v1_/results.txt" + } + ], + "test.test[map_bytes_v2]": [ + { + "uri": "file://test.test_map_bytes_v2_/results.txt" + } + ], + "test.test[oneof_bytes_v1_fail]": [ + { + "uri": "file://test.test_oneof_bytes_v1_fail_/extracted" + } + ], + "test.test[oneof_bytes_v1_success]": [ + { + "uri": "file://test.test_oneof_bytes_v1_success_/results.txt" + } + ], + "test.test[oneof_bytes_v2]": [ + { + "uri": "file://test.test_oneof_bytes_v2_/results.txt" + } + ], + "test.test[recursion_bytes_v1_fail_empty_optional]": [ + { + "uri": "file://test.test_recursion_bytes_v1_fail_empty_optional_/extracted" + } + ], + "test.test[recursion_bytes_v1_success]": [ + { + "uri": "file://test.test_recursion_bytes_v1_success_/results.txt" + } + ], + "test.test[recursion_bytes_v2]": [ + { + "uri": "file://test.test_recursion_bytes_v2_/results.txt" } ], "test.test[recursion_fail]": [ @@ -53,9 +86,7 @@ ], "test.test[recursion_ignore]": [ { - "checksum": "eeb1ca24bdc09529bd0a320965b3123d", - "size": 1241, - "uri": "https://storage.yandex-team.ru/get-devtools/1937492/9579ab43fa70f08e465aa7673b27a5da5460a75e/resource.tar.gz#test.test_recursion_ignore_/results.txt" + "uri": "file://test.test_recursion_ignore_/results.txt" } ], "test.test[syntax_aware_empty_nested_message]": [ @@ -93,32 +124,34 @@ "uri": "https://storage.yandex-team.ru/get-devtools/1936947/d770c9a45c5df4db61873fc48e1cb5961f774af6/resource.tar.gz#test.test_yt_mode_map_/results.txt" } ], + "test.test[yt_mode_map_recursive_v1]": [ + { + "uri": "file://test.test_yt_mode_map_recursive_v1_/results.txt" + } + ], + "test.test[yt_mode_map_recursive_v2]": [ + { + "uri": "file://test.test_yt_mode_map_recursive_v2_/results.txt" + } + ], "test.test[yt_mode_no_ser]": [ { - "checksum": "eeb1ca24bdc09529bd0a320965b3123d", - "size": 1241, - "uri": "https://storage.yandex-team.ru/get-devtools/1937492/9579ab43fa70f08e465aa7673b27a5da5460a75e/resource.tar.gz#test.test_yt_mode_no_ser_/results.txt" + "uri": "file://test.test_yt_mode_no_ser_/results.txt" } ], "test.test[yt_mode_plain]": [ { - "checksum": "7321635f17c1f8fdb75d96bb2a3ce4d1", - "size": 1796, - "uri": "https://storage.yandex-team.ru/get-devtools/1937492/9579ab43fa70f08e465aa7673b27a5da5460a75e/resource.tar.gz#test.test_yt_mode_plain_/results.txt" + "uri": "file://test.test_yt_mode_plain_/results.txt" } ], "test.test[yt_mode_ser_pb]": [ { - "checksum": "eeb1ca24bdc09529bd0a320965b3123d", - "size": 1241, - "uri": "https://storage.yandex-team.ru/get-devtools/1937492/9579ab43fa70f08e465aa7673b27a5da5460a75e/resource.tar.gz#test.test_yt_mode_ser_pb_/results.txt" + "uri": "file://test.test_yt_mode_ser_pb_/results.txt" } ], "test.test[yt_mode_ser_yt]": [ { - "checksum": "eeb1ca24bdc09529bd0a320965b3123d", - "size": 1241, - "uri": "https://storage.yandex-team.ru/get-devtools/1937492/9579ab43fa70f08e465aa7673b27a5da5460a75e/resource.tar.gz#test.test_yt_mode_ser_yt_/results.txt" + "uri": "file://test.test_yt_mode_ser_yt_/results.txt" } ], "test.test[yt_mode_variant]": [ diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_YQL-19040_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_YQL-19040_/results.txt index 67f6ba046e3..b42aff88de3 100644 --- a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_YQL-19040_/results.txt +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_YQL-19040_/results.txt @@ -10,6 +10,240 @@ [ "column0"; [ + "StructType"; + [ + [ + "dict1"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "StructType"; + [ + [ + "a"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict2"; + [ + "OptionalType"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "StructType"; + [ + [ + "a"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "dict3"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict4"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "a"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "dict5"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "dict6"; + [ + "OptionalType"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "dict7"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict8"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "DataType"; + "String" + ] + ]; + [ + "column2"; + [ "DataType"; "String" ] @@ -19,6 +253,97 @@ ]; "Data" = [ [ + [ + [ + [ + "k2"; + [ + [ + "0" + ] + ] + ]; + [ + "k1"; + [ + [ + "1" + ] + ] + ] + ]; + [ + [ + [ + "k2"; + [ + [ + "2" + ] + ] + ] + ] + ]; + [ + [ + [ + "k3" + ]; + [ + "\n\0013" + ] + ] + ]; + [ + [ + [ + "k4" + ]; + [ + [ + [ + "4" + ] + ] + ] + ] + ]; + [ + [ + "k5"; + "v5" + ] + ]; + [ + [ + [ + "k6"; + "v6" + ] + ] + ]; + [ + [ + [ + "k7" + ]; + [ + "v7" + ] + ] + ]; + [ + [ + [ + "k8" + ]; + [ + "v8" + ] + ] + ] + ]; + "\n\t\n\2k1\x12\3\n\0011\n\t\n\2k2\x12\3\n\0010\x12\t\n\2k2\x12\3\n\0012\x1A\t\n\2k3\x12\3\n\0013\"\t\n\2k4\x12\3\n\0014*\x08\n\2k5\x12\2v52\x08\n\2k6\x12\2v6:\x08\n\2k7\x12\2v7B\x08\n\2k8\x12\2v8"; "Success" ] ] diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_map_bytes_v1_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_map_bytes_v1_/results.txt new file mode 100644 index 00000000000..875a320bd31 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_map_bytes_v1_/results.txt @@ -0,0 +1,136 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "map1"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "map2"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"map1\": [{\"key\": \"key1\", \"value\": \"\"}], \"map2\": [{\"key\": \"key3\", \"value\": {\"map1\": [{\"key\": \"nestedKey\", \"value\": \"nestedValue\"}], \"map2\": [{\"key\": \"key4\"}]}}]}" + ]; + [ + [ + [ + [ + [ + "key1" + ]; + # + ] + ]; + [ + [ + [ + "key3" + ]; + "\n\x18\n\tnestedKey\x12\x0BnestedValue\x12\x08\n\4key4\x12\0" + ] + ] + ] + ]; + [ + "{\n \"map2\":\n [\n {\n \"key\":\"key3\",\n \"value\":\n {\n \"map2\":\n [\n {\n \"key\":\"key4\",\n \"value\":\n {\n }\n }\n ],\n \"map1\":\n [\n {\n \"key\":\"nestedKey\",\n \"value\":\"nestedValue\"\n }\n ]\n }\n }\n ],\n \"map1\":\n [\n {\n \"key\":\"key1\"\n }\n ]\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_map_bytes_v2_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_map_bytes_v2_/results.txt new file mode 100644 index 00000000000..225ec211e97 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_map_bytes_v2_/results.txt @@ -0,0 +1,141 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "map1"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "map2"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"map1\": [{\"key\": \"key1\", \"value\": \"\"}], \"map2\": [{\"key\": \"key3\", \"value\": {\"map1\": [{\"key\": \"nestedKey\", \"value\": \"nestedValue\"}], \"map2\": [{\"key\": \"key4\"}]}}]}" + ]; + [ + [ + [ + [ + [ + "key1" + ]; + # + ] + ]; + [ + [ + [ + "key3" + ]; + [ + "\n\x18\n\tnestedKey\x12\x0BnestedValue\x12\x08\n\4key4\x12\0" + ] + ] + ] + ] + ]; + [ + "{\n \"map2\":\n [\n {\n \"key\":\"key3\",\n \"value\":\n {\n \"map2\":\n [\n {\n \"key\":\"key4\",\n \"value\":\n {\n }\n }\n ],\n \"map1\":\n [\n {\n \"key\":\"nestedKey\",\n \"value\":\"nestedValue\"\n }\n ]\n }\n }\n ],\n \"map1\":\n [\n {\n \"key\":\"key1\"\n }\n ]\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v1_fail_/extracted b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v1_fail_/extracted new file mode 100644 index 00000000000..0ff0475174a --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v1_fail_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Error: Execution + + <tmp_path>/program.sql:<main>:62:1: Error: Execution of node: YtMap! + SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + ^ + <tmp_path>/program.sql:<main>:62:1: Error: The recursive field 'Test.test' was attempted to be parsed as a string, but actually it has no value. Consider using the BytesV2 parsing mode to allow for optional recursive messages. + SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + ^
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v1_success_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v1_success_/results.txt new file mode 100644 index 00000000000..fab3b26ecc9 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v1_success_/results.txt @@ -0,0 +1,80 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "str"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "test"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"test\":{\"str\":\"string value\"}}" + ]; + [ + [ + #; + "\x12\x0Cstring value" + ] + ]; + [ + "{\n \"test\":\n {\n \"str\":\"string value\"\n }\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v2_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v2_/results.txt new file mode 100644 index 00000000000..b83b4255708 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_oneof_bytes_v2_/results.txt @@ -0,0 +1,101 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "str"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "test"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"str\":\"string value\"}" + ]; + [ + [ + [ + "string value" + ]; + # + ] + ]; + [ + "{\n \"str\":\"string value\"\n}" + ] + ]; + [ + [ + "{\"test\":{\"str\":\"string value\"}}" + ]; + [ + [ + #; + [ + "\x12\x0Cstring value" + ] + ] + ]; + [ + "{\n \"test\":\n {\n \"str\":\"string value\"\n }\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v1_fail_empty_optional_/extracted b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v1_fail_empty_optional_/extracted new file mode 100644 index 00000000000..0ebc6d4b38e --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v1_fail_empty_optional_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Error: Execution + + <tmp_path>/program.sql:<main>:98:1: Error: Execution of node: YtMap! + SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) + ^ + <tmp_path>/program.sql:<main>:98:1: Error: The recursive field 'Test.test' was attempted to be parsed as a string, but actually it has no value. Consider using the BytesV2 parsing mode to allow for optional recursive messages. + SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) + ^
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v1_success_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v1_success_/results.txt new file mode 100644 index 00000000000..c1ab939ce9e --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v1_success_/results.txt @@ -0,0 +1,346 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "number"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "repeated"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "req"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "req"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "test"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "number"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "repeated"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "req"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "req"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "test"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + []; + #; + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ]; + [ + "{\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + #; + #; + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ]; + [ + "{\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ]; + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional data\"}}}, \"repeated\": [{\"number\": 5, \"inner\": {\"i\": {\"a\": \"repeated hello\"}}}]}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + [ + "\n\x12\n\x10\n\x0Erepeated hello0\5" + ]; + #; + "\n\x11\n\x0F\n\roptional data0\5" + ] + ]; + [ + "{\n \"number\":5,\n \"repeated\":\n [\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"repeated hello\"\n }\n }\n }\n ],\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional data\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + [ + [ + "\n\x12\n\x10\n\x0Erepeated hello0\5" + ] + ]; + #; + "\n\x11\n\x0F\n\roptional data0\5" + ] + ]; + [ + "{\n \"number\":5,\n \"repeated\":\n [\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"repeated hello\"\n }\n }\n }\n ],\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional data\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ]; + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"req\": {\"req\": {\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": []}}, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + []; + [ + [ + "\n\t\n\7\n\5hello0\5" + ] + ]; + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ]; + [ + "{\n \"req\":\n {\n \"req\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n }\n },\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + #; + [ + [ + "\n\t\n\7\n\5hello0\5" + ] + ]; + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ]; + [ + "{\n \"req\":\n {\n \"req\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n }\n },\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v2_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v2_/results.txt new file mode 100644 index 00000000000..86bd3de65a6 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_bytes_v2_/results.txt @@ -0,0 +1,405 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "number"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "repeated"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "req"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "req"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "test"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "number"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "repeated"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "req"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "req"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "test"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": []}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + []; + #; + # + ] + ]; + [ + "{\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + #; + #; + # + ] + ]; + [ + "{\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ]; + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + []; + #; + [ + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ] + ]; + [ + "{\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + #; + #; + [ + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ] + ]; + [ + "{\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ]; + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional data\"}}}, \"repeated\": [{\"number\": 5, \"inner\": {\"i\": {\"a\": \"repeated hello\"}}}]}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + [ + "\n\x12\n\x10\n\x0Erepeated hello0\5" + ]; + #; + [ + "\n\x11\n\x0F\n\roptional data0\5" + ] + ] + ]; + [ + "{\n \"number\":5,\n \"repeated\":\n [\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"repeated hello\"\n }\n }\n }\n ],\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional data\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + [ + [ + "\n\x12\n\x10\n\x0Erepeated hello0\5" + ] + ]; + #; + [ + "\n\x11\n\x0F\n\roptional data0\5" + ] + ] + ]; + [ + "{\n \"number\":5,\n \"repeated\":\n [\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"repeated hello\"\n }\n }\n }\n ],\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional data\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ]; + [ + [ + "{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"req\": {\"req\": {\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": []}}, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + []; + [ + [ + "\n\t\n\7\n\5hello0\5" + ] + ]; + [ + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ] + ]; + [ + "{\n \"req\":\n {\n \"req\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n }\n },\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + "hello" + ] + ] + ]; + "5"; + #; + [ + [ + "\n\t\n\7\n\5hello0\5" + ] + ]; + [ + "\n\x12\n\x10\n\x0Eoptional hello0\5" + ] + ] + ]; + [ + "{\n \"req\":\n {\n \"req\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n }\n },\n \"number\":5,\n \"test\":\n {\n \"number\":5,\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"optional hello\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_ignore_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_ignore_/results.txt new file mode 100644 index 00000000000..a1805b10231 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_recursion_ignore_/results.txt @@ -0,0 +1,119 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "a"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "test"; + [ + "VoidType" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\":{\"i\":{\"a\":\"hello\"}},\"test\":{\"inner\":{\"i\":{\"a\":\"bye\"}}}}" + ]; + [ + [ + [ + [ + [ + [ + [ + "hello" + ] + ] + ] + ] + ]; + "Void" + ] + ]; + [ + "{\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + "Success" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_map_recursive_v1_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_map_recursive_v1_/results.txt new file mode 100644 index 00000000000..722909aa718 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_map_recursive_v1_/results.txt @@ -0,0 +1,371 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "dict1"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "dict2"; + [ + "OptionalType"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "dict3"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict4"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "dict5"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "dict6"; + [ + "OptionalType"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "dict7"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict8"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "dict9"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"dict2\":[{\"key\":\"k2\",\"value\":{\"dict2\":[]}}],\"dict3\":[{\"key\":\"k3\",\"value\":{\"dict3\":[]}}],\"dict4\":[{\"key\":\"k4\",\"value\":{\"dict4\":[]}}],\"dict5\":[{\"key\":\"k5\",\"value\":{\"dict5\":[]}}],\"dict6\":[{\"key\":\"k6\",\"value\":{\"dict6\":[]}}],\"dict7\":[{\"key\":\"k7\",\"value\":{\"dict7\":[]}}],\"dict8\":[{\"key\":\"k8\",\"value\":{\"dict8\":[]}}], \"dict9\":[{\"key\":\"k9\",\"value\":{\"dict9\":[]}}]}, " + ]; + [ + [ + []; + [ + [ + [ + "k2"; + "" + ] + ] + ]; + [ + [ + [ + "k3" + ]; + [ + "" + ] + ] + ]; + [ + [ + [ + "k4" + ]; + "" + ] + ]; + [ + [ + "k5"; + "" + ] + ]; + [ + [ + [ + "k6"; + "" + ] + ] + ]; + [ + [ + [ + "k7" + ]; + [ + "" + ] + ] + ]; + [ + [ + [ + "k8" + ]; + "" + ] + ]; + [ + [ + [ + "k9" + ]; + [ + "" + ] + ] + ] + ] + ]; + [ + "{\n \"dict7\":\n [\n {\n \"key\":\"k7\",\n \"value\":\n {\n }\n }\n ],\n \"dict8\":\n [\n {\n \"key\":\"k8\",\n \"value\":\n {\n }\n }\n ],\n \"dict4\":\n [\n {\n \"key\":\"k4\",\n \"value\":\n {\n }\n }\n ],\n \"dict5\":\n [\n {\n \"key\":\"k5\",\n \"value\":\n {\n }\n }\n ],\n \"dict2\":\n [\n {\n \"key\":\"k2\",\n \"value\":\n {\n }\n }\n ],\n \"dict9\":\n [\n {\n \"key\":\"k9\",\n \"value\":\n {\n }\n }\n ],\n \"dict6\":\n [\n {\n \"key\":\"k6\",\n \"value\":\n {\n }\n }\n ],\n \"dict3\":\n [\n {\n \"key\":\"k3\",\n \"value\":\n {\n }\n }\n ]\n}" + ]; + "Success" + ]; + [ + [ + "{\"dict2\":[],\"dict3\":[],\"dict4\":[],\"dict5\":[],\"dict6\":[],\"dict7\":[],\"dict8\":[], \"dict9\":[]}" + ]; + [ + [ + []; + #; + []; + []; + []; + #; + []; + []; + [] + ] + ]; + [ + "{\n}" + ]; + "Success" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_map_recursive_v2_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_map_recursive_v2_/results.txt new file mode 100644 index 00000000000..54698460f71 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_map_recursive_v2_/results.txt @@ -0,0 +1,381 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "dict1"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "dict2"; + [ + "OptionalType"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "dict3"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict4"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict5"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "dict6"; + [ + "OptionalType"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "dict7"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict8"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "dict9"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"dict2\":[{\"key\":\"k2\",\"value\":{\"dict2\":[]}}],\"dict3\":[{\"key\":\"k3\",\"value\":{\"dict3\":[]}}],\"dict4\":[{\"key\":\"k4\",\"value\":{\"dict4\":[]}}],\"dict5\":[{\"key\":\"k5\",\"value\":{\"dict5\":[]}}],\"dict6\":[{\"key\":\"k6\",\"value\":{\"dict6\":[]}}],\"dict7\":[{\"key\":\"k7\",\"value\":{\"dict7\":[]}}],\"dict8\":[{\"key\":\"k8\",\"value\":{\"dict8\":[]}}], \"dict9\":[{\"key\":\"k9\",\"value\":{\"dict9\":[]}}]}, " + ]; + [ + [ + []; + [ + [ + [ + "k2"; + "" + ] + ] + ]; + [ + [ + [ + "k3" + ]; + [ + "" + ] + ] + ]; + [ + [ + [ + "k4" + ]; + [ + "" + ] + ] + ]; + [ + [ + "k5"; + "" + ] + ]; + [ + [ + [ + "k6"; + "" + ] + ] + ]; + [ + [ + [ + "k7" + ]; + [ + "" + ] + ] + ]; + [ + [ + [ + "k8" + ]; + [ + "" + ] + ] + ]; + [ + [ + [ + "k9" + ]; + [ + "" + ] + ] + ] + ] + ]; + [ + "{\n \"dict7\":\n [\n {\n \"key\":\"k7\",\n \"value\":\n {\n }\n }\n ],\n \"dict8\":\n [\n {\n \"key\":\"k8\",\n \"value\":\n {\n }\n }\n ],\n \"dict4\":\n [\n {\n \"key\":\"k4\",\n \"value\":\n {\n }\n }\n ],\n \"dict5\":\n [\n {\n \"key\":\"k5\",\n \"value\":\n {\n }\n }\n ],\n \"dict2\":\n [\n {\n \"key\":\"k2\",\n \"value\":\n {\n }\n }\n ],\n \"dict9\":\n [\n {\n \"key\":\"k9\",\n \"value\":\n {\n }\n }\n ],\n \"dict6\":\n [\n {\n \"key\":\"k6\",\n \"value\":\n {\n }\n }\n ],\n \"dict3\":\n [\n {\n \"key\":\"k3\",\n \"value\":\n {\n }\n }\n ]\n}" + ]; + "Success" + ]; + [ + [ + "{\"dict2\":[],\"dict3\":[],\"dict4\":[],\"dict5\":[],\"dict6\":[],\"dict7\":[],\"dict8\":[], \"dict9\":[]}" + ]; + [ + [ + []; + #; + []; + []; + []; + #; + []; + []; + [] + ] + ]; + [ + "{\n}" + ]; + "Success" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_no_ser_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_no_ser_/results.txt new file mode 100644 index 00000000000..9f4e9169eb3 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_no_ser_/results.txt @@ -0,0 +1,95 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "test"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\":{\"i\":{\"a\":\"hello\"}},\"test\":{\"inner\":{\"i\":{\"a\":\"bye\"}}}}" + ]; + [ + [ + [ + "\n\7\n\5hello" + ]; + [ + "\n\7\n\5\n\3bye" + ] + ] + ]; + [ + "{\n \"test\":\n {\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"bye\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + "Success" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_plain_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_plain_/results.txt new file mode 100644 index 00000000000..4a00215f9cc --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_plain_/results.txt @@ -0,0 +1,215 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "a"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\":{\"i\":{\"a\":\"hello\"}}}" + ]; + [ + [ + [ + "\n\7\n\5hello" + ] + ] + ]; + [ + "{\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + [ + [ + [ + [ + "hello" + ] + ] + ] + ] + ] + ] + ]; + [ + "{\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + [ + [ + [ + "\n\7\n\5hello" + ] + ] + ]; + [ + "{\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ] + ]; + [ + [ + "{}" + ]; + [ + [ + # + ] + ]; + [ + "{\n}" + ]; + [ + [ + # + ] + ]; + [ + "{\n}" + ]; + [ + [ + # + ] + ]; + [ + "{\n}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_ser_pb_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_ser_pb_/results.txt new file mode 100644 index 00000000000..9f4e9169eb3 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_ser_pb_/results.txt @@ -0,0 +1,95 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "test"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\":{\"i\":{\"a\":\"hello\"}},\"test\":{\"inner\":{\"i\":{\"a\":\"bye\"}}}}" + ]; + [ + [ + [ + "\n\7\n\5hello" + ]; + [ + "\n\7\n\5\n\3bye" + ] + ] + ]; + [ + "{\n \"test\":\n {\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"bye\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + "Success" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_ser_yt_/results.txt b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_ser_yt_/results.txt new file mode 100644 index 00000000000..3e5c425b434 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/canondata/test.test_yt_mode_ser_yt_/results.txt @@ -0,0 +1,105 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "TestField"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "inner"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "i"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "test"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"inner\":{\"i\":{\"a\":\"hello\"}},\"test\":{\"inner\":{\"i\":{\"a\":\"bye\"}}}}" + ]; + [ + [ + [ + [ + [ + "\n\5hello" + ] + ] + ]; + "\n\7\n\5\n\3bye" + ] + ]; + [ + "{\n \"test\":\n {\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"bye\"\n }\n }\n },\n \"inner\":\n {\n \"i\":\n {\n \"a\":\"hello\"\n }\n }\n}" + ]; + "Success" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/cases/YQL-19040.sql b/yql/essentials/udfs/common/protobuf/test/cases/YQL-19040.sql index 895929c06c9..1b51ce590fa 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/YQL-19040.sql +++ b/yql/essentials/udfs/common/protobuf/test/cases/YQL-19040.sql @@ -59,4 +59,4 @@ $udfParseJson = Udf(Protobuf::Parse, $config_json as TypeConfig); $udfParseBin = Udf(Protobuf::Parse, $config_bin as TypeConfig); $udfSerializeBin = Udf(Protobuf::Serialize, $config_bin as TypeConfig); -SELECT Ensure("Success", $udfParseJson($dat) == $udfParseBin($udfSerializeBin($udfParseJson($dat))), "Fail");
\ No newline at end of file +SELECT $udfParseJson($dat), $udfSerializeBin($udfParseJson($dat)), Ensure("Success", $udfParseJson($dat) == $udfParseBin($udfSerializeBin($udfParseJson($dat))), "Fail");
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.in b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.in new file mode 100644 index 00000000000..c533e10fb19 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.in @@ -0,0 +1 @@ +{"TestField"="{\"map1\": [{\"key\": \"key1\", \"value\": \"\"}], \"map2\": [{\"key\": \"key3\", \"value\": {\"map1\": [{\"key\": \"nestedKey\", \"value\": \"nestedValue\"}], \"map2\": [{\"key\": \"key4\"}]}}]}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.in.attr index f10d440a236..f10d440a236 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.in.attr +++ b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.in.attr diff --git a/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.sql b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.sql new file mode 100644 index 00000000000..428adb2a73f --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v1.sql @@ -0,0 +1,30 @@ +/* + +syntax='proto3'; + +message Test { + map<string, string> map1 = 1; + map<string, Test> map2 = 2; +}; + +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA+N6xcglUpJboOec457pmJVVUemmV1CUX5KvdJKRiyUktbhESJmLJTexwFCCUYFZg9uIXw8kqOcLFHHNKymqDAJLQhUZSTChKTJCKDKSMufihOsTEuBizk6tBJrKqMEZBGIKiXCxliXmlKYCDQGJQThWTBaMUnZgjUa4NEoja+Q2YgXbjqQ/iQ3sJWMARIs/0+0AAAA=", + "view": { + "recursion": "bytes", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.in b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.in new file mode 100644 index 00000000000..c533e10fb19 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.in @@ -0,0 +1 @@ +{"TestField"="{\"map1\": [{\"key\": \"key1\", \"value\": \"\"}], \"map2\": [{\"key\": \"key3\", \"value\": {\"map1\": [{\"key\": \"nestedKey\", \"value\": \"nestedValue\"}], \"map2\": [{\"key\": \"key4\"}]}}]}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.sql b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.sql new file mode 100644 index 00000000000..4ed81752643 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/map_bytes_v2.sql @@ -0,0 +1,30 @@ +/* + +syntax='proto3'; + +message Test { + map<string, string> map1 = 1; + map<string, Test> map2 = 2; +}; + +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA+N6xcglUpJboOec457pmJVVUemmV1CUX5KvdJKRiyUktbhESJmLJTexwFCCUYFZg9uIXw8kqOcLFHHNKymqDAJLQhUZSTChKTJCKDKSMufihOsTEuBizk6tBJrKqMEZBGIKiXCxliXmlKYCDQGJQThWTBaMUnZgjUa4NEoja+Q2YgXbjqQ/iQ3sJWMARIs/0+0AAAA=", + "view": { + "recursion": "bytesV2", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.cfg b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.cfg new file mode 100644 index 00000000000..732ab13335f --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.cfg @@ -0,0 +1,2 @@ +in plato.Input oneof_bytes_v1_fail.in +xfail diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.in b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.in new file mode 100644 index 00000000000..d65d62216d6 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.in @@ -0,0 +1 @@ +{"TestField"="{\"str\":\"string value\"}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.sql b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.sql new file mode 100644 index 00000000000..812467e72c2 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_fail.sql @@ -0,0 +1,32 @@ +/* + +syntax='proto3'; + +message Test { + oneof Var { + Test test = 1; + string str = 2; + } +}; + +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA+OK4xIpyS3Qs/ArMkhMCsrwN9UrKMovyVey42IJSS0uEZLmYikB0hKMCowa3EaseiBBD4YgsKCQEBdzcUmRBBNQjhMoCOI4sXIxhyUWJbGBjTEGACyKGj9gAAAA", + "view": { + "recursion": "bytes", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.in b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.in new file mode 100644 index 00000000000..63f95c46de9 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.in @@ -0,0 +1 @@ +{"TestField"="{\"test\":{\"str\":\"string value\"}}"};
\ No newline at end of file diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.sql b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.sql new file mode 100644 index 00000000000..812467e72c2 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v1_success.sql @@ -0,0 +1,32 @@ +/* + +syntax='proto3'; + +message Test { + oneof Var { + Test test = 1; + string str = 2; + } +}; + +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA+OK4xIpyS3Qs/ArMkhMCsrwN9UrKMovyVey42IJSS0uEZLmYikB0hKMCowa3EaseiBBD4YgsKCQEBdzcUmRBBNQjhMoCOI4sXIxhyUWJbGBjTEGACyKGj9gAAAA", + "view": { + "recursion": "bytes", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.in b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.in new file mode 100644 index 00000000000..95386798c60 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.in @@ -0,0 +1,2 @@ +{"TestField"="{\"str\":\"string value\"}"}; +{"TestField"="{\"test\":{\"str\":\"string value\"}}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.sql b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.sql new file mode 100644 index 00000000000..2390f9ce767 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/oneof_bytes_v2.sql @@ -0,0 +1,32 @@ +/* + +syntax='proto3'; + +message Test { + oneof Var { + Test test = 1; + string str = 2; + } +}; + +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA+OK4xIpyS3Qs/ArMkhMCsrwN9UrKMovyVey42IJSS0uEZLmYikB0hKMCowa3EaseiBBD4YgsKCQEBdzcUmRBBNQjhMoCOI4sXIxhyUWJbGBjTEGACyKGj9gAAAA", + "view": { + "recursion": "bytesV2", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.in b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.in deleted file mode 100644 index b6dd409ad4e..00000000000 --- a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.in +++ /dev/null @@ -1 +0,0 @@ -{"TestField"="{\"inner\":{\"i\":{\"a\":\"hello\"}},\"test\":{\"inner\":{\"i\":{\"a\":\"bye\"}}}}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.sql b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.sql deleted file mode 100644 index 3ee0813dc44..00000000000 --- a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes.sql +++ /dev/null @@ -1,35 +0,0 @@ -/* -syntax='proto3'; - -message Test { - message InnerInner { - string a = 1; - } - message Inner { - InnerInner i = 1; - } - Inner inner = 1; - Test test = 2; -} -*/ - -$config = @@{ - "name": "Test", - "format": "json", - "skip": 0, - "lists": { - "optional": false - }, - "meta": "eNrjWsjIxV2UmlxapFdQlF+Sr9TJyMUSklpcIqTIxZqZl5daJMGowKjBbcStBxLV8wQJBUFkhCS5WEqAghJMYBWsYBVBYCEpKS4usFIwIcTDxZgINocziDFRSp2LFSIsx8WYCTVeAMl4iB2MmUlsYCcZAwC/Qiqb", - "view": { - "recursion": "bytes", - "enum": "number" - } -}@@; - -$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); -$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); - -SELECT TestField, Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") -FROM plato.Input; - diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.cfg b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.cfg new file mode 100644 index 00000000000..feba56ac97b --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.cfg @@ -0,0 +1,2 @@ +in plato.Input recursion_bytes_v1_fail_empty_optional.in +xfail diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.in b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.in new file mode 100644 index 00000000000..9dfbc7d0a0c --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.in @@ -0,0 +1 @@ +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": [], \"select\": {\"name\": \"\"}}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.sql b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.sql new file mode 100644 index 00000000000..8049b67fdf4 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_fail_empty_optional.sql @@ -0,0 +1,51 @@ +/* +syntax='proto2'; + +message Test { + message InnerInner { + required string a = 1; + } + message Inner { + required InnerInner i = 1; + } + optional Inner inner = 1; + + // Simple optional recursion. + optional Test test = 2; + + // Repeated recursion. + repeated Test repeated = 4; + + // Just a number. + required int64 number = 6; + + message InnerMessage { + // Required recursion via optional message. + required Test req = 1; + } + + optional InnerMessage req = 7; +} +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA02PvQ6CMBSF0/KjXhhMYxQZDBoTmRh4BRcdXBoWxxoqIYYfS3kSX8OHtLRGWZr0O+eecy+8MSxk1SbX7F48js2pz5NWNLLZvTDYGe8k2YJT1jUXAYpQ7KVeMtDkPCBqFLIGWyoYYO1wtINqpKangrecSZ4HdmT95R8mS3DrvrqpBjfCsUW/P7IHS/BnMNGhZFR74V3HCk4HOQwBNNQP8QExtSiOZxSx8ACOwRtApcZeOh8FmSNQqYz+OJmsTLWZ+C48kA+TG9kxLwEAAA==", + "view": { + "recursion": "bytes", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)) +FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.in b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.in new file mode 100644 index 00000000000..daaa74d2ea0 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.in @@ -0,0 +1,4 @@ +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}"}; +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional data\"}}}, \"repeated\": [{\"number\": 5, \"inner\": {\"i\": {\"a\": \"repeated hello\"}}}]}"}; +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"req\": {\"req\": {\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": []}}, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}"}; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.sql b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.sql new file mode 100644 index 00000000000..4737218fb14 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v1_success.sql @@ -0,0 +1,67 @@ +/* +syntax='proto2'; + +message Test { + message InnerInner { + required string a = 1; + } + message Inner { + required InnerInner i = 1; + } + optional Inner inner = 1; + + // Simple optional recursion. + optional Test test = 2; + + // Repeated recursion. + repeated Test repeated = 4; + + // Just a number. + required int64 number = 6; + + message InnerMessage { + // Required recursion via optional message. + required Test req = 1; + } + + optional InnerMessage req = 7; +} +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA02PvQ6CMBSF0/KjXhhMYxQZDBoTmRh4BRcdXBoWxxoqIYYfS3kSX8OHtLRGWZr0O+eecy+8MSxk1SbX7F48js2pz5NWNLLZvTDYGe8k2YJT1jUXAYpQ7KVeMtDkPCBqFLIGWyoYYO1wtINqpKangrecSZ4HdmT95R8mS3DrvrqpBjfCsUW/P7IHS/BnMNGhZFR74V3HCk4HOQwBNNQP8QExtSiOZxSx8ACOwRtApcZeOh8FmSNQqYz+OJmsTLWZ+C48kA+TG9kxLwEAAA==", + "view": { + "recursion": "bytes", + "enum": "number" + } +}@@; + +$configOptList = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": true + }, + "meta": "H4sIAAAAAAAAA02PvQ6CMBSF0/KjXhhMYxQZDBoTmRh4BRcdXBoWxxoqIYYfS3kSX8OHtLRGWZr0O+eecy+8MSxk1SbX7F48js2pz5NWNLLZvTDYGe8k2YJT1jUXAYpQ7KVeMtDkPCBqFLIGWyoYYO1wtINqpKangrecSZ4HdmT95R8mS3DrvrqpBjfCsUW/P7IHS/BnMNGhZFR74V3HCk4HOQwBNNQP8QExtSiOZxSx8ACOwRtApcZeOh8FmSNQqYz+OJmsTLWZ+C48kA+TG9kxLwEAAA==", + "view": { + "recursion": "bytes", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +$udfParOpt = Udf(Protobuf::Parse, $configOptList as TypeConfig); +$udfSerOpt = Udf(Protobuf::Serialize, $configOptList as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)), $udfParOpt(TestField), $udfSerOpt($udfParOpt(TestField)) +FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.in b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.in new file mode 100644 index 00000000000..218b1a2c256 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.in @@ -0,0 +1,4 @@ +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": []}"}; +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}"}; +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional data\"}}}, \"repeated\": [{\"number\": 5, \"inner\": {\"i\": {\"a\": \"repeated hello\"}}}]}"}; +{"TestField"="{\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"req\": {\"req\": {\"inner\": {\"i\": {\"a\": \"hello\"}}, \"number\": 5, \"repeated\": []}}, \"test\": {\"number\": 5, \"inner\": {\"i\": {\"a\": \"optional hello\"}}}, \"repeated\": []}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.sql b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.sql new file mode 100644 index 00000000000..7fd995bb362 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_bytes_v2.sql @@ -0,0 +1,69 @@ +/* +syntax='proto2'; + +message Test { + message InnerInner { + required string a = 1; + } + + message Inner { + required InnerInner i = 1; + } + + optional Inner inner = 1; + + // Simple optional recursion. + optional Test test = 2; + + // Repeated recursion. + repeated Test repeated = 4; + + // Just a number. + required int64 number = 6; + + message InnerMessage { + // Required recursion via optional message. + required Test req = 1; + } + + optional InnerMessage req = 7; +} +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA02PvQ6CMBSF0/KjXhhMYxQZDBoTmRh4BRcdXBoWxxoqIYYfS3kSX8OHtLRGWZr0O+eecy+8MSxk1SbX7F48js2pz5NWNLLZvTDYGe8k2YJT1jUXAYpQ7KVeMtDkPCBqFLIGWyoYYO1wtINqpKangrecSZ4HdmT95R8mS3DrvrqpBjfCsUW/P7IHS/BnMNGhZFR74V3HCk4HOQwBNNQP8QExtSiOZxSx8ACOwRtApcZeOh8FmSNQqYz+OJmsTLWZ+C48kA+TG9kxLwEAAA==", + "view": { + "recursion": "bytesV2", + "enum": "number" + } +}@@; + +$configOptList = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": true + }, + "meta": "H4sIAAAAAAAAA02PvQ6CMBSF0/KjXhhMYxQZDBoTmRh4BRcdXBoWxxoqIYYfS3kSX8OHtLRGWZr0O+eecy+8MSxk1SbX7F48js2pz5NWNLLZvTDYGe8k2YJT1jUXAYpQ7KVeMtDkPCBqFLIGWyoYYO1wtINqpKangrecSZ4HdmT95R8mS3DrvrqpBjfCsUW/P7IHS/BnMNGhZFR74V3HCk4HOQwBNNQP8QExtSiOZxSx8ACOwRtApcZeOh8FmSNQqYz+OJmsTLWZ+C48kA+TG9kxLwEAAA==", + "view": { + "recursion": "bytesV2", + "enum": "number" + } +}@@; + +$udfPar = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); + +$udfParOpt = Udf(Protobuf::Parse, $configOptList as TypeConfig); +$udfSerOpt = Udf(Protobuf::Serialize, $configOptList as TypeConfig); + +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)), $udfParOpt(TestField), $udfSerOpt($udfParOpt(TestField)) +FROM plato.Input; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/recursion_ignore.sql b/yql/essentials/udfs/common/protobuf/test/cases/recursion_ignore.sql index 2f57eb18d19..6849518bb00 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/recursion_ignore.sql +++ b/yql/essentials/udfs/common/protobuf/test/cases/recursion_ignore.sql @@ -30,6 +30,6 @@ $config = @@{ $udfPar = Udf(Protobuf::Parse, $config as TypeConfig); $udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); -SELECT TestField, Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)), Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") FROM plato.Input; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.in b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.in new file mode 100644 index 00000000000..b17a51f7239 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.in @@ -0,0 +1,3 @@ +{"TestField"="{\"dict2\":[{\"key\":\"k2\",\"value\":{\"dict2\":[]}}],\"dict3\":[{\"key\":\"k3\",\"value\":{\"dict3\":[]}}],\"dict4\":[{\"key\":\"k4\",\"value\":{\"dict4\":[]}}],\"dict5\":[{\"key\":\"k5\",\"value\":{\"dict5\":[]}}],\"dict6\":[{\"key\":\"k6\",\"value\":{\"dict6\":[]}}],\"dict7\":[{\"key\":\"k7\",\"value\":{\"dict7\":[]}}],\"dict8\":[{\"key\":\"k8\",\"value\":{\"dict8\":[]}}], \"dict9\":[{\"key\":\"k9\",\"value\":{\"dict9\":[]}}]}, "}; +{"TestField"="{\"dict2\":[],\"dict3\":[],\"dict4\":[],\"dict5\":[],\"dict6\":[],\"dict7\":[],\"dict8\":[], \"dict9\":[]}"}; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.sql b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.sql new file mode 100644 index 00000000000..5000b56e2ed --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v1.sql @@ -0,0 +1,48 @@ +/* +syntax='proto3'; + +import "yt/yt_proto/yt/formats/extension.proto"; + +message Test { + option (NYT.default_field_flags) = SERIALIZATION_YT; + + message Inner { + string a = 1; + } + map<string, Test> dict1 = 1 [(NYT.flags) = MAP_AS_DICT]; + map<string, Test> dict2 = 2 [(NYT.flags) = MAP_AS_OPTIONAL_DICT]; + map<string, Test> dict3 = 3 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS_LEGACY]; + map<string, Test> dict4 = 4 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS]; + map<string, Test> dict5 = 5 [(NYT.flags) = MAP_AS_DICT]; + map<string, Test> dict6 = 6 [(NYT.flags) = MAP_AS_OPTIONAL_DICT]; + map<string, Test> dict7 = 7 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS_LEGACY]; + map<string, Test> dict8 = 8 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS]; + map<string, Test> dict9 = 9 +} +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA81a3W8jVxXHn7GPE2cyye662S7bmnZ321JvyX6nQHHsSdZbxzZje9tUQqPJ+MZx15lxZ8bbzQohJHhB4gXxghBCiBcQfwAI8YSEeEQ8AE9U4uMBJP4BnhDnfsx4xuNs3K5a2Ies77m/c86955577jn3Dvx1C57rW1Z/SK6ObMu19scHV3vEMezByLXsEqPJyxxR8hDFXVjZHgxJ1Qe2iSvfhuQBEgux5xJXchsvlKaYSmGOFiWrjKP4nySszuiVZUia+hGVGLuSVdlvuQALI914oPdJIc7IXlP+NECPjIjZI6ZxXEjgKLJqgCK/Aiuj8f5wYGgBGCAspUq8ozoBX4bl94n+IAjNMWiekgPACiweEcfBAWju8YgUkmz2z0VmPz3znODqIJNchiwxx0dcQuoE+ymImJaSoWxCxIJD7IcDgxTSTMDliIA275+W4fHhVLLkkUtMZ2CZhQUm5MUZq0iGvWkREz75JixYIxd/OYUMrk9u49mZjtDkGNUDyzWQHGtsG0QzrB7RBuaBVcgyARejE2HACuJqCFPzTqgtn4W0c2y6+qPCIvMQ0aKuQ3oDqq6wxF1HNIu/TMPyPM73OqQO6PzR9T6EdThP2Lzpj2jeMuRM4rikx30lMae3AWeKOlvyIznb27DsD0mzdbPvee3V00ZSUjw+lbKpeRJqy1UAyyTWAW48Y4geNNtKTQqJWMniVGMo35k44cIJPrTLt1/ED7uQtwndEWhiPrMsG0Tp1Jmpgo1PbMkONuXPgE/QmFsBi0+LHrGBtPXHkA+bR16DlOPqtsu8MKXyhixBAsMPi38plf6UvzSZcIJN+FJ0RUOSp+e9fguWQhOYV3Xxq3Bmpmh0krWxOTBdYo9sQj2Wqyr8Y+EEn+sG0VyKujqOEl/OZv65IH0d/8WLv07D2qw9M3P7YmBAD94nNjNSShUt3BGpob5PhrgbYlfyG6/MtStLdcqick75i5AUwZtKeHk+CXQvqYxPPg9Z+j/3jTQbc4YSqF/I65Bh26RHvEPPb1PH6pEDfTx0tYf6cEyYw6NjCeJ9SpMvQo7vqgHyPGJxNaXyjVajFKr+XQf3snBNpoISmPpb0yH9wuzpRfYSHqIMcU0svT4srKCAjJrn5KagFn8ehyQLLMuQ6+y1FK3a7G7VFSkm5wEYYbveLHekuN+uNTo3r0sJn6HLCckg4NqGlEKHXeQCam8rVUSkwxTELMhLkGWUrWazLmV8me2OWmvsSFlf5o7a7LYk8CXsKu12eUeRcj5ia6+jtKXF0LBQxZKvQml0d6W8vAJLXIU3iOUpEo5UmgyES1kJERAhFyuQYm6I7p6vl7eUutZsdWrNRrmOtvNpqvLlbk1Vqmi/AK2llDtISxQNWJsVUGduoYAvxE/wBSZr2heKf4/D6oxDZaaSNyDFfZkfsy/NPJ2YZ0eOWsYXTEISJyQhVETEYb8SCf78fLw5z/nIaB/uEEjNOAReh5WIoLmD8TdiUDjJOKeExHgoJL4+bcHnT16EyFr/JAZnZyebM8fwRUgfEffQ8tKq6Nm1y7qnF1twBU/7xEkZIx9NZKTfisOZmcJnDvQCwMAcjV2eOvFInGUUFrxolB27fn+C9QMnMcDtyUCTbKCfPmGmEcd8DSRjOCCmqzmuTfSjgdlnR01mM3WgDx2iLvPuttdLOZgD2QGOdIiDd/scxe9kIRdIzeXnYfFd/aGueeUWt0SO0lqi5HoN1hgE54iKjKHuOMxoGQaVaV+TdlW8HvkGrDKOIzybBqMh0WgB6LAjxx/ZCkXsCgAdkYNp4QXG1icmsXWXaOS9MWI13exph7pzWFijArbihZj6DAXuCJzCYGWzdxdB8iacZVLQIjhhzTgkxgNt7B7cLpwP6mcjbDNMhUK6iJDbsEgX42jwGMds2ewMzc8ITQELlpqCYRcrk81Uu6UoVTXnSdm2bOpQfcs3cI47VN/yzIvGMgw+Z6xaRZnmFKSQsQxjhwOEjzu4H85MjBVkXInMcpoVNY6Oo4xySOPoeJrtFqyNDkdRvpeDfDJCphlfZDW7TQxcq17hXBAe6JBL6P6GRkx9Hz1Gt/GHU7jIwEnXHmMVYRgK6yyzPvllWLH23zW4R2oo5mDwqPACM+8y7WD+2GJk+SWU7Rzq9oiFZAcXgxRe5FBOb3hkuiOc9wcHrifxMt8RjCakXQGJWiKk+AqD5ZEe1IuHAUVOlL7EEzckTjReh7MUhIFO7+muHkB/lqGp2XdFZ2ic9nj/2HesV/k4Kc1zrY8tOS9uwmLQ7+UscM/HhASToEqzStOXdxTMRTCNqtc6iqZ2G53ariIlAon9vWTmknS5+KsE5MOVmvx5OOdduDjE1d4f2GxDHun8cPT9Z02g2sR9CzHbDCLX4aJpYQDAwKHbPW1y1aXpBjqkY/GD0JfyrGm1BXhyQpQFdMp9Eye5L2bXR/oI/de1j1l+nlEzSFBoW74PlyZQbUj6unGssWScXRtohmUeDAeG67D4wGNcccJRZwz3EM9y8IqH/kTKL1ylpJTCvykpjX/T0gL+zUhZ/JuVoPiLDCwGKwNaaBnsbIyx6PmZJ9YRpQo9NDfTPA1XOSdNWKhbE572ZFTRkncg/a7DZKeZ7Fn3jwHZ99pMePZeW2s01d1yXRXs8jOQHOqPj8PHKyNhGFoem3hmDnBlcKkoajmIyk966xQ/p3ugRnqpGD4EGQnDCRZy++O+ZpOebrjh0J9jXSrrkd+ELF0jk63xCjPBq082gVhij0md8MvbkMYEs09cFvnzMy4/ZkjqMA5W0wrujzHKXIUUcw8ZQDiI9Ck5A8lKU6WRBkMLp2qtmlLBYFO8AWm+5jQK+auOTLwpZMS83u7ulqIiWxeWp+wkn4EVVekoDVpnad3Gm43mWw2UEyJ7IS2Gmbs0IbebXZWN5ttxkKatJp+D1U5Z3VE6Gq8dfdEoI9ixXWOl8UU4H6Qqb6OWNlNebuzQ+Dolz6tWE3SoYXlKvYql8xS52VCa21hBT2lnFWxaXoez01T801H3sJ6eUtxW1Ps1nHYGN68cHlHnbrMqZSMRpejgIRIoIz+Zu6TvxSEXKAtpPq8Ph9b7mj4c6I6IN8BIZUqZd3/PH+HT/48RHmN78YcxkKbrvanpx06a/ieydj+IQT5c5E0N7/n/6fD+EoelUGk37+jeg5VBjxyNLJe+NqHzPCTDQpEF5ehde0hDqTbhq1O2zdVaVdltNTFMVPa86KJKgynYxxi0WyBND4rGihnDwqC3CsuNJqaKmC8q29tKpdPm14E+uiPFgyb+fgJWZ4wEcw5eyPO7heiZOIOnRFPplm67ou7HEgGthNEf96strll5db88ofOb1s+CPLKcgTt4SN+wvDtZWu0nVcnrqZmujzZxd0+haeaRUCWvx0djWt+zxrQE4jgaLWKYBTCaDxHF7eQyeBErFEbjkMuwrPf7NhXuCeLlet4nM+D6Pch4dqAZLLUEVhTsDipO74dNrxOVDhxt8rYVx/6Mmhs4/rtA8Sdx3J7hV7oqZIYWOjnl4E/GV0556CvVBV71Odd/F4OMR8bjJTnS3UMmLrUVl2Iqa1M6FkYmcwFBp226rkOi99hdgHV0hCvpeOsq6BVBpo/Hrq0PhiFskmElr8MHb8IzntweFmfGIelNmNLszu+cAFRFv8db/H0cVrzbi55vrF0A3TQtN2iuqCtH+Epln0kNCFj/Vwxg0nWi3fAAFG+y7GGfX3gBJ9F7DnotuU/6A1O8p/CGdy2ZnDxPqZBxyJGOO8UQLyTRG9UnDb7UFtyqL6d4BTIelSZ+DUxXMGosQKKtdDBSYNlZrtfKbSm+9TVYRetPK9ySpq78nLuxd14VoL411M1+ybL7k88iaHXgBD6OGO3/Oxb7cTyx09r6WXx9hzO2vOmo5GBIDDp4+G4eLh27V4/pvQH24o+rvGB1rvqbRnxpkWjsddZP/SCj+Gd0EuUtWx+NiM2Sgu2h3i/+Ng5JekhTI5Qbe2iNFVhqdu4qqlZp1ru7DRpBFyHDcrUajZ/0QYG1RPqboMkepms1NN07ZZay7nUwM8RkL0xtqc1Oc6tL00PU4b0vaPVau4O5IVUrniE4aQFjxIXdcksrtxlBa25TlV0M6lpd2SlX9jA5RCWzIVKWjlP0VWuVjgRyAdYEwdfEenJsgpi8V6tKVVqUn4UCn+CbtZZ3uGj3y/Wu0paWaMbLeit3lcqbHjlffACrnnXF5QOzb0eY9xW4XFVaqlKh7yeY06sdnkK36XBqwjg8S/8UzdKDiK09/surMGLFL0yWkqW8TNUVoQoPwbbSKquoSUjAOeVg4X4ZVwNXcGnThQLdnJr3CMjf+Q5QiCM/8dOLwh9+Rb8eyG+cL6HTlSJj4M8ZZw7YdzlMtt/lRLTyRHYerX+cqdV34qhWv8vZfAzrIa3ePdA8ev8k9F4I6Q0sL9d8LqA50OlsqpDiap78+HmCVafmx0VtfglyhjUcH/F319MkU8uxAMx56Nm8uQPLD8ix9iGk/ElIWUK+ykRQC9aO9EeYhOBBRrTDsflAcwaPT5X2tz8mWGqzgsw1xnsXWdvIuWnC6iyfPO1LjPnccqUXccmAvqA3nqpvLof09AWckcBS2P9O1TSnC3rfk3E1X/Ge7k/yvmCdPJ/x+MM/F78L8kPdHuAxKqx2gg+FtHieKAlWZhXqRlsvvXNZLx3r9JuCV12iH5Xs8dXZRx/8JoPlNf3HlazPeUQWv4mHfYc4LibPqR7WwZ8T6ZBUotRSlZLYzepW8kcfnAeVgzz0hqgDAuiNCTrH0Rse+pr4wCqAvjZBZzj6moe+Ll6LA+jrE3SWo6976Bvik6kA+kZk3Dc89E3xxVgAfTMy7pse+pb4fC+AvhUZ9y0PfVt8ZxVA346M+7Z8iaPviA+iAug7DM1xd9bPQKpmYi6HJ3FMF6+GMX39DYDJ2tAcEQOQ6KU/scTwH/3p02iKiRcP+pvx2zFPwMbTCrj2tAKuP62AG08r4ObTCrj1tAJuP62AOx9VwGbypx+cT+6n+SdE/wUYnqXKwSwAAA==", + "view": { + "recursion": "bytes", + "enum": "number", + "yt_mode": true + } +} +@@; + +$udfParse = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSerialize = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT + TestField, + $udfParse(TestField), + $udfSerialize($udfParse(TestField)), + Ensure("Success", StablePickle($udfParse(TestField)) == StablePickle($udfParse($udfSerialize($udfParse(TestField)))), "Fail"), +FROM plato.Input; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.in b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.in new file mode 100644 index 00000000000..b17a51f7239 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.in @@ -0,0 +1,3 @@ +{"TestField"="{\"dict2\":[{\"key\":\"k2\",\"value\":{\"dict2\":[]}}],\"dict3\":[{\"key\":\"k3\",\"value\":{\"dict3\":[]}}],\"dict4\":[{\"key\":\"k4\",\"value\":{\"dict4\":[]}}],\"dict5\":[{\"key\":\"k5\",\"value\":{\"dict5\":[]}}],\"dict6\":[{\"key\":\"k6\",\"value\":{\"dict6\":[]}}],\"dict7\":[{\"key\":\"k7\",\"value\":{\"dict7\":[]}}],\"dict8\":[{\"key\":\"k8\",\"value\":{\"dict8\":[]}}], \"dict9\":[{\"key\":\"k9\",\"value\":{\"dict9\":[]}}]}, "}; +{"TestField"="{\"dict2\":[],\"dict3\":[],\"dict4\":[],\"dict5\":[],\"dict6\":[],\"dict7\":[],\"dict8\":[], \"dict9\":[]}"}; + diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.in.attr b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.in.attr new file mode 100644 index 00000000000..f10d440a236 --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.in.attr @@ -0,0 +1 @@ +{schema=[{name=TestField;type=string}]} diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.sql b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.sql new file mode 100644 index 00000000000..de80e5e145e --- /dev/null +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_map_recursive_v2.sql @@ -0,0 +1,48 @@ +/* +syntax='proto3'; + +import "yt/yt_proto/yt/formats/extension.proto"; + +message Test { + option (NYT.default_field_flags) = SERIALIZATION_YT; + + message Inner { + string a = 1; + } + map<string, Test> dict1 = 1 [(NYT.flags) = MAP_AS_DICT]; + map<string, Test> dict2 = 2 [(NYT.flags) = MAP_AS_OPTIONAL_DICT]; + map<string, Test> dict3 = 3 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS_LEGACY]; + map<string, Test> dict4 = 4 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS]; + map<string, Test> dict5 = 5 [(NYT.flags) = MAP_AS_DICT]; + map<string, Test> dict6 = 6 [(NYT.flags) = MAP_AS_OPTIONAL_DICT]; + map<string, Test> dict7 = 7 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS_LEGACY]; + map<string, Test> dict8 = 8 [(NYT.flags) = MAP_AS_LIST_OF_STRUCTS]; + map<string, Test> dict9 = 9 +} +*/ + +$config = @@{ + "name": "Test", + "format": "json", + "skip": 0, + "lists": { + "optional": false + }, + "meta": "H4sIAAAAAAAAA81a3W8jVxXHn7GPE2cyye662S7bmnZ321JvyX6nQHHsSdZbxzZje9tUQqPJ+MZx15lxZ8bbzQohJHhB4gXxghBCiBcQfwAI8YSEeEQ8AE9U4uMBJP4BnhDnfsx4xuNs3K5a2Ies77m/c86955577jn3Dvx1C57rW1Z/SK6ObMu19scHV3vEMezByLXsEqPJyxxR8hDFXVjZHgxJ1Qe2iSvfhuQBEgux5xJXchsvlKaYSmGOFiWrjKP4nySszuiVZUia+hGVGLuSVdlvuQALI914oPdJIc7IXlP+NECPjIjZI6ZxXEjgKLJqgCK/Aiuj8f5wYGgBGCAspUq8ozoBX4bl94n+IAjNMWiekgPACiweEcfBAWju8YgUkmz2z0VmPz3znODqIJNchiwxx0dcQuoE+ymImJaSoWxCxIJD7IcDgxTSTMDliIA275+W4fHhVLLkkUtMZ2CZhQUm5MUZq0iGvWkREz75JixYIxd/OYUMrk9u49mZjtDkGNUDyzWQHGtsG0QzrB7RBuaBVcgyARejE2HACuJqCFPzTqgtn4W0c2y6+qPCIvMQ0aKuQ3oDqq6wxF1HNIu/TMPyPM73OqQO6PzR9T6EdThP2Lzpj2jeMuRM4rikx30lMae3AWeKOlvyIznb27DsD0mzdbPvee3V00ZSUjw+lbKpeRJqy1UAyyTWAW48Y4geNNtKTQqJWMniVGMo35k44cIJPrTLt1/ED7uQtwndEWhiPrMsG0Tp1Jmpgo1PbMkONuXPgE/QmFsBi0+LHrGBtPXHkA+bR16DlOPqtsu8MKXyhixBAsMPi38plf6UvzSZcIJN+FJ0RUOSp+e9fguWQhOYV3Xxq3Bmpmh0krWxOTBdYo9sQj2Wqyr8Y+EEn+sG0VyKujqOEl/OZv65IH0d/8WLv07D2qw9M3P7YmBAD94nNjNSShUt3BGpob5PhrgbYlfyG6/MtStLdcqick75i5AUwZtKeHk+CXQvqYxPPg9Z+j/3jTQbc4YSqF/I65Bh26RHvEPPb1PH6pEDfTx0tYf6cEyYw6NjCeJ9SpMvQo7vqgHyPGJxNaXyjVajFKr+XQf3snBNpoISmPpb0yH9wuzpRfYSHqIMcU0svT4srKCAjJrn5KagFn8ehyQLLMuQ6+y1FK3a7G7VFSkm5wEYYbveLHekuN+uNTo3r0sJn6HLCckg4NqGlEKHXeQCam8rVUSkwxTELMhLkGWUrWazLmV8me2OWmvsSFlf5o7a7LYk8CXsKu12eUeRcj5ia6+jtKXF0LBQxZKvQml0d6W8vAJLXIU3iOUpEo5UmgyES1kJERAhFyuQYm6I7p6vl7eUutZsdWrNRrmOtvNpqvLlbk1Vqmi/AK2llDtISxQNWJsVUGduoYAvxE/wBSZr2heKf4/D6oxDZaaSNyDFfZkfsy/NPJ2YZ0eOWsYXTEISJyQhVETEYb8SCf78fLw5z/nIaB/uEEjNOAReh5WIoLmD8TdiUDjJOKeExHgoJL4+bcHnT16EyFr/JAZnZyebM8fwRUgfEffQ8tKq6Nm1y7qnF1twBU/7xEkZIx9NZKTfisOZmcJnDvQCwMAcjV2eOvFInGUUFrxolB27fn+C9QMnMcDtyUCTbKCfPmGmEcd8DSRjOCCmqzmuTfSjgdlnR01mM3WgDx2iLvPuttdLOZgD2QGOdIiDd/scxe9kIRdIzeXnYfFd/aGueeUWt0SO0lqi5HoN1hgE54iKjKHuOMxoGQaVaV+TdlW8HvkGrDKOIzybBqMh0WgB6LAjxx/ZCkXsCgAdkYNp4QXG1icmsXWXaOS9MWI13exph7pzWFijArbihZj6DAXuCJzCYGWzdxdB8iacZVLQIjhhzTgkxgNt7B7cLpwP6mcjbDNMhUK6iJDbsEgX42jwGMds2ewMzc8ITQELlpqCYRcrk81Uu6UoVTXnSdm2bOpQfcs3cI47VN/yzIvGMgw+Z6xaRZnmFKSQsQxjhwOEjzu4H85MjBVkXInMcpoVNY6Oo4xySOPoeJrtFqyNDkdRvpeDfDJCphlfZDW7TQxcq17hXBAe6JBL6P6GRkx9Hz1Gt/GHU7jIwEnXHmMVYRgK6yyzPvllWLH23zW4R2oo5mDwqPACM+8y7WD+2GJk+SWU7Rzq9oiFZAcXgxRe5FBOb3hkuiOc9wcHrifxMt8RjCakXQGJWiKk+AqD5ZEe1IuHAUVOlL7EEzckTjReh7MUhIFO7+muHkB/lqGp2XdFZ2ic9nj/2HesV/k4Kc1zrY8tOS9uwmLQ7+UscM/HhASToEqzStOXdxTMRTCNqtc6iqZ2G53ariIlAon9vWTmknS5+KsE5MOVmvx5OOdduDjE1d4f2GxDHun8cPT9Z02g2sR9CzHbDCLX4aJpYQDAwKHbPW1y1aXpBjqkY/GD0JfyrGm1BXhyQpQFdMp9Eye5L2bXR/oI/de1j1l+nlEzSFBoW74PlyZQbUj6unGssWScXRtohmUeDAeG67D4wGNcccJRZwz3EM9y8IqH/kTKL1ylpJTCvykpjX/T0gL+zUhZ/JuVoPiLDCwGKwNaaBnsbIyx6PmZJ9YRpQo9NDfTPA1XOSdNWKhbE572ZFTRkncg/a7DZKeZ7Fn3jwHZ99pMePZeW2s01d1yXRXs8jOQHOqPj8PHKyNhGFoem3hmDnBlcKkoajmIyk966xQ/p3ugRnqpGD4EGQnDCRZy++O+ZpOebrjh0J9jXSrrkd+ELF0jk63xCjPBq082gVhij0md8MvbkMYEs09cFvnzMy4/ZkjqMA5W0wrujzHKXIUUcw8ZQDiI9Ck5A8lKU6WRBkMLp2qtmlLBYFO8AWm+5jQK+auOTLwpZMS83u7ulqIiWxeWp+wkn4EVVekoDVpnad3Gm43mWw2UEyJ7IS2Gmbs0IbebXZWN5ttxkKatJp+D1U5Z3VE6Gq8dfdEoI9ixXWOl8UU4H6Qqb6OWNlNebuzQ+Dolz6tWE3SoYXlKvYql8xS52VCa21hBT2lnFWxaXoez01T801H3sJ6eUtxW1Ps1nHYGN68cHlHnbrMqZSMRpejgIRIoIz+Zu6TvxSEXKAtpPq8Ph9b7mj4c6I6IN8BIZUqZd3/PH+HT/48RHmN78YcxkKbrvanpx06a/ieydj+IQT5c5E0N7/n/6fD+EoelUGk37+jeg5VBjxyNLJe+NqHzPCTDQpEF5ehde0hDqTbhq1O2zdVaVdltNTFMVPa86KJKgynYxxi0WyBND4rGihnDwqC3CsuNJqaKmC8q29tKpdPm14E+uiPFgyb+fgJWZ4wEcw5eyPO7heiZOIOnRFPplm67ou7HEgGthNEf96strll5db88ofOb1s+CPLKcgTt4SN+wvDtZWu0nVcnrqZmujzZxd0+haeaRUCWvx0djWt+zxrQE4jgaLWKYBTCaDxHF7eQyeBErFEbjkMuwrPf7NhXuCeLlet4nM+D6Pch4dqAZLLUEVhTsDipO74dNrxOVDhxt8rYVx/6Mmhs4/rtA8Sdx3J7hV7oqZIYWOjnl4E/GV0556CvVBV71Odd/F4OMR8bjJTnS3UMmLrUVl2Iqa1M6FkYmcwFBp226rkOi99hdgHV0hCvpeOsq6BVBpo/Hrq0PhiFskmElr8MHb8IzntweFmfGIelNmNLszu+cAFRFv8db/H0cVrzbi55vrF0A3TQtN2iuqCtH+Epln0kNCFj/Vwxg0nWi3fAAFG+y7GGfX3gBJ9F7DnotuU/6A1O8p/CGdy2ZnDxPqZBxyJGOO8UQLyTRG9UnDb7UFtyqL6d4BTIelSZ+DUxXMGosQKKtdDBSYNlZrtfKbSm+9TVYRetPK9ySpq78nLuxd14VoL411M1+ybL7k88iaHXgBD6OGO3/Oxb7cTyx09r6WXx9hzO2vOmo5GBIDDp4+G4eLh27V4/pvQH24o+rvGB1rvqbRnxpkWjsddZP/SCj+Gd0EuUtWx+NiM2Sgu2h3i/+Ng5JekhTI5Qbe2iNFVhqdu4qqlZp1ru7DRpBFyHDcrUajZ/0QYG1RPqboMkepms1NN07ZZay7nUwM8RkL0xtqc1Oc6tL00PU4b0vaPVau4O5IVUrniE4aQFjxIXdcksrtxlBa25TlV0M6lpd2SlX9jA5RCWzIVKWjlP0VWuVjgRyAdYEwdfEenJsgpi8V6tKVVqUn4UCn+CbtZZ3uGj3y/Wu0paWaMbLeit3lcqbHjlffACrnnXF5QOzb0eY9xW4XFVaqlKh7yeY06sdnkK36XBqwjg8S/8UzdKDiK09/surMGLFL0yWkqW8TNUVoQoPwbbSKquoSUjAOeVg4X4ZVwNXcGnThQLdnJr3CMjf+Q5QiCM/8dOLwh9+Rb8eyG+cL6HTlSJj4M8ZZw7YdzlMtt/lRLTyRHYerX+cqdV34qhWv8vZfAzrIa3ePdA8ev8k9F4I6Q0sL9d8LqA50OlsqpDiap78+HmCVafmx0VtfglyhjUcH/F319MkU8uxAMx56Nm8uQPLD8ix9iGk/ElIWUK+ykRQC9aO9EeYhOBBRrTDsflAcwaPT5X2tz8mWGqzgsw1xnsXWdvIuWnC6iyfPO1LjPnccqUXccmAvqA3nqpvLof09AWckcBS2P9O1TSnC3rfk3E1X/Ge7k/yvmCdPJ/x+MM/F78L8kPdHuAxKqx2gg+FtHieKAlWZhXqRlsvvXNZLx3r9JuCV12iH5Xs8dXZRx/8JoPlNf3HlazPeUQWv4mHfYc4LibPqR7WwZ8T6ZBUotRSlZLYzepW8kcfnAeVgzz0hqgDAuiNCTrH0Rse+pr4wCqAvjZBZzj6moe+Ll6LA+jrE3SWo6976Bvik6kA+kZk3Dc89E3xxVgAfTMy7pse+pb4fC+AvhUZ9y0PfVt8ZxVA346M+7Z8iaPviA+iAug7DM1xd9bPQKpmYi6HJ3FMF6+GMX39DYDJ2tAcEQOQ6KU/scTwH/3p02iKiRcP+pvx2zFPwMbTCrj2tAKuP62AG08r4ObTCrj1tAJuP62AOx9VwGbypx+cT+6n+SdE/wUYnqXKwSwAAA==", + "view": { + "recursion": "bytesV2", + "enum": "number", + "yt_mode": true + } +} +@@; + +$udfParse = Udf(Protobuf::Parse, $config as TypeConfig); +$udfSerialize = Udf(Protobuf::Serialize, $config as TypeConfig); + +SELECT + TestField, + $udfParse(TestField), + $udfSerialize($udfParse(TestField)), + Ensure("Success", StablePickle($udfParse(TestField)) == StablePickle($udfParse($udfSerialize($udfParse(TestField)))), "Fail"), +FROM plato.Input; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_no_ser.sql b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_no_ser.sql index d75aa4af2fe..c582ddd2f71 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_no_ser.sql +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_no_ser.sql @@ -31,6 +31,6 @@ $config = @@{ $udfPar = Udf(Protobuf::Parse, $config as TypeConfig); $udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); -SELECT TestField, Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)), Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") FROM plato.Input; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.in b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.in index f397ecd77cf..53e094854d2 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.in +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.in @@ -1 +1,2 @@ {"TestField"="{\"inner\":{\"i\":{\"a\":\"hello\"}}}"}; +{"TestField"="{}"}; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.sql b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.sql index 87e9fc6bd26..b42bf7995f0 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.sql +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_plain.sql @@ -106,8 +106,11 @@ $udfParPB = Udf(Protobuf::Parse, $configPB as TypeConfig); $udfSerPB = Udf(Protobuf::Serialize, $configPB as TypeConfig); SELECT TestField, - Ensure("Success", $udfParNO(TestField) == $udfParNO($udfSerNO($udfParNO(TestField))), "Fail"), - Ensure("Success", $udfParYT(TestField) == $udfParYT($udfSerYT($udfParYT(TestField))), "Fail"), - Ensure("Success", $udfParPB(TestField) == $udfParPB($udfSerPB($udfParPB(TestField))), "Fail") + $udfParNO(TestField), + $udfSerNO($udfParNO(TestField)), + $udfParYT(TestField), + $udfSerYT($udfParYT(TestField)), + $udfParPB(TestField), + $udfSerPB($udfParPB(TestField)), FROM plato.Input; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_pb.sql b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_pb.sql index 35945ffe7a2..d8f903d74a5 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_pb.sql +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_pb.sql @@ -35,6 +35,6 @@ $config = @@{ $udfPar = Udf(Protobuf::Parse, $config as TypeConfig); $udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); -SELECT TestField, Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)), Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") FROM plato.Input; diff --git a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_yt.sql b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_yt.sql index 42312716e68..17e97cb9a18 100644 --- a/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_yt.sql +++ b/yql/essentials/udfs/common/protobuf/test/cases/yt_mode_ser_yt.sql @@ -34,6 +34,6 @@ $config = @@{ $udfPar = Udf(Protobuf::Parse, $config as TypeConfig); $udfSer = Udf(Protobuf::Serialize, $config as TypeConfig); -SELECT TestField, Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") +SELECT TestField, $udfPar(TestField), $udfSer($udfPar(TestField)), Ensure("Success", $udfPar(TestField) == $udfPar($udfSer($udfPar(TestField))), "Fail") FROM plato.Input; diff --git a/yql/essentials/udfs/language/yql/test/canondata/result.json b/yql/essentials/udfs/language/yql/test/canondata/result.json index 38975dcc8d3..2a589612bf0 100644 --- a/yql/essentials/udfs/language/yql/test/canondata/result.json +++ b/yql/essentials/udfs/language/yql/test/canondata/result.json @@ -19,6 +19,11 @@ "uri": "file://test.test_ExtractInsertHints_/results.txt" } ], + "test.test[ExtractKeywords]": [ + { + "uri": "file://test.test_ExtractKeywords_/results.txt" + } + ], "test.test[ExtractPragmas]": [ { "uri": "file://test.test_ExtractPragmas_/results.txt" diff --git a/yql/essentials/udfs/language/yql/test/canondata/test.test_ExtractKeywords_/results.txt b/yql/essentials/udfs/language/yql/test/canondata/test.test_ExtractKeywords_/results.txt new file mode 100644 index 00000000000..d638a52c139 --- /dev/null +++ b/yql/essentials/udfs/language/yql/test/canondata/test.test_ExtractKeywords_/results.txt @@ -0,0 +1,78 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "q"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "select 1 as x union all select 2 as x"; + [ + [ + [ + "KEYWORD"; + "ALL"; + "1" + ]; + [ + "KEYWORD"; + "AS"; + "2" + ]; + [ + "KEYWORD"; + "SELECT"; + "2" + ]; + [ + "KEYWORD"; + "UNION"; + "1" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/language/yql/test/cases/ExtractKeywords.sql b/yql/essentials/udfs/language/yql/test/cases/ExtractKeywords.sql new file mode 100644 index 00000000000..c3346ae3c27 --- /dev/null +++ b/yql/essentials/udfs/language/yql/test/cases/ExtractKeywords.sql @@ -0,0 +1,6 @@ +SELECT + q,ListSort(ListFilter(YqlLang::RuleFreq(q),($x)->($x.0 in ("KEYWORD")))) +FROM (VALUES + ("select 1 as x union all select 2 as x") +) AS a(q) +order by q diff --git a/yql/essentials/udfs/language/yql/ya.make b/yql/essentials/udfs/language/yql/ya.make index 5c951c1cc16..e0c16d6f5da 100644 --- a/yql/essentials/udfs/language/yql/ya.make +++ b/yql/essentials/udfs/language/yql/ya.make @@ -23,6 +23,7 @@ PEERDIR( yql/essentials/sql/v1/proto_parser/antlr4_ansi yql/essentials/sql/pg_dummy yql/essentials/sql/v1/format + yql/essentials/sql/v1/reflect library/cpp/protobuf/util ) diff --git a/yql/essentials/udfs/language/yql/yql_language_udf.cpp b/yql/essentials/udfs/language/yql/yql_language_udf.cpp index 6460031a6ab..23bc092099c 100644 --- a/yql/essentials/udfs/language/yql/yql_language_udf.cpp +++ b/yql/essentials/udfs/language/yql/yql_language_udf.cpp @@ -2,6 +2,7 @@ #include <yql/essentials/sql/v1/context.h> #include <yql/essentials/sql/v1/sql_translation.h> +#include <yql/essentials/sql/v1/reflect/sql_reflect.h> #include <yql/essentials/sql/v1/lexer/antlr4/lexer.h> #include <yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h> #include <yql/essentials/sql/v1/proto_parser/proto_parser.h> @@ -31,11 +32,17 @@ public: TRuleFreqVisitor(TContext& ctx) : Translation(ctx) { + KeywordNames = NSQLReflect::LoadLexerGrammar().KeywordNames; } void Visit(const NProtoBuf::Message& msg) { const NProtoBuf::Descriptor* descr = msg.GetDescriptor(); if (descr == TToken::GetDescriptor()) { + const auto& token = dynamic_cast<const TToken&>(msg); + auto upper = to_upper(token.GetValue()); + if (KeywordNames.contains(upper)) { + Freqs[std::make_pair("KEYWORD", upper)] += 1; + } return; } else if (descr == TRule_use_stmt::GetDescriptor()) { VisitUseStmt(dynamic_cast<const TRule_use_stmt&>(msg)); @@ -285,6 +292,7 @@ private: THashMap<std::pair<TString, TString>, ui64> Freqs; TRuleFreqTranslation Translation; + THashSet<TString> KeywordNames; }; SIMPLE_UDF(TObfuscate, TOptional<char*>(TAutoMap<char*>)) { diff --git a/yql/tools/yqlrun/lib/yqlrun_lib.cpp b/yql/tools/yqlrun/lib/yqlrun_lib.cpp index 0eba257d9a2..aad7657ea4a 100644 --- a/yql/tools/yqlrun/lib/yqlrun_lib.cpp +++ b/yql/tools/yqlrun/lib/yqlrun_lib.cpp @@ -107,14 +107,17 @@ TYqlRunTool::TYqlRunTool() AddClusterMapping(TString{"plato"}, TString{YtProviderName}); AddProviderFactory([this]() -> NYql::TDataProviderInitializer { - auto yqlNativeServices = NFile::TYtFileServices::Make(GetFuncRegistry().Get(), TablesMapping_, GetFileStorage(), TmpDir_, KeepTemp_, TablesDirMapping_); - auto ytNativeGateway = CreateYtFileGateway(yqlNativeServices); + auto ytNativeGateway = CreateYtGateway(); auto optimizerFactory = CreateCboFactory(); return GetYtNativeDataProviderInitializer(ytNativeGateway, optimizerFactory, {}); }); SetPeepholePipelineConfigurator(&PEEPHOLE_CONFIG_INSTANCE); +} +IYtGateway::TPtr TYqlRunTool::CreateYtGateway() { + auto yqlNativeServices = NFile::TYtFileServices::Make(GetFuncRegistry().Get(), TablesMapping_, GetFileStorage(), TmpDir_, KeepTemp_, TablesDirMapping_); + return CreateYtFileGateway(yqlNativeServices); } IOptimizerFactory::TPtr TYqlRunTool::CreateCboFactory() { diff --git a/yql/tools/yqlrun/lib/yqlrun_lib.h b/yql/tools/yqlrun/lib/yqlrun_lib.h index be33617c62e..ab358e28dbb 100644 --- a/yql/tools/yqlrun/lib/yqlrun_lib.h +++ b/yql/tools/yqlrun/lib/yqlrun_lib.h @@ -1,5 +1,6 @@ #pragma once +#include <yt/yql/providers/yt/provider/yql_yt_gateway.h> #include <yql/essentials/core/cbo/cbo_optimizer_new.h> #include <yql/essentials/tools/yql_facade_run/yql_facade_run.h> @@ -15,6 +16,8 @@ public: protected: virtual IOptimizerFactory::TPtr CreateCboFactory(); + virtual IYtGateway::TPtr CreateYtGateway(); + private: THashMap<TString, TString> TablesMapping_; THashMap<TString, TString> TablesDirMapping_; |