diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-04-04 11:33:30 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-04-04 11:33:30 +0000 |
commit | 5d5c6dc1b2339bf7d7757ccd8c7f7fc02b88d63a (patch) | |
tree | b43ae343b8f9335b0289956b52f10ead5fc3661c | |
parent | 0772affb4f970fafcf51d27b9f05abd2b061139a (diff) | |
parent | 1340d5e99dbcdc63468e2f5f7ffab3a5b5f20dd0 (diff) | |
download | ydb-5d5c6dc1b2339bf7d7757ccd8c7f7fc02b88d63a.tar.gz |
Merge pull request #16761 from ydb-platform/merge-libs-250404-0808
194 files changed, 2791 insertions, 1125 deletions
diff --git a/build/conf/go.conf b/build/conf/go.conf index 397c1fc332..fe60cd6224 100644 --- a/build/conf/go.conf +++ b/build/conf/go.conf @@ -1020,12 +1020,34 @@ module GO_TEST: GO_PROGRAM { } # tag:go-specific +_GO_TOOL_ENV=${env:"PATH=${GO_TOOLS_ROOT}/bin"} ${env:"GOROOT=${GO_TOOLS_ROOT}"} ${env:"GOCACHE=${BINDIR}/.gocache"} + +# tag:go-specific +_GO_GO_MOD=${ARCADIA_ROOT}/go.mod +_GO_MODULES_TXT=${ARCADIA_ROOT}/vendor/modules.txt + +# tag:go-specific +_GO_TOOL_MOCKGEN=vendor/go.uber.org/mock/mockgen +_GO_TOOL_REFLECTOR=library/go/mockgen/reflector +_GO_TOOL_OAPI_CODEGEN=vendor/github.com/deepmap/oapi-codegen/cmd/oapi-codegen +_GO_TOOL_OAPI_CODEGEN_TAXI=taxi/infra/go/platform/tools/pkg/deepmap/oapi-codegen/cmd/oapi-codegen +_GO_TOOL_OAPI_CODEGEN_TAXI_1134=taxi/infra/go/platform/tools/pkg1134/oapi-codegen-1.13.4/cmd/oapi-codegen + +# tag:go-specific +### @usage: GO_MOCKGEN_FROM(Path) +### +### Part of Go mock module definition, both reflect and source mode. +### Defines path for mock interfaces source macro GO_MOCKGEN_FROM(Path) { SET(MOCKGEN_FROM ${Path}) SET(MOCKGEN_MODULE ${GO_ARCADIA_PROJECT_PREFIX}${Path}) } # tag:go-specific +### @usage: GO_MOCKGEN_CONTRIB_FROM(Path) +### +### Part of Go mock module definition, both reflect and source mode. +### Defines path for mock interfaces source for contrib (vendored) sources macro GO_MOCKGEN_CONTRIB_FROM(Path) { SET(MOCKGEN_FROM ${GO_CONTRIB_PROJECT_PREFIX}${Path}) SET(MOCKGEN_MODULE ${Path}) @@ -1033,10 +1055,24 @@ macro GO_MOCKGEN_CONTRIB_FROM(Path) { # tag:go-specific macro GO_MOCKGEN_TYPES(Types...) { - SET(MOCKGEN_TYPES ${join=\\${__COMMA__}:Types}) + SET(MOCKGEN_TYPES ${join=,:Types}) } +MOCKGEN_PACKAGE="mocks" # tag:go-specific +### @usage: GO_MOCKGEN_PACKAGE(package) +### +### Part of Go mock module definition, source mode. +### Specifies generated package name, instead of default one "mocks" +macro GO_MOCKGEN_PACKAGE(PACKAGE) { + SET(MOCKGEN_PACKAGE ${PACKAGE}) +} + +# tag:go-specific +### @usage: GO_MOCKGEN_REFLECT() +### +### Part of Go mock module definition, reflect mode. +### Creates generator program, expected in `gen` folder macro GO_MOCKGEN_REFLECT() { PEERDIR(${GOSTD}/encoding/gob) PEERDIR(${GOSTD}/flag) @@ -1047,20 +1083,80 @@ macro GO_MOCKGEN_REFLECT() { PEERDIR(vendor/go.uber.org/mock/mockgen/model) PEERDIR(${MOCKGEN_FROM}) - RUN_PROGRAM(vendor/go.uber.org/mock/mockgen -prog_only $MOCKGEN_MODULE $MOCKGEN_TYPES STDOUT main.go CWD $ARCADIA_BUILD_ROOT) + .CMD=${cwd:BINDIR} ${tool:_GO_TOOL_REFLECTOR} ${MOCKGEN_MODULE} ${MOCKGEN_TYPES} ${stdout;output:"main.go"} ${hide;kv:"p GR"} ${hide;kv:"pc blue"} + .STRUCT_CMD=yes } # tag:go-specific -_GO_EXE_SUFFIX= -when ($OS_WINDOWS == "yes") { - _GO_EXE_SUFFIX=.exe +macro _GO_MOCKGEN_MOCKS_IMPL(GEN_TOOL) { + PEERDIR(${GOSTD}/reflect) + PEERDIR(vendor/go.uber.org/mock/gomock) + + .CMD=${cwd:BINDIR} ${tool:GEN_TOOL} -output gob.data && ${cwd:BINDIR} ${tool:_GO_TOOL_MOCKGEN} -package ${MOCKGEN_PACKAGE} -model_gob gob.data ${stdout;output:"main.go"} $_GO_TOOL_ENV ${hide;kv:"p GM"} ${hide;kv:"pc blue"} } # tag:go-specific +### @usage: GO_MOCKGEN_MOCKS() +### +### Part of Go mock module definition, reflect mode. +### Generates mocks, expect to have `gen` folder with GO_MOCKGEN_REFLECT macro GO_MOCKGEN_MOCKS() { + _GO_MOCKGEN_MOCKS_IMPL(${MODDIR}/gen) +} + +_GO_MOCKGEN_SOURCE_CMDLINE=\ + $FS_TOOLS md ${BINDIR}/.arcadia/vendor && \ + $FS_TOOLS md ${BINDIR}/.arcadia/$MOCKGEN_FROM && \ + $COPY_CMD ${context=TEXT;input:_GO_GO_MOD} ${BINDIR}/.arcadia/go.mod && \ + $COPY_CMD ${context=TEXT;input:_GO_MODULES_TXT} ${BINDIR}/.arcadia/vendor/modules.txt && \ + $COPY_CMD ${context=TEXT;input:SOURCE} ${BINDIR}/.arcadia/$SOURCE && \ + ${cwd;suf=/.arcadia:BINDIR} ${tool:_GO_TOOL_MOCKGEN} -package ${MOCKGEN_PACKAGE} -source ${rootrel;context=TEXT;input:SOURCE} ${ARGS} \ + $_GO_TOOL_ENV ${stdout;output;suf=.source.gen.go;noext:FILENAME} \ + ${hide;context=TEXT;input;suf=/.arcadia/go.mod:BINDIR} ${hide;context=TEXT;input;suf=/.arcadia/vendor/modules.txt:BINDIR} ${hide;context=TEXT;input:IN_NOPARSE} \ + ${hide;kv:"p GS"} ${hide;kv:"pc blue"} + +# tag:go-specific +macro _GO_MOCKGEN_SOURCE_IMPL(SOURCE, FILENAME, ARGS[], IN_NOPARSE[]) { PEERDIR(${GOSTD}/reflect) + PEERDIR(${GOSTD}/context) PEERDIR(vendor/go.uber.org/mock/gomock) + .CMD=$_GO_MOCKGEN_SOURCE_CMDLINE +} + +# tag:go-specific +### @usage: GO_MOCKGEN_SOURCE(FILE, ARGS[], IN_NOPARSE[]) +### +### Part of Go mock module definition, source mode. +### Generates mocks from file from GO_MOCKGEN_FROM or GO_MOCKGEN_CONTRIB_FROM +### Can be placed multiple times in same ya.make +macro GO_MOCKGEN_SOURCE(FILE, ARGS[], IN_NOPARSE[]) { + _GO_MOCKGEN_SOURCE_IMPL($MOCKGEN_FROM/$FILE $FILE ARGS ${ARGS} IN_NOPARSE ${IN_NOPARSE}) +} + +macro _GO_OAPI_CODEGEN_IMPL(TOOL, IN, FILENAME, GENERATE="", PACKAGE="", TEMPLATES="", CONFIG="", IN_NOPARSE[], Args...) { + .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:TOOL} ${pre=--generate :GENERATE} ${pre=--package :PACKAGE} ${pre=--templates :TEMPLATES} ${pre=--config :CONFIG} $Args ${context=TEXT;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${stdout;output:FILENAME} ${_GO_TOOL_ENV} ${hide;kv:"p GC"} ${hide;kv:"pc blue"} +} + +# tag:go-specific +### @usage: GO_OAPI_CODEGEN(GENERATE, PACKAGE, IN, IN_NOPARSE[], Args...) +### +### Go oapi-codegen module +### Generates GENERATE thing with PACKAGE package from file IN into STDOUT file +### Optional arguments will be passed into generator +### IN_NOPARSE - input files required for running generation, except IN +### Can be placed multiple times in same ya.make +macro GO_OAPI_CODEGEN(GENERATE, PACKAGE, IN, IN_NOPARSE[], Args...) { + _GO_OAPI_CODEGEN_IMPL(${_GO_TOOL_OAPI_CODEGEN} ${IN} ${suf=.gen.go:GENERATE} GENERATE ${GENERATE} PACKAGE ${PACKAGE} ${Args} IN_NOPARSE ${IN_NOPARSE}) +} - # Unfortunately ${rootrel;tool:TOOL} doesn't work currently, so we use this ugly workaround $MODDIR/gen/gen$_GO_EXE_SUFFIX - RUN_PROGRAM(vendor/go.uber.org/mock/mockgen -package mocks -exec_only $MODDIR/gen/gen$_GO_EXE_SUFFIX ${GO_ARCADIA_PROJECT_PREFIX}${MOCKGEN_FROM} $MOCKGEN_TYPES STDOUT main.go TOOL $MODDIR/gen CWD $ARCADIA_BUILD_ROOT ENV PATH=${GO_TOOLS_ROOT}/bin GOROOT=${GO_TOOLS_ROOT} GOCACHE=${BINDIR}/.gocache) +# tag:go-specific +### private, taxi only +macro GO_OAPI_CODEGEN_TAXI(GENERATE, PACKAGE, IN, IN_NOPARSE[], OUT_SUFFIX="", Args...) { + _GO_OAPI_CODEGEN_IMPL(${_GO_TOOL_OAPI_CODEGEN_TAXI} ${IN} ${suf=${OUT_SUFFIX}.gen.go:GENERATE} GENERATE ${GENERATE} PACKAGE ${PACKAGE} ${Args} IN_NOPARSE ${IN_NOPARSE}) +} + +# tag:go-specific +### private, taxi only +macro GO_OAPI_CODEGEN_TAXI_1134(GENERATE="", PACKAGE="", TEMPLATES="", CONFIG="", IN, FILENAME, IN_NOPARSE[], Args...) { + _GO_OAPI_CODEGEN_IMPL(${_GO_TOOL_OAPI_CODEGEN_TAXI_1134} ${IN} ${suf=.gen.go:FILENAME} ${pre=GENERATE :GENERATE} ${pre=PACKAGE :PACKAGE} ${pre=TEMPLATES :TEMPLATES} ${pre=CONFIG :CONFIG} ${Args} IN_NOPARSE ${IN_NOPARSE}) } diff --git a/build/conf/proto.conf b/build/conf/proto.conf index 6f631e5bb2..dcc4389571 100644 --- a/build/conf/proto.conf +++ b/build/conf/proto.conf @@ -374,6 +374,9 @@ macro _UPDATE_GO_PROTO_ENV(NAME, ENV[], DUMMY...) { macro GO_PROTO_PLUGIN(NAME, EXT, TOOL, DEPS[]) { SET_APPEND(GO_PROTO_OPTS $_PROTO_PLUGIN_ARGS_BASE($NAME $TOOL)) SET_APPEND(GO_PROTO_OUTS \${hide;noauto;norel;output;suf=$EXT;nopath;noext:File}) + _UPDATE_GO_PROTO_ENV(${suf= ENV;ext=mdb-validators:NAME} PATH=${GO_TOOLS_ROOT}/bin GOROOT=${GO_TOOLS_ROOT} GOCACHE=${BINDIR}/.gocache) + _UPDATE_GO_PROTO_ENV(${suf= ENV;ext=proto_validation:NAME} PATH=${GO_TOOLS_ROOT}/bin GOROOT=${GO_TOOLS_ROOT} GOCACHE=${BINDIR}/.gocache) + _UPDATE_GO_PROTO_ENV(${suf= ENV;ext=mdb-dynforms:NAME} PATH=${GO_TOOLS_ROOT}/bin GOROOT=${GO_TOOLS_ROOT} GOCACHE=${BINDIR}/.gocache) PEERDIR(${DEPS}) } diff --git a/build/conf/python.conf b/build/conf/python.conf index 82e037fb25..d99de1e854 100644 --- a/build/conf/python.conf +++ b/build/conf/python.conf @@ -302,18 +302,16 @@ macro STYLE_DUMMY() { ### Check python3 sources for style issues using black. macro STYLE_PYTHON(CONFIG_TYPE="") { .ALLOWED_IN_LINTERS_MAKE=yes - _ADD_PY_LINTER_CHECK(NAME black LINTER tools/black_linter/black_linter FILE_PROCESSING_TIME $BLACK_FILE_PROCESSING_TIME CONFIGS $PYTHON_LINTERS_DEFAULT_CONFIGS CUSTOM_CONFIG $CONFIG_TYPE CONFIG_TYPE $CONFIG_TYPE) + _ADD_PY_LINTER_CHECK(NAME black LINTER tools/black_linter/black_linter FILE_PROCESSING_TIME $BLACK_FILE_PROCESSING_TIME CONFIGS $PYTHON_LINTERS_DEFAULT_CONFIGS CONFIG_TYPE $CONFIG_TYPE) } # tag:python-specific tag:test ### @usage: STYLE_RUFF([CONFIG_TYPE config_type] [CHECK_FORMAT]) ### ### Check python3 sources for style issues using ruff. `CHECK_FORMAT` enables `ruff format` check. -RUFF_PROJECT_TO_CONFIG_MAP=build/config/tests/ruff/ruff_config_paths.json macro STYLE_RUFF(CONFIG_TYPE="", CHECK_FORMAT?"yes":"no") { .ALLOWED_IN_LINTERS_MAKE=yes - SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS ${ARCADIA_ROOT}/${RUFF_PROJECT_TO_CONFIG_MAP}) - _ADD_PY_LINTER_CHECK(NAME ruff LINTER tools/ruff_linter/bin/ruff_linter GLOBAL_RESOURCES build/external_resources/ruff FILE_PROCESSING_TIME $RUFF_FILE_PROCESSING_TIME CONFIGS $PYTHON_LINTERS_DEFAULT_CONFIGS PROJECT_TO_CONFIG_MAP $RUFF_PROJECT_TO_CONFIG_MAP CONFIG_TYPE $CONFIG_TYPE EXTRA_PARAMS check_format=${CHECK_FORMAT}) + _ADD_PY_LINTER_CHECK(NAME ruff LINTER tools/ruff_linter/bin/ruff_linter GLOBAL_RESOURCES build/external_resources/ruff FILE_PROCESSING_TIME $RUFF_FILE_PROCESSING_TIME CONFIGS $PYTHON_LINTERS_DEFAULT_CONFIGS CONFIG_TYPE $CONFIG_TYPE EXTRA_PARAMS check_format=${CHECK_FORMAT}) } # tag:python-specific tag:test @@ -746,6 +744,14 @@ module _BASE_PY_PROGRAM: _BASE_PROGRAM { SET(MODULE_LANG PY2) } +# tag:codenav tag:py2 tag:deprecated +when ($CODENAVIGATION && $NOCODENAVIGATION != "yes") { + PY_PROGRAM_LINK_EXE=$LINK_EXE && ${hide;kv:"pyndex $TARGET"} +} +otherwise { + PY_PROGRAM_LINK_EXE=$LINK_EXE +} + # tag:python-specific tag:codenav when ($CODENAVIGATION && $NOCODENAVIGATION != "yes") { PY3_PROGRAM_LINK_EXE=$LINK_EXE && ${hide;kv:"py3yndex $TARGET"} diff --git a/build/export_generators/ide-gradle/build.gradle.kts.jinja b/build/export_generators/ide-gradle/build.gradle.kts.jinja index c037f3e7bc..603e0a2525 100644 --- a/build/export_generators/ide-gradle/build.gradle.kts.jinja +++ b/build/export_generators/ide-gradle/build.gradle.kts.jinja @@ -1,8 +1,11 @@ -{%- macro PatchRoots(arg, depend = false) -%} +{%- macro PatchRoots(arg, depend = false, output = false) -%} {#- Always replace (arcadia_root) === (SOURCE_ROOT in ymake) to $project_root in Gradle -#} {%- if depend -%} {#- Replace (export_root) === (BUILD_ROOT in ymake) to $project_root in Gradle, because prebuilt tools in arcadia, not in build_root -#} "{{ arg|replace(export_root, "$project_root")|replace(arcadia_root, "$project_root") }}" +{%- elif output and arg[0] != '/' -%} +{#- Relative outputs in buildDir -#} +"$buildDir/{{ arg }}" {%- else -%} {#- Replace (export_root) === (BUILD_ROOT in ymake) to baseBuildDir in Gradle - root of all build folders for modules -#} "{{ arg|replace(export_root, "$baseBuildDir")|replace(arcadia_root, "$project_root") }}" @@ -25,6 +28,7 @@ {%- include "[generator]/javadoc.jinja" -%} {%- include "[generator]/run_program.jinja" -%} {%- include "[generator]/run_java_program.jinja" -%} +{%- include "[generator]/run_common.jinja" -%} {%- include "[generator]/dependencies.jinja" -%} {%- include "extra-tests.gradle.kts" ignore missing -%} {%- if publish -%} diff --git a/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja b/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja index ec3465d316..f490b8f309 100644 --- a/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja +++ b/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja @@ -1,16 +1,23 @@ -{%- macro PatchRoots(arg, depend = false) -%} +{%- macro PatchRoots(arg, depend = false, output = false) -%} {#- Always replace (arcadia_root) === (SOURCE_ROOT in ymake) to $project_root in Gradle -#} {%- if depend -%} {#- Replace (export_root) === (BUILD_ROOT in ymake) to $project_root in Gradle, because prebuilt tools in arcadia, not in build_root -#} "{{ arg|replace(export_root, "$project_root")|replace(arcadia_root, "$project_root") }}" +{%- elif output and arg[0] != '/' -%} +{#- Relative outputs in buildDir -#} +"$buildDir/{{ arg }}" {%- else -%} {#- Replace (export_root) === (BUILD_ROOT in ymake) to baseBuildDir in Gradle - root of all build folders for modules -#} "{{ arg|replace(export_root, "$baseBuildDir")|replace(arcadia_root, "$project_root") }}" {%- endif -%} {%- endmacro -%} -{%- macro PatchGeneratedProto(arg) -%} -"{{ arg|replace(export_root, "$mainExtractedIncludeProtosDir")|replace(arcadia_root, "$mainExtractedIncludeProtosDir") }}" +{%- macro PatchGeneratedProto(arg, relative = false) -%} +{%- if relative -%} +"{{ arg|replace(export_root + "/", "")|replace(arcadia_root + "/", "") }}" +{%- else -%} +"{{ arg|replace(export_root, "$baseBuildDir")|replace(arcadia_root, "$baseBuildDir") }}" +{%- endif -%} {%- endmacro -%} {%- include "[generator]/proto_vars.jinja" -%} @@ -27,6 +34,7 @@ {%- include "[generator]/proto_prepare.jinja" -%} {%- include "[generator]/run_program.jinja" -%} {%- include "[generator]/run_java_program.jinja" -%} +{%- include "[generator]/run_common.jinja" -%} {%- include "[generator]/javadoc.jinja" -%} {%- include "[generator]/proto_dependencies.jinja" -%} {%- include "[generator]/debug.jinja" ignore missing -%} diff --git a/build/export_generators/ide-gradle/builddir.jinja b/build/export_generators/ide-gradle/builddir.jinja index f3fb92f3ce..88a5694d15 100644 --- a/build/export_generators/ide-gradle/builddir.jinja +++ b/build/export_generators/ide-gradle/builddir.jinja @@ -1,6 +1,6 @@ {#- empty string #} -val baseBuildDir = "{{ export_root }}/gradle.build/" -buildDir = file(baseBuildDir + project.path.replaceFirst(":", "/").replace(":", ".")) +val baseBuildDir = "{{ export_root }}/gradle.build" +buildDir = file(baseBuildDir + "/" + project.path.replace(":", "/")) subprojects { - buildDir = file(baseBuildDir + project.path.replaceFirst(":", "/").replace(":", ".")) + buildDir = file(baseBuildDir + "/" + project.path.replace(":", "/")) } diff --git a/build/export_generators/ide-gradle/proto_builddir.jinja b/build/export_generators/ide-gradle/proto_builddir.jinja index ac50a1d33b..745f52e6e2 100644 --- a/build/export_generators/ide-gradle/proto_builddir.jinja +++ b/build/export_generators/ide-gradle/proto_builddir.jinja @@ -1,5 +1,5 @@ {%- include "[generator]/builddir.jinja" %} val mainProtosDir = File(buildDir, "main_protos") -{%- if libraries|length %} +{%- if extractLibrariesProtosTask %} val mainExtractedIncludeProtosDir = File(buildDir, "extracted-include-protos/main") {%- endif %} diff --git a/build/export_generators/ide-gradle/proto_prepare.jinja b/build/export_generators/ide-gradle/proto_prepare.jinja index cf6fc96adf..804428a964 100644 --- a/build/export_generators/ide-gradle/proto_prepare.jinja +++ b/build/export_generators/ide-gradle/proto_prepare.jinja @@ -1,18 +1,39 @@ -{#- empty string #} -{%- if target.proto_files|length %} +{%- if prepareProtosTask %} + val prepareMainProtos = tasks.register<Copy>("prepareMainProtos") { +{%- if target.proto_files|length %} from("$project_root") { {#- list of all current project proto files -#} -{%- for proto in target.proto_files %} +{%- for proto in target.proto_files %} include("{{ proto }}") -{%- endfor %} +{%- endfor %} + } +{% endif -%} +{%- if target.runs|length or target.custom_runs|length %} + from("$baseBuildDir") { +{%- for run in target.runs -%} +{%- for out in run.out %} + include({{ PatchGeneratedProto(out, true) }}) +{%- endfor -%} +{%- for out_dir in run.out_dir %} + include({{ PatchGeneratedProto(out_dir, true) }} + "/**/*.proto") +{%- endfor -%} +{%- endfor -%} +{%- for custom_run in target.custom_runs -%} +{%- for out in custom_run.outputs %} + include({{ PatchGeneratedProto(out, true) }}) +{%- endfor -%} +{%- endfor %} } +{% endif -%} into(mainProtosDir) } -{%- endif %} +{%- endif -%} + +{%- if extractLibrariesProtosTask -%} -{% if libraries|length -%} val extractMainLibrariesProtos = tasks.register<Copy>("extractMainLibrariesProtos") { +{%- if libraries|length -%} from("$project_root") { {#- list of all library directories -#} {%- for library in libraries -%} @@ -20,15 +41,16 @@ val extractMainLibrariesProtos = tasks.register<Copy>("extractMainLibrariesProto include("{{ path_and_jar[0] }}/**/*.proto") {%- endfor %} } +{% endif -%} into(mainExtractedIncludeProtosDir) } +{%- endif %} -{% endif -%} afterEvaluate { -{%- if target.proto_files|length %} +{%- if prepareProtosTask %} tasks.getByName("extractProto").dependsOn(prepareMainProtos) {%- endif %} -{%- if libraries|length %} +{%- if extractLibrariesProtosTask %} tasks.getByName("extractProto").dependsOn(extractMainLibrariesProtos) {%- endif %} } diff --git a/build/export_generators/ide-gradle/proto_vars.jinja b/build/export_generators/ide-gradle/proto_vars.jinja index 3f357ce243..95120c106e 100644 --- a/build/export_generators/ide-gradle/proto_vars.jinja +++ b/build/export_generators/ide-gradle/proto_vars.jinja @@ -1,7 +1,9 @@ {%- set publish = target.publish -%} -{%- set libraries = target.consumer|selectattr('type', 'eq', 'library') -%} {%- set with_kotlin = target.with_kotlin -%} {%- set kotlin_version = target.kotlin_version -%} {%- set proto_template = true -%} +{%- set prepareProtosTask = target.proto_files|length or target.runs|length or target.custom_runs|length -%} +{%- set libraries = target.consumer|selectattr('type', 'eq', 'library') -%} +{%- set extractLibrariesProtosTask = libraries|length -%} {%- include "[generator]/jdk.jinja" -%} diff --git a/build/export_generators/ide-gradle/run_common.jinja b/build/export_generators/ide-gradle/run_common.jinja new file mode 100644 index 0000000000..4f8a207bb4 --- /dev/null +++ b/build/export_generators/ide-gradle/run_common.jinja @@ -0,0 +1,11 @@ +{%- if not proto_template and (target.runs|length or target.custom_runs|length) %} + +tasks.getByName("sourcesJar").dependsOn(tasks.compileJava) +{%- if with_kotlin %} +tasks.getByName("sourcesJar").dependsOn(tasks.compileKotlin) +{%- endif %} +tasks.getByName("sourcesJar").mustRunAfter(tasks.compileTestJava) +{%- if with_kotlin %} +tasks.getByName("sourcesJar").mustRunAfter(tasks.compileTestKotlin) +{%- endif -%} +{%- endif -%} diff --git a/build/export_generators/ide-gradle/run_java_program.jinja b/build/export_generators/ide-gradle/run_java_program.jinja index 527a81c5b4..5630c84be3 100644 --- a/build/export_generators/ide-gradle/run_java_program.jinja +++ b/build/export_generators/ide-gradle/run_java_program.jinja @@ -5,8 +5,11 @@ val runJav{{ loop.index }} = task<JavaExec>("runJavaProgram{{ loop.index }}") { group = "build" description = "Code generation by run java program" -{%- if run.cwd %} +{#- Ignore default CWD to export_root -#} +{%- if run.cwd and run.cwd != export_root %} workingDir = file({{ PatchRoots(run.cwd) }}) +{%- else %} + workingDir = file("$buildDir") {%- endif -%} {%- set classpaths = run.classpath|reject('eq', '@.cplst') -%} @@ -25,10 +28,16 @@ val runJav{{ loop.index }} = task<JavaExec>("runJavaProgram{{ loop.index }}") { args = listOf( {%- for arg in run.args -%} {%- if not loop.first %} -{%- if proto_template and (run.out_dir|select("eq", arg)|length or run.out|select("eq", arg)|length) %} +{%- if run.out_dir|select("eq", arg)|length or run.out|select("eq", arg)|length -%} +{%- if proto_template %} {{ PatchGeneratedProto(arg) }}, +{%- else %} + {{ PatchRoots(arg, false, true) }}, +{%- endif %} +{%- elif run.tool|select("in", arg)|length or run.in|select("eq", arg)|length or run.in_dir|select("eq", arg)|length %} + {{ PatchRoots(arg, true) }}, {%- else %} - {{ PatchRoots(arg, run.tool|select("in", arg)|length) }}, + {{ PatchRoots(arg) }}, {%- endif -%} {%- endif -%} {%- endfor %} @@ -55,13 +64,21 @@ val runJav{{ loop.index }} = task<JavaExec>("runJavaProgram{{ loop.index }}") { {%- if run.out_dir|length -%} {%- for out_dir in run.out_dir|unique %} - outputs.dir({{ PatchRoots(out_dir) }}) +{%- if proto_template %} + outputs.files({{ PatchGeneratedProto(out_dir) }}) +{%- else %} + outputs.dir({{ PatchRoots(out_dir, false, true) }}) +{%- endif -%} {%- endfor -%} {%- endif -%} {%- if run.out|length -%} {%- for out in run.out|unique %} - outputs.files({{ PatchRoots(out) }}) +{%- if proto_template %} + outputs.files({{ PatchGeneratedProto(out) }}) +{%- else %} + outputs.files({{ PatchRoots(out, false, true) }}) +{%- endif -%} {%- endfor -%} {%- endif -%} @@ -75,20 +92,23 @@ val runJav{{ loop.index }} = task<JavaExec>("runJavaProgram{{ loop.index }}") { {%- if proto_template %} tasks.getByName("prepareMainProtos").dependsOn(runJav{{ loop.index }}) -tasks.getByName("extractMainLibrariesProtos").dependsOn(runJav{{ loop.index }}) -{% else %} - -tasks.getByName("sourcesJar").dependsOn(runJav{{ loop.index }}) -{% endif -%} +{%- endif %} tasks.compileJava.configure { dependsOn(runJav{{ loop.index }}) } +tasks.compileTestJava.configure { + dependsOn(runJav{{ loop.index }}) +} {%- if with_kotlin %} tasks.compileKotlin.configure { dependsOn(runJav{{ loop.index }}) } -{%- endif %} -{% endfor -%} -{% endif -%} + +tasks.compileTestKotlin.configure { + dependsOn(runJav{{ loop.index }}) +} +{%- endif -%} +{%- endfor -%} +{%- endif -%} diff --git a/build/export_generators/ide-gradle/run_program.jinja b/build/export_generators/ide-gradle/run_program.jinja index 147ae6c165..91a314c952 100644 --- a/build/export_generators/ide-gradle/run_program.jinja +++ b/build/export_generators/ide-gradle/run_program.jinja @@ -5,22 +5,30 @@ val runProg{{ loop.index }} = task<Exec>("runProgram{{ loop.index }}") { group = "build" description = "Code generation by run custom program" -{%- if custom_run.cwd %} +{#- Ignore default CWD to export_root -#} +{%- if custom_run.cwd and custom_run.cwd != export_root %} workingDir = file({{ PatchRoots(custom_run.cwd) }}) +{%- else %} + workingDir = file("$buildDir") {%- endif %} - commandLine( + commandLine("bash", "-c", listOf( {%- for arg in custom_run.command -%} -{%- if custom_run.depends|select("eq", arg)|length -%} -{{ PatchRoots(arg, true) }} -{%- elif proto_template -%} -{#- generated proto put to prepared proto dir -#} -{{ PatchGeneratedProto(arg) }} -{%- else -%} -{{ PatchRoots(arg) }} +{%- if custom_run.depends|select("eq", arg)|length %} + {{ PatchRoots(arg, true) }} +{%- elif custom_run.outputs|select("eq", arg)|length %} +{%- if proto_template -%} + {#- generated proto put to prepared proto dir #} + {{ PatchGeneratedProto(arg) }} +{%- else %} + {{ PatchRoots(arg, false, true) }} +{%- endif -%} +{%- else %} + {{ PatchRoots(arg) }} {%- endif -%} {%- if not loop.last %}, {% endif -%} -{%- endfor -%}) +{%- endfor %} + ).joinToString(" ")) {%- if custom_run.depends|length -%} {%- for depend in custom_run.depends|unique %} @@ -33,7 +41,7 @@ val runProg{{ loop.index }} = task<Exec>("runProgram{{ loop.index }}") { {%- if proto_template %} outputs.files({{ PatchGeneratedProto(out) }}) {%- else %} - outputs.files({{ PatchRoots(out) }}) + outputs.files({{ PatchRoots(out, false, true) }}) {%- endif -%} {%- endfor -%} {%- endif -%} @@ -45,20 +53,23 @@ val runProg{{ loop.index }} = task<Exec>("runProgram{{ loop.index }}") { {%- if proto_template %} -tasks.getByName("extractMainLibrariesProtos").dependsOn(runProg{{ loop.index }}) -{% else %} - -tasks.getByName("sourcesJar").dependsOn(runProg{{ loop.index }}) -{% endif -%} +tasks.getByName("prepareMainProtos").dependsOn(runProg{{ loop.index }}) +{%- endif %} tasks.compileJava.configure { dependsOn(runProg{{ loop.index }}) } +tasks.compileTestJava.configure { + dependsOn(runProg{{ loop.index }}) +} {%- if with_kotlin %} tasks.compileKotlin.configure { dependsOn(runProg{{ loop.index }}) } -{%- endif %} -{% endfor -%} -{% endif -%} +tasks.compileTestKotlin.configure { + dependsOn(runProg{{ loop.index }}) +} +{% endif -%} +{%- endfor -%} +{%- endif -%} diff --git a/build/external_resources/ymake/public.resources.json b/build/external_resources/ymake/public.resources.json index 8dfbb03c13..3674bbaa86 100644 --- a/build/external_resources/ymake/public.resources.json +++ b/build/external_resources/ymake/public.resources.json @@ -1,19 +1,19 @@ { "by_platform": { "darwin": { - "uri": "sbr:8350151492" + "uri": "sbr:8383217030" }, "darwin-arm64": { - "uri": "sbr:8350149418" + "uri": "sbr:8383215700" }, "linux": { - "uri": "sbr:8350156616" + "uri": "sbr:8383219483" }, "linux-aarch64": { - "uri": "sbr:8350147184" + "uri": "sbr:8383214378" }, "win32": { - "uri": "sbr:8350153953" + "uri": "sbr:8383218300" } } } diff --git a/build/external_resources/ymake/resources.json b/build/external_resources/ymake/resources.json index cb4a0f9e39..1ad3f10e4d 100644 --- a/build/external_resources/ymake/resources.json +++ b/build/external_resources/ymake/resources.json @@ -1,19 +1,19 @@ { "by_platform": { "darwin": { - "uri": "sbr:8350186976" + "uri": "sbr:8383201449" }, "darwin-arm64": { - "uri": "sbr:8350181974" + "uri": "sbr:8383200356" }, "linux": { - "uri": "sbr:8350194229" + "uri": "sbr:8383203472" }, "linux-aarch64": { - "uri": "sbr:8350177737" + "uri": "sbr:8383199084" }, "win32": { - "uri": "sbr:8350190839" + "uri": "sbr:8383202531" } } } diff --git a/build/mapping.conf.json b/build/mapping.conf.json index 019d916756..ba9c62501f 100644 --- a/build/mapping.conf.json +++ b/build/mapping.conf.json @@ -726,6 +726,7 @@ "8295444951": "{registry_endpoint}/8295444951", "8326169329": "{registry_endpoint}/8326169329", "8350151492": "{registry_endpoint}/8350151492", + "8383217030": "{registry_endpoint}/8383217030", "5766171800": "{registry_endpoint}/5766171800", "5805430761": "{registry_endpoint}/5805430761", "5829025456": "{registry_endpoint}/5829025456", @@ -800,6 +801,7 @@ "8295443254": "{registry_endpoint}/8295443254", "8326167937": "{registry_endpoint}/8326167937", "8350149418": "{registry_endpoint}/8350149418", + "8383215700": "{registry_endpoint}/8383215700", "5766173070": "{registry_endpoint}/5766173070", "5805432830": "{registry_endpoint}/5805432830", "5829031598": "{registry_endpoint}/5829031598", @@ -874,6 +876,7 @@ "8295448171": "{registry_endpoint}/8295448171", "8326171209": "{registry_endpoint}/8326171209", "8350156616": "{registry_endpoint}/8350156616", + "8383219483": "{registry_endpoint}/8383219483", "5766171341": "{registry_endpoint}/5766171341", "5805430188": "{registry_endpoint}/5805430188", "5829023352": "{registry_endpoint}/5829023352", @@ -948,10 +951,12 @@ "8295441779": "{registry_endpoint}/8295441779", "8326166988": "{registry_endpoint}/8326166988", "8350147184": "{registry_endpoint}/8350147184", + "8383214378": "{registry_endpoint}/8383214378", "8270821739": "{registry_endpoint}/8270821739", "8295446553": "{registry_endpoint}/8295446553", "8326170338": "{registry_endpoint}/8326170338", "8350153953": "{registry_endpoint}/8350153953", + "8383218300": "{registry_endpoint}/8383218300", "5766172695": "{registry_endpoint}/5766172695", "5805432230": "{registry_endpoint}/5805432230", "5829029743": "{registry_endpoint}/5829029743", @@ -1190,9 +1195,11 @@ "6561719783": "{registry_endpoint}/6561719783", "6648883615": "{registry_endpoint}/6648883615", "8107723363": "{registry_endpoint}/8107723363", + "8415400280": "{registry_endpoint}/8415400280", "6561716686": "{registry_endpoint}/6561716686", "6648881012": "{registry_endpoint}/6648881012", "8107722414": "{registry_endpoint}/8107722414", + "8415398075": "{registry_endpoint}/8415398075", "6184290684": "{registry_endpoint}/6184290684", "6561765464": "{registry_endpoint}/6561765464", "6184289846": "{registry_endpoint}/6184289846", @@ -1313,6 +1320,7 @@ "7686710688": "{registry_endpoint}/7686710688", "7879860842": "{registry_endpoint}/7879860842", "8367004015": "{registry_endpoint}/8367004015", + "8418036683": "{registry_endpoint}/8418036683", "2980468199": "{registry_endpoint}/2980468199", "5562224408": "{registry_endpoint}/5562224408", "7663495611": "{registry_endpoint}/7663495611" @@ -2040,6 +2048,7 @@ "8295444951": "devtools/ymake/bin/ymake for darwin", "8326169329": "devtools/ymake/bin/ymake for darwin", "8350151492": "devtools/ymake/bin/ymake for darwin", + "8383217030": "devtools/ymake/bin/ymake for darwin", "5766171800": "devtools/ymake/bin/ymake for darwin-arm64", "5805430761": "devtools/ymake/bin/ymake for darwin-arm64", "5829025456": "devtools/ymake/bin/ymake for darwin-arm64", @@ -2114,6 +2123,7 @@ "8295443254": "devtools/ymake/bin/ymake for darwin-arm64", "8326167937": "devtools/ymake/bin/ymake for darwin-arm64", "8350149418": "devtools/ymake/bin/ymake for darwin-arm64", + "8383215700": "devtools/ymake/bin/ymake for darwin-arm64", "5766173070": "devtools/ymake/bin/ymake for linux", "5805432830": "devtools/ymake/bin/ymake for linux", "5829031598": "devtools/ymake/bin/ymake for linux", @@ -2188,6 +2198,7 @@ "8295448171": "devtools/ymake/bin/ymake for linux", "8326171209": "devtools/ymake/bin/ymake for linux", "8350156616": "devtools/ymake/bin/ymake for linux", + "8383219483": "devtools/ymake/bin/ymake for linux", "5766171341": "devtools/ymake/bin/ymake for linux-aarch64", "5805430188": "devtools/ymake/bin/ymake for linux-aarch64", "5829023352": "devtools/ymake/bin/ymake for linux-aarch64", @@ -2262,10 +2273,12 @@ "8295441779": "devtools/ymake/bin/ymake for linux-aarch64", "8326166988": "devtools/ymake/bin/ymake for linux-aarch64", "8350147184": "devtools/ymake/bin/ymake for linux-aarch64", + "8383214378": "devtools/ymake/bin/ymake for linux-aarch64", "8270821739": "devtools/ymake/bin/ymake for win32", "8295446553": "devtools/ymake/bin/ymake for win32", "8326170338": "devtools/ymake/bin/ymake for win32", "8350153953": "devtools/ymake/bin/ymake for win32", + "8383218300": "devtools/ymake/bin/ymake for win32", "5766172695": "devtools/ymake/bin/ymake for win32-clang-cl", "5805432230": "devtools/ymake/bin/ymake for win32-clang-cl", "5829029743": "devtools/ymake/bin/ymake for win32-clang-cl", @@ -2504,9 +2517,11 @@ "6561719783": "tools/black_linter/bin/black_linter for linux", "6648883615": "tools/black_linter/bin/black_linter for linux", "8107723363": "tools/black_linter/bin/black_linter for linux", + "8415400280": "tools/black_linter/bin/black_linter for linux", "6561716686": "tools/black_linter/bin/black_linter for linux-aarch64", "6648881012": "tools/black_linter/bin/black_linter for linux-aarch64", "8107722414": "tools/black_linter/bin/black_linter for linux-aarch64", + "8415398075": "tools/black_linter/bin/black_linter for linux-aarch64", "6184290684": "tools/flake8_linter/bin/flake8_linter for linux", "6561765464": "tools/flake8_linter/bin/flake8_linter for linux", "6184289846": "tools/flake8_linter/bin/flake8_linter for linux-aarch64", @@ -2627,6 +2642,7 @@ "7686710688": "yt/go/ytrecipe/cmd/ytexec for linux", "7879860842": "yt/go/ytrecipe/cmd/ytexec for linux", "8367004015": "yt/go/ytrecipe/cmd/ytexec for linux", + "8418036683": "yt/go/ytrecipe/cmd/ytexec for linux", "2980468199": "ytexec for linux", "5562224408": "ytexec for linux", "7663495611": "ytexec for linux" diff --git a/build/plugins/_dart_fields.py b/build/plugins/_dart_fields.py index 6344bd001e..64232696d1 100644 --- a/build/plugins/_dart_fields.py +++ b/build/plugins/_dart_fields.py @@ -598,34 +598,10 @@ class LintConfigs: @classmethod def python_configs(cls, unit, flat_args, spec_args): - resolved_configs = [] - - if (custom_config := spec_args.get('CUSTOM_CONFIG')) and '/' in custom_config[0]: - # black if custom config is passed. - # XXX During migration we want to use the same macro parameter - # for path to linter config and config type - # thus, we check if '/' is present, if it is then it's a path - # TODO delete once custom configs migrated to autoincludes scheme - custom_config = custom_config[0] - assert_file_exists(unit, custom_config) - resolved_configs.append(custom_config) - return {cls.KEY: serialize_list(resolved_configs)} - if config := cls._from_config_type(unit, spec_args): # specified by config type, autoincludes scheme return {cls.KEY: serialize_list([config])} - if project_to_config_map := spec_args.get('PROJECT_TO_CONFIG_MAP'): - # ruff, TODO delete once custom configs migrated to autoincludes scheme - project_to_config_map = project_to_config_map[0] - assert_file_exists(unit, project_to_config_map) - resolved_configs.append(project_to_config_map) - cfgs = get_linter_configs(unit, project_to_config_map).values() - for c in cfgs: - assert_file_exists(unit, c) - resolved_configs.append(c) - return {cls.KEY: serialize_list(resolved_configs)} - # default config linter_name = spec_args['NAME'][0] default_configs_path = spec_args['CONFIGS'][0] @@ -636,10 +612,10 @@ class LintConfigs: ymake.report_configure_error(message) raise DartValueError() assert_file_exists(unit, config) - resolved_configs.append(config) + configs = [config] if linter_name in ('flake8', 'py2_flake8'): - resolved_configs.extend(spec_args.get('FLAKE_MIGRATIONS_CONFIG', [])) - return {cls.KEY: serialize_list(resolved_configs)} + configs.extend(spec_args.get('FLAKE_MIGRATIONS_CONFIG', [])) + return {cls.KEY: serialize_list(configs)} @classmethod def cpp_configs(cls, unit, flat_args, spec_args): diff --git a/build/plugins/ytest.py b/build/plugins/ytest.py index 513887ac16..e65d1e65d4 100644 --- a/build/plugins/ytest.py +++ b/build/plugins/ytest.py @@ -1082,9 +1082,7 @@ def on_add_py_linter_check(fields, unit, *args): "GLOBAL_RESOURCES": unlimited, "FILE_PROCESSING_TIME": 1, "EXTRA_PARAMS": unlimited, - "PROJECT_TO_CONFIG_MAP": 1, "FLAKE_MIGRATIONS_CONFIG": 1, - "CUSTOM_CONFIG": 1, "CONFIG_TYPE": 1, } _, spec_args = _common.sort_by_keywords(keywords, args) diff --git a/build/prebuilt/tools/black_linter/resources.json b/build/prebuilt/tools/black_linter/resources.json index 11ee13ddea..04cfd1c119 100644 --- a/build/prebuilt/tools/black_linter/resources.json +++ b/build/prebuilt/tools/black_linter/resources.json @@ -1,22 +1,22 @@ { "by_platform": { "darwin": { - "uri": "sbr:8107723162" + "uri": "sbr:8415405351" }, "darwin-arm64": { - "uri": "sbr:8107722855" + "uri": "sbr:8415402574" }, "linux": { - "uri": "sbr:8107723363" + "uri": "sbr:8415400280" }, "linux-aarch64": { - "uri": "sbr:8107722414" + "uri": "sbr:8415398075" }, "linux-ppc64le": { "uri": "sbr:6648879110" }, - "win32-clang-cl": { - "uri": "sbr:8107721942" + "win32": { + "uri": "sbr:8415396109" } } } diff --git a/build/scripts/check_config_h.py b/build/scripts/check_config_h.py index 07bc12e230..26facbc48f 100644 --- a/build/scripts/check_config_h.py +++ b/build/scripts/check_config_h.py @@ -82,6 +82,14 @@ static_assert(sizeof(wchar_t) == SIZEOF_WCHAR_T, "fixme 16"); #if defined(SIZEOF__BOOL) //TODO #endif + +#if defined(ALIGNOF_VOID_P) +static_assert(alignof(void*) == ALIGNOF_VOID_P, "fixme 18"); +#endif + +#if defined(ALIGNOF_DOUBLE) +static_assert(alignof(double) == ALIGNOF_DOUBLE, "fixme 19"); +#endif """ if __name__ == '__main__': with open(sys.argv[2], 'w') as f: diff --git a/build/sysincl/esp-idf.yml b/build/sysincl/esp-idf.yml index 736166396e..f03767203d 100644 --- a/build/sysincl/esp-idf.yml +++ b/build/sysincl/esp-idf.yml @@ -1,4 +1,5 @@ -- includes: +- source_filter: "^contrib/libs/esp-idf|contrib/libs/connectedhomeip|taxi" + includes: # freertos - freertos/FreeRTOS.h: contrib/libs/esp-idf/components/freertos/include/freertos/FreeRTOS.h - freertos/semphr.h: contrib/libs/esp-idf/components/freertos/include/freertos/semphr.h diff --git a/build/ymake.core.conf b/build/ymake.core.conf index 8220fe80ed..b6f076e92d 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -250,14 +250,6 @@ otherwise { COPY_PROFILE_RUNTIME= } -# tag:codenav -when ($CODENAVIGATION && $NOCODENAVIGATION != "yes") { - PY_PROGRAM_LINK_EXE=$LINK_EXE && ${hide;kv:"pyndex $TARGET"} -} -otherwise { - PY_PROGRAM_LINK_EXE=$LINK_EXE -} - when ($RETRY == "yes") { RETRY_ARGS=$YMAKE_PYTHON ${input:"build/scripts/retry_cc.py"} } @@ -442,7 +434,7 @@ REQUIRED_TRANSITIVE_PEERS= ### ### This macro can be used if module depends on the directories specified but they can't be listed ### as direct PEERDIR dependencies (due to public include order or link order issues). -macro REQUIRES(DIRS[]) { +macro REQUIRES(DIRS...) { SET_APPEND(REQUIRED_TRANSITIVE_PEERS $DIRS) } diff --git a/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym b/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym index 04bc79b0c7..cecee81a03 100644 --- a/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym +++ b/contrib/libs/cxxsupp/builtins/.yandex_meta/build.ym @@ -1,6 +1,6 @@ {% extends '//builtin/bag.ym' %} -{% block current_version %}20.1.0{% endblock %} +{% block current_version %}20.1.1{% endblock %} {% block current_url %} https://github.com/llvm/llvm-project/releases/download/llvmorg-{{self.version().strip()}}/compiler-rt-{{self.version().strip()}}.src.tar.xz diff --git a/contrib/libs/cxxsupp/builtins/ya.make b/contrib/libs/cxxsupp/builtins/ya.make index dce2f27201..67e47b1a65 100644 --- a/contrib/libs/cxxsupp/builtins/ya.make +++ b/contrib/libs/cxxsupp/builtins/ya.make @@ -12,9 +12,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(20.1.0) +VERSION(20.1.1) -ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.0/compiler-rt-20.1.0.src.tar.xz) +ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.1/compiler-rt-20.1.1.src.tar.xz) NO_COMPILER_WARNINGS() diff --git a/contrib/libs/libfuzzer/.yandex_meta/override.nix b/contrib/libs/libfuzzer/.yandex_meta/override.nix index 7415420b65..15a7622b27 100644 --- a/contrib/libs/libfuzzer/.yandex_meta/override.nix +++ b/contrib/libs/libfuzzer/.yandex_meta/override.nix @@ -1,11 +1,11 @@ pkgs: attrs: with pkgs; with attrs; rec { - version = "20.1.0"; + version = "20.1.2"; src = fetchFromGitHub { owner = "llvm"; repo = "llvm-project"; rev = "llvmorg-${version}"; - hash = "sha256-86Z8e4ubnHJc1cYHjYPLeQC9eoPF417HYtqg8NAzxts="; + hash = "sha256-t30Jh8ckp5qD6XDxtvnSaYiAWbEi6L6hAWh6tN8JjtY="; }; sourceRoot = "source/compiler-rt"; diff --git a/contrib/libs/libfuzzer/lib/fuzzer/afl/ya.make b/contrib/libs/libfuzzer/lib/fuzzer/afl/ya.make index 0315d60cc6..2cf1cb720d 100644 --- a/contrib/libs/libfuzzer/lib/fuzzer/afl/ya.make +++ b/contrib/libs/libfuzzer/lib/fuzzer/afl/ya.make @@ -8,7 +8,7 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt) SUBSCRIBER(g:cpp-contrib) -VERSION(20.1.0) +VERSION(20.1.2) PEERDIR( contrib/libs/afl/llvm_mode diff --git a/contrib/libs/libfuzzer/ya.make b/contrib/libs/libfuzzer/ya.make index 938438e570..787eeaea14 100644 --- a/contrib/libs/libfuzzer/ya.make +++ b/contrib/libs/libfuzzer/ya.make @@ -12,9 +12,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(20.1.0) +VERSION(20.1.2) -ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/llvmorg-20.1.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/llvmorg-20.1.2.tar.gz) SET(SANITIZER_CFLAGS) diff --git a/contrib/libs/libunwind/.yandex_meta/override.nix b/contrib/libs/libunwind/.yandex_meta/override.nix index 29e81dd677..2666c93f5f 100644 --- a/contrib/libs/libunwind/.yandex_meta/override.nix +++ b/contrib/libs/libunwind/.yandex_meta/override.nix @@ -1,11 +1,11 @@ pkgs: attrs: with pkgs; with attrs; rec { - version = "20.1.0"; + version = "20.1.2"; src = fetchFromGitHub { owner = "llvm"; repo = "llvm-project"; rev = "llvmorg-${version}"; - hash = "sha256-86Z8e4ubnHJc1cYHjYPLeQC9eoPF417HYtqg8NAzxts="; + hash = "sha256-t30Jh8ckp5qD6XDxtvnSaYiAWbEi6L6hAWh6tN8JjtY="; }; patches = []; diff --git a/contrib/libs/libunwind/ya.make b/contrib/libs/libunwind/ya.make index b04a57ec9e..c2478a4035 100644 --- a/contrib/libs/libunwind/ya.make +++ b/contrib/libs/libunwind/ya.make @@ -11,9 +11,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(20.1.0) +VERSION(20.1.2) -ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/llvmorg-20.1.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/llvmorg-20.1.2.tar.gz) PEERDIR( library/cpp/sanitizer/include diff --git a/contrib/python/iniconfig/.dist-info/METADATA b/contrib/python/iniconfig/.dist-info/METADATA index 3ea1e01cb0..3a8ef46a3b 100644 --- a/contrib/python/iniconfig/.dist-info/METADATA +++ b/contrib/python/iniconfig/.dist-info/METADATA @@ -1,6 +1,6 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: iniconfig -Version: 2.0.0 +Version: 2.1.0 Summary: brain-dead simple config-ini parsing Project-URL: Homepage, https://github.com/pytest-dev/iniconfig Author-email: Ronny Pfannschmidt <opensource@ronnypfannschmidt.de>, Holger Krekel <holger.krekel@gmail.com> @@ -14,14 +14,15 @@ Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Utilities -Requires-Python: >=3.7 +Requires-Python: >=3.8 Description-Content-Type: text/x-rst iniconfig: brain-dead simple parsing of ini files diff --git a/contrib/python/iniconfig/LICENSE b/contrib/python/iniconfig/LICENSE index 31ecdfb1db..46f4b2846f 100644 --- a/contrib/python/iniconfig/LICENSE +++ b/contrib/python/iniconfig/LICENSE @@ -1,19 +1,21 @@ +The MIT License (MIT) - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. +Copyright (c) 2010 - 2023 Holger Krekel and others +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/contrib/python/iniconfig/iniconfig/__init__.py b/contrib/python/iniconfig/iniconfig/__init__.py index c1c94f70ae..ed6499bc6c 100644 --- a/contrib/python/iniconfig/iniconfig/__init__.py +++ b/contrib/python/iniconfig/iniconfig/__init__.py @@ -20,7 +20,7 @@ from typing import ( import os if TYPE_CHECKING: - from typing_extensions import Final + from typing import Final __all__ = ["IniConfig", "ParseError", "COMMENTCHARS", "iscommentline"] diff --git a/contrib/python/iniconfig/iniconfig/_version.py b/contrib/python/iniconfig/iniconfig/_version.py index dd1883d734..e058e2c657 100644 --- a/contrib/python/iniconfig/iniconfig/_version.py +++ b/contrib/python/iniconfig/iniconfig/_version.py @@ -1,4 +1,21 @@ -# file generated by setuptools_scm +# file generated by setuptools-scm # don't change, don't track in version control -__version__ = version = '2.0.0' -__version_tuple__ = version_tuple = (2, 0, 0) + +__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"] + +TYPE_CHECKING = False +if TYPE_CHECKING: + from typing import Tuple + from typing import Union + + VERSION_TUPLE = Tuple[Union[int, str], ...] +else: + VERSION_TUPLE = object + +version: str +__version__: str +__version_tuple__: VERSION_TUPLE +version_tuple: VERSION_TUPLE + +__version__ = version = '2.1.0' +__version_tuple__ = version_tuple = (2, 1, 0) diff --git a/contrib/python/iniconfig/iniconfig/exceptions.py b/contrib/python/iniconfig/iniconfig/exceptions.py index bc898e68ee..8c4dc9a8b0 100644 --- a/contrib/python/iniconfig/iniconfig/exceptions.py +++ b/contrib/python/iniconfig/iniconfig/exceptions.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: - from typing_extensions import Final + from typing import Final class ParseError(Exception): diff --git a/contrib/python/iniconfig/ya.make b/contrib/python/iniconfig/ya.make index 0121cca743..20492d75c6 100644 --- a/contrib/python/iniconfig/ya.make +++ b/contrib/python/iniconfig/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(2.0.0) +VERSION(2.1.0) LICENSE(MIT) diff --git a/library/cpp/neh/http2.cpp b/library/cpp/neh/http2.cpp index f10fdc3b3e..daf73ba0d1 100644 --- a/library/cpp/neh/http2.cpp +++ b/library/cpp/neh/http2.cpp @@ -912,7 +912,6 @@ namespace { THttpConnManager() : TotalConn(0) , EP_(THttp2Options::AsioThreads) - , InPurging_(0) , MaxConnId_(0) , Shutdown_(false) { @@ -1011,7 +1010,7 @@ namespace { } void SuggestPurgeCache() { - if (AtomicTryLock(&InPurging_)) { + if (InPurging_.TryAcquire()) { //evaluate the usefulness of purging the cache //если в кеше мало соединений (< MaxConnId_/16 или 64), не чистим кеш if (Cache_.Size() > (Min((size_t)AtomicGet(MaxConnId_), (size_t)1024U) >> 4)) { @@ -1031,7 +1030,7 @@ namespace { return; //memo: thread MUST unlock InPurging_ (see DoExecute()) } } - AtomicUnlock(&InPurging_); + InPurging_.Release(); } } @@ -1049,7 +1048,7 @@ namespace { PurgeCache(); - AtomicUnlock(&InPurging_); + InPurging_.Release(); } } @@ -1076,7 +1075,7 @@ namespace { TExecutorsPool EP_; TConnCache<THttpConn> Cache_; - TAtomic InPurging_; + TSpinLock InPurging_; TAtomic MaxConnId_; TAutoPtr<IThreadFactory::IThread> T_; diff --git a/library/cpp/neh/https.cpp b/library/cpp/neh/https.cpp index ece7d3cf2d..99db8a44cc 100644 --- a/library/cpp/neh/https.cpp +++ b/library/cpp/neh/https.cpp @@ -11,7 +11,6 @@ #include <openssl/ssl.h> #include <openssl/err.h> -#include <openssl/bio.h> #include <openssl/x509v3.h> #include <library/cpp/openssl/init/init.h> @@ -26,12 +25,10 @@ #include <util/generic/list.h> #include <util/generic/utility.h> #include <util/network/socket.h> -#include <util/stream/str.h> #include <util/stream/zlib.h> #include <util/string/builder.h> #include <util/string/cast.h> #include <util/system/condvar.h> -#include <util/system/error.h> #include <util/system/types.h> #include <util/thread/factory.h> @@ -448,8 +445,7 @@ namespace NNeh { }; TConnCache() - : InPurging_(0) - , MaxConnId_(0) + : MaxConnId_(0) , Shutdown_(false) { T_ = SystemThreadFactory()->Run(this); @@ -557,7 +553,7 @@ namespace NNeh { private: void SuggestPurgeCache() { - if (AtomicTryLock(&InPurging_)) { + if (InPurging_.TryAcquire()) { //evaluate the usefulness of purging the cache //если в кеше мало соединений (< MaxConnId_/16 или 64), не чистим кеш if ((size_t)CachedConnections.Val() > (Min((size_t)MaxConnId_.load(std::memory_order_acquire), (size_t)1024U) >> 4)) { @@ -577,7 +573,7 @@ namespace NNeh { return; //memo: thread MUST unlock InPurging_ (see DoExecute()) } } - AtomicUnlock(&InPurging_); + InPurging_.Release(); } } @@ -594,7 +590,7 @@ namespace NNeh { PurgeCache(); - AtomicUnlock(&InPurging_); + InPurging_.Release(); } } @@ -660,7 +656,7 @@ namespace NNeh { NHttp::TLockFreeSequence<TConnList> Lst_; - TAtomic InPurging_; + TSpinLock InPurging_; std::atomic<size_t> MaxConnId_; TAutoPtr<IThreadFactory::IThread> T_; diff --git a/ydb/ci/rightlib.txt b/ydb/ci/rightlib.txt index 8fcdbad5cc..20221f0853 100644 --- a/ydb/ci/rightlib.txt +++ b/ydb/ci/rightlib.txt @@ -1 +1 @@ -82a20ed13f9ce647673791b772685ee5997f256d +099240b6b9d598e1178351c4324de0bae80ae98a diff --git a/yql/essentials/cfg/tests/gateways-experimental.conf b/yql/essentials/cfg/tests/gateways-experimental.conf index fe6fa97660..a68414581b 100644 --- a/yql/essentials/cfg/tests/gateways-experimental.conf +++ b/yql/essentials/cfg/tests/gateways-experimental.conf @@ -33,6 +33,26 @@ Yt { Name: "UseColumnGroupsFromInputTables" Value: "true" } + + DefaultSettings { + Name: "JobBlockInput" + Value: "true" + } + + DefaultSettings { + Name: "JobBlockInputSupportedTypes" + Value: "tuple" + } + + DefaultSettings { + Name: "JobBlockInputSupportedDataTypes" + Value: "Int8,Uint8,Int16,Uint16,Int32,Uint32,Int64,Uint64,Bool,Double,String,Utf8,Yson,Float" + } + + DefaultSettings { + Name: "ReportEquiJoinStats" + Value: "true" + } } Dq { 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 1b39f7dd86..19c55dbfcf 100644 --- a/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp +++ b/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp @@ -126,33 +126,33 @@ TExprNode::TPtr RebuildArgumentsOnlyLambdaForBlocks(const TExprNode& lambda, TEx return ctx.NewLambda(lambda.Pos(), ctx.NewArguments(lambda.Pos(), std::move(newArgs)), std::move(newRoots)); } +TExprNode::TPtr SwapFlowNodeWithStreamNode(const TExprNode::TPtr& flowNode, const TExprNode::TPtr& streamNode, TExprContext& ctx) { + const auto streamInput = streamNode->HeadPtr(); + // If streamInput is FromFlow, its input is WideFlow and can + // be used intact; Otherwise the input is WideStream, so the + // new input should be converted to WideFlow. + auto flowInput = streamInput->IsCallable("FromFlow") ? streamInput->HeadPtr() + : ctx.NewCallable(streamInput->Pos(), "ToFlow", { streamInput }); + // XXX: ChangeChild has to be used here and below, since + // the callable might have more than one input, but only + // the first one should be substituted. + const auto newFlowNode = ctx.ChangeChild(*flowNode, 0, std::move(flowInput)); + const auto newStreamNode = ctx.ChangeChild(*streamNode, 0, { + ctx.NewCallable(newFlowNode->Pos(), "FromFlow", { newFlowNode }) + }); + return ctx.Builder(flowNode->Pos()) + .Callable("ToFlow") + .Add(0, newStreamNode) + .Seal() + .Build(); +} + TExprNode::TPtr OptimizeWideToBlocks(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); const auto& input = node->Head(); if (input.IsCallable("WideFromBlocks")) { YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << node->Content() << " over " << input.Content(); - // If tail is FromFlow, its input is WideFlow and can be - // used intact; Otherwise the input is WideStream, so the - // new input should be converted to WideFlow. - const auto tail = input.HeadPtr(); - const auto flowInput = tail->IsCallable("FromFlow") ? tail->HeadPtr() - : ctx.NewCallable(tail->Pos(), "ToFlow", { tail }); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - return ctx.Builder(node->Pos()) - .Callable("FromFlow") - .Callable(0, "ReplicateScalars") - .Add(0, flowInput) - .Seal() - .Seal() - .Build(); + return ctx.NewCallable(node->Pos(), "ReplicateScalars", { input.HeadPtr() }); } if (input.IsCallable("FromFlow") && input.Head().IsCallable({"Extend", "OrderedExtend"})) { @@ -199,30 +199,9 @@ TExprNode::TPtr OptimizeWideFromBlocks(const TExprNode::TPtr& node, TExprContext return input.HeadPtr(); } - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (input.IsCallable("FromFlow") && input.Head().IsCallable("ReplicateScalars")) { - const auto& replicateScalars = input.Head(); - // Technically, the code below rewrites the following sequence - // (WideFromBlocks (FromFlow (ReplicateScalars (<input>)))) - // into (WideFromBlocks (FromFlow (<input>))), but ToFlow/FromFlow - // wrappers will be removed when all other nodes in block - // pipeline start using WideStream instead of the WideFlow. - // Hence, the logging is left intact. - YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << replicateScalars.Content() << " as input of " << node->Content(); - return ctx.Builder(node->Pos()) - .Callable(node->Content()) - .Callable(0, input.Content()) - .Add(0, replicateScalars.HeadPtr()) - .Seal() - .Seal() - .Build(); + if (input.IsCallable("ReplicateScalars")) { + YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << input.Content() << " as input of " << node->Content(); + return ctx.ChangeChild(*node, 0, input.HeadPtr()); } return node; @@ -230,18 +209,17 @@ TExprNode::TPtr OptimizeWideFromBlocks(const TExprNode::TPtr& node, TExprContext TExprNode::TPtr OptimizeWideTakeSkipBlocks(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (node->Head().IsCallable("ReplicateScalars")) { - YQL_CLOG(DEBUG, CorePeepHole) << "Swap " << node->Content() << " with " << node->Head().Content(); - return ctx.SwapWithHead(*node); + const auto& input = node->HeadPtr(); + if (input->IsCallable("ToFlow") && input->Head().IsCallable("ReplicateScalars")) { + const auto& replicateScalars = input->HeadPtr(); + // Technically, the code below rewrites the following sequence + // (Wide{Skip,Take}Blocks (ToFlow (ReplicateScalars (<input>)))) + // into (ToFlow (ReplicateScalars (FromFlow (Wide{Skip,Take}Blocks (<input>))))), + // but ToFlow/FromFlow wrappers will be removed when all other + // nodes in block pipeline start using WideStream instead of the + // WideFlow. Hence, the logging is left intact. + YQL_CLOG(DEBUG, CorePeepHole) << "Swap " << node->Content() << " with " << replicateScalars->Content(); + return SwapFlowNodeWithStreamNode(node, replicateScalars, ctx); } return node; @@ -249,35 +227,31 @@ TExprNode::TPtr OptimizeWideTakeSkipBlocks(const TExprNode::TPtr& node, TExprCon TExprNode::TPtr OptimizeBlockCompress(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (node->Head().IsCallable("ReplicateScalars")) { - YQL_CLOG(DEBUG, CorePeepHole) << "Swap " << node->Content() << " with " << node->Head().Content(); - if (node->Head().ChildrenSize() == 1) { - return ctx.SwapWithHead(*node); + const auto& input = node->HeadPtr(); + if (input->IsCallable("ToFlow") && input->Head().IsCallable("ReplicateScalars")) { + const auto& replicateScalars = input->HeadPtr(); + // Technically, the code below rewrites the following sequence + // (BlockCompress (ToFlow (ReplicateScalars (<input>)))) + // into (ToFlow (ReplicateScalars (FromFlow (BlockCompress (<input>))))), + // but ToFlow/FromFlow wrappers will be removed when all other + // nodes in block pipeline start using WideStream instead of the + // WideFlow. Hence, the logging is left intact. + YQL_CLOG(DEBUG, CorePeepHole) << "Swap " << node->Content() << " with " << replicateScalars->Content(); + if (replicateScalars->ChildrenSize() == 1) { + return SwapFlowNodeWithStreamNode(node, replicateScalars, ctx); } const ui32 compressIndex = FromString<ui32>(node->Child(1)->Content()); TExprNodeList newReplicateIndexes; - for (auto atom : node->Head().Child(1)->ChildrenList()) { + for (auto atom : replicateScalars->Child(1)->ChildrenList()) { ui32 idx = FromString<ui32>(atom->Content()); if (idx != compressIndex) { newReplicateIndexes.push_back((idx < compressIndex) ? atom : ctx.NewAtom(atom->Pos(), idx - 1)); } } - return ctx.Builder(node->Pos()) - .Callable("ReplicateScalars") - .Add(0, ctx.ChangeChild(*node, 0, node->Head().HeadPtr())) - .Add(1, ctx.NewList(node->Head().Child(1)->Pos(), std::move(newReplicateIndexes))) - .Seal() - .Build(); + const auto& newReplicateScalars = ctx.ChangeChild(*replicateScalars, 1, + ctx.NewList(replicateScalars->Child(1)->Pos(), std::move(newReplicateIndexes))); + return SwapFlowNodeWithStreamNode(node, newReplicateScalars, ctx); } return node; @@ -285,18 +259,17 @@ TExprNode::TPtr OptimizeBlockCompress(const TExprNode::TPtr& node, TExprContext& TExprNode::TPtr OptimizeBlocksTopOrSort(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (node->Head().IsCallable("ReplicateScalars")) { - YQL_CLOG(DEBUG, CorePeepHole) << "Swap " << node->Content() << " with " << node->Head().Content(); - return ctx.SwapWithHead(*node); + const auto& input = node->HeadPtr(); + if (input->IsCallable("ToFlow") && input->Head().IsCallable("ReplicateScalars")) { + const auto& replicateScalars = input->HeadPtr(); + // Technically, the code below rewrites the following sequence + // (Wide{Top,TopSort,Sort}Blocks (ToFlow (ReplicateScalars (<input>)))) + // into (ToFlow (ReplicateScalars (FromFlow (Wide{Top,TopSort,Sort}Blocks (<input>))))), + // but ToFlow/FromFlow wrappers will be removed when all other + // nodes in block pipeline start using WideStream instead of the + // WideFlow. Hence, the logging is left intact. + YQL_CLOG(DEBUG, CorePeepHole) << "Swap " << node->Content() << " with " << replicateScalars->Content(); + return SwapFlowNodeWithStreamNode(node, replicateScalars, ctx); } return node; @@ -307,18 +280,15 @@ TExprNode::TPtr OptimizeBlockExtend(const TExprNode::TPtr& node, TExprContext& c TExprNodeList inputs = node->ChildrenList(); bool hasReplicateScalars = false; for (auto& input : inputs) { - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (input->IsCallable("ReplicateScalars")) { + if (input->IsCallable("ToFlow") && input->Head().IsCallable("ReplicateScalars")) { + const auto& replicateScalars = input->Head(); hasReplicateScalars = true; - input = input->HeadPtr(); + // If tail is FromFlow, its input is WideFlow and can be + // used intact; Otherwise the input is WideStream, so the + // new input should be converted to WideFlow. + const auto tail = replicateScalars.HeadPtr(); + input = tail->IsCallable("FromFlow") ? tail->HeadPtr() + : ctx.NewCallable(tail->Pos(), "ToFlow", { tail }); } } @@ -332,15 +302,6 @@ TExprNode::TPtr OptimizeBlockExtend(const TExprNode::TPtr& node, TExprContext& c TExprNode::TPtr OptimizeReplicateScalars(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - if (node->Head().IsCallable("ReplicateScalars")) { if (node->ChildrenSize() == 1) { YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << node->Head().Content() << " as input of " << node->Content(); @@ -384,16 +345,20 @@ TExprNode::TPtr ExpandBlockExtend(const TExprNode::TPtr& node, TExprContext& ctx const bool hasScalars = AnyOf(items.begin(), items.end() - 1, [](const auto& item) { return item->IsScalar(); }); seenScalars = seenScalars || hasScalars; + TExprNode::TPtr newChild = child; + if (hasScalars) { + newChild = ctx.Builder(child->Pos()) + .Callable("ToFlow") + .Callable(0, "ReplicateScalars") + .Callable(0, "FromFlow") + .Add(0, std::move(child)) + .Seal() + .Seal() + .Seal() + .Build(); + } - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - newChildren.push_back(ctx.WrapByCallableIf(hasScalars, "ReplicateScalars", std::move(child))); + newChildren.push_back(newChild); } const TStringBuf newName = node->IsCallable("BlockExtend") ? "Extend" : "OrderedExtend"; @@ -405,17 +370,8 @@ TExprNode::TPtr ExpandBlockExtend(const TExprNode::TPtr& node, TExprContext& ctx TExprNode::TPtr ExpandReplicateScalars(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - YQL_CLOG(DEBUG, CorePeepHole) << "Expand " << node->Content(); - const auto& items = node->Head().GetTypeAnn()->Cast<TFlowExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); + const auto& items = node->Head().GetTypeAnn()->Cast<TStreamExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); const ui32 width = items.size(); TExprNodeList args; @@ -447,9 +403,13 @@ TExprNode::TPtr ExpandReplicateScalars(const TExprNode::TPtr& node, TExprContext } return ctx.Builder(node->Pos()) - .Callable("WideMap") - .Add(0, node->HeadPtr()) - .Add(1, ctx.NewLambda(node->Pos(), ctx.NewArguments(node->Pos(), std::move(args)), std::move(bodyItems))) + .Callable("FromFlow") + .Callable(0, "WideMap") + .Callable(0, "ToFlow") + .Add(0, node->HeadPtr()) + .Seal() + .Add(1, ctx.NewLambda(node->Pos(), ctx.NewArguments(node->Pos(), std::move(args)), std::move(bodyItems))) + .Seal() .Seal() .Build(); } @@ -6402,7 +6362,15 @@ bool CanRewriteToBlocksWithInput(const TExprNode& input, const TTypeAnnotationCo case NYql::EBlockEngineMode::Disable: return false; case NYql::EBlockEngineMode::Auto: - return input.IsCallable("WideFromBlocks"); + // The code below matches, whether the input is one of + // the following: + // * (WideFromBlocks (...)) + // * (ToFlow (WideFromBlocks (...))) + // FIXME: The latter option can be removed when + // WideStream overloads are implemented for all nodes, + // using this helper. + return input.IsCallable("WideFromBlocks") || + input.IsCallable("ToFlow") && input.Head().IsCallable("WideFromBlocks"); case NYql::EBlockEngineMode::Force: return true; } @@ -6744,8 +6712,9 @@ TExprNode::TPtr UpdateBlockCombineColumns(const TExprNode::TPtr& node, std::opti TExprNode::TPtr OptimizeBlockCombine(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - if (node->Head().IsCallable("WideMap")) { - const auto& lambda = node->Head().Tail(); + const auto& input = node->Head(); + if (input.IsCallable("WideMap")) { + const auto& lambda = input.Tail(); TVector<ui32> argIndices; bool onlyArguments = IsArgumentsOnlyLambda(lambda, argIndices); if (onlyArguments) { @@ -6754,10 +6723,10 @@ TExprNode::TPtr OptimizeBlockCombine(const TExprNode::TPtr& node, TExprContext& } } - if (node->Head().IsCallable("BlockCompress") && node->Child(1)->IsCallable("Void")) { - auto filterIndex = FromString<ui32>(node->Head().Child(1)->Content()); + if (input.IsCallable("BlockCompress") && node->Child(1)->IsCallable("Void")) { + auto filterIndex = FromString<ui32>(input.Child(1)->Content()); TVector<ui32> argIndices; - argIndices.resize(node->Head().GetTypeAnn()->Cast<TFlowExprType>()->GetItemType()->Cast<TMultiExprType>()->GetSize()); + argIndices.resize(input.GetTypeAnn()->Cast<TFlowExprType>()->GetItemType()->Cast<TMultiExprType>()->GetSize()); for (ui32 i = 0; i < argIndices.size(); ++i) { argIndices[i] = (i < filterIndex) ? i : i + 1; } @@ -6766,17 +6735,22 @@ TExprNode::TPtr OptimizeBlockCombine(const TExprNode::TPtr& node, TExprContext& return UpdateBlockCombineColumns(node, filterIndex, argIndices, ctx); } - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (node->Head().IsCallable("ReplicateScalars")) { - YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << node->Head().Content() << " as input of " << node->Content(); - return ctx.ChangeChild(*node, 0, node->Head().HeadPtr()); + if (input.IsCallable("ToFlow") && input.Head().IsCallable("ReplicateScalars")) { + const auto& replicateScalars = input.Head(); + // Technically, the code below rewrites the following sequence + // (BlockCombine{All,Hashed} (ToFlow (ReplicateScalars (<input>)))) + // into (BlockCombine{All,Hashed} (<input>)), but ToFlow/FromFlow + // wrappers will be removed when all other nodes in block pipeline + // start using WideStream instead of the WideFlow. Hence, the + // logging is left intact. + YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << replicateScalars.Content() << " as input of " << node->Content(); + // If tail is FromFlow, its input is WideFlow and can be + // used intact; Otherwise the input is WideStream, so the + // new input should be converted to WideFlow. + const auto tail = replicateScalars.HeadPtr(); + auto flowInput = tail->IsCallable("FromFlow") ? tail->HeadPtr() + : ctx.NewCallable(tail->Pos(), "ToFlow", { tail }); + return ctx.ChangeChild(*node, 0, std::move(flowInput)); } return node; @@ -6784,31 +6758,37 @@ TExprNode::TPtr OptimizeBlockCombine(const TExprNode::TPtr& node, TExprContext& TExprNode::TPtr OptimizeBlockMerge(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& types) { Y_UNUSED(types); - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - if (node->Head().IsCallable("ReplicateScalars")) { - YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << node->Head().Content() << " as input of " << node->Content(); - return ctx.ChangeChild(*node, 0, node->Head().HeadPtr()); + const auto& input = node->Head(); + if (input.IsCallable("ToFlow") && input.Head().IsCallable("ReplicateScalars")) { + const auto& replicateScalars = input.Head(); + // Technically, the code below rewrites the following sequence + // (BlockMerge{,Many}FinalizeHashed (ToFlow (ReplicateScalars (<input>)))) + // into (BlockMerge{,Many}FinalizeHashed (<input>)), but + // ToFlow/FromFlow wrappers will be removed when all other nodes + // in block pipeline start using WideStream instead of the WideFlow. + // Hence, the logging is left intact. + YQL_CLOG(DEBUG, CorePeepHole) << "Drop " << replicateScalars.Content() << " as input of " << node->Content(); + // If tail is FromFlow, its input is WideFlow and can be + // used intact; Otherwise the input is WideStream, so the + // new input should be converted to WideFlow. + const auto tail = replicateScalars.HeadPtr(); + auto flowInput = tail->IsCallable("FromFlow") ? tail->HeadPtr() + : ctx.NewCallable(tail->Pos(), "ToFlow", { tail }); + return ctx.ChangeChild(*node, 0, std::move(flowInput)); } return node; } TExprNode::TPtr SwapReplicateScalarsWithWideMap(const TExprNode::TPtr& wideMap, TExprContext& ctx) { - YQL_ENSURE(wideMap->IsCallable("WideMap") && wideMap->Head().IsCallable("ReplicateScalars")); - const auto& input = wideMap->Head(); - auto inputTypes = input.GetTypeAnn()->Cast<TFlowExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); + const auto& child = wideMap->Head(); + YQL_ENSURE(wideMap->IsCallable("WideMap") && child.IsCallable("ToFlow") && child.Head().IsCallable("ReplicateScalars")); + const auto& input = child.Head(); + auto inputTypes = input.GetTypeAnn()->Cast<TStreamExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); YQL_ENSURE(inputTypes.size() > 0); THashSet<ui32> replicatedInputIndexes; - auto replicateScalarsInputTypes = input.Head().GetTypeAnn()->Cast<TFlowExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); + auto replicateScalarsInputTypes = input.Head().GetTypeAnn()->Cast<TStreamExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); YQL_ENSURE(replicateScalarsInputTypes.size() > 0); if (input.ChildrenSize() == 1) { for (ui32 i = 0; i + 1 < replicateScalarsInputTypes.size(); ++i) { @@ -6865,21 +6845,19 @@ TExprNode::TPtr SwapReplicateScalarsWithWideMap(const TExprNode::TPtr& wideMap, } } - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - return ctx.Builder(wideMap->Pos()) - .Callable("ReplicateScalars") - .Callable(0, "WideMap") - .Add(0, input.HeadPtr()) - .Add(1, ctx.DeepCopyLambda(lambda)) + .Callable("ToFlow") + .Callable(0, "ReplicateScalars") + .Callable(0, "FromFlow") + .Callable(0, "WideMap") + .Callable(0, "ToFlow") + .Add(0, input.HeadPtr()) + .Seal() + .Add(1, ctx.DeepCopyLambda(lambda)) + .Seal() + .Seal() + .Add(1, ctx.NewList(input.Pos(), std::move(replicatedOutputIndexes))) .Seal() - .Add(1, ctx.NewList(input.Pos(), std::move(replicatedOutputIndexes))) .Seal() .Build(); } @@ -7053,17 +7031,8 @@ TExprNode::TPtr OptimizeWideMaps(const TExprNode::TPtr& node, TExprContext& ctx) .Add(0, ctx.ChangeChildren(input, std::move(children))) .Add(1, DropUnusedArgs(node->Tail(), unused, ctx)) .Seal().Build(); - } else if (node->IsCallable("WideMap") && input.IsCallable("ReplicateScalars")) { - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - - YQL_CLOG(DEBUG, CorePeepHole) << node->Content() << " over " << input.Content(); + } else if (node->IsCallable("WideMap") && input.IsCallable("ToFlow") && input.Head().IsCallable("ReplicateScalars")) { + YQL_CLOG(DEBUG, CorePeepHole) << node->Content() << " over " << input.Head().Content(); return SwapReplicateScalarsWithWideMap(node, ctx); } } diff --git a/yql/essentials/core/type_ann/type_ann_blocks.cpp b/yql/essentials/core/type_ann/type_ann_blocks.cpp index 20f09c4696..c988284b2b 100644 --- a/yql/essentials/core/type_ann/type_ann_blocks.cpp +++ b/yql/essentials/core/type_ann/type_ann_blocks.cpp @@ -76,26 +76,17 @@ IGraphTransformer::TStatus ReplicateScalarWrapper(const TExprNode::TPtr& input, } IGraphTransformer::TStatus ReplicateScalarsWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) { - - // Static assert to ensure backward compatible change: if the - // constant below is true, both input and output types of - // ReplicateScalars callable have to be WideStream; otherwise, - // both input and output types have to be WideFlow. - // FIXME: When all spots using ReplicateScalars are adjusted - // to work with WideStream, drop the assertion below. - static_assert(!NYql::NBlockStreamIO::ReplicateScalars); - if (!EnsureMinArgsCount(*input, 1, ctx.Expr) || !EnsureMaxArgsCount(*input, 2, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } TTypeAnnotationNode::TListType blockItemTypes; - if (!EnsureWideFlowBlockType(input->Head(), blockItemTypes, ctx.Expr)) { + if (!EnsureWideStreamBlockType(input->Head(), blockItemTypes, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } - auto flowItemTypes = input->Head().GetTypeAnn()->Cast<TFlowExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); - YQL_ENSURE(flowItemTypes.size() > 0); + auto streamItemTypes = input->Head().GetTypeAnn()->Cast<TStreamExprType>()->GetItemType()->Cast<TMultiExprType>()->GetItems(); + YQL_ENSURE(streamItemTypes.size() > 0); TMaybe<THashSet<ui32>> replicateIndexes; if (input->ChildrenSize() == 2) { @@ -110,16 +101,16 @@ IGraphTransformer::TStatus ReplicateScalarsWrapper(const TExprNode::TPtr& input, TStringBuilder() << "Expecting integer as replicate index, got: " << atom->Content())); return IGraphTransformer::TStatus::Error; } - if (idx >= flowItemTypes.size() - 1) { + if (idx >= streamItemTypes.size() - 1) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(atom->Pos()), - TStringBuilder() << "Replicate index too big: " << idx << ", should be less than " << (flowItemTypes.size() - 1))); + TStringBuilder() << "Replicate index too big: " << idx << ", should be less than " << (streamItemTypes.size() - 1))); return IGraphTransformer::TStatus::Error; } if (!replicateIndexes->insert(idx).second) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(atom->Pos()), TStringBuilder() << "Duplicate replicate index " << idx)); return IGraphTransformer::TStatus::Error; } - if (flowItemTypes[idx]->GetKind() != ETypeAnnotationKind::Scalar) { + if (streamItemTypes[idx]->GetKind() != ETypeAnnotationKind::Scalar) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(atom->Pos()), TStringBuilder() << "Invalid replicate index " << idx << ": input item is not scalar")); return IGraphTransformer::TStatus::Error; } @@ -128,8 +119,8 @@ IGraphTransformer::TStatus ReplicateScalarsWrapper(const TExprNode::TPtr& input, bool hasScalarsToConvert = false; size_t inputScalarsCount = 0; - for (size_t i = 0; i + 1 < flowItemTypes.size(); ++i) { - auto& itemType = flowItemTypes[i]; + for (size_t i = 0; i + 1 < streamItemTypes.size(); ++i) { + auto& itemType = streamItemTypes[i]; if (itemType->IsScalar()) { ++inputScalarsCount; if (!replicateIndexes.Defined() || replicateIndexes->contains(i)) { @@ -151,7 +142,7 @@ IGraphTransformer::TStatus ReplicateScalarsWrapper(const TExprNode::TPtr& input, return IGraphTransformer::TStatus::Repeat; } - input->SetTypeAnn(ctx.Expr.MakeType<TFlowExprType>(ctx.Expr.MakeType<TMultiExprType>(flowItemTypes))); + input->SetTypeAnn(ctx.Expr.MakeType<TStreamExprType>(ctx.Expr.MakeType<TMultiExprType>(streamItemTypes))); return IGraphTransformer::TStatus::Ok; } diff --git a/yql/essentials/core/yql_expr_type_annotation.h b/yql/essentials/core/yql_expr_type_annotation.h index 8538c45ab1..d23ce163e3 100644 --- a/yql/essentials/core/yql_expr_type_annotation.h +++ b/yql/essentials/core/yql_expr_type_annotation.h @@ -356,7 +356,7 @@ TStringBuf NormalizeCallableName(TStringBuf name); void CheckExpectedTypeAndColumnOrder(const TExprNode& node, TExprContext& ctx, TTypeAnnotationContext& typesCtx); namespace NBlockStreamIO { - constexpr bool ReplicateScalars = false; + constexpr bool ReplicateScalars = true; } // namespace NBlockStreamIO } diff --git a/yql/essentials/core/yql_join.cpp b/yql/essentials/core/yql_join.cpp index 84bce2d913..7cca45604d 100644 --- a/yql/essentials/core/yql_join.cpp +++ b/yql/essentials/core/yql_join.cpp @@ -340,14 +340,18 @@ namespace { else if (option.IsAtom("join_algo")) { //do nothing } - else if (option.IsAtom("shuffle_lhs_by") || option.IsAtom("shuffle_rhs_by")) { - //do nothing - } else if (option.IsAtom("compact")) { if (!EnsureTupleSize(*child, 1, ctx)) { return IGraphTransformer::TStatus::Error; } } + else if (IsCachedJoinLinkOption(option.Content())) { + if (option.IsAtom("shuffle_lhs_by") || option.IsAtom("shuffle_rhs_by")) { + //do nothing + } else { + YQL_ENSURE(false, "Cached join link option '" << option.Content() << "' not handled"); + } + } else { ctx.AddError(TIssue(ctx.GetPosition(option.Pos()), TStringBuilder() << "Unknown option name: " << option.Content())); @@ -787,40 +791,38 @@ IGraphTransformer::TStatus ValidateEquiJoinOptions(TPositionHandle positionHandl options.Flatten = true; } else if (optionName == "strict_keys") { options.StrictKeys = true; - } else if (optionName == "preferred_sort") { - THashSet<TStringBuf> sortBySet; - TVector<TStringBuf> sortBy; - if (!EnsureTupleSize(*child, 2, ctx)) { - return IGraphTransformer::TStatus::Error; - } - if (!EnsureTupleMinSize(*child->Child(1), 1, ctx)) { - return IGraphTransformer::TStatus::Error; - } - for (auto column : child->Child(1)->Children()) { - if (!EnsureAtom(*column, ctx)) { + } else if (IsCachedJoinOption(optionName)) { + if (optionName == "preferred_sort") { + THashSet<TStringBuf> sortBySet; + TVector<TStringBuf> sortBy; + if (!EnsureTupleSize(*child, 2, ctx)) { return IGraphTransformer::TStatus::Error; } - if (!sortBySet.insert(column->Content()).second) { - ctx.AddError(TIssue(ctx.GetPosition(column->Pos()), TStringBuilder() << - "Duplicated preferred_sort column: " << column->Content())); + if (!EnsureTupleMinSize(*child->Child(1), 1, ctx)) { return IGraphTransformer::TStatus::Error; } - sortBy.push_back(column->Content()); - } - if (!options.PreferredSortSets.insert(sortBy).second) { - ctx.AddError(TIssue(ctx.GetPosition(child->Child(1)->Pos()), TStringBuilder() << - "Duplicated preferred_sort set: " << JoinSeq(", ", sortBy))); + for (auto column : child->Child(1)->Children()) { + if (!EnsureAtom(*column, ctx)) { + return IGraphTransformer::TStatus::Error; + } + if (!sortBySet.insert(column->Content()).second) { + ctx.AddError(TIssue(ctx.GetPosition(column->Pos()), TStringBuilder() << + "Duplicated preferred_sort column: " << column->Content())); + return IGraphTransformer::TStatus::Error; + } + sortBy.push_back(column->Content()); + } + if (!options.PreferredSortSets.insert(sortBy).second) { + ctx.AddError(TIssue(ctx.GetPosition(child->Child(1)->Pos()), TStringBuilder() << + "Duplicated preferred_sort set: " << JoinSeq(", ", sortBy))); + } + } else if (optionName == "cbo_passed") { + // do nothing + } else if (optionName == "multiple_joins") { + // do nothing + } else { + YQL_ENSURE(false, "Cached join option '" << optionName << "' not handled"); } - } else if (optionName == "cbo_passed") { - // do nothing - } else if (optionName == "join_algo") { - // do nothing - } else if (optionName == "shuffle_lhs_by" || optionName == "shuffle_rhs_by") { - // do nothing - } else if (optionName == "multiple_joins") { - // do nothing - } else if (optionName == "compact") { - options.Compact = true; } else { ctx.AddError(TIssue(position, TStringBuilder() << "Unknown option name: " << optionName)); @@ -2004,4 +2006,14 @@ void GatherJoinInputs(const TExprNode::TPtr& expr, const TExprNode& row, } } +bool IsCachedJoinOption(TStringBuf name) { + static THashSet<TStringBuf> CachedJoinOptions = {"preferred_sort", "cbo_passed", "multiple_joins"}; + return CachedJoinOptions.contains(name); +} + +bool IsCachedJoinLinkOption(TStringBuf name) { + static THashSet<TStringBuf> CachedJoinLinkOptions = {"shuffle_lhs_by", "shuffle_rhs_by"}; + return CachedJoinLinkOptions.contains(name); +} + } // namespace NYql diff --git a/yql/essentials/core/yql_join.h b/yql/essentials/core/yql_join.h index f556a46724..a313aceefa 100644 --- a/yql/essentials/core/yql_join.h +++ b/yql/essentials/core/yql_join.h @@ -60,7 +60,6 @@ struct TJoinOptions { bool Flatten = false; bool StrictKeys = false; - bool Compact = false; }; IGraphTransformer::TStatus ValidateEquiJoinOptions( @@ -178,5 +177,7 @@ void GatherJoinInputs(const TExprNode::TPtr& expr, const TExprNode& row, const TParentsMap& parentsMap, const THashMap<TString, TString>& backRenameMap, const TJoinLabels& labels, TSet<ui32>& inputs, TSet<TStringBuf>& usedFields); +bool IsCachedJoinOption(TStringBuf name); +bool IsCachedJoinLinkOption(TStringBuf name); } diff --git a/yql/essentials/data/language/pragmas_opensource.json b/yql/essentials/data/language/pragmas_opensource.json new file mode 100644 index 0000000000..4e24ec9b5a --- /dev/null +++ b/yql/essentials/data/language/pragmas_opensource.json @@ -0,0 +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"}] diff --git a/yql/essentials/data/language/rules_corr_basic.json b/yql/essentials/data/language/rules_corr_basic.json index ac6883e51d..738d88fc61 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":3087662},{"parent":"FUNC","rule":"ABs","sum":1},{"parent":"FUNC","rule":"ADAPTIVE_WARD_HISTOGRAM","sum":1},{"parent":"FUNC","rule":"ADDTIMEZONE","sum":383},{"parent":"FUNC","rule":"AGGLIST","sum":1185},{"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":1546765},{"parent":"FUNC","rule":"AGGREGATE_LIST","sum":19689134},{"parent":"FUNC","rule":"AGGREGATE_LIST_","sum":2},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTINCT","sum":12601412},{"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":804},{"parent":"FUNC","rule":"AGGREGATE_LIST_distINCT","sum":4},{"parent":"FUNC","rule":"AGGREGATE_LIST_distinct","sum":18880},{"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":310},{"parent":"FUNC","rule":"AGGREGATE_list_distinct","sum":1},{"parent":"FUNC","rule":"AGGREGATIONFACTORY","sum":57},{"parent":"FUNC","rule":"AGGREGATION_FACTORY","sum":65919},{"parent":"FUNC","rule":"AGGR_LIST","sum":2938},{"parent":"FUNC","rule":"AGGR_LIST_DISTINCT","sum":44719},{"parent":"FUNC","rule":"AGGReGATE_LIST","sum":3},{"parent":"FUNC","rule":"AGGReGate_list","sum":1},{"parent":"FUNC","rule":"AGG_LIST","sum":5086855},{"parent":"FUNC","rule":"AGG_LIST_","sum":5},{"parent":"FUNC","rule":"AGG_LIST_DISTINCT","sum":2853522},{"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":11},{"parent":"FUNC","rule":"AGG_LiST_DIStiNCT","sum":2},{"parent":"FUNC","rule":"AGG_List","sum":6275},{"parent":"FUNC","rule":"AGG_List_DISTINCT","sum":1},{"parent":"FUNC","rule":"AGG_List_Distinct","sum":949},{"parent":"FUNC","rule":"AGG_List_distinct","sum":103},{"parent":"FUNC","rule":"AGG_lIST_DISTINCT","sum":5},{"parent":"FUNC","rule":"AGG_list","sum":17870},{"parent":"FUNC","rule":"AGG_list_DISTINCT","sum":3116},{"parent":"FUNC","rule":"AGG_list_distinct","sum":769},{"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":187},{"parent":"FUNC","rule":"ASDict","sum":640},{"parent":"FUNC","rule":"ASEnum","sum":78},{"parent":"FUNC","rule":"ASIN","sum":2},{"parent":"FUNC","rule":"ASLIST","sum":27913},{"parent":"FUNC","rule":"ASLIst","sum":1},{"parent":"FUNC","rule":"ASList","sum":23309},{"parent":"FUNC","rule":"ASSET","sum":17},{"parent":"FUNC","rule":"ASSTRUCT","sum":2847},{"parent":"FUNC","rule":"ASSet","sum":5},{"parent":"FUNC","rule":"ASStruct","sum":2108},{"parent":"FUNC","rule":"ASTAGGED","sum":15},{"parent":"FUNC","rule":"ASTAgged","sum":3},{"parent":"FUNC","rule":"ASTUPLE","sum":1603},{"parent":"FUNC","rule":"ASTagged","sum":62},{"parent":"FUNC","rule":"ASTuple","sum":5590},{"parent":"FUNC","rule":"AS_DICT","sum":6},{"parent":"FUNC","rule":"AS_LIST","sum":119},{"parent":"FUNC","rule":"AS_STRUCT","sum":13241},{"parent":"FUNC","rule":"AS_TABLE","sum":32},{"parent":"FUNC","rule":"AS_TUPLE","sum":832},{"parent":"FUNC","rule":"ASdict","sum":4},{"parent":"FUNC","rule":"ASlist","sum":996},{"parent":"FUNC","rule":"ASstruct","sum":41},{"parent":"FUNC","rule":"AStagged","sum":3},{"parent":"FUNC","rule":"AStuple","sum":422},{"parent":"FUNC","rule":"AVG","sum":9007449},{"parent":"FUNC","rule":"AVGIF","sum":15},{"parent":"FUNC","rule":"AVG_IF","sum":728455},{"parent":"FUNC","rule":"AVG_If","sum":8},{"parent":"FUNC","rule":"AVG_if","sum":14767},{"parent":"FUNC","rule":"AVg","sum":4},{"parent":"FUNC","rule":"Abs","sum":322850},{"parent":"FUNC","rule":"AdaptiveDistanceHistogramCDF","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogram","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogramCDF","sum":3},{"parent":"FUNC","rule":"AdaptiveWeightHistogram","sum":57716},{"parent":"FUNC","rule":"AddMember","sum":875107},{"parent":"FUNC","rule":"AddTimeZone","sum":510670},{"parent":"FUNC","rule":"AddTimezone","sum":12113370},{"parent":"FUNC","rule":"Addtimezone","sum":60},{"parent":"FUNC","rule":"AggLIst","sum":1},{"parent":"FUNC","rule":"AggList","sum":18445},{"parent":"FUNC","rule":"AggListDistinct","sum":69},{"parent":"FUNC","rule":"Agg_LIST","sum":60},{"parent":"FUNC","rule":"Agg_LIST_DISTINCT","sum":3},{"parent":"FUNC","rule":"Agg_LIST_Distinct","sum":1},{"parent":"FUNC","rule":"Agg_LIst","sum":2},{"parent":"FUNC","rule":"Agg_List","sum":128583},{"parent":"FUNC","rule":"Agg_List_","sum":8},{"parent":"FUNC","rule":"Agg_List_DISTINCT","sum":730},{"parent":"FUNC","rule":"Agg_List_Distinct","sum":2541},{"parent":"FUNC","rule":"Agg_List_distinct","sum":4},{"parent":"FUNC","rule":"Agg_list","sum":35301},{"parent":"FUNC","rule":"Agg_list_distinct","sum":8200},{"parent":"FUNC","rule":"Aggergate_List","sum":1},{"parent":"FUNC","rule":"AggrList","sum":6},{"parent":"FUNC","rule":"Aggr_List","sum":1},{"parent":"FUNC","rule":"AggreGate_List","sum":6},{"parent":"FUNC","rule":"AggregateBy","sum":42097},{"parent":"FUNC","rule":"AggregateFlatten","sum":52405},{"parent":"FUNC","rule":"AggregateList","sum":40540},{"parent":"FUNC","rule":"AggregateListDistinct","sum":7726},{"parent":"FUNC","rule":"AggregateTransformInput","sum":25439},{"parent":"FUNC","rule":"AggregateTransformOutput","sum":45216},{"parent":"FUNC","rule":"Aggregate_BY","sum":248},{"parent":"FUNC","rule":"Aggregate_By","sum":138311},{"parent":"FUNC","rule":"Aggregate_LIST","sum":835},{"parent":"FUNC","rule":"Aggregate_LIST_DISTINCT","sum":2},{"parent":"FUNC","rule":"Aggregate_LIst","sum":12},{"parent":"FUNC","rule":"Aggregate_List","sum":344071},{"parent":"FUNC","rule":"Aggregate_List_Distinct","sum":5125},{"parent":"FUNC","rule":"Aggregate_List_distinct","sum":1241},{"parent":"FUNC","rule":"Aggregate_by","sum":79},{"parent":"FUNC","rule":"Aggregate_list","sum":225628},{"parent":"FUNC","rule":"Aggregate_list_DISTINCT","sum":36},{"parent":"FUNC","rule":"Aggregate_list_Distinct","sum":7},{"parent":"FUNC","rule":"Aggregate_list_distinct","sum":200172},{"parent":"FUNC","rule":"AggregationFactory","sum":1500874},{"parent":"FUNC","rule":"Apply","sum":1},{"parent":"FUNC","rule":"AsAtom","sum":688274},{"parent":"FUNC","rule":"AsDict","sum":2916201},{"parent":"FUNC","rule":"AsDictStrict","sum":4546},{"parent":"FUNC","rule":"AsEnum","sum":49363},{"parent":"FUNC","rule":"AsLIST","sum":921},{"parent":"FUNC","rule":"AsLIst","sum":2852},{"parent":"FUNC","rule":"AsLisT","sum":1493},{"parent":"FUNC","rule":"AsList","sum":17228428},{"parent":"FUNC","rule":"AsListStrict","sum":85930},{"parent":"FUNC","rule":"AsListstrict","sum":1},{"parent":"FUNC","rule":"AsSTruct","sum":371},{"parent":"FUNC","rule":"AsSet","sum":1583958},{"parent":"FUNC","rule":"AsSetStrict","sum":11208},{"parent":"FUNC","rule":"AsStruct","sum":23386032},{"parent":"FUNC","rule":"AsTAgged","sum":293},{"parent":"FUNC","rule":"AsTUPLE","sum":442},{"parent":"FUNC","rule":"AsTUple","sum":270},{"parent":"FUNC","rule":"AsTable","sum":6},{"parent":"FUNC","rule":"AsTaggeD","sum":4},{"parent":"FUNC","rule":"AsTagged","sum":183083},{"parent":"FUNC","rule":"AsTuPle","sum":1},{"parent":"FUNC","rule":"AsTuple","sum":30038540},{"parent":"FUNC","rule":"AsVariant","sum":356380},{"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":791},{"parent":"FUNC","rule":"Asdict","sum":176},{"parent":"FUNC","rule":"AslIST","sum":1},{"parent":"FUNC","rule":"AslIst","sum":14},{"parent":"FUNC","rule":"Aslist","sum":23055},{"parent":"FUNC","rule":"Asset","sum":49},{"parent":"FUNC","rule":"Asstruct","sum":374},{"parent":"FUNC","rule":"AssumeStrict","sum":2155},{"parent":"FUNC","rule":"Astagged","sum":166},{"parent":"FUNC","rule":"Astuple","sum":603},{"parent":"FUNC","rule":"AtomCode","sum":516000},{"parent":"FUNC","rule":"Avg","sum":138598},{"parent":"FUNC","rule":"Avg_IF","sum":162},{"parent":"FUNC","rule":"Avg_If","sum":106},{"parent":"FUNC","rule":"Avg_if","sum":251},{"parent":"FUNC","rule":"BIT_AND","sum":4},{"parent":"FUNC","rule":"BIT_OR","sum":38095},{"parent":"FUNC","rule":"BIT_XOR","sum":422858},{"parent":"FUNC","rule":"BOOL_AND","sum":266030},{"parent":"FUNC","rule":"BOOL_OR","sum":881252},{"parent":"FUNC","rule":"BOOL_XOR","sum":46},{"parent":"FUNC","rule":"BOOL_and","sum":2},{"parent":"FUNC","rule":"BOOl_OR","sum":366},{"parent":"FUNC","rule":"BOTTOM","sum":11733},{"parent":"FUNC","rule":"BOTTOM_BY","sum":46084},{"parent":"FUNC","rule":"BOTTOM_by","sum":2},{"parent":"FUNC","rule":"Bool","sum":1345},{"parent":"FUNC","rule":"Bool_And","sum":118},{"parent":"FUNC","rule":"Bool_Or","sum":568},{"parent":"FUNC","rule":"Bool_and","sum":85},{"parent":"FUNC","rule":"Bool_or","sum":823},{"parent":"FUNC","rule":"Bottom","sum":283},{"parent":"FUNC","rule":"Bottom_BY","sum":10},{"parent":"FUNC","rule":"Bottom_By","sum":87},{"parent":"FUNC","rule":"Bottom_by","sum":1583},{"parent":"FUNC","rule":"ByteAt","sum":12113},{"parent":"FUNC","rule":"Bytes","sum":3},{"parent":"FUNC","rule":"CHAR_LENGTH","sum":357},{"parent":"FUNC","rule":"COALECSE","sum":1},{"parent":"FUNC","rule":"COALESCE","sum":51205369},{"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":2736},{"parent":"FUNC","rule":"COAlesce","sum":12},{"parent":"FUNC","rule":"CONCAT","sum":19},{"parent":"FUNC","rule":"COOUNT","sum":2},{"parent":"FUNC","rule":"CORR","sum":431},{"parent":"FUNC","rule":"CORRELATION","sum":19898},{"parent":"FUNC","rule":"COS","sum":4},{"parent":"FUNC","rule":"COUNT","sum":52424641},{"parent":"FUNC","rule":"COUNTD","sum":4},{"parent":"FUNC","rule":"COUNTDISTINCTESTIMATE","sum":609},{"parent":"FUNC","rule":"COUNTDistinctEstimate","sum":7},{"parent":"FUNC","rule":"COUNTIF","sum":16861},{"parent":"FUNC","rule":"COUNT_","sum":1},{"parent":"FUNC","rule":"COUNT_IF","sum":24213017},{"parent":"FUNC","rule":"COUNT_IF_","sum":24},{"parent":"FUNC","rule":"COUNT_If","sum":13225},{"parent":"FUNC","rule":"COUNT_iF","sum":43},{"parent":"FUNC","rule":"COUNT_if","sum":19804},{"parent":"FUNC","rule":"COUNt","sum":1256},{"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":39},{"parent":"FUNC","rule":"COVAR","sum":2814},{"parent":"FUNC","rule":"COVARIANCE","sum":1498},{"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":188},{"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":5416},{"parent":"FUNC","rule":"CURRENTUTCDATETIME","sum":6623},{"parent":"FUNC","rule":"CURRENTUTCDate","sum":36},{"parent":"FUNC","rule":"CURRENT_UTC_DATE","sum":2},{"parent":"FUNC","rule":"CallableArgument","sum":10045},{"parent":"FUNC","rule":"CallableArgumentType","sum":19066},{"parent":"FUNC","rule":"CallableResultType","sum":116},{"parent":"FUNC","rule":"CallableType","sum":174356},{"parent":"FUNC","rule":"CallableTypeHandle","sum":5515},{"parent":"FUNC","rule":"Ceil","sum":3},{"parent":"FUNC","rule":"ChooseMembers","sum":2497546},{"parent":"FUNC","rule":"Choosemembers","sum":21082},{"parent":"FUNC","rule":"ChosenMembers","sum":8},{"parent":"FUNC","rule":"ClearBit","sum":31148},{"parent":"FUNC","rule":"CoALESCE","sum":1},{"parent":"FUNC","rule":"CoUNT","sum":30},{"parent":"FUNC","rule":"CoUNT_IF","sum":17},{"parent":"FUNC","rule":"CoUNt","sum":2},{"parent":"FUNC","rule":"CoUnt","sum":2},{"parent":"FUNC","rule":"Coalesce","sum":722176},{"parent":"FUNC","rule":"Collect","sum":1},{"parent":"FUNC","rule":"CollectList","sum":1},{"parent":"FUNC","rule":"CombineMembers","sum":501363},{"parent":"FUNC","rule":"Concat","sum":1},{"parent":"FUNC","rule":"Correlation","sum":178},{"parent":"FUNC","rule":"CouNT","sum":2},{"parent":"FUNC","rule":"CounT","sum":17},{"parent":"FUNC","rule":"Count","sum":395725},{"parent":"FUNC","rule":"CountDistinctEstimate","sum":158460},{"parent":"FUNC","rule":"CountIF","sum":81},{"parent":"FUNC","rule":"CountIf","sum":526},{"parent":"FUNC","rule":"Count_IF","sum":15252},{"parent":"FUNC","rule":"Count_If","sum":42727},{"parent":"FUNC","rule":"Count_if","sum":324404},{"parent":"FUNC","rule":"Countif","sum":12},{"parent":"FUNC","rule":"CurrentAuthenticatedUser","sum":89327},{"parent":"FUNC","rule":"CurrentDatetime","sum":1},{"parent":"FUNC","rule":"CurrentOperationId","sum":90375},{"parent":"FUNC","rule":"CurrentOperationSharedId","sum":5558},{"parent":"FUNC","rule":"CurrentTZDate","sum":733},{"parent":"FUNC","rule":"CurrentTZDateTime","sum":35},{"parent":"FUNC","rule":"CurrentTZDatetime","sum":514},{"parent":"FUNC","rule":"CurrentTZTimestamp","sum":388},{"parent":"FUNC","rule":"CurrentTZdatetime","sum":67},{"parent":"FUNC","rule":"CurrentTzDate","sum":1608844},{"parent":"FUNC","rule":"CurrentTzDateTime","sum":1470331},{"parent":"FUNC","rule":"CurrentTzDatetime","sum":1978212},{"parent":"FUNC","rule":"CurrentTzTimeStamp","sum":4372},{"parent":"FUNC","rule":"CurrentTzTimestamp","sum":1888512},{"parent":"FUNC","rule":"CurrentUTCDATE","sum":22},{"parent":"FUNC","rule":"CurrentUTCDAte","sum":39},{"parent":"FUNC","rule":"CurrentUTCDate","sum":921323},{"parent":"FUNC","rule":"CurrentUTCDateTime","sum":182215},{"parent":"FUNC","rule":"CurrentUTCDatetime","sum":130451},{"parent":"FUNC","rule":"CurrentUTCTimeStamp","sum":105},{"parent":"FUNC","rule":"CurrentUTCTimestamp","sum":455213},{"parent":"FUNC","rule":"CurrentUTCdate","sum":71188},{"parent":"FUNC","rule":"CurrentUTCdatetime","sum":12},{"parent":"FUNC","rule":"CurrentUTcDate","sum":63},{"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":19532934},{"parent":"FUNC","rule":"CurrentUtcDateTIME","sum":1},{"parent":"FUNC","rule":"CurrentUtcDateTime","sum":3179621},{"parent":"FUNC","rule":"CurrentUtcDatetime","sum":13760831},{"parent":"FUNC","rule":"CurrentUtcDttm","sum":3},{"parent":"FUNC","rule":"CurrentUtcTimeStamp","sum":60865},{"parent":"FUNC","rule":"CurrentUtcTimestamp","sum":15105793},{"parent":"FUNC","rule":"CurrentUtcdate","sum":11803},{"parent":"FUNC","rule":"CurrenttzDate","sum":310},{"parent":"FUNC","rule":"CurrenttzDatetime","sum":1},{"parent":"FUNC","rule":"CurrentutcDate","sum":20599},{"parent":"FUNC","rule":"CurrentutcDateTime","sum":492},{"parent":"FUNC","rule":"CurrentutcTimestamp","sum":4},{"parent":"FUNC","rule":"Currentutcdate","sum":1465},{"parent":"FUNC","rule":"Currentutcdatetime","sum":22622},{"parent":"FUNC","rule":"D","sum":1},{"parent":"FUNC","rule":"DATE","sum":127693},{"parent":"FUNC","rule":"DATEADD","sum":3},{"parent":"FUNC","rule":"DATEDIFF","sum":9},{"parent":"FUNC","rule":"DATETIME","sum":832},{"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":169},{"parent":"FUNC","rule":"DAtetime","sum":61},{"parent":"FUNC","rule":"DENSE_RANK","sum":272243},{"parent":"FUNC","rule":"DICTKEYS","sum":30},{"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":3},{"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":68043},{"parent":"FUNC","rule":"DataTypeComponents","sum":36704},{"parent":"FUNC","rule":"DataTypeHandle","sum":2},{"parent":"FUNC","rule":"Datatype","sum":2},{"parent":"FUNC","rule":"Date","sum":1767677},{"parent":"FUNC","rule":"Date32","sum":74},{"parent":"FUNC","rule":"DateTime","sum":433506},{"parent":"FUNC","rule":"DateTime64","sum":45},{"parent":"FUNC","rule":"Date_Diff","sum":1},{"parent":"FUNC","rule":"DatetimE","sum":8},{"parent":"FUNC","rule":"Datetime","sum":245619},{"parent":"FUNC","rule":"Datetime64","sum":6},{"parent":"FUNC","rule":"Decimal","sum":30941},{"parent":"FUNC","rule":"DenseRank","sum":26},{"parent":"FUNC","rule":"Dense_RANK","sum":1},{"parent":"FUNC","rule":"Dense_Rank","sum":49},{"parent":"FUNC","rule":"Dense_rank","sum":6},{"parent":"FUNC","rule":"DicTKeys","sum":1},{"parent":"FUNC","rule":"DictAggregate","sum":141677},{"parent":"FUNC","rule":"DictCOntains","sum":351},{"parent":"FUNC","rule":"DictContains","sum":2023048},{"parent":"FUNC","rule":"DictCreate","sum":68793},{"parent":"FUNC","rule":"DictHasItems","sum":619694},{"parent":"FUNC","rule":"DictHasitems","sum":262},{"parent":"FUNC","rule":"DictItems","sum":2543449},{"parent":"FUNC","rule":"DictKEys","sum":1},{"parent":"FUNC","rule":"DictKeYS","sum":3},{"parent":"FUNC","rule":"DictKeyType","sum":940},{"parent":"FUNC","rule":"DictKeys","sum":2714488},{"parent":"FUNC","rule":"DictLOokup","sum":7},{"parent":"FUNC","rule":"DictLength","sum":1010189},{"parent":"FUNC","rule":"DictLookUP","sum":3},{"parent":"FUNC","rule":"DictLookUp","sum":54807},{"parent":"FUNC","rule":"DictLookup","sum":5990848},{"parent":"FUNC","rule":"DictPayLoads","sum":10617},{"parent":"FUNC","rule":"DictPayloadType","sum":208},{"parent":"FUNC","rule":"DictPayloads","sum":925682},{"parent":"FUNC","rule":"DictType","sum":626},{"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":19821},{"parent":"FUNC","rule":"Dictkeys","sum":1107},{"parent":"FUNC","rule":"Dictlength","sum":6},{"parent":"FUNC","rule":"Dictlookup","sum":75177},{"parent":"FUNC","rule":"Double","sum":34701},{"parent":"FUNC","rule":"DyNumber","sum":4},{"parent":"FUNC","rule":"EACH","sum":4},{"parent":"FUNC","rule":"ENDSWITH","sum":13303},{"parent":"FUNC","rule":"ENDsWith","sum":85},{"parent":"FUNC","rule":"ENSURE","sum":830120},{"parent":"FUNC","rule":"EOMONTH","sum":1},{"parent":"FUNC","rule":"EmptyDict","sum":420},{"parent":"FUNC","rule":"EmptyDictTypeHandle","sum":3},{"parent":"FUNC","rule":"EmptyList","sum":24582},{"parent":"FUNC","rule":"Emptydict","sum":6},{"parent":"FUNC","rule":"EndsWIth","sum":870},{"parent":"FUNC","rule":"EndsWith","sum":1538493},{"parent":"FUNC","rule":"Endswith","sum":19798},{"parent":"FUNC","rule":"Ensure","sum":1428331},{"parent":"FUNC","rule":"EnsureConvertibleTo","sum":1956},{"parent":"FUNC","rule":"EnsureType","sum":228291},{"parent":"FUNC","rule":"EvaluateAtom","sum":514},{"parent":"FUNC","rule":"EvaluateCode","sum":469846},{"parent":"FUNC","rule":"EvaluateExpr","sum":897702},{"parent":"FUNC","rule":"EvaluateType","sum":120824},{"parent":"FUNC","rule":"ExpandStruct","sum":257039},{"parent":"FUNC","rule":"ExtractUkropCtx","sum":1},{"parent":"FUNC","rule":"FIND","sum":5423952},{"parent":"FUNC","rule":"FIRST","sum":3},{"parent":"FUNC","rule":"FIRST_VALUE","sum":8847477},{"parent":"FUNC","rule":"FIRST_value","sum":785},{"parent":"FUNC","rule":"FIRsT_VALUE","sum":1},{"parent":"FUNC","rule":"FIleContent","sum":1},{"parent":"FUNC","rule":"FLATTEN","sum":9},{"parent":"FUNC","rule":"FLOAT","sum":7},{"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":29},{"parent":"FUNC","rule":"FileContent","sum":2330268},{"parent":"FUNC","rule":"FilePath","sum":1447956},{"parent":"FUNC","rule":"Filecontent","sum":11721},{"parent":"FUNC","rule":"Filepath","sum":10},{"parent":"FUNC","rule":"FinD","sum":16},{"parent":"FUNC","rule":"Find","sum":322367},{"parent":"FUNC","rule":"FirsT_VALUE","sum":3},{"parent":"FUNC","rule":"FirstValue","sum":34},{"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":108910},{"parent":"FUNC","rule":"Float","sum":12294},{"parent":"FUNC","rule":"FoldMap","sum":13},{"parent":"FUNC","rule":"Folder","sum":13},{"parent":"FUNC","rule":"FolderPath","sum":10124},{"parent":"FUNC","rule":"ForceRemoveMember","sum":399636},{"parent":"FUNC","rule":"ForceRemoveMembers","sum":1072339},{"parent":"FUNC","rule":"ForceRenameMembers","sum":63857},{"parent":"FUNC","rule":"ForceSpreadMembers","sum":113357},{"parent":"FUNC","rule":"ForceSpreadmembers","sum":4},{"parent":"FUNC","rule":"Format","sum":1},{"parent":"FUNC","rule":"FormatCode","sum":688},{"parent":"FUNC","rule":"FormatType","sum":490404},{"parent":"FUNC","rule":"FormatTypeDiff","sum":781},{"parent":"FUNC","rule":"FormatTypeDiffPretty","sum":102},{"parent":"FUNC","rule":"Formattype","sum":101},{"parent":"FUNC","rule":"FromBytes","sum":98581},{"parent":"FUNC","rule":"FromPg","sum":4802},{"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":1219779},{"parent":"FUNC","rule":"GETDATE","sum":1},{"parent":"FUNC","rule":"GREATEST","sum":388297},{"parent":"FUNC","rule":"GROUPING","sum":70388},{"parent":"FUNC","rule":"GROUPINg","sum":4},{"parent":"FUNC","rule":"GROUP_CONCAT","sum":1},{"parent":"FUNC","rule":"GatherMembers","sum":1477114},{"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":6010},{"parent":"FUNC","rule":"Grouping","sum":242},{"parent":"FUNC","rule":"HISTOGRAM","sum":268900},{"parent":"FUNC","rule":"HISTOGRAMCDF","sum":468},{"parent":"FUNC","rule":"HISTOGRAMCdf","sum":47},{"parent":"FUNC","rule":"HISTOGRAM_CDF","sum":3},{"parent":"FUNC","rule":"HISTOGRAMcdf","sum":2},{"parent":"FUNC","rule":"HISTOGrAM","sum":56},{"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":12525},{"parent":"FUNC","rule":"HOP_END","sum":16},{"parent":"FUNC","rule":"HOP_START","sum":4},{"parent":"FUNC","rule":"Histogram","sum":35170},{"parent":"FUNC","rule":"HistogramCDF","sum":368},{"parent":"FUNC","rule":"HistogramCdf","sum":34},{"parent":"FUNC","rule":"Histogram_CDF","sum":58},{"parent":"FUNC","rule":"Histogramcdf","sum":1},{"parent":"FUNC","rule":"Hll","sum":1976},{"parent":"FUNC","rule":"HyperLogLog","sum":4221},{"parent":"FUNC","rule":"IF","sum":74831249},{"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":886616},{"parent":"FUNC","rule":"INterval","sum":767},{"parent":"FUNC","rule":"If","sum":1068086},{"parent":"FUNC","rule":"IfNull","sum":6},{"parent":"FUNC","rule":"InstanceOf","sum":244693},{"parent":"FUNC","rule":"Int","sum":1},{"parent":"FUNC","rule":"Int16","sum":37},{"parent":"FUNC","rule":"Int32","sum":32725},{"parent":"FUNC","rule":"Int64","sum":3232},{"parent":"FUNC","rule":"Int8","sum":302},{"parent":"FUNC","rule":"InterVal","sum":4},{"parent":"FUNC","rule":"Interval","sum":16006942},{"parent":"FUNC","rule":"Interval64","sum":2},{"parent":"FUNC","rule":"IntervalFromDays","sum":9},{"parent":"FUNC","rule":"IsInt64","sum":1},{"parent":"FUNC","rule":"JSON","sum":78},{"parent":"FUNC","rule":"JUST","sum":127189},{"parent":"FUNC","rule":"Join","sum":1},{"parent":"FUNC","rule":"JoinTableRow","sum":1288166},{"parent":"FUNC","rule":"JoinTablerow","sum":721},{"parent":"FUNC","rule":"JointableRow","sum":1},{"parent":"FUNC","rule":"Json","sum":51068},{"parent":"FUNC","rule":"JsonDocument","sum":9},{"parent":"FUNC","rule":"Jsut","sum":1},{"parent":"FUNC","rule":"Just","sum":6491447},{"parent":"FUNC","rule":"LAG","sum":3999334},{"parent":"FUNC","rule":"LAST","sum":1},{"parent":"FUNC","rule":"LAST_VALUE","sum":1318288},{"parent":"FUNC","rule":"LAST_value","sum":2},{"parent":"FUNC","rule":"LEAD","sum":1634916},{"parent":"FUNC","rule":"LEAST","sum":426055},{"parent":"FUNC","rule":"LEFT","sum":3},{"parent":"FUNC","rule":"LEFT_SHIFT","sum":1},{"parent":"FUNC","rule":"LEN","sum":1686381},{"parent":"FUNC","rule":"LENGTH","sum":3834935},{"parent":"FUNC","rule":"LENgth","sum":23},{"parent":"FUNC","rule":"LEngth","sum":12},{"parent":"FUNC","rule":"LIKELY","sum":141169},{"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":2698},{"parent":"FUNC","rule":"LISTANY","sum":130},{"parent":"FUNC","rule":"LISTAVG","sum":17},{"parent":"FUNC","rule":"LISTAny","sum":10},{"parent":"FUNC","rule":"LISTCOLLECT","sum":1},{"parent":"FUNC","rule":"LISTCONCAT","sum":1524},{"parent":"FUNC","rule":"LISTEXTEND","sum":13},{"parent":"FUNC","rule":"LISTFILTER","sum":1627},{"parent":"FUNC","rule":"LISTFLATTEN","sum":4219},{"parent":"FUNC","rule":"LISTFROMRANGE","sum":1488},{"parent":"FUNC","rule":"LISTHAS","sum":36584},{"parent":"FUNC","rule":"LISTHASITEMS","sum":2089},{"parent":"FUNC","rule":"LISTHEAD","sum":18498},{"parent":"FUNC","rule":"LISTHas","sum":9},{"parent":"FUNC","rule":"LISTHead","sum":2},{"parent":"FUNC","rule":"LISTLAST","sum":1510},{"parent":"FUNC","rule":"LISTLENGTH","sum":48055},{"parent":"FUNC","rule":"LISTLENGth","sum":4},{"parent":"FUNC","rule":"LISTLenGTH","sum":7},{"parent":"FUNC","rule":"LISTLength","sum":2085},{"parent":"FUNC","rule":"LISTMAP","sum":14251},{"parent":"FUNC","rule":"LISTMAX","sum":5639},{"parent":"FUNC","rule":"LISTMIN","sum":187},{"parent":"FUNC","rule":"LISTMap","sum":365},{"parent":"FUNC","rule":"LISTNOTNULL","sum":8480},{"parent":"FUNC","rule":"LISTREVERSE","sum":2},{"parent":"FUNC","rule":"LISTSKIP","sum":15},{"parent":"FUNC","rule":"LISTSORT","sum":7572},{"parent":"FUNC","rule":"LISTSORTASC","sum":1673},{"parent":"FUNC","rule":"LISTSORTDESC","sum":104},{"parent":"FUNC","rule":"LISTSUM","sum":175},{"parent":"FUNC","rule":"LISTSort","sum":19},{"parent":"FUNC","rule":"LISTSum","sum":6},{"parent":"FUNC","rule":"LISTTAKE","sum":265},{"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_FLATTEN","sum":3},{"parent":"FUNC","rule":"LIST_FOLD","sum":30},{"parent":"FUNC","rule":"LIST_FROM_RANGE","sum":346},{"parent":"FUNC","rule":"LIST_HAS","sum":1993},{"parent":"FUNC","rule":"LIST_HEAD","sum":100},{"parent":"FUNC","rule":"LIST_LAST","sum":54},{"parent":"FUNC","rule":"LIST_LENGTH","sum":2457},{"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":647},{"parent":"FUNC","rule":"LIST_SUM","sum":2},{"parent":"FUNC","rule":"LIST_TAKE","sum":2},{"parent":"FUNC","rule":"LIST_UNIQ","sum":334},{"parent":"FUNC","rule":"LIST_length","sum":1},{"parent":"FUNC","rule":"LISTfilter","sum":7},{"parent":"FUNC","rule":"LISTfromRange","sum":1410},{"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":"LIstAny","sum":3},{"parent":"FUNC","rule":"LIstConcat","sum":304},{"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":16},{"parent":"FUNC","rule":"LIstHasItems","sum":6},{"parent":"FUNC","rule":"LIstHead","sum":3},{"parent":"FUNC","rule":"LIstLength","sum":374},{"parent":"FUNC","rule":"LIstMap","sum":1315},{"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":12443},{"parent":"FUNC","rule":"LambdaArgumentsCount","sum":32},{"parent":"FUNC","rule":"LambdaCode","sum":326513},{"parent":"FUNC","rule":"LastValue","sum":41},{"parent":"FUNC","rule":"Last_VALUE","sum":14},{"parent":"FUNC","rule":"Last_Value","sum":29},{"parent":"FUNC","rule":"Last_value","sum":84},{"parent":"FUNC","rule":"Lead","sum":11223},{"parent":"FUNC","rule":"Least","sum":2190},{"parent":"FUNC","rule":"Len","sum":92600},{"parent":"FUNC","rule":"LenGTH","sum":12},{"parent":"FUNC","rule":"Length","sum":1242695},{"parent":"FUNC","rule":"LiSTMAP","sum":2},{"parent":"FUNC","rule":"Likely","sum":20141},{"parent":"FUNC","rule":"LinearHISTOGRAM","sum":86},{"parent":"FUNC","rule":"LinearHistogram","sum":45772},{"parent":"FUNC","rule":"LinearHistogramCDF","sum":481},{"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":1571},{"parent":"FUNC","rule":"ListALl","sum":8},{"parent":"FUNC","rule":"ListANY","sum":1726},{"parent":"FUNC","rule":"ListAVG","sum":246},{"parent":"FUNC","rule":"ListAgg","sum":2},{"parent":"FUNC","rule":"ListAggregate","sum":424587},{"parent":"FUNC","rule":"ListAll","sum":263261},{"parent":"FUNC","rule":"ListAny","sum":1878420},{"parent":"FUNC","rule":"ListAppend","sum":1},{"parent":"FUNC","rule":"ListAvg","sum":534208},{"parent":"FUNC","rule":"ListCOncat","sum":2},{"parent":"FUNC","rule":"ListCode","sum":207058},{"parent":"FUNC","rule":"ListCollect","sum":902802},{"parent":"FUNC","rule":"ListConCat","sum":77},{"parent":"FUNC","rule":"ListConcat","sum":5449410},{"parent":"FUNC","rule":"ListCreate","sum":1958900},{"parent":"FUNC","rule":"ListDistinct","sum":1},{"parent":"FUNC","rule":"ListEnumerate","sum":1392489},{"parent":"FUNC","rule":"ListExtend","sum":4359935},{"parent":"FUNC","rule":"ListExtendStrict","sum":87958},{"parent":"FUNC","rule":"ListExtract","sum":3299019},{"parent":"FUNC","rule":"ListFILTER","sum":495},{"parent":"FUNC","rule":"ListFIlter","sum":339},{"parent":"FUNC","rule":"ListFLatMap","sum":270},{"parent":"FUNC","rule":"ListFLatten","sum":596},{"parent":"FUNC","rule":"ListFROMRange","sum":5024},{"parent":"FUNC","rule":"ListFilteR","sum":4},{"parent":"FUNC","rule":"ListFilter","sum":17748233},{"parent":"FUNC","rule":"ListFirst","sum":3},{"parent":"FUNC","rule":"ListFlatMap","sum":910460},{"parent":"FUNC","rule":"ListFlatmap","sum":28521},{"parent":"FUNC","rule":"ListFlatten","sum":2811746},{"parent":"FUNC","rule":"ListFold","sum":229604},{"parent":"FUNC","rule":"ListFold1","sum":35297},{"parent":"FUNC","rule":"ListFold1Map","sum":3440},{"parent":"FUNC","rule":"ListFoldMap","sum":38611},{"parent":"FUNC","rule":"ListFromPython","sum":2},{"parent":"FUNC","rule":"ListFromRANGE","sum":23},{"parent":"FUNC","rule":"ListFromRAnge","sum":45},{"parent":"FUNC","rule":"ListFromRange","sum":3070356},{"parent":"FUNC","rule":"ListFromTuple","sum":58796},{"parent":"FUNC","rule":"ListFromTyple","sum":2},{"parent":"FUNC","rule":"ListFromrange","sum":12},{"parent":"FUNC","rule":"ListHAS","sum":412},{"parent":"FUNC","rule":"ListHAs","sum":572},{"parent":"FUNC","rule":"ListHAsItems","sum":26},{"parent":"FUNC","rule":"ListHEAD","sum":2},{"parent":"FUNC","rule":"ListHEad","sum":66},{"parent":"FUNC","rule":"ListHaS","sum":1},{"parent":"FUNC","rule":"ListHas","sum":20684140},{"parent":"FUNC","rule":"ListHasITems","sum":9},{"parent":"FUNC","rule":"ListHasItemhs","sum":1},{"parent":"FUNC","rule":"ListHasItems","sum":5096505},{"parent":"FUNC","rule":"ListHasitems","sum":331},{"parent":"FUNC","rule":"ListHeaD","sum":102},{"parent":"FUNC","rule":"ListHead","sum":10553525},{"parent":"FUNC","rule":"ListINdexOf","sum":2},{"parent":"FUNC","rule":"ListIndex","sum":1},{"parent":"FUNC","rule":"ListIndexOF","sum":10},{"parent":"FUNC","rule":"ListIndexOf","sum":1218088},{"parent":"FUNC","rule":"ListIndexof","sum":19},{"parent":"FUNC","rule":"ListItemType","sum":206671},{"parent":"FUNC","rule":"ListJoin","sum":3},{"parent":"FUNC","rule":"ListJsonDocument","sum":1},{"parent":"FUNC","rule":"ListLAst","sum":10},{"parent":"FUNC","rule":"ListLENGTH","sum":2290},{"parent":"FUNC","rule":"ListLEngth","sum":19},{"parent":"FUNC","rule":"ListLasT","sum":12},{"parent":"FUNC","rule":"ListLast","sum":5980021},{"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":18360734},{"parent":"FUNC","rule":"ListMAP","sum":227},{"parent":"FUNC","rule":"ListMAX","sum":9790},{"parent":"FUNC","rule":"ListMAp","sum":4717},{"parent":"FUNC","rule":"ListMAx","sum":1},{"parent":"FUNC","rule":"ListMIN","sum":52},{"parent":"FUNC","rule":"ListMIn","sum":1},{"parent":"FUNC","rule":"ListMaP","sum":1218},{"parent":"FUNC","rule":"ListMap","sum":35320671},{"parent":"FUNC","rule":"ListMax","sum":1413335},{"parent":"FUNC","rule":"ListMin","sum":811946},{"parent":"FUNC","rule":"ListNOTNull","sum":712},{"parent":"FUNC","rule":"ListNoTNull","sum":17},{"parent":"FUNC","rule":"ListNoTnull","sum":881},{"parent":"FUNC","rule":"ListNonNull","sum":1},{"parent":"FUNC","rule":"ListNotNULL","sum":30190},{"parent":"FUNC","rule":"ListNotNUll","sum":7920},{"parent":"FUNC","rule":"ListNotNuLL","sum":5},{"parent":"FUNC","rule":"ListNotNul","sum":1},{"parent":"FUNC","rule":"ListNotNulL","sum":3},{"parent":"FUNC","rule":"ListNotNull","sum":9108047},{"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":946286},{"parent":"FUNC","rule":"ListReverse","sum":1334209},{"parent":"FUNC","rule":"ListSORT","sum":1},{"parent":"FUNC","rule":"ListSORtAsc","sum":26},{"parent":"FUNC","rule":"ListSOrt","sum":3},{"parent":"FUNC","rule":"ListSUM","sum":866},{"parent":"FUNC","rule":"ListSUm","sum":12},{"parent":"FUNC","rule":"ListSample","sum":6},{"parent":"FUNC","rule":"ListSampleN","sum":645},{"parent":"FUNC","rule":"ListShuffle","sum":481},{"parent":"FUNC","rule":"ListShuffleN","sum":1},{"parent":"FUNC","rule":"ListSkip","sum":617241},{"parent":"FUNC","rule":"ListSkipWhile","sum":139816},{"parent":"FUNC","rule":"ListSkipWhileInclusive","sum":8636},{"parent":"FUNC","rule":"ListSort","sum":4987535},{"parent":"FUNC","rule":"ListSortASC","sum":17601},{"parent":"FUNC","rule":"ListSortAsc","sum":481868},{"parent":"FUNC","rule":"ListSortDESC","sum":53},{"parent":"FUNC","rule":"ListSortDEsc","sum":2},{"parent":"FUNC","rule":"ListSortDesc","sum":1133917},{"parent":"FUNC","rule":"ListSortasc","sum":9},{"parent":"FUNC","rule":"ListSortdesc","sum":669},{"parent":"FUNC","rule":"ListSum","sum":1741577},{"parent":"FUNC","rule":"ListTail","sum":1},{"parent":"FUNC","rule":"ListTake","sum":2140859},{"parent":"FUNC","rule":"ListTakeWhile","sum":89508},{"parent":"FUNC","rule":"ListTakeWhileInclusive","sum":2460},{"parent":"FUNC","rule":"ListToTuple","sum":6188},{"parent":"FUNC","rule":"ListTop","sum":2203},{"parent":"FUNC","rule":"ListTopAsc","sum":132},{"parent":"FUNC","rule":"ListTopDESC","sum":1},{"parent":"FUNC","rule":"ListTopDesc","sum":9595},{"parent":"FUNC","rule":"ListTopSort","sum":1009},{"parent":"FUNC","rule":"ListTopSortAsc","sum":40},{"parent":"FUNC","rule":"ListTopSortDesc","sum":60040},{"parent":"FUNC","rule":"ListTopdesc","sum":1},{"parent":"FUNC","rule":"ListType","sum":31551},{"parent":"FUNC","rule":"ListTypeHandle","sum":1},{"parent":"FUNC","rule":"ListUNiq","sum":24},{"parent":"FUNC","rule":"ListUnionALL","sum":127},{"parent":"FUNC","rule":"ListUnionAll","sum":56559},{"parent":"FUNC","rule":"ListUniq","sum":3966479},{"parent":"FUNC","rule":"ListUniqStable","sum":74015},{"parent":"FUNC","rule":"ListZIP","sum":8},{"parent":"FUNC","rule":"ListZIp","sum":1},{"parent":"FUNC","rule":"ListZip","sum":2521995},{"parent":"FUNC","rule":"ListZipALL","sum":291025},{"parent":"FUNC","rule":"ListZipAll","sum":275263},{"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":4433},{"parent":"FUNC","rule":"Listany","sum":38},{"parent":"FUNC","rule":"Listcollect","sum":5146},{"parent":"FUNC","rule":"Listconcat","sum":14947},{"parent":"FUNC","rule":"Listenumerate","sum":3},{"parent":"FUNC","rule":"Listextend","sum":5},{"parent":"FUNC","rule":"Listfilter","sum":270192},{"parent":"FUNC","rule":"Listflatmap","sum":297},{"parent":"FUNC","rule":"Listflatten","sum":35},{"parent":"FUNC","rule":"ListfromRange","sum":32},{"parent":"FUNC","rule":"Listfromrange","sum":98},{"parent":"FUNC","rule":"Listfromtuple","sum":1},{"parent":"FUNC","rule":"Listhas","sum":71109},{"parent":"FUNC","rule":"ListhasItems","sum":274},{"parent":"FUNC","rule":"Listhasitems","sum":467},{"parent":"FUNC","rule":"Listhead","sum":18611},{"parent":"FUNC","rule":"ListindexOf","sum":1943},{"parent":"FUNC","rule":"Listindexof","sum":4},{"parent":"FUNC","rule":"ListlENGTH","sum":1},{"parent":"FUNC","rule":"ListlEngth","sum":2},{"parent":"FUNC","rule":"Listlast","sum":3720},{"parent":"FUNC","rule":"Listlength","sum":10868},{"parent":"FUNC","rule":"Listmap","sum":11186},{"parent":"FUNC","rule":"Listmax","sum":488},{"parent":"FUNC","rule":"Listmin","sum":1607},{"parent":"FUNC","rule":"ListnotNull","sum":38},{"parent":"FUNC","rule":"Listnotnull","sum":11},{"parent":"FUNC","rule":"Listreverse","sum":17},{"parent":"FUNC","rule":"Listskip","sum":148},{"parent":"FUNC","rule":"ListskipWhile","sum":409},{"parent":"FUNC","rule":"Listsort","sum":989},{"parent":"FUNC","rule":"Listsortasc","sum":1},{"parent":"FUNC","rule":"Listsortdesc","sum":1},{"parent":"FUNC","rule":"Listsum","sum":27},{"parent":"FUNC","rule":"Listtake","sum":20255},{"parent":"FUNC","rule":"ListtakeWhile","sum":2},{"parent":"FUNC","rule":"Listuniq","sum":323},{"parent":"FUNC","rule":"Listzip","sum":751},{"parent":"FUNC","rule":"Listzipall","sum":1},{"parent":"FUNC","rule":"LogHISTOGRAM","sum":7},{"parent":"FUNC","rule":"LogHistogram","sum":287},{"parent":"FUNC","rule":"LogHistogramCDF","sum":15},{"parent":"FUNC","rule":"LogarithmicHISTOGRAM","sum":1},{"parent":"FUNC","rule":"LogarithmicHistogram","sum":622},{"parent":"FUNC","rule":"Logarithmichistogram","sum":20},{"parent":"FUNC","rule":"Lookup","sum":1},{"parent":"FUNC","rule":"MAX","sum":34405108},{"parent":"FUNC","rule":"MAXBY","sum":123},{"parent":"FUNC","rule":"MAXOF","sum":3},{"parent":"FUNC","rule":"MAX_BY","sum":22818637},{"parent":"FUNC","rule":"MAX_By","sum":1},{"parent":"FUNC","rule":"MAX_IF","sum":1},{"parent":"FUNC","rule":"MAX_OF","sum":2201416},{"parent":"FUNC","rule":"MAX_Of","sum":2},{"parent":"FUNC","rule":"MAX_bY","sum":7},{"parent":"FUNC","rule":"MAX_by","sum":10454},{"parent":"FUNC","rule":"MAX_of","sum":649},{"parent":"FUNC","rule":"MAx","sum":294},{"parent":"FUNC","rule":"MEDIAN","sum":905336},{"parent":"FUNC","rule":"MEDiAN","sum":4},{"parent":"FUNC","rule":"MEdian","sum":14},{"parent":"FUNC","rule":"MIN","sum":14617885},{"parent":"FUNC","rule":"MINBY","sum":1894},{"parent":"FUNC","rule":"MIN_BY","sum":5253791},{"parent":"FUNC","rule":"MIN_IF","sum":8},{"parent":"FUNC","rule":"MIN_OF","sum":2254327},{"parent":"FUNC","rule":"MIN_by","sum":1237},{"parent":"FUNC","rule":"MIN_of","sum":1},{"parent":"FUNC","rule":"MIn","sum":201},{"parent":"FUNC","rule":"MIn_OF","sum":3},{"parent":"FUNC","rule":"MODE","sum":902020},{"parent":"FUNC","rule":"MODe","sum":1},{"parent":"FUNC","rule":"MONTH","sum":1},{"parent":"FUNC","rule":"MULTI_AGGREGATE_BY","sum":686176},{"parent":"FUNC","rule":"MaX","sum":7},{"parent":"FUNC","rule":"MakeDate","sum":1},{"parent":"FUNC","rule":"Map","sum":4},{"parent":"FUNC","rule":"Max","sum":376925},{"parent":"FUNC","rule":"MaxBy","sum":5442},{"parent":"FUNC","rule":"MaxOf","sum":207},{"parent":"FUNC","rule":"Max_BY","sum":3170},{"parent":"FUNC","rule":"Max_By","sum":68730},{"parent":"FUNC","rule":"Max_OF","sum":669},{"parent":"FUNC","rule":"Max_Of","sum":648},{"parent":"FUNC","rule":"Max_by","sum":141102},{"parent":"FUNC","rule":"Max_of","sum":3235},{"parent":"FUNC","rule":"Median","sum":19448},{"parent":"FUNC","rule":"MiN","sum":35},{"parent":"FUNC","rule":"Min","sum":192664},{"parent":"FUNC","rule":"MinBy","sum":1173},{"parent":"FUNC","rule":"MinOf","sum":892},{"parent":"FUNC","rule":"Min_BY","sum":440},{"parent":"FUNC","rule":"Min_By","sum":10675},{"parent":"FUNC","rule":"Min_OF","sum":1097},{"parent":"FUNC","rule":"Min_Of","sum":794},{"parent":"FUNC","rule":"Min_by","sum":9084},{"parent":"FUNC","rule":"Min_of","sum":1340},{"parent":"FUNC","rule":"MoDE","sum":1},{"parent":"FUNC","rule":"Mode","sum":14375},{"parent":"FUNC","rule":"Mul","sum":1},{"parent":"FUNC","rule":"MultiAggregateBy","sum":629},{"parent":"FUNC","rule":"Multi_Aggregate_BY","sum":4},{"parent":"FUNC","rule":"Multi_Aggregate_By","sum":1156},{"parent":"FUNC","rule":"Multi_Aggregate_by","sum":4},{"parent":"FUNC","rule":"Multi_aggregate_by","sum":436},{"parent":"FUNC","rule":"NANVL","sum":718226},{"parent":"FUNC","rule":"NOTHING","sum":3020},{"parent":"FUNC","rule":"NOW","sum":2},{"parent":"FUNC","rule":"NOW64","sum":2},{"parent":"FUNC","rule":"NOthing","sum":1},{"parent":"FUNC","rule":"NTH_VALUE","sum":2934},{"parent":"FUNC","rule":"NTILE","sum":1642},{"parent":"FUNC","rule":"NULLIF","sum":1},{"parent":"FUNC","rule":"NVL","sum":17598846},{"parent":"FUNC","rule":"NVl","sum":817},{"parent":"FUNC","rule":"NaNvl","sum":26},{"parent":"FUNC","rule":"NanVL","sum":1},{"parent":"FUNC","rule":"NanVl","sum":3},{"parent":"FUNC","rule":"Nanvl","sum":10531},{"parent":"FUNC","rule":"NothiNG","sum":2},{"parent":"FUNC","rule":"Nothing","sum":806416},{"parent":"FUNC","rule":"NullTypeHandle","sum":2529},{"parent":"FUNC","rule":"Nvl","sum":27846},{"parent":"FUNC","rule":"OR","sum":6},{"parent":"FUNC","rule":"OVER","sum":1},{"parent":"FUNC","rule":"OptionalItemType","sum":37184},{"parent":"FUNC","rule":"OptionalType","sum":136958},{"parent":"FUNC","rule":"OptionalTypeHandle","sum":44055},{"parent":"FUNC","rule":"PERCENTILE","sum":29614610},{"parent":"FUNC","rule":"PERCENTIlE","sum":4},{"parent":"FUNC","rule":"PERCENT_RANK","sum":5854},{"parent":"FUNC","rule":"PERCENtILE","sum":1897},{"parent":"FUNC","rule":"PERCEnTILE","sum":1},{"parent":"FUNC","rule":"PICKLE","sum":77},{"parent":"FUNC","rule":"PIckle","sum":7},{"parent":"FUNC","rule":"POPULATION_STDDEV","sum":372},{"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":955948},{"parent":"FUNC","rule":"ParseType","sum":459502},{"parent":"FUNC","rule":"ParseTypeHandle","sum":1160868},{"parent":"FUNC","rule":"Parsefile","sum":109},{"parent":"FUNC","rule":"Path","sum":4},{"parent":"FUNC","rule":"PeRCENTILE","sum":365},{"parent":"FUNC","rule":"Percentile","sum":73722},{"parent":"FUNC","rule":"PgArray","sum":17},{"parent":"FUNC","rule":"PgBool","sum":145},{"parent":"FUNC","rule":"PgCall","sum":538},{"parent":"FUNC","rule":"PgCast","sum":5475},{"parent":"FUNC","rule":"PgCircle","sum":5},{"parent":"FUNC","rule":"PgConst","sum":99},{"parent":"FUNC","rule":"PgDate","sum":115},{"parent":"FUNC","rule":"PgGeometry","sum":6},{"parent":"FUNC","rule":"PgInt4","sum":1},{"parent":"FUNC","rule":"PgInterval","sum":33},{"parent":"FUNC","rule":"PgOp","sum":1347},{"parent":"FUNC","rule":"PgPoint","sum":75},{"parent":"FUNC","rule":"PgPolygon","sum":516},{"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":118777},{"parent":"FUNC","rule":"QuoteCode","sum":735840},{"parent":"FUNC","rule":"RADIANS","sum":12},{"parent":"FUNC","rule":"RAND","sum":2},{"parent":"FUNC","rule":"RANDOM","sum":484333},{"parent":"FUNC","rule":"RANDOMNUMBER","sum":3991},{"parent":"FUNC","rule":"RANDOMNumber","sum":11},{"parent":"FUNC","rule":"RANDOMUUID","sum":5},{"parent":"FUNC","rule":"RANDOM_NUMBER","sum":83},{"parent":"FUNC","rule":"RANGE","sum":150},{"parent":"FUNC","rule":"RANK","sum":931701},{"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":6},{"parent":"FUNC","rule":"RFIND","sum":3509212},{"parent":"FUNC","rule":"RFind","sum":258233},{"parent":"FUNC","rule":"RIGHT","sum":2},{"parent":"FUNC","rule":"ROUND","sum":10},{"parent":"FUNC","rule":"ROWNUMBER","sum":33},{"parent":"FUNC","rule":"ROW_NUMBER","sum":9342600},{"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":13605},{"parent":"FUNC","rule":"Rand","sum":1},{"parent":"FUNC","rule":"Random","sum":721944},{"parent":"FUNC","rule":"RandomNUmber","sum":183},{"parent":"FUNC","rule":"RandomNumber","sum":269061},{"parent":"FUNC","rule":"RandomUUID","sum":8345},{"parent":"FUNC","rule":"RandomUUid","sum":33585},{"parent":"FUNC","rule":"RandomUuid","sum":215027},{"parent":"FUNC","rule":"Randomnumber","sum":2},{"parent":"FUNC","rule":"Range","sum":2},{"parent":"FUNC","rule":"Rank","sum":3074},{"parent":"FUNC","rule":"RemoveMEmbers","sum":16},{"parent":"FUNC","rule":"RemoveMember","sum":429995},{"parent":"FUNC","rule":"RemoveMembers","sum":721426},{"parent":"FUNC","rule":"RemoveTimeZone","sum":13},{"parent":"FUNC","rule":"RemoveTimezone","sum":432859},{"parent":"FUNC","rule":"Removemember","sum":692},{"parent":"FUNC","rule":"Removemembers","sum":4},{"parent":"FUNC","rule":"RenameMembers","sum":486595},{"parent":"FUNC","rule":"ReplaceMember","sum":9397},{"parent":"FUNC","rule":"ReprCode","sum":194797},{"parent":"FUNC","rule":"ResourceType","sum":9},{"parent":"FUNC","rule":"Rfind","sum":873},{"parent":"FUNC","rule":"RootAttributes","sum":20},{"parent":"FUNC","rule":"RowNum","sum":1},{"parent":"FUNC","rule":"RowNumber","sum":21310},{"parent":"FUNC","rule":"Row_NUMBER","sum":29},{"parent":"FUNC","rule":"Row_NUmber","sum":12},{"parent":"FUNC","rule":"Row_Number","sum":60795},{"parent":"FUNC","rule":"Row_number","sum":4003},{"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":32912475},{"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":25639},{"parent":"FUNC","rule":"STARTS_WITH","sum":42},{"parent":"FUNC","rule":"STARTsWITH","sum":17},{"parent":"FUNC","rule":"STATICMAP","sum":46},{"parent":"FUNC","rule":"STD","sum":6},{"parent":"FUNC","rule":"STDDEV","sum":401637},{"parent":"FUNC","rule":"STDDEVPOP","sum":2917},{"parent":"FUNC","rule":"STDDEVSAMP","sum":1094},{"parent":"FUNC","rule":"STDDEV_POP","sum":14},{"parent":"FUNC","rule":"STDDEV_POPULATION","sum":18435},{"parent":"FUNC","rule":"STDDEV_SAMP","sum":3551},{"parent":"FUNC","rule":"STDDEV_SAMPLE","sum":9894},{"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_Distance","sum":5},{"parent":"FUNC","rule":"ST_GeomFromGeoHash","sum":1},{"parent":"FUNC","rule":"ST_Point","sum":10},{"parent":"FUNC","rule":"ST_PolygonFromText","sum":5},{"parent":"FUNC","rule":"ST_SetSRID","sum":6},{"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":29234003},{"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":224},{"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":42261625},{"parent":"FUNC","rule":"SUMIF","sum":3317},{"parent":"FUNC","rule":"SUM_","sum":320},{"parent":"FUNC","rule":"SUM_IF","sum":8449934},{"parent":"FUNC","rule":"SUM_If","sum":110},{"parent":"FUNC","rule":"SUM_iF","sum":19},{"parent":"FUNC","rule":"SUM_if","sum":264857},{"parent":"FUNC","rule":"SUN","sum":1},{"parent":"FUNC","rule":"SUbstring","sum":5},{"parent":"FUNC","rule":"SUm","sum":78},{"parent":"FUNC","rule":"SUm_IF","sum":30},{"parent":"FUNC","rule":"SWITCH","sum":2},{"parent":"FUNC","rule":"SecureParam","sum":891313},{"parent":"FUNC","rule":"SessionStart","sum":24374},{"parent":"FUNC","rule":"SessionState","sum":708},{"parent":"FUNC","rule":"SessionWindow","sum":101921},{"parent":"FUNC","rule":"SetBit","sum":45764},{"parent":"FUNC","rule":"SetContains","sum":1},{"parent":"FUNC","rule":"SetCreate","sum":45653},{"parent":"FUNC","rule":"SetDIfference","sum":11},{"parent":"FUNC","rule":"SetDifference","sum":483448},{"parent":"FUNC","rule":"SetIncludes","sum":248781},{"parent":"FUNC","rule":"SetInterSection","sum":21},{"parent":"FUNC","rule":"SetIntersection","sum":1262511},{"parent":"FUNC","rule":"SetIsDisJOINt","sum":8271},{"parent":"FUNC","rule":"SetIsDisJoint","sum":1665},{"parent":"FUNC","rule":"SetIsDisjoint","sum":1224131},{"parent":"FUNC","rule":"SetSymmetricDifference","sum":8950},{"parent":"FUNC","rule":"SetUNION","sum":1},{"parent":"FUNC","rule":"SetUnion","sum":581567},{"parent":"FUNC","rule":"Setintersection","sum":4333},{"parent":"FUNC","rule":"SizeOf","sum":1},{"parent":"FUNC","rule":"Some","sum":2506744},{"parent":"FUNC","rule":"SplitToList","sum":6},{"parent":"FUNC","rule":"SpreadMembers","sum":346135},{"parent":"FUNC","rule":"StablePicke","sum":1},{"parent":"FUNC","rule":"StablePickle","sum":210832},{"parent":"FUNC","rule":"StartSwith","sum":105},{"parent":"FUNC","rule":"StartsWIth","sum":696},{"parent":"FUNC","rule":"StartsWith","sum":5729777},{"parent":"FUNC","rule":"Startswith","sum":18841},{"parent":"FUNC","rule":"StaticFold","sum":297},{"parent":"FUNC","rule":"StaticMap","sum":685188},{"parent":"FUNC","rule":"StaticZip","sum":13310},{"parent":"FUNC","rule":"Staticmap","sum":2},{"parent":"FUNC","rule":"StdDev","sum":33},{"parent":"FUNC","rule":"Stddev","sum":43},{"parent":"FUNC","rule":"StreamItemType","sum":5736},{"parent":"FUNC","rule":"StreamType","sum":76883},{"parent":"FUNC","rule":"StreamTypeHandle","sum":17},{"parent":"FUNC","rule":"String","sum":34646},{"parent":"FUNC","rule":"StringLength","sum":5},{"parent":"FUNC","rule":"StringSplitToList","sum":4},{"parent":"FUNC","rule":"StructDifference","sum":229},{"parent":"FUNC","rule":"StructIntersection","sum":779},{"parent":"FUNC","rule":"StructMemberType","sum":18722},{"parent":"FUNC","rule":"StructMembers","sum":964266},{"parent":"FUNC","rule":"StructSymmetricDifference","sum":172},{"parent":"FUNC","rule":"StructType","sum":18113},{"parent":"FUNC","rule":"StructTypeComponents","sum":99048},{"parent":"FUNC","rule":"StructTypeHandle","sum":87242},{"parent":"FUNC","rule":"StructUnion","sum":95400},{"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":27042},{"parent":"FUNC","rule":"SubqueryAssumeOrderBy","sum":809},{"parent":"FUNC","rule":"SubqueryExtend","sum":36478},{"parent":"FUNC","rule":"SubqueryExtendFor","sum":769666},{"parent":"FUNC","rule":"SubqueryMerge","sum":17},{"parent":"FUNC","rule":"SubqueryMergeFor","sum":36094},{"parent":"FUNC","rule":"SubqueryOrderBy","sum":181209},{"parent":"FUNC","rule":"SubqueryUnionALLFor","sum":9},{"parent":"FUNC","rule":"SubqueryUnionALlFor","sum":17},{"parent":"FUNC","rule":"SubqueryUnionAll","sum":26106},{"parent":"FUNC","rule":"SubqueryUnionAllFor","sum":137115},{"parent":"FUNC","rule":"SubqueryUnionAllfor","sum":380},{"parent":"FUNC","rule":"SubqueryUnionMerge","sum":30587},{"parent":"FUNC","rule":"SubqueryUnionMergeFor","sum":73721},{"parent":"FUNC","rule":"SubsTRING","sum":3},{"parent":"FUNC","rule":"Substring","sum":2938868},{"parent":"FUNC","rule":"Sum","sum":452555},{"parent":"FUNC","rule":"SumIf","sum":1597},{"parent":"FUNC","rule":"Sum_IF","sum":85},{"parent":"FUNC","rule":"Sum_If","sum":14878},{"parent":"FUNC","rule":"Sum_if","sum":52115},{"parent":"FUNC","rule":"TABLENAME","sum":11760},{"parent":"FUNC","rule":"TABLEPATH","sum":316},{"parent":"FUNC","rule":"TABLERECORDINDEX","sum":45},{"parent":"FUNC","rule":"TABLEROW","sum":1277},{"parent":"FUNC","rule":"TABLE_NAME","sum":124},{"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":65},{"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":426},{"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":499603},{"parent":"FUNC","rule":"TOPBY","sum":1},{"parent":"FUNC","rule":"TOPFREQ","sum":513458},{"parent":"FUNC","rule":"TOPFreq","sum":3},{"parent":"FUNC","rule":"TOP_BY","sum":1756151},{"parent":"FUNC","rule":"TOP_FREQ","sum":46},{"parent":"FUNC","rule":"TOP_by","sum":25},{"parent":"FUNC","rule":"TOSET","sum":41},{"parent":"FUNC","rule":"TOSet","sum":762},{"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":129},{"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":1509},{"parent":"FUNC","rule":"TableNamE","sum":2},{"parent":"FUNC","rule":"TableName","sum":14993581},{"parent":"FUNC","rule":"TablePATH","sum":1},{"parent":"FUNC","rule":"TablePAth","sum":5},{"parent":"FUNC","rule":"TablePath","sum":1494366},{"parent":"FUNC","rule":"TableROW","sum":4},{"parent":"FUNC","rule":"TableROw","sum":19},{"parent":"FUNC","rule":"TableRecordINdex","sum":4},{"parent":"FUNC","rule":"TableRecordIndex","sum":2323768},{"parent":"FUNC","rule":"TableRedordIndex","sum":1},{"parent":"FUNC","rule":"TableRow","sum":26859346},{"parent":"FUNC","rule":"TableRowIndex","sum":1},{"parent":"FUNC","rule":"TableRows","sum":1668276},{"parent":"FUNC","rule":"Table_Name","sum":55},{"parent":"FUNC","rule":"Table_Row","sum":5},{"parent":"FUNC","rule":"Table_name","sum":75},{"parent":"FUNC","rule":"Table_path","sum":3},{"parent":"FUNC","rule":"Tablename","sum":103643},{"parent":"FUNC","rule":"Tablepath","sum":217},{"parent":"FUNC","rule":"TablerRow","sum":1},{"parent":"FUNC","rule":"TablerecordIndex","sum":1},{"parent":"FUNC","rule":"Tablerecordindex","sum":3},{"parent":"FUNC","rule":"Tablerow","sum":26448},{"parent":"FUNC","rule":"TestBit","sum":251665},{"parent":"FUNC","rule":"Text","sum":20},{"parent":"FUNC","rule":"TimeStamp","sum":4393},{"parent":"FUNC","rule":"Timestamp","sum":1354341},{"parent":"FUNC","rule":"Timestamp64","sum":59},{"parent":"FUNC","rule":"ToBytes","sum":6604327},{"parent":"FUNC","rule":"ToDIct","sum":269},{"parent":"FUNC","rule":"ToDict","sum":6382929},{"parent":"FUNC","rule":"ToList","sum":3},{"parent":"FUNC","rule":"ToLower","sum":4},{"parent":"FUNC","rule":"ToMilliseconds","sum":2},{"parent":"FUNC","rule":"ToMultiDict","sum":339431},{"parent":"FUNC","rule":"ToPg","sum":3053},{"parent":"FUNC","rule":"ToSET","sum":80},{"parent":"FUNC","rule":"ToSet","sum":5458552},{"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":766},{"parent":"FUNC","rule":"TopBy","sum":79},{"parent":"FUNC","rule":"TopFreq","sum":13374},{"parent":"FUNC","rule":"Top_BY","sum":22},{"parent":"FUNC","rule":"Top_By","sum":125},{"parent":"FUNC","rule":"Top_by","sum":119},{"parent":"FUNC","rule":"Topfreq","sum":28},{"parent":"FUNC","rule":"Toset","sum":2347},{"parent":"FUNC","rule":"TryMember","sum":16627965},{"parent":"FUNC","rule":"Trymember","sum":36871},{"parent":"FUNC","rule":"TupleElementType","sum":7546},{"parent":"FUNC","rule":"TupleType","sum":2404},{"parent":"FUNC","rule":"TupleTypeComponents","sum":60},{"parent":"FUNC","rule":"TupleTypeHandle","sum":5725},{"parent":"FUNC","rule":"TypeHandle","sum":163107},{"parent":"FUNC","rule":"TypeKind","sum":54320},{"parent":"FUNC","rule":"TypeOF","sum":37},{"parent":"FUNC","rule":"TypeOf","sum":842640},{"parent":"FUNC","rule":"Typeof","sum":78},{"parent":"FUNC","rule":"TzDate","sum":676},{"parent":"FUNC","rule":"TzDate32","sum":7},{"parent":"FUNC","rule":"TzDateTime","sum":24915},{"parent":"FUNC","rule":"TzDateTime64","sum":7},{"parent":"FUNC","rule":"TzDatetime","sum":46254},{"parent":"FUNC","rule":"TzTimeStamp","sum":4},{"parent":"FUNC","rule":"TzTimestamp","sum":342200},{"parent":"FUNC","rule":"TzTimestamp64","sum":7},{"parent":"FUNC","rule":"UBSTRING","sum":1},{"parent":"FUNC","rule":"UDAF","sum":141439},{"parent":"FUNC","rule":"UDF","sum":1686},{"parent":"FUNC","rule":"UINT32","sum":4},{"parent":"FUNC","rule":"UINT64","sum":6},{"parent":"FUNC","rule":"UInt32","sum":108286},{"parent":"FUNC","rule":"UInt64","sum":747},{"parent":"FUNC","rule":"UInt8","sum":740},{"parent":"FUNC","rule":"UNIQ","sum":1},{"parent":"FUNC","rule":"UNPICKLE","sum":28},{"parent":"FUNC","rule":"UNTAG","sum":18},{"parent":"FUNC","rule":"UNWRAP","sum":13846988},{"parent":"FUNC","rule":"UNWRAp","sum":44},{"parent":"FUNC","rule":"UNWRaP","sum":1},{"parent":"FUNC","rule":"UNWRap","sum":9838},{"parent":"FUNC","rule":"UNWrAP","sum":4},{"parent":"FUNC","rule":"UNWraP","sum":5},{"parent":"FUNC","rule":"UNWrap","sum":2},{"parent":"FUNC","rule":"UNwRAP","sum":6},{"parent":"FUNC","rule":"UNwrap","sum":1274},{"parent":"FUNC","rule":"USING","sum":6},{"parent":"FUNC","rule":"UTF8","sum":342555},{"parent":"FUNC","rule":"UUID","sum":1},{"parent":"FUNC","rule":"Udf","sum":295914},{"parent":"FUNC","rule":"Uint16","sum":83},{"parent":"FUNC","rule":"Uint32","sum":331609},{"parent":"FUNC","rule":"Uint64","sum":12037},{"parent":"FUNC","rule":"Uint8","sum":2898},{"parent":"FUNC","rule":"UnTag","sum":55},{"parent":"FUNC","rule":"UnWRAP","sum":10},{"parent":"FUNC","rule":"UnWrAp","sum":1},{"parent":"FUNC","rule":"UnWrap","sum":1079656},{"parent":"FUNC","rule":"UnionAll","sum":3},{"parent":"FUNC","rule":"Unpickle","sum":180},{"parent":"FUNC","rule":"Untag","sum":14594},{"parent":"FUNC","rule":"Unwarp","sum":1},{"parent":"FUNC","rule":"Unwrap","sum":35630413},{"parent":"FUNC","rule":"UtcCurrentDatetime","sum":8},{"parent":"FUNC","rule":"Utf8","sum":41450},{"parent":"FUNC","rule":"Uuid","sum":459},{"parent":"FUNC","rule":"VALUES","sum":15},{"parent":"FUNC","rule":"VARIANCE","sum":30976},{"parent":"FUNC","rule":"VARIANCE_POPULATION","sum":2917},{"parent":"FUNC","rule":"VARIANCE_SAMPLE","sum":1299},{"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":1146},{"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":3235},{"parent":"FUNC","rule":"VariantTypeHandle","sum":8},{"parent":"FUNC","rule":"VariantUnderlyingType","sum":6437},{"parent":"FUNC","rule":"Version","sum":3},{"parent":"FUNC","rule":"Visit","sum":18},{"parent":"FUNC","rule":"Void","sum":93478},{"parent":"FUNC","rule":"WEAKFIELD","sum":833},{"parent":"FUNC","rule":"WEAK_FIELD","sum":384},{"parent":"FUNC","rule":"WEakField","sum":2},{"parent":"FUNC","rule":"Way","sum":8613},{"parent":"FUNC","rule":"WeakFIeld","sum":43},{"parent":"FUNC","rule":"WeakField","sum":21081419},{"parent":"FUNC","rule":"WeakFiled","sum":2},{"parent":"FUNC","rule":"Weakfield","sum":1841},{"parent":"FUNC","rule":"WorldCode","sum":365},{"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":762},{"parent":"FUNC","rule":"YSONExtractString","sum":6},{"parent":"FUNC","rule":"Yson","sum":601523},{"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":1545323},{"parent":"FUNC","rule":"addMember","sum":2503},{"parent":"FUNC","rule":"addTimezone","sum":784},{"parent":"FUNC","rule":"age","sum":2},{"parent":"FUNC","rule":"aggList","sum":268},{"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":1278790},{"parent":"FUNC","rule":"agg_list_DISTINCT","sum":2},{"parent":"FUNC","rule":"agg_list_Distinct","sum":1},{"parent":"FUNC","rule":"agg_list_distinct","sum":433891},{"parent":"FUNC","rule":"agg_set","sum":1},{"parent":"FUNC","rule":"agglist","sum":122},{"parent":"FUNC","rule":"agglistdistinct","sum":25},{"parent":"FUNC","rule":"aggr_list","sum":2752},{"parent":"FUNC","rule":"aggr_list_distinct","sum":35},{"parent":"FUNC","rule":"aggr_set","sum":2},{"parent":"FUNC","rule":"aggregATE_LIST","sum":16},{"parent":"FUNC","rule":"aggregateList","sum":373},{"parent":"FUNC","rule":"aggregateListDistinct","sum":33},{"parent":"FUNC","rule":"aggregate_List","sum":993},{"parent":"FUNC","rule":"aggregate_List_Distinct","sum":8},{"parent":"FUNC","rule":"aggregate_List_distinct","sum":10},{"parent":"FUNC","rule":"aggregate_by","sum":370741},{"parent":"FUNC","rule":"aggregate_list","sum":2509693},{"parent":"FUNC","rule":"aggregate_list_","sum":1},{"parent":"FUNC","rule":"aggregate_list_DISTINCT","sum":1760},{"parent":"FUNC","rule":"aggregate_list_Distinct","sum":27},{"parent":"FUNC","rule":"aggregate_list_distinct","sum":932178},{"parent":"FUNC","rule":"aggregatelist","sum":534},{"parent":"FUNC","rule":"aggregatetransforminput","sum":1},{"parent":"FUNC","rule":"aggregationFactory","sum":85},{"parent":"FUNC","rule":"aggregation_factory","sum":9375},{"parent":"FUNC","rule":"aggregationfactory","sum":71},{"parent":"FUNC","rule":"agregate_list_distinct","sum":1},{"parent":"FUNC","rule":"and","sum":7},{"parent":"FUNC","rule":"anyLast","sum":8},{"parent":"FUNC","rule":"argMax","sum":14},{"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":1},{"parent":"FUNC","rule":"asDict","sum":3719},{"parent":"FUNC","rule":"asLIST","sum":50},{"parent":"FUNC","rule":"asList","sum":173093},{"parent":"FUNC","rule":"asSet","sum":1949},{"parent":"FUNC","rule":"asStruct","sum":106781},{"parent":"FUNC","rule":"asTUPLE","sum":1},{"parent":"FUNC","rule":"asTagged","sum":2015},{"parent":"FUNC","rule":"asTuple","sum":83815},{"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":360},{"parent":"FUNC","rule":"asdict","sum":3903},{"parent":"FUNC","rule":"asenum","sum":13},{"parent":"FUNC","rule":"aslist","sum":165329},{"parent":"FUNC","rule":"assessments_integralListReverse","sum":2},{"parent":"FUNC","rule":"asset","sum":1208},{"parent":"FUNC","rule":"asstruct","sum":12857},{"parent":"FUNC","rule":"assumeNotNull","sum":3},{"parent":"FUNC","rule":"astagged","sum":1374},{"parent":"FUNC","rule":"astuple","sum":31282},{"parent":"FUNC","rule":"asvariant","sum":3},{"parent":"FUNC","rule":"atan2","sum":4},{"parent":"FUNC","rule":"avG","sum":56},{"parent":"FUNC","rule":"avg","sum":5965083},{"parent":"FUNC","rule":"avgIf","sum":18733},{"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":495871},{"parent":"FUNC","rule":"ax","sum":13},{"parent":"FUNC","rule":"bit_or","sum":26835},{"parent":"FUNC","rule":"bool","sum":286},{"parent":"FUNC","rule":"bool_and","sum":65763},{"parent":"FUNC","rule":"bool_or","sum":239951},{"parent":"FUNC","rule":"bool_xor","sum":2},{"parent":"FUNC","rule":"bottom","sum":11156},{"parent":"FUNC","rule":"bottom_by","sum":325871},{"parent":"FUNC","rule":"business_id","sum":1},{"parent":"FUNC","rule":"bytes","sum":2},{"parent":"FUNC","rule":"cOALESCE","sum":5},{"parent":"FUNC","rule":"cOUNT","sum":62},{"parent":"FUNC","rule":"cOUNT_IF","sum":39},{"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":24843533},{"parent":"FUNC","rule":"coalescue","sum":2},{"parent":"FUNC","rule":"coalsece","sum":1},{"parent":"FUNC","rule":"combinemembers","sum":5},{"parent":"FUNC","rule":"concat","sum":25},{"parent":"FUNC","rule":"conunt","sum":1},{"parent":"FUNC","rule":"convert_to_360","sum":2},{"parent":"FUNC","rule":"corr","sum":701},{"parent":"FUNC","rule":"correlation","sum":3830},{"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":38597076},{"parent":"FUNC","rule":"countDistinct","sum":1},{"parent":"FUNC","rule":"countDistinctEstimate","sum":284728},{"parent":"FUNC","rule":"countIF","sum":8421},{"parent":"FUNC","rule":"countIf","sum":1395469},{"parent":"FUNC","rule":"count_","sum":587},{"parent":"FUNC","rule":"count_IF","sum":33881},{"parent":"FUNC","rule":"count_If","sum":26345},{"parent":"FUNC","rule":"count_distinct_estimate","sum":14},{"parent":"FUNC","rule":"count_if","sum":18886551},{"parent":"FUNC","rule":"countdistinctEstimate","sum":1906},{"parent":"FUNC","rule":"countdistinctestimate","sum":2796},{"parent":"FUNC","rule":"countif","sum":22798},{"parent":"FUNC","rule":"covar","sum":239},{"parent":"FUNC","rule":"covariance","sum":278},{"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":4108},{"parent":"FUNC","rule":"currentTzTimestamp","sum":53},{"parent":"FUNC","rule":"currentUTCDATETIME","sum":19},{"parent":"FUNC","rule":"currentUTCDate","sum":646},{"parent":"FUNC","rule":"currentUTCDateTime","sum":291},{"parent":"FUNC","rule":"currentUTCdate","sum":358},{"parent":"FUNC","rule":"currentUTCdatetime","sum":20},{"parent":"FUNC","rule":"currentUTcdate","sum":1305},{"parent":"FUNC","rule":"currentUtcDate","sum":6074},{"parent":"FUNC","rule":"currentUtcDateTime","sum":13854},{"parent":"FUNC","rule":"currentUtcDatetime","sum":2309},{"parent":"FUNC","rule":"currentUtcTimestamp","sum":197},{"parent":"FUNC","rule":"current_utc_timestamp","sum":2},{"parent":"FUNC","rule":"currenttzdate","sum":419},{"parent":"FUNC","rule":"currenttzdatetime","sum":258},{"parent":"FUNC","rule":"currenttztimestamp","sum":47},{"parent":"FUNC","rule":"currentutcDateTime","sum":3},{"parent":"FUNC","rule":"currentutcdate","sum":117924},{"parent":"FUNC","rule":"currentutcdatetime","sum":57736},{"parent":"FUNC","rule":"currentutctimestamp","sum":48035},{"parent":"FUNC","rule":"d","sum":1},{"parent":"FUNC","rule":"dATE","sum":4},{"parent":"FUNC","rule":"date","sum":413808},{"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_from_ts","sum":1},{"parent":"FUNC","rule":"date_sub","sum":2},{"parent":"FUNC","rule":"dateadd","sum":1},{"parent":"FUNC","rule":"datetime","sum":12284},{"parent":"FUNC","rule":"datetime64","sum":19},{"parent":"FUNC","rule":"decimal","sum":333},{"parent":"FUNC","rule":"dense_RANK","sum":42},{"parent":"FUNC","rule":"dense_rank","sum":45856},{"parent":"FUNC","rule":"dictAggregate","sum":14},{"parent":"FUNC","rule":"dictContains","sum":7},{"parent":"FUNC","rule":"dictGetString","sum":1},{"parent":"FUNC","rule":"dictItems","sum":8154},{"parent":"FUNC","rule":"dictKeys","sum":1175},{"parent":"FUNC","rule":"dictLength","sum":104},{"parent":"FUNC","rule":"dictLookUp","sum":9405},{"parent":"FUNC","rule":"dictLookup","sum":671},{"parent":"FUNC","rule":"dictPayloads","sum":90},{"parent":"FUNC","rule":"dict_keys","sum":8709},{"parent":"FUNC","rule":"dictcontains","sum":349},{"parent":"FUNC","rule":"dictcreate","sum":2},{"parent":"FUNC","rule":"dicthasitems","sum":24},{"parent":"FUNC","rule":"dictitems","sum":2383},{"parent":"FUNC","rule":"dictkeys","sum":888},{"parent":"FUNC","rule":"dictlength","sum":6542},{"parent":"FUNC","rule":"dictlookup","sum":1561},{"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":"endsWith","sum":2155},{"parent":"FUNC","rule":"endswith","sum":30845},{"parent":"FUNC","rule":"ensure","sum":404947},{"parent":"FUNC","rule":"ensuretype","sum":710},{"parent":"FUNC","rule":"evaluateCode","sum":59},{"parent":"FUNC","rule":"evaluateExpr","sum":280},{"parent":"FUNC","rule":"expandstruct","sum":20},{"parent":"FUNC","rule":"f","sum":1},{"parent":"FUNC","rule":"filecontent","sum":603},{"parent":"FUNC","rule":"filepath","sum":990},{"parent":"FUNC","rule":"filter","sum":2},{"parent":"FUNC","rule":"find","sum":4031435},{"parent":"FUNC","rule":"first_VALUE","sum":19},{"parent":"FUNC","rule":"first_route_timestamp","sum":1},{"parent":"FUNC","rule":"first_value","sum":1150137},{"parent":"FUNC","rule":"flatten","sum":1},{"parent":"FUNC","rule":"float","sum":23057},{"parent":"FUNC","rule":"floor","sum":1},{"parent":"FUNC","rule":"foo","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":143},{"parent":"FUNC","rule":"fromBytes","sum":12},{"parent":"FUNC","rule":"fromPg","sum":115},{"parent":"FUNC","rule":"fromUnixTimestamp64Micro","sum":1},{"parent":"FUNC","rule":"from_bytes","sum":2},{"parent":"FUNC","rule":"frombytes","sum":51},{"parent":"FUNC","rule":"frompg","sum":122},{"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":318861},{"parent":"FUNC","rule":"groupArray","sum":4},{"parent":"FUNC","rule":"groupUniqArray","sum":2},{"parent":"FUNC","rule":"grouping","sum":17523},{"parent":"FUNC","rule":"hISTOGRAM","sum":2},{"parent":"FUNC","rule":"has","sum":16},{"parent":"FUNC","rule":"histOGRAM","sum":4},{"parent":"FUNC","rule":"histograM","sum":356},{"parent":"FUNC","rule":"histogram","sum":52833},{"parent":"FUNC","rule":"histogramcdf","sum":84},{"parent":"FUNC","rule":"hll","sum":82171},{"parent":"FUNC","rule":"iF","sum":2678},{"parent":"FUNC","rule":"iNtErVaL","sum":1},{"parent":"FUNC","rule":"if","sum":42963453},{"parent":"FUNC","rule":"ifNull","sum":6},{"parent":"FUNC","rule":"in","sum":10},{"parent":"FUNC","rule":"indexOf","sum":12},{"parent":"FUNC","rule":"instanceof","sum":55},{"parent":"FUNC","rule":"instr","sum":1},{"parent":"FUNC","rule":"int","sum":31625},{"parent":"FUNC","rule":"int32","sum":2},{"parent":"FUNC","rule":"int64","sum":19},{"parent":"FUNC","rule":"int8","sum":2},{"parent":"FUNC","rule":"intervaL","sum":9012},{"parent":"FUNC","rule":"interval","sum":1785040},{"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":5551},{"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":239226},{"parent":"FUNC","rule":"lAG","sum":2309},{"parent":"FUNC","rule":"lEAD","sum":6792},{"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":1010915},{"parent":"FUNC","rule":"last_VALUE","sum":14},{"parent":"FUNC","rule":"last_value","sum":1134965},{"parent":"FUNC","rule":"lead","sum":922115},{"parent":"FUNC","rule":"least","sum":367295},{"parent":"FUNC","rule":"len","sum":712028},{"parent":"FUNC","rule":"lenGTH","sum":1},{"parent":"FUNC","rule":"lenght","sum":1},{"parent":"FUNC","rule":"lengtH","sum":2},{"parent":"FUNC","rule":"length","sum":2513539},{"parent":"FUNC","rule":"like","sum":4},{"parent":"FUNC","rule":"likely","sum":16421},{"parent":"FUNC","rule":"linearHISTOGRAM","sum":10},{"parent":"FUNC","rule":"linearHistogram","sum":9},{"parent":"FUNC","rule":"linearhistogram","sum":167},{"parent":"FUNC","rule":"linearhistogramcdf","sum":20},{"parent":"FUNC","rule":"listALL","sum":3},{"parent":"FUNC","rule":"listAVG","sum":831},{"parent":"FUNC","rule":"listAggregateUnique","sum":1},{"parent":"FUNC","rule":"listAll","sum":86},{"parent":"FUNC","rule":"listAny","sum":116},{"parent":"FUNC","rule":"listAvg","sum":96},{"parent":"FUNC","rule":"listCollect","sum":378},{"parent":"FUNC","rule":"listConcat","sum":11135},{"parent":"FUNC","rule":"listEnumerate","sum":150},{"parent":"FUNC","rule":"listExtend","sum":6421},{"parent":"FUNC","rule":"listExtract","sum":24},{"parent":"FUNC","rule":"listFilter","sum":38539},{"parent":"FUNC","rule":"listFlatten","sum":292},{"parent":"FUNC","rule":"listFold","sum":294},{"parent":"FUNC","rule":"listFromRange","sum":791},{"parent":"FUNC","rule":"listHAs","sum":52},{"parent":"FUNC","rule":"listHas","sum":40660},{"parent":"FUNC","rule":"listHasItems","sum":3198},{"parent":"FUNC","rule":"listHead","sum":2174},{"parent":"FUNC","rule":"listIndexOf","sum":15},{"parent":"FUNC","rule":"listLENGTH","sum":231},{"parent":"FUNC","rule":"listLast","sum":1009},{"parent":"FUNC","rule":"listLength","sum":29071},{"parent":"FUNC","rule":"listMAX","sum":1},{"parent":"FUNC","rule":"listMIN","sum":1},{"parent":"FUNC","rule":"listMap","sum":52384},{"parent":"FUNC","rule":"listMax","sum":804},{"parent":"FUNC","rule":"listMin","sum":172},{"parent":"FUNC","rule":"listNotNull","sum":274},{"parent":"FUNC","rule":"listReverse","sum":3733},{"parent":"FUNC","rule":"listSkip","sum":21},{"parent":"FUNC","rule":"listSort","sum":21769},{"parent":"FUNC","rule":"listSortAsc","sum":2},{"parent":"FUNC","rule":"listSortDesc","sum":193},{"parent":"FUNC","rule":"listSum","sum":1467},{"parent":"FUNC","rule":"listTake","sum":784},{"parent":"FUNC","rule":"listTopSort","sum":18},{"parent":"FUNC","rule":"listUniq","sum":10565},{"parent":"FUNC","rule":"listUniqStable","sum":1},{"parent":"FUNC","rule":"listZip","sum":1226},{"parent":"FUNC","rule":"listZipAll","sum":1580},{"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":254},{"parent":"FUNC","rule":"list_filter","sum":2},{"parent":"FUNC","rule":"list_flatten","sum":15},{"parent":"FUNC","rule":"list_has","sum":6090},{"parent":"FUNC","rule":"list_has_items","sum":2},{"parent":"FUNC","rule":"list_head","sum":16},{"parent":"FUNC","rule":"list_length","sum":866},{"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":144},{"parent":"FUNC","rule":"list_uniq","sum":1},{"parent":"FUNC","rule":"list_zip","sum":36},{"parent":"FUNC","rule":"listaggregate","sum":87},{"parent":"FUNC","rule":"listall","sum":13166},{"parent":"FUNC","rule":"listany","sum":15097},{"parent":"FUNC","rule":"listavg","sum":11305},{"parent":"FUNC","rule":"listcollect","sum":483},{"parent":"FUNC","rule":"listconcat","sum":19554},{"parent":"FUNC","rule":"listcreate","sum":10},{"parent":"FUNC","rule":"listenumerate","sum":2065},{"parent":"FUNC","rule":"listextend","sum":3758},{"parent":"FUNC","rule":"listextendstrict","sum":61},{"parent":"FUNC","rule":"listextract","sum":1904},{"parent":"FUNC","rule":"listfilter","sum":103472},{"parent":"FUNC","rule":"listflatmap","sum":7081},{"parent":"FUNC","rule":"listflatten","sum":21498},{"parent":"FUNC","rule":"listfold","sum":14},{"parent":"FUNC","rule":"listfold1map","sum":60},{"parent":"FUNC","rule":"listfromRange","sum":15},{"parent":"FUNC","rule":"listfromrange","sum":13893},{"parent":"FUNC","rule":"listfromtuple","sum":58},{"parent":"FUNC","rule":"listhas","sum":171277},{"parent":"FUNC","rule":"listhasItems","sum":34},{"parent":"FUNC","rule":"listhasitems","sum":10455},{"parent":"FUNC","rule":"listhead","sum":18559},{"parent":"FUNC","rule":"listindexof","sum":1209},{"parent":"FUNC","rule":"listlast","sum":3107},{"parent":"FUNC","rule":"listlength","sum":342025},{"parent":"FUNC","rule":"listmap","sum":524953},{"parent":"FUNC","rule":"listmax","sum":3903},{"parent":"FUNC","rule":"listmin","sum":2675},{"parent":"FUNC","rule":"listnotNull","sum":1},{"parent":"FUNC","rule":"listnotnull","sum":12807},{"parent":"FUNC","rule":"listreplicate","sum":49},{"parent":"FUNC","rule":"listreverse","sum":2311},{"parent":"FUNC","rule":"listskip","sum":1193},{"parent":"FUNC","rule":"listsort","sum":56164},{"parent":"FUNC","rule":"listsortDesc","sum":1},{"parent":"FUNC","rule":"listsortasc","sum":377},{"parent":"FUNC","rule":"listsortdesc","sum":3978},{"parent":"FUNC","rule":"listsum","sum":3366},{"parent":"FUNC","rule":"listtake","sum":15952},{"parent":"FUNC","rule":"listtop","sum":68},{"parent":"FUNC","rule":"listunionall","sum":8},{"parent":"FUNC","rule":"listuniq","sum":24918},{"parent":"FUNC","rule":"listuniqstable","sum":94},{"parent":"FUNC","rule":"listzip","sum":16490},{"parent":"FUNC","rule":"listzipALL","sum":2},{"parent":"FUNC","rule":"listzipAll","sum":11},{"parent":"FUNC","rule":"listzipall","sum":100},{"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":15},{"parent":"FUNC","rule":"mAX_BY","sum":128},{"parent":"FUNC","rule":"mIN","sum":2},{"parent":"FUNC","rule":"mIN_by","sum":10},{"parent":"FUNC","rule":"maX","sum":5},{"parent":"FUNC","rule":"maX_BY","sum":1},{"parent":"FUNC","rule":"map","sum":2},{"parent":"FUNC","rule":"max","sum":25061450},{"parent":"FUNC","rule":"maxBy","sum":1},{"parent":"FUNC","rule":"maxOf","sum":3433},{"parent":"FUNC","rule":"max_","sum":1},{"parent":"FUNC","rule":"max_BY","sum":2350},{"parent":"FUNC","rule":"max_By","sum":4552},{"parent":"FUNC","rule":"max_OF","sum":8},{"parent":"FUNC","rule":"max_Of","sum":30},{"parent":"FUNC","rule":"max_by","sum":28896698},{"parent":"FUNC","rule":"max_if","sum":3},{"parent":"FUNC","rule":"max_of","sum":1287338},{"parent":"FUNC","rule":"maxby","sum":5161},{"parent":"FUNC","rule":"maxof","sum":849},{"parent":"FUNC","rule":"md5int","sum":1},{"parent":"FUNC","rule":"median","sum":377952},{"parent":"FUNC","rule":"metric_exp","sum":1},{"parent":"FUNC","rule":"min","sum":10208917},{"parent":"FUNC","rule":"minOf","sum":12},{"parent":"FUNC","rule":"min_BY","sum":8639},{"parent":"FUNC","rule":"min_By","sum":6},{"parent":"FUNC","rule":"min_OF","sum":9},{"parent":"FUNC","rule":"min_Of","sum":337},{"parent":"FUNC","rule":"min_by","sum":2325677},{"parent":"FUNC","rule":"min_if","sum":10},{"parent":"FUNC","rule":"min_of","sum":577834},{"parent":"FUNC","rule":"minby","sum":1},{"parent":"FUNC","rule":"minof","sum":94},{"parent":"FUNC","rule":"mode","sum":117549},{"parent":"FUNC","rule":"multiIf","sum":2},{"parent":"FUNC","rule":"multi_aggregate_by","sum":115834},{"parent":"FUNC","rule":"nanvl","sum":129203},{"parent":"FUNC","rule":"notEmpty","sum":2},{"parent":"FUNC","rule":"nothing","sum":12757},{"parent":"FUNC","rule":"now","sum":16},{"parent":"FUNC","rule":"nth_value","sum":17},{"parent":"FUNC","rule":"ntile","sum":337},{"parent":"FUNC","rule":"nvL","sum":61},{"parent":"FUNC","rule":"nvl","sum":14001743},{"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":138},{"parent":"FUNC","rule":"parseForErrors","sum":32},{"parent":"FUNC","rule":"parsefile","sum":11204},{"parent":"FUNC","rule":"percent_rank","sum":2159},{"parent":"FUNC","rule":"percentile","sum":3344572},{"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":"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":480},{"parent":"FUNC","rule":"pow","sum":8},{"parent":"FUNC","rule":"power","sum":3},{"parent":"FUNC","rule":"quantile","sum":1},{"parent":"FUNC","rule":"quantileExact","sum":1},{"parent":"FUNC","rule":"rFIND","sum":3},{"parent":"FUNC","rule":"rand","sum":3},{"parent":"FUNC","rule":"random","sum":258306},{"parent":"FUNC","rule":"randomNumber","sum":8},{"parent":"FUNC","rule":"randomUuid","sum":145},{"parent":"FUNC","rule":"random_number","sum":11},{"parent":"FUNC","rule":"randomnumber","sum":479},{"parent":"FUNC","rule":"randomuuid","sum":37},{"parent":"FUNC","rule":"range","sum":97},{"parent":"FUNC","rule":"rank","sum":222787},{"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":127805},{"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":2158139},{"parent":"FUNC","rule":"rownumber","sum":370},{"parent":"FUNC","rule":"sUBSTRING","sum":3},{"parent":"FUNC","rule":"sUM","sum":440},{"parent":"FUNC","rule":"sUM_IF","sum":18},{"parent":"FUNC","rule":"sUm","sum":8},{"parent":"FUNC","rule":"sessionWindow","sum":4},{"parent":"FUNC","rule":"session_start","sum":3},{"parent":"FUNC","rule":"sessionwindow","sum":166},{"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":162},{"parent":"FUNC","rule":"setincludes","sum":20},{"parent":"FUNC","rule":"setintersection","sum":118},{"parent":"FUNC","rule":"setisdisjoint","sum":1114},{"parent":"FUNC","rule":"setsymmetricdifference","sum":204},{"parent":"FUNC","rule":"setunion","sum":1780},{"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":20260898},{"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":201462},{"parent":"FUNC","rule":"starts_with","sum":11},{"parent":"FUNC","rule":"startswith","sum":21778},{"parent":"FUNC","rule":"staticmap","sum":23},{"parent":"FUNC","rule":"staticzip","sum":1},{"parent":"FUNC","rule":"std_dev","sum":4},{"parent":"FUNC","rule":"stddev","sum":612665},{"parent":"FUNC","rule":"stddevPop","sum":11},{"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":895},{"parent":"FUNC","rule":"stddevpop","sum":19},{"parent":"FUNC","rule":"stddevsamp","sum":5},{"parent":"FUNC","rule":"str","sum":51},{"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":176},{"parent":"FUNC","rule":"suM_if","sum":16},{"parent":"FUNC","rule":"subDate","sum":1},{"parent":"FUNC","rule":"subSTRING","sum":1},{"parent":"FUNC","rule":"subString","sum":573},{"parent":"FUNC","rule":"subqueryMergeFor","sum":21},{"parent":"FUNC","rule":"subqueryUnionMergeFor","sum":4450},{"parent":"FUNC","rule":"subquerymergefor","sum":1863},{"parent":"FUNC","rule":"subsTRING","sum":2},{"parent":"FUNC","rule":"subsrting","sum":3},{"parent":"FUNC","rule":"substing","sum":2},{"parent":"FUNC","rule":"substr","sum":172},{"parent":"FUNC","rule":"substring","sum":16470645},{"parent":"FUNC","rule":"substringUTF8","sum":1},{"parent":"FUNC","rule":"substring_index","sum":1},{"parent":"FUNC","rule":"sum","sum":45713563},{"parent":"FUNC","rule":"sumIF","sum":84},{"parent":"FUNC","rule":"sumIf","sum":96775},{"parent":"FUNC","rule":"sum_","sum":356},{"parent":"FUNC","rule":"sum_IF","sum":19423},{"parent":"FUNC","rule":"sum_If","sum":12653},{"parent":"FUNC","rule":"sum_if","sum":4247363},{"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":7586},{"parent":"FUNC","rule":"summ","sum":10},{"parent":"FUNC","rule":"sunstring","sum":2},{"parent":"FUNC","rule":"susbstring","sum":1},{"parent":"FUNC","rule":"tableName","sum":43016},{"parent":"FUNC","rule":"tablePath","sum":1433},{"parent":"FUNC","rule":"tableRecordIndex","sum":19},{"parent":"FUNC","rule":"tableRow","sum":22420},{"parent":"FUNC","rule":"table_name","sum":2928},{"parent":"FUNC","rule":"table_path","sum":46},{"parent":"FUNC","rule":"table_row","sum":354},{"parent":"FUNC","rule":"tablename","sum":165184},{"parent":"FUNC","rule":"tablepath","sum":33063},{"parent":"FUNC","rule":"tablerecordindex","sum":111},{"parent":"FUNC","rule":"tablerow","sum":42403},{"parent":"FUNC","rule":"tablerows","sum":5},{"parent":"FUNC","rule":"testBit","sum":34},{"parent":"FUNC","rule":"testbit","sum":38269},{"parent":"FUNC","rule":"testid","sum":2},{"parent":"FUNC","rule":"timestamp","sum":9963},{"parent":"FUNC","rule":"timestamp64","sum":7},{"parent":"FUNC","rule":"timezone","sum":2},{"parent":"FUNC","rule":"toBytes","sum":24336},{"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":95252},{"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":417292},{"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":96532},{"parent":"FUNC","rule":"tomultidict","sum":1132},{"parent":"FUNC","rule":"top","sum":52785},{"parent":"FUNC","rule":"topFreq","sum":90},{"parent":"FUNC","rule":"top_BY","sum":2},{"parent":"FUNC","rule":"top_by","sum":116981},{"parent":"FUNC","rule":"top_freq","sum":113},{"parent":"FUNC","rule":"topfreq","sum":23256},{"parent":"FUNC","rule":"topg","sum":2},{"parent":"FUNC","rule":"toset","sum":37979},{"parent":"FUNC","rule":"trunc","sum":13},{"parent":"FUNC","rule":"truncate","sum":2},{"parent":"FUNC","rule":"tryMember","sum":527},{"parent":"FUNC","rule":"trymember","sum":9922},{"parent":"FUNC","rule":"tupleElement","sum":2},{"parent":"FUNC","rule":"typeOf","sum":38},{"parent":"FUNC","rule":"typeof","sum":417},{"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":88},{"parent":"FUNC","rule":"udaf","sum":18138},{"parent":"FUNC","rule":"uint32","sum":13393},{"parent":"FUNC","rule":"uint64","sum":30},{"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":1569},{"parent":"FUNC","rule":"unwrap","sum":26989251},{"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":2041},{"parent":"FUNC","rule":"uuid","sum":25},{"parent":"FUNC","rule":"values","sum":6},{"parent":"FUNC","rule":"varPop","sum":75},{"parent":"FUNC","rule":"varSamp","sum":85},{"parent":"FUNC","rule":"var_samp","sum":43},{"parent":"FUNC","rule":"variance","sum":66920},{"parent":"FUNC","rule":"variance_population","sum":4},{"parent":"FUNC","rule":"variance_sample","sum":394},{"parent":"FUNC","rule":"varpop","sum":19},{"parent":"FUNC","rule":"version","sum":16},{"parent":"FUNC","rule":"visitParamExtractFloat","sum":4},{"parent":"FUNC","rule":"vl","sum":2},{"parent":"FUNC","rule":"way","sum":38547},{"parent":"FUNC","rule":"weakField","sum":1077},{"parent":"FUNC","rule":"weakfield","sum":967371},{"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":"MODULE","rule":"Compress","sum":84392},{"parent":"MODULE","rule":"DATETIME","sum":1138},{"parent":"MODULE","rule":"DATEtime","sum":2},{"parent":"MODULE","rule":"DAteTime","sum":3313},{"parent":"MODULE","rule":"DAtetime","sum":7},{"parent":"MODULE","rule":"DaTETIME","sum":342},{"parent":"MODULE","rule":"DaTeTime","sum":84},{"parent":"MODULE","rule":"DateTIME","sum":725},{"parent":"MODULE","rule":"DateTIme","sum":4270},{"parent":"MODULE","rule":"DateTime","sum":274712777},{"parent":"MODULE","rule":"DatetIme","sum":367},{"parent":"MODULE","rule":"Datetime","sum":7049867},{"parent":"MODULE","rule":"Decompress","sum":24116},{"parent":"MODULE","rule":"Digest","sum":7633296},{"parent":"MODULE","rule":"HyperScan","sum":2366},{"parent":"MODULE","rule":"Hyperscan","sum":388855},{"parent":"MODULE","rule":"Ip","sum":1388948},{"parent":"MODULE","rule":"JSON","sum":27043},{"parent":"MODULE","rule":"JSon","sum":2},{"parent":"MODULE","rule":"Json","sum":1037994},{"parent":"MODULE","rule":"MATH","sum":4},{"parent":"MODULE","rule":"Math","sum":44475654},{"parent":"MODULE","rule":"PG","sum":198},{"parent":"MODULE","rule":"PIRE","sum":29},{"parent":"MODULE","rule":"Pg","sum":4820},{"parent":"MODULE","rule":"Pire","sum":1912006},{"parent":"MODULE","rule":"Protobuf","sum":266369},{"parent":"MODULE","rule":"RE2","sum":5040},{"parent":"MODULE","rule":"Re2","sum":12119791},{"parent":"MODULE","rule":"STRING","sum":6},{"parent":"MODULE","rule":"String","sum":94884988},{"parent":"MODULE","rule":"TryDecompress","sum":4663},{"parent":"MODULE","rule":"URL","sum":2},{"parent":"MODULE","rule":"Unicode","sum":4876299},{"parent":"MODULE","rule":"Url","sum":23432845},{"parent":"MODULE","rule":"YSON","sum":25},{"parent":"MODULE","rule":"YSon","sum":10},{"parent":"MODULE","rule":"Yson","sum":393818003},{"parent":"MODULE","rule":"dateTime","sum":458},{"parent":"MODULE","rule":"datetime","sum":14231},{"parent":"MODULE","rule":"digest","sum":1},{"parent":"MODULE","rule":"hyperscan","sum":1},{"parent":"MODULE","rule":"json","sum":8},{"parent":"MODULE","rule":"math","sum":9},{"parent":"MODULE","rule":"pg","sum":1716},{"parent":"MODULE","rule":"pire","sum":36},{"parent":"MODULE","rule":"re2","sum":3094},{"parent":"MODULE","rule":"string","sum":21},{"parent":"MODULE","rule":"url","sum":1},{"parent":"MODULE","rule":"ySoN","sum":1},{"parent":"MODULE","rule":"yson","sum":54},{"parent":"MODULE_FUNC","rule":"Compress::BZip2","sum":2},{"parent":"MODULE_FUNC","rule":"Compress::BlockCodec","sum":6},{"parent":"MODULE_FUNC","rule":"Compress::Brotli","sum":160},{"parent":"MODULE_FUNC","rule":"Compress::Gzip","sum":83425},{"parent":"MODULE_FUNC","rule":"Compress::Lz4","sum":605},{"parent":"MODULE_FUNC","rule":"Compress::Lzma","sum":4},{"parent":"MODULE_FUNC","rule":"Compress::Snappy","sum":7},{"parent":"MODULE_FUNC","rule":"Compress::Zlib","sum":32},{"parent":"MODULE_FUNC","rule":"Compress::Zstd","sum":151},{"parent":"MODULE_FUNC","rule":"DATETIME::Format","sum":10},{"parent":"MODULE_FUNC","rule":"DATETIME::FromMilliseconds","sum":50},{"parent":"MODULE_FUNC","rule":"DATETIME::FromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DATETIME::GetYear","sum":18},{"parent":"MODULE_FUNC","rule":"DATETIME::MakeDate","sum":744},{"parent":"MODULE_FUNC","rule":"DATETIME::MakeDatetime","sum":292},{"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":562},{"parent":"MODULE_FUNC","rule":"DAteTime::Parse","sum":150},{"parent":"MODULE_FUNC","rule":"DAteTime::StartOfMonth","sum":2590},{"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":"DaTETIME::StartOfWeek","sum":342},{"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":725},{"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":54},{"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":47},{"parent":"MODULE_FUNC","rule":"DateTIme::IntervalFromDays","sum":46},{"parent":"MODULE_FUNC","rule":"DateTIme::MakeDate","sum":3553},{"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":7},{"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":12},{"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":1},{"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":1},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfDay","sum":251},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfMonth","sum":37082},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfQuarter","sum":306},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfWeek","sum":508},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfYear","sum":136},{"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":39707127},{"parent":"MODULE_FUNC","rule":"DateTime::FormatTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::FromDays","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds","sum":4616490},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds64","sum":118},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds","sum":9165394},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds64","sum":765},{"parent":"MODULE_FUNC","rule":"DateTime::FromSecond","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds","sum":15247163},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds64","sum":857},{"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":585699},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeek","sum":631982},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeekName","sum":125803},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfYear","sum":43988},{"parent":"MODULE_FUNC","rule":"DateTime::GetHour","sum":1448753},{"parent":"MODULE_FUNC","rule":"DateTime::GetLastDayOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetMicrosecondOfSecond","sum":1288},{"parent":"MODULE_FUNC","rule":"DateTime::GetMillisecondOfSecond","sum":57},{"parent":"MODULE_FUNC","rule":"DateTime::GetMinute","sum":290921},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonth","sum":700509},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthName","sum":38082},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthOfYear","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetSecond","sum":88516},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneId","sum":103},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneName","sum":523},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeek","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYear","sum":499728},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYearIso8601","sum":33942},{"parent":"MODULE_FUNC","rule":"DateTime::GetYEAR","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetYear","sum":773010},{"parent":"MODULE_FUNC","rule":"DateTime::Interval","sum":21},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromDays","sum":1750},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromHours","sum":3701},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMicroseconds","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMilliseconds","sum":8},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMinutes","sum":107},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromSeconds","sum":122},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFROMDays","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFrom","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromDays","sum":15010793},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHDays","sum":28},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHours","sum":8923033},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMicroseconds","sum":76251},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMilliseconds","sum":512537},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinute","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinutes","sum":4240370},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonth","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonths","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromSeconds","sum":945211},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromYears","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalfromDays","sum":23},{"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":23028266},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDate32","sum":68},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDateTime","sum":226},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime","sum":36736676},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime64","sum":110},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp","sum":7825820},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp64","sum":290},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDate","sum":261460},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDateTime","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime","sum":3135906},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp","sum":151709},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp64","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Makedate","sum":1},{"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":23530104},{"parent":"MODULE_FUNC","rule":"DateTime::Parse64","sum":1},{"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":26823},{"parent":"MODULE_FUNC","rule":"DateTime::ParseIso","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ParseIso8601","sum":18450539},{"parent":"MODULE_FUNC","rule":"DateTime::ParseRfc822","sum":1853},{"parent":"MODULE_FUNC","rule":"DateTime::ParseX509","sum":237},{"parent":"MODULE_FUNC","rule":"DateTime::STartOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Shift","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftDay","sum":51},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftDays","sum":202},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonth","sum":11},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonths","sum":3278312},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftQuarters","sum":382929},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeek","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeeks","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftYears","sum":667243},{"parent":"MODULE_FUNC","rule":"DateTime::Split","sum":706293},{"parent":"MODULE_FUNC","rule":"DateTime::StartOf","sum":2326728},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfDay","sum":2630469},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfHour","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMohth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMonth","sum":4135195},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfQuarter","sum":547470},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfWeek","sum":2073964},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfYear","sum":934564},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfmonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfweek","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::StartofQuarter","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::TimeOfDay","sum":67013},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMicroSeconds","sum":364},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMilliSeconds","sum":2599},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromSeconds","sum":391},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromString","sum":425},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfMonth","sum":818},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfWeek","sum":394},{"parent":"MODULE_FUNC","rule":"DateTime::To","sum":5},{"parent":"MODULE_FUNC","rule":"DateTime::ToDate","sum":1460},{"parent":"MODULE_FUNC","rule":"DateTime::ToDateTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::ToDays","sum":3455240},{"parent":"MODULE_FUNC","rule":"DateTime::ToHours","sum":1318595},{"parent":"MODULE_FUNC","rule":"DateTime::ToIsoFormat","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMicroseconds","sum":2192443},{"parent":"MODULE_FUNC","rule":"DateTime::ToMilliseconds","sum":5240333},{"parent":"MODULE_FUNC","rule":"DateTime::ToMinutes","sum":850881},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonths","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds","sum":23356009},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Today","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Trunc","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::Update","sum":3638500},{"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::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":157},{"parent":"MODULE_FUNC","rule":"Datetime::EndOfWeek","sum":43},{"parent":"MODULE_FUNC","rule":"Datetime::Format","sum":366004},{"parent":"MODULE_FUNC","rule":"Datetime::FromMicroseconds","sum":36568},{"parent":"MODULE_FUNC","rule":"Datetime::FromMilliseconds","sum":768052},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds","sum":566372},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds64","sum":24},{"parent":"MODULE_FUNC","rule":"Datetime::GetDay","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfMonth","sum":757},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeek","sum":12730},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeekName","sum":850},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfYear","sum":59},{"parent":"MODULE_FUNC","rule":"Datetime::GetHour","sum":14277},{"parent":"MODULE_FUNC","rule":"Datetime::GetMinute","sum":13316},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonth","sum":1025},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonthName","sum":330},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYear","sum":2649},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYearIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"Datetime::GetYear","sum":2683},{"parent":"MODULE_FUNC","rule":"Datetime::Interval","sum":9},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromDays","sum":369388},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromHours","sum":263462},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMicroseconds","sum":194},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMilliseconds","sum":91},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMinutes","sum":49017},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromSeconds","sum":9503},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate","sum":671239},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate32","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime","sum":916311},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTimestamp","sum":423835},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDate","sum":2262},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDatetime","sum":23148},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzTimestamp","sum":33029},{"parent":"MODULE_FUNC","rule":"Datetime::Makedate","sum":6},{"parent":"MODULE_FUNC","rule":"Datetime::Parse","sum":137796},{"parent":"MODULE_FUNC","rule":"Datetime::ParseIso8601","sum":255648},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftMonths","sum":25955},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftQuarters","sum":538},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftYears","sum":286},{"parent":"MODULE_FUNC","rule":"Datetime::Split","sum":209},{"parent":"MODULE_FUNC","rule":"Datetime::StartOf","sum":64222},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfDay","sum":20717},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfMonth","sum":74361},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfQuarter","sum":4336},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfWeek","sum":23122},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfYear","sum":11695},{"parent":"MODULE_FUNC","rule":"Datetime::TimeOfDay","sum":127},{"parent":"MODULE_FUNC","rule":"Datetime::ToDatetime","sum":12},{"parent":"MODULE_FUNC","rule":"Datetime::ToDays","sum":139662},{"parent":"MODULE_FUNC","rule":"Datetime::ToHours","sum":22923},{"parent":"MODULE_FUNC","rule":"Datetime::ToMicroseconds","sum":587},{"parent":"MODULE_FUNC","rule":"Datetime::ToMilliseconds","sum":122898},{"parent":"MODULE_FUNC","rule":"Datetime::ToMinutes","sum":44700},{"parent":"MODULE_FUNC","rule":"Datetime::ToSeconds","sum":1523247},{"parent":"MODULE_FUNC","rule":"Datetime::Update","sum":29424},{"parent":"MODULE_FUNC","rule":"Decompress::BZip2","sum":513},{"parent":"MODULE_FUNC","rule":"Decompress::Brotli","sum":7933},{"parent":"MODULE_FUNC","rule":"Decompress::Gzip","sum":3929},{"parent":"MODULE_FUNC","rule":"Decompress::Lz4","sum":890},{"parent":"MODULE_FUNC","rule":"Decompress::Lzma","sum":1},{"parent":"MODULE_FUNC","rule":"Decompress::Snappy","sum":470},{"parent":"MODULE_FUNC","rule":"Decompress::Xz","sum":1},{"parent":"MODULE_FUNC","rule":"Decompress::Zlib","sum":10349},{"parent":"MODULE_FUNC","rule":"Decompress::Zstd","sum":30},{"parent":"MODULE_FUNC","rule":"Digest::Argon2","sum":48904},{"parent":"MODULE_FUNC","rule":"Digest::Blake2B","sum":4570},{"parent":"MODULE_FUNC","rule":"Digest::CityHash","sum":1214048},{"parent":"MODULE_FUNC","rule":"Digest::CityHash128","sum":17592},{"parent":"MODULE_FUNC","rule":"Digest::Crc32c","sum":77608},{"parent":"MODULE_FUNC","rule":"Digest::Crc64","sum":139930},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint","sum":67997},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint128","sum":26},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint2","sum":161650},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint32","sum":208},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint64","sum":1043933},{"parent":"MODULE_FUNC","rule":"Digest::Fnv32","sum":1733},{"parent":"MODULE_FUNC","rule":"Digest::Fnv64","sum":261975},{"parent":"MODULE_FUNC","rule":"Digest::IntHash64","sum":18637},{"parent":"MODULE_FUNC","rule":"Digest::MD5Hex","sum":1},{"parent":"MODULE_FUNC","rule":"Digest::Md5","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::Md5HalfMix","sum":425111},{"parent":"MODULE_FUNC","rule":"Digest::Md5Hex","sum":564006},{"parent":"MODULE_FUNC","rule":"Digest::Md5Raw","sum":15887},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash","sum":2387613},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A","sum":2482},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A32","sum":854},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash32","sum":258742},{"parent":"MODULE_FUNC","rule":"Digest::NimericHash","sum":3},{"parent":"MODULE_FUNC","rule":"Digest::NumericHash","sum":268509},{"parent":"MODULE_FUNC","rule":"Digest::Sha1","sum":42089},{"parent":"MODULE_FUNC","rule":"Digest::Sha256","sum":395607},{"parent":"MODULE_FUNC","rule":"Digest::SipHash","sum":130836},{"parent":"MODULE_FUNC","rule":"Digest::SuperFastHash","sum":33943},{"parent":"MODULE_FUNC","rule":"Digest::XXH3","sum":48781},{"parent":"MODULE_FUNC","rule":"Digest::XXH3_128","sum":19},{"parent":"MODULE_FUNC","rule":"HyperScan::BacktrackingGrep","sum":1},{"parent":"MODULE_FUNC","rule":"HyperScan::Grep","sum":2359},{"parent":"MODULE_FUNC","rule":"HyperScan::Match","sum":6},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingGrep","sum":45875},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingMatch","sum":127},{"parent":"MODULE_FUNC","rule":"Hyperscan::Capture","sum":5834},{"parent":"MODULE_FUNC","rule":"Hyperscan::Grep","sum":145920},{"parent":"MODULE_FUNC","rule":"Hyperscan::Match","sum":53623},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiGrep","sum":62},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiMatch","sum":40908},{"parent":"MODULE_FUNC","rule":"Hyperscan::Replace","sum":96506},{"parent":"MODULE_FUNC","rule":"Ip::ConvertToIPv6","sum":44300},{"parent":"MODULE_FUNC","rule":"Ip::FromString","sum":389162},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnet","sum":135675},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnetByMask","sum":4},{"parent":"MODULE_FUNC","rule":"Ip::IsEmbeddedIPv4","sum":6914},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv4","sum":136411},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv6","sum":118870},{"parent":"MODULE_FUNC","rule":"Ip::SubnetFromString","sum":548},{"parent":"MODULE_FUNC","rule":"Ip::SubnetMatch","sum":501},{"parent":"MODULE_FUNC","rule":"Ip::ToFixedIPv6String","sum":3829},{"parent":"MODULE_FUNC","rule":"Ip::ToString","sum":552734},{"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":245},{"parent":"MODULE_FUNC","rule":"JSON::PARSE","sum":2},{"parent":"MODULE_FUNC","rule":"JSON::Parse","sum":3743},{"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":6},{"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":116},{"parent":"MODULE_FUNC","rule":"Json::ConvertToString","sum":168},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringDict","sum":5},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringList","sum":21},{"parent":"MODULE_FUNC","rule":"Json::From","sum":3765},{"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":847912},{"parent":"MODULE_FUNC","rule":"Json::LookupString","sum":53},{"parent":"MODULE_FUNC","rule":"Json::Options","sum":852},{"parent":"MODULE_FUNC","rule":"Json::Parse","sum":181050},{"parent":"MODULE_FUNC","rule":"Json::ParseJson","sum":205},{"parent":"MODULE_FUNC","rule":"Json::Serialize","sum":1556},{"parent":"MODULE_FUNC","rule":"Json::SerializeJson","sum":933},{"parent":"MODULE_FUNC","rule":"Json::SerializePretty","sum":1137},{"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::ROUND","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Aabs","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Abs","sum":477715},{"parent":"MODULE_FUNC","rule":"Math::Acos","sum":12415},{"parent":"MODULE_FUNC","rule":"Math::Asin","sum":10403},{"parent":"MODULE_FUNC","rule":"Math::Asinh","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Atan","sum":7800},{"parent":"MODULE_FUNC","rule":"Math::Atan2","sum":12085},{"parent":"MODULE_FUNC","rule":"Math::Cbrt","sum":480},{"parent":"MODULE_FUNC","rule":"Math::Ceil","sum":1248484},{"parent":"MODULE_FUNC","rule":"Math::Cos","sum":87693},{"parent":"MODULE_FUNC","rule":"Math::Cosh","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Crbt","sum":1},{"parent":"MODULE_FUNC","rule":"Math::E","sum":9683},{"parent":"MODULE_FUNC","rule":"Math::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Eps","sum":181},{"parent":"MODULE_FUNC","rule":"Math::Erf","sum":2543},{"parent":"MODULE_FUNC","rule":"Math::ErfInv","sum":42},{"parent":"MODULE_FUNC","rule":"Math::ErfcInv","sum":6},{"parent":"MODULE_FUNC","rule":"Math::Exp","sum":558803},{"parent":"MODULE_FUNC","rule":"Math::Exp2","sum":2138},{"parent":"MODULE_FUNC","rule":"Math::Fabs","sum":145504},{"parent":"MODULE_FUNC","rule":"Math::Floor","sum":326311},{"parent":"MODULE_FUNC","rule":"Math::Flor","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Fmod","sum":9},{"parent":"MODULE_FUNC","rule":"Math::FuzzyEquals","sum":18761},{"parent":"MODULE_FUNC","rule":"Math::Hypot","sum":18561},{"parent":"MODULE_FUNC","rule":"Math::IsFinite","sum":185199},{"parent":"MODULE_FUNC","rule":"Math::IsInf","sum":74643},{"parent":"MODULE_FUNC","rule":"Math::IsNaN","sum":251807},{"parent":"MODULE_FUNC","rule":"Math::Ldexp","sum":46},{"parent":"MODULE_FUNC","rule":"Math::Lgamma","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Log","sum":824060},{"parent":"MODULE_FUNC","rule":"Math::Log10","sum":150347},{"parent":"MODULE_FUNC","rule":"Math::Log2","sum":196490},{"parent":"MODULE_FUNC","rule":"Math::Max","sum":3},{"parent":"MODULE_FUNC","rule":"Math::Min","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Mod","sum":65399},{"parent":"MODULE_FUNC","rule":"Math::NearbyInt","sum":410555},{"parent":"MODULE_FUNC","rule":"Math::Pi","sum":71587},{"parent":"MODULE_FUNC","rule":"Math::Pow","sum":1326346},{"parent":"MODULE_FUNC","rule":"Math::Power","sum":6},{"parent":"MODULE_FUNC","rule":"Math::ROUND","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Rem","sum":2325},{"parent":"MODULE_FUNC","rule":"Math::Remainder","sum":171},{"parent":"MODULE_FUNC","rule":"Math::Rint","sum":20445},{"parent":"MODULE_FUNC","rule":"Math::Round","sum":36407421},{"parent":"MODULE_FUNC","rule":"Math::RoundDownward","sum":135216},{"parent":"MODULE_FUNC","rule":"Math::RoundToNearest","sum":74644},{"parent":"MODULE_FUNC","rule":"Math::RoundTowardZero","sum":907},{"parent":"MODULE_FUNC","rule":"Math::RoundUpward","sum":199858},{"parent":"MODULE_FUNC","rule":"Math::Sigmoid","sum":279068},{"parent":"MODULE_FUNC","rule":"Math::Sin","sum":75206},{"parent":"MODULE_FUNC","rule":"Math::Sinh","sum":6030},{"parent":"MODULE_FUNC","rule":"Math::Sqrt","sum":612224},{"parent":"MODULE_FUNC","rule":"Math::Tan","sum":4808},{"parent":"MODULE_FUNC","rule":"Math::Tanh","sum":4815},{"parent":"MODULE_FUNC","rule":"Math::Tgamma","sum":60},{"parent":"MODULE_FUNC","rule":"Math::Trunc","sum":156289},{"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":3},{"parent":"MODULE_FUNC","rule":"Math::round","sum":13},{"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":50},{"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":95},{"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":49},{"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":1467},{"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":365},{"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":1748},{"parent":"MODULE_FUNC","rule":"Pg::to_char","sum":18},{"parent":"MODULE_FUNC","rule":"Pg::to_timestamp","sum":73},{"parent":"MODULE_FUNC","rule":"Pg::version","sum":3},{"parent":"MODULE_FUNC","rule":"Pire::Capture","sum":533463},{"parent":"MODULE_FUNC","rule":"Pire::Grep","sum":144104},{"parent":"MODULE_FUNC","rule":"Pire::Match","sum":232792},{"parent":"MODULE_FUNC","rule":"Pire::MultiGrep","sum":607},{"parent":"MODULE_FUNC","rule":"Pire::MultiMatch","sum":152},{"parent":"MODULE_FUNC","rule":"Pire::Replace","sum":1000888},{"parent":"MODULE_FUNC","rule":"Protobuf::Parse","sum":20839},{"parent":"MODULE_FUNC","rule":"Protobuf::Serialize","sum":103024},{"parent":"MODULE_FUNC","rule":"Protobuf::TryParse","sum":142506},{"parent":"MODULE_FUNC","rule":"RE2::Capture","sum":4000},{"parent":"MODULE_FUNC","rule":"RE2::Count","sum":269},{"parent":"MODULE_FUNC","rule":"RE2::FindAndConsume","sum":31},{"parent":"MODULE_FUNC","rule":"RE2::Grep","sum":70},{"parent":"MODULE_FUNC","rule":"RE2::Match","sum":546},{"parent":"MODULE_FUNC","rule":"RE2::Replace","sum":124},{"parent":"MODULE_FUNC","rule":"Re2::Capture","sum":4380331},{"parent":"MODULE_FUNC","rule":"Re2::Catch","sum":1},{"parent":"MODULE_FUNC","rule":"Re2::Compile","sum":4},{"parent":"MODULE_FUNC","rule":"Re2::Count","sum":172802},{"parent":"MODULE_FUNC","rule":"Re2::FindAll","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAllSubmatch","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAndConsume","sum":390406},{"parent":"MODULE_FUNC","rule":"Re2::Grep","sum":646127},{"parent":"MODULE_FUNC","rule":"Re2::Match","sum":1694173},{"parent":"MODULE_FUNC","rule":"Re2::Options","sum":251696},{"parent":"MODULE_FUNC","rule":"Re2::Replace","sum":4584232},{"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":1},{"parent":"MODULE_FUNC","rule":"String::AsciiToLower","sum":4111448},{"parent":"MODULE_FUNC","rule":"String::AsciiToTitle","sum":91290},{"parent":"MODULE_FUNC","rule":"String::AsciiToUpper","sum":550631},{"parent":"MODULE_FUNC","rule":"String::Base32Decode","sum":285},{"parent":"MODULE_FUNC","rule":"String::Base32Encode","sum":191},{"parent":"MODULE_FUNC","rule":"String::Base32StrictDecode","sum":53},{"parent":"MODULE_FUNC","rule":"String::Base64Decode","sum":393554},{"parent":"MODULE_FUNC","rule":"String::Base64Encode","sum":111803},{"parent":"MODULE_FUNC","rule":"String::Base64EncodeUrl","sum":5545},{"parent":"MODULE_FUNC","rule":"String::Base64StrictDecode","sum":96933},{"parent":"MODULE_FUNC","rule":"String::Bin","sum":523},{"parent":"MODULE_FUNC","rule":"String::BinText","sum":121},{"parent":"MODULE_FUNC","rule":"String::CgiEscape","sum":66088},{"parent":"MODULE_FUNC","rule":"String::CgiUnescape","sum":24021},{"parent":"MODULE_FUNC","rule":"String::ColapseText","sum":4},{"parent":"MODULE_FUNC","rule":"String::Collapse","sum":192279},{"parent":"MODULE_FUNC","rule":"String::CollapseText","sum":197906},{"parent":"MODULE_FUNC","rule":"String::Contains","sum":6172023},{"parent":"MODULE_FUNC","rule":"String::DecodeHtml","sum":3003},{"parent":"MODULE_FUNC","rule":"String::EncodeHtml","sum":423},{"parent":"MODULE_FUNC","rule":"String::EndsWith","sum":539754},{"parent":"MODULE_FUNC","rule":"String::EndsWithIgnoreCase","sum":36145},{"parent":"MODULE_FUNC","rule":"String::EscapeC","sum":56401},{"parent":"MODULE_FUNC","rule":"String::Find","sum":652932},{"parent":"MODULE_FUNC","rule":"String::From","sum":2},{"parent":"MODULE_FUNC","rule":"String::FromByteList","sum":1055651},{"parent":"MODULE_FUNC","rule":"String::HasPrefix","sum":20389},{"parent":"MODULE_FUNC","rule":"String::HasPrefixIgnoreCase","sum":48},{"parent":"MODULE_FUNC","rule":"String::HasSuffix","sum":4980},{"parent":"MODULE_FUNC","rule":"String::HasSuffixIgnoreCase","sum":29164},{"parent":"MODULE_FUNC","rule":"String::Hex","sum":371063},{"parent":"MODULE_FUNC","rule":"String::HexDecode","sum":164295},{"parent":"MODULE_FUNC","rule":"String::HexEncode","sum":192212},{"parent":"MODULE_FUNC","rule":"String::HexText","sum":80085},{"parent":"MODULE_FUNC","rule":"String::HumanReadableBytes","sum":243},{"parent":"MODULE_FUNC","rule":"String::HumanReadableDuration","sum":1104910},{"parent":"MODULE_FUNC","rule":"String::HumanReadableQuantity","sum":333},{"parent":"MODULE_FUNC","rule":"String::IsAscii","sum":13898},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlnum","sum":981},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlpha","sum":380},{"parent":"MODULE_FUNC","rule":"String::IsAsciiDigit","sum":8629},{"parent":"MODULE_FUNC","rule":"String::IsAsciiHex","sum":19541},{"parent":"MODULE_FUNC","rule":"String::IsAsciiLower","sum":22},{"parent":"MODULE_FUNC","rule":"String::IsAsciiSpace","sum":13},{"parent":"MODULE_FUNC","rule":"String::IsAsciiUpper","sum":350},{"parent":"MODULE_FUNC","rule":"String::Join","sum":2},{"parent":"MODULE_FUNC","rule":"String::JoinFROMList","sum":33364},{"parent":"MODULE_FUNC","rule":"String::JoinFromList","sum":13950209},{"parent":"MODULE_FUNC","rule":"String::LeftPad","sum":64974},{"parent":"MODULE_FUNC","rule":"String::Length","sum":2},{"parent":"MODULE_FUNC","rule":"String::LevenshteinDistance","sum":4},{"parent":"MODULE_FUNC","rule":"String::LevensteinDistance","sum":11541},{"parent":"MODULE_FUNC","rule":"String::Prec","sum":1854},{"parent":"MODULE_FUNC","rule":"String::RaplaceAll","sum":3},{"parent":"MODULE_FUNC","rule":"String::RemoveAll","sum":1246160},{"parent":"MODULE_FUNC","rule":"String::RemoveFirst","sum":637168},{"parent":"MODULE_FUNC","rule":"String::RemoveLast","sum":551351},{"parent":"MODULE_FUNC","rule":"String::Replace","sum":11},{"parent":"MODULE_FUNC","rule":"String::ReplaceALL","sum":1},{"parent":"MODULE_FUNC","rule":"String::ReplaceAll","sum":15572806},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirst","sum":1349608},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirstStartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::ReplaceLast","sum":170281},{"parent":"MODULE_FUNC","rule":"String::ReplaceRegex","sum":1},{"parent":"MODULE_FUNC","rule":"String::Reverse","sum":117285},{"parent":"MODULE_FUNC","rule":"String::ReverseFind","sum":39020},{"parent":"MODULE_FUNC","rule":"String::RightPad","sum":364701},{"parent":"MODULE_FUNC","rule":"String::SBin","sum":7},{"parent":"MODULE_FUNC","rule":"String::SHex","sum":6295},{"parent":"MODULE_FUNC","rule":"String::Split","sum":10},{"parent":"MODULE_FUNC","rule":"String::SplitToList","sum":31568162},{"parent":"MODULE_FUNC","rule":"String::SplitToSet","sum":12},{"parent":"MODULE_FUNC","rule":"String::StartWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::StartsWith","sum":3461444},{"parent":"MODULE_FUNC","rule":"String::StartsWithIgnoreCase","sum":57315},{"parent":"MODULE_FUNC","rule":"String::Strip","sum":3166173},{"parent":"MODULE_FUNC","rule":"String::Substring","sum":300136},{"parent":"MODULE_FUNC","rule":"String::ToByteList","sum":140137},{"parent":"MODULE_FUNC","rule":"String::ToLower","sum":5220539},{"parent":"MODULE_FUNC","rule":"String::ToLowerCase","sum":1},{"parent":"MODULE_FUNC","rule":"String::ToTitle","sum":34209},{"parent":"MODULE_FUNC","rule":"String::ToUpper","sum":140356},{"parent":"MODULE_FUNC","rule":"String::Trim","sum":3},{"parent":"MODULE_FUNC","rule":"String::UnescapeC","sum":309291},{"parent":"MODULE_FUNC","rule":"String::contains","sum":1},{"parent":"MODULE_FUNC","rule":"String::splittolist","sum":1},{"parent":"MODULE_FUNC","rule":"String::tolower","sum":2},{"parent":"MODULE_FUNC","rule":"TryDecompress::BZip2","sum":5},{"parent":"MODULE_FUNC","rule":"TryDecompress::BlockCodec","sum":1},{"parent":"MODULE_FUNC","rule":"TryDecompress::Brotli","sum":12},{"parent":"MODULE_FUNC","rule":"TryDecompress::Gzip","sum":967},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lz4","sum":92},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lzma","sum":5},{"parent":"MODULE_FUNC","rule":"TryDecompress::Snappy","sum":11},{"parent":"MODULE_FUNC","rule":"TryDecompress::Xz","sum":5},{"parent":"MODULE_FUNC","rule":"TryDecompress::Zlib","sum":3546},{"parent":"MODULE_FUNC","rule":"TryDecompress::Zstd","sum":19},{"parent":"MODULE_FUNC","rule":"URL::GetHost","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::Find","sum":150548},{"parent":"MODULE_FUNC","rule":"Unicode::Fold","sum":29451},{"parent":"MODULE_FUNC","rule":"Unicode::FromCodePointList","sum":120601},{"parent":"MODULE_FUNC","rule":"Unicode::GetLength","sum":593619},{"parent":"MODULE_FUNC","rule":"Unicode::GetLengthn","sum":1},{"parent":"MODULE_FUNC","rule":"Unicode::IsAlnum","sum":556},{"parent":"MODULE_FUNC","rule":"Unicode::IsAlpha","sum":465},{"parent":"MODULE_FUNC","rule":"Unicode::IsAscii","sum":660},{"parent":"MODULE_FUNC","rule":"Unicode::IsDigit","sum":9012},{"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":423},{"parent":"MODULE_FUNC","rule":"Unicode::IsUpper","sum":1807},{"parent":"MODULE_FUNC","rule":"Unicode::IsUtf","sum":668623},{"parent":"MODULE_FUNC","rule":"Unicode::JoinFromList","sum":201306},{"parent":"MODULE_FUNC","rule":"Unicode::LevensteinDistance","sum":38466},{"parent":"MODULE_FUNC","rule":"Unicode::Normalize","sum":109260},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFC","sum":550},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFD","sum":37},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKC","sum":6876},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKD","sum":1714},{"parent":"MODULE_FUNC","rule":"Unicode::RFind","sum":73084},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveAll","sum":139648},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveFirst","sum":7903},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveLast","sum":7941},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceAll","sum":262575},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceFirst","sum":1817},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceLast","sum":318},{"parent":"MODULE_FUNC","rule":"Unicode::Reverse","sum":48417},{"parent":"MODULE_FUNC","rule":"Unicode::SUBSTRING","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::SplitToList","sum":176816},{"parent":"MODULE_FUNC","rule":"Unicode::Strip","sum":63682},{"parent":"MODULE_FUNC","rule":"Unicode::Substring","sum":597192},{"parent":"MODULE_FUNC","rule":"Unicode::ToCodePointList","sum":123182},{"parent":"MODULE_FUNC","rule":"Unicode::ToLower","sum":1184377},{"parent":"MODULE_FUNC","rule":"Unicode::ToTitle","sum":36928},{"parent":"MODULE_FUNC","rule":"Unicode::ToUint64","sum":342},{"parent":"MODULE_FUNC","rule":"Unicode::ToUpper","sum":111543},{"parent":"MODULE_FUNC","rule":"Unicode::Translit","sum":104468},{"parent":"MODULE_FUNC","rule":"Unicode::TryToUint64","sum":1971},{"parent":"MODULE_FUNC","rule":"Url::AsciiToLower","sum":1},{"parent":"MODULE_FUNC","rule":"Url::BuildQueryString","sum":25601},{"parent":"MODULE_FUNC","rule":"Url::CanBePunycodeHostName","sum":6563},{"parent":"MODULE_FUNC","rule":"Url::CutQueryStringAndFragment","sum":231682},{"parent":"MODULE_FUNC","rule":"Url::CutScheme","sum":1121349},{"parent":"MODULE_FUNC","rule":"Url::CutWWW","sum":849205},{"parent":"MODULE_FUNC","rule":"Url::CutWWW2","sum":742495},{"parent":"MODULE_FUNC","rule":"Url::Decode","sum":1696641},{"parent":"MODULE_FUNC","rule":"Url::Encode","sum":367989},{"parent":"MODULE_FUNC","rule":"Url::ForceHostNameToPunycode","sum":200127},{"parent":"MODULE_FUNC","rule":"Url::ForcePunycodeToHostName","sum":132412},{"parent":"MODULE_FUNC","rule":"Url::GetCGIParam","sum":1840630},{"parent":"MODULE_FUNC","rule":"Url::GetCgiParam","sum":7},{"parent":"MODULE_FUNC","rule":"Url::GetDomain","sum":1121266},{"parent":"MODULE_FUNC","rule":"Url::GetDomainLevel","sum":70135},{"parent":"MODULE_FUNC","rule":"Url::GetFragment","sum":501},{"parent":"MODULE_FUNC","rule":"Url::GetHost","sum":4031182},{"parent":"MODULE_FUNC","rule":"Url::GetHostPort","sum":195237},{"parent":"MODULE_FUNC","rule":"Url::GetOwner","sum":1404269},{"parent":"MODULE_FUNC","rule":"Url::GetPath","sum":1684170},{"parent":"MODULE_FUNC","rule":"Url::GetPort","sum":812419},{"parent":"MODULE_FUNC","rule":"Url::GetScheme","sum":2032067},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHost","sum":145759},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHostPort","sum":693603},{"parent":"MODULE_FUNC","rule":"Url::GetSignificantDomain","sum":468216},{"parent":"MODULE_FUNC","rule":"Url::GetTLD","sum":35496},{"parent":"MODULE_FUNC","rule":"Url::GetTail","sum":567027},{"parent":"MODULE_FUNC","rule":"Url::Getowner","sum":1},{"parent":"MODULE_FUNC","rule":"Url::HostNameToPunycode","sum":580246},{"parent":"MODULE_FUNC","rule":"Url::IsAllowedByRobotsTxt","sum":7},{"parent":"MODULE_FUNC","rule":"Url::IsKnownTLD","sum":20608},{"parent":"MODULE_FUNC","rule":"Url::IsWellKnownTLD","sum":4987},{"parent":"MODULE_FUNC","rule":"Url::Normalize","sum":1041437},{"parent":"MODULE_FUNC","rule":"Url::NormalizeWithDefaultHttpScheme","sum":616892},{"parent":"MODULE_FUNC","rule":"Url::Parse","sum":299131},{"parent":"MODULE_FUNC","rule":"Url::PunycodeToHostName","sum":201367},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToDict","sum":153593},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToList","sum":38519},{"parent":"MODULE_FUNC","rule":"Url::ReplaceAll","sum":8},{"parent":"MODULE_FUNC","rule":"YSON::Co","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToDoubleList","sum":2},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToInt64","sum":2},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToList","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToString","sum":5},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToStringList","sum":8},{"parent":"MODULE_FUNC","rule":"YSON::LookupDict","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupInt64","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::LookupString","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::ToString","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::convertToString","sum":1},{"parent":"MODULE_FUNC","rule":"YSON::from","sum":1},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToList","sum":3},{"parent":"MODULE_FUNC","rule":"YSon::ConvertToString","sum":1},{"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::AsTuple","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Attributes","sum":1895},{"parent":"MODULE_FUNC","rule":"Yson::COntains","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::CastToStringList","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Contains","sum":2970778},{"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":21},{"parent":"MODULE_FUNC","rule":"Yson::ConvertFromString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertTo","sum":8853250},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToAttributes","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBool","sum":8786371},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolDict","sum":105587},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolList","sum":7423},{"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":8491755},{"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":9500865},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleDict","sum":278052},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleList","sum":1173216},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToFloat","sum":2},{"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":15},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt32","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt32List","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64","sum":20389333},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64Dict","sum":187168},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64List","sum":2391486},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToIntList","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInteget","sum":157},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToJson","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToList","sum":18849836},{"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":96410632},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringDict","sum":1445511},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringInt64","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringList","sum":24313201},{"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":8},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUInt64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint32","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64","sum":8459681},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64Dict","sum":36715},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64List","sum":2205194},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUnit64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToevent_value","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToint64","sum":2},{"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::ConverttoList","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoString","sum":11},{"parent":"MODULE_FUNC","rule":"Yson::ConvvertToString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Dict","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::Equals","sum":794322},{"parent":"MODULE_FUNC","rule":"Yson::Extract","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FROM","sum":6},{"parent":"MODULE_FUNC","rule":"Yson::Find","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::From","sum":24870602},{"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::FromBoolDict","sum":13},{"parent":"MODULE_FUNC","rule":"Yson::FromBytes","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::FromDict","sum":3079},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble","sum":2822},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble64Dict","sum":3692},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleDict","sum":42356},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleList","sum":1017},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64Dict","sum":2156},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64List","sum":7488},{"parent":"MODULE_FUNC","rule":"Yson::FromJson","sum":2090},{"parent":"MODULE_FUNC","rule":"Yson::FromKek","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::FromList","sum":4973},{"parent":"MODULE_FUNC","rule":"Yson::FromListTake","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromMap","sum":358},{"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":56446},{"parent":"MODULE_FUNC","rule":"Yson::FromStringDict","sum":68687},{"parent":"MODULE_FUNC","rule":"Yson::FromStringList","sum":60027},{"parent":"MODULE_FUNC","rule":"Yson::FromStruct","sum":642551},{"parent":"MODULE_FUNC","rule":"Yson::FromUi64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromUin64List","sum":380},{"parent":"MODULE_FUNC","rule":"Yson::FromUint32Dict","sum":10250},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64Dict","sum":16143},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64List","sum":25149},{"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":859162},{"parent":"MODULE_FUNC","rule":"Yson::GetLength","sum":2791907},{"parent":"MODULE_FUNC","rule":"Yson::IsBool","sum":33054},{"parent":"MODULE_FUNC","rule":"Yson::IsDict","sum":262608},{"parent":"MODULE_FUNC","rule":"Yson::IsDouble","sum":98144},{"parent":"MODULE_FUNC","rule":"Yson::IsEntity","sum":2685091},{"parent":"MODULE_FUNC","rule":"Yson::IsInt64","sum":288907},{"parent":"MODULE_FUNC","rule":"Yson::IsList","sum":286841},{"parent":"MODULE_FUNC","rule":"Yson::IsString","sum":1013476},{"parent":"MODULE_FUNC","rule":"Yson::IsUint64","sum":155716},{"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":1},{"parent":"MODULE_FUNC","rule":"Yson::Lookup","sum":6552294},{"parent":"MODULE_FUNC","rule":"Yson::LookupBool","sum":2149412},{"parent":"MODULE_FUNC","rule":"Yson::LookupDict","sum":402758},{"parent":"MODULE_FUNC","rule":"Yson::LookupDouble","sum":3070211},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt","sum":15},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt32","sum":91},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt64","sum":5509537},{"parent":"MODULE_FUNC","rule":"Yson::LookupInteger","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupList","sum":1629712},{"parent":"MODULE_FUNC","rule":"Yson::LookupSTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupString","sum":41167625},{"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":3799019},{"parent":"MODULE_FUNC","rule":"Yson::LookupsTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LoopUpString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Option","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Options","sum":9252128},{"parent":"MODULE_FUNC","rule":"Yson::Parse","sum":8639995},{"parent":"MODULE_FUNC","rule":"Yson::ParseJSON","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ParseJson","sum":12631463},{"parent":"MODULE_FUNC","rule":"Yson::ParseJsonDecodeUtf8","sum":135897},{"parent":"MODULE_FUNC","rule":"Yson::Parsejson","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::Path","sum":23},{"parent":"MODULE_FUNC","rule":"Yson::Serialize","sum":3856335},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJson","sum":9796705},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJsonEncodeUtf8","sum":201029},{"parent":"MODULE_FUNC","rule":"Yson::SerializePretty","sum":1186662},{"parent":"MODULE_FUNC","rule":"Yson::SerializeText","sum":609005},{"parent":"MODULE_FUNC","rule":"Yson::WithAttributes","sum":667},{"parent":"MODULE_FUNC","rule":"Yson::YPath","sum":12592591},{"parent":"MODULE_FUNC","rule":"Yson::YPathBool","sum":1170476},{"parent":"MODULE_FUNC","rule":"Yson::YPathBoolean","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::YPathDict","sum":25039},{"parent":"MODULE_FUNC","rule":"Yson::YPathDouble","sum":1376465},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt16","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt64","sum":2682245},{"parent":"MODULE_FUNC","rule":"Yson::YPathList","sum":1337807},{"parent":"MODULE_FUNC","rule":"Yson::YPathListString","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::YPathString","sum":13384229},{"parent":"MODULE_FUNC","rule":"Yson::YPathUint64","sum":710582},{"parent":"MODULE_FUNC","rule":"Yson::YaPathString","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::Ypath","sum":21},{"parent":"MODULE_FUNC","rule":"Yson::Yson2","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToInt64","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::convertToString","sum":6},{"parent":"MODULE_FUNC","rule":"Yson::from","sum":14},{"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":354},{"parent":"MODULE_FUNC","rule":"dateTime::IntervalFromSeconds","sum":1},{"parent":"MODULE_FUNC","rule":"dateTime::MakeDate","sum":85},{"parent":"MODULE_FUNC","rule":"dateTime::MakeDatetime","sum":7},{"parent":"MODULE_FUNC","rule":"dateTime::StartOfMonth","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::Format","sum":7},{"parent":"MODULE_FUNC","rule":"datetime::FromMilliseconds","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::FromSeconds","sum":3796},{"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":2},{"parent":"MODULE_FUNC","rule":"datetime::GetYear","sum":5},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromDays","sum":1346},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromHours","sum":37},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromMinutes","sum":6},{"parent":"MODULE_FUNC","rule":"datetime::MakeDate","sum":5460},{"parent":"MODULE_FUNC","rule":"datetime::MakeDatetime","sum":655},{"parent":"MODULE_FUNC","rule":"datetime::MakeTimestamp","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::Parse","sum":398},{"parent":"MODULE_FUNC","rule":"datetime::ParseIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"datetime::ShiftMonths","sum":313},{"parent":"MODULE_FUNC","rule":"datetime::StartOf","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::StartOfDay","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::StartOfMonth","sum":552},{"parent":"MODULE_FUNC","rule":"datetime::StartOfWeek","sum":522},{"parent":"MODULE_FUNC","rule":"datetime::ToDays","sum":376},{"parent":"MODULE_FUNC","rule":"datetime::ToSeconds","sum":729},{"parent":"MODULE_FUNC","rule":"datetime::fromseconds","sum":3},{"parent":"MODULE_FUNC","rule":"digest::city_hash","sum":1},{"parent":"MODULE_FUNC","rule":"hyperscan::Match","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::log","sum":2},{"parent":"MODULE_FUNC","rule":"math::round","sum":6},{"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":697},{"parent":"MODULE_FUNC","rule":"pg::array_agg","sum":2},{"parent":"MODULE_FUNC","rule":"pg::date_part","sum":676},{"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":2622},{"parent":"MODULE_FUNC","rule":"re2::Grep","sum":1},{"parent":"MODULE_FUNC","rule":"re2::Match","sum":25},{"parent":"MODULE_FUNC","rule":"re2::Replace","sum":438},{"parent":"MODULE_FUNC","rule":"re2::capture","sum":8},{"parent":"MODULE_FUNC","rule":"string::JoinFromList","sum":1},{"parent":"MODULE_FUNC","rule":"string::StartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"string::contains","sum":1},{"parent":"MODULE_FUNC","rule":"string::removeall","sum":4},{"parent":"MODULE_FUNC","rule":"string::splittolist","sum":12},{"parent":"MODULE_FUNC","rule":"string::strip","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::ConvertToStringList","sum":2},{"parent":"MODULE_FUNC","rule":"yson::From","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":3},{"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":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Block2","sum":4874480},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Rule_opt_bind_parameter1","sum":13863320},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Rule_opt_bind_parameter2","sum":7419395},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Token1","sum":7419395},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Block2","sum":136130356},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Rule_mul_subexpr1","sum":15578887004},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Rule_mul_subexpr2","sum":167530812},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Token1","sum":167530812},{"parent":"TRule_an_id","rule":"TRule_an_id.Alt_an_id1","sum":1991339715},{"parent":"TRule_an_id.TAlt1","rule":"TRule_an_id.TAlt1.Rule_id1","sum":1991339715},{"parent":"TRule_an_id_as_compat","rule":"TRule_an_id_as_compat.Alt_an_id_as_compat1","sum":2917673},{"parent":"TRule_an_id_as_compat.TAlt1","rule":"TRule_an_id_as_compat.TAlt1.Rule_id_as_compat1","sum":2917673},{"parent":"TRule_an_id_expr","rule":"TRule_an_id_expr.Alt_an_id_expr1","sum":96096575},{"parent":"TRule_an_id_expr.TAlt1","rule":"TRule_an_id_expr.TAlt1.Rule_id_expr1","sum":96096575},{"parent":"TRule_an_id_hint","rule":"TRule_an_id_hint.Alt_an_id_hint1","sum":153546171},{"parent":"TRule_an_id_hint.TAlt1","rule":"TRule_an_id_hint.TAlt1.Rule_id_hint1","sum":153546171},{"parent":"TRule_an_id_or_type","rule":"TRule_an_id_or_type.Alt_an_id_or_type1","sum":9580237140},{"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":9580237140},{"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":674730413},{"parent":"TRule_an_id_pure.TAlt1","rule":"TRule_an_id_pure.TAlt1.Rule_identifier1","sum":674730413},{"parent":"TRule_an_id_schema","rule":"TRule_an_id_schema.Alt_an_id_schema1","sum":1286},{"parent":"TRule_an_id_schema.TAlt1","rule":"TRule_an_id_schema.TAlt1.Rule_id_schema1","sum":1286},{"parent":"TRule_an_id_table","rule":"TRule_an_id_table.Alt_an_id_table1","sum":330498585},{"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":330498585},{"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":46472719},{"parent":"TRule_an_id_window.TAlt1","rule":"TRule_an_id_window.TAlt1.Rule_id_window1","sum":46472719},{"parent":"TRule_an_id_without","rule":"TRule_an_id_without.Alt_an_id_without1","sum":23122170},{"parent":"TRule_an_id_without.TAlt1","rule":"TRule_an_id_without.TAlt1.Rule_id_without1","sum":23122170},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Block2","sum":29488},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Rule_xor_subexpr1","sum":14246157279},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Rule_xor_subexpr2","sum":29552},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Token1","sum":29552},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr1","sum":5167329915},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr10","sum":35705142},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr11","sum":8458526},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr12","sum":14420408},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr2","sum":1761410676},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr3","sum":444713693},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr4","sum":397451793},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr5","sum":76996},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr6","sum":61323841},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr7","sum":924342021},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr8","sum":161016},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr9","sum":501677},{"parent":"TRule_atom_expr.TAlt1","rule":"TRule_atom_expr.TAlt1.Rule_literal_value1","sum":5167329915},{"parent":"TRule_atom_expr.TAlt10","rule":"TRule_atom_expr.TAlt10.Rule_list_literal1","sum":35705142},{"parent":"TRule_atom_expr.TAlt11","rule":"TRule_atom_expr.TAlt11.Rule_dict_literal1","sum":8458526},{"parent":"TRule_atom_expr.TAlt12","rule":"TRule_atom_expr.TAlt12.Rule_struct_literal1","sum":14420408},{"parent":"TRule_atom_expr.TAlt2","rule":"TRule_atom_expr.TAlt2.Rule_bind_parameter1","sum":1761410676},{"parent":"TRule_atom_expr.TAlt3","rule":"TRule_atom_expr.TAlt3.Rule_lambda1","sum":444713693},{"parent":"TRule_atom_expr.TAlt4","rule":"TRule_atom_expr.TAlt4.Rule_cast_expr1","sum":397451793},{"parent":"TRule_atom_expr.TAlt5","rule":"TRule_atom_expr.TAlt5.Rule_exists_expr1","sum":76996},{"parent":"TRule_atom_expr.TAlt6","rule":"TRule_atom_expr.TAlt6.Rule_case_expr1","sum":61323841},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Block3","sum":924342021},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Rule_an_id_or_type1","sum":924342021},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Token2","sum":924342021},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt1","sum":924340776},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt2","sum":1245},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt1","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt1.Rule_id_or_type1","sum":924340776},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt2","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt2.Token1","sum":1245},{"parent":"TRule_atom_expr.TAlt8","rule":"TRule_atom_expr.TAlt8.Rule_value_constructor1","sum":161016},{"parent":"TRule_atom_expr.TAlt9","rule":"TRule_atom_expr.TAlt9.Rule_bitcast_expr1","sum":501677},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Block2","sum":3682021854},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Token1","sum":3682021854},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt1","sum":3682009956},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt2","sum":9444},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt3","sum":2454},{"parent":"TRule_bind_parameter.TBlock2.TAlt1","rule":"TRule_bind_parameter.TBlock2.TAlt1.Rule_an_id_or_type1","sum":3682009956},{"parent":"TRule_bind_parameter.TBlock2.TAlt2","rule":"TRule_bind_parameter.TBlock2.TAlt2.Token1","sum":9444},{"parent":"TRule_bind_parameter.TBlock2.TAlt3","rule":"TRule_bind_parameter.TBlock2.TAlt3.Token1","sum":2454},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Block2","sum":235943},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Rule_bind_parameter1","sum":1002566900},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Rule_bind_parameter2","sum":322786},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Token1","sum":322786},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Block2","sum":137841123},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Rule_add_subexpr1","sum":15421715199},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Rule_add_subexpr2","sum":157171805},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Token1","sum":157171805},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_expr3","sum":501677},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_type_name_simple5","sum":501677},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token1","sum":501677},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token2","sum":501677},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token4","sum":501677},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token6","sum":501677},{"parent":"TRule_bool_value","rule":"TRule_bool_value.Token1","sum":103662442},{"parent":"TRule_call_action","rule":"TRule_call_action.Block1","sum":9387011},{"parent":"TRule_call_action","rule":"TRule_call_action.Block3","sum":7125589},{"parent":"TRule_call_action","rule":"TRule_call_action.Token2","sum":9387011},{"parent":"TRule_call_action","rule":"TRule_call_action.Token4","sum":9387011},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt1","sum":9261232},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt2","sum":125779},{"parent":"TRule_call_action.TBlock1.TAlt1","rule":"TRule_call_action.TBlock1.TAlt1.Rule_bind_parameter1","sum":9261232},{"parent":"TRule_call_action.TBlock1.TAlt2","rule":"TRule_call_action.TBlock1.TAlt2.Token1","sum":125779},{"parent":"TRule_call_action.TBlock3","rule":"TRule_call_action.TBlock3.Rule_expr_list1","sum":7125589},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Block2","sum":1},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Rule_variant_arg1","sum":17897089},{"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":4335701},{"parent":"TRule_callable_arg_list","rule":"TRule_callable_arg_list.Rule_callable_arg1","sum":9731361},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Rule_callable_arg2","sum":8165728},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Token1","sum":8165728},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block2","sum":4728673},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block3","sum":61323845},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block4","sum":61323845},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token1","sum":61323845},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token5","sum":61323845},{"parent":"TRule_case_expr.TBlock2","rule":"TRule_case_expr.TBlock2.Rule_expr1","sum":4728673},{"parent":"TRule_case_expr.TBlock3","rule":"TRule_case_expr.TBlock3.Rule_when_expr1","sum":157500144},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Rule_expr2","sum":61323845},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Token1","sum":61323845},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_expr3","sum":397496235},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_type_name_or_bind5","sum":397496235},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token1","sum":397496235},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token2","sum":397496235},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token4","sum":397496235},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token6","sum":397496235},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block1","sum":6754440},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block2","sum":373099947},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Rule_an_id1","sum":6754440},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Token2","sum":6754440},{"parent":"TRule_cluster_expr.TBlock2","rule":"TRule_cluster_expr.TBlock2.Alt1","sum":373099947},{"parent":"TRule_cluster_expr.TBlock2.TAlt1","rule":"TRule_cluster_expr.TBlock2.TAlt1.Rule_pure_column_or_named1","sum":373099947},{"parent":"TRule_column_list","rule":"TRule_column_list.Block2","sum":277335},{"parent":"TRule_column_list","rule":"TRule_column_list.Block3","sum":762},{"parent":"TRule_column_list","rule":"TRule_column_list.Rule_column_name1","sum":838466},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Rule_column_name2","sum":1118235},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Token1","sum":1118235},{"parent":"TRule_column_list.TBlock3","rule":"TRule_column_list.TBlock3.Token1","sum":762},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_an_id2","sum":23207765},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_opt_id_prefix1","sum":23207765},{"parent":"TRule_column_order_by_specification","rule":"TRule_column_order_by_specification.Rule_an_id1","sum":117},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_an_id_schema1","sum":1286},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_opt_column_constraints4","sum":1286},{"parent":"TRule_column_schema","rule":"TRule_column_schema.Rule_type_name_or_bind2","sum":1286},{"parent":"TRule_commit_stmt","rule":"TRule_commit_stmt.Token1","sum":12985670},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr1","sum":15887314010},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr2","sum":87288612},{"parent":"TRule_con_subexpr.TAlt1","rule":"TRule_con_subexpr.TAlt1.Rule_unary_subexpr1","sum":15887314010},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_op1","sum":87288612},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_subexpr2","sum":87288612},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr1","sum":52031343},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr2","sum":126033122},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr3","sum":172004062},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr4","sum":24780845},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr5","sum":716833017},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block1","sum":9227033},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block4","sum":93875},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_eq_subexpr3","sum":52031343},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_match_op2","sum":52031343},{"parent":"TRule_cond_expr.TAlt1.TBlock1","rule":"TRule_cond_expr.TAlt1.TBlock1.Token1","sum":9227033},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Rule_eq_subexpr2","sum":93875},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Token1","sum":93875},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block1","sum":26082912},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block3","sum":3149029},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Rule_in_expr4","sum":126033122},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Token2","sum":126033122},{"parent":"TRule_cond_expr.TAlt2.TBlock1","rule":"TRule_cond_expr.TAlt2.TBlock1.Token1","sum":26082912},{"parent":"TRule_cond_expr.TAlt2.TBlock3","rule":"TRule_cond_expr.TAlt2.TBlock3.Token1","sum":3149029},{"parent":"TRule_cond_expr.TAlt3","rule":"TRule_cond_expr.TAlt3.Block1","sum":172004062},{"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":413},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt3","sum":60447743},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt4","sum":111555744},{"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":413},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token1","sum":60447743},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token2","sum":60447743},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Block1","sum":111514343},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token2","sum":111555744},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token3","sum":111555744},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1.Token1","sum":111514343},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Block1","sum":399471},{"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":24780845},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Rule_eq_subexpr6","sum":24780845},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token2","sum":24780845},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token5","sum":24780845},{"parent":"TRule_cond_expr.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt4.TBlock1.Token1","sum":399471},{"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":716833017},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Block1","sum":716835030},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Rule_eq_subexpr2","sum":716835030},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt1","sum":490458705},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt2","sum":171386461},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt3","sum":49527982},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt4","sum":5069975},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt5","sum":391907},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1.Token1","sum":490458705},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2.Token1","sum":171386461},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3.Token1","sum":49527982},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4.Token1","sum":5069975},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5.Rule_distinct_from_op1","sum":391907},{"parent":"TRule_create_table_entry","rule":"TRule_create_table_entry.Alt_create_table_entry1","sum":1286},{"parent":"TRule_create_table_entry","rule":"TRule_create_table_entry.Alt_create_table_entry2","sum":253},{"parent":"TRule_create_table_entry.TAlt1","rule":"TRule_create_table_entry.TAlt1.Rule_column_schema1","sum":1286},{"parent":"TRule_create_table_entry.TAlt2","rule":"TRule_create_table_entry.TAlt2.Rule_table_constraint1","sum":253},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Block3","sum":137},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Block8","sum":137},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Rule_create_table_entry7","sum":137},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Rule_simple_table_ref5","sum":137},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token1","sum":137},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token10","sum":137},{"parent":"TRule_create_table_stmt","rule":"TRule_create_table_stmt.Token6","sum":137},{"parent":"TRule_create_table_stmt.TBlock3","rule":"TRule_create_table_stmt.TBlock3.Alt1","sum":137},{"parent":"TRule_create_table_stmt.TBlock3.TAlt1","rule":"TRule_create_table_stmt.TBlock3.TAlt1.Token1","sum":137},{"parent":"TRule_create_table_stmt.TBlock8","rule":"TRule_create_table_stmt.TBlock8.Rule_create_table_entry2","sum":1402},{"parent":"TRule_create_table_stmt.TBlock8","rule":"TRule_create_table_stmt.TBlock8.Token1","sum":1402},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Rule_ordinary_grouping_set_list3","sum":277764},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token1","sum":277764},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token2","sum":277764},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token4","sum":277764},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_bind_parameter2","sum":154773177},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_type_name4","sum":154773177},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token1","sum":154773177},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token3","sum":154773177},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block1","sum":45289},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block2","sum":35937107},{"parent":"TRule_define_action_or_subquery_body.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock1.Token1","sum":45289},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block2","sum":15998025},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block3","sum":23395636},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Rule_sql_stmt_core1","sum":35937107},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Block1","sum":45662997},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Rule_sql_stmt_core2","sum":45662997},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1.Token1","sum":45676021},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock3","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock3.Token1","sum":23420787},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Block5","sum":13863320},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_bind_parameter3","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_define_action_or_subquery_body8","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token1","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token10","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token2","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token4","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token6","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token7","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token9","sum":22146478},{"parent":"TRule_define_action_or_subquery_stmt.TBlock5","rule":"TRule_define_action_or_subquery_stmt.TBlock5.Rule_action_or_subquery_args1","sum":13863320},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block2","sum":8186701},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block3","sum":2240048},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token1","sum":8913652},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token4","sum":8913652},{"parent":"TRule_dict_literal.TBlock2","rule":"TRule_dict_literal.TBlock2.Rule_expr_dict_list1","sum":8186701},{"parent":"TRule_dict_literal.TBlock3","rule":"TRule_dict_literal.TBlock3.Token1","sum":2240048},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Block2","sum":119057},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token1","sum":391907},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token3","sum":391907},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token4","sum":391907},{"parent":"TRule_distinct_from_op.TBlock2","rule":"TRule_distinct_from_op.TBlock2.Token1","sum":119057},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Block2","sum":23184321},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Token1","sum":23184321},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt1","sum":9387011},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt2","sum":13797310},{"parent":"TRule_do_stmt.TBlock2.TAlt1","rule":"TRule_do_stmt.TBlock2.TAlt1.Rule_call_action1","sum":9387011},{"parent":"TRule_do_stmt.TBlock2.TAlt2","rule":"TRule_do_stmt.TBlock2.TAlt2.Rule_inline_action1","sum":13797310},{"parent":"TRule_double_question","rule":"TRule_double_question.Token1","sum":108571603},{"parent":"TRule_double_question","rule":"TRule_double_question.Token2","sum":108571603},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Block2","sum":2560940},{"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":2560940},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Token1","sum":2560940},{"parent":"TRule_drop_table_stmt.TBlock2","rule":"TRule_drop_table_stmt.TBlock2.Alt1","sum":2560940},{"parent":"TRule_drop_table_stmt.TBlock2.TAlt1","rule":"TRule_drop_table_stmt.TBlock2.TAlt1.Token1","sum":2560940},{"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":239228334},{"parent":"TRule_eq_subexpr","rule":"TRule_eq_subexpr.Rule_neq_subexpr1","sum":15064708769},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Rule_neq_subexpr2","sum":239228389},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Token1","sum":239228389},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Block3","sum":76996},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token1","sum":76996},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token2","sum":76996},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token4","sum":76996},{"parent":"TRule_exists_expr.TBlock3","rule":"TRule_exists_expr.TBlock3.Alt1","sum":76996},{"parent":"TRule_exists_expr.TBlock3.TAlt1","rule":"TRule_exists_expr.TBlock3.TAlt1.Rule_select_stmt1","sum":76996},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr1","sum":13661547647},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr2","sum":17316702},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Block2","sum":68173343},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Rule_or_subexpr1","sum":13661547647},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Rule_or_subexpr2","sum":114910990},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Token1","sum":114910990},{"parent":"TRule_expr.TAlt2","rule":"TRule_expr.TAlt2.Rule_type_name_composite1","sum":17316702},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block2","sum":6987187},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block3","sum":6609858},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Rule_expr1","sum":8186701},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Rule_expr2","sum":6987187},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Token1","sum":6987187},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Block3","sum":35002670},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Rule_expr2","sum":41922446},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Token1","sum":41922446},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Rule_expr2","sum":35002670},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Token1","sum":35002670},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Block2","sum":41640838},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Rule_expr1","sum":67094752},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Rule_expr2","sum":205214370},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Token1","sum":205214370},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Block4","sum":12377549},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr1","sum":14291717},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr3","sum":14291717},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Token2","sum":14291717},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr2","sum":30895823},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr4","sum":30895823},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token1","sum":30895823},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token3","sum":30895823},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Block1","sum":2547590},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Rule_order_by_clause2","sum":88178773},{"parent":"TRule_ext_order_by_clause.TBlock1","rule":"TRule_ext_order_by_clause.TBlock1.Token1","sum":2547590},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg1","sum":21251064},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg2","sum":4298431},{"parent":"TRule_flatten_by_arg.TAlt1","rule":"TRule_flatten_by_arg.TAlt1.Rule_named_column1","sum":21251064},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Block3","sum":50342},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Rule_named_expr_list2","sum":4298431},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token1","sum":4298431},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token4","sum":4298431},{"parent":"TRule_flatten_by_arg.TAlt2.TBlock3","rule":"TRule_flatten_by_arg.TAlt2.TBlock3.Token1","sum":50342},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Block2","sum":33439229},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Rule_named_single_source1","sum":1049358312},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Block2","sum":33439229},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Token1","sum":33439229},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt1","sum":25549495},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt2","sum":7889734},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Block1","sum":19506949},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Rule_flatten_by_arg3","sum":25549495},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Token2","sum":25549495},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1.Token1","sum":19506949},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt2","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt2.Token1","sum":7889734},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block1","sum":6943161},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block2","sum":7},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block8","sum":64542},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_bind_parameter4","sum":6943272},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_do_stmt7","sum":6943272},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_expr6","sum":6943272},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token3","sum":6943272},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token5","sum":6943272},{"parent":"TRule_for_stmt.TBlock1","rule":"TRule_for_stmt.TBlock1.Token1","sum":6943161},{"parent":"TRule_for_stmt.TBlock2","rule":"TRule_for_stmt.TBlock2.Token1","sum":7},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Rule_do_stmt2","sum":64542},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Token1","sum":64542},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Block2","sum":1598829},{"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":137629459},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Rule_opt_set_quantifier4","sum":137629459},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token1","sum":137629459},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token3","sum":137629459},{"parent":"TRule_group_by_clause.TBlock2","rule":"TRule_group_by_clause.TBlock2.Token1","sum":1598829},{"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":299922312},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element2","sum":61937},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element3","sum":277764},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element4","sum":92760},{"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":299922312},{"parent":"TRule_grouping_element.TAlt2","rule":"TRule_grouping_element.TAlt2.Rule_rollup_list1","sum":61937},{"parent":"TRule_grouping_element.TAlt3","rule":"TRule_grouping_element.TAlt3.Rule_cube_list1","sum":277764},{"parent":"TRule_grouping_element.TAlt4","rule":"TRule_grouping_element.TAlt4.Rule_grouping_sets_specification1","sum":92760},{"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":62592674},{"parent":"TRule_grouping_element_list","rule":"TRule_grouping_element_list.Rule_grouping_element1","sum":137722219},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Rule_grouping_element2","sum":162632577},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Token1","sum":162632577},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Rule_grouping_element_list4","sum":92760},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token1","sum":92760},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token2","sum":92760},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token3","sum":92760},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token5","sum":92760},{"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":12063488533},{"parent":"TRule_id","rule":"TRule_id.Alt_id2","sum":528985260},{"parent":"TRule_id.TAlt1","rule":"TRule_id.TAlt1.Rule_identifier1","sum":12063488533},{"parent":"TRule_id.TAlt2","rule":"TRule_id.TAlt2.Rule_keyword1","sum":528985260},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat1","sum":2915239},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat2","sum":2434},{"parent":"TRule_id_as_compat.TAlt1","rule":"TRule_id_as_compat.TAlt1.Rule_identifier1","sum":2915239},{"parent":"TRule_id_as_compat.TAlt2","rule":"TRule_id_as_compat.TAlt2.Rule_keyword_as_compat1","sum":2434},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr1","sum":6894549449},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr2","sum":318138520},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr3","sum":447776},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr5","sum":35140433},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr6","sum":181847},{"parent":"TRule_id_expr.TAlt1","rule":"TRule_id_expr.TAlt1.Rule_identifier1","sum":6894549449},{"parent":"TRule_id_expr.TAlt2","rule":"TRule_id_expr.TAlt2.Rule_keyword_compat1","sum":318138520},{"parent":"TRule_id_expr.TAlt3","rule":"TRule_id_expr.TAlt3.Rule_keyword_alter_uncompat1","sum":447776},{"parent":"TRule_id_expr.TAlt5","rule":"TRule_id_expr.TAlt5.Rule_keyword_window_uncompat1","sum":35140433},{"parent":"TRule_id_expr.TAlt6","rule":"TRule_id_expr.TAlt6.Rule_keyword_hint_uncompat1","sum":181847},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in1","sum":5622636},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in2","sum":72371},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in4","sum":206},{"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":5622636},{"parent":"TRule_id_expr_in.TAlt2","rule":"TRule_id_expr_in.TAlt2.Rule_keyword_compat1","sum":72371},{"parent":"TRule_id_expr_in.TAlt4","rule":"TRule_id_expr_in.TAlt4.Rule_keyword_window_uncompat1","sum":206},{"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":153502519},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint2","sum":21826},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint3","sum":21826},{"parent":"TRule_id_hint.TAlt1","rule":"TRule_id_hint.TAlt1.Rule_identifier1","sum":153502519},{"parent":"TRule_id_hint.TAlt2","rule":"TRule_id_hint.TAlt2.Rule_keyword_compat1","sum":21826},{"parent":"TRule_id_hint.TAlt3","rule":"TRule_id_hint.TAlt3.Rule_keyword_expr_uncompat1","sum":21826},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Block1","sum":4715132},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Rule_an_id_or_type2","sum":133548148},{"parent":"TRule_id_or_at.TBlock1","rule":"TRule_id_or_at.TBlock1.Token1","sum":4715132},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type1","sum":10495928453},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type2","sum":11600652},{"parent":"TRule_id_or_type.TAlt1","rule":"TRule_id_or_type.TAlt1.Rule_id1","sum":10495928453},{"parent":"TRule_id_or_type.TAlt2","rule":"TRule_id_or_type.TAlt2.Rule_type_id1","sum":11600652},{"parent":"TRule_id_schema","rule":"TRule_id_schema.Alt_id_schema1","sum":1274},{"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":1274},{"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":329845374},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table2","sum":638516},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table3","sum":371},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table4","sum":12499},{"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":1811},{"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":329845374},{"parent":"TRule_id_table.TAlt2","rule":"TRule_id_table.TAlt2.Rule_keyword_compat1","sum":638516},{"parent":"TRule_id_table.TAlt3","rule":"TRule_id_table.TAlt3.Rule_keyword_expr_uncompat1","sum":371},{"parent":"TRule_id_table.TAlt4","rule":"TRule_id_table.TAlt4.Rule_keyword_select_uncompat1","sum":12499},{"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":1811},{"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":330498586},{"parent":"TRule_id_table_or_type","rule":"TRule_id_table_or_type.Alt_id_table_or_type2","sum":4384},{"parent":"TRule_id_table_or_type.TAlt1","rule":"TRule_id_table_or_type.TAlt1.Rule_an_id_table1","sum":330498586},{"parent":"TRule_id_table_or_type.TAlt2","rule":"TRule_id_table_or_type.TAlt2.Rule_type_id1","sum":4384},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window1","sum":46200178},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window2","sum":16509},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window3","sum":248205},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window5","sum":7827},{"parent":"TRule_id_window.TAlt1","rule":"TRule_id_window.TAlt1.Rule_identifier1","sum":46200178},{"parent":"TRule_id_window.TAlt2","rule":"TRule_id_window.TAlt2.Rule_keyword_compat1","sum":16509},{"parent":"TRule_id_window.TAlt3","rule":"TRule_id_window.TAlt3.Rule_keyword_expr_uncompat1","sum":248205},{"parent":"TRule_id_window.TAlt5","rule":"TRule_id_window.TAlt5.Rule_keyword_select_uncompat1","sum":7827},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without1","sum":22845469},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without2","sum":274994},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without6","sum":1194},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without7","sum":513},{"parent":"TRule_id_without.TAlt1","rule":"TRule_id_without.TAlt1.Rule_identifier1","sum":22845469},{"parent":"TRule_id_without.TAlt2","rule":"TRule_id_without.TAlt2.Rule_keyword_compat1","sum":274994},{"parent":"TRule_id_without.TAlt6","rule":"TRule_id_without.TAlt6.Rule_keyword_window_uncompat1","sum":1194},{"parent":"TRule_id_without.TAlt7","rule":"TRule_id_without.TAlt7.Rule_keyword_hint_uncompat1","sum":513},{"parent":"TRule_identifier","rule":"TRule_identifier.Token1","sum":20193701086},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block1","sum":8529510},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block5","sum":2956710},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_do_stmt4","sum":8529552},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_expr3","sum":8529552},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Token2","sum":8529552},{"parent":"TRule_if_stmt.TBlock1","rule":"TRule_if_stmt.TBlock1.Token1","sum":8529510},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Rule_do_stmt2","sum":2956710},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Token1","sum":2956710},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_module_path2","sum":16448365},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_named_bind_parameter_list4","sum":16448365},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token1","sum":16448365},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token3","sum":16448365},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr1","sum":2254},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr10","sum":5088024},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr11","sum":455126},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr2","sum":36289544},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr3","sum":65822822},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr4","sum":44442},{"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":2951189},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr7","sum":9684399},{"parent":"TRule_in_atom_expr.TAlt1","rule":"TRule_in_atom_expr.TAlt1.Rule_literal_value1","sum":2254},{"parent":"TRule_in_atom_expr.TAlt10","rule":"TRule_in_atom_expr.TAlt10.Rule_list_literal1","sum":5088024},{"parent":"TRule_in_atom_expr.TAlt11","rule":"TRule_in_atom_expr.TAlt11.Rule_dict_literal1","sum":455126},{"parent":"TRule_in_atom_expr.TAlt2","rule":"TRule_in_atom_expr.TAlt2.Rule_bind_parameter1","sum":36289544},{"parent":"TRule_in_atom_expr.TAlt3","rule":"TRule_in_atom_expr.TAlt3.Rule_lambda1","sum":65822822},{"parent":"TRule_in_atom_expr.TAlt4","rule":"TRule_in_atom_expr.TAlt4.Rule_cast_expr1","sum":44442},{"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":2951189},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Rule_an_id_or_type1","sum":2951189},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Token2","sum":2951189},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3","rule":"TRule_in_atom_expr.TAlt6.TBlock3.Alt1","sum":2951189},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1","rule":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1.Rule_id_or_type1","sum":2951189},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Rule_select_stmt2","sum":9684399},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token1","sum":9684399},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token3","sum":9684399},{"parent":"TRule_in_expr","rule":"TRule_in_expr.Rule_in_unary_subexpr1","sum":126033122},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Block1","sum":126033070},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":126033070},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt1","sum":5695266},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt2","sum":120337804},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr_in1","sum":5695266},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2.Rule_in_atom_expr1","sum":120337804},{"parent":"TRule_in_unary_subexpr","rule":"TRule_in_unary_subexpr.Alt_in_unary_subexpr1","sum":126033070},{"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":126033070},{"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":13797310},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token1","sum":13797310},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token3","sum":13797310},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token4","sum":13797310},{"parent":"TRule_integer","rule":"TRule_integer.Token1","sum":2818111025},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind1","sum":56294441},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind2","sum":48839},{"parent":"TRule_integer_or_bind.TAlt1","rule":"TRule_integer_or_bind.TAlt1.Rule_integer1","sum":56294441},{"parent":"TRule_integer_or_bind.TAlt2","rule":"TRule_integer_or_bind.TAlt2.Rule_bind_parameter1","sum":48839},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Block2","sum":25051},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Rule_simple_table_ref1","sum":208016439},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Rule_pure_column_list3","sum":25051},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token1","sum":25051},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token2","sum":25051},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Block1","sum":208016439},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_simple_table_ref3","sum":208016439},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_values_source4","sum":208016439},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Token2","sum":208016439},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt1","sum":207904214},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt5","sum":112224},{"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":207904214},{"parent":"TRule_into_table_stmt.TBlock1.TAlt5","rule":"TRule_into_table_stmt.TBlock1.TAlt5.Token1","sum":112224},{"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":208016439},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Block1","sum":4453941},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Rule_values_source2","sum":208016439},{"parent":"TRule_into_values_source.TAlt1.TBlock1","rule":"TRule_into_values_source.TAlt1.TBlock1.Rule_pure_column_list1","sum":4453941},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Block2","sum":2751646800},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Rule_invoke_expr_tail4","sum":2865255245},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token1","sum":2865255245},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token3","sum":2865255245},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt1","sum":2692693481},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt2","sum":58953319},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Block3","sum":9565798},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_named_expr_list2","sum":2692693481},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_opt_set_quantifier1","sum":2692693481},{"parent":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3","rule":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3.Token1","sum":9565798},{"parent":"TRule_invoke_expr.TBlock2.TAlt2","rule":"TRule_invoke_expr.TBlock2.TAlt2.Token1","sum":58953319},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block1","sum":7082217},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block2","sum":45101859},{"parent":"TRule_invoke_expr_tail.TBlock1","rule":"TRule_invoke_expr_tail.TBlock1.Alt1","sum":7082217},{"parent":"TRule_invoke_expr_tail.TBlock1.TAlt1","rule":"TRule_invoke_expr_tail.TBlock1.TAlt1.Rule_null_treatment1","sum":7082217},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Rule_window_name_or_specification2","sum":45101859},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Token1","sum":45101859},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint1","sum":172608937},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint2","sum":32377040},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Rule_expr2","sum":172608937},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Token1","sum":172608937},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Rule_pure_column_or_named_list2","sum":32377040},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Token1","sum":32377040},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op1","sum":27521},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op2","sum":208029004},{"parent":"TRule_join_op.TAlt1","rule":"TRule_join_op.TAlt1.Token1","sum":27521},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Block2","sum":208029004},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Token3","sum":208029004},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt1","sum":174370818},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt2","sum":30615159},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt3","sum":3043027},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block1","sum":126366173},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block2","sum":293102},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt1","sum":118497224},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt2","sum":1699355},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt3","sum":285361},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt4","sum":5884233},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Block2","sum":19629114},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Token1","sum":118497224},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2.Token1","sum":19629114},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Block2","sum":518795},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Token1","sum":1699355},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2.Token1","sum":518795},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3.Token1","sum":285361},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4.Token1","sum":5884233},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2.Token1","sum":293102},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt2.Token1","sum":30615159},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt3.Token1","sum":3043027},{"parent":"TRule_join_source","rule":"TRule_join_source.Block1","sum":598677},{"parent":"TRule_join_source","rule":"TRule_join_source.Block3","sum":145029172},{"parent":"TRule_join_source","rule":"TRule_join_source.Rule_flatten_source2","sum":841301787},{"parent":"TRule_join_source.TBlock1","rule":"TRule_join_source.TBlock1.Token1","sum":598677},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block2","sum":13957383},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block4","sum":204985977},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_flatten_source3","sum":208056525},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_join_op1","sum":208056525},{"parent":"TRule_join_source.TBlock3.TBlock2","rule":"TRule_join_source.TBlock3.TBlock2.Token1","sum":13957383},{"parent":"TRule_join_source.TBlock3.TBlock4","rule":"TRule_join_source.TBlock3.TBlock4.Rule_join_constraint1","sum":204985977},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr1","sum":5853150},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr2","sum":192353},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr3","sum":318814},{"parent":"TRule_json_api_expr.TAlt1","rule":"TRule_json_api_expr.TAlt1.Rule_json_value1","sum":5853150},{"parent":"TRule_json_api_expr.TAlt2","rule":"TRule_json_api_expr.TAlt2.Rule_json_exists1","sum":192353},{"parent":"TRule_json_api_expr.TAlt3","rule":"TRule_json_api_expr.TAlt3.Rule_json_query1","sum":318814},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler1","sum":8070},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler2","sum":14342},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler3","sum":201249},{"parent":"TRule_json_case_handler.TAlt1","rule":"TRule_json_case_handler.TAlt1.Token1","sum":8070},{"parent":"TRule_json_case_handler.TAlt2","rule":"TRule_json_case_handler.TAlt2.Token1","sum":14342},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Rule_expr2","sum":201249},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Token1","sum":201249},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Block4","sum":20977},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_expr1","sum":6364317},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_jsonpath_spec3","sum":6364317},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Token2","sum":6364317},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Rule_json_variables2","sum":20977},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Token1","sum":20977},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Block4","sum":47},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Rule_json_common_args3","sum":192353},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token1","sum":192353},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token2","sum":192353},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token5","sum":192353},{"parent":"TRule_json_exists.TBlock4","rule":"TRule_json_exists.TBlock4.Rule_json_exists_handler1","sum":47},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token1","sum":47},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token2","sum":47},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token3","sum":47},{"parent":"TRule_json_query","rule":"TRule_json_query.Block4","sum":190849},{"parent":"TRule_json_query","rule":"TRule_json_query.Block5","sum":86},{"parent":"TRule_json_query","rule":"TRule_json_query.Block6","sum":4096},{"parent":"TRule_json_query","rule":"TRule_json_query.Rule_json_common_args3","sum":318814},{"parent":"TRule_json_query","rule":"TRule_json_query.Token1","sum":318814},{"parent":"TRule_json_query","rule":"TRule_json_query.Token2","sum":318814},{"parent":"TRule_json_query","rule":"TRule_json_query.Token7","sum":318814},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Rule_json_query_wrapper1","sum":190849},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Token2","sum":190849},{"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":4096},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Token2","sum":4096},{"parent":"TRule_json_query.TBlock6","rule":"TRule_json_query.TBlock6.Token3","sum":4096},{"parent":"TRule_json_query_handler","rule":"TRule_json_query_handler.Alt_json_query_handler1","sum":1641},{"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":2296},{"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":1641},{"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":2296},{"parent":"TRule_json_query_handler.TAlt3","rule":"TRule_json_query_handler.TAlt3.Token2","sum":2296},{"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":46},{"parent":"TRule_json_query_wrapper","rule":"TRule_json_query_wrapper.Alt_json_query_wrapper2","sum":190803},{"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":46},{"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":166762},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Block3","sum":31743},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Token1","sum":190803},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock2","rule":"TRule_json_query_wrapper.TAlt2.TBlock2.Token1","sum":166762},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock3","rule":"TRule_json_query_wrapper.TAlt2.TBlock3.Token1","sum":31743},{"parent":"TRule_json_value","rule":"TRule_json_value.Block4","sum":1332940},{"parent":"TRule_json_value","rule":"TRule_json_value.Block5","sum":203540},{"parent":"TRule_json_value","rule":"TRule_json_value.Rule_json_common_args3","sum":5853150},{"parent":"TRule_json_value","rule":"TRule_json_value.Token1","sum":5853150},{"parent":"TRule_json_value","rule":"TRule_json_value.Token2","sum":5853150},{"parent":"TRule_json_value","rule":"TRule_json_value.Token6","sum":5853150},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Rule_type_name_simple2","sum":1332940},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Token1","sum":1332940},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Rule_json_case_handler1","sum":223661},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token2","sum":223661},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token3","sum":223661},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_expr1","sum":20984},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_json_variable_name3","sum":20984},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Token2","sum":20984},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name1","sum":18797},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name2","sum":2187},{"parent":"TRule_json_variable_name.TAlt1","rule":"TRule_json_variable_name.TAlt1.Rule_id_expr1","sum":18797},{"parent":"TRule_json_variable_name.TAlt2","rule":"TRule_json_variable_name.TAlt2.Token1","sum":2187},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Block2","sum":7},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Rule_json_variable1","sum":20977},{"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":6364317},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Rule_expr2","sum":172134618},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token1","sum":172134618},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token3","sum":172134618},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword1","sum":478913202},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword2","sum":33222498},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword3","sum":486056},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword4","sum":9186563},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword5","sum":772458},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword6","sum":23762},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword7","sum":3881437},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword8","sum":2499284},{"parent":"TRule_keyword.TAlt1","rule":"TRule_keyword.TAlt1.Rule_keyword_compat1","sum":478913202},{"parent":"TRule_keyword.TAlt2","rule":"TRule_keyword.TAlt2.Rule_keyword_expr_uncompat1","sum":33222498},{"parent":"TRule_keyword.TAlt3","rule":"TRule_keyword.TAlt3.Rule_keyword_table_uncompat1","sum":486056},{"parent":"TRule_keyword.TAlt4","rule":"TRule_keyword.TAlt4.Rule_keyword_select_uncompat1","sum":9186563},{"parent":"TRule_keyword.TAlt5","rule":"TRule_keyword.TAlt5.Rule_keyword_alter_uncompat1","sum":772458},{"parent":"TRule_keyword.TAlt6","rule":"TRule_keyword.TAlt6.Rule_keyword_in_uncompat1","sum":23762},{"parent":"TRule_keyword.TAlt7","rule":"TRule_keyword.TAlt7.Rule_keyword_window_uncompat1","sum":3881437},{"parent":"TRule_keyword.TAlt8","rule":"TRule_keyword.TAlt8.Rule_keyword_hint_uncompat1","sum":2499284},{"parent":"TRule_keyword_alter_uncompat","rule":"TRule_keyword_alter_uncompat.Token1","sum":1220234},{"parent":"TRule_keyword_as_compat","rule":"TRule_keyword_as_compat.Token1","sum":2434},{"parent":"TRule_keyword_compat","rule":"TRule_keyword_compat.Token1","sum":798075950},{"parent":"TRule_keyword_expr_uncompat","rule":"TRule_keyword_expr_uncompat.Token1","sum":33492900},{"parent":"TRule_keyword_hint_uncompat","rule":"TRule_keyword_hint_uncompat.Token1","sum":2681707},{"parent":"TRule_keyword_in_uncompat","rule":"TRule_keyword_in_uncompat.Token1","sum":23766},{"parent":"TRule_keyword_select_uncompat","rule":"TRule_keyword_select_uncompat.Token1","sum":9206889},{"parent":"TRule_keyword_table_uncompat","rule":"TRule_keyword_table_uncompat.Token1","sum":486056},{"parent":"TRule_keyword_window_uncompat","rule":"TRule_keyword_window_uncompat.Token1","sum":39025081},{"parent":"TRule_lambda","rule":"TRule_lambda.Block2","sum":207932792},{"parent":"TRule_lambda","rule":"TRule_lambda.Rule_smart_parenthesis1","sum":510536515},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Block2","sum":207932792},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Token1","sum":207932792},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt1","sum":42426124},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt2","sum":165506668},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Rule_expr2","sum":42426124},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token1","sum":42426124},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token3","sum":42426124},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Rule_lambda_body2","sum":165506668},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token1","sum":165506668},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token3","sum":165506668},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block1","sum":160},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block2","sum":34592028},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block5","sum":87262227},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Rule_expr4","sum":165506668},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Token3","sum":165506668},{"parent":"TRule_lambda_body.TBlock1","rule":"TRule_lambda_body.TBlock1.Token1","sum":160},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Block2","sum":63344785},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Rule_lambda_stmt1","sum":63344785},{"parent":"TRule_lambda_body.TBlock2.TBlock2","rule":"TRule_lambda_body.TBlock2.TBlock2.Token1","sum":63345921},{"parent":"TRule_lambda_body.TBlock5","rule":"TRule_lambda_body.TBlock5.Token1","sum":87271135},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt1","sum":63342259},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt2","sum":2526},{"parent":"TRule_lambda_stmt.TAlt1","rule":"TRule_lambda_stmt.TAlt1.Rule_named_nodes_stmt1","sum":63342259},{"parent":"TRule_lambda_stmt.TAlt2","rule":"TRule_lambda_stmt.TAlt2.Rule_import_stmt1","sum":2526},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block2","sum":35129262},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block3","sum":2261896},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token1","sum":40793166},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token4","sum":40793166},{"parent":"TRule_list_literal.TBlock2","rule":"TRule_list_literal.TBlock2.Rule_expr_list1","sum":35129262},{"parent":"TRule_list_literal.TBlock3","rule":"TRule_list_literal.TBlock3.Token1","sum":2261896},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value1","sum":2761816583},{"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":108407914},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value3","sum":2114359138},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value5","sum":79086090},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value9","sum":103662442},{"parent":"TRule_literal_value.TAlt1","rule":"TRule_literal_value.TAlt1.Rule_integer1","sum":2761816583},{"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":108407914},{"parent":"TRule_literal_value.TAlt3","rule":"TRule_literal_value.TAlt3.Token1","sum":2114359138},{"parent":"TRule_literal_value.TAlt5","rule":"TRule_literal_value.TAlt5.Token1","sum":79086090},{"parent":"TRule_literal_value.TAlt9","rule":"TRule_literal_value.TAlt9.Rule_bool_value1","sum":103662442},{"parent":"TRule_match_op","rule":"TRule_match_op.Token1","sum":52031343},{"parent":"TRule_module_path","rule":"TRule_module_path.Block3","sum":356512},{"parent":"TRule_module_path","rule":"TRule_module_path.Rule_an_id2","sum":16448365},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Rule_an_id2","sum":1062672},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Token1","sum":1062672},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Block2","sum":114586727},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Rule_con_subexpr1","sum":15746417816},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Rule_con_subexpr2","sum":228184806},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Token1","sum":228184806},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Block2","sum":124116},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Rule_bind_parameter1","sum":37659580},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Rule_bind_parameter2","sum":124116},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Token1","sum":124116},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Block2","sum":6985500},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Rule_named_bind_parameter1","sum":16448365},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Rule_named_bind_parameter2","sum":21211215},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Token1","sum":21211215},{"parent":"TRule_named_column","rule":"TRule_named_column.Block2","sum":7134215},{"parent":"TRule_named_column","rule":"TRule_named_column.Rule_column_name1","sum":21251064},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Rule_an_id2","sum":7134215},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Token1","sum":7134215},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Block2","sum":155643888},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Rule_expr1","sum":7192172357},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Rule_an_id_or_type2","sum":155643888},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Token1","sum":155643888},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Block2","sum":1177219617},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Rule_named_expr1","sum":3225305268},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Rule_named_expr2","sum":3473260447},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Token1","sum":3473260447},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Block3","sum":1002566900},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Rule_bind_parameter_list1","sum":1002566900},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Token2","sum":1002566900},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt1","sum":673827946},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt2","sum":328738954},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt1","rule":"TRule_named_nodes_stmt.TBlock3.TAlt1.Rule_expr1","sum":673827946},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt2","rule":"TRule_named_nodes_stmt.TBlock3.TAlt2.Rule_subselect_stmt1","sum":328738954},{"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":441207217},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block4","sum":402903},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Rule_single_source1","sum":1054906953},{"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":441207217},{"parent":"TRule_named_single_source.TBlock3","rule":"TRule_named_single_source.TBlock3.Block2","sum":159399},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt1","sum":439152846},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt2","sum":2054371},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Rule_an_id2","sum":439152846},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Token1","sum":439152846},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt2","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt2.Rule_an_id_as_compat1","sum":2054371},{"parent":"TRule_named_single_source.TBlock3.TBlock2","rule":"TRule_named_single_source.TBlock3.TBlock2.Rule_pure_column_list1","sum":159399},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt1","sum":75042},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt2","sum":327861},{"parent":"TRule_named_single_source.TBlock4.TAlt1","rule":"TRule_named_single_source.TBlock4.TAlt1.Rule_sample_clause1","sum":75042},{"parent":"TRule_named_single_source.TBlock4.TAlt2","rule":"TRule_named_single_source.TBlock4.TAlt2.Rule_tablesample_clause1","sum":327861},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block2","sum":9136767},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block3","sum":112324076},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Rule_bit_subexpr1","sum":15412508761},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Block1","sum":9206438},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Rule_bit_subexpr2","sum":9206438},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt1","sum":8104033},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt2","sum":52838},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt3","sum":464},{"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":753087},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt6","sum":135478},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt7","sum":160515},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1.Token1","sum":8104033},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2.Rule_shift_right1","sum":52838},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt3","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt3.Token1","sum":464},{"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":753087},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6.Token1","sum":135478},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7.Token1","sum":160515},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt1","sum":108571603},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt2","sum":3752473},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_double_question1","sum":108571603},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_neq_subexpr2","sum":108571603},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2","rule":"TRule_neq_subexpr.TBlock3.TAlt2.Block1","sum":3752473},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1","rule":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1.Token1","sum":3764021},{"parent":"TRule_new_window_name","rule":"TRule_new_window_name.Rule_window_name1","sum":14110566},{"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":7082172},{"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":7082172},{"parent":"TRule_null_treatment.TAlt2","rule":"TRule_null_treatment.TAlt2.Token2","sum":7082172},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Block1","sum":5285194},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Rule_id_or_at2","sum":133548148},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Rule_cluster_expr1","sum":5285194},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Token2","sum":5285194},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Block2","sum":27466},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Rule_bind_parameter1","sum":21282715},{"parent":"TRule_opt_bind_parameter.TBlock2","rule":"TRule_opt_bind_parameter.TBlock2.Token1","sum":27466},{"parent":"TRule_opt_id_prefix","rule":"TRule_opt_id_prefix.Block1","sum":82491107},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Rule_an_id1","sum":82491107},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Token2","sum":82491107},{"parent":"TRule_opt_id_prefix_or_type","rule":"TRule_opt_id_prefix_or_type.Block1","sum":771372817},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Rule_an_id_or_type1","sum":771372817},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Token2","sum":771372817},{"parent":"TRule_opt_set_quantifier","rule":"TRule_opt_set_quantifier.Block1","sum":70044287},{"parent":"TRule_opt_set_quantifier.TBlock1","rule":"TRule_opt_set_quantifier.TBlock1.Token1","sum":70044287},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Block2","sum":276276983},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Rule_and_subexpr1","sum":13776458637},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Rule_and_subexpr2","sum":469698642},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Token1","sum":469698642},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Rule_sort_specification_list3","sum":107098966},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token1","sum":107098966},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token2","sum":107098966},{"parent":"TRule_ordinary_grouping_set","rule":"TRule_ordinary_grouping_set.Rule_named_expr1","sum":300694524},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Block2","sum":199805},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Rule_ordinary_grouping_set1","sum":339701},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Rule_ordinary_grouping_set2","sum":432511},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Token1","sum":432511},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Block4","sum":785793323},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_an_id3","sum":889708160},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_opt_id_prefix_or_type2","sum":889708160},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Token1","sum":889708160},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt1","sum":738017904},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt2","sum":47775419},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Rule_pragma_value2","sum":738017904},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Token1","sum":738017904},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Block3","sum":17591907},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Rule_pragma_value2","sum":47775419},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token1","sum":47775419},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token4","sum":47775419},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Rule_pragma_value2","sum":18396599},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Token1","sum":18396599},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value2","sum":255302},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value3","sum":791603349},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value5","sum":12331271},{"parent":"TRule_pragma_value.TAlt2","rule":"TRule_pragma_value.TAlt2.Rule_id1","sum":255302},{"parent":"TRule_pragma_value.TAlt3","rule":"TRule_pragma_value.TAlt3.Token1","sum":791603349},{"parent":"TRule_pragma_value.TAlt5","rule":"TRule_pragma_value.TAlt5.Rule_bind_parameter1","sum":12331271},{"parent":"TRule_process_core","rule":"TRule_process_core.Block4","sum":1132},{"parent":"TRule_process_core","rule":"TRule_process_core.Block5","sum":1901404},{"parent":"TRule_process_core","rule":"TRule_process_core.Rule_named_single_source3","sum":4511331},{"parent":"TRule_process_core","rule":"TRule_process_core.Token1","sum":4511331},{"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":4479},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Block7","sum":9},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Rule_using_call_expr2","sum":1901404},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Token1","sum":1901404},{"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":4479},{"parent":"TRule_process_core.TBlock5.TBlock5","rule":"TRule_process_core.TBlock5.TBlock5.Token1","sum":4479},{"parent":"TRule_process_core.TBlock5.TBlock7","rule":"TRule_process_core.TBlock5.TBlock7.Rule_order_by_clause2","sum":9},{"parent":"TRule_process_core.TBlock5.TBlock7","rule":"TRule_process_core.TBlock5.TBlock7.Token1","sum":9},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Block3","sum":3902316},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Rule_an_id2","sum":4638391},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token1","sum":4638391},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token4","sum":4638391},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Rule_an_id2","sum":34537553},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Token1","sum":34537553},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named1","sum":6570850},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named2","sum":423525984},{"parent":"TRule_pure_column_or_named.TAlt1","rule":"TRule_pure_column_or_named.TAlt1.Rule_bind_parameter1","sum":6570850},{"parent":"TRule_pure_column_or_named.TAlt2","rule":"TRule_pure_column_or_named.TAlt2.Rule_an_id1","sum":423525984},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Block3","sum":11707260},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Rule_pure_column_or_named2","sum":32377040},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token1","sum":32377040},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token4","sum":32377040},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Rule_pure_column_or_named2","sum":21738897},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Token1","sum":21738897},{"parent":"TRule_real","rule":"TRule_real.Token1","sum":108407914},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block11","sum":9015},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block13","sum":25920},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block3","sum":113733},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block4","sum":295368},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block8","sum":305499},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_column_list6","sum":838466},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_named_single_source2","sum":838466},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_using_call_expr9","sum":838466},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token1","sum":838466},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token5","sum":838466},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token7","sum":838466},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Rule_expr2","sum":9015},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Token1","sum":9015},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Rule_order_by_clause2","sum":25920},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Token1","sum":25920},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Rule_named_single_source2","sum":197711},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Token1","sum":197711},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Rule_sort_specification_list2","sum":295368},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Token1","sum":295368},{"parent":"TRule_reduce_core.TBlock8","rule":"TRule_reduce_core.TBlock8.Token1","sum":305499},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Rule_expr3","sum":9174},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token1","sum":9174},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token2","sum":9174},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token4","sum":9174},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column1","sum":249019740},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column2","sum":3434636821},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Rule_opt_id_prefix1","sum":249019740},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Token2","sum":249019740},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Block2","sum":1980143194},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Rule_expr1","sum":3434636821},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt1","sum":1979279892},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt2","sum":863302},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Rule_an_id_or_type2","sum":1979279892},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Token1","sum":1979279892},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt2","rule":"TRule_result_column.TAlt2.TBlock2.TAlt2.Rule_an_id_as_compat1","sum":863302},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Rule_ordinary_grouping_set_list3","sum":61937},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token1","sum":61937},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token2","sum":61937},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token4","sum":61937},{"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":75042},{"parent":"TRule_sample_clause","rule":"TRule_sample_clause.Token1","sum":75042},{"parent":"TRule_sampling_mode","rule":"TRule_sampling_mode.Token1","sum":327861},{"parent":"TRule_search_condition","rule":"TRule_search_condition.Rule_expr1","sum":1},{"parent":"TRule_select_core","rule":"TRule_select_core.Block1","sum":10686557},{"parent":"TRule_select_core","rule":"TRule_select_core.Block10","sum":340046928},{"parent":"TRule_select_core","rule":"TRule_select_core.Block11","sum":137629459},{"parent":"TRule_select_core","rule":"TRule_select_core.Block12","sum":12099314},{"parent":"TRule_select_core","rule":"TRule_select_core.Block13","sum":13537900},{"parent":"TRule_select_core","rule":"TRule_select_core.Block14","sum":88178773},{"parent":"TRule_select_core","rule":"TRule_select_core.Block3","sum":117},{"parent":"TRule_select_core","rule":"TRule_select_core.Block6","sum":528240331},{"parent":"TRule_select_core","rule":"TRule_select_core.Block7","sum":93118064},{"parent":"TRule_select_core","rule":"TRule_select_core.Block8","sum":24720066},{"parent":"TRule_select_core","rule":"TRule_select_core.Block9","sum":830615230},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_opt_set_quantifier4","sum":900766423},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_result_column5","sum":900766423},{"parent":"TRule_select_core","rule":"TRule_select_core.Token2","sum":900766423},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Rule_join_source2","sum":10686557},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Token1","sum":10686557},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Rule_expr2","sum":340046928},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Token1","sum":340046928},{"parent":"TRule_select_core.TBlock11","rule":"TRule_select_core.TBlock11.Rule_group_by_clause1","sum":137629459},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Rule_expr2","sum":12099314},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Token1","sum":12099314},{"parent":"TRule_select_core.TBlock13","rule":"TRule_select_core.TBlock13.Rule_window_clause1","sum":13537900},{"parent":"TRule_select_core.TBlock14","rule":"TRule_select_core.TBlock14.Rule_ext_order_by_clause1","sum":88178773},{"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":2782890138},{"parent":"TRule_select_core.TBlock6","rule":"TRule_select_core.TBlock6.Token1","sum":2782890138},{"parent":"TRule_select_core.TBlock7","rule":"TRule_select_core.TBlock7.Token1","sum":93118064},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Block2","sum":3},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Rule_without_column_list3","sum":24720066},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Token1","sum":24720066},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token1","sum":3},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token2","sum":3},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Rule_join_source2","sum":830615230},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Token1","sum":830615230},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block1","sum":915353},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block2","sum":906116220},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block3","sum":2880950},{"parent":"TRule_select_kind.TBlock1","rule":"TRule_select_kind.TBlock1.Token1","sum":915353},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt1","sum":4511331},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt2","sum":838466},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt3","sum":900766423},{"parent":"TRule_select_kind.TBlock2.TAlt1","rule":"TRule_select_kind.TBlock2.TAlt1.Rule_process_core1","sum":4511331},{"parent":"TRule_select_kind.TBlock2.TAlt2","rule":"TRule_select_kind.TBlock2.TAlt2.Rule_reduce_core1","sum":838466},{"parent":"TRule_select_kind.TBlock2.TAlt3","rule":"TRule_select_kind.TBlock2.TAlt3.Rule_select_core1","sum":900766423},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Rule_pure_column_or_named3","sum":2880950},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token1","sum":2880950},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token2","sum":2880950},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis1","sum":775950850},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis2","sum":7927813},{"parent":"TRule_select_kind_parenthesis.TAlt1","rule":"TRule_select_kind_parenthesis.TAlt1.Rule_select_kind_partial1","sum":775950850},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Rule_select_kind_partial2","sum":7927813},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token1","sum":7927813},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token3","sum":7927813},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Block2","sum":30562305},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Rule_select_kind1","sum":906116220},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Block3","sum":4496625},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Rule_expr2","sum":30562305},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Token1","sum":30562305},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Rule_expr2","sum":4496625},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Token1","sum":4496625},{"parent":"TRule_select_op","rule":"TRule_select_op.Alt_select_op1","sum":63830507},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Block2","sum":62947922},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Token1","sum":63830507},{"parent":"TRule_select_op.TAlt1.TBlock2","rule":"TRule_select_op.TAlt1.TBlock2.Token1","sum":62947922},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Block2","sum":33216727},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Rule_select_kind_parenthesis1","sum":720048156},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":56908673},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_op1","sum":56908673},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Block2","sum":4274079},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Rule_select_kind_partial1","sum":122237557},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":6921834},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_op1","sum":6921834},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token1","sum":52838},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token2","sum":52838},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Block2","sum":142445588},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Rule_simple_table_ref_core1","sum":210577516},{"parent":"TRule_simple_table_ref.TBlock2","rule":"TRule_simple_table_ref.TBlock2.Rule_table_hints1","sum":142445588},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core1","sum":133548148},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core2","sum":77029368},{"parent":"TRule_simple_table_ref_core.TAlt1","rule":"TRule_simple_table_ref_core.TAlt1.Rule_object_ref1","sum":133548148},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Block1","sum":71573},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Rule_bind_parameter2","sum":77029368},{"parent":"TRule_simple_table_ref_core.TAlt2.TBlock1","rule":"TRule_simple_table_ref_core.TAlt2.TBlock1.Token1","sum":71573},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source1","sum":950258780},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source2","sum":104480181},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source3","sum":167992},{"parent":"TRule_single_source.TAlt1","rule":"TRule_single_source.TAlt1.Rule_table_ref1","sum":950258780},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Rule_select_stmt2","sum":104480181},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token1","sum":104480181},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token3","sum":104480181},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Rule_values_stmt2","sum":167992},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token1","sum":167992},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token3","sum":167992},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block2","sum":506638603},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block3","sum":2604905},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token1","sum":510536515},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token4","sum":510536515},{"parent":"TRule_smart_parenthesis.TBlock2","rule":"TRule_smart_parenthesis.TBlock2.Rule_named_expr_list1","sum":506638603},{"parent":"TRule_smart_parenthesis.TBlock3","rule":"TRule_smart_parenthesis.TBlock3.Token1","sum":2604905},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Block2","sum":32972666},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Rule_expr1","sum":180557811},{"parent":"TRule_sort_specification.TBlock2","rule":"TRule_sort_specification.TBlock2.Token1","sum":32972666},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Block2","sum":39667162},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Rule_sort_specification1","sum":107394334},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Rule_sort_specification2","sum":73163477},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Token1","sum":73163477},{"parent":"TRule_sql_query","rule":"TRule_sql_query.Alt_sql_query1","sum":318387605},{"parent":"TRule_sql_query.TAlt1","rule":"TRule_sql_query.TAlt1.Rule_sql_stmt_list1","sum":318387605},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Block1","sum":51},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Rule_sql_stmt_core2","sum":2704776586},{"parent":"TRule_sql_stmt.TBlock1","rule":"TRule_sql_stmt.TBlock1.Token1","sum":51},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core1","sum":889708160},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core12","sum":154773177},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core13","sum":16445839},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core17","sum":4690245},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core18","sum":22146478},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core19","sum":8529552},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core2","sum":192372863},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core20","sum":6943272},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core21","sum":329},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core3","sum":939224641},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core4","sum":137},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core5","sum":2560940},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core6","sum":327978948},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core7","sum":208016439},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core8","sum":12985670},{"parent":"TRule_sql_stmt_core.TAlt1","rule":"TRule_sql_stmt_core.TAlt1.Rule_pragma_stmt1","sum":889708160},{"parent":"TRule_sql_stmt_core.TAlt12","rule":"TRule_sql_stmt_core.TAlt12.Rule_declare_stmt1","sum":154773177},{"parent":"TRule_sql_stmt_core.TAlt13","rule":"TRule_sql_stmt_core.TAlt13.Rule_import_stmt1","sum":16445839},{"parent":"TRule_sql_stmt_core.TAlt17","rule":"TRule_sql_stmt_core.TAlt17.Rule_do_stmt1","sum":4690245},{"parent":"TRule_sql_stmt_core.TAlt18","rule":"TRule_sql_stmt_core.TAlt18.Rule_define_action_or_subquery_stmt1","sum":22146478},{"parent":"TRule_sql_stmt_core.TAlt19","rule":"TRule_sql_stmt_core.TAlt19.Rule_if_stmt1","sum":8529552},{"parent":"TRule_sql_stmt_core.TAlt2","rule":"TRule_sql_stmt_core.TAlt2.Rule_select_stmt1","sum":192372863},{"parent":"TRule_sql_stmt_core.TAlt20","rule":"TRule_sql_stmt_core.TAlt20.Rule_for_stmt1","sum":6943272},{"parent":"TRule_sql_stmt_core.TAlt21","rule":"TRule_sql_stmt_core.TAlt21.Rule_values_stmt1","sum":329},{"parent":"TRule_sql_stmt_core.TAlt3","rule":"TRule_sql_stmt_core.TAlt3.Rule_named_nodes_stmt1","sum":939224641},{"parent":"TRule_sql_stmt_core.TAlt4","rule":"TRule_sql_stmt_core.TAlt4.Rule_create_table_stmt1","sum":137},{"parent":"TRule_sql_stmt_core.TAlt5","rule":"TRule_sql_stmt_core.TAlt5.Rule_drop_table_stmt1","sum":2560940},{"parent":"TRule_sql_stmt_core.TAlt6","rule":"TRule_sql_stmt_core.TAlt6.Rule_use_stmt1","sum":327978948},{"parent":"TRule_sql_stmt_core.TAlt7","rule":"TRule_sql_stmt_core.TAlt7.Rule_into_table_stmt1","sum":208016439},{"parent":"TRule_sql_stmt_core.TAlt8","rule":"TRule_sql_stmt_core.TAlt8.Rule_commit_stmt1","sum":12985670},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block1","sum":442},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block3","sum":312962614},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block4","sum":194275107},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Rule_sql_stmt2","sum":318387605},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Token5","sum":318387605},{"parent":"TRule_sql_stmt_list.TBlock1","rule":"TRule_sql_stmt_list.TBlock1.Token1","sum":465},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Block1","sum":2386388981},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Rule_sql_stmt2","sum":2386388981},{"parent":"TRule_sql_stmt_list.TBlock3.TBlock1","rule":"TRule_sql_stmt_list.TBlock3.TBlock1.Token1","sum":2395451248},{"parent":"TRule_sql_stmt_list.TBlock4","rule":"TRule_sql_stmt_list.TBlock4.Token1","sum":196953420},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_or_bind3","sum":114249217},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_tag1","sum":114249217},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Token2","sum":114249217},{"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":14291717},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Block3","sum":2496630},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token1","sum":14420408},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token4","sum":14420408},{"parent":"TRule_struct_literal.TBlock2","rule":"TRule_struct_literal.TBlock2.Rule_expr_struct_list1","sum":14291717},{"parent":"TRule_struct_literal.TBlock3","rule":"TRule_struct_literal.TBlock3.Token1","sum":2496630},{"parent":"TRule_subselect_stmt","rule":"TRule_subselect_stmt.Block1","sum":328738954},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt1","sum":206501397},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt2","sum":122237557},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Rule_select_stmt2","sum":206501397},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token1","sum":206501397},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token3","sum":206501397},{"parent":"TRule_subselect_stmt.TBlock1.TAlt2","rule":"TRule_subselect_stmt.TBlock1.TAlt2.Rule_select_unparenthesized_stmt1","sum":122237557},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block1","sum":115539},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block3","sum":260484},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Rule_named_expr2","sum":192912118},{"parent":"TRule_table_arg.TBlock1","rule":"TRule_table_arg.TBlock1.Token1","sum":115539},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Rule_view_name2","sum":260484},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Token1","sum":260484},{"parent":"TRule_table_constraint","rule":"TRule_table_constraint.Alt_table_constraint2","sum":136},{"parent":"TRule_table_constraint","rule":"TRule_table_constraint.Alt_table_constraint3","sum":117},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Block5","sum":115},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Rule_an_id4","sum":136},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token1","sum":136},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token2","sum":136},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token3","sum":136},{"parent":"TRule_table_constraint.TAlt2","rule":"TRule_table_constraint.TAlt2.Token6","sum":136},{"parent":"TRule_table_constraint.TAlt2.TBlock5","rule":"TRule_table_constraint.TAlt2.TBlock5.Rule_an_id2","sum":289},{"parent":"TRule_table_constraint.TAlt2.TBlock5","rule":"TRule_table_constraint.TAlt2.TBlock5.Token1","sum":289},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Rule_column_order_by_specification4","sum":117},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token1","sum":117},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token2","sum":117},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token3","sum":117},{"parent":"TRule_table_constraint.TAlt3","rule":"TRule_table_constraint.TAlt3.Token6","sum":117},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint1","sum":153546171},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint2","sum":18976651},{"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":10469920},{"parent":"TRule_table_hint.TAlt1","rule":"TRule_table_hint.TAlt1.Rule_an_id_hint1","sum":153546171},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Block2","sum":10469920},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Token1","sum":10469920},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.Alt1","sum":10469920},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1.Rule_type_name_tag1","sum":10469920},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Block2","sum":1518},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Rule_type_name_or_bind3","sum":18976651},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Token1","sum":18976651},{"parent":"TRule_table_hint.TAlt2.TBlock2","rule":"TRule_table_hint.TAlt2.TBlock2.Token1","sum":1518},{"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":162142057},{"parent":"TRule_table_hints","rule":"TRule_table_hints.Token1","sum":162142057},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt1","sum":151892471},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt2","sum":10249586},{"parent":"TRule_table_hints.TBlock2.TAlt1","rule":"TRule_table_hints.TBlock2.TAlt1.Rule_table_hint1","sum":151892471},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Block3","sum":9986448},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Rule_table_hint2","sum":10249586},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token1","sum":10249586},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token4","sum":10249586},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Rule_table_hint2","sum":10380777},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Token1","sum":10380777},{"parent":"TRule_table_key","rule":"TRule_table_key.Block2","sum":862367},{"parent":"TRule_table_key","rule":"TRule_table_key.Rule_id_table_or_type1","sum":330502970},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Rule_view_name2","sum":862367},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Token1","sum":862367},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block1","sum":39835805},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block2","sum":5991149},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block3","sum":950258780},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block4","sum":19696469},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Rule_cluster_expr1","sum":39835805},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Token2","sum":39835805},{"parent":"TRule_table_ref.TBlock2","rule":"TRule_table_ref.TBlock2.Token1","sum":5991149},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt1","sum":330502970},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt2","sum":96096575},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt3","sum":523659235},{"parent":"TRule_table_ref.TBlock3.TAlt1","rule":"TRule_table_ref.TBlock3.TAlt1.Rule_table_key1","sum":330502970},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Block3","sum":96096550},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Rule_an_id_expr1","sum":96096575},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token2","sum":96096575},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token4","sum":96096575},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block2","sum":49748295},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block3","sum":354064},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Rule_table_arg1","sum":96096550},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Rule_table_arg2","sum":96815568},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Token1","sum":96815568},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3.Token1","sum":354064},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block2","sum":22139268},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block3","sum":175129},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Rule_bind_parameter1","sum":523659235},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Block2","sum":15792195},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token1","sum":22139268},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token3","sum":22139268},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2.Rule_expr_list1","sum":15792195},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Rule_view_name2","sum":175129},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Token1","sum":175129},{"parent":"TRule_table_ref.TBlock4","rule":"TRule_table_ref.TBlock4.Rule_table_hints1","sum":19696469},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Block6","sum":9174},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_expr4","sum":327861},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_sampling_mode2","sum":327861},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token1","sum":327861},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token3","sum":327861},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token5","sum":327861},{"parent":"TRule_tablesample_clause.TBlock6","rule":"TRule_tablesample_clause.TBlock6.Rule_repeatable_clause1","sum":9174},{"parent":"TRule_type_id","rule":"TRule_type_id.Token1","sum":11605036},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name1","sum":89143008},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name2","sum":701067436},{"parent":"TRule_type_name.TAlt1","rule":"TRule_type_name.TAlt1.Rule_type_name_composite1","sum":89143008},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block1","sum":701067436},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block2","sum":73831696},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt1","sum":28171640},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt2","sum":672895796},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt1","rule":"TRule_type_name.TAlt2.TBlock1.TAlt1.Rule_type_name_decimal1","sum":28171640},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt2","rule":"TRule_type_name.TAlt2.TBlock1.TAlt2.Rule_type_name_simple1","sum":672895796},{"parent":"TRule_type_name.TAlt2.TBlock2","rule":"TRule_type_name.TAlt2.TBlock2.Token1","sum":73832709},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block4","sum":9720740},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block5","sum":215778},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block6","sum":10621},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Rule_type_name_or_bind9","sum":10047579},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token1","sum":10047579},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token10","sum":10047579},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token2","sum":10047579},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token3","sum":10047579},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token7","sum":10047579},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token8","sum":10047579},{"parent":"TRule_type_name_callable.TBlock4","rule":"TRule_type_name_callable.TBlock4.Rule_callable_arg_list1","sum":9720740},{"parent":"TRule_type_name_callable.TBlock5","rule":"TRule_type_name_callable.TBlock5.Token1","sum":215778},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Rule_callable_arg_list2","sum":10621},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token1","sum":10621},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token3","sum":10621},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block1","sum":106459710},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block2","sum":4232015},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt1","sum":33241727},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt10","sum":19606},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt11","sum":461582},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt12","sum":8101},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt13","sum":10047579},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt2","sum":2141941},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt3","sum":26667991},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt4","sum":134576},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt5","sum":25611693},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt6","sum":1511517},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt8","sum":6600605},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt9","sum":12792},{"parent":"TRule_type_name_composite.TBlock1.TAlt1","rule":"TRule_type_name_composite.TBlock1.TAlt1.Rule_type_name_optional1","sum":33241727},{"parent":"TRule_type_name_composite.TBlock1.TAlt10","rule":"TRule_type_name_composite.TBlock1.TAlt10.Rule_type_name_enum1","sum":19606},{"parent":"TRule_type_name_composite.TBlock1.TAlt11","rule":"TRule_type_name_composite.TBlock1.TAlt11.Rule_type_name_resource1","sum":461582},{"parent":"TRule_type_name_composite.TBlock1.TAlt12","rule":"TRule_type_name_composite.TBlock1.TAlt12.Rule_type_name_tagged1","sum":8101},{"parent":"TRule_type_name_composite.TBlock1.TAlt13","rule":"TRule_type_name_composite.TBlock1.TAlt13.Rule_type_name_callable1","sum":10047579},{"parent":"TRule_type_name_composite.TBlock1.TAlt2","rule":"TRule_type_name_composite.TBlock1.TAlt2.Rule_type_name_tuple1","sum":2141941},{"parent":"TRule_type_name_composite.TBlock1.TAlt3","rule":"TRule_type_name_composite.TBlock1.TAlt3.Rule_type_name_struct1","sum":26667991},{"parent":"TRule_type_name_composite.TBlock1.TAlt4","rule":"TRule_type_name_composite.TBlock1.TAlt4.Rule_type_name_variant1","sum":134576},{"parent":"TRule_type_name_composite.TBlock1.TAlt5","rule":"TRule_type_name_composite.TBlock1.TAlt5.Rule_type_name_list1","sum":25611693},{"parent":"TRule_type_name_composite.TBlock1.TAlt6","rule":"TRule_type_name_composite.TBlock1.TAlt6.Rule_type_name_stream1","sum":1511517},{"parent":"TRule_type_name_composite.TBlock1.TAlt8","rule":"TRule_type_name_composite.TBlock1.TAlt8.Rule_type_name_dict1","sum":6600605},{"parent":"TRule_type_name_composite.TBlock1.TAlt9","rule":"TRule_type_name_composite.TBlock1.TAlt9.Rule_type_name_set1","sum":12792},{"parent":"TRule_type_name_composite.TBlock2","rule":"TRule_type_name_composite.TBlock2.Token1","sum":4232018},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind3","sum":28171640},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind5","sum":28171640},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token1","sum":28171640},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token2","sum":28171640},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token4","sum":28171640},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token6","sum":28171640},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind3","sum":6600605},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind5","sum":6600605},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token1","sum":6600605},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token2","sum":6600605},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token4","sum":6600605},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token6","sum":6600605},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block4","sum":19361},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block5","sum":379},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Rule_type_name_tag3","sum":19606},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token1","sum":19606},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token2","sum":19606},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token6","sum":19606},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Rule_type_name_tag2","sum":42245},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Token1","sum":42245},{"parent":"TRule_type_name_enum.TBlock5","rule":"TRule_type_name_enum.TBlock5.Token1","sum":379},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Rule_type_name_or_bind3","sum":25611693},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token1","sum":25611693},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token2","sum":25611693},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token4","sum":25611693},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Rule_type_name_or_bind3","sum":33241727},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token1","sum":33241727},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token2","sum":33241727},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token4","sum":33241727},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind1","sum":635437267},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind2","sum":2641538},{"parent":"TRule_type_name_or_bind.TAlt1","rule":"TRule_type_name_or_bind.TAlt1.Rule_type_name1","sum":635437267},{"parent":"TRule_type_name_or_bind.TAlt2","rule":"TRule_type_name_or_bind.TAlt2.Rule_bind_parameter1","sum":2641538},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Rule_type_name_tag3","sum":461582},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token1","sum":461582},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token2","sum":461582},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token4","sum":461582},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Rule_type_name_or_bind3","sum":12792},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token1","sum":12792},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token2","sum":12792},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token4","sum":12792},{"parent":"TRule_type_name_simple","rule":"TRule_type_name_simple.Rule_an_id_pure1","sum":674730413},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Rule_type_name_or_bind3","sum":1511517},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token1","sum":1511517},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token2","sum":1511517},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token4","sum":1511517},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Block2","sum":26667991},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Token1","sum":26667991},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt1","sum":26665125},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt2","sum":2866},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Block2","sum":26665114},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token1","sum":26665125},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token3","sum":26665125},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block2","sum":20354699},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block3","sum":2043506},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Rule_struct_arg1","sum":26665114},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Rule_struct_arg2","sum":87584103},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":87584103},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":2043506},{"parent":"TRule_type_name_struct.TBlock2.TAlt2","rule":"TRule_type_name_struct.TBlock2.TAlt2.Token1","sum":2866},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag1","sum":104950323},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag2","sum":18081381},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag3","sum":2578002},{"parent":"TRule_type_name_tag.TAlt1","rule":"TRule_type_name_tag.TAlt1.Rule_id1","sum":104950323},{"parent":"TRule_type_name_tag.TAlt2","rule":"TRule_type_name_tag.TAlt2.Token1","sum":18081381},{"parent":"TRule_type_name_tag.TAlt3","rule":"TRule_type_name_tag.TAlt3.Rule_bind_parameter1","sum":2578002},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_or_bind3","sum":8101},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_tag5","sum":8101},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token1","sum":8101},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token2","sum":8101},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token4","sum":8101},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token6","sum":8101},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Block2","sum":2141941},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Token1","sum":2141941},{"parent":"TRule_type_name_tuple.TBlock2","rule":"TRule_type_name_tuple.TBlock2.Alt1","sum":2141931},{"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":2141931},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token1","sum":2141931},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token3","sum":2141931},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block2","sum":2140421},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block3","sum":63802},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Rule_type_name_or_bind1","sum":2141931},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Rule_type_name_or_bind2","sum":3322309},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":3322309},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":63802},{"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":119447},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Block5","sum":98},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Rule_variant_arg3","sum":134576},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token1","sum":134576},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token2","sum":134576},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token6","sum":134576},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Rule_variant_arg2","sum":224717},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Token1","sum":224717},{"parent":"TRule_type_name_variant.TBlock5","rule":"TRule_type_name_variant.TBlock5.Token1","sum":98},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Block1","sum":15968238357},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":15968238357},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt1","sum":7152342653},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt2","sum":8815895704},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr1","sum":7152342653},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt2.Rule_atom_expr1","sum":8815895704},{"parent":"TRule_unary_op","rule":"TRule_unary_op.Token1","sum":87288612},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr1","sum":15968238357},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr2","sum":6364265},{"parent":"TRule_unary_subexpr.TAlt1","rule":"TRule_unary_subexpr.TAlt1.Rule_unary_casual_subexpr1","sum":15968238357},{"parent":"TRule_unary_subexpr.TAlt2","rule":"TRule_unary_subexpr.TAlt2.Rule_json_api_expr1","sum":6364265},{"parent":"TRule_unary_subexpr_suffix","rule":"TRule_unary_subexpr_suffix.Block1","sum":4753125763},{"parent":"TRule_unary_subexpr_suffix.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.Block1","sum":5006032286},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt1","sum":172134618},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt2","sum":2862515375},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt3","sum":1971382293},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1.Rule_key_expr1","sum":172134618},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2.Rule_invoke_expr1","sum":2862515375},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Block2","sum":1971382293},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Token1","sum":1971382293},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt1","sum":3151772},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt2","sum":40160019},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt3","sum":1928070502},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1.Rule_bind_parameter1","sum":3151772},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2.Token1","sum":40160019},{"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":1928070502},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Rule_cluster_expr2","sum":327978948},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Token1","sum":327978948},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Block1","sum":2739870},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Rule_invoke_expr2","sum":2739870},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt1","sum":1509367},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt3","sum":1230503},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type1","sum":1509367},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type3","sum":1509367},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Token2","sum":1509367},{"parent":"TRule_using_call_expr.TBlock1.TAlt3","rule":"TRule_using_call_expr.TBlock1.TAlt3.Rule_bind_parameter1","sum":1230503},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor1","sum":32195},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor2","sum":49134},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor3","sum":79687},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr3","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr5","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr7","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token1","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token2","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token4","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token6","sum":32195},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token8","sum":32195},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr3","sum":49134},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr5","sum":49134},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token1","sum":49134},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token2","sum":49134},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token4","sum":49134},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token6","sum":49134},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr3","sum":79687},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr5","sum":79687},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token1","sum":79687},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token2","sum":79687},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token4","sum":79687},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token6","sum":79687},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source1","sum":1084119},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source2","sum":206932320},{"parent":"TRule_values_source.TAlt1","rule":"TRule_values_source.TAlt1.Rule_values_stmt1","sum":1084119},{"parent":"TRule_values_source.TAlt2","rule":"TRule_values_source.TAlt2.Rule_select_stmt1","sum":206932320},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Rule_expr_list2","sum":9047706},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token1","sum":9047706},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token3","sum":9047706},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Block2","sum":489068},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Rule_values_source_row1","sum":1252440},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Rule_values_source_row2","sum":7795266},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Token1","sum":7795266},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Rule_values_source_row_list2","sum":1252440},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Token1","sum":1252440},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Block1","sum":358860},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Rule_type_name_or_bind2","sum":18256382},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Rule_type_name_tag1","sum":358860},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Token2","sum":358860},{"parent":"TRule_view_name","rule":"TRule_view_name.Alt_view_name1","sum":1297980},{"parent":"TRule_view_name.TAlt1","rule":"TRule_view_name.TAlt1.Rule_an_id1","sum":1297980},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr2","sum":157500144},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr4","sum":157500144},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token1","sum":157500144},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token3","sum":157500144},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Rule_window_definition_list2","sum":13537900},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Token1","sum":13537900},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_new_window_name1","sum":14110566},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_window_specification3","sum":14110566},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Token2","sum":14110566},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Block2","sum":432400},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Rule_window_definition1","sum":13537900},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Rule_window_definition2","sum":572666},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Token1","sum":572666},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound2","sum":2309562},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound4","sum":2309562},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token1","sum":2309562},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token3","sum":2309562},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound1","sum":1317591},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound2","sum":3359164},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token1","sum":1317591},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token2","sum":1317591},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Block1","sum":3359164},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Token2","sum":3359164},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt1","sum":1114703},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt2","sum":2244461},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1.Rule_expr1","sum":1114703},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2.Token1","sum":2244461},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_extent2","sum":2367193},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_units1","sum":2367193},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent1","sum":57631},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent2","sum":2309562},{"parent":"TRule_window_frame_extent.TAlt1","rule":"TRule_window_frame_extent.TAlt1.Rule_window_frame_bound1","sum":57631},{"parent":"TRule_window_frame_extent.TAlt2","rule":"TRule_window_frame_extent.TAlt2.Rule_window_frame_between1","sum":2309562},{"parent":"TRule_window_frame_units","rule":"TRule_window_frame_units.Token1","sum":2367193},{"parent":"TRule_window_name","rule":"TRule_window_name.Rule_an_id_window1","sum":46472719},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification1","sum":32362153},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification2","sum":12739706},{"parent":"TRule_window_name_or_specification.TAlt1","rule":"TRule_window_name_or_specification.TAlt1.Rule_window_name1","sum":32362153},{"parent":"TRule_window_name_or_specification.TAlt2","rule":"TRule_window_name_or_specification.TAlt2.Rule_window_specification1","sum":12739706},{"parent":"TRule_window_order_clause","rule":"TRule_window_order_clause.Rule_order_by_clause1","sum":18894263},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Block2","sum":51324},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Rule_named_expr_list4","sum":21674753},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token1","sum":21674753},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token3","sum":21674753},{"parent":"TRule_window_partition_clause.TBlock2","rule":"TRule_window_partition_clause.TBlock2.Token1","sum":51324},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Rule_window_specification_details2","sum":26850272},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token1","sum":26850272},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token3","sum":26850272},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block2","sum":21674752},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block3","sum":18894263},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block4","sum":2367193},{"parent":"TRule_window_specification_details.TBlock2","rule":"TRule_window_specification_details.TBlock2.Rule_window_partition_clause1","sum":21674752},{"parent":"TRule_window_specification_details.TBlock3","rule":"TRule_window_specification_details.TBlock3.Rule_window_order_clause1","sum":18894263},{"parent":"TRule_window_specification_details.TBlock4","rule":"TRule_window_specification_details.TBlock4.Rule_window_frame_clause1","sum":2367193},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block2","sum":9142942},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block3","sum":1296663},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Rule_without_column_name1","sum":24720066},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Rule_without_column_name2","sum":29091924},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Token1","sum":29091924},{"parent":"TRule_without_column_list.TBlock3","rule":"TRule_without_column_list.TBlock3.Token1","sum":1296663},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name1","sum":30689820},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name2","sum":23122170},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id1","sum":30689820},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id3","sum":30689820},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Token2","sum":30689820},{"parent":"TRule_without_column_name.TAlt2","rule":"TRule_without_column_name.TAlt2.Rule_an_id_without1","sum":23122170},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Block2","sum":1091682389},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Rule_eq_subexpr1","sum":14246186831},{"parent":"TRule_xor_subexpr.TBlock2","rule":"TRule_xor_subexpr.TBlock2.Rule_cond_expr1","sum":1091682389},{"parent":"TSQLv1ParserAST","rule":"TSQLv1ParserAST.Rule_sql_query","sum":318387605},{"parent":"TYPE","rule":"BIGINT","sum":7101},{"parent":"TYPE","rule":"BOOL","sum":108389},{"parent":"TYPE","rule":"BYTEs","sum":1},{"parent":"TYPE","rule":"BigInt","sum":210},{"parent":"TYPE","rule":"Bool","sum":9272747},{"parent":"TYPE","rule":"Bytes","sum":414522},{"parent":"TYPE","rule":"DATE","sum":1242372},{"parent":"TYPE","rule":"DATETIME","sum":66264},{"parent":"TYPE","rule":"DATETime","sum":2},{"parent":"TYPE","rule":"DATEtIME","sum":1},{"parent":"TYPE","rule":"DATEtime","sum":34},{"parent":"TYPE","rule":"DAte","sum":9541},{"parent":"TYPE","rule":"DAteTime","sum":54},{"parent":"TYPE","rule":"DAtetime","sum":685},{"parent":"TYPE","rule":"DOUBLE","sum":1338435},{"parent":"TYPE","rule":"DOUBLe","sum":1},{"parent":"TYPE","rule":"DOUBle","sum":1},{"parent":"TYPE","rule":"DOUble","sum":3},{"parent":"TYPE","rule":"DOuble","sum":2118},{"parent":"TYPE","rule":"DaTeTime","sum":1},{"parent":"TYPE","rule":"Date","sum":20552673},{"parent":"TYPE","rule":"Date32","sum":57},{"parent":"TYPE","rule":"DateTIME","sum":19},{"parent":"TYPE","rule":"DateTIme","sum":113},{"parent":"TYPE","rule":"DateTime","sum":4961130},{"parent":"TYPE","rule":"DateTime64","sum":8},{"parent":"TYPE","rule":"DatetIME","sum":35},{"parent":"TYPE","rule":"Datetime","sum":3245135},{"parent":"TYPE","rule":"Datetime64","sum":26},{"parent":"TYPE","rule":"DoubLe","sum":13},{"parent":"TYPE","rule":"Double","sum":30004369},{"parent":"TYPE","rule":"EmptyDict","sum":28},{"parent":"TYPE","rule":"EmptyList","sum":27},{"parent":"TYPE","rule":"FLOAT","sum":196112},{"parent":"TYPE","rule":"FLoat","sum":3502},{"parent":"TYPE","rule":"FlOAT","sum":15},{"parent":"TYPE","rule":"FloaT","sum":317},{"parent":"TYPE","rule":"Float","sum":7045265},{"parent":"TYPE","rule":"Generic","sum":2},{"parent":"TYPE","rule":"INT","sum":440180},{"parent":"TYPE","rule":"INT16","sum":9699},{"parent":"TYPE","rule":"INT32","sum":139102},{"parent":"TYPE","rule":"INT64","sum":4131992},{"parent":"TYPE","rule":"INT8","sum":1770},{"parent":"TYPE","rule":"INTEGER","sum":73607},{"parent":"TYPE","rule":"INTERVAL","sum":11073},{"parent":"TYPE","rule":"INt16","sum":1},{"parent":"TYPE","rule":"INt32","sum":1154},{"parent":"TYPE","rule":"INt64","sum":38786},{"parent":"TYPE","rule":"InT32","sum":1},{"parent":"TYPE","rule":"Int","sum":522114},{"parent":"TYPE","rule":"Int16","sum":897927},{"parent":"TYPE","rule":"Int32","sum":13668505},{"parent":"TYPE","rule":"Int64","sum":47331088},{"parent":"TYPE","rule":"Int8","sum":969156},{"parent":"TYPE","rule":"Integer","sum":468888},{"parent":"TYPE","rule":"Interval","sum":203511},{"parent":"TYPE","rule":"Interval64","sum":34},{"parent":"TYPE","rule":"JSON","sum":1720792},{"parent":"TYPE","rule":"JSONDocument","sum":243},{"parent":"TYPE","rule":"JSOn","sum":1},{"parent":"TYPE","rule":"JSon","sum":11},{"parent":"TYPE","rule":"Json","sum":5441608},{"parent":"TYPE","rule":"JsonDocument","sum":17227},{"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":1264},{"parent":"TYPE","rule":"PgPolygon","sum":622},{"parent":"TYPE","rule":"PgText","sum":414},{"parent":"TYPE","rule":"PgTimestamp","sum":1805},{"parent":"TYPE","rule":"PgVarChar","sum":1},{"parent":"TYPE","rule":"PgVarchar","sum":231},{"parent":"TYPE","rule":"STRING","sum":2682014},{"parent":"TYPE","rule":"STRINg","sum":3},{"parent":"TYPE","rule":"STRing","sum":3},{"parent":"TYPE","rule":"STring","sum":1294},{"parent":"TYPE","rule":"StrINg","sum":45},{"parent":"TYPE","rule":"StrinG","sum":27},{"parent":"TYPE","rule":"String","sum":333866429},{"parent":"TYPE","rule":"TEXT","sum":18984},{"parent":"TYPE","rule":"TIMESTAMP","sum":312271},{"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":185895},{"parent":"TYPE","rule":"TimeStamp","sum":296676},{"parent":"TYPE","rule":"Timestamp","sum":5958368},{"parent":"TYPE","rule":"Timestamp64","sum":458},{"parent":"TYPE","rule":"TzDATE","sum":5},{"parent":"TYPE","rule":"TzDate","sum":47109},{"parent":"TYPE","rule":"TzDateTime","sum":43848},{"parent":"TYPE","rule":"TzDatetime","sum":675925},{"parent":"TYPE","rule":"TzTimeStamp","sum":6},{"parent":"TYPE","rule":"TzTimestamp","sum":7872},{"parent":"TYPE","rule":"Tzdate","sum":5},{"parent":"TYPE","rule":"Tzdatetime","sum":4},{"parent":"TYPE","rule":"UINT16","sum":1206},{"parent":"TYPE","rule":"UINT32","sum":515088},{"parent":"TYPE","rule":"UINT64","sum":597046},{"parent":"TYPE","rule":"UINT8","sum":170},{"parent":"TYPE","rule":"UINt32","sum":44},{"parent":"TYPE","rule":"UINt64","sum":412},{"parent":"TYPE","rule":"UINt8","sum":24},{"parent":"TYPE","rule":"UInt16","sum":128862},{"parent":"TYPE","rule":"UInt32","sum":7273735},{"parent":"TYPE","rule":"UInt64","sum":9432595},{"parent":"TYPE","rule":"UInt8","sum":153493},{"parent":"TYPE","rule":"UNIT","sum":757},{"parent":"TYPE","rule":"UTF8","sum":265559},{"parent":"TYPE","rule":"UTf8","sum":132},{"parent":"TYPE","rule":"UUID","sum":1237799},{"parent":"TYPE","rule":"UiNt32","sum":4},{"parent":"TYPE","rule":"Uint16","sum":333684},{"parent":"TYPE","rule":"Uint32","sum":18570372},{"parent":"TYPE","rule":"Uint64","sum":32555431},{"parent":"TYPE","rule":"Uint8","sum":2327761},{"parent":"TYPE","rule":"Unit","sum":1182},{"parent":"TYPE","rule":"Utf8","sum":14236247},{"parent":"TYPE","rule":"Uuid","sum":43021},{"parent":"TYPE","rule":"VARCHAR","sum":515452},{"parent":"TYPE","rule":"Varchar","sum":2},{"parent":"TYPE","rule":"Void","sum":11464},{"parent":"TYPE","rule":"XML","sum":2},{"parent":"TYPE","rule":"YSON","sum":228232},{"parent":"TYPE","rule":"YSon","sum":468},{"parent":"TYPE","rule":"Yson","sum":17583554},{"parent":"TYPE","rule":"_PgMoney","sum":3},{"parent":"TYPE","rule":"bigint","sum":8678},{"parent":"TYPE","rule":"bool","sum":935018},{"parent":"TYPE","rule":"bytes","sum":35935},{"parent":"TYPE","rule":"dATE","sum":1},{"parent":"TYPE","rule":"daTE","sum":5},{"parent":"TYPE","rule":"date","sum":32278586},{"parent":"TYPE","rule":"date32","sum":40},{"parent":"TYPE","rule":"dateTIME","sum":8},{"parent":"TYPE","rule":"dateTime","sum":41625},{"parent":"TYPE","rule":"datetime","sum":7152182},{"parent":"TYPE","rule":"datetime64","sum":61},{"parent":"TYPE","rule":"double","sum":6913434},{"parent":"TYPE","rule":"emptyList","sum":1},{"parent":"TYPE","rule":"float","sum":4734731},{"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":1112457},{"parent":"TYPE","rule":"int16","sum":80702},{"parent":"TYPE","rule":"int32","sum":3188473},{"parent":"TYPE","rule":"int64","sum":8433961},{"parent":"TYPE","rule":"int8","sum":42328},{"parent":"TYPE","rule":"integer","sum":135058},{"parent":"TYPE","rule":"interval","sum":389459},{"parent":"TYPE","rule":"json","sum":1065443},{"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":40},{"parent":"TYPE","rule":"pgint8","sum":1},{"parent":"TYPE","rule":"pginteger","sum":1},{"parent":"TYPE","rule":"pginterval","sum":374},{"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":45428906},{"parent":"TYPE","rule":"text","sum":4537855},{"parent":"TYPE","rule":"timeStamp","sum":99},{"parent":"TYPE","rule":"timestamp","sum":21885666},{"parent":"TYPE","rule":"timestamp64","sum":12},{"parent":"TYPE","rule":"tinyint","sum":2},{"parent":"TYPE","rule":"tzDate","sum":1},{"parent":"TYPE","rule":"tzDateTime","sum":3},{"parent":"TYPE","rule":"tzDatetime","sum":29},{"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":6},{"parent":"TYPE","rule":"uInt32","sum":12588},{"parent":"TYPE","rule":"uInt64","sum":2521},{"parent":"TYPE","rule":"uInt8","sum":52},{"parent":"TYPE","rule":"uint16","sum":26721},{"parent":"TYPE","rule":"uint32","sum":5285960},{"parent":"TYPE","rule":"uint64","sum":8563801},{"parent":"TYPE","rule":"uint8","sum":158497},{"parent":"TYPE","rule":"unit","sum":693132},{"parent":"TYPE","rule":"utf8","sum":4490416},{"parent":"TYPE","rule":"uuid","sum":2964762},{"parent":"TYPE","rule":"varchar","sum":59579},{"parent":"TYPE","rule":"void","sum":1},{"parent":"TYPE","rule":"xml","sum":31888},{"parent":"TYPE","rule":"yaml","sum":144},{"parent":"TYPE","rule":"yson","sum":1127334}] +[{"parent":"FUNC","rule":"ABC","sum":1},{"parent":"FUNC","rule":"ABS","sum":3127148},{"parent":"FUNC","rule":"ADAPTIVE_WARD_HISTOGRAM","sum":1},{"parent":"FUNC","rule":"ADDTIMEZONE","sum":395},{"parent":"FUNC","rule":"AGGLIST","sum":1221},{"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":1576927},{"parent":"FUNC","rule":"AGGREGATE_LIST","sum":19711752},{"parent":"FUNC","rule":"AGGREGATE_LIST_","sum":2},{"parent":"FUNC","rule":"AGGREGATE_LIST_DISTINCT","sum":12772929},{"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":783},{"parent":"FUNC","rule":"AGGREGATE_LIST_distINCT","sum":4},{"parent":"FUNC","rule":"AGGREGATE_LIST_distinct","sum":18908},{"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":316},{"parent":"FUNC","rule":"AGGREGATE_list_distinct","sum":1},{"parent":"FUNC","rule":"AGGREGATIONFACTORY","sum":57},{"parent":"FUNC","rule":"AGGREGATION_FACTORY","sum":66663},{"parent":"FUNC","rule":"AGGREGate_List","sum":2},{"parent":"FUNC","rule":"AGGR_LIST","sum":2975},{"parent":"FUNC","rule":"AGGR_LIST_DISTINCT","sum":44471},{"parent":"FUNC","rule":"AGGReGATE_LIST","sum":3},{"parent":"FUNC","rule":"AGGReGate_list","sum":1},{"parent":"FUNC","rule":"AGG_LIST","sum":5125300},{"parent":"FUNC","rule":"AGG_LIST_","sum":5},{"parent":"FUNC","rule":"AGG_LIST_DISTINCT","sum":2870859},{"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":6674},{"parent":"FUNC","rule":"AGG_List_DISTINCT","sum":33},{"parent":"FUNC","rule":"AGG_List_Distinct","sum":928},{"parent":"FUNC","rule":"AGG_List_distinct","sum":103},{"parent":"FUNC","rule":"AGG_lIST_DISTINCT","sum":5},{"parent":"FUNC","rule":"AGG_list","sum":17554},{"parent":"FUNC","rule":"AGG_list_DISTINCT","sum":3065},{"parent":"FUNC","rule":"AGG_list_distinct","sum":784},{"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":193},{"parent":"FUNC","rule":"ASDict","sum":627},{"parent":"FUNC","rule":"ASEnum","sum":84},{"parent":"FUNC","rule":"ASIN","sum":2},{"parent":"FUNC","rule":"ASLIST","sum":27702},{"parent":"FUNC","rule":"ASLIst","sum":4},{"parent":"FUNC","rule":"ASList","sum":23526},{"parent":"FUNC","rule":"ASSET","sum":17},{"parent":"FUNC","rule":"ASSTRUCT","sum":2700},{"parent":"FUNC","rule":"ASSet","sum":5},{"parent":"FUNC","rule":"ASStruct","sum":2343},{"parent":"FUNC","rule":"ASTAGGED","sum":15},{"parent":"FUNC","rule":"ASTAgged","sum":3},{"parent":"FUNC","rule":"ASTUPLE","sum":1586},{"parent":"FUNC","rule":"ASTagged","sum":63},{"parent":"FUNC","rule":"ASTuple","sum":5806},{"parent":"FUNC","rule":"AS_DICT","sum":6},{"parent":"FUNC","rule":"AS_LIST","sum":119},{"parent":"FUNC","rule":"AS_STRUCT","sum":13360},{"parent":"FUNC","rule":"AS_TABLE","sum":33},{"parent":"FUNC","rule":"AS_TUPLE","sum":844},{"parent":"FUNC","rule":"ASdict","sum":4},{"parent":"FUNC","rule":"ASlist","sum":1022},{"parent":"FUNC","rule":"ASstruct","sum":41},{"parent":"FUNC","rule":"AStagged","sum":3},{"parent":"FUNC","rule":"AStuple","sum":408},{"parent":"FUNC","rule":"AVG","sum":9080971},{"parent":"FUNC","rule":"AVGIF","sum":15},{"parent":"FUNC","rule":"AVG_IF","sum":732569},{"parent":"FUNC","rule":"AVG_If","sum":8},{"parent":"FUNC","rule":"AVG_if","sum":14378},{"parent":"FUNC","rule":"AVg","sum":4},{"parent":"FUNC","rule":"Abs","sum":323219},{"parent":"FUNC","rule":"AdaptiveDistanceHistogramCDF","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogram","sum":1},{"parent":"FUNC","rule":"AdaptiveWardHistogramCDF","sum":3},{"parent":"FUNC","rule":"AdaptiveWeightHistogram","sum":57440},{"parent":"FUNC","rule":"AddMember","sum":880740},{"parent":"FUNC","rule":"AddTimeZone","sum":514894},{"parent":"FUNC","rule":"AddTimezone","sum":12053335},{"parent":"FUNC","rule":"Addtimezone","sum":60},{"parent":"FUNC","rule":"AggLIst","sum":1},{"parent":"FUNC","rule":"AggList","sum":19938},{"parent":"FUNC","rule":"AggListDistinct","sum":72},{"parent":"FUNC","rule":"Agg_LIST","sum":60},{"parent":"FUNC","rule":"Agg_LIST_DISTINCT","sum":20},{"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":129321},{"parent":"FUNC","rule":"Agg_List_","sum":8},{"parent":"FUNC","rule":"Agg_List_DISTINCT","sum":730},{"parent":"FUNC","rule":"Agg_List_Distinct","sum":2506},{"parent":"FUNC","rule":"Agg_List_distinct","sum":4},{"parent":"FUNC","rule":"Agg_list","sum":35594},{"parent":"FUNC","rule":"Agg_list_distinct","sum":8130},{"parent":"FUNC","rule":"Aggergate_List","sum":1},{"parent":"FUNC","rule":"Agglist","sum":12},{"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":42230},{"parent":"FUNC","rule":"AggregateFlatten","sum":52396},{"parent":"FUNC","rule":"AggregateList","sum":40547},{"parent":"FUNC","rule":"AggregateListDistinct","sum":7694},{"parent":"FUNC","rule":"AggregateTransformInput","sum":25589},{"parent":"FUNC","rule":"AggregateTransformOutput","sum":44958},{"parent":"FUNC","rule":"Aggregate_BY","sum":242},{"parent":"FUNC","rule":"Aggregate_By","sum":137121},{"parent":"FUNC","rule":"Aggregate_LIST","sum":853},{"parent":"FUNC","rule":"Aggregate_LIST_DISTINCT","sum":2},{"parent":"FUNC","rule":"Aggregate_LIst","sum":12},{"parent":"FUNC","rule":"Aggregate_List","sum":345188},{"parent":"FUNC","rule":"Aggregate_List_Distinct","sum":5207},{"parent":"FUNC","rule":"Aggregate_List_distinct","sum":1306},{"parent":"FUNC","rule":"Aggregate_by","sum":79},{"parent":"FUNC","rule":"Aggregate_list","sum":228359},{"parent":"FUNC","rule":"Aggregate_list_DISTINCT","sum":36},{"parent":"FUNC","rule":"Aggregate_list_Distinct","sum":11},{"parent":"FUNC","rule":"Aggregate_list_distinct","sum":201434},{"parent":"FUNC","rule":"AggregationFactory","sum":1510101},{"parent":"FUNC","rule":"Apply","sum":1},{"parent":"FUNC","rule":"AsAtom","sum":688112},{"parent":"FUNC","rule":"AsDict","sum":2925286},{"parent":"FUNC","rule":"AsDictStrict","sum":4459},{"parent":"FUNC","rule":"AsEnum","sum":50660},{"parent":"FUNC","rule":"AsLIST","sum":917},{"parent":"FUNC","rule":"AsLIst","sum":2770},{"parent":"FUNC","rule":"AsLisT","sum":1501},{"parent":"FUNC","rule":"AsList","sum":17305413},{"parent":"FUNC","rule":"AsListStrict","sum":86208},{"parent":"FUNC","rule":"AsListstrict","sum":1},{"parent":"FUNC","rule":"AsSTruct","sum":374},{"parent":"FUNC","rule":"AsSet","sum":1592807},{"parent":"FUNC","rule":"AsSetStrict","sum":11347},{"parent":"FUNC","rule":"AsStruct","sum":23491726},{"parent":"FUNC","rule":"AsTAgged","sum":281},{"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":183444},{"parent":"FUNC","rule":"AsTuPle","sum":1},{"parent":"FUNC","rule":"AsTuple","sum":30224732},{"parent":"FUNC","rule":"AsTupleunwrap","sum":4},{"parent":"FUNC","rule":"AsVariant","sum":357080},{"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":804},{"parent":"FUNC","rule":"Asdict","sum":181},{"parent":"FUNC","rule":"AslIst","sum":14},{"parent":"FUNC","rule":"Aslist","sum":23551},{"parent":"FUNC","rule":"Asset","sum":49},{"parent":"FUNC","rule":"Asstruct","sum":411},{"parent":"FUNC","rule":"AssumeStrict","sum":2524},{"parent":"FUNC","rule":"Astagged","sum":163},{"parent":"FUNC","rule":"Astuple","sum":728},{"parent":"FUNC","rule":"AtomCode","sum":522128},{"parent":"FUNC","rule":"Avg","sum":139147},{"parent":"FUNC","rule":"Avg_IF","sum":162},{"parent":"FUNC","rule":"Avg_If","sum":121},{"parent":"FUNC","rule":"Avg_if","sum":222},{"parent":"FUNC","rule":"BIT_AND","sum":4},{"parent":"FUNC","rule":"BIT_OR","sum":38656},{"parent":"FUNC","rule":"BIT_XOR","sum":432891},{"parent":"FUNC","rule":"BOOL_AND","sum":265915},{"parent":"FUNC","rule":"BOOL_OR","sum":878803},{"parent":"FUNC","rule":"BOOL_XOR","sum":46},{"parent":"FUNC","rule":"BOOL_and","sum":2},{"parent":"FUNC","rule":"BOOl_OR","sum":378},{"parent":"FUNC","rule":"BOTTOM","sum":11629},{"parent":"FUNC","rule":"BOTTOM_BY","sum":47254},{"parent":"FUNC","rule":"BOTTOM_by","sum":2},{"parent":"FUNC","rule":"Bool","sum":1385},{"parent":"FUNC","rule":"Bool_And","sum":118},{"parent":"FUNC","rule":"Bool_Or","sum":580},{"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":102},{"parent":"FUNC","rule":"Bottom_by","sum":1639},{"parent":"FUNC","rule":"ByteAt","sum":13545},{"parent":"FUNC","rule":"Bytes","sum":5},{"parent":"FUNC","rule":"CHAR_LENGTH","sum":373},{"parent":"FUNC","rule":"COALECSE","sum":1},{"parent":"FUNC","rule":"COALESCE","sum":51653941},{"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":2736},{"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":20868},{"parent":"FUNC","rule":"COS","sum":4},{"parent":"FUNC","rule":"COUNT","sum":52725662},{"parent":"FUNC","rule":"COUNTD","sum":4},{"parent":"FUNC","rule":"COUNTDISTINCTESTIMATE","sum":609},{"parent":"FUNC","rule":"COUNTDistinctEstimate","sum":7},{"parent":"FUNC","rule":"COUNTIF","sum":15797},{"parent":"FUNC","rule":"COUNT_","sum":1},{"parent":"FUNC","rule":"COUNT_IF","sum":24106602},{"parent":"FUNC","rule":"COUNT_IF_","sum":24},{"parent":"FUNC","rule":"COUNT_If","sum":12983},{"parent":"FUNC","rule":"COUNT_iF","sum":44},{"parent":"FUNC","rule":"COUNT_if","sum":19536},{"parent":"FUNC","rule":"COUNt","sum":1260},{"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":10},{"parent":"FUNC","rule":"COUnT_IF","sum":7},{"parent":"FUNC","rule":"COUnt","sum":40},{"parent":"FUNC","rule":"COVAR","sum":2848},{"parent":"FUNC","rule":"COVARIANCE","sum":1520},{"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":189},{"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":6637},{"parent":"FUNC","rule":"CURRENTUTCDate","sum":82},{"parent":"FUNC","rule":"CURRENT_UTC_DATE","sum":8},{"parent":"FUNC","rule":"CallableArgument","sum":10160},{"parent":"FUNC","rule":"CallableArgumentType","sum":19070},{"parent":"FUNC","rule":"CallableResultType","sum":115},{"parent":"FUNC","rule":"CallableType","sum":179101},{"parent":"FUNC","rule":"CallableTypeHandle","sum":5700},{"parent":"FUNC","rule":"Ceil","sum":3},{"parent":"FUNC","rule":"ChooseMembers","sum":2492144},{"parent":"FUNC","rule":"Choosemembers","sum":21067},{"parent":"FUNC","rule":"ChosenMembers","sum":8},{"parent":"FUNC","rule":"ClearBit","sum":30223},{"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":725375},{"parent":"FUNC","rule":"Collect","sum":1},{"parent":"FUNC","rule":"CollectList","sum":1},{"parent":"FUNC","rule":"CombineMembers","sum":505747},{"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":157543},{"parent":"FUNC","rule":"CountIF","sum":81},{"parent":"FUNC","rule":"CountIf","sum":511},{"parent":"FUNC","rule":"Count_IF","sum":15751},{"parent":"FUNC","rule":"Count_If","sum":42577},{"parent":"FUNC","rule":"Count_if","sum":323527},{"parent":"FUNC","rule":"Countif","sum":12},{"parent":"FUNC","rule":"CurrentAuthenticatedUser","sum":90046},{"parent":"FUNC","rule":"CurrentDatetime","sum":1},{"parent":"FUNC","rule":"CurrentOperationId","sum":89890},{"parent":"FUNC","rule":"CurrentOperationSharedId","sum":5666},{"parent":"FUNC","rule":"CurrentTZDate","sum":615},{"parent":"FUNC","rule":"CurrentTZDateTime","sum":35},{"parent":"FUNC","rule":"CurrentTZDatetime","sum":526},{"parent":"FUNC","rule":"CurrentTZTimestamp","sum":263},{"parent":"FUNC","rule":"CurrentTZdatetime","sum":68},{"parent":"FUNC","rule":"CurrentTzDate","sum":1610399},{"parent":"FUNC","rule":"CurrentTzDateTime","sum":1466723},{"parent":"FUNC","rule":"CurrentTzDatetime","sum":1990148},{"parent":"FUNC","rule":"CurrentTzTimeStamp","sum":4342},{"parent":"FUNC","rule":"CurrentTzTimestamp","sum":1900232},{"parent":"FUNC","rule":"CurrentUTCDATE","sum":19},{"parent":"FUNC","rule":"CurrentUTCDAte","sum":38},{"parent":"FUNC","rule":"CurrentUTCDate","sum":919233},{"parent":"FUNC","rule":"CurrentUTCDateTime","sum":182498},{"parent":"FUNC","rule":"CurrentUTCDatetime","sum":131115},{"parent":"FUNC","rule":"CurrentUTCTimeStamp","sum":99},{"parent":"FUNC","rule":"CurrentUTCTimestamp","sum":452742},{"parent":"FUNC","rule":"CurrentUTCdate","sum":71306},{"parent":"FUNC","rule":"CurrentUTcDate","sum":63},{"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":19601950},{"parent":"FUNC","rule":"CurrentUtcDateTIME","sum":1},{"parent":"FUNC","rule":"CurrentUtcDateTime","sum":3195699},{"parent":"FUNC","rule":"CurrentUtcDatetime","sum":13792949},{"parent":"FUNC","rule":"CurrentUtcDttm","sum":3},{"parent":"FUNC","rule":"CurrentUtcTimeStamp","sum":60287},{"parent":"FUNC","rule":"CurrentUtcTimestamp","sum":15261212},{"parent":"FUNC","rule":"CurrentUtcdate","sum":11664},{"parent":"FUNC","rule":"CurrenttzDate","sum":337},{"parent":"FUNC","rule":"CurrenttzDatetime","sum":1},{"parent":"FUNC","rule":"CurrentutcDate","sum":20941},{"parent":"FUNC","rule":"CurrentutcDateTime","sum":565},{"parent":"FUNC","rule":"CurrentutcTimestamp","sum":4},{"parent":"FUNC","rule":"Currentutcdate","sum":1501},{"parent":"FUNC","rule":"Currentutcdatetime","sum":22651},{"parent":"FUNC","rule":"D","sum":1},{"parent":"FUNC","rule":"DATE","sum":128427},{"parent":"FUNC","rule":"DATEADD","sum":3},{"parent":"FUNC","rule":"DATEDIFF","sum":9},{"parent":"FUNC","rule":"DATETIME","sum":832},{"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":174},{"parent":"FUNC","rule":"DAtetime","sum":61},{"parent":"FUNC","rule":"DENSE_RANK","sum":273683},{"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":68953},{"parent":"FUNC","rule":"DataTypeComponents","sum":37116},{"parent":"FUNC","rule":"DataTypeHandle","sum":2},{"parent":"FUNC","rule":"Datatype","sum":2},{"parent":"FUNC","rule":"Date","sum":1771472},{"parent":"FUNC","rule":"Date32","sum":74},{"parent":"FUNC","rule":"DateTime","sum":434966},{"parent":"FUNC","rule":"DateTime64","sum":45},{"parent":"FUNC","rule":"Date_Diff","sum":1},{"parent":"FUNC","rule":"DatetimE","sum":8},{"parent":"FUNC","rule":"Datetime","sum":269629},{"parent":"FUNC","rule":"Datetime64","sum":6},{"parent":"FUNC","rule":"Decimal","sum":31267},{"parent":"FUNC","rule":"DenseRank","sum":26},{"parent":"FUNC","rule":"Dense_RANK","sum":1},{"parent":"FUNC","rule":"Dense_Rank","sum":54},{"parent":"FUNC","rule":"Dense_rank","sum":6},{"parent":"FUNC","rule":"DicTKeys","sum":1},{"parent":"FUNC","rule":"DictAggregate","sum":140521},{"parent":"FUNC","rule":"DictCOntains","sum":350},{"parent":"FUNC","rule":"DictContains","sum":2022763},{"parent":"FUNC","rule":"DictCreate","sum":69265},{"parent":"FUNC","rule":"DictHasItems","sum":614720},{"parent":"FUNC","rule":"DictHasitems","sum":261},{"parent":"FUNC","rule":"DictItems","sum":2551895},{"parent":"FUNC","rule":"DictKEYS","sum":12},{"parent":"FUNC","rule":"DictKEys","sum":1},{"parent":"FUNC","rule":"DictKeYS","sum":3},{"parent":"FUNC","rule":"DictKeyType","sum":940},{"parent":"FUNC","rule":"DictKeys","sum":2714504},{"parent":"FUNC","rule":"DictLOokup","sum":7},{"parent":"FUNC","rule":"DictLength","sum":1015710},{"parent":"FUNC","rule":"DictLookUP","sum":3},{"parent":"FUNC","rule":"DictLookUp","sum":59096},{"parent":"FUNC","rule":"DictLookup","sum":5977839},{"parent":"FUNC","rule":"DictPayLoads","sum":10411},{"parent":"FUNC","rule":"DictPayloadType","sum":209},{"parent":"FUNC","rule":"DictPayloads","sum":926973},{"parent":"FUNC","rule":"DictType","sum":551},{"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":19815},{"parent":"FUNC","rule":"Dictkeys","sum":1128},{"parent":"FUNC","rule":"Dictlength","sum":6},{"parent":"FUNC","rule":"Dictlookup","sum":75954},{"parent":"FUNC","rule":"Double","sum":34124},{"parent":"FUNC","rule":"DyNumber","sum":4},{"parent":"FUNC","rule":"EACH","sum":4},{"parent":"FUNC","rule":"ENDSWITH","sum":13654},{"parent":"FUNC","rule":"ENDsWith","sum":85},{"parent":"FUNC","rule":"ENSURE","sum":832081},{"parent":"FUNC","rule":"EOMONTH","sum":1},{"parent":"FUNC","rule":"EmptyDict","sum":430},{"parent":"FUNC","rule":"EmptyDictTypeHandle","sum":3},{"parent":"FUNC","rule":"EmptyList","sum":23968},{"parent":"FUNC","rule":"Emptydict","sum":6},{"parent":"FUNC","rule":"EndsWIth","sum":870},{"parent":"FUNC","rule":"EndsWith","sum":1563464},{"parent":"FUNC","rule":"Endswith","sum":19802},{"parent":"FUNC","rule":"Ensure","sum":1434516},{"parent":"FUNC","rule":"EnsureConvertibleTo","sum":2013},{"parent":"FUNC","rule":"EnsureType","sum":229229},{"parent":"FUNC","rule":"EvaluateAtom","sum":464},{"parent":"FUNC","rule":"EvaluateCode","sum":467542},{"parent":"FUNC","rule":"EvaluateExpr","sum":899431},{"parent":"FUNC","rule":"EvaluateType","sum":121899},{"parent":"FUNC","rule":"ExpandStruct","sum":264149},{"parent":"FUNC","rule":"ExtractUkropCtx","sum":1},{"parent":"FUNC","rule":"FIND","sum":5553194},{"parent":"FUNC","rule":"FIRST","sum":3},{"parent":"FUNC","rule":"FIRST_VALUE","sum":8897911},{"parent":"FUNC","rule":"FIRST_value","sum":811},{"parent":"FUNC","rule":"FIRsT_VALUE","sum":1},{"parent":"FUNC","rule":"FIleContent","sum":1},{"parent":"FUNC","rule":"FLATTEN","sum":9},{"parent":"FUNC","rule":"FLOAT","sum":7},{"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":33},{"parent":"FUNC","rule":"FileContent","sum":2362479},{"parent":"FUNC","rule":"FilePath","sum":1452419},{"parent":"FUNC","rule":"Filecontent","sum":11771},{"parent":"FUNC","rule":"Filepath","sum":10},{"parent":"FUNC","rule":"FinD","sum":16},{"parent":"FUNC","rule":"Find","sum":321147},{"parent":"FUNC","rule":"FirsT_VALUE","sum":3},{"parent":"FUNC","rule":"FirstValue","sum":25},{"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":109223},{"parent":"FUNC","rule":"Float","sum":12362},{"parent":"FUNC","rule":"FoldMap","sum":13},{"parent":"FUNC","rule":"Folder","sum":13},{"parent":"FUNC","rule":"FolderPath","sum":9948},{"parent":"FUNC","rule":"ForceRemoveMember","sum":401413},{"parent":"FUNC","rule":"ForceRemoveMembers","sum":1080839},{"parent":"FUNC","rule":"ForceRenameMembers","sum":64041},{"parent":"FUNC","rule":"ForceSpreadMembers","sum":115090},{"parent":"FUNC","rule":"ForceSpreadmembers","sum":4},{"parent":"FUNC","rule":"Format","sum":1},{"parent":"FUNC","rule":"FormatCode","sum":676},{"parent":"FUNC","rule":"FormatType","sum":470195},{"parent":"FUNC","rule":"FormatTypeDiff","sum":809},{"parent":"FUNC","rule":"FormatTypeDiffPretty","sum":103},{"parent":"FUNC","rule":"Formattype","sum":101},{"parent":"FUNC","rule":"FromBytes","sum":99141},{"parent":"FUNC","rule":"FromPg","sum":4860},{"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":1237484},{"parent":"FUNC","rule":"GETDATE","sum":1},{"parent":"FUNC","rule":"GREATEST","sum":389548},{"parent":"FUNC","rule":"GROUPING","sum":71200},{"parent":"FUNC","rule":"GROUPINg","sum":4},{"parent":"FUNC","rule":"GROUP_CONCAT","sum":1},{"parent":"FUNC","rule":"GatherMembers","sum":1479159},{"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":6014},{"parent":"FUNC","rule":"Grouping","sum":243},{"parent":"FUNC","rule":"HISTOGRAM","sum":272979},{"parent":"FUNC","rule":"HISTOGRAMCDF","sum":425},{"parent":"FUNC","rule":"HISTOGRAMCdf","sum":47},{"parent":"FUNC","rule":"HISTOGRAM_CDF","sum":3},{"parent":"FUNC","rule":"HISTOGRAMcdf","sum":2},{"parent":"FUNC","rule":"HISTOGrAM","sum":49},{"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":12424},{"parent":"FUNC","rule":"HOP_END","sum":16},{"parent":"FUNC","rule":"HOP_START","sum":4},{"parent":"FUNC","rule":"Histogram","sum":35012},{"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":4057},{"parent":"FUNC","rule":"IF","sum":75252951},{"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":889107},{"parent":"FUNC","rule":"INterval","sum":763},{"parent":"FUNC","rule":"If","sum":1084143},{"parent":"FUNC","rule":"IfNull","sum":6},{"parent":"FUNC","rule":"InstanceOf","sum":247258},{"parent":"FUNC","rule":"Int","sum":1},{"parent":"FUNC","rule":"Int16","sum":37},{"parent":"FUNC","rule":"Int32","sum":32669},{"parent":"FUNC","rule":"Int64","sum":3613},{"parent":"FUNC","rule":"Int8","sum":302},{"parent":"FUNC","rule":"InterVal","sum":4},{"parent":"FUNC","rule":"Interval","sum":16047614},{"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":128163},{"parent":"FUNC","rule":"Join","sum":1},{"parent":"FUNC","rule":"JoinTableRow","sum":1309793},{"parent":"FUNC","rule":"JoinTablerow","sum":721},{"parent":"FUNC","rule":"JointableRow","sum":1},{"parent":"FUNC","rule":"Json","sum":52981},{"parent":"FUNC","rule":"JsonDocument","sum":9},{"parent":"FUNC","rule":"Just","sum":6553330},{"parent":"FUNC","rule":"LAG","sum":4037229},{"parent":"FUNC","rule":"LAST","sum":1},{"parent":"FUNC","rule":"LAST_VALUE","sum":1335902},{"parent":"FUNC","rule":"LAST_value","sum":2},{"parent":"FUNC","rule":"LEAD","sum":1649498},{"parent":"FUNC","rule":"LEAST","sum":426967},{"parent":"FUNC","rule":"LEFT","sum":3},{"parent":"FUNC","rule":"LEFT_SHIFT","sum":1},{"parent":"FUNC","rule":"LEN","sum":1686905},{"parent":"FUNC","rule":"LENGTH","sum":3844541},{"parent":"FUNC","rule":"LENgth","sum":23},{"parent":"FUNC","rule":"LEngth","sum":12},{"parent":"FUNC","rule":"LIKELY","sum":140955},{"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":2863},{"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":1518},{"parent":"FUNC","rule":"LISTENUMERATE","sum":2},{"parent":"FUNC","rule":"LISTEXTEND","sum":13},{"parent":"FUNC","rule":"LISTFILTER","sum":1629},{"parent":"FUNC","rule":"LISTFLATTEN","sum":4259},{"parent":"FUNC","rule":"LISTFROMRANGE","sum":1498},{"parent":"FUNC","rule":"LISTHAS","sum":31530},{"parent":"FUNC","rule":"LISTHASITEMS","sum":2093},{"parent":"FUNC","rule":"LISTHASItems","sum":1},{"parent":"FUNC","rule":"LISTHEAD","sum":18296},{"parent":"FUNC","rule":"LISTHas","sum":9},{"parent":"FUNC","rule":"LISTHead","sum":2},{"parent":"FUNC","rule":"LISTLAST","sum":1552},{"parent":"FUNC","rule":"LISTLENGTH","sum":48076},{"parent":"FUNC","rule":"LISTLENGth","sum":4},{"parent":"FUNC","rule":"LISTLenGTH","sum":7},{"parent":"FUNC","rule":"LISTLength","sum":2122},{"parent":"FUNC","rule":"LISTMAP","sum":14234},{"parent":"FUNC","rule":"LISTMAX","sum":6939},{"parent":"FUNC","rule":"LISTMIN","sum":187},{"parent":"FUNC","rule":"LISTMap","sum":365},{"parent":"FUNC","rule":"LISTNOTNULL","sum":8538},{"parent":"FUNC","rule":"LISTREVERSE","sum":2},{"parent":"FUNC","rule":"LISTSKIP","sum":15},{"parent":"FUNC","rule":"LISTSORT","sum":7613},{"parent":"FUNC","rule":"LISTSORTASC","sum":1666},{"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":351},{"parent":"FUNC","rule":"LIST_HAS","sum":2035},{"parent":"FUNC","rule":"LIST_HEAD","sum":100},{"parent":"FUNC","rule":"LIST_LAST","sum":54},{"parent":"FUNC","rule":"LIST_LENGTH","sum":2452},{"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":626},{"parent":"FUNC","rule":"LIST_SUM","sum":2},{"parent":"FUNC","rule":"LIST_TAKE","sum":2},{"parent":"FUNC","rule":"LIST_UNIQ","sum":343},{"parent":"FUNC","rule":"LIST_length","sum":1},{"parent":"FUNC","rule":"LISTfilter","sum":7},{"parent":"FUNC","rule":"LISTfromRange","sum":1417},{"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":350},{"parent":"FUNC","rule":"LIstMap","sum":1343},{"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":12315},{"parent":"FUNC","rule":"LambdaArgumentsCount","sum":32},{"parent":"FUNC","rule":"LambdaCode","sum":330239},{"parent":"FUNC","rule":"LastValue","sum":32},{"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":11179},{"parent":"FUNC","rule":"Least","sum":2216},{"parent":"FUNC","rule":"Len","sum":93003},{"parent":"FUNC","rule":"LenGTH","sum":12},{"parent":"FUNC","rule":"Length","sum":1248306},{"parent":"FUNC","rule":"LiSTMAP","sum":2},{"parent":"FUNC","rule":"Likely","sum":20762},{"parent":"FUNC","rule":"LinearHISTOGRAM","sum":86},{"parent":"FUNC","rule":"LinearHistogram","sum":46166},{"parent":"FUNC","rule":"LinearHistogramCDF","sum":463},{"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":1552},{"parent":"FUNC","rule":"ListALl","sum":8},{"parent":"FUNC","rule":"ListANY","sum":1722},{"parent":"FUNC","rule":"ListAVG","sum":240},{"parent":"FUNC","rule":"ListAgg","sum":2},{"parent":"FUNC","rule":"ListAggregate","sum":424985},{"parent":"FUNC","rule":"ListAll","sum":265153},{"parent":"FUNC","rule":"ListAny","sum":1880286},{"parent":"FUNC","rule":"ListAppend","sum":1},{"parent":"FUNC","rule":"ListAvg","sum":542328},{"parent":"FUNC","rule":"ListCOncat","sum":2},{"parent":"FUNC","rule":"ListCode","sum":209429},{"parent":"FUNC","rule":"ListCollect","sum":903405},{"parent":"FUNC","rule":"ListConCat","sum":99},{"parent":"FUNC","rule":"ListConcat","sum":5473538},{"parent":"FUNC","rule":"ListCreate","sum":1959344},{"parent":"FUNC","rule":"ListDistinct","sum":1},{"parent":"FUNC","rule":"ListEnumerate","sum":1399312},{"parent":"FUNC","rule":"ListExtEnd","sum":1},{"parent":"FUNC","rule":"ListExtend","sum":4375262},{"parent":"FUNC","rule":"ListExtendStrict","sum":91484},{"parent":"FUNC","rule":"ListExtract","sum":3343121},{"parent":"FUNC","rule":"ListFILTER","sum":540},{"parent":"FUNC","rule":"ListFIlter","sum":345},{"parent":"FUNC","rule":"ListFLatMap","sum":263},{"parent":"FUNC","rule":"ListFLatten","sum":578},{"parent":"FUNC","rule":"ListFROMRange","sum":5061},{"parent":"FUNC","rule":"ListFilteR","sum":4},{"parent":"FUNC","rule":"ListFilter","sum":17808256},{"parent":"FUNC","rule":"ListFirst","sum":3},{"parent":"FUNC","rule":"ListFlatMap","sum":908504},{"parent":"FUNC","rule":"ListFlatmap","sum":29149},{"parent":"FUNC","rule":"ListFlatten","sum":2822248},{"parent":"FUNC","rule":"ListFold","sum":232637},{"parent":"FUNC","rule":"ListFold1","sum":35605},{"parent":"FUNC","rule":"ListFold1Map","sum":3427},{"parent":"FUNC","rule":"ListFoldMap","sum":41412},{"parent":"FUNC","rule":"ListFromPython","sum":2},{"parent":"FUNC","rule":"ListFromRANGE","sum":23},{"parent":"FUNC","rule":"ListFromRAnge","sum":45},{"parent":"FUNC","rule":"ListFromRange","sum":3090733},{"parent":"FUNC","rule":"ListFromTuple","sum":59287},{"parent":"FUNC","rule":"ListFromTyple","sum":2},{"parent":"FUNC","rule":"ListFromrange","sum":12},{"parent":"FUNC","rule":"ListHAS","sum":384},{"parent":"FUNC","rule":"ListHAs","sum":556},{"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":20692887},{"parent":"FUNC","rule":"ListHasITems","sum":9},{"parent":"FUNC","rule":"ListHasItemhs","sum":1},{"parent":"FUNC","rule":"ListHasItems","sum":5125383},{"parent":"FUNC","rule":"ListHasitems","sum":342},{"parent":"FUNC","rule":"ListHeaD","sum":95},{"parent":"FUNC","rule":"ListHead","sum":10716553},{"parent":"FUNC","rule":"ListINdexOf","sum":2},{"parent":"FUNC","rule":"ListIndex","sum":1},{"parent":"FUNC","rule":"ListIndexOF","sum":10},{"parent":"FUNC","rule":"ListIndexOf","sum":1227811},{"parent":"FUNC","rule":"ListIndexof","sum":19},{"parent":"FUNC","rule":"ListItemType","sum":208215},{"parent":"FUNC","rule":"ListJoin","sum":3},{"parent":"FUNC","rule":"ListJsonDocument","sum":1},{"parent":"FUNC","rule":"ListLAst","sum":10},{"parent":"FUNC","rule":"ListLENGTH","sum":2222},{"parent":"FUNC","rule":"ListLEngth","sum":19},{"parent":"FUNC","rule":"ListLasT","sum":12},{"parent":"FUNC","rule":"ListLast","sum":5986734},{"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":18497952},{"parent":"FUNC","rule":"ListMAP","sum":227},{"parent":"FUNC","rule":"ListMAX","sum":10229},{"parent":"FUNC","rule":"ListMAp","sum":4807},{"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":35454479},{"parent":"FUNC","rule":"ListMax","sum":1416009},{"parent":"FUNC","rule":"ListMin","sum":814448},{"parent":"FUNC","rule":"ListNOTNull","sum":714},{"parent":"FUNC","rule":"ListNoTNull","sum":17},{"parent":"FUNC","rule":"ListNoTnull","sum":953},{"parent":"FUNC","rule":"ListNonNull","sum":1},{"parent":"FUNC","rule":"ListNotNULL","sum":30544},{"parent":"FUNC","rule":"ListNotNUll","sum":7772},{"parent":"FUNC","rule":"ListNotNuLL","sum":5},{"parent":"FUNC","rule":"ListNotNul","sum":1},{"parent":"FUNC","rule":"ListNotNulL","sum":3},{"parent":"FUNC","rule":"ListNotNull","sum":9254299},{"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":951308},{"parent":"FUNC","rule":"ListReverse","sum":1333079},{"parent":"FUNC","rule":"ListSORT","sum":1},{"parent":"FUNC","rule":"ListSORtAsc","sum":26},{"parent":"FUNC","rule":"ListSOrt","sum":3},{"parent":"FUNC","rule":"ListSUM","sum":854},{"parent":"FUNC","rule":"ListSUm","sum":12},{"parent":"FUNC","rule":"ListSample","sum":13},{"parent":"FUNC","rule":"ListSampleN","sum":706},{"parent":"FUNC","rule":"ListShuffle","sum":525},{"parent":"FUNC","rule":"ListShuffleN","sum":1},{"parent":"FUNC","rule":"ListSkip","sum":617760},{"parent":"FUNC","rule":"ListSkipWhile","sum":139511},{"parent":"FUNC","rule":"ListSkipWhileInclusive","sum":8743},{"parent":"FUNC","rule":"ListSort","sum":5009469},{"parent":"FUNC","rule":"ListSortASC","sum":18047},{"parent":"FUNC","rule":"ListSortAsc","sum":485962},{"parent":"FUNC","rule":"ListSortDESC","sum":56},{"parent":"FUNC","rule":"ListSortDEsc","sum":2},{"parent":"FUNC","rule":"ListSortDesc","sum":1136848},{"parent":"FUNC","rule":"ListSortasc","sum":9},{"parent":"FUNC","rule":"ListSortdesc","sum":638},{"parent":"FUNC","rule":"ListSum","sum":1750208},{"parent":"FUNC","rule":"ListTail","sum":1},{"parent":"FUNC","rule":"ListTake","sum":2153837},{"parent":"FUNC","rule":"ListTakeWhile","sum":89554},{"parent":"FUNC","rule":"ListTakeWhileInclusive","sum":2465},{"parent":"FUNC","rule":"ListToTuple","sum":6392},{"parent":"FUNC","rule":"ListTop","sum":2337},{"parent":"FUNC","rule":"ListTopAsc","sum":132},{"parent":"FUNC","rule":"ListTopDESC","sum":1},{"parent":"FUNC","rule":"ListTopDesc","sum":10812},{"parent":"FUNC","rule":"ListTopSort","sum":1051},{"parent":"FUNC","rule":"ListTopSortAsc","sum":40},{"parent":"FUNC","rule":"ListTopSortDesc","sum":60191},{"parent":"FUNC","rule":"ListTopdesc","sum":1},{"parent":"FUNC","rule":"ListType","sum":32196},{"parent":"FUNC","rule":"ListTypeHandle","sum":1},{"parent":"FUNC","rule":"ListUNiq","sum":30},{"parent":"FUNC","rule":"ListUnionALL","sum":128},{"parent":"FUNC","rule":"ListUnionAll","sum":56471},{"parent":"FUNC","rule":"ListUniq","sum":3978493},{"parent":"FUNC","rule":"ListUniqStable","sum":75921},{"parent":"FUNC","rule":"ListZIP","sum":8},{"parent":"FUNC","rule":"ListZIp","sum":1},{"parent":"FUNC","rule":"ListZip","sum":2532464},{"parent":"FUNC","rule":"ListZipALL","sum":290767},{"parent":"FUNC","rule":"ListZipAll","sum":275100},{"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":4448},{"parent":"FUNC","rule":"Listany","sum":38},{"parent":"FUNC","rule":"Listcollect","sum":5250},{"parent":"FUNC","rule":"Listconcat","sum":14858},{"parent":"FUNC","rule":"Listenumerate","sum":3},{"parent":"FUNC","rule":"Listextend","sum":5},{"parent":"FUNC","rule":"Listfilter","sum":263891},{"parent":"FUNC","rule":"Listflatmap","sum":297},{"parent":"FUNC","rule":"Listflatten","sum":33},{"parent":"FUNC","rule":"ListfromRange","sum":32},{"parent":"FUNC","rule":"Listfromrange","sum":110},{"parent":"FUNC","rule":"Listfromtuple","sum":1},{"parent":"FUNC","rule":"Listhas","sum":69815},{"parent":"FUNC","rule":"ListhasItems","sum":267},{"parent":"FUNC","rule":"Listhasitems","sum":488},{"parent":"FUNC","rule":"Listhead","sum":18578},{"parent":"FUNC","rule":"ListindexOf","sum":2077},{"parent":"FUNC","rule":"Listindexof","sum":4},{"parent":"FUNC","rule":"ListlENGTH","sum":1},{"parent":"FUNC","rule":"ListlEngth","sum":2},{"parent":"FUNC","rule":"Listlast","sum":4104},{"parent":"FUNC","rule":"Listlength","sum":10851},{"parent":"FUNC","rule":"Listmap","sum":11269},{"parent":"FUNC","rule":"Listmax","sum":495},{"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":1045},{"parent":"FUNC","rule":"Listsortasc","sum":1},{"parent":"FUNC","rule":"Listsortdesc","sum":1},{"parent":"FUNC","rule":"Listsum","sum":27},{"parent":"FUNC","rule":"Listtake","sum":20212},{"parent":"FUNC","rule":"ListtakeWhile","sum":2},{"parent":"FUNC","rule":"Listuniq","sum":326},{"parent":"FUNC","rule":"Listzip","sum":766},{"parent":"FUNC","rule":"Listzipall","sum":1},{"parent":"FUNC","rule":"LogHISTOGRAM","sum":7},{"parent":"FUNC","rule":"LogHistogram","sum":285},{"parent":"FUNC","rule":"LogHistogramCDF","sum":15},{"parent":"FUNC","rule":"LogarithmicHISTOGRAM","sum":1},{"parent":"FUNC","rule":"LogarithmicHistogram","sum":611},{"parent":"FUNC","rule":"Logarithmichistogram","sum":20},{"parent":"FUNC","rule":"Lookup","sum":1},{"parent":"FUNC","rule":"MAX","sum":34515863},{"parent":"FUNC","rule":"MAXBY","sum":123},{"parent":"FUNC","rule":"MAXOF","sum":3},{"parent":"FUNC","rule":"MAX_BY","sum":22826836},{"parent":"FUNC","rule":"MAX_By","sum":19},{"parent":"FUNC","rule":"MAX_IF","sum":1},{"parent":"FUNC","rule":"MAX_OF","sum":2198760},{"parent":"FUNC","rule":"MAX_Of","sum":2},{"parent":"FUNC","rule":"MAX_bY","sum":7},{"parent":"FUNC","rule":"MAX_by","sum":10595},{"parent":"FUNC","rule":"MAX_of","sum":596},{"parent":"FUNC","rule":"MAx","sum":286},{"parent":"FUNC","rule":"MEDIAN","sum":912799},{"parent":"FUNC","rule":"MEDiAN","sum":4},{"parent":"FUNC","rule":"MEdian","sum":14},{"parent":"FUNC","rule":"MIN","sum":14648475},{"parent":"FUNC","rule":"MINBY","sum":1906},{"parent":"FUNC","rule":"MIN_BY","sum":5284759},{"parent":"FUNC","rule":"MIN_IF","sum":8},{"parent":"FUNC","rule":"MIN_OF","sum":2264108},{"parent":"FUNC","rule":"MIN_by","sum":1285},{"parent":"FUNC","rule":"MIN_of","sum":2},{"parent":"FUNC","rule":"MIn","sum":199},{"parent":"FUNC","rule":"MIn_OF","sum":3},{"parent":"FUNC","rule":"MODE","sum":900632},{"parent":"FUNC","rule":"MODe","sum":1},{"parent":"FUNC","rule":"MONTH","sum":1},{"parent":"FUNC","rule":"MULTI_AGGREGATE_BY","sum":695092},{"parent":"FUNC","rule":"MaX","sum":7},{"parent":"FUNC","rule":"MakeDate","sum":1},{"parent":"FUNC","rule":"Map","sum":4},{"parent":"FUNC","rule":"Max","sum":379920},{"parent":"FUNC","rule":"MaxBy","sum":5401},{"parent":"FUNC","rule":"MaxOf","sum":207},{"parent":"FUNC","rule":"Max_BY","sum":3216},{"parent":"FUNC","rule":"Max_By","sum":70597},{"parent":"FUNC","rule":"Max_OF","sum":679},{"parent":"FUNC","rule":"Max_Of","sum":648},{"parent":"FUNC","rule":"Max_by","sum":141194},{"parent":"FUNC","rule":"Max_of","sum":3630},{"parent":"FUNC","rule":"Median","sum":19438},{"parent":"FUNC","rule":"MiN","sum":32},{"parent":"FUNC","rule":"Min","sum":193235},{"parent":"FUNC","rule":"MinBy","sum":1195},{"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":1312},{"parent":"FUNC","rule":"MoDE","sum":1},{"parent":"FUNC","rule":"Mode","sum":14678},{"parent":"FUNC","rule":"Mul","sum":1},{"parent":"FUNC","rule":"MultiAggregateBy","sum":643},{"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":411},{"parent":"FUNC","rule":"NANVL","sum":720019},{"parent":"FUNC","rule":"NOTHING","sum":3213},{"parent":"FUNC","rule":"NOW","sum":2},{"parent":"FUNC","rule":"NOW64","sum":2},{"parent":"FUNC","rule":"NOthing","sum":1},{"parent":"FUNC","rule":"NTH_VALUE","sum":2998},{"parent":"FUNC","rule":"NTILE","sum":1812},{"parent":"FUNC","rule":"NULLIF","sum":3},{"parent":"FUNC","rule":"NVL","sum":17663064},{"parent":"FUNC","rule":"NVl","sum":814},{"parent":"FUNC","rule":"NaNvl","sum":26},{"parent":"FUNC","rule":"NanVL","sum":1},{"parent":"FUNC","rule":"NanVl","sum":3},{"parent":"FUNC","rule":"Nanvl","sum":10762},{"parent":"FUNC","rule":"NothiNG","sum":2},{"parent":"FUNC","rule":"Nothing","sum":811549},{"parent":"FUNC","rule":"NullTypeHandle","sum":2344},{"parent":"FUNC","rule":"Nvl","sum":28388},{"parent":"FUNC","rule":"OR","sum":6},{"parent":"FUNC","rule":"OVER","sum":1},{"parent":"FUNC","rule":"OptionalItemType","sum":37171},{"parent":"FUNC","rule":"OptionalType","sum":137315},{"parent":"FUNC","rule":"OptionalTypeHandle","sum":44188},{"parent":"FUNC","rule":"PERCENTILE","sum":29880047},{"parent":"FUNC","rule":"PERCENTIlE","sum":4},{"parent":"FUNC","rule":"PERCENT_RANK","sum":6088},{"parent":"FUNC","rule":"PERCENtILE","sum":1952},{"parent":"FUNC","rule":"PERCEnTILE","sum":1},{"parent":"FUNC","rule":"PICKLE","sum":77},{"parent":"FUNC","rule":"PIckle","sum":7},{"parent":"FUNC","rule":"POPULATION_STDDEV","sum":365},{"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":952351},{"parent":"FUNC","rule":"ParseType","sum":463703},{"parent":"FUNC","rule":"ParseTypeHandle","sum":1189481},{"parent":"FUNC","rule":"Parsefile","sum":111},{"parent":"FUNC","rule":"Path","sum":4},{"parent":"FUNC","rule":"PeRCENTILE","sum":365},{"parent":"FUNC","rule":"Percentile","sum":72997},{"parent":"FUNC","rule":"PgArray","sum":17},{"parent":"FUNC","rule":"PgBool","sum":152},{"parent":"FUNC","rule":"PgCall","sum":552},{"parent":"FUNC","rule":"PgCast","sum":5580},{"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":118410},{"parent":"FUNC","rule":"QuoteCode","sum":723777},{"parent":"FUNC","rule":"RADIANS","sum":12},{"parent":"FUNC","rule":"RAND","sum":2},{"parent":"FUNC","rule":"RANDOM","sum":486258},{"parent":"FUNC","rule":"RANDOMNUMBER","sum":4002},{"parent":"FUNC","rule":"RANDOMNumber","sum":11},{"parent":"FUNC","rule":"RANDOMUUID","sum":5},{"parent":"FUNC","rule":"RANDOM_NUMBER","sum":83},{"parent":"FUNC","rule":"RANGE","sum":150},{"parent":"FUNC","rule":"RANK","sum":943535},{"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":3580748},{"parent":"FUNC","rule":"RFind","sum":252143},{"parent":"FUNC","rule":"RIGHT","sum":2},{"parent":"FUNC","rule":"ROUND","sum":10},{"parent":"FUNC","rule":"ROWNUMBER","sum":33},{"parent":"FUNC","rule":"ROW_NUMBER","sum":9398855},{"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":13485},{"parent":"FUNC","rule":"Rand","sum":1},{"parent":"FUNC","rule":"Random","sum":731275},{"parent":"FUNC","rule":"RandomNUmber","sum":172},{"parent":"FUNC","rule":"RandomNumber","sum":271843},{"parent":"FUNC","rule":"RandomUUID","sum":8087},{"parent":"FUNC","rule":"RandomUUid","sum":33004},{"parent":"FUNC","rule":"RandomUuid","sum":214066},{"parent":"FUNC","rule":"Randomnumber","sum":2},{"parent":"FUNC","rule":"Range","sum":2},{"parent":"FUNC","rule":"Rank","sum":3091},{"parent":"FUNC","rule":"RemoveMEmbers","sum":16},{"parent":"FUNC","rule":"RemoveMember","sum":431434},{"parent":"FUNC","rule":"RemoveMembers","sum":727140},{"parent":"FUNC","rule":"RemoveTimeZone","sum":13},{"parent":"FUNC","rule":"RemoveTimezone","sum":433575},{"parent":"FUNC","rule":"Removemember","sum":686},{"parent":"FUNC","rule":"Removemembers","sum":4},{"parent":"FUNC","rule":"RenameMembers","sum":504186},{"parent":"FUNC","rule":"ReplaceMember","sum":9374},{"parent":"FUNC","rule":"ReprCode","sum":195638},{"parent":"FUNC","rule":"ResourceType","sum":9},{"parent":"FUNC","rule":"Rfind","sum":870},{"parent":"FUNC","rule":"RootAttributes","sum":20},{"parent":"FUNC","rule":"RowNum","sum":1},{"parent":"FUNC","rule":"RowNumber","sum":21077},{"parent":"FUNC","rule":"Row_NUMBER","sum":33},{"parent":"FUNC","rule":"Row_NUmber","sum":16},{"parent":"FUNC","rule":"Row_Number","sum":60208},{"parent":"FUNC","rule":"Row_number","sum":4109},{"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":32962069},{"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":25435},{"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":400454},{"parent":"FUNC","rule":"STDDEVPOP","sum":2821},{"parent":"FUNC","rule":"STDDEVSAMP","sum":1096},{"parent":"FUNC","rule":"STDDEV_POP","sum":14},{"parent":"FUNC","rule":"STDDEV_POPULATION","sum":18575},{"parent":"FUNC","rule":"STDDEV_SAMP","sum":3383},{"parent":"FUNC","rule":"STDDEV_SAMPLE","sum":9929},{"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_Distance","sum":5},{"parent":"FUNC","rule":"ST_GeomFromGeoHash","sum":1},{"parent":"FUNC","rule":"ST_Point","sum":10},{"parent":"FUNC","rule":"ST_PolygonFromText","sum":5},{"parent":"FUNC","rule":"ST_SetSRID","sum":6},{"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":29486312},{"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":222},{"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":42518480},{"parent":"FUNC","rule":"SUMIF","sum":3307},{"parent":"FUNC","rule":"SUM_","sum":317},{"parent":"FUNC","rule":"SUM_IF","sum":8450348},{"parent":"FUNC","rule":"SUM_If","sum":117},{"parent":"FUNC","rule":"SUM_iF","sum":19},{"parent":"FUNC","rule":"SUM_if","sum":266967},{"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":899360},{"parent":"FUNC","rule":"SessionStart","sum":24214},{"parent":"FUNC","rule":"SessionState","sum":715},{"parent":"FUNC","rule":"SessionWindow","sum":102011},{"parent":"FUNC","rule":"SetBit","sum":44653},{"parent":"FUNC","rule":"SetContains","sum":1},{"parent":"FUNC","rule":"SetCreate","sum":45695},{"parent":"FUNC","rule":"SetDIfference","sum":11},{"parent":"FUNC","rule":"SetDifference","sum":485655},{"parent":"FUNC","rule":"SetINtersection","sum":1},{"parent":"FUNC","rule":"SetIncludes","sum":246893},{"parent":"FUNC","rule":"SetInterSection","sum":21},{"parent":"FUNC","rule":"SetIntersection","sum":1266285},{"parent":"FUNC","rule":"SetIsDisJOINt","sum":8105},{"parent":"FUNC","rule":"SetIsDisJoint","sum":1682},{"parent":"FUNC","rule":"SetIsDisjoint","sum":1239534},{"parent":"FUNC","rule":"SetSymmetricDifference","sum":8881},{"parent":"FUNC","rule":"SetUNION","sum":1},{"parent":"FUNC","rule":"SetUnion","sum":587911},{"parent":"FUNC","rule":"Setintersection","sum":4469},{"parent":"FUNC","rule":"SizeOf","sum":1},{"parent":"FUNC","rule":"Some","sum":2527597},{"parent":"FUNC","rule":"SplitToList","sum":6},{"parent":"FUNC","rule":"SpreadMembers","sum":344856},{"parent":"FUNC","rule":"StablePicke","sum":1},{"parent":"FUNC","rule":"StablePickle","sum":212261},{"parent":"FUNC","rule":"StartSwith","sum":105},{"parent":"FUNC","rule":"StartsWIth","sum":703},{"parent":"FUNC","rule":"StartsWith","sum":5761432},{"parent":"FUNC","rule":"Startswith","sum":19556},{"parent":"FUNC","rule":"StaticFold","sum":306},{"parent":"FUNC","rule":"StaticMap","sum":683879},{"parent":"FUNC","rule":"StaticZip","sum":14379},{"parent":"FUNC","rule":"Staticmap","sum":2},{"parent":"FUNC","rule":"StdDev","sum":33},{"parent":"FUNC","rule":"Stddev","sum":43},{"parent":"FUNC","rule":"StreamItemType","sum":5717},{"parent":"FUNC","rule":"StreamType","sum":78367},{"parent":"FUNC","rule":"StreamTypeHandle","sum":17},{"parent":"FUNC","rule":"String","sum":34439},{"parent":"FUNC","rule":"StringLength","sum":5},{"parent":"FUNC","rule":"StringSplitToList","sum":4},{"parent":"FUNC","rule":"StructDifference","sum":235},{"parent":"FUNC","rule":"StructIntersection","sum":811},{"parent":"FUNC","rule":"StructMemberType","sum":19757},{"parent":"FUNC","rule":"StructMembers","sum":969975},{"parent":"FUNC","rule":"StructSymmetricDifference","sum":172},{"parent":"FUNC","rule":"StructType","sum":17999},{"parent":"FUNC","rule":"StructTypeComponents","sum":99610},{"parent":"FUNC","rule":"StructTypeHandle","sum":87847},{"parent":"FUNC","rule":"StructUnion","sum":100902},{"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":27399},{"parent":"FUNC","rule":"SubqueryAssumeOrderBy","sum":842},{"parent":"FUNC","rule":"SubqueryExtend","sum":37066},{"parent":"FUNC","rule":"SubqueryExtendFor","sum":769785},{"parent":"FUNC","rule":"SubqueryMerge","sum":19},{"parent":"FUNC","rule":"SubqueryMergeFor","sum":36395},{"parent":"FUNC","rule":"SubqueryOrderBy","sum":183831},{"parent":"FUNC","rule":"SubqueryUnionALLFor","sum":9},{"parent":"FUNC","rule":"SubqueryUnionALlFor","sum":76},{"parent":"FUNC","rule":"SubqueryUnionAll","sum":26080},{"parent":"FUNC","rule":"SubqueryUnionAllFor","sum":140800},{"parent":"FUNC","rule":"SubqueryUnionAllfor","sum":380},{"parent":"FUNC","rule":"SubqueryUnionMerge","sum":30574},{"parent":"FUNC","rule":"SubqueryUnionMergeFor","sum":73776},{"parent":"FUNC","rule":"SubsTRING","sum":3},{"parent":"FUNC","rule":"Substring","sum":2922245},{"parent":"FUNC","rule":"Sum","sum":453802},{"parent":"FUNC","rule":"SumIf","sum":1597},{"parent":"FUNC","rule":"Sum_IF","sum":85},{"parent":"FUNC","rule":"Sum_If","sum":14030},{"parent":"FUNC","rule":"Sum_if","sum":52960},{"parent":"FUNC","rule":"TABLENAME","sum":12019},{"parent":"FUNC","rule":"TABLEPATH","sum":282},{"parent":"FUNC","rule":"TABLERECORDINDEX","sum":45},{"parent":"FUNC","rule":"TABLEROW","sum":1253},{"parent":"FUNC","rule":"TABLE_NAME","sum":138},{"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":68},{"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":420},{"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":501195},{"parent":"FUNC","rule":"TOPBY","sum":1},{"parent":"FUNC","rule":"TOPFREQ","sum":510950},{"parent":"FUNC","rule":"TOPFreq","sum":3},{"parent":"FUNC","rule":"TOP_BY","sum":1770572},{"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":774},{"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":135},{"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":1633},{"parent":"FUNC","rule":"TableNamE","sum":2},{"parent":"FUNC","rule":"TableName","sum":15042117},{"parent":"FUNC","rule":"TablePATH","sum":1},{"parent":"FUNC","rule":"TablePAth","sum":5},{"parent":"FUNC","rule":"TablePath","sum":1501216},{"parent":"FUNC","rule":"TableROW","sum":4},{"parent":"FUNC","rule":"TableROw","sum":19},{"parent":"FUNC","rule":"TableRecordINdex","sum":4},{"parent":"FUNC","rule":"TableRecordIndex","sum":2316230},{"parent":"FUNC","rule":"TableRedordIndex","sum":1},{"parent":"FUNC","rule":"TableRow","sum":27008055},{"parent":"FUNC","rule":"TableRowIndex","sum":1},{"parent":"FUNC","rule":"TableRows","sum":1687797},{"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":104251},{"parent":"FUNC","rule":"Tablepath","sum":205},{"parent":"FUNC","rule":"TablerRow","sum":1},{"parent":"FUNC","rule":"TablerecordIndex","sum":1},{"parent":"FUNC","rule":"Tablerecordindex","sum":3},{"parent":"FUNC","rule":"Tablerow","sum":26428},{"parent":"FUNC","rule":"TestBit","sum":253322},{"parent":"FUNC","rule":"Text","sum":20},{"parent":"FUNC","rule":"TimeStamp","sum":4383},{"parent":"FUNC","rule":"Timestamp","sum":1352330},{"parent":"FUNC","rule":"Timestamp64","sum":59},{"parent":"FUNC","rule":"ToBytes","sum":6649582},{"parent":"FUNC","rule":"ToDIct","sum":258},{"parent":"FUNC","rule":"ToDict","sum":6404050},{"parent":"FUNC","rule":"ToList","sum":3},{"parent":"FUNC","rule":"ToLower","sum":4},{"parent":"FUNC","rule":"ToMilliseconds","sum":2},{"parent":"FUNC","rule":"ToMultiDict","sum":339195},{"parent":"FUNC","rule":"ToPg","sum":3151},{"parent":"FUNC","rule":"ToSET","sum":80},{"parent":"FUNC","rule":"ToSet","sum":5473624},{"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":810},{"parent":"FUNC","rule":"TopBy","sum":77},{"parent":"FUNC","rule":"TopFreq","sum":13726},{"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":16740604},{"parent":"FUNC","rule":"Trymember","sum":36901},{"parent":"FUNC","rule":"TupleElementType","sum":7628},{"parent":"FUNC","rule":"TupleType","sum":2404},{"parent":"FUNC","rule":"TupleTypeComponents","sum":58},{"parent":"FUNC","rule":"TupleTypeHandle","sum":5589},{"parent":"FUNC","rule":"TypeHandle","sum":161732},{"parent":"FUNC","rule":"TypeKind","sum":54811},{"parent":"FUNC","rule":"TypeOF","sum":37},{"parent":"FUNC","rule":"TypeOf","sum":848023},{"parent":"FUNC","rule":"Typeof","sum":78},{"parent":"FUNC","rule":"TzDate","sum":671},{"parent":"FUNC","rule":"TzDate32","sum":7},{"parent":"FUNC","rule":"TzDateTime","sum":24914},{"parent":"FUNC","rule":"TzDateTime64","sum":7},{"parent":"FUNC","rule":"TzDatetime","sum":46364},{"parent":"FUNC","rule":"TzTimeStamp","sum":4},{"parent":"FUNC","rule":"TzTimestamp","sum":343086},{"parent":"FUNC","rule":"TzTimestamp64","sum":7},{"parent":"FUNC","rule":"UBSTRING","sum":1},{"parent":"FUNC","rule":"UDAF","sum":141471},{"parent":"FUNC","rule":"UDF","sum":1822},{"parent":"FUNC","rule":"UINT32","sum":4},{"parent":"FUNC","rule":"UINT64","sum":6},{"parent":"FUNC","rule":"UInt32","sum":110038},{"parent":"FUNC","rule":"UInt64","sum":829},{"parent":"FUNC","rule":"UInt8","sum":421},{"parent":"FUNC","rule":"UNIQ","sum":1},{"parent":"FUNC","rule":"UNPICKLE","sum":28},{"parent":"FUNC","rule":"UNTAG","sum":18},{"parent":"FUNC","rule":"UNWRAP","sum":14008231},{"parent":"FUNC","rule":"UNWRAp","sum":1},{"parent":"FUNC","rule":"UNWRaP","sum":1},{"parent":"FUNC","rule":"UNWRap","sum":10490},{"parent":"FUNC","rule":"UNWrAP","sum":11},{"parent":"FUNC","rule":"UNWraP","sum":8},{"parent":"FUNC","rule":"UNWrap","sum":4},{"parent":"FUNC","rule":"UNwRAP","sum":6},{"parent":"FUNC","rule":"UNwrap","sum":1355},{"parent":"FUNC","rule":"USING","sum":6},{"parent":"FUNC","rule":"UTF8","sum":337764},{"parent":"FUNC","rule":"UUID","sum":1},{"parent":"FUNC","rule":"Udf","sum":299447},{"parent":"FUNC","rule":"Uint16","sum":83},{"parent":"FUNC","rule":"Uint32","sum":331912},{"parent":"FUNC","rule":"Uint64","sum":11976},{"parent":"FUNC","rule":"Uint8","sum":2921},{"parent":"FUNC","rule":"UnTag","sum":55},{"parent":"FUNC","rule":"UnWRAP","sum":10},{"parent":"FUNC","rule":"UnWrAp","sum":1},{"parent":"FUNC","rule":"UnWrap","sum":1072429},{"parent":"FUNC","rule":"UnionAll","sum":3},{"parent":"FUNC","rule":"Unpickle","sum":180},{"parent":"FUNC","rule":"Untag","sum":15484},{"parent":"FUNC","rule":"Unwarp","sum":1},{"parent":"FUNC","rule":"Unwrap","sum":35759752},{"parent":"FUNC","rule":"UtcCurrentDatetime","sum":8},{"parent":"FUNC","rule":"Utf8","sum":41056},{"parent":"FUNC","rule":"Uuid","sum":453},{"parent":"FUNC","rule":"VALUES","sum":14},{"parent":"FUNC","rule":"VARIANCE","sum":31051},{"parent":"FUNC","rule":"VARIANCE_POPULATION","sum":3016},{"parent":"FUNC","rule":"VARIANCE_SAMPLE","sum":1240},{"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":1146},{"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":3175},{"parent":"FUNC","rule":"VariantTypeHandle","sum":8},{"parent":"FUNC","rule":"VariantUnderlyingType","sum":6519},{"parent":"FUNC","rule":"Version","sum":3},{"parent":"FUNC","rule":"Visit","sum":28},{"parent":"FUNC","rule":"Void","sum":92606},{"parent":"FUNC","rule":"WEAKFIELD","sum":834},{"parent":"FUNC","rule":"WEAK_FIELD","sum":374},{"parent":"FUNC","rule":"WEakField","sum":2},{"parent":"FUNC","rule":"Way","sum":8991},{"parent":"FUNC","rule":"WeakFIeld","sum":43},{"parent":"FUNC","rule":"WeakField","sum":21170482},{"parent":"FUNC","rule":"WeakFiled","sum":2},{"parent":"FUNC","rule":"Weakfield","sum":1912},{"parent":"FUNC","rule":"WorldCode","sum":372},{"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":608385},{"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":1550616},{"parent":"FUNC","rule":"addMember","sum":2582},{"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":1285452},{"parent":"FUNC","rule":"agg_list_DISTINCT","sum":2},{"parent":"FUNC","rule":"agg_list_Distinct","sum":1},{"parent":"FUNC","rule":"agg_list_distinct","sum":434951},{"parent":"FUNC","rule":"agg_set","sum":1},{"parent":"FUNC","rule":"agglist","sum":122},{"parent":"FUNC","rule":"agglistdistinct","sum":27},{"parent":"FUNC","rule":"aggr_list","sum":2670},{"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":369},{"parent":"FUNC","rule":"aggregateListDistinct","sum":37},{"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":369867},{"parent":"FUNC","rule":"aggregate_list","sum":2507268},{"parent":"FUNC","rule":"aggregate_list_","sum":1},{"parent":"FUNC","rule":"aggregate_list_DISTINCT","sum":1790},{"parent":"FUNC","rule":"aggregate_list_Distinct","sum":27},{"parent":"FUNC","rule":"aggregate_list_distinct","sum":940324},{"parent":"FUNC","rule":"aggregatelist","sum":556},{"parent":"FUNC","rule":"aggregatetransforminput","sum":1},{"parent":"FUNC","rule":"aggregationFactory","sum":134},{"parent":"FUNC","rule":"aggregation_factory","sum":9007},{"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":14},{"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":1},{"parent":"FUNC","rule":"asDict","sum":3801},{"parent":"FUNC","rule":"asLIST","sum":50},{"parent":"FUNC","rule":"asList","sum":175410},{"parent":"FUNC","rule":"asSet","sum":1978},{"parent":"FUNC","rule":"asStruct","sum":116578},{"parent":"FUNC","rule":"asTUPLE","sum":1},{"parent":"FUNC","rule":"asTagged","sum":2117},{"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":367},{"parent":"FUNC","rule":"asdict","sum":3856},{"parent":"FUNC","rule":"asenum","sum":13},{"parent":"FUNC","rule":"aslist","sum":164797},{"parent":"FUNC","rule":"assessments_integralListReverse","sum":2},{"parent":"FUNC","rule":"asset","sum":1154},{"parent":"FUNC","rule":"asstruct","sum":12980},{"parent":"FUNC","rule":"assumeNotNull","sum":3},{"parent":"FUNC","rule":"astagged","sum":1383},{"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":6007241},{"parent":"FUNC","rule":"avgIf","sum":19330},{"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":497377},{"parent":"FUNC","rule":"ax","sum":13},{"parent":"FUNC","rule":"bit_or","sum":26592},{"parent":"FUNC","rule":"bool","sum":279},{"parent":"FUNC","rule":"bool_and","sum":67086},{"parent":"FUNC","rule":"bool_or","sum":237042},{"parent":"FUNC","rule":"bool_xor","sum":2},{"parent":"FUNC","rule":"bottom","sum":10584},{"parent":"FUNC","rule":"bottom_by","sum":332186},{"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":24980542},{"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":3875},{"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":38634912},{"parent":"FUNC","rule":"countDistinct","sum":1},{"parent":"FUNC","rule":"countDistinctEstimate","sum":272527},{"parent":"FUNC","rule":"countIF","sum":8373},{"parent":"FUNC","rule":"countIf","sum":1390204},{"parent":"FUNC","rule":"count_","sum":555},{"parent":"FUNC","rule":"count_IF","sum":34194},{"parent":"FUNC","rule":"count_If","sum":26486},{"parent":"FUNC","rule":"count_distinct_estimate","sum":33},{"parent":"FUNC","rule":"count_if","sum":18926527},{"parent":"FUNC","rule":"countdistinctEstimate","sum":1793},{"parent":"FUNC","rule":"countdistinctestimate","sum":2835},{"parent":"FUNC","rule":"countif","sum":21244},{"parent":"FUNC","rule":"covar","sum":243},{"parent":"FUNC","rule":"covariance","sum":285},{"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":3995},{"parent":"FUNC","rule":"currentTzTimestamp","sum":53},{"parent":"FUNC","rule":"currentUTCDATETIME","sum":19},{"parent":"FUNC","rule":"currentUTCDate","sum":657},{"parent":"FUNC","rule":"currentUTCDateTime","sum":305},{"parent":"FUNC","rule":"currentUTCdate","sum":364},{"parent":"FUNC","rule":"currentUTCdatetime","sum":20},{"parent":"FUNC","rule":"currentUTcdate","sum":1334},{"parent":"FUNC","rule":"currentUtcDate","sum":6288},{"parent":"FUNC","rule":"currentUtcDateTime","sum":14407},{"parent":"FUNC","rule":"currentUtcDatetime","sum":2376},{"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":262},{"parent":"FUNC","rule":"currenttztimestamp","sum":47},{"parent":"FUNC","rule":"currentutcDateTime","sum":3},{"parent":"FUNC","rule":"currentutcdate","sum":118575},{"parent":"FUNC","rule":"currentutcdatetime","sum":58411},{"parent":"FUNC","rule":"currentutctimestamp","sum":48324},{"parent":"FUNC","rule":"d","sum":1},{"parent":"FUNC","rule":"dATE","sum":4},{"parent":"FUNC","rule":"date","sum":415478},{"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_from_ts","sum":1},{"parent":"FUNC","rule":"date_sub","sum":2},{"parent":"FUNC","rule":"dateadd","sum":1},{"parent":"FUNC","rule":"datetime","sum":11813},{"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":46285},{"parent":"FUNC","rule":"dictAggregate","sum":56},{"parent":"FUNC","rule":"dictContains","sum":7},{"parent":"FUNC","rule":"dictGetString","sum":1},{"parent":"FUNC","rule":"dictItems","sum":8443},{"parent":"FUNC","rule":"dictKeys","sum":1199},{"parent":"FUNC","rule":"dictLength","sum":104},{"parent":"FUNC","rule":"dictLookUp","sum":9345},{"parent":"FUNC","rule":"dictLookup","sum":675},{"parent":"FUNC","rule":"dictPayloads","sum":90},{"parent":"FUNC","rule":"dict_keys","sum":8696},{"parent":"FUNC","rule":"dictcontains","sum":344},{"parent":"FUNC","rule":"dictcreate","sum":2},{"parent":"FUNC","rule":"dicthasitems","sum":24},{"parent":"FUNC","rule":"dictitems","sum":2496},{"parent":"FUNC","rule":"dictkeys","sum":896},{"parent":"FUNC","rule":"dictlength","sum":6531},{"parent":"FUNC","rule":"dictlookup","sum":1585},{"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":2161},{"parent":"FUNC","rule":"endswith","sum":31546},{"parent":"FUNC","rule":"ensure","sum":408577},{"parent":"FUNC","rule":"ensuretype","sum":708},{"parent":"FUNC","rule":"evaluateCode","sum":52},{"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":988},{"parent":"FUNC","rule":"filter","sum":2},{"parent":"FUNC","rule":"find","sum":4065628},{"parent":"FUNC","rule":"first_VALUE","sum":19},{"parent":"FUNC","rule":"first_route_timestamp","sum":1},{"parent":"FUNC","rule":"first_value","sum":1147813},{"parent":"FUNC","rule":"flatten","sum":1},{"parent":"FUNC","rule":"float","sum":23035},{"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":130},{"parent":"FUNC","rule":"fromUnixTimestamp64Micro","sum":1},{"parent":"FUNC","rule":"from_bytes","sum":2},{"parent":"FUNC","rule":"frombytes","sum":47},{"parent":"FUNC","rule":"frompg","sum":129},{"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":318150},{"parent":"FUNC","rule":"groupArray","sum":4},{"parent":"FUNC","rule":"groupUniqArray","sum":2},{"parent":"FUNC","rule":"grouping","sum":17591},{"parent":"FUNC","rule":"hISTOGRAM","sum":2},{"parent":"FUNC","rule":"has","sum":16},{"parent":"FUNC","rule":"histOGRAM","sum":4},{"parent":"FUNC","rule":"histograM","sum":359},{"parent":"FUNC","rule":"histogram","sum":52782},{"parent":"FUNC","rule":"histogramcdf","sum":84},{"parent":"FUNC","rule":"hll","sum":82167},{"parent":"FUNC","rule":"iF","sum":2688},{"parent":"FUNC","rule":"iNtErVaL","sum":1},{"parent":"FUNC","rule":"if","sum":43171932},{"parent":"FUNC","rule":"ifNull","sum":6},{"parent":"FUNC","rule":"in","sum":13},{"parent":"FUNC","rule":"indexOf","sum":6},{"parent":"FUNC","rule":"instanceof","sum":55},{"parent":"FUNC","rule":"instr","sum":1},{"parent":"FUNC","rule":"int","sum":32302},{"parent":"FUNC","rule":"int32","sum":2},{"parent":"FUNC","rule":"int64","sum":19},{"parent":"FUNC","rule":"int8","sum":2},{"parent":"FUNC","rule":"intervaL","sum":9360},{"parent":"FUNC","rule":"interval","sum":1798205},{"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":5614},{"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":244471},{"parent":"FUNC","rule":"lAG","sum":2250},{"parent":"FUNC","rule":"lEAD","sum":6796},{"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":1012017},{"parent":"FUNC","rule":"last_VALUE","sum":14},{"parent":"FUNC","rule":"last_value","sum":1088627},{"parent":"FUNC","rule":"lead","sum":928421},{"parent":"FUNC","rule":"least","sum":374625},{"parent":"FUNC","rule":"len","sum":712039},{"parent":"FUNC","rule":"lenGTH","sum":1},{"parent":"FUNC","rule":"lenght","sum":1},{"parent":"FUNC","rule":"lengtH","sum":2},{"parent":"FUNC","rule":"length","sum":2548583},{"parent":"FUNC","rule":"like","sum":4},{"parent":"FUNC","rule":"likely","sum":16461},{"parent":"FUNC","rule":"linearHISTOGRAM","sum":10},{"parent":"FUNC","rule":"linearHistogram","sum":11},{"parent":"FUNC","rule":"linearhistogram","sum":171},{"parent":"FUNC","rule":"linearhistogramcdf","sum":20},{"parent":"FUNC","rule":"listALL","sum":3},{"parent":"FUNC","rule":"listAVG","sum":887},{"parent":"FUNC","rule":"listAggregateUnique","sum":1},{"parent":"FUNC","rule":"listAll","sum":86},{"parent":"FUNC","rule":"listAny","sum":121},{"parent":"FUNC","rule":"listAvg","sum":102},{"parent":"FUNC","rule":"listCollect","sum":378},{"parent":"FUNC","rule":"listConcat","sum":11083},{"parent":"FUNC","rule":"listEnumerate","sum":132},{"parent":"FUNC","rule":"listExtend","sum":6680},{"parent":"FUNC","rule":"listExtract","sum":24},{"parent":"FUNC","rule":"listFilter","sum":39682},{"parent":"FUNC","rule":"listFlatten","sum":289},{"parent":"FUNC","rule":"listFold","sum":300},{"parent":"FUNC","rule":"listFromRange","sum":770},{"parent":"FUNC","rule":"listHAs","sum":52},{"parent":"FUNC","rule":"listHas","sum":41485},{"parent":"FUNC","rule":"listHasItems","sum":3240},{"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":1011},{"parent":"FUNC","rule":"listLength","sum":29751},{"parent":"FUNC","rule":"listMAX","sum":1},{"parent":"FUNC","rule":"listMIN","sum":1},{"parent":"FUNC","rule":"listMap","sum":53473},{"parent":"FUNC","rule":"listMax","sum":813},{"parent":"FUNC","rule":"listMin","sum":170},{"parent":"FUNC","rule":"listNotNull","sum":279},{"parent":"FUNC","rule":"listReverse","sum":4320},{"parent":"FUNC","rule":"listSkip","sum":18},{"parent":"FUNC","rule":"listSort","sum":23329},{"parent":"FUNC","rule":"listSortAsc","sum":2},{"parent":"FUNC","rule":"listSortDesc","sum":199},{"parent":"FUNC","rule":"listSum","sum":1472},{"parent":"FUNC","rule":"listTake","sum":734},{"parent":"FUNC","rule":"listTopSort","sum":18},{"parent":"FUNC","rule":"listUniq","sum":10540},{"parent":"FUNC","rule":"listUniqStable","sum":1},{"parent":"FUNC","rule":"listZip","sum":1339},{"parent":"FUNC","rule":"listZipAll","sum":1424},{"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":262},{"parent":"FUNC","rule":"list_filter","sum":2},{"parent":"FUNC","rule":"list_flatten","sum":15},{"parent":"FUNC","rule":"list_has","sum":6239},{"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":13228},{"parent":"FUNC","rule":"listany","sum":15147},{"parent":"FUNC","rule":"listavg","sum":11752},{"parent":"FUNC","rule":"listcollect","sum":505},{"parent":"FUNC","rule":"listconcat","sum":19388},{"parent":"FUNC","rule":"listcreate","sum":10},{"parent":"FUNC","rule":"listenumerate","sum":2076},{"parent":"FUNC","rule":"listextend","sum":3845},{"parent":"FUNC","rule":"listextendstrict","sum":61},{"parent":"FUNC","rule":"listextract","sum":1831},{"parent":"FUNC","rule":"listfilter","sum":102248},{"parent":"FUNC","rule":"listflatmap","sum":7221},{"parent":"FUNC","rule":"listflatten","sum":22581},{"parent":"FUNC","rule":"listfold","sum":16},{"parent":"FUNC","rule":"listfold1map","sum":60},{"parent":"FUNC","rule":"listfromRange","sum":15},{"parent":"FUNC","rule":"listfromrange","sum":14073},{"parent":"FUNC","rule":"listfromtuple","sum":58},{"parent":"FUNC","rule":"listhas","sum":172035},{"parent":"FUNC","rule":"listhasItems","sum":34},{"parent":"FUNC","rule":"listhasitems","sum":10543},{"parent":"FUNC","rule":"listhead","sum":18546},{"parent":"FUNC","rule":"listindexof","sum":1206},{"parent":"FUNC","rule":"listlast","sum":3097},{"parent":"FUNC","rule":"listlength","sum":343216},{"parent":"FUNC","rule":"listmap","sum":517934},{"parent":"FUNC","rule":"listmax","sum":3950},{"parent":"FUNC","rule":"listmin","sum":2669},{"parent":"FUNC","rule":"listnotNull","sum":1},{"parent":"FUNC","rule":"listnotnull","sum":12906},{"parent":"FUNC","rule":"listreplicate","sum":49},{"parent":"FUNC","rule":"listreverse","sum":2241},{"parent":"FUNC","rule":"listskip","sum":1176},{"parent":"FUNC","rule":"listsort","sum":56414},{"parent":"FUNC","rule":"listsortDesc","sum":1},{"parent":"FUNC","rule":"listsortasc","sum":383},{"parent":"FUNC","rule":"listsortdesc","sum":3962},{"parent":"FUNC","rule":"listsum","sum":3416},{"parent":"FUNC","rule":"listtake","sum":16090},{"parent":"FUNC","rule":"listtop","sum":68},{"parent":"FUNC","rule":"listunionall","sum":8},{"parent":"FUNC","rule":"listuniq","sum":25574},{"parent":"FUNC","rule":"listuniqstable","sum":94},{"parent":"FUNC","rule":"listzip","sum":16664},{"parent":"FUNC","rule":"listzipALL","sum":2},{"parent":"FUNC","rule":"listzipAll","sum":11},{"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":131},{"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":25147259},{"parent":"FUNC","rule":"maxBy","sum":1},{"parent":"FUNC","rule":"maxOf","sum":3529},{"parent":"FUNC","rule":"max_","sum":1},{"parent":"FUNC","rule":"max_BY","sum":2357},{"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":28967975},{"parent":"FUNC","rule":"max_if","sum":3},{"parent":"FUNC","rule":"max_of","sum":1282982},{"parent":"FUNC","rule":"maxby","sum":4208},{"parent":"FUNC","rule":"maxof","sum":852},{"parent":"FUNC","rule":"md5int","sum":1},{"parent":"FUNC","rule":"median","sum":381741},{"parent":"FUNC","rule":"metric_exp","sum":1},{"parent":"FUNC","rule":"min","sum":10259043},{"parent":"FUNC","rule":"minOf","sum":2},{"parent":"FUNC","rule":"min_BY","sum":8617},{"parent":"FUNC","rule":"min_By","sum":6},{"parent":"FUNC","rule":"min_OF","sum":9},{"parent":"FUNC","rule":"min_Of","sum":343},{"parent":"FUNC","rule":"min_by","sum":2330282},{"parent":"FUNC","rule":"min_if","sum":10},{"parent":"FUNC","rule":"min_of","sum":577330},{"parent":"FUNC","rule":"minby","sum":1},{"parent":"FUNC","rule":"minof","sum":98},{"parent":"FUNC","rule":"mode","sum":117583},{"parent":"FUNC","rule":"multiIf","sum":2},{"parent":"FUNC","rule":"multi_aggregate_by","sum":117499},{"parent":"FUNC","rule":"nanvl","sum":129162},{"parent":"FUNC","rule":"notEmpty","sum":2},{"parent":"FUNC","rule":"nothing","sum":12869},{"parent":"FUNC","rule":"now","sum":16},{"parent":"FUNC","rule":"nth_value","sum":17},{"parent":"FUNC","rule":"ntile","sum":339},{"parent":"FUNC","rule":"nvL","sum":62},{"parent":"FUNC","rule":"nvl","sum":14029600},{"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":150},{"parent":"FUNC","rule":"parseForErrors","sum":32},{"parent":"FUNC","rule":"parse_dt_formatted","sum":1},{"parent":"FUNC","rule":"parsefile","sum":11196},{"parent":"FUNC","rule":"percent_rank","sum":2192},{"parent":"FUNC","rule":"percentile","sum":3352530},{"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":"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":260140},{"parent":"FUNC","rule":"randomNumber","sum":10},{"parent":"FUNC","rule":"randomUuid","sum":152},{"parent":"FUNC","rule":"random_number","sum":11},{"parent":"FUNC","rule":"randomnumber","sum":477},{"parent":"FUNC","rule":"randomuuid","sum":37},{"parent":"FUNC","rule":"range","sum":97},{"parent":"FUNC","rule":"rank","sum":222308},{"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":127982},{"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":2178991},{"parent":"FUNC","rule":"rownumber","sum":388},{"parent":"FUNC","rule":"sUBSTRING","sum":3},{"parent":"FUNC","rule":"sUM","sum":444},{"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":171},{"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":120},{"parent":"FUNC","rule":"setisdisjoint","sum":1060},{"parent":"FUNC","rule":"setsymmetricdifference","sum":204},{"parent":"FUNC","rule":"setunion","sum":1787},{"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":20342393},{"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":200139},{"parent":"FUNC","rule":"starts_with","sum":14},{"parent":"FUNC","rule":"startswith","sum":20678},{"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":619643},{"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":886},{"parent":"FUNC","rule":"stddevpop","sum":19},{"parent":"FUNC","rule":"stddevsamp","sum":5},{"parent":"FUNC","rule":"str","sum":24},{"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":184},{"parent":"FUNC","rule":"suM_if","sum":16},{"parent":"FUNC","rule":"subDate","sum":1},{"parent":"FUNC","rule":"subSTRING","sum":1},{"parent":"FUNC","rule":"subString","sum":580},{"parent":"FUNC","rule":"subqueryMergeFor","sum":21},{"parent":"FUNC","rule":"subqueryUnionMergeFor","sum":4410},{"parent":"FUNC","rule":"subquerymergefor","sum":1936},{"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":16531291},{"parent":"FUNC","rule":"substringUTF8","sum":1},{"parent":"FUNC","rule":"substring_index","sum":1},{"parent":"FUNC","rule":"sum","sum":45451451},{"parent":"FUNC","rule":"sumIF","sum":84},{"parent":"FUNC","rule":"sumIf","sum":94714},{"parent":"FUNC","rule":"sum_","sum":356},{"parent":"FUNC","rule":"sum_IF","sum":19568},{"parent":"FUNC","rule":"sum_If","sum":13003},{"parent":"FUNC","rule":"sum_if","sum":4235537},{"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":7479},{"parent":"FUNC","rule":"summ","sum":10},{"parent":"FUNC","rule":"sunstring","sum":2},{"parent":"FUNC","rule":"susbstring","sum":1},{"parent":"FUNC","rule":"tableName","sum":43245},{"parent":"FUNC","rule":"tablePath","sum":1480},{"parent":"FUNC","rule":"tableRecordIndex","sum":19},{"parent":"FUNC","rule":"tableRow","sum":22824},{"parent":"FUNC","rule":"table_name","sum":2894},{"parent":"FUNC","rule":"table_path","sum":46},{"parent":"FUNC","rule":"table_row","sum":377},{"parent":"FUNC","rule":"tablename","sum":165603},{"parent":"FUNC","rule":"tablepath","sum":32961},{"parent":"FUNC","rule":"tablerecordindex","sum":111},{"parent":"FUNC","rule":"tablerow","sum":42717},{"parent":"FUNC","rule":"tablerows","sum":5},{"parent":"FUNC","rule":"testBit","sum":34},{"parent":"FUNC","rule":"testbit","sum":38968},{"parent":"FUNC","rule":"testid","sum":2},{"parent":"FUNC","rule":"timestamp","sum":9971},{"parent":"FUNC","rule":"timestamp64","sum":7},{"parent":"FUNC","rule":"timezone","sum":2},{"parent":"FUNC","rule":"toBytes","sum":25421},{"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":96254},{"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":435881},{"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":100072},{"parent":"FUNC","rule":"tomultidict","sum":1157},{"parent":"FUNC","rule":"top","sum":54295},{"parent":"FUNC","rule":"topFreq","sum":94},{"parent":"FUNC","rule":"top_BY","sum":1},{"parent":"FUNC","rule":"top_by","sum":115898},{"parent":"FUNC","rule":"top_freq","sum":113},{"parent":"FUNC","rule":"topfreq","sum":23272},{"parent":"FUNC","rule":"topg","sum":2},{"parent":"FUNC","rule":"toset","sum":38682},{"parent":"FUNC","rule":"trunc","sum":13},{"parent":"FUNC","rule":"truncate","sum":2},{"parent":"FUNC","rule":"tryMember","sum":527},{"parent":"FUNC","rule":"trymember","sum":10121},{"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":88},{"parent":"FUNC","rule":"udaf","sum":17656},{"parent":"FUNC","rule":"uint32","sum":13540},{"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":1363},{"parent":"FUNC","rule":"unwrap","sum":27076605},{"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":2039},{"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":66705},{"parent":"FUNC","rule":"variance_population","sum":4},{"parent":"FUNC","rule":"variance_sample","sum":512},{"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":41571},{"parent":"FUNC","rule":"weakField","sum":1077},{"parent":"FUNC","rule":"weakfield","sum":979276},{"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":"MODULE","rule":"Compress","sum":84348},{"parent":"MODULE","rule":"DATETIME","sum":1129},{"parent":"MODULE","rule":"DATEtime","sum":2},{"parent":"MODULE","rule":"DAteTime","sum":3242},{"parent":"MODULE","rule":"DAtetime","sum":7},{"parent":"MODULE","rule":"DIgest","sum":2},{"parent":"MODULE","rule":"DaTETIME","sum":335},{"parent":"MODULE","rule":"DaTeTime","sum":84},{"parent":"MODULE","rule":"DateTIME","sum":723},{"parent":"MODULE","rule":"DateTIme","sum":4334},{"parent":"MODULE","rule":"DateTime","sum":275526739},{"parent":"MODULE","rule":"DatetIme","sum":367},{"parent":"MODULE","rule":"Datetime","sum":7098291},{"parent":"MODULE","rule":"Decompress","sum":24693},{"parent":"MODULE","rule":"Digest","sum":7702122},{"parent":"MODULE","rule":"HyperScan","sum":2310},{"parent":"MODULE","rule":"Hyperscan","sum":389922},{"parent":"MODULE","rule":"Ip","sum":1351732},{"parent":"MODULE","rule":"JSON","sum":26918},{"parent":"MODULE","rule":"JSon","sum":2},{"parent":"MODULE","rule":"Json","sum":1015827},{"parent":"MODULE","rule":"MATH","sum":31},{"parent":"MODULE","rule":"Math","sum":44852436},{"parent":"MODULE","rule":"PG","sum":198},{"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":1913153},{"parent":"MODULE","rule":"Protobuf","sum":269851},{"parent":"MODULE","rule":"RE2","sum":5121},{"parent":"MODULE","rule":"Re2","sum":12179227},{"parent":"MODULE","rule":"STRING","sum":6},{"parent":"MODULE","rule":"String","sum":95380120},{"parent":"MODULE","rule":"TryDecompress","sum":4743},{"parent":"MODULE","rule":"URL","sum":7},{"parent":"MODULE","rule":"Unicode","sum":4909149},{"parent":"MODULE","rule":"Url","sum":23522080},{"parent":"MODULE","rule":"YSON","sum":149},{"parent":"MODULE","rule":"YSon","sum":17},{"parent":"MODULE","rule":"Yson","sum":395219884},{"parent":"MODULE","rule":"dateTime","sum":467},{"parent":"MODULE","rule":"datetime","sum":14180},{"parent":"MODULE","rule":"digest","sum":15},{"parent":"MODULE","rule":"json","sum":8},{"parent":"MODULE","rule":"math","sum":54},{"parent":"MODULE","rule":"pg","sum":1786},{"parent":"MODULE","rule":"pire","sum":36},{"parent":"MODULE","rule":"re2","sum":3195},{"parent":"MODULE","rule":"string","sum":75},{"parent":"MODULE","rule":"url","sum":5},{"parent":"MODULE","rule":"ySoN","sum":1},{"parent":"MODULE","rule":"yson","sum":61},{"parent":"MODULE_FUNC","rule":"Compress::BZip2","sum":2},{"parent":"MODULE_FUNC","rule":"Compress::BlockCodec","sum":6},{"parent":"MODULE_FUNC","rule":"Compress::Brotli","sum":160},{"parent":"MODULE_FUNC","rule":"Compress::Gzip","sum":83366},{"parent":"MODULE_FUNC","rule":"Compress::Lz4","sum":620},{"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":286},{"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":581},{"parent":"MODULE_FUNC","rule":"DAteTime::Parse","sum":150},{"parent":"MODULE_FUNC","rule":"DAteTime::StartOfMonth","sum":2500},{"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":335},{"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":3587},{"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":3},{"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":4},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfDay","sum":381},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfMonth","sum":38771},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfQuarter","sum":306},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfWeek","sum":571},{"parent":"MODULE_FUNC","rule":"DateTime::EndOfYear","sum":144},{"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":39880424},{"parent":"MODULE_FUNC","rule":"DateTime::FormatTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::FromDays","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroSeconds","sum":153},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds","sum":4675092},{"parent":"MODULE_FUNC","rule":"DateTime::FromMicroseconds64","sum":122},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliSeconds","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds","sum":9211698},{"parent":"MODULE_FUNC","rule":"DateTime::FromMilliseconds64","sum":958},{"parent":"MODULE_FUNC","rule":"DateTime::FromSecond","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds","sum":15196525},{"parent":"MODULE_FUNC","rule":"DateTime::FromSeconds64","sum":931},{"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":595723},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeek","sum":636422},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfWeekName","sum":125820},{"parent":"MODULE_FUNC","rule":"DateTime::GetDayOfYear","sum":44450},{"parent":"MODULE_FUNC","rule":"DateTime::GetHour","sum":1453652},{"parent":"MODULE_FUNC","rule":"DateTime::GetIntervalLength","sum":12},{"parent":"MODULE_FUNC","rule":"DateTime::GetLastDayOfMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetMicrosecondOfSecond","sum":1253},{"parent":"MODULE_FUNC","rule":"DateTime::GetMillisecondOfSecond","sum":41},{"parent":"MODULE_FUNC","rule":"DateTime::GetMinute","sum":288991},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonth","sum":704438},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthName","sum":38740},{"parent":"MODULE_FUNC","rule":"DateTime::GetMonthOfYear","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::GetSecond","sum":86244},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneId","sum":104},{"parent":"MODULE_FUNC","rule":"DateTime::GetTimezoneName","sum":518},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeek","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYear","sum":503668},{"parent":"MODULE_FUNC","rule":"DateTime::GetWeekOfYearIso8601","sum":34273},{"parent":"MODULE_FUNC","rule":"DateTime::GetYEAR","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::GetYear","sum":784656},{"parent":"MODULE_FUNC","rule":"DateTime::Interval","sum":33},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromDays","sum":2158},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromHours","sum":4268},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMicroseconds","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMilliseconds","sum":8},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromMinutes","sum":182},{"parent":"MODULE_FUNC","rule":"DateTime::Interval64FromSeconds","sum":132},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFROMDays","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFrom","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromDays","sum":15020678},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHDays","sum":28},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromHours","sum":8954718},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMicroseconds","sum":77537},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMilliseconds","sum":515472},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinute","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMinutes","sum":4270970},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonth","sum":9},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromMonths","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromSeconds","sum":935649},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalFromYears","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::IntervalfromDays","sum":27},{"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":23153151},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDate32","sum":73},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDateTime","sum":246},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime","sum":36716857},{"parent":"MODULE_FUNC","rule":"DateTime::MakeDatetime64","sum":113},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp","sum":7837490},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTimestamp64","sum":295},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDate","sum":262396},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDateTime","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime","sum":3127159},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp","sum":153334},{"parent":"MODULE_FUNC","rule":"DateTime::MakeTzTimestamp64","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::Makedate","sum":1},{"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":23597513},{"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":18536999},{"parent":"MODULE_FUNC","rule":"DateTime::ParseRfc822","sum":1862},{"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":195},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonth","sum":11},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftMonths","sum":3302965},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftQuarters","sum":388068},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeek","sum":7},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftWeeks","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ShiftYears","sum":672410},{"parent":"MODULE_FUNC","rule":"DateTime::Split","sum":700021},{"parent":"MODULE_FUNC","rule":"DateTime::StartOf","sum":2338328},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfDay","sum":2651264},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfHour","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMohth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfMonth","sum":4155079},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfQuarter","sum":554245},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfWeek","sum":2075179},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfYear","sum":942330},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfmonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::StartOfweek","sum":3},{"parent":"MODULE_FUNC","rule":"DateTime::TimeOfDay","sum":66970},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMicroSeconds","sum":364},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMilliSeconds","sum":2515},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromMinutes","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromSeconds","sum":391},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampFromString","sum":424},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfMonth","sum":821},{"parent":"MODULE_FUNC","rule":"DateTime::TimestampStartOfWeek","sum":398},{"parent":"MODULE_FUNC","rule":"DateTime::To","sum":5},{"parent":"MODULE_FUNC","rule":"DateTime::ToDate","sum":1435},{"parent":"MODULE_FUNC","rule":"DateTime::ToDateTime","sum":6},{"parent":"MODULE_FUNC","rule":"DateTime::ToDays","sum":3467508},{"parent":"MODULE_FUNC","rule":"DateTime::ToHours","sum":1320055},{"parent":"MODULE_FUNC","rule":"DateTime::ToIsoFormat","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMicroseconds","sum":2220231},{"parent":"MODULE_FUNC","rule":"DateTime::ToMilliseconds","sum":5300346},{"parent":"MODULE_FUNC","rule":"DateTime::ToMinutes","sum":859430},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonth","sum":1},{"parent":"MODULE_FUNC","rule":"DateTime::ToMonths","sum":2},{"parent":"MODULE_FUNC","rule":"DateTime::ToSeconds","sum":23407059},{"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":3596216},{"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":182},{"parent":"MODULE_FUNC","rule":"Datetime::EndOfWeek","sum":59},{"parent":"MODULE_FUNC","rule":"Datetime::Format","sum":366091},{"parent":"MODULE_FUNC","rule":"Datetime::FromMicroseconds","sum":36372},{"parent":"MODULE_FUNC","rule":"Datetime::FromMilliseconds","sum":786334},{"parent":"MODULE_FUNC","rule":"Datetime::FromSeconds","sum":567404},{"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":12460},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfWeekName","sum":838},{"parent":"MODULE_FUNC","rule":"Datetime::GetDayOfYear","sum":59},{"parent":"MODULE_FUNC","rule":"Datetime::GetHour","sum":14645},{"parent":"MODULE_FUNC","rule":"Datetime::GetMinute","sum":13706},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonth","sum":1036},{"parent":"MODULE_FUNC","rule":"Datetime::GetMonthName","sum":344},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYear","sum":2701},{"parent":"MODULE_FUNC","rule":"Datetime::GetWeekOfYearIso8601","sum":3},{"parent":"MODULE_FUNC","rule":"Datetime::GetYear","sum":2720},{"parent":"MODULE_FUNC","rule":"Datetime::Interval","sum":9},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFROMDays","sum":6},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromDays","sum":372229},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromHours","sum":265903},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMicroseconds","sum":194},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMilliseconds","sum":91},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromMinutes","sum":49879},{"parent":"MODULE_FUNC","rule":"Datetime::IntervalFromSeconds","sum":9623},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate","sum":678374},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDate32","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDateTime","sum":2},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime","sum":920770},{"parent":"MODULE_FUNC","rule":"Datetime::MakeDatetime64","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTimestamp","sum":417045},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDate","sum":2307},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzDatetime","sum":23894},{"parent":"MODULE_FUNC","rule":"Datetime::MakeTzTimestamp","sum":33282},{"parent":"MODULE_FUNC","rule":"Datetime::Makedate","sum":37},{"parent":"MODULE_FUNC","rule":"Datetime::Parse","sum":138225},{"parent":"MODULE_FUNC","rule":"Datetime::ParseIso8601","sum":257650},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftMonths","sum":25927},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftQuarters","sum":543},{"parent":"MODULE_FUNC","rule":"Datetime::ShiftYears","sum":313},{"parent":"MODULE_FUNC","rule":"Datetime::Split","sum":207},{"parent":"MODULE_FUNC","rule":"Datetime::StarOfWeek","sum":1},{"parent":"MODULE_FUNC","rule":"Datetime::StartOf","sum":64223},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfDay","sum":22765},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfMonth","sum":74579},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfQuarter","sum":4372},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfWeek","sum":23019},{"parent":"MODULE_FUNC","rule":"Datetime::StartOfYear","sum":11647},{"parent":"MODULE_FUNC","rule":"Datetime::TimeOfDay","sum":126},{"parent":"MODULE_FUNC","rule":"Datetime::ToDatetime","sum":12},{"parent":"MODULE_FUNC","rule":"Datetime::ToDays","sum":141482},{"parent":"MODULE_FUNC","rule":"Datetime::ToHours","sum":22945},{"parent":"MODULE_FUNC","rule":"Datetime::ToMicroseconds","sum":582},{"parent":"MODULE_FUNC","rule":"Datetime::ToMilliseconds","sum":121842},{"parent":"MODULE_FUNC","rule":"Datetime::ToMinutes","sum":45209},{"parent":"MODULE_FUNC","rule":"Datetime::ToSeconds","sum":1533763},{"parent":"MODULE_FUNC","rule":"Datetime::Update","sum":29519},{"parent":"MODULE_FUNC","rule":"Datetime::startOfmonth","sum":1},{"parent":"MODULE_FUNC","rule":"Decompress::BZip2","sum":518},{"parent":"MODULE_FUNC","rule":"Decompress::Brotli","sum":7961},{"parent":"MODULE_FUNC","rule":"Decompress::Gzip","sum":3922},{"parent":"MODULE_FUNC","rule":"Decompress::Lz4","sum":902},{"parent":"MODULE_FUNC","rule":"Decompress::Snappy","sum":462},{"parent":"MODULE_FUNC","rule":"Decompress::Zlib","sum":10899},{"parent":"MODULE_FUNC","rule":"Decompress::Zstd","sum":29},{"parent":"MODULE_FUNC","rule":"Digest::Argon2","sum":48547},{"parent":"MODULE_FUNC","rule":"Digest::Blake2B","sum":4535},{"parent":"MODULE_FUNC","rule":"Digest::CityHash","sum":1224275},{"parent":"MODULE_FUNC","rule":"Digest::CityHash128","sum":17823},{"parent":"MODULE_FUNC","rule":"Digest::Crc32c","sum":77315},{"parent":"MODULE_FUNC","rule":"Digest::Crc64","sum":140567},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint","sum":69786},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint128","sum":26},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint2","sum":166218},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint32","sum":208},{"parent":"MODULE_FUNC","rule":"Digest::FarmHashFingerprint64","sum":1051198},{"parent":"MODULE_FUNC","rule":"Digest::Fnv32","sum":1747},{"parent":"MODULE_FUNC","rule":"Digest::Fnv64","sum":261123},{"parent":"MODULE_FUNC","rule":"Digest::IntHash64","sum":18293},{"parent":"MODULE_FUNC","rule":"Digest::MD5Hex","sum":5},{"parent":"MODULE_FUNC","rule":"Digest::Md5","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::Md5HalfMix","sum":427803},{"parent":"MODULE_FUNC","rule":"Digest::Md5Hex","sum":567611},{"parent":"MODULE_FUNC","rule":"Digest::Md5Raw","sum":15724},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash","sum":2418430},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A","sum":2499},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash2A32","sum":840},{"parent":"MODULE_FUNC","rule":"Digest::MurMurHash32","sum":256424},{"parent":"MODULE_FUNC","rule":"Digest::MurMurhash","sum":2},{"parent":"MODULE_FUNC","rule":"Digest::NimericHash","sum":3},{"parent":"MODULE_FUNC","rule":"Digest::NumericHash","sum":274144},{"parent":"MODULE_FUNC","rule":"Digest::Sha1","sum":42460},{"parent":"MODULE_FUNC","rule":"Digest::Sha256","sum":399343},{"parent":"MODULE_FUNC","rule":"Digest::SipHash","sum":132347},{"parent":"MODULE_FUNC","rule":"Digest::SuperFastHash","sum":34802},{"parent":"MODULE_FUNC","rule":"Digest::XXH3","sum":48000},{"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":2303},{"parent":"MODULE_FUNC","rule":"HyperScan::Match","sum":6},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingGrep","sum":48609},{"parent":"MODULE_FUNC","rule":"Hyperscan::BacktrackingMatch","sum":128},{"parent":"MODULE_FUNC","rule":"Hyperscan::Capture","sum":5639},{"parent":"MODULE_FUNC","rule":"Hyperscan::Grep","sum":145100},{"parent":"MODULE_FUNC","rule":"Hyperscan::Match","sum":52838},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiGrep","sum":64},{"parent":"MODULE_FUNC","rule":"Hyperscan::MultiMatch","sum":40637},{"parent":"MODULE_FUNC","rule":"Hyperscan::Replace","sum":96907},{"parent":"MODULE_FUNC","rule":"Ip::ConvertToIPv6","sum":44916},{"parent":"MODULE_FUNC","rule":"Ip::FromString","sum":391207},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnet","sum":135473},{"parent":"MODULE_FUNC","rule":"Ip::GetSubnetByMask","sum":4},{"parent":"MODULE_FUNC","rule":"Ip::IsEmbeddedIPv4","sum":6948},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv4","sum":136060},{"parent":"MODULE_FUNC","rule":"Ip::IsIPv6","sum":118500},{"parent":"MODULE_FUNC","rule":"Ip::SubnetFromString","sum":549},{"parent":"MODULE_FUNC","rule":"Ip::SubnetMatch","sum":502},{"parent":"MODULE_FUNC","rule":"Ip::ToFixedIPv6String","sum":3821},{"parent":"MODULE_FUNC","rule":"Ip::ToString","sum":513752},{"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":254},{"parent":"MODULE_FUNC","rule":"JSON::PARSE","sum":2},{"parent":"MODULE_FUNC","rule":"JSON::Parse","sum":3609},{"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":160},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringDict","sum":5},{"parent":"MODULE_FUNC","rule":"Json::ConvertToStringList","sum":19},{"parent":"MODULE_FUNC","rule":"Json::From","sum":3874},{"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":824343},{"parent":"MODULE_FUNC","rule":"Json::LookupString","sum":53},{"parent":"MODULE_FUNC","rule":"Json::Options","sum":852},{"parent":"MODULE_FUNC","rule":"Json::Parse","sum":182381},{"parent":"MODULE_FUNC","rule":"Json::ParseJson","sum":211},{"parent":"MODULE_FUNC","rule":"Json::Serialize","sum":1558},{"parent":"MODULE_FUNC","rule":"Json::SerializeJson","sum":919},{"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":4},{"parent":"MODULE_FUNC","rule":"MATH::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::Log","sum":4},{"parent":"MODULE_FUNC","rule":"MATH::NearbyINT","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::NearbyInt","sum":1},{"parent":"MODULE_FUNC","rule":"MATH::ROUND","sum":19},{"parent":"MODULE_FUNC","rule":"Math::Aabs","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Abs","sum":477598},{"parent":"MODULE_FUNC","rule":"Math::Acos","sum":13299},{"parent":"MODULE_FUNC","rule":"Math::Asin","sum":11228},{"parent":"MODULE_FUNC","rule":"Math::Asinh","sum":4},{"parent":"MODULE_FUNC","rule":"Math::Atan","sum":7909},{"parent":"MODULE_FUNC","rule":"Math::Atan2","sum":13019},{"parent":"MODULE_FUNC","rule":"Math::Cbrt","sum":492},{"parent":"MODULE_FUNC","rule":"Math::Ceil","sum":1246578},{"parent":"MODULE_FUNC","rule":"Math::Cos","sum":96598},{"parent":"MODULE_FUNC","rule":"Math::Cosh","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Crbt","sum":1},{"parent":"MODULE_FUNC","rule":"Math::E","sum":9607},{"parent":"MODULE_FUNC","rule":"Math::EXP","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Eps","sum":179},{"parent":"MODULE_FUNC","rule":"Math::Erf","sum":2569},{"parent":"MODULE_FUNC","rule":"Math::ErfInv","sum":42},{"parent":"MODULE_FUNC","rule":"Math::ErfcInv","sum":6},{"parent":"MODULE_FUNC","rule":"Math::Exp","sum":557620},{"parent":"MODULE_FUNC","rule":"Math::Exp2","sum":2024},{"parent":"MODULE_FUNC","rule":"Math::Fabs","sum":144459},{"parent":"MODULE_FUNC","rule":"Math::Floor","sum":327868},{"parent":"MODULE_FUNC","rule":"Math::Flor","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Fmod","sum":9},{"parent":"MODULE_FUNC","rule":"Math::FuzzyEquals","sum":19429},{"parent":"MODULE_FUNC","rule":"Math::Hypot","sum":18779},{"parent":"MODULE_FUNC","rule":"Math::IsFinite","sum":186397},{"parent":"MODULE_FUNC","rule":"Math::IsInf","sum":76878},{"parent":"MODULE_FUNC","rule":"Math::IsNaN","sum":250281},{"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":822843},{"parent":"MODULE_FUNC","rule":"Math::Log10","sum":153177},{"parent":"MODULE_FUNC","rule":"Math::Log2","sum":197640},{"parent":"MODULE_FUNC","rule":"Math::Max","sum":3},{"parent":"MODULE_FUNC","rule":"Math::Min","sum":1},{"parent":"MODULE_FUNC","rule":"Math::Mod","sum":66515},{"parent":"MODULE_FUNC","rule":"Math::NearbyInt","sum":426816},{"parent":"MODULE_FUNC","rule":"Math::Pi","sum":74410},{"parent":"MODULE_FUNC","rule":"Math::Pow","sum":1331521},{"parent":"MODULE_FUNC","rule":"Math::Power","sum":6},{"parent":"MODULE_FUNC","rule":"Math::ROUND","sum":5},{"parent":"MODULE_FUNC","rule":"Math::Rem","sum":2276},{"parent":"MODULE_FUNC","rule":"Math::Remainder","sum":163},{"parent":"MODULE_FUNC","rule":"Math::Rint","sum":20365},{"parent":"MODULE_FUNC","rule":"Math::Round","sum":36720906},{"parent":"MODULE_FUNC","rule":"Math::RoundDownward","sum":138123},{"parent":"MODULE_FUNC","rule":"Math::RoundToNearest","sum":76444},{"parent":"MODULE_FUNC","rule":"Math::RoundTowardZero","sum":896},{"parent":"MODULE_FUNC","rule":"Math::RoundUpward","sum":211425},{"parent":"MODULE_FUNC","rule":"Math::Sigmoid","sum":279198},{"parent":"MODULE_FUNC","rule":"Math::Sin","sum":82019},{"parent":"MODULE_FUNC","rule":"Math::Sinh","sum":6030},{"parent":"MODULE_FUNC","rule":"Math::Sqrt","sum":612531},{"parent":"MODULE_FUNC","rule":"Math::Tan","sum":4988},{"parent":"MODULE_FUNC","rule":"Math::Tanh","sum":4957},{"parent":"MODULE_FUNC","rule":"Math::Tgamma","sum":60},{"parent":"MODULE_FUNC","rule":"Math::Trunc","sum":156094},{"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":3},{"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":101},{"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":1511},{"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":1768},{"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":529324},{"parent":"MODULE_FUNC","rule":"Pire::Grep","sum":144108},{"parent":"MODULE_FUNC","rule":"Pire::Match","sum":234334},{"parent":"MODULE_FUNC","rule":"Pire::MultiGrep","sum":675},{"parent":"MODULE_FUNC","rule":"Pire::MultiMatch","sum":153},{"parent":"MODULE_FUNC","rule":"Pire::Replace","sum":1004559},{"parent":"MODULE_FUNC","rule":"Protobuf::Parse","sum":21023},{"parent":"MODULE_FUNC","rule":"Protobuf::Serialize","sum":103687},{"parent":"MODULE_FUNC","rule":"Protobuf::TryParse","sum":145141},{"parent":"MODULE_FUNC","rule":"RE2::Capture","sum":4027},{"parent":"MODULE_FUNC","rule":"RE2::Count","sum":328},{"parent":"MODULE_FUNC","rule":"RE2::FindAndConsume","sum":31},{"parent":"MODULE_FUNC","rule":"RE2::Grep","sum":66},{"parent":"MODULE_FUNC","rule":"RE2::Match","sum":545},{"parent":"MODULE_FUNC","rule":"RE2::Replace","sum":124},{"parent":"MODULE_FUNC","rule":"Re2::Capture","sum":4402477},{"parent":"MODULE_FUNC","rule":"Re2::Catch","sum":1},{"parent":"MODULE_FUNC","rule":"Re2::Compile","sum":4},{"parent":"MODULE_FUNC","rule":"Re2::Count","sum":172471},{"parent":"MODULE_FUNC","rule":"Re2::FindAll","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAllSubmatch","sum":2},{"parent":"MODULE_FUNC","rule":"Re2::FindAndConsume","sum":389517},{"parent":"MODULE_FUNC","rule":"Re2::Grep","sum":651844},{"parent":"MODULE_FUNC","rule":"Re2::Match","sum":1685101},{"parent":"MODULE_FUNC","rule":"Re2::Options","sum":248654},{"parent":"MODULE_FUNC","rule":"Re2::Replace","sum":4629139},{"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":4121260},{"parent":"MODULE_FUNC","rule":"String::AsciiToTitle","sum":95297},{"parent":"MODULE_FUNC","rule":"String::AsciiToUpper","sum":549100},{"parent":"MODULE_FUNC","rule":"String::AsciiTolower","sum":4},{"parent":"MODULE_FUNC","rule":"String::Base32Decode","sum":274},{"parent":"MODULE_FUNC","rule":"String::Base32Encode","sum":194},{"parent":"MODULE_FUNC","rule":"String::Base32StrictDecode","sum":56},{"parent":"MODULE_FUNC","rule":"String::Base64Decode","sum":394448},{"parent":"MODULE_FUNC","rule":"String::Base64Encode","sum":112358},{"parent":"MODULE_FUNC","rule":"String::Base64EncodeUrl","sum":5714},{"parent":"MODULE_FUNC","rule":"String::Base64StrictDecode","sum":96599},{"parent":"MODULE_FUNC","rule":"String::Bin","sum":510},{"parent":"MODULE_FUNC","rule":"String::BinText","sum":121},{"parent":"MODULE_FUNC","rule":"String::CgiEscape","sum":71141},{"parent":"MODULE_FUNC","rule":"String::CgiUnescape","sum":24008},{"parent":"MODULE_FUNC","rule":"String::ColapseText","sum":4},{"parent":"MODULE_FUNC","rule":"String::Collapse","sum":197504},{"parent":"MODULE_FUNC","rule":"String::CollapseText","sum":200340},{"parent":"MODULE_FUNC","rule":"String::Contains","sum":6167479},{"parent":"MODULE_FUNC","rule":"String::DecodeHtml","sum":3005},{"parent":"MODULE_FUNC","rule":"String::EncodeHtml","sum":416},{"parent":"MODULE_FUNC","rule":"String::EndsWith","sum":539060},{"parent":"MODULE_FUNC","rule":"String::EndsWithIgnoreCase","sum":36079},{"parent":"MODULE_FUNC","rule":"String::EscapeC","sum":56141},{"parent":"MODULE_FUNC","rule":"String::Find","sum":654309},{"parent":"MODULE_FUNC","rule":"String::From","sum":2},{"parent":"MODULE_FUNC","rule":"String::FromByteList","sum":1048344},{"parent":"MODULE_FUNC","rule":"String::HasPrefix","sum":21305},{"parent":"MODULE_FUNC","rule":"String::HasPrefixIgnoreCase","sum":49},{"parent":"MODULE_FUNC","rule":"String::HasSuffix","sum":4930},{"parent":"MODULE_FUNC","rule":"String::HasSuffixIgnoreCase","sum":28771},{"parent":"MODULE_FUNC","rule":"String::Hex","sum":376508},{"parent":"MODULE_FUNC","rule":"String::HexDecode","sum":165567},{"parent":"MODULE_FUNC","rule":"String::HexEncode","sum":194436},{"parent":"MODULE_FUNC","rule":"String::HexText","sum":79392},{"parent":"MODULE_FUNC","rule":"String::HumanReadableBytes","sum":244},{"parent":"MODULE_FUNC","rule":"String::HumanReadableDuration","sum":1122121},{"parent":"MODULE_FUNC","rule":"String::HumanReadableQuantity","sum":342},{"parent":"MODULE_FUNC","rule":"String::IsAscii","sum":13981},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlnum","sum":1001},{"parent":"MODULE_FUNC","rule":"String::IsAsciiAlpha","sum":383},{"parent":"MODULE_FUNC","rule":"String::IsAsciiDigit","sum":8442},{"parent":"MODULE_FUNC","rule":"String::IsAsciiHex","sum":19443},{"parent":"MODULE_FUNC","rule":"String::IsAsciiLower","sum":22},{"parent":"MODULE_FUNC","rule":"String::IsAsciiSpace","sum":13},{"parent":"MODULE_FUNC","rule":"String::IsAsciiUpper","sum":355},{"parent":"MODULE_FUNC","rule":"String::Join","sum":2},{"parent":"MODULE_FUNC","rule":"String::JoinFROMList","sum":32020},{"parent":"MODULE_FUNC","rule":"String::JoinFromList","sum":14003251},{"parent":"MODULE_FUNC","rule":"String::LeftPad","sum":65910},{"parent":"MODULE_FUNC","rule":"String::Length","sum":2},{"parent":"MODULE_FUNC","rule":"String::LevenshteinDistance","sum":4},{"parent":"MODULE_FUNC","rule":"String::LevensteinDistance","sum":11690},{"parent":"MODULE_FUNC","rule":"String::Prec","sum":1849},{"parent":"MODULE_FUNC","rule":"String::RaplaceAll","sum":3},{"parent":"MODULE_FUNC","rule":"String::RemoveAll","sum":1248314},{"parent":"MODULE_FUNC","rule":"String::RemoveFirst","sum":640987},{"parent":"MODULE_FUNC","rule":"String::RemoveLast","sum":556385},{"parent":"MODULE_FUNC","rule":"String::Replace","sum":11},{"parent":"MODULE_FUNC","rule":"String::ReplaceALL","sum":3},{"parent":"MODULE_FUNC","rule":"String::ReplaceAll","sum":15647494},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirst","sum":1364617},{"parent":"MODULE_FUNC","rule":"String::ReplaceFirstStartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::ReplaceLast","sum":173452},{"parent":"MODULE_FUNC","rule":"String::ReplaceRegex","sum":1},{"parent":"MODULE_FUNC","rule":"String::Reverse","sum":118761},{"parent":"MODULE_FUNC","rule":"String::ReverseFind","sum":38847},{"parent":"MODULE_FUNC","rule":"String::RightPad","sum":372890},{"parent":"MODULE_FUNC","rule":"String::SBin","sum":7},{"parent":"MODULE_FUNC","rule":"String::SHex","sum":6281},{"parent":"MODULE_FUNC","rule":"String::Split","sum":10},{"parent":"MODULE_FUNC","rule":"String::SplitToList","sum":31793998},{"parent":"MODULE_FUNC","rule":"String::SplitToSet","sum":12},{"parent":"MODULE_FUNC","rule":"String::StartWith","sum":1},{"parent":"MODULE_FUNC","rule":"String::StartsWith","sum":3456492},{"parent":"MODULE_FUNC","rule":"String::StartsWithIgnoreCase","sum":56347},{"parent":"MODULE_FUNC","rule":"String::Strip","sum":3178205},{"parent":"MODULE_FUNC","rule":"String::Substring","sum":302275},{"parent":"MODULE_FUNC","rule":"String::ToByteList","sum":140330},{"parent":"MODULE_FUNC","rule":"String::ToLower","sum":5256794},{"parent":"MODULE_FUNC","rule":"String::ToLowerCase","sum":1},{"parent":"MODULE_FUNC","rule":"String::ToTitle","sum":34547},{"parent":"MODULE_FUNC","rule":"String::ToUpper","sum":140634},{"parent":"MODULE_FUNC","rule":"String::Trim","sum":3},{"parent":"MODULE_FUNC","rule":"String::UnescapeC","sum":326609},{"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":1015},{"parent":"MODULE_FUNC","rule":"TryDecompress::Lz4","sum":124},{"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":153146},{"parent":"MODULE_FUNC","rule":"Unicode::Fold","sum":29117},{"parent":"MODULE_FUNC","rule":"Unicode::FromCodePointList","sum":120420},{"parent":"MODULE_FUNC","rule":"Unicode::GetLength","sum":594623},{"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":688},{"parent":"MODULE_FUNC","rule":"Unicode::IsDigit","sum":8984},{"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":440},{"parent":"MODULE_FUNC","rule":"Unicode::IsUpper","sum":1816},{"parent":"MODULE_FUNC","rule":"Unicode::IsUtf","sum":670446},{"parent":"MODULE_FUNC","rule":"Unicode::JoinFromList","sum":202740},{"parent":"MODULE_FUNC","rule":"Unicode::Length","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::LevensteinDistance","sum":39597},{"parent":"MODULE_FUNC","rule":"Unicode::Normalize","sum":110601},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFC","sum":527},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFD","sum":36},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKC","sum":6965},{"parent":"MODULE_FUNC","rule":"Unicode::NormalizeNFKD","sum":1729},{"parent":"MODULE_FUNC","rule":"Unicode::RFind","sum":73240},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveAll","sum":139022},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveFirst","sum":7747},{"parent":"MODULE_FUNC","rule":"Unicode::RemoveLast","sum":7785},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceAll","sum":269427},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceFirst","sum":1750},{"parent":"MODULE_FUNC","rule":"Unicode::ReplaceLast","sum":317},{"parent":"MODULE_FUNC","rule":"Unicode::Reverse","sum":52328},{"parent":"MODULE_FUNC","rule":"Unicode::SUBSTRING","sum":2},{"parent":"MODULE_FUNC","rule":"Unicode::SplitToList","sum":180911},{"parent":"MODULE_FUNC","rule":"Unicode::Strip","sum":64726},{"parent":"MODULE_FUNC","rule":"Unicode::Substring","sum":601464},{"parent":"MODULE_FUNC","rule":"Unicode::ToCodePointList","sum":122853},{"parent":"MODULE_FUNC","rule":"Unicode::ToLower","sum":1190672},{"parent":"MODULE_FUNC","rule":"Unicode::ToTitle","sum":36005},{"parent":"MODULE_FUNC","rule":"Unicode::ToUint64","sum":413},{"parent":"MODULE_FUNC","rule":"Unicode::ToUpper","sum":111882},{"parent":"MODULE_FUNC","rule":"Unicode::Translit","sum":103652},{"parent":"MODULE_FUNC","rule":"Unicode::TryToUint64","sum":1942},{"parent":"MODULE_FUNC","rule":"Url::AsciiToLower","sum":1},{"parent":"MODULE_FUNC","rule":"Url::BuildQueryString","sum":25869},{"parent":"MODULE_FUNC","rule":"Url::CanBePunycodeHostName","sum":6528},{"parent":"MODULE_FUNC","rule":"Url::CutQueryStringAndFragment","sum":232746},{"parent":"MODULE_FUNC","rule":"Url::CutScheme","sum":1132324},{"parent":"MODULE_FUNC","rule":"Url::CutWWW","sum":859165},{"parent":"MODULE_FUNC","rule":"Url::CutWWW2","sum":741509},{"parent":"MODULE_FUNC","rule":"Url::Decode","sum":1694041},{"parent":"MODULE_FUNC","rule":"Url::Encode","sum":370603},{"parent":"MODULE_FUNC","rule":"Url::ForceHostNameToPunycode","sum":200827},{"parent":"MODULE_FUNC","rule":"Url::ForcePunycodeToHostName","sum":132424},{"parent":"MODULE_FUNC","rule":"Url::GetCGIParam","sum":1824397},{"parent":"MODULE_FUNC","rule":"Url::GetCgiParam","sum":7},{"parent":"MODULE_FUNC","rule":"Url::GetDomain","sum":1124409},{"parent":"MODULE_FUNC","rule":"Url::GetDomainLevel","sum":70675},{"parent":"MODULE_FUNC","rule":"Url::GetFragment","sum":495},{"parent":"MODULE_FUNC","rule":"Url::GetHost","sum":4049696},{"parent":"MODULE_FUNC","rule":"Url::GetHostPort","sum":196358},{"parent":"MODULE_FUNC","rule":"Url::GetOwner","sum":1403748},{"parent":"MODULE_FUNC","rule":"Url::GetPath","sum":1692312},{"parent":"MODULE_FUNC","rule":"Url::GetPort","sum":817082},{"parent":"MODULE_FUNC","rule":"Url::GetScheme","sum":2056328},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHost","sum":145839},{"parent":"MODULE_FUNC","rule":"Url::GetSchemeHostPort","sum":697464},{"parent":"MODULE_FUNC","rule":"Url::GetSignificantDomain","sum":463398},{"parent":"MODULE_FUNC","rule":"Url::GetTLD","sum":35514},{"parent":"MODULE_FUNC","rule":"Url::GetTail","sum":574437},{"parent":"MODULE_FUNC","rule":"Url::Getowner","sum":1},{"parent":"MODULE_FUNC","rule":"Url::HostNameToPunycode","sum":580783},{"parent":"MODULE_FUNC","rule":"Url::IsAllowedByRobotsTxt","sum":7},{"parent":"MODULE_FUNC","rule":"Url::IsKnownTLD","sum":20834},{"parent":"MODULE_FUNC","rule":"Url::IsWellKnownTLD","sum":4928},{"parent":"MODULE_FUNC","rule":"Url::Normalize","sum":1049217},{"parent":"MODULE_FUNC","rule":"Url::NormalizeWithDefaultHttpScheme","sum":622798},{"parent":"MODULE_FUNC","rule":"Url::Parse","sum":299237},{"parent":"MODULE_FUNC","rule":"Url::PunycodeToHostName","sum":202698},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToDict","sum":154631},{"parent":"MODULE_FUNC","rule":"Url::QueryStringToList","sum":38742},{"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":2},{"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":1},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToString","sum":64},{"parent":"MODULE_FUNC","rule":"YSON::ConvertToStringList","sum":20},{"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":3},{"parent":"MODULE_FUNC","rule":"YSON::LookupInt64","sum":1},{"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":6},{"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":1892},{"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":2964796},{"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":8887873},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToAttributes","sum":16},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBool","sum":8778198},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolDict","sum":105286},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToBoolList","sum":7400},{"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":8505885},{"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":9532162},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleDict","sum":279814},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToDoubleList","sum":1192022},{"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":20427706},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64Dict","sum":186913},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInt64List","sum":2391814},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToIntList","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToInteget","sum":168},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToJson","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToList","sum":18954978},{"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":96745330},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringDict","sum":1449218},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringInt64","sum":4},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToStringList","sum":24374452},{"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":164},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUInt64List","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint32","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64","sum":8491077},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64Dict","sum":36518},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUint64List","sum":2200184},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToUnit64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToevent_value","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::ConvertToint64","sum":8},{"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::ConverttoList","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::ConverttoString","sum":12},{"parent":"MODULE_FUNC","rule":"Yson::ConvvertToString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Dict","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::Equals","sum":796957},{"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":25115604},{"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::FromBoolDict","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromBytes","sum":17},{"parent":"MODULE_FUNC","rule":"Yson::FromDict","sum":3076},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble","sum":2801},{"parent":"MODULE_FUNC","rule":"Yson::FromDouble64Dict","sum":3673},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleDict","sum":42637},{"parent":"MODULE_FUNC","rule":"Yson::FromDoubleList","sum":996},{"parent":"MODULE_FUNC","rule":"Yson::FromInt32","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64Dict","sum":2139},{"parent":"MODULE_FUNC","rule":"Yson::FromInt64List","sum":7479},{"parent":"MODULE_FUNC","rule":"Yson::FromJson","sum":2153},{"parent":"MODULE_FUNC","rule":"Yson::FromKek","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::FromList","sum":4907},{"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":56274},{"parent":"MODULE_FUNC","rule":"Yson::FromStringDict","sum":69232},{"parent":"MODULE_FUNC","rule":"Yson::FromStringList","sum":59327},{"parent":"MODULE_FUNC","rule":"Yson::FromStruct","sum":651231},{"parent":"MODULE_FUNC","rule":"Yson::FromUi64List","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::FromUin64List","sum":378},{"parent":"MODULE_FUNC","rule":"Yson::FromUint32Dict","sum":10257},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64Dict","sum":16028},{"parent":"MODULE_FUNC","rule":"Yson::FromUint64List","sum":25356},{"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":863949},{"parent":"MODULE_FUNC","rule":"Yson::GetLength","sum":2810726},{"parent":"MODULE_FUNC","rule":"Yson::IsBool","sum":33313},{"parent":"MODULE_FUNC","rule":"Yson::IsDict","sum":257947},{"parent":"MODULE_FUNC","rule":"Yson::IsDouble","sum":99984},{"parent":"MODULE_FUNC","rule":"Yson::IsEntity","sum":2675802},{"parent":"MODULE_FUNC","rule":"Yson::IsInt64","sum":288518},{"parent":"MODULE_FUNC","rule":"Yson::IsList","sum":286846},{"parent":"MODULE_FUNC","rule":"Yson::IsString","sum":1024354},{"parent":"MODULE_FUNC","rule":"Yson::IsUint64","sum":154279},{"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":6565660},{"parent":"MODULE_FUNC","rule":"Yson::LookupBool","sum":2150705},{"parent":"MODULE_FUNC","rule":"Yson::LookupDict","sum":402618},{"parent":"MODULE_FUNC","rule":"Yson::LookupDouble","sum":3063358},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt","sum":15},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt32","sum":91},{"parent":"MODULE_FUNC","rule":"Yson::LookupInt64","sum":5505702},{"parent":"MODULE_FUNC","rule":"Yson::LookupInteger","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupList","sum":1627353},{"parent":"MODULE_FUNC","rule":"Yson::LookupSTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LookupString","sum":41313918},{"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":3802432},{"parent":"MODULE_FUNC","rule":"Yson::LookupsTRING","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::LoopUpString","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::Options","sum":9252892},{"parent":"MODULE_FUNC","rule":"Yson::Parse","sum":8644334},{"parent":"MODULE_FUNC","rule":"Yson::ParseJSON","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::ParseJson","sum":12622535},{"parent":"MODULE_FUNC","rule":"Yson::ParseJsonDecodeUtf8","sum":134162},{"parent":"MODULE_FUNC","rule":"Yson::Parsejson","sum":9},{"parent":"MODULE_FUNC","rule":"Yson::Path","sum":23},{"parent":"MODULE_FUNC","rule":"Yson::Serialize","sum":3870551},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJSON","sum":5},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJson","sum":9849752},{"parent":"MODULE_FUNC","rule":"Yson::SerializeJsonEncodeUtf8","sum":201909},{"parent":"MODULE_FUNC","rule":"Yson::SerializePretty","sum":1187442},{"parent":"MODULE_FUNC","rule":"Yson::SerializeText","sum":611791},{"parent":"MODULE_FUNC","rule":"Yson::WithAttributes","sum":660},{"parent":"MODULE_FUNC","rule":"Yson::YPath","sum":12613297},{"parent":"MODULE_FUNC","rule":"Yson::YPathBool","sum":1177444},{"parent":"MODULE_FUNC","rule":"Yson::YPathBoolean","sum":3},{"parent":"MODULE_FUNC","rule":"Yson::YPathDict","sum":25491},{"parent":"MODULE_FUNC","rule":"Yson::YPathDouble","sum":1365910},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt16","sum":1},{"parent":"MODULE_FUNC","rule":"Yson::YPathInt64","sum":2718665},{"parent":"MODULE_FUNC","rule":"Yson::YPathList","sum":1387120},{"parent":"MODULE_FUNC","rule":"Yson::YPathListString","sum":7},{"parent":"MODULE_FUNC","rule":"Yson::YPathString","sum":13533915},{"parent":"MODULE_FUNC","rule":"Yson::YPathUint64","sum":709229},{"parent":"MODULE_FUNC","rule":"Yson::YaPathString","sum":2},{"parent":"MODULE_FUNC","rule":"Yson::Ypath","sum":51},{"parent":"MODULE_FUNC","rule":"Yson::YpathString","sum":7},{"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::from","sum":45},{"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":361},{"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":20},{"parent":"MODULE_FUNC","rule":"datetime::GetYear","sum":29},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromDays","sum":1345},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromHours","sum":37},{"parent":"MODULE_FUNC","rule":"datetime::IntervalFromMinutes","sum":6},{"parent":"MODULE_FUNC","rule":"datetime::MakeDate","sum":5405},{"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":309},{"parent":"MODULE_FUNC","rule":"datetime::StartOf","sum":1},{"parent":"MODULE_FUNC","rule":"datetime::StartOfDay","sum":2},{"parent":"MODULE_FUNC","rule":"datetime::StartOfMonth","sum":549},{"parent":"MODULE_FUNC","rule":"datetime::StartOfWeek","sum":528},{"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":1},{"parent":"MODULE_FUNC","rule":"math::log","sum":2},{"parent":"MODULE_FUNC","rule":"math::pow","sum":6},{"parent":"MODULE_FUNC","rule":"math::round","sum":43},{"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":732},{"parent":"MODULE_FUNC","rule":"pg::array_agg","sum":2},{"parent":"MODULE_FUNC","rule":"pg::date_part","sum":711},{"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":2733},{"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":1},{"parent":"MODULE_FUNC","rule":"string::ReplaceFirst","sum":14},{"parent":"MODULE_FUNC","rule":"string::SplitToList","sum":5},{"parent":"MODULE_FUNC","rule":"string::StartsWith","sum":1},{"parent":"MODULE_FUNC","rule":"string::contains","sum":4},{"parent":"MODULE_FUNC","rule":"string::joinfromlist","sum":15},{"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::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":4},{"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":258051},{"parent":"PRAGMA","rule":"AllowUnnamedColumns","sum":4},{"parent":"PRAGMA","rule":"AnsiCurrentRow","sum":951},{"parent":"PRAGMA","rule":"AnsiImplicitCrossJoin","sum":13019},{"parent":"PRAGMA","rule":"AnsiInFOREmptyORNullableItemsCollections","sum":52},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNULLableItemsCollectiONs","sum":158},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNULLableItemsCollections","sum":4074},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrNullableItemsCollections","sum":39592457},{"parent":"PRAGMA","rule":"AnsiInForEmptyOrnullableItemsCollections","sum":260},{"parent":"PRAGMA","rule":"AnsiInForEmptyorNullableItemsCollections","sum":2145},{"parent":"PRAGMA","rule":"AnsiInForEmptyornullableItemsCollections","sum":1272},{"parent":"PRAGMA","rule":"AnsiInforEmptyOrNullableItemsCollections","sum":243},{"parent":"PRAGMA","rule":"AnsiOptionalAS","sum":4},{"parent":"PRAGMA","rule":"AnsiOptionalAs","sum":2145464},{"parent":"PRAGMA","rule":"AnsiOptionalas","sum":352},{"parent":"PRAGMA","rule":"AnsiOrderByLimitInUnionAll","sum":210077},{"parent":"PRAGMA","rule":"AnsiRankForNullableKeys","sum":223539},{"parent":"PRAGMA","rule":"AnsiinForEmptyOrNullableItemsCollections","sum":8480},{"parent":"PRAGMA","rule":"AnsiinForEmptyOrNullableitemsCollections","sum":16},{"parent":"PRAGMA","rule":"AutoCommit","sum":39070},{"parent":"PRAGMA","rule":"BlockEngine","sum":351069},{"parent":"PRAGMA","rule":"BogousStarInGroupByOverJoin","sum":2},{"parent":"PRAGMA","rule":"CLassicDivision","sum":9},{"parent":"PRAGMA","rule":"CheckedOps","sum":649},{"parent":"PRAGMA","rule":"ClASsicDivision","sum":627},{"parent":"PRAGMA","rule":"ClassicDIvision","sum":44},{"parent":"PRAGMA","rule":"ClassicDivisiON","sum":148},{"parent":"PRAGMA","rule":"ClassicDivision","sum":2553059},{"parent":"PRAGMA","rule":"Classicdivision","sum":6},{"parent":"PRAGMA","rule":"CoalesceJoinKeysOnQualifiedAll","sum":36},{"parent":"PRAGMA","rule":"CompactGroupBy","sum":26},{"parent":"PRAGMA","rule":"CompactNamedExprs","sum":2438},{"parent":"PRAGMA","rule":"CostBasedOptimizer","sum":14407},{"parent":"PRAGMA","rule":"DQ.ANALYZEQUERY","sum":1617},{"parent":"PRAGMA","rule":"DQEngine","sum":3},{"parent":"PRAGMA","rule":"DirectRead","sum":48},{"parent":"PRAGMA","rule":"DisableAnsiInForEmptyOrNullableItemsCollections","sum":233532},{"parent":"PRAGMA","rule":"DisableAnsiRankForNullableKeys","sum":38142},{"parent":"PRAGMA","rule":"DisableCoalesceJoinKeysOnQualifiedAll","sum":197550},{"parent":"PRAGMA","rule":"DisableCompactNamedExprs","sum":12},{"parent":"PRAGMA","rule":"DisableOrderedColumns","sum":536},{"parent":"PRAGMA","rule":"DisablePullUpFlatMapOverJoin","sum":2},{"parent":"PRAGMA","rule":"DisableSimpleColumns","sum":397601},{"parent":"PRAGMA","rule":"DisableStrictJoinKeyTypes","sum":416},{"parent":"PRAGMA","rule":"DisableUnicodeLiterals","sum":34},{"parent":"PRAGMA","rule":"DisableUnordered","sum":869},{"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":10781569},{"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":289321},{"parent":"PRAGMA","rule":"FeatureR010","sum":224},{"parent":"PRAGMA","rule":"File","sum":7397697},{"parent":"PRAGMA","rule":"FileOption","sum":15305},{"parent":"PRAGMA","rule":"FilterPushdownOverJoinOptionalSide","sum":6},{"parent":"PRAGMA","rule":"FlexibleTypes","sum":943},{"parent":"PRAGMA","rule":"Folder","sum":3774},{"parent":"PRAGMA","rule":"Greetings","sum":1443},{"parent":"PRAGMA","rule":"GroupByCubeLimit","sum":39613},{"parent":"PRAGMA","rule":"GroupByLimit","sum":152020},{"parent":"PRAGMA","rule":"JsonQueryReturnsJsonDocument","sum":300759},{"parent":"PRAGMA","rule":"LIBRARY","sum":246771},{"parent":"PRAGMA","rule":"LIbrary","sum":52},{"parent":"PRAGMA","rule":"Library","sum":15064301},{"parent":"PRAGMA","rule":"OrderedColumns","sum":5979946},{"parent":"PRAGMA","rule":"Orderedcolumns","sum":12},{"parent":"PRAGMA","rule":"OverrideLibrary","sum":182},{"parent":"PRAGMA","rule":"Package","sum":5},{"parent":"PRAGMA","rule":"PositionalUnionAll","sum":119861},{"parent":"PRAGMA","rule":"PqReadBy","sum":42},{"parent":"PRAGMA","rule":"REGEXUSERE2","sum":13433},{"parent":"PRAGMA","rule":"RefSelect","sum":433467},{"parent":"PRAGMA","rule":"RegExUseRe2","sum":32},{"parent":"PRAGMA","rule":"RegexUseRe2","sum":312165},{"parent":"PRAGMA","rule":"ResultRowsLimit","sum":3},{"parent":"PRAGMA","rule":"SampleSelect","sum":11},{"parent":"PRAGMA","rule":"SeqMode","sum":4},{"parent":"PRAGMA","rule":"SimpleColumns","sum":6945318},{"parent":"PRAGMA","rule":"Simplecolumns","sum":3},{"parent":"PRAGMA","rule":"StrictJoinKeyTypes","sum":76407},{"parent":"PRAGMA","rule":"TablePathPrefix","sum":5599047},{"parent":"PRAGMA","rule":"UDF","sum":2171118},{"parent":"PRAGMA","rule":"Udf","sum":1936209},{"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":26250},{"parent":"PRAGMA","rule":"Warning","sum":2962871},{"parent":"PRAGMA","rule":"WarningMsg","sum":12640},{"parent":"PRAGMA","rule":"YSON.AutoConvert","sum":834},{"parent":"PRAGMA","rule":"YSON.DisableStrict","sum":44713},{"parent":"PRAGMA","rule":"YSON.Strict","sum":732},{"parent":"PRAGMA","rule":"YT.Auth","sum":58},{"parent":"PRAGMA","rule":"YT.DefaultOperationWeight","sum":253828},{"parent":"PRAGMA","rule":"YT.InferSchema","sum":17857},{"parent":"PRAGMA","rule":"YT.POOL","sum":275},{"parent":"PRAGMA","rule":"YT.Pool","sum":86019},{"parent":"PRAGMA","rule":"YT.StaticPool","sum":6},{"parent":"PRAGMA","rule":"YT.TableContentDeliveryMode","sum":1666},{"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":18841},{"parent":"PRAGMA","rule":"YsON.Disablestrict","sum":131},{"parent":"PRAGMA","rule":"Yson.AutoConvert","sum":41777},{"parent":"PRAGMA","rule":"Yson.DIsableStrict","sum":15201},{"parent":"PRAGMA","rule":"Yson.DisableStrict","sum":481166},{"parent":"PRAGMA","rule":"Yson.Strict","sum":6872},{"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":24787},{"parent":"PRAGMA","rule":"Yt.HybridDqExecution","sum":9},{"parent":"PRAGMA","rule":"Yt.InferSchema","sum":2746},{"parent":"PRAGMA","rule":"Yt.MaxRowWeight","sum":955},{"parent":"PRAGMA","rule":"Yt.ParallelOperationsLimit","sum":12},{"parent":"PRAGMA","rule":"Yt.Pool","sum":255054},{"parent":"PRAGMA","rule":"Yt.PoolTrees","sum":1},{"parent":"PRAGMA","rule":"Yt.StaticPool","sum":9950},{"parent":"PRAGMA","rule":"Yt.TmpFolder","sum":4},{"parent":"PRAGMA","rule":"Yt.UseNativeYtTypes","sum":2851},{"parent":"PRAGMA","rule":"Yt.pool","sum":82540},{"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":133608},{"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":1287644},{"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":3092333},{"parent":"PRAGMA","rule":"dq.ENABLEDQREPLICATE","sum":1},{"parent":"PRAGMA","rule":"dq.EnableComputeActor","sum":1},{"parent":"PRAGMA","rule":"dq.EnableDqReplicate","sum":920387},{"parent":"PRAGMA","rule":"dq.EnableDqreplicate","sum":3},{"parent":"PRAGMA","rule":"dq.EnableFullResultWrite","sum":28736},{"parent":"PRAGMA","rule":"dq.EnableInsert","sum":86029},{"parent":"PRAGMA","rule":"dq.FallbackPolicy","sum":3},{"parent":"PRAGMA","rule":"dq.HashJoinMode","sum":6061},{"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":22991},{"parent":"PRAGMA","rule":"dq.MaxTasksPerStage","sum":60968},{"parent":"PRAGMA","rule":"dq.MemoryLimit","sum":7899},{"parent":"PRAGMA","rule":"dq.OptLLVM","sum":11},{"parent":"PRAGMA","rule":"dq.SplitStageOnDqReplicate","sum":11031},{"parent":"PRAGMA","rule":"dq.UseBlockReader","sum":3948},{"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":109},{"parent":"PRAGMA","rule":"dq.enableDqReplicate","sum":348},{"parent":"PRAGMA","rule":"dq.enabledqreplicate","sum":24},{"parent":"PRAGMA","rule":"dqEngine","sum":91599},{"parent":"PRAGMA","rule":"dqengine","sum":21267},{"parent":"PRAGMA","rule":"equijoin","sum":4},{"parent":"PRAGMA","rule":"file","sum":1808859},{"parent":"PRAGMA","rule":"folder","sum":674},{"parent":"PRAGMA","rule":"greetings","sum":1},{"parent":"PRAGMA","rule":"library","sum":4874289},{"parent":"PRAGMA","rule":"orderedColumns","sum":7},{"parent":"PRAGMA","rule":"orderedcolumns","sum":15150},{"parent":"PRAGMA","rule":"override_library","sum":32},{"parent":"PRAGMA","rule":"package","sum":228295},{"parent":"PRAGMA","rule":"refselect","sum":32461},{"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":1442},{"parent":"PRAGMA","rule":"simplecolumns","sum":243154},{"parent":"PRAGMA","rule":"tablepathprefix","sum":2},{"parent":"PRAGMA","rule":"udf","sum":4332081},{"parent":"PRAGMA","rule":"warning","sum":66551},{"parent":"PRAGMA","rule":"yson.AutoConvert","sum":4727715},{"parent":"PRAGMA","rule":"yson.Auto_convert","sum":18},{"parent":"PRAGMA","rule":"yson.Autoconvert","sum":1161},{"parent":"PRAGMA","rule":"yson.DisableStrict","sum":20043055},{"parent":"PRAGMA","rule":"yson.Disablestrict","sum":46},{"parent":"PRAGMA","rule":"yson.Fast","sum":664},{"parent":"PRAGMA","rule":"yson.Strict","sum":3492262},{"parent":"PRAGMA","rule":"yson.autoConvert","sum":4},{"parent":"PRAGMA","rule":"yson.autoconvert","sum":3737},{"parent":"PRAGMA","rule":"yson.disableStrict","sum":2363},{"parent":"PRAGMA","rule":"yson.disable_strict","sum":3},{"parent":"PRAGMA","rule":"yson.disablestrict","sum":211677},{"parent":"PRAGMA","rule":"yson.strict","sum":708},{"parent":"PRAGMA","rule":"yt.AUth","sum":4},{"parent":"PRAGMA","rule":"yt.Annotations","sum":46403354},{"parent":"PRAGMA","rule":"yt.Auth","sum":1277833},{"parent":"PRAGMA","rule":"yt.AutoMerge","sum":4456791},{"parent":"PRAGMA","rule":"yt.Automerge","sum":2800},{"parent":"PRAGMA","rule":"yt.BatchListFolderConcurrency","sum":152},{"parent":"PRAGMA","rule":"yt.BinaryExpirationInterval","sum":6212936},{"parent":"PRAGMA","rule":"yt.BinaryTmpFolder","sum":6238906},{"parent":"PRAGMA","rule":"yt.BlockReaderSupportedDataTypes","sum":5},{"parent":"PRAGMA","rule":"yt.ColumnGroupMode","sum":443562},{"parent":"PRAGMA","rule":"yt.CombineCoreLimit","sum":76823},{"parent":"PRAGMA","rule":"yt.CommonJoinCoreLimit","sum":1845},{"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":2146},{"parent":"PRAGMA","rule":"yt.DatASizePerPartition","sum":732},{"parent":"PRAGMA","rule":"yt.DataSizePerJob","sum":5239479},{"parent":"PRAGMA","rule":"yt.DataSizePerMapJob","sum":314117},{"parent":"PRAGMA","rule":"yt.DataSizePerPartition","sum":513857},{"parent":"PRAGMA","rule":"yt.DataSizePerSortJob","sum":199622},{"parent":"PRAGMA","rule":"yt.DatasizePerJob","sum":16},{"parent":"PRAGMA","rule":"yt.DatasizePerSortJob","sum":16},{"parent":"PRAGMA","rule":"yt.DefaultCalcMemoryLimit","sum":258983},{"parent":"PRAGMA","rule":"yt.DefaultCluster","sum":71795086},{"parent":"PRAGMA","rule":"yt.DefaultLocalityTimeout","sum":4063},{"parent":"PRAGMA","rule":"yt.DefaultMapSelectivityFactor","sum":53},{"parent":"PRAGMA","rule":"yt.DefaultMaxJobFails","sum":1550814},{"parent":"PRAGMA","rule":"yt.DefaultMemORyLimit","sum":7},{"parent":"PRAGMA","rule":"yt.DefaultMemoryLimit","sum":2058884},{"parent":"PRAGMA","rule":"yt.DefaultMemoryReserveFactor","sum":25433},{"parent":"PRAGMA","rule":"yt.DefaultOperationWeight","sum":9750845},{"parent":"PRAGMA","rule":"yt.Description","sum":236380},{"parent":"PRAGMA","rule":"yt.DisableFuseOperations","sum":2},{"parent":"PRAGMA","rule":"yt.DisableJobSplitting","sum":4638},{"parent":"PRAGMA","rule":"yt.DisableOptimizers","sum":30931},{"parent":"PRAGMA","rule":"yt.EnableDynamicStoreReadInDQ","sum":1},{"parent":"PRAGMA","rule":"yt.ErasureCodecCpu","sum":148239},{"parent":"PRAGMA","rule":"yt.EvaluationTableSizeLimit","sum":815030},{"parent":"PRAGMA","rule":"yt.ExpirationDeadline","sum":3423055},{"parent":"PRAGMA","rule":"yt.ExpirationInterval","sum":8107892},{"parent":"PRAGMA","rule":"yt.ExtendedStatsMaxChunkCount","sum":4},{"parent":"PRAGMA","rule":"yt.ExternalTx","sum":80671058},{"parent":"PRAGMA","rule":"yt.ExtraTmpfsSize","sum":95},{"parent":"PRAGMA","rule":"yt.FileCacheTtl","sum":8247621},{"parent":"PRAGMA","rule":"yt.FolderInlineDataLimit","sum":40},{"parent":"PRAGMA","rule":"yt.FolderInlineItemsLimit","sum":2},{"parent":"PRAGMA","rule":"yt.ForceInferSchema","sum":801298},{"parent":"PRAGMA","rule":"yt.ForceJobSizeAdjuster","sum":10237},{"parent":"PRAGMA","rule":"yt.GeobaseDownloadUrl","sum":62921},{"parent":"PRAGMA","rule":"yt.HybridDqDataSizeLimitForOrdered","sum":312251},{"parent":"PRAGMA","rule":"yt.HybridDqDataSizeLimitForUnordered","sum":315268},{"parent":"PRAGMA","rule":"yt.HybridDqExecution","sum":3699504},{"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":4595},{"parent":"PRAGMA","rule":"yt.IgnoreWeakSchema","sum":231556},{"parent":"PRAGMA","rule":"yt.IgnoreYamrDsv","sum":22544},{"parent":"PRAGMA","rule":"yt.InferSchemA","sum":11},{"parent":"PRAGMA","rule":"yt.InferSchema","sum":32292775},{"parent":"PRAGMA","rule":"yt.InferSchemaTableCountThreshold","sum":1},{"parent":"PRAGMA","rule":"yt.Inferschema","sum":85412},{"parent":"PRAGMA","rule":"yt.IntermediateAccount","sum":132967},{"parent":"PRAGMA","rule":"yt.IntermediateDataMedium","sum":294637},{"parent":"PRAGMA","rule":"yt.IntermediateReplicationFactor","sum":2782},{"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":14134},{"parent":"PRAGMA","rule":"yt.JoinAllowColumnRenames","sum":446},{"parent":"PRAGMA","rule":"yt.JoinCollectColumnarStatistics","sum":20355},{"parent":"PRAGMA","rule":"yt.JoinColumnarStatisticsFetcherMode","sum":592},{"parent":"PRAGMA","rule":"yt.JoinEnableStarJoin","sum":41721},{"parent":"PRAGMA","rule":"yt.JoinMergeForce","sum":53571},{"parent":"PRAGMA","rule":"yt.JoinMergeReduceJobMaxSize","sum":2753},{"parent":"PRAGMA","rule":"yt.JoinMergeTablesLimit","sum":3660},{"parent":"PRAGMA","rule":"yt.JoinMergeUnsortedFactor","sum":1673},{"parent":"PRAGMA","rule":"yt.JoinMergeUseSmallAsPrimary","sum":5933},{"parent":"PRAGMA","rule":"yt.JoinUseColumnarStatistics","sum":1013},{"parent":"PRAGMA","rule":"yt.JoinWaitAllInputs","sum":16},{"parent":"PRAGMA","rule":"yt.KeepTempTables","sum":974},{"parent":"PRAGMA","rule":"yt.LayerPaths","sum":159087},{"parent":"PRAGMA","rule":"yt.LookupJoinLimit","sum":230889},{"parent":"PRAGMA","rule":"yt.LookupJoinMaxRows","sum":181590},{"parent":"PRAGMA","rule":"yt.MAXRowWeight","sum":56},{"parent":"PRAGMA","rule":"yt.MAxJobCount","sum":64},{"parent":"PRAGMA","rule":"yt.MAxRowWeight","sum":1},{"parent":"PRAGMA","rule":"yt.MapJOINLimit","sum":721},{"parent":"PRAGMA","rule":"yt.MapJoinLimit","sum":691161},{"parent":"PRAGMA","rule":"yt.MapJoinShardCount","sum":320751},{"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":19952},{"parent":"PRAGMA","rule":"yt.MaxInputTables","sum":29639},{"parent":"PRAGMA","rule":"yt.MaxInputTablesForSortedMerge","sum":5917},{"parent":"PRAGMA","rule":"yt.MaxJobCount","sum":12535931},{"parent":"PRAGMA","rule":"yt.MaxJobcount","sum":1383},{"parent":"PRAGMA","rule":"yt.MaxKeyRangeCount","sum":9},{"parent":"PRAGMA","rule":"yt.MaxKeyWeight","sum":206061},{"parent":"PRAGMA","rule":"yt.MaxOutputTables","sum":54},{"parent":"PRAGMA","rule":"yt.MaxReplicationFactorToFuseOperations","sum":15},{"parent":"PRAGMA","rule":"yt.MaxRowWeight","sum":6096066},{"parent":"PRAGMA","rule":"yt.MaxSpeculativeJobCountPerTask","sum":2243},{"parent":"PRAGMA","rule":"yt.MinLocalityInputDataWeight","sum":8},{"parent":"PRAGMA","rule":"yt.MinPublishedAvgChunkSize","sum":3163080},{"parent":"PRAGMA","rule":"yt.MinTempAvgChunkSize","sum":178194},{"parent":"PRAGMA","rule":"yt.NativeYtTypeCompatibility","sum":15},{"parent":"PRAGMA","rule":"yt.NetworkProject","sum":608728},{"parent":"PRAGMA","rule":"yt.NightlyCompress","sum":146858},{"parent":"PRAGMA","rule":"yt.OWners","sum":21},{"parent":"PRAGMA","rule":"yt.OperationReaders","sum":12782804},{"parent":"PRAGMA","rule":"yt.OperationSpec","sum":8554262},{"parent":"PRAGMA","rule":"yt.OptimizeFor","sum":5765068},{"parent":"PRAGMA","rule":"yt.Owners","sum":65852261},{"parent":"PRAGMA","rule":"yt.POOL","sum":68},{"parent":"PRAGMA","rule":"yt.POol","sum":12},{"parent":"PRAGMA","rule":"yt.ParallelOperationsLimit","sum":1384490},{"parent":"PRAGMA","rule":"yt.PartitionByConstantKeysViaMap","sum":13},{"parent":"PRAGMA","rule":"yt.PooL","sum":1},{"parent":"PRAGMA","rule":"yt.Pool","sum":54684434},{"parent":"PRAGMA","rule":"yt.PoolTrees","sum":6598981},{"parent":"PRAGMA","rule":"yt.PrimaryMedium","sum":381954},{"parent":"PRAGMA","rule":"yt.PruneKeyFilterLambda","sum":560},{"parent":"PRAGMA","rule":"yt.PublishedAutoMerge","sum":3402932},{"parent":"PRAGMA","rule":"yt.PublishedCompressionCodec","sum":7389711},{"parent":"PRAGMA","rule":"yt.PublishedErasureCodec","sum":5377449},{"parent":"PRAGMA","rule":"yt.PublishedMedia","sum":4220},{"parent":"PRAGMA","rule":"yt.PublishedPrimaryMedium","sum":782354},{"parent":"PRAGMA","rule":"yt.PublishedReplicationFactor","sum":23458},{"parent":"PRAGMA","rule":"yt.PythonCpu","sum":81442},{"parent":"PRAGMA","rule":"yt.QueryCacheIgnoreTableRevision","sum":65674},{"parent":"PRAGMA","rule":"yt.QueryCacheMode","sum":24255862},{"parent":"PRAGMA","rule":"yt.QueryCacheSalt","sum":5},{"parent":"PRAGMA","rule":"yt.QueryCacheTtl","sum":8944821},{"parent":"PRAGMA","rule":"yt.QueryCacheUseForCalc","sum":8},{"parent":"PRAGMA","rule":"yt.QuerycacheMode","sum":2},{"parent":"PRAGMA","rule":"yt.ReleaseTempData","sum":2701171},{"parent":"PRAGMA","rule":"yt.STaticPool","sum":3},{"parent":"PRAGMA","rule":"yt.SamplingIoBlockSize","sum":3871},{"parent":"PRAGMA","rule":"yt.SchedulingTag","sum":37},{"parent":"PRAGMA","rule":"yt.SchedulingTagFilter","sum":2971},{"parent":"PRAGMA","rule":"yt.ScriptCpu","sum":4799},{"parent":"PRAGMA","rule":"yt.StartedBy","sum":264057},{"parent":"PRAGMA","rule":"yt.StaticPOol","sum":1},{"parent":"PRAGMA","rule":"yt.StaticPool","sum":112934029},{"parent":"PRAGMA","rule":"yt.Static_pool","sum":1},{"parent":"PRAGMA","rule":"yt.SuspendIfAccountLimitExceeded","sum":42805},{"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":6745},{"parent":"PRAGMA","rule":"yt.TableContentMinAvgChunkSize","sum":2641},{"parent":"PRAGMA","rule":"yt.TableContentTmpFolder","sum":28},{"parent":"PRAGMA","rule":"yt.TableContentUseSkiff","sum":11},{"parent":"PRAGMA","rule":"yt.TablesTmpFolder","sum":3427851},{"parent":"PRAGMA","rule":"yt.TempTablesTtl","sum":5363561},{"parent":"PRAGMA","rule":"yt.TemporaryAutoMerge","sum":8842097},{"parent":"PRAGMA","rule":"yt.TemporaryCompressionCodec","sum":5825991},{"parent":"PRAGMA","rule":"yt.TemporaryErasureCodec","sum":4747451},{"parent":"PRAGMA","rule":"yt.TemporaryPrimaryMedium","sum":494255},{"parent":"PRAGMA","rule":"yt.TemporaryReplicationFactor","sum":94},{"parent":"PRAGMA","rule":"yt.TentativePoolTrees","sum":1850255},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilityMaxJobDurationRatio","sum":17563},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilityMinJobDuration","sum":2176},{"parent":"PRAGMA","rule":"yt.TentativeTreeEligibilitySampleJobCount","sum":16218},{"parent":"PRAGMA","rule":"yt.TmpFolder","sum":31243741},{"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":166172},{"parent":"PRAGMA","rule":"yt.UseDefaultTentativePoolTrees","sum":252423},{"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":2005},{"parent":"PRAGMA","rule":"yt.UseNativeYtTYpes","sum":1485},{"parent":"PRAGMA","rule":"yt.UseNativeYtTypes","sum":24243051},{"parent":"PRAGMA","rule":"yt.UseNativeYttypes","sum":760},{"parent":"PRAGMA","rule":"yt.UseNativeytTypes","sum":514},{"parent":"PRAGMA","rule":"yt.UseNewPredicateExtraction","sum":182128},{"parent":"PRAGMA","rule":"yt.UseRPCReaderInDQ","sum":79},{"parent":"PRAGMA","rule":"yt.UseRPCReaderInDq","sum":12130},{"parent":"PRAGMA","rule":"yt.UseSkiff","sum":4049},{"parent":"PRAGMA","rule":"yt.UseSystemColumns","sum":2137},{"parent":"PRAGMA","rule":"yt.UseTmpfs","sum":34350},{"parent":"PRAGMA","rule":"yt.UseTypeV2","sum":4421},{"parent":"PRAGMA","rule":"yt.UseYqlRowSpecCompactForm","sum":3756},{"parent":"PRAGMA","rule":"yt.UserSlots","sum":2521151},{"parent":"PRAGMA","rule":"yt.ViewIsolation","sum":966},{"parent":"PRAGMA","rule":"yt.WideFlowLimit","sum":157941},{"parent":"PRAGMA","rule":"yt.auth","sum":47422},{"parent":"PRAGMA","rule":"yt.datasizeperjob","sum":2025},{"parent":"PRAGMA","rule":"yt.defaultoperationweight","sum":47},{"parent":"PRAGMA","rule":"yt.forceinferschema","sum":50},{"parent":"PRAGMA","rule":"yt.inferSchema","sum":54517},{"parent":"PRAGMA","rule":"yt.infer_schema","sum":10},{"parent":"PRAGMA","rule":"yt.inferschema","sum":2993},{"parent":"PRAGMA","rule":"yt.mapjoinlimit","sum":97691},{"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":41883},{"parent":"PRAGMA","rule":"yt.minPublishedAvgChunksize","sum":11},{"parent":"PRAGMA","rule":"yt.network_project","sum":14438},{"parent":"PRAGMA","rule":"yt.pool","sum":6851101},{"parent":"PRAGMA","rule":"yt.pool_trees","sum":1},{"parent":"PRAGMA","rule":"yt.pooltrees","sum":53},{"parent":"PRAGMA","rule":"yt.publishedcompressioncodec","sum":402},{"parent":"PRAGMA","rule":"yt.staticPool","sum":1262549},{"parent":"PRAGMA","rule":"yt.static_pool","sum":20},{"parent":"PRAGMA","rule":"yt.staticpool","sum":10663},{"parent":"PRAGMA","rule":"yt.tmpFolder","sum":76618},{"parent":"PRAGMA","rule":"yt.tmpfolder","sum":65},{"parent":"PRAGMA","rule":"yt.useNativeYtTYpes","sum":1},{"parent":"PRAGMA","rule":"yt.useNativeYtTypes","sum":909},{"parent":"PRAGMA","rule":"yt.usenativeyttypes","sum":167},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Block2","sum":4937230},{"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Rule_opt_bind_parameter1","sum":13950455},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Rule_opt_bind_parameter2","sum":7499701},{"parent":"TRule_action_or_subquery_args.TBlock2","rule":"TRule_action_or_subquery_args.TBlock2.Token1","sum":7499701},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Block2","sum":136399194},{"parent":"TRule_add_subexpr","rule":"TRule_add_subexpr.Rule_mul_subexpr1","sum":15618407399},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Rule_mul_subexpr2","sum":167963005},{"parent":"TRule_add_subexpr.TBlock2","rule":"TRule_add_subexpr.TBlock2.Token1","sum":167963005},{"parent":"TRule_an_id","rule":"TRule_an_id.Alt_an_id1","sum":2002378369},{"parent":"TRule_an_id.TAlt1","rule":"TRule_an_id.TAlt1.Rule_id1","sum":2002378369},{"parent":"TRule_an_id_as_compat","rule":"TRule_an_id_as_compat.Alt_an_id_as_compat1","sum":2986536},{"parent":"TRule_an_id_as_compat.TAlt1","rule":"TRule_an_id_as_compat.TAlt1.Rule_id_as_compat1","sum":2986536},{"parent":"TRule_an_id_expr","rule":"TRule_an_id_expr.Alt_an_id_expr1","sum":96266390},{"parent":"TRule_an_id_expr.TAlt1","rule":"TRule_an_id_expr.TAlt1.Rule_id_expr1","sum":96266390},{"parent":"TRule_an_id_hint","rule":"TRule_an_id_hint.Alt_an_id_hint1","sum":154334901},{"parent":"TRule_an_id_hint.TAlt1","rule":"TRule_an_id_hint.TAlt1.Rule_id_hint1","sum":154334901},{"parent":"TRule_an_id_or_type","rule":"TRule_an_id_or_type.Alt_an_id_or_type1","sum":9623698435},{"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":9623698435},{"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":677385895},{"parent":"TRule_an_id_pure.TAlt1","rule":"TRule_an_id_pure.TAlt1.Rule_identifier1","sum":677385895},{"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":330797323},{"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":330797323},{"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":46640092},{"parent":"TRule_an_id_window.TAlt1","rule":"TRule_an_id_window.TAlt1.Rule_id_window1","sum":46640092},{"parent":"TRule_an_id_without","rule":"TRule_an_id_without.Alt_an_id_without1","sum":23278546},{"parent":"TRule_an_id_without.TAlt1","rule":"TRule_an_id_without.TAlt1.Rule_id_without1","sum":23278546},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Block2","sum":29466},{"parent":"TRule_and_subexpr","rule":"TRule_and_subexpr.Rule_xor_subexpr1","sum":14281530840},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Rule_xor_subexpr2","sum":29530},{"parent":"TRule_and_subexpr.TBlock2","rule":"TRule_and_subexpr.TBlock2.Token1","sum":29530},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr1","sum":5166388612},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr10","sum":35961481},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr11","sum":8505553},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr12","sum":14597994},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr2","sum":1770883384},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr3","sum":446646858},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr4","sum":398317432},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr5","sum":77082},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr6","sum":61695919},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr7","sum":927990981},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr8","sum":163639},{"parent":"TRule_atom_expr","rule":"TRule_atom_expr.Alt_atom_expr9","sum":510126},{"parent":"TRule_atom_expr.TAlt1","rule":"TRule_atom_expr.TAlt1.Rule_literal_value1","sum":5166388612},{"parent":"TRule_atom_expr.TAlt10","rule":"TRule_atom_expr.TAlt10.Rule_list_literal1","sum":35961481},{"parent":"TRule_atom_expr.TAlt11","rule":"TRule_atom_expr.TAlt11.Rule_dict_literal1","sum":8505553},{"parent":"TRule_atom_expr.TAlt12","rule":"TRule_atom_expr.TAlt12.Rule_struct_literal1","sum":14597994},{"parent":"TRule_atom_expr.TAlt2","rule":"TRule_atom_expr.TAlt2.Rule_bind_parameter1","sum":1770883384},{"parent":"TRule_atom_expr.TAlt3","rule":"TRule_atom_expr.TAlt3.Rule_lambda1","sum":446646858},{"parent":"TRule_atom_expr.TAlt4","rule":"TRule_atom_expr.TAlt4.Rule_cast_expr1","sum":398317432},{"parent":"TRule_atom_expr.TAlt5","rule":"TRule_atom_expr.TAlt5.Rule_exists_expr1","sum":77082},{"parent":"TRule_atom_expr.TAlt6","rule":"TRule_atom_expr.TAlt6.Rule_case_expr1","sum":61695919},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Block3","sum":927990981},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Rule_an_id_or_type1","sum":927990981},{"parent":"TRule_atom_expr.TAlt7","rule":"TRule_atom_expr.TAlt7.Token2","sum":927990981},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt1","sum":927989742},{"parent":"TRule_atom_expr.TAlt7.TBlock3","rule":"TRule_atom_expr.TAlt7.TBlock3.Alt2","sum":1239},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt1","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt1.Rule_id_or_type1","sum":927989742},{"parent":"TRule_atom_expr.TAlt7.TBlock3.TAlt2","rule":"TRule_atom_expr.TAlt7.TBlock3.TAlt2.Token1","sum":1239},{"parent":"TRule_atom_expr.TAlt8","rule":"TRule_atom_expr.TAlt8.Rule_value_constructor1","sum":163639},{"parent":"TRule_atom_expr.TAlt9","rule":"TRule_atom_expr.TAlt9.Rule_bitcast_expr1","sum":510126},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Block2","sum":3701723791},{"parent":"TRule_bind_parameter","rule":"TRule_bind_parameter.Token1","sum":3701723791},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt1","sum":3701711851},{"parent":"TRule_bind_parameter.TBlock2","rule":"TRule_bind_parameter.TBlock2.Alt2","sum":9460},{"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":3701711851},{"parent":"TRule_bind_parameter.TBlock2.TAlt2","rule":"TRule_bind_parameter.TBlock2.TAlt2.Token1","sum":9460},{"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":244789},{"parent":"TRule_bind_parameter_list","rule":"TRule_bind_parameter_list.Rule_bind_parameter1","sum":1007079493},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Rule_bind_parameter2","sum":336756},{"parent":"TRule_bind_parameter_list.TBlock2","rule":"TRule_bind_parameter_list.TBlock2.Token1","sum":336756},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Block2","sum":138551599},{"parent":"TRule_bit_subexpr","rule":"TRule_bit_subexpr.Rule_add_subexpr1","sum":15460391762},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Rule_add_subexpr2","sum":158015637},{"parent":"TRule_bit_subexpr.TBlock2","rule":"TRule_bit_subexpr.TBlock2.Token1","sum":158015637},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_expr3","sum":510126},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Rule_type_name_simple5","sum":510126},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token1","sum":510126},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token2","sum":510126},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token4","sum":510126},{"parent":"TRule_bitcast_expr","rule":"TRule_bitcast_expr.Token6","sum":510126},{"parent":"TRule_bool_value","rule":"TRule_bool_value.Token1","sum":104231904},{"parent":"TRule_call_action","rule":"TRule_call_action.Block1","sum":9439855},{"parent":"TRule_call_action","rule":"TRule_call_action.Block3","sum":7169537},{"parent":"TRule_call_action","rule":"TRule_call_action.Token2","sum":9439855},{"parent":"TRule_call_action","rule":"TRule_call_action.Token4","sum":9439855},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt1","sum":9313937},{"parent":"TRule_call_action.TBlock1","rule":"TRule_call_action.TBlock1.Alt2","sum":125918},{"parent":"TRule_call_action.TBlock1.TAlt1","rule":"TRule_call_action.TBlock1.TAlt1.Rule_bind_parameter1","sum":9313937},{"parent":"TRule_call_action.TBlock1.TAlt2","rule":"TRule_call_action.TBlock1.TAlt2.Token1","sum":125918},{"parent":"TRule_call_action.TBlock3","rule":"TRule_call_action.TBlock3.Rule_expr_list1","sum":7169537},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Block2","sum":1},{"parent":"TRule_callable_arg","rule":"TRule_callable_arg.Rule_variant_arg1","sum":17979058},{"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":4366203},{"parent":"TRule_callable_arg_list","rule":"TRule_callable_arg_list.Rule_callable_arg1","sum":9770032},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Rule_callable_arg2","sum":8209026},{"parent":"TRule_callable_arg_list.TBlock2","rule":"TRule_callable_arg_list.TBlock2.Token1","sum":8209026},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block2","sum":4703469},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block3","sum":61695923},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Block4","sum":61695923},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token1","sum":61695923},{"parent":"TRule_case_expr","rule":"TRule_case_expr.Token5","sum":61695923},{"parent":"TRule_case_expr.TBlock2","rule":"TRule_case_expr.TBlock2.Rule_expr1","sum":4703469},{"parent":"TRule_case_expr.TBlock3","rule":"TRule_case_expr.TBlock3.Rule_when_expr1","sum":158241873},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Rule_expr2","sum":61695923},{"parent":"TRule_case_expr.TBlock4","rule":"TRule_case_expr.TBlock4.Token1","sum":61695923},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_expr3","sum":398361820},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Rule_type_name_or_bind5","sum":398361820},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token1","sum":398361820},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token2","sum":398361820},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token4","sum":398361820},{"parent":"TRule_cast_expr","rule":"TRule_cast_expr.Token6","sum":398361820},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block1","sum":6776988},{"parent":"TRule_cluster_expr","rule":"TRule_cluster_expr.Block2","sum":374662314},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Rule_an_id1","sum":6776988},{"parent":"TRule_cluster_expr.TBlock1","rule":"TRule_cluster_expr.TBlock1.Token2","sum":6776988},{"parent":"TRule_cluster_expr.TBlock2","rule":"TRule_cluster_expr.TBlock2.Alt1","sum":374662314},{"parent":"TRule_cluster_expr.TBlock2.TAlt1","rule":"TRule_cluster_expr.TBlock2.TAlt1.Rule_pure_column_or_named1","sum":374662314},{"parent":"TRule_column_list","rule":"TRule_column_list.Block2","sum":282294},{"parent":"TRule_column_list","rule":"TRule_column_list.Block3","sum":805},{"parent":"TRule_column_list","rule":"TRule_column_list.Rule_column_name1","sum":848767},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Rule_column_name2","sum":1124311},{"parent":"TRule_column_list.TBlock2","rule":"TRule_column_list.TBlock2.Token1","sum":1124311},{"parent":"TRule_column_list.TBlock3","rule":"TRule_column_list.TBlock3.Token1","sum":805},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_an_id2","sum":23324516},{"parent":"TRule_column_name","rule":"TRule_column_name.Rule_opt_id_prefix1","sum":23324516},{"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":13017921},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr1","sum":15927923723},{"parent":"TRule_con_subexpr","rule":"TRule_con_subexpr.Alt_con_subexpr2","sum":87792338},{"parent":"TRule_con_subexpr.TAlt1","rule":"TRule_con_subexpr.TAlt1.Rule_unary_subexpr1","sum":15927923723},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_op1","sum":87792338},{"parent":"TRule_con_subexpr.TAlt2","rule":"TRule_con_subexpr.TAlt2.Rule_unary_subexpr2","sum":87792338},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr1","sum":52200219},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr2","sum":126116119},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr3","sum":172659778},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr4","sum":24970630},{"parent":"TRule_cond_expr","rule":"TRule_cond_expr.Alt_cond_expr5","sum":719590569},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block1","sum":9282308},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Block4","sum":93089},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_eq_subexpr3","sum":52200219},{"parent":"TRule_cond_expr.TAlt1","rule":"TRule_cond_expr.TAlt1.Rule_match_op2","sum":52200219},{"parent":"TRule_cond_expr.TAlt1.TBlock1","rule":"TRule_cond_expr.TAlt1.TBlock1.Token1","sum":9282308},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Rule_eq_subexpr2","sum":93089},{"parent":"TRule_cond_expr.TAlt1.TBlock4","rule":"TRule_cond_expr.TAlt1.TBlock4.Token1","sum":93089},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block1","sum":26171687},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Block3","sum":3144732},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Rule_in_expr4","sum":126116119},{"parent":"TRule_cond_expr.TAlt2","rule":"TRule_cond_expr.TAlt2.Token2","sum":126116119},{"parent":"TRule_cond_expr.TAlt2.TBlock1","rule":"TRule_cond_expr.TAlt2.TBlock1.Token1","sum":26171687},{"parent":"TRule_cond_expr.TAlt2.TBlock3","rule":"TRule_cond_expr.TAlt2.TBlock3.Token1","sum":3144732},{"parent":"TRule_cond_expr.TAlt3","rule":"TRule_cond_expr.TAlt3.Block1","sum":172659778},{"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":412},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt3","sum":60677332},{"parent":"TRule_cond_expr.TAlt3.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.Alt4","sum":111981871},{"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":412},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token1","sum":60677332},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt3.Token2","sum":60677332},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Block1","sum":111940435},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token2","sum":111981871},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.Token3","sum":111981871},{"parent":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt3.TBlock1.TAlt4.TBlock1.Token1","sum":111940435},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Block1","sum":402989},{"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":24970630},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Rule_eq_subexpr6","sum":24970630},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token2","sum":24970630},{"parent":"TRule_cond_expr.TAlt4","rule":"TRule_cond_expr.TAlt4.Token5","sum":24970630},{"parent":"TRule_cond_expr.TAlt4.TBlock1","rule":"TRule_cond_expr.TAlt4.TBlock1.Token1","sum":402989},{"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":719590569},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Block1","sum":719592554},{"parent":"TRule_cond_expr.TAlt5.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.Rule_eq_subexpr2","sum":719592554},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt1","sum":492260107},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt2","sum":172254454},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt3","sum":49582527},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt4","sum":5097730},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.Alt5","sum":397736},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt1.Token1","sum":492260107},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt2.Token1","sum":172254454},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt3.Token1","sum":49582527},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt4.Token1","sum":5097730},{"parent":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5","rule":"TRule_cond_expr.TAlt5.TBlock1.TBlock1.TAlt5.Rule_distinct_from_op1","sum":397736},{"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":276671},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token1","sum":276671},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token2","sum":276671},{"parent":"TRule_cube_list","rule":"TRule_cube_list.Token4","sum":276671},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_bind_parameter2","sum":156358531},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Rule_type_name4","sum":156358531},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token1","sum":156358531},{"parent":"TRule_declare_stmt","rule":"TRule_declare_stmt.Token3","sum":156358531},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block1","sum":45559},{"parent":"TRule_define_action_or_subquery_body","rule":"TRule_define_action_or_subquery_body.Block2","sum":36124603},{"parent":"TRule_define_action_or_subquery_body.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock1.Token1","sum":45559},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block2","sum":16082328},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Block3","sum":23526370},{"parent":"TRule_define_action_or_subquery_body.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.Rule_sql_stmt_core1","sum":36124603},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Block1","sum":45905507},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.Rule_sql_stmt_core2","sum":45905507},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock2.TBlock1.Token1","sum":45918577},{"parent":"TRule_define_action_or_subquery_body.TBlock2.TBlock3","rule":"TRule_define_action_or_subquery_body.TBlock2.TBlock3.Token1","sum":23552077},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Block5","sum":13950455},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_bind_parameter3","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Rule_define_action_or_subquery_body8","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token1","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token10","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token2","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token4","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token6","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token7","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt","rule":"TRule_define_action_or_subquery_stmt.Token9","sum":22267674},{"parent":"TRule_define_action_or_subquery_stmt.TBlock5","rule":"TRule_define_action_or_subquery_stmt.TBlock5.Rule_action_or_subquery_args1","sum":13950455},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block2","sum":8218509},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Block3","sum":2249006},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token1","sum":8960374},{"parent":"TRule_dict_literal","rule":"TRule_dict_literal.Token4","sum":8960374},{"parent":"TRule_dict_literal.TBlock2","rule":"TRule_dict_literal.TBlock2.Rule_expr_dict_list1","sum":8218509},{"parent":"TRule_dict_literal.TBlock3","rule":"TRule_dict_literal.TBlock3.Token1","sum":2249006},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Block2","sum":118890},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token1","sum":397736},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token3","sum":397736},{"parent":"TRule_distinct_from_op","rule":"TRule_distinct_from_op.Token4","sum":397736},{"parent":"TRule_distinct_from_op.TBlock2","rule":"TRule_distinct_from_op.TBlock2.Token1","sum":118890},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Block2","sum":23303339},{"parent":"TRule_do_stmt","rule":"TRule_do_stmt.Token1","sum":23303339},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt1","sum":9439855},{"parent":"TRule_do_stmt.TBlock2","rule":"TRule_do_stmt.TBlock2.Alt2","sum":13863484},{"parent":"TRule_do_stmt.TBlock2.TAlt1","rule":"TRule_do_stmt.TBlock2.TAlt1.Rule_call_action1","sum":9439855},{"parent":"TRule_do_stmt.TBlock2.TAlt2","rule":"TRule_do_stmt.TBlock2.TAlt2.Rule_inline_action1","sum":13863484},{"parent":"TRule_double_question","rule":"TRule_double_question.Token1","sum":108321380},{"parent":"TRule_double_question","rule":"TRule_double_question.Token2","sum":108321380},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Block2","sum":2566518},{"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":2566518},{"parent":"TRule_drop_table_stmt","rule":"TRule_drop_table_stmt.Token1","sum":2566518},{"parent":"TRule_drop_table_stmt.TBlock2","rule":"TRule_drop_table_stmt.TBlock2.Alt1","sum":2566518},{"parent":"TRule_drop_table_stmt.TBlock2.TAlt1","rule":"TRule_drop_table_stmt.TBlock2.TAlt1.Token1","sum":2566518},{"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":239470161},{"parent":"TRule_eq_subexpr","rule":"TRule_eq_subexpr.Rule_neq_subexpr1","sum":15103387492},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Rule_neq_subexpr2","sum":239470216},{"parent":"TRule_eq_subexpr.TBlock2","rule":"TRule_eq_subexpr.TBlock2.Token1","sum":239470216},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Block3","sum":77082},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token1","sum":77082},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token2","sum":77082},{"parent":"TRule_exists_expr","rule":"TRule_exists_expr.Token4","sum":77082},{"parent":"TRule_exists_expr.TBlock3","rule":"TRule_exists_expr.TBlock3.Alt1","sum":77082},{"parent":"TRule_exists_expr.TBlock3.TAlt1","rule":"TRule_exists_expr.TBlock3.TAlt1.Rule_select_stmt1","sum":77082},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr1","sum":13695230947},{"parent":"TRule_expr","rule":"TRule_expr.Alt_expr2","sum":17375948},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Block2","sum":68340563},{"parent":"TRule_expr.TAlt1","rule":"TRule_expr.TAlt1.Rule_or_subexpr1","sum":13695230947},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Rule_or_subexpr2","sum":115179334},{"parent":"TRule_expr.TAlt1.TBlock2","rule":"TRule_expr.TAlt1.TBlock2.Token1","sum":115179334},{"parent":"TRule_expr.TAlt2","rule":"TRule_expr.TAlt2.Rule_type_name_composite1","sum":17375948},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block2","sum":7021313},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Block3","sum":6633289},{"parent":"TRule_expr_dict_list","rule":"TRule_expr_dict_list.Rule_expr1","sum":8218509},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Rule_expr2","sum":7021313},{"parent":"TRule_expr_dict_list.TBlock2","rule":"TRule_expr_dict_list.TBlock2.Token1","sum":7021313},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Block3","sum":35212745},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Rule_expr2","sum":42151326},{"parent":"TRule_expr_dict_list.TBlock3","rule":"TRule_expr_dict_list.TBlock3.Token1","sum":42151326},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Rule_expr2","sum":35212745},{"parent":"TRule_expr_dict_list.TBlock3.TBlock3","rule":"TRule_expr_dict_list.TBlock3.TBlock3.Token1","sum":35212745},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Block2","sum":41893722},{"parent":"TRule_expr_list","rule":"TRule_expr_list.Rule_expr1","sum":67465016},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Rule_expr2","sum":206368221},{"parent":"TRule_expr_list.TBlock2","rule":"TRule_expr_list.TBlock2.Token1","sum":206368221},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Block4","sum":12532295},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr1","sum":14467055},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Rule_expr3","sum":14467055},{"parent":"TRule_expr_struct_list","rule":"TRule_expr_struct_list.Token2","sum":14467055},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr2","sum":31267575},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Rule_expr4","sum":31267575},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token1","sum":31267575},{"parent":"TRule_expr_struct_list.TBlock4","rule":"TRule_expr_struct_list.TBlock4.Token3","sum":31267575},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Block1","sum":2591132},{"parent":"TRule_ext_order_by_clause","rule":"TRule_ext_order_by_clause.Rule_order_by_clause2","sum":88637099},{"parent":"TRule_ext_order_by_clause.TBlock1","rule":"TRule_ext_order_by_clause.TBlock1.Token1","sum":2591132},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg1","sum":21351438},{"parent":"TRule_flatten_by_arg","rule":"TRule_flatten_by_arg.Alt_flatten_by_arg2","sum":4323714},{"parent":"TRule_flatten_by_arg.TAlt1","rule":"TRule_flatten_by_arg.TAlt1.Rule_named_column1","sum":21351438},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Block3","sum":52003},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Rule_named_expr_list2","sum":4323714},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token1","sum":4323714},{"parent":"TRule_flatten_by_arg.TAlt2","rule":"TRule_flatten_by_arg.TAlt2.Token4","sum":4323714},{"parent":"TRule_flatten_by_arg.TAlt2.TBlock3","rule":"TRule_flatten_by_arg.TAlt2.TBlock3.Token1","sum":52003},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Block2","sum":33608927},{"parent":"TRule_flatten_source","rule":"TRule_flatten_source.Rule_named_single_source1","sum":1052565235},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Block2","sum":33608927},{"parent":"TRule_flatten_source.TBlock2","rule":"TRule_flatten_source.TBlock2.Token1","sum":33608927},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt1","sum":25675152},{"parent":"TRule_flatten_source.TBlock2.TBlock2","rule":"TRule_flatten_source.TBlock2.TBlock2.Alt2","sum":7933775},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Block1","sum":19618250},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Rule_flatten_by_arg3","sum":25675152},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.Token2","sum":25675152},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt1.TBlock1.Token1","sum":19618250},{"parent":"TRule_flatten_source.TBlock2.TBlock2.TAlt2","rule":"TRule_flatten_source.TBlock2.TBlock2.TAlt2.Token1","sum":7933775},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block1","sum":7000777},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block2","sum":8},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Block8","sum":64710},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_bind_parameter4","sum":7000888},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_do_stmt7","sum":7000888},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Rule_expr6","sum":7000888},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token3","sum":7000888},{"parent":"TRule_for_stmt","rule":"TRule_for_stmt.Token5","sum":7000888},{"parent":"TRule_for_stmt.TBlock1","rule":"TRule_for_stmt.TBlock1.Token1","sum":7000777},{"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":64710},{"parent":"TRule_for_stmt.TBlock8","rule":"TRule_for_stmt.TBlock8.Token1","sum":64710},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Block2","sum":1604634},{"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":137888913},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Rule_opt_set_quantifier4","sum":137888913},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token1","sum":137888913},{"parent":"TRule_group_by_clause","rule":"TRule_group_by_clause.Token3","sum":137888913},{"parent":"TRule_group_by_clause.TBlock2","rule":"TRule_group_by_clause.TBlock2.Token1","sum":1604634},{"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":300533615},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element2","sum":62439},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element3","sum":276671},{"parent":"TRule_grouping_element","rule":"TRule_grouping_element.Alt_grouping_element4","sum":92442},{"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":300533615},{"parent":"TRule_grouping_element.TAlt2","rule":"TRule_grouping_element.TAlt2.Rule_rollup_list1","sum":62439},{"parent":"TRule_grouping_element.TAlt3","rule":"TRule_grouping_element.TAlt3.Rule_cube_list1","sum":276671},{"parent":"TRule_grouping_element.TAlt4","rule":"TRule_grouping_element.TAlt4.Rule_grouping_sets_specification1","sum":92442},{"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":62735458},{"parent":"TRule_grouping_element_list","rule":"TRule_grouping_element_list.Rule_grouping_element1","sum":137981355},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Rule_grouping_element2","sum":162983835},{"parent":"TRule_grouping_element_list.TBlock2","rule":"TRule_grouping_element_list.TBlock2.Token1","sum":162983835},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Rule_grouping_element_list4","sum":92442},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token1","sum":92442},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token2","sum":92442},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token3","sum":92442},{"parent":"TRule_grouping_sets_specification","rule":"TRule_grouping_sets_specification.Token5","sum":92442},{"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":12118792042},{"parent":"TRule_id","rule":"TRule_id.Alt_id2","sum":531580247},{"parent":"TRule_id.TAlt1","rule":"TRule_id.TAlt1.Rule_identifier1","sum":12118792042},{"parent":"TRule_id.TAlt2","rule":"TRule_id.TAlt2.Rule_keyword1","sum":531580247},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat1","sum":2983926},{"parent":"TRule_id_as_compat","rule":"TRule_id_as_compat.Alt_id_as_compat2","sum":2610},{"parent":"TRule_id_as_compat.TAlt1","rule":"TRule_id_as_compat.TAlt1.Rule_identifier1","sum":2983926},{"parent":"TRule_id_as_compat.TAlt2","rule":"TRule_id_as_compat.TAlt2.Rule_keyword_as_compat1","sum":2610},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr1","sum":6918553572},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr2","sum":319560587},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr3","sum":430787},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr5","sum":35187248},{"parent":"TRule_id_expr","rule":"TRule_id_expr.Alt_id_expr6","sum":181489},{"parent":"TRule_id_expr.TAlt1","rule":"TRule_id_expr.TAlt1.Rule_identifier1","sum":6918553572},{"parent":"TRule_id_expr.TAlt2","rule":"TRule_id_expr.TAlt2.Rule_keyword_compat1","sum":319560587},{"parent":"TRule_id_expr.TAlt3","rule":"TRule_id_expr.TAlt3.Rule_keyword_alter_uncompat1","sum":430787},{"parent":"TRule_id_expr.TAlt5","rule":"TRule_id_expr.TAlt5.Rule_keyword_window_uncompat1","sum":35187248},{"parent":"TRule_id_expr.TAlt6","rule":"TRule_id_expr.TAlt6.Rule_keyword_hint_uncompat1","sum":181489},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in1","sum":5634058},{"parent":"TRule_id_expr_in","rule":"TRule_id_expr_in.Alt_id_expr_in2","sum":74062},{"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":5634058},{"parent":"TRule_id_expr_in.TAlt2","rule":"TRule_id_expr_in.TAlt2.Rule_keyword_compat1","sum":74062},{"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":154289157},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint2","sum":22872},{"parent":"TRule_id_hint","rule":"TRule_id_hint.Alt_id_hint3","sum":22872},{"parent":"TRule_id_hint.TAlt1","rule":"TRule_id_hint.TAlt1.Rule_identifier1","sum":154289157},{"parent":"TRule_id_hint.TAlt2","rule":"TRule_id_hint.TAlt2.Rule_keyword_compat1","sum":22872},{"parent":"TRule_id_hint.TAlt3","rule":"TRule_id_hint.TAlt3.Rule_keyword_expr_uncompat1","sum":22872},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Block1","sum":4760096},{"parent":"TRule_id_or_at","rule":"TRule_id_or_at.Rule_an_id_or_type2","sum":133734499},{"parent":"TRule_id_or_at.TBlock1","rule":"TRule_id_or_at.TBlock1.Token1","sum":4760096},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type1","sum":10542990928},{"parent":"TRule_id_or_type","rule":"TRule_id_or_type.Alt_id_or_type2","sum":11662845},{"parent":"TRule_id_or_type.TAlt1","rule":"TRule_id_or_type.TAlt1.Rule_id1","sum":10542990928},{"parent":"TRule_id_or_type.TAlt2","rule":"TRule_id_or_type.TAlt2.Rule_type_id1","sum":11662845},{"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":330135915},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table2","sum":646698},{"parent":"TRule_id_table","rule":"TRule_id_table.Alt_id_table3","sum":370},{"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":1829},{"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":330135915},{"parent":"TRule_id_table.TAlt2","rule":"TRule_id_table.TAlt2.Rule_keyword_compat1","sum":646698},{"parent":"TRule_id_table.TAlt3","rule":"TRule_id_table.TAlt3.Rule_keyword_expr_uncompat1","sum":370},{"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":1829},{"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":330797324},{"parent":"TRule_id_table_or_type","rule":"TRule_id_table_or_type.Alt_id_table_or_type2","sum":4271},{"parent":"TRule_id_table_or_type.TAlt1","rule":"TRule_id_table_or_type.TAlt1.Rule_an_id_table1","sum":330797324},{"parent":"TRule_id_table_or_type.TAlt2","rule":"TRule_id_table_or_type.TAlt2.Rule_type_id1","sum":4271},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window1","sum":46369040},{"parent":"TRule_id_window","rule":"TRule_id_window.Alt_id_window2","sum":15650},{"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":7842},{"parent":"TRule_id_window.TAlt1","rule":"TRule_id_window.TAlt1.Rule_identifier1","sum":46369040},{"parent":"TRule_id_window.TAlt2","rule":"TRule_id_window.TAlt2.Rule_keyword_compat1","sum":15650},{"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":7842},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without1","sum":23000667},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without2","sum":276200},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without6","sum":1157},{"parent":"TRule_id_without","rule":"TRule_id_without.Alt_id_without7","sum":522},{"parent":"TRule_id_without.TAlt1","rule":"TRule_id_without.TAlt1.Rule_identifier1","sum":23000667},{"parent":"TRule_id_without.TAlt2","rule":"TRule_id_without.TAlt2.Rule_keyword_compat1","sum":276200},{"parent":"TRule_id_without.TAlt6","rule":"TRule_id_without.TAlt6.Rule_keyword_window_uncompat1","sum":1157},{"parent":"TRule_id_without.TAlt7","rule":"TRule_id_without.TAlt7.Rule_keyword_hint_uncompat1","sum":522},{"parent":"TRule_identifier","rule":"TRule_identifier.Token1","sum":20277145443},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block1","sum":8558735},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Block5","sum":2972234},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_do_stmt4","sum":8558779},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Rule_expr3","sum":8558779},{"parent":"TRule_if_stmt","rule":"TRule_if_stmt.Token2","sum":8558779},{"parent":"TRule_if_stmt.TBlock1","rule":"TRule_if_stmt.TBlock1.Token1","sum":8558735},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Rule_do_stmt2","sum":2972234},{"parent":"TRule_if_stmt.TBlock5","rule":"TRule_if_stmt.TBlock5.Token1","sum":2972234},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_module_path2","sum":16573208},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Rule_named_bind_parameter_list4","sum":16573208},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token1","sum":16573208},{"parent":"TRule_import_stmt","rule":"TRule_import_stmt.Token3","sum":16573208},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr1","sum":2239},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr10","sum":5114871},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr11","sum":454821},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr2","sum":36393837},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr3","sum":65693148},{"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":2965596},{"parent":"TRule_in_atom_expr","rule":"TRule_in_atom_expr.Alt_in_atom_expr7","sum":9738777},{"parent":"TRule_in_atom_expr.TAlt1","rule":"TRule_in_atom_expr.TAlt1.Rule_literal_value1","sum":2239},{"parent":"TRule_in_atom_expr.TAlt10","rule":"TRule_in_atom_expr.TAlt10.Rule_list_literal1","sum":5114871},{"parent":"TRule_in_atom_expr.TAlt11","rule":"TRule_in_atom_expr.TAlt11.Rule_dict_literal1","sum":454821},{"parent":"TRule_in_atom_expr.TAlt2","rule":"TRule_in_atom_expr.TAlt2.Rule_bind_parameter1","sum":36393837},{"parent":"TRule_in_atom_expr.TAlt3","rule":"TRule_in_atom_expr.TAlt3.Rule_lambda1","sum":65693148},{"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":2965596},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Rule_an_id_or_type1","sum":2965596},{"parent":"TRule_in_atom_expr.TAlt6","rule":"TRule_in_atom_expr.TAlt6.Token2","sum":2965596},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3","rule":"TRule_in_atom_expr.TAlt6.TBlock3.Alt1","sum":2965596},{"parent":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1","rule":"TRule_in_atom_expr.TAlt6.TBlock3.TAlt1.Rule_id_or_type1","sum":2965596},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Rule_select_stmt2","sum":9738777},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token1","sum":9738777},{"parent":"TRule_in_atom_expr.TAlt7","rule":"TRule_in_atom_expr.TAlt7.Token3","sum":9738777},{"parent":"TRule_in_expr","rule":"TRule_in_expr.Rule_in_unary_subexpr1","sum":126116119},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Block1","sum":126116067},{"parent":"TRule_in_unary_casual_subexpr","rule":"TRule_in_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":126116067},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt1","sum":5708386},{"parent":"TRule_in_unary_casual_subexpr.TBlock1","rule":"TRule_in_unary_casual_subexpr.TBlock1.Alt2","sum":120407681},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr_in1","sum":5708386},{"parent":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_in_unary_casual_subexpr.TBlock1.TAlt2.Rule_in_atom_expr1","sum":120407681},{"parent":"TRule_in_unary_subexpr","rule":"TRule_in_unary_subexpr.Alt_in_unary_subexpr1","sum":126116067},{"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":126116067},{"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":13863484},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token1","sum":13863484},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token3","sum":13863484},{"parent":"TRule_inline_action","rule":"TRule_inline_action.Token4","sum":13863484},{"parent":"TRule_integer","rule":"TRule_integer.Token1","sum":2807280781},{"parent":"TRule_integer_or_bind","rule":"TRule_integer_or_bind.Alt_integer_or_bind1","sum":55719701},{"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":55719701},{"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":25326},{"parent":"TRule_into_simple_table_ref","rule":"TRule_into_simple_table_ref.Rule_simple_table_ref1","sum":208912996},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Rule_pure_column_list3","sum":25326},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token1","sum":25326},{"parent":"TRule_into_simple_table_ref.TBlock2","rule":"TRule_into_simple_table_ref.TBlock2.Token2","sum":25326},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Block1","sum":208912996},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_simple_table_ref3","sum":208912996},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Rule_into_values_source4","sum":208912996},{"parent":"TRule_into_table_stmt","rule":"TRule_into_table_stmt.Token2","sum":208912996},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt1","sum":208802107},{"parent":"TRule_into_table_stmt.TBlock1","rule":"TRule_into_table_stmt.TBlock1.Alt5","sum":110888},{"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":208802107},{"parent":"TRule_into_table_stmt.TBlock1.TAlt5","rule":"TRule_into_table_stmt.TBlock1.TAlt5.Token1","sum":110888},{"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":208912996},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Block1","sum":4505304},{"parent":"TRule_into_values_source.TAlt1","rule":"TRule_into_values_source.TAlt1.Rule_values_source2","sum":208912996},{"parent":"TRule_into_values_source.TAlt1.TBlock1","rule":"TRule_into_values_source.TAlt1.TBlock1.Rule_pure_column_list1","sum":4505304},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Block2","sum":2763524266},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Rule_invoke_expr_tail4","sum":2877697076},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token1","sum":2877697076},{"parent":"TRule_invoke_expr","rule":"TRule_invoke_expr.Token3","sum":2877697076},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt1","sum":2704512878},{"parent":"TRule_invoke_expr.TBlock2","rule":"TRule_invoke_expr.TBlock2.Alt2","sum":59011388},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Block3","sum":9644223},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_named_expr_list2","sum":2704512878},{"parent":"TRule_invoke_expr.TBlock2.TAlt1","rule":"TRule_invoke_expr.TBlock2.TAlt1.Rule_opt_set_quantifier1","sum":2704512878},{"parent":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3","rule":"TRule_invoke_expr.TBlock2.TAlt1.TBlock3.Token1","sum":9644223},{"parent":"TRule_invoke_expr.TBlock2.TAlt2","rule":"TRule_invoke_expr.TBlock2.TAlt2.Token1","sum":59011388},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block1","sum":7198049},{"parent":"TRule_invoke_expr_tail","rule":"TRule_invoke_expr_tail.Block2","sum":45306351},{"parent":"TRule_invoke_expr_tail.TBlock1","rule":"TRule_invoke_expr_tail.TBlock1.Alt1","sum":7198049},{"parent":"TRule_invoke_expr_tail.TBlock1.TAlt1","rule":"TRule_invoke_expr_tail.TBlock1.TAlt1.Rule_null_treatment1","sum":7198049},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Rule_window_name_or_specification2","sum":45306351},{"parent":"TRule_invoke_expr_tail.TBlock2","rule":"TRule_invoke_expr_tail.TBlock2.Token1","sum":45306351},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint1","sum":173071411},{"parent":"TRule_join_constraint","rule":"TRule_join_constraint.Alt_join_constraint2","sum":32459519},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Rule_expr2","sum":173071411},{"parent":"TRule_join_constraint.TAlt1","rule":"TRule_join_constraint.TAlt1.Token1","sum":173071411},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Rule_pure_column_or_named_list2","sum":32459519},{"parent":"TRule_join_constraint.TAlt2","rule":"TRule_join_constraint.TAlt2.Token1","sum":32459519},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op1","sum":28045},{"parent":"TRule_join_op","rule":"TRule_join_op.Alt_join_op2","sum":208587089},{"parent":"TRule_join_op.TAlt1","rule":"TRule_join_op.TAlt1.Token1","sum":28045},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Block2","sum":208587089},{"parent":"TRule_join_op.TAlt2","rule":"TRule_join_op.TAlt2.Token3","sum":208587089},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt1","sum":174822377},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt2","sum":30708553},{"parent":"TRule_join_op.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.Alt3","sum":3056159},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block1","sum":126746215},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.Block2","sum":294988},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt1","sum":118839517},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt2","sum":1698319},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt3","sum":285634},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.Alt4","sum":5922745},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Block2","sum":19678134},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.Token1","sum":118839517},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt1.TBlock2.Token1","sum":19678134},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Block2","sum":519406},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.Token1","sum":1698319},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt2.TBlock2.Token1","sum":519406},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt3.Token1","sum":285634},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock1.TAlt4.Token1","sum":5922745},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt1.TBlock2.Token1","sum":294988},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt2","rule":"TRule_join_op.TAlt2.TBlock2.TAlt2.Token1","sum":30708553},{"parent":"TRule_join_op.TAlt2.TBlock2.TAlt3","rule":"TRule_join_op.TAlt2.TBlock2.TAlt3.Token1","sum":3056159},{"parent":"TRule_join_source","rule":"TRule_join_source.Block1","sum":614714},{"parent":"TRule_join_source","rule":"TRule_join_source.Block3","sum":145402073},{"parent":"TRule_join_source","rule":"TRule_join_source.Rule_flatten_source2","sum":843950101},{"parent":"TRule_join_source.TBlock1","rule":"TRule_join_source.TBlock1.Token1","sum":614714},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block2","sum":14033269},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Block4","sum":205530930},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_flatten_source3","sum":208615134},{"parent":"TRule_join_source.TBlock3","rule":"TRule_join_source.TBlock3.Rule_join_op1","sum":208615134},{"parent":"TRule_join_source.TBlock3.TBlock2","rule":"TRule_join_source.TBlock3.TBlock2.Token1","sum":14033269},{"parent":"TRule_join_source.TBlock3.TBlock4","rule":"TRule_join_source.TBlock3.TBlock4.Rule_join_constraint1","sum":205530930},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr1","sum":5842441},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr2","sum":188220},{"parent":"TRule_json_api_expr","rule":"TRule_json_api_expr.Alt_json_api_expr3","sum":317445},{"parent":"TRule_json_api_expr.TAlt1","rule":"TRule_json_api_expr.TAlt1.Rule_json_value1","sum":5842441},{"parent":"TRule_json_api_expr.TAlt2","rule":"TRule_json_api_expr.TAlt2.Rule_json_exists1","sum":188220},{"parent":"TRule_json_api_expr.TAlt3","rule":"TRule_json_api_expr.TAlt3.Rule_json_query1","sum":317445},{"parent":"TRule_json_case_handler","rule":"TRule_json_case_handler.Alt_json_case_handler1","sum":6928},{"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":200803},{"parent":"TRule_json_case_handler.TAlt1","rule":"TRule_json_case_handler.TAlt1.Token1","sum":6928},{"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":200803},{"parent":"TRule_json_case_handler.TAlt3","rule":"TRule_json_case_handler.TAlt3.Token1","sum":200803},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Block4","sum":20600},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_expr1","sum":6348106},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Rule_jsonpath_spec3","sum":6348106},{"parent":"TRule_json_common_args","rule":"TRule_json_common_args.Token2","sum":6348106},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Rule_json_variables2","sum":20600},{"parent":"TRule_json_common_args.TBlock4","rule":"TRule_json_common_args.TBlock4.Token1","sum":20600},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Block4","sum":90},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Rule_json_common_args3","sum":188220},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token1","sum":188220},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token2","sum":188220},{"parent":"TRule_json_exists","rule":"TRule_json_exists.Token5","sum":188220},{"parent":"TRule_json_exists.TBlock4","rule":"TRule_json_exists.TBlock4.Rule_json_exists_handler1","sum":90},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token1","sum":90},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token2","sum":90},{"parent":"TRule_json_exists_handler","rule":"TRule_json_exists_handler.Token3","sum":90},{"parent":"TRule_json_query","rule":"TRule_json_query.Block4","sum":190887},{"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":317445},{"parent":"TRule_json_query","rule":"TRule_json_query.Token1","sum":317445},{"parent":"TRule_json_query","rule":"TRule_json_query.Token2","sum":317445},{"parent":"TRule_json_query","rule":"TRule_json_query.Token7","sum":317445},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Rule_json_query_wrapper1","sum":190887},{"parent":"TRule_json_query.TBlock4","rule":"TRule_json_query.TBlock4.Token2","sum":190887},{"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":190842},{"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":166555},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Block3","sum":32119},{"parent":"TRule_json_query_wrapper.TAlt2","rule":"TRule_json_query_wrapper.TAlt2.Token1","sum":190842},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock2","rule":"TRule_json_query_wrapper.TAlt2.TBlock2.Token1","sum":166555},{"parent":"TRule_json_query_wrapper.TAlt2.TBlock3","rule":"TRule_json_query_wrapper.TAlt2.TBlock3.Token1","sum":32119},{"parent":"TRule_json_value","rule":"TRule_json_value.Block4","sum":1332511},{"parent":"TRule_json_value","rule":"TRule_json_value.Block5","sum":202578},{"parent":"TRule_json_value","rule":"TRule_json_value.Rule_json_common_args3","sum":5842441},{"parent":"TRule_json_value","rule":"TRule_json_value.Token1","sum":5842441},{"parent":"TRule_json_value","rule":"TRule_json_value.Token2","sum":5842441},{"parent":"TRule_json_value","rule":"TRule_json_value.Token6","sum":5842441},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Rule_type_name_simple2","sum":1332511},{"parent":"TRule_json_value.TBlock4","rule":"TRule_json_value.TBlock4.Token1","sum":1332511},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Rule_json_case_handler1","sum":222050},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token2","sum":222050},{"parent":"TRule_json_value.TBlock5","rule":"TRule_json_value.TBlock5.Token3","sum":222050},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_expr1","sum":20607},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Rule_json_variable_name3","sum":20607},{"parent":"TRule_json_variable","rule":"TRule_json_variable.Token2","sum":20607},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name1","sum":18347},{"parent":"TRule_json_variable_name","rule":"TRule_json_variable_name.Alt_json_variable_name2","sum":2260},{"parent":"TRule_json_variable_name.TAlt1","rule":"TRule_json_variable_name.TAlt1.Rule_id_expr1","sum":18347},{"parent":"TRule_json_variable_name.TAlt2","rule":"TRule_json_variable_name.TAlt2.Token1","sum":2260},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Block2","sum":7},{"parent":"TRule_json_variables","rule":"TRule_json_variables.Rule_json_variable1","sum":20600},{"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":6348106},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Rule_expr2","sum":173319845},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token1","sum":173319845},{"parent":"TRule_key_expr","rule":"TRule_key_expr.Token3","sum":173319845},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword1","sum":481209679},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword2","sum":33508736},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword3","sum":505061},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword4","sum":9146576},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword5","sum":777362},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword6","sum":23580},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword7","sum":3895250},{"parent":"TRule_keyword","rule":"TRule_keyword.Alt_keyword8","sum":2514003},{"parent":"TRule_keyword.TAlt1","rule":"TRule_keyword.TAlt1.Rule_keyword_compat1","sum":481209679},{"parent":"TRule_keyword.TAlt2","rule":"TRule_keyword.TAlt2.Rule_keyword_expr_uncompat1","sum":33508736},{"parent":"TRule_keyword.TAlt3","rule":"TRule_keyword.TAlt3.Rule_keyword_table_uncompat1","sum":505061},{"parent":"TRule_keyword.TAlt4","rule":"TRule_keyword.TAlt4.Rule_keyword_select_uncompat1","sum":9146576},{"parent":"TRule_keyword.TAlt5","rule":"TRule_keyword.TAlt5.Rule_keyword_alter_uncompat1","sum":777362},{"parent":"TRule_keyword.TAlt6","rule":"TRule_keyword.TAlt6.Rule_keyword_in_uncompat1","sum":23580},{"parent":"TRule_keyword.TAlt7","rule":"TRule_keyword.TAlt7.Rule_keyword_window_uncompat1","sum":3895250},{"parent":"TRule_keyword.TAlt8","rule":"TRule_keyword.TAlt8.Rule_keyword_hint_uncompat1","sum":2514003},{"parent":"TRule_keyword_alter_uncompat","rule":"TRule_keyword_alter_uncompat.Token1","sum":1208149},{"parent":"TRule_keyword_as_compat","rule":"TRule_keyword_as_compat.Token1","sum":2610},{"parent":"TRule_keyword_compat","rule":"TRule_keyword_compat.Token1","sum":801805760},{"parent":"TRule_keyword_expr_uncompat","rule":"TRule_keyword_expr_uncompat.Token1","sum":33779538},{"parent":"TRule_keyword_hint_uncompat","rule":"TRule_keyword_hint_uncompat.Token1","sum":2696077},{"parent":"TRule_keyword_in_uncompat","rule":"TRule_keyword_in_uncompat.Token1","sum":23584},{"parent":"TRule_keyword_select_uncompat","rule":"TRule_keyword_select_uncompat.Token1","sum":9166915},{"parent":"TRule_keyword_table_uncompat","rule":"TRule_keyword_table_uncompat.Token1","sum":505061},{"parent":"TRule_keyword_window_uncompat","rule":"TRule_keyword_window_uncompat.Token1","sum":39085697},{"parent":"TRule_lambda","rule":"TRule_lambda.Block2","sum":208848249},{"parent":"TRule_lambda","rule":"TRule_lambda.Rule_smart_parenthesis1","sum":512340006},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Block2","sum":208848249},{"parent":"TRule_lambda.TBlock2","rule":"TRule_lambda.TBlock2.Token1","sum":208848249},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt1","sum":42668471},{"parent":"TRule_lambda.TBlock2.TBlock2","rule":"TRule_lambda.TBlock2.TBlock2.Alt2","sum":166179778},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Rule_expr2","sum":42668471},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token1","sum":42668471},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt1","rule":"TRule_lambda.TBlock2.TBlock2.TAlt1.Token3","sum":42668471},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Rule_lambda_body2","sum":166179778},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token1","sum":166179778},{"parent":"TRule_lambda.TBlock2.TBlock2.TAlt2","rule":"TRule_lambda.TBlock2.TBlock2.TAlt2.Token3","sum":166179778},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block1","sum":160},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block2","sum":34755805},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Block5","sum":87613937},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Rule_expr4","sum":166179778},{"parent":"TRule_lambda_body","rule":"TRule_lambda_body.Token3","sum":166179778},{"parent":"TRule_lambda_body.TBlock1","rule":"TRule_lambda_body.TBlock1.Token1","sum":160},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Block2","sum":63704082},{"parent":"TRule_lambda_body.TBlock2","rule":"TRule_lambda_body.TBlock2.Rule_lambda_stmt1","sum":63704082},{"parent":"TRule_lambda_body.TBlock2.TBlock2","rule":"TRule_lambda_body.TBlock2.TBlock2.Token1","sum":63705246},{"parent":"TRule_lambda_body.TBlock5","rule":"TRule_lambda_body.TBlock5.Token1","sum":87622552},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt1","sum":63701461},{"parent":"TRule_lambda_stmt","rule":"TRule_lambda_stmt.Alt_lambda_stmt2","sum":2621},{"parent":"TRule_lambda_stmt.TAlt1","rule":"TRule_lambda_stmt.TAlt1.Rule_named_nodes_stmt1","sum":63701461},{"parent":"TRule_lambda_stmt.TAlt2","rule":"TRule_lambda_stmt.TAlt2.Rule_import_stmt1","sum":2621},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block2","sum":35332851},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Block3","sum":2294453},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token1","sum":41076352},{"parent":"TRule_list_literal","rule":"TRule_list_literal.Token4","sum":41076352},{"parent":"TRule_list_literal.TBlock2","rule":"TRule_list_literal.TBlock2.Rule_expr_list1","sum":35332851},{"parent":"TRule_list_literal.TBlock3","rule":"TRule_list_literal.TBlock3.Token1","sum":2294453},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value1","sum":2751561079},{"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":109092927},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value3","sum":2122067898},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value5","sum":79437041},{"parent":"TRule_literal_value","rule":"TRule_literal_value.Alt_literal_value9","sum":104231904},{"parent":"TRule_literal_value.TAlt1","rule":"TRule_literal_value.TAlt1.Rule_integer1","sum":2751561079},{"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":109092927},{"parent":"TRule_literal_value.TAlt3","rule":"TRule_literal_value.TAlt3.Token1","sum":2122067898},{"parent":"TRule_literal_value.TAlt5","rule":"TRule_literal_value.TAlt5.Token1","sum":79437041},{"parent":"TRule_literal_value.TAlt9","rule":"TRule_literal_value.TAlt9.Rule_bool_value1","sum":104231904},{"parent":"TRule_match_op","rule":"TRule_match_op.Token1","sum":52200219},{"parent":"TRule_module_path","rule":"TRule_module_path.Block3","sum":361562},{"parent":"TRule_module_path","rule":"TRule_module_path.Rule_an_id2","sum":16573208},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Rule_an_id2","sum":1077738},{"parent":"TRule_module_path.TBlock3","rule":"TRule_module_path.TBlock3.Token1","sum":1077738},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Block2","sum":115170120},{"parent":"TRule_mul_subexpr","rule":"TRule_mul_subexpr.Rule_con_subexpr1","sum":15786370404},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Rule_con_subexpr2","sum":229345657},{"parent":"TRule_mul_subexpr.TBlock2","rule":"TRule_mul_subexpr.TBlock2.Token1","sum":229345657},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Block2","sum":135389},{"parent":"TRule_named_bind_parameter","rule":"TRule_named_bind_parameter.Rule_bind_parameter1","sum":37888685},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Rule_bind_parameter2","sum":135389},{"parent":"TRule_named_bind_parameter.TBlock2","rule":"TRule_named_bind_parameter.TBlock2.Token1","sum":135389},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Block2","sum":7054906},{"parent":"TRule_named_bind_parameter_list","rule":"TRule_named_bind_parameter_list.Rule_named_bind_parameter1","sum":16573208},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Rule_named_bind_parameter2","sum":21315477},{"parent":"TRule_named_bind_parameter_list.TBlock2","rule":"TRule_named_bind_parameter_list.TBlock2.Token1","sum":21315477},{"parent":"TRule_named_column","rule":"TRule_named_column.Block2","sum":7171352},{"parent":"TRule_named_column","rule":"TRule_named_column.Rule_column_name1","sum":21351438},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Rule_an_id2","sum":7171352},{"parent":"TRule_named_column.TBlock2","rule":"TRule_named_column.TBlock2.Token1","sum":7171352},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Block2","sum":156218746},{"parent":"TRule_named_expr","rule":"TRule_named_expr.Rule_expr1","sum":7199395472},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Rule_an_id_or_type2","sum":156218746},{"parent":"TRule_named_expr.TBlock2","rule":"TRule_named_expr.TBlock2.Token1","sum":156218746},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Block2","sum":1182917674},{"parent":"TRule_named_expr_list","rule":"TRule_named_expr_list.Rule_named_expr1","sum":3239140964},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Rule_named_expr2","sum":3466442386},{"parent":"TRule_named_expr_list.TBlock2","rule":"TRule_named_expr_list.TBlock2.Token1","sum":3466442386},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Block3","sum":1007079493},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Rule_bind_parameter_list1","sum":1007079493},{"parent":"TRule_named_nodes_stmt","rule":"TRule_named_nodes_stmt.Token2","sum":1007079493},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt1","sum":677142252},{"parent":"TRule_named_nodes_stmt.TBlock3","rule":"TRule_named_nodes_stmt.TBlock3.Alt2","sum":329937241},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt1","rule":"TRule_named_nodes_stmt.TBlock3.TAlt1.Rule_expr1","sum":677142252},{"parent":"TRule_named_nodes_stmt.TBlock3.TAlt2","rule":"TRule_named_nodes_stmt.TBlock3.TAlt2.Rule_subselect_stmt1","sum":329937241},{"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":442565115},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Block4","sum":403893},{"parent":"TRule_named_single_source","rule":"TRule_named_single_source.Rule_single_source1","sum":1058157852},{"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":442565115},{"parent":"TRule_named_single_source.TBlock3","rule":"TRule_named_single_source.TBlock3.Block2","sum":159781},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt1","sum":440444825},{"parent":"TRule_named_single_source.TBlock3.TBlock1","rule":"TRule_named_single_source.TBlock3.TBlock1.Alt2","sum":2120290},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Rule_an_id2","sum":440444825},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt1","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt1.Token1","sum":440444825},{"parent":"TRule_named_single_source.TBlock3.TBlock1.TAlt2","rule":"TRule_named_single_source.TBlock3.TBlock1.TAlt2.Rule_an_id_as_compat1","sum":2120290},{"parent":"TRule_named_single_source.TBlock3.TBlock2","rule":"TRule_named_single_source.TBlock3.TBlock2.Rule_pure_column_list1","sum":159781},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt1","sum":75224},{"parent":"TRule_named_single_source.TBlock4","rule":"TRule_named_single_source.TBlock4.Alt2","sum":328669},{"parent":"TRule_named_single_source.TBlock4.TAlt1","rule":"TRule_named_single_source.TBlock4.TAlt1.Rule_sample_clause1","sum":75224},{"parent":"TRule_named_single_source.TBlock4.TAlt2","rule":"TRule_named_single_source.TBlock4.TAlt2.Rule_tablesample_clause1","sum":328669},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block2","sum":9143475},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Block3","sum":112095111},{"parent":"TRule_neq_subexpr","rule":"TRule_neq_subexpr.Rule_bit_subexpr1","sum":15451179088},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Block1","sum":9212674},{"parent":"TRule_neq_subexpr.TBlock2","rule":"TRule_neq_subexpr.TBlock2.Rule_bit_subexpr2","sum":9212674},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt1","sum":8101003},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt2","sum":53387},{"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":757653},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt6","sum":134987},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.Alt7","sum":165152},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt1.Token1","sum":8101003},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt2.Rule_shift_right1","sum":53387},{"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":757653},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt6.Token1","sum":134987},{"parent":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7","rule":"TRule_neq_subexpr.TBlock2.TBlock1.TAlt7.Token1","sum":165152},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt1","sum":108321380},{"parent":"TRule_neq_subexpr.TBlock3","rule":"TRule_neq_subexpr.TBlock3.Alt2","sum":3773731},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_double_question1","sum":108321380},{"parent":"TRule_neq_subexpr.TBlock3.TAlt1","rule":"TRule_neq_subexpr.TBlock3.TAlt1.Rule_neq_subexpr2","sum":108321380},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2","rule":"TRule_neq_subexpr.TBlock3.TAlt2.Block1","sum":3773731},{"parent":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1","rule":"TRule_neq_subexpr.TBlock3.TAlt2.TBlock1.Token1","sum":3785579},{"parent":"TRule_new_window_name","rule":"TRule_new_window_name.Rule_window_name1","sum":14160253},{"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":7198004},{"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":7198004},{"parent":"TRule_null_treatment.TAlt2","rule":"TRule_null_treatment.TAlt2.Token2","sum":7198004},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Block1","sum":5288874},{"parent":"TRule_object_ref","rule":"TRule_object_ref.Rule_id_or_at2","sum":133734499},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Rule_cluster_expr1","sum":5288874},{"parent":"TRule_object_ref.TBlock1","rule":"TRule_object_ref.TBlock1.Token2","sum":5288874},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Block2","sum":27136},{"parent":"TRule_opt_bind_parameter","rule":"TRule_opt_bind_parameter.Rule_bind_parameter1","sum":21450156},{"parent":"TRule_opt_bind_parameter.TBlock2","rule":"TRule_opt_bind_parameter.TBlock2.Token1","sum":27136},{"parent":"TRule_opt_id_prefix","rule":"TRule_opt_id_prefix.Block1","sum":82957126},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Rule_an_id1","sum":82957126},{"parent":"TRule_opt_id_prefix.TBlock1","rule":"TRule_opt_id_prefix.TBlock1.Token2","sum":82957126},{"parent":"TRule_opt_id_prefix_or_type","rule":"TRule_opt_id_prefix_or_type.Block1","sum":777053633},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Rule_an_id_or_type1","sum":777053633},{"parent":"TRule_opt_id_prefix_or_type.TBlock1","rule":"TRule_opt_id_prefix_or_type.TBlock1.Token2","sum":777053633},{"parent":"TRule_opt_set_quantifier","rule":"TRule_opt_set_quantifier.Block1","sum":70348625},{"parent":"TRule_opt_set_quantifier.TBlock1","rule":"TRule_opt_set_quantifier.TBlock1.Token1","sum":70348625},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Block2","sum":277164299},{"parent":"TRule_or_subexpr","rule":"TRule_or_subexpr.Rule_and_subexpr1","sum":13810410281},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Rule_and_subexpr2","sum":471120559},{"parent":"TRule_or_subexpr.TBlock2","rule":"TRule_or_subexpr.TBlock2.Token1","sum":471120559},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Rule_sort_specification_list3","sum":107666782},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token1","sum":107666782},{"parent":"TRule_order_by_clause","rule":"TRule_order_by_clause.Token2","sum":107666782},{"parent":"TRule_ordinary_grouping_set","rule":"TRule_ordinary_grouping_set.Rule_named_expr1","sum":301305027},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Block2","sum":199418},{"parent":"TRule_ordinary_grouping_set_list","rule":"TRule_ordinary_grouping_set_list.Rule_ordinary_grouping_set1","sum":339110},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Rule_ordinary_grouping_set2","sum":432302},{"parent":"TRule_ordinary_grouping_set_list.TBlock2","rule":"TRule_ordinary_grouping_set_list.TBlock2.Token1","sum":432302},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Block4","sum":791546480},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_an_id3","sum":896077672},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Rule_opt_id_prefix_or_type2","sum":896077672},{"parent":"TRule_pragma_stmt","rule":"TRule_pragma_stmt.Token1","sum":896077672},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt1","sum":743570382},{"parent":"TRule_pragma_stmt.TBlock4","rule":"TRule_pragma_stmt.TBlock4.Alt2","sum":47976098},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Rule_pragma_value2","sum":743570382},{"parent":"TRule_pragma_stmt.TBlock4.TAlt1","rule":"TRule_pragma_stmt.TBlock4.TAlt1.Token1","sum":743570382},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Block3","sum":17700602},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Rule_pragma_value2","sum":47976098},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token1","sum":47976098},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2","rule":"TRule_pragma_stmt.TBlock4.TAlt2.Token4","sum":47976098},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Rule_pragma_value2","sum":18516762},{"parent":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3","rule":"TRule_pragma_stmt.TBlock4.TAlt2.TBlock3.Token1","sum":18516762},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value2","sum":256177},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value3","sum":797434933},{"parent":"TRule_pragma_value","rule":"TRule_pragma_value.Alt_pragma_value5","sum":12372132},{"parent":"TRule_pragma_value.TAlt2","rule":"TRule_pragma_value.TAlt2.Rule_id1","sum":256177},{"parent":"TRule_pragma_value.TAlt3","rule":"TRule_pragma_value.TAlt3.Token1","sum":797434933},{"parent":"TRule_pragma_value.TAlt5","rule":"TRule_pragma_value.TAlt5.Rule_bind_parameter1","sum":12372132},{"parent":"TRule_process_core","rule":"TRule_process_core.Block4","sum":1132},{"parent":"TRule_process_core","rule":"TRule_process_core.Block5","sum":1918423},{"parent":"TRule_process_core","rule":"TRule_process_core.Rule_named_single_source3","sum":4536125},{"parent":"TRule_process_core","rule":"TRule_process_core.Token1","sum":4536125},{"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":4663},{"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":1918423},{"parent":"TRule_process_core.TBlock5","rule":"TRule_process_core.TBlock5.Token1","sum":1918423},{"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":4663},{"parent":"TRule_process_core.TBlock5.TBlock5","rule":"TRule_process_core.TBlock5.TBlock5.Token1","sum":4663},{"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":3950756},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Rule_an_id2","sum":4690411},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token1","sum":4690411},{"parent":"TRule_pure_column_list","rule":"TRule_pure_column_list.Token4","sum":4690411},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Rule_an_id2","sum":35153173},{"parent":"TRule_pure_column_list.TBlock3","rule":"TRule_pure_column_list.TBlock3.Token1","sum":35153173},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named1","sum":6594704},{"parent":"TRule_pure_column_or_named","rule":"TRule_pure_column_or_named.Alt_pure_column_or_named2","sum":425145265},{"parent":"TRule_pure_column_or_named.TAlt1","rule":"TRule_pure_column_or_named.TAlt1.Rule_bind_parameter1","sum":6594704},{"parent":"TRule_pure_column_or_named.TAlt2","rule":"TRule_pure_column_or_named.TAlt2.Rule_an_id1","sum":425145265},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Block3","sum":11687130},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Rule_pure_column_or_named2","sum":32459519},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token1","sum":32459519},{"parent":"TRule_pure_column_or_named_list","rule":"TRule_pure_column_or_named_list.Token4","sum":32459519},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Rule_pure_column_or_named2","sum":21732741},{"parent":"TRule_pure_column_or_named_list.TBlock3","rule":"TRule_pure_column_or_named_list.TBlock3.Token1","sum":21732741},{"parent":"TRule_real","rule":"TRule_real.Token1","sum":109092927},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block11","sum":8912},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block13","sum":26285},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block3","sum":119295},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block4","sum":302146},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Block8","sum":313583},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_column_list6","sum":848767},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_named_single_source2","sum":848767},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Rule_using_call_expr9","sum":848767},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token1","sum":848767},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token5","sum":848767},{"parent":"TRule_reduce_core","rule":"TRule_reduce_core.Token7","sum":848767},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Rule_expr2","sum":8912},{"parent":"TRule_reduce_core.TBlock11","rule":"TRule_reduce_core.TBlock11.Token1","sum":8912},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Rule_order_by_clause2","sum":26285},{"parent":"TRule_reduce_core.TBlock13","rule":"TRule_reduce_core.TBlock13.Token1","sum":26285},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Rule_named_single_source2","sum":206592},{"parent":"TRule_reduce_core.TBlock3","rule":"TRule_reduce_core.TBlock3.Token1","sum":206592},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Rule_sort_specification_list2","sum":302146},{"parent":"TRule_reduce_core.TBlock4","rule":"TRule_reduce_core.TBlock4.Token1","sum":302146},{"parent":"TRule_reduce_core.TBlock8","rule":"TRule_reduce_core.TBlock8.Token1","sum":313583},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Rule_expr3","sum":9275},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token1","sum":9275},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token2","sum":9275},{"parent":"TRule_repeatable_clause","rule":"TRule_repeatable_clause.Token4","sum":9275},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column1","sum":250248825},{"parent":"TRule_result_column","rule":"TRule_result_column.Alt_result_column2","sum":3447285439},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Rule_opt_id_prefix1","sum":250248825},{"parent":"TRule_result_column.TAlt1","rule":"TRule_result_column.TAlt1.Token2","sum":250248825},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Block2","sum":1987445288},{"parent":"TRule_result_column.TAlt2","rule":"TRule_result_column.TAlt2.Rule_expr1","sum":3447285439},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt1","sum":1986579042},{"parent":"TRule_result_column.TAlt2.TBlock2","rule":"TRule_result_column.TAlt2.TBlock2.Alt2","sum":866246},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Rule_an_id_or_type2","sum":1986579042},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt1","rule":"TRule_result_column.TAlt2.TBlock2.TAlt1.Token1","sum":1986579042},{"parent":"TRule_result_column.TAlt2.TBlock2.TAlt2","rule":"TRule_result_column.TAlt2.TBlock2.TAlt2.Rule_an_id_as_compat1","sum":866246},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Rule_ordinary_grouping_set_list3","sum":62439},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token1","sum":62439},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token2","sum":62439},{"parent":"TRule_rollup_list","rule":"TRule_rollup_list.Token4","sum":62439},{"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":75224},{"parent":"TRule_sample_clause","rule":"TRule_sample_clause.Token1","sum":75224},{"parent":"TRule_sampling_mode","rule":"TRule_sampling_mode.Token1","sum":328669},{"parent":"TRule_search_condition","rule":"TRule_search_condition.Rule_expr1","sum":1},{"parent":"TRule_select_core","rule":"TRule_select_core.Block1","sum":10672782},{"parent":"TRule_select_core","rule":"TRule_select_core.Block10","sum":340845955},{"parent":"TRule_select_core","rule":"TRule_select_core.Block11","sum":137888913},{"parent":"TRule_select_core","rule":"TRule_select_core.Block12","sum":12107514},{"parent":"TRule_select_core","rule":"TRule_select_core.Block13","sum":13585207},{"parent":"TRule_select_core","rule":"TRule_select_core.Block14","sum":88637099},{"parent":"TRule_select_core","rule":"TRule_select_core.Block3","sum":117},{"parent":"TRule_select_core","rule":"TRule_select_core.Block6","sum":529664522},{"parent":"TRule_select_core","rule":"TRule_select_core.Block7","sum":93678926},{"parent":"TRule_select_core","rule":"TRule_select_core.Block8","sum":24883415},{"parent":"TRule_select_core","rule":"TRule_select_core.Block9","sum":833277319},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_opt_set_quantifier4","sum":904378975},{"parent":"TRule_select_core","rule":"TRule_select_core.Rule_result_column5","sum":904378975},{"parent":"TRule_select_core","rule":"TRule_select_core.Token2","sum":904378975},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Rule_join_source2","sum":10672782},{"parent":"TRule_select_core.TBlock1","rule":"TRule_select_core.TBlock1.Token1","sum":10672782},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Rule_expr2","sum":340845955},{"parent":"TRule_select_core.TBlock10","rule":"TRule_select_core.TBlock10.Token1","sum":340845955},{"parent":"TRule_select_core.TBlock11","rule":"TRule_select_core.TBlock11.Rule_group_by_clause1","sum":137888913},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Rule_expr2","sum":12107514},{"parent":"TRule_select_core.TBlock12","rule":"TRule_select_core.TBlock12.Token1","sum":12107514},{"parent":"TRule_select_core.TBlock13","rule":"TRule_select_core.TBlock13.Rule_window_clause1","sum":13585207},{"parent":"TRule_select_core.TBlock14","rule":"TRule_select_core.TBlock14.Rule_ext_order_by_clause1","sum":88637099},{"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":2793155289},{"parent":"TRule_select_core.TBlock6","rule":"TRule_select_core.TBlock6.Token1","sum":2793155289},{"parent":"TRule_select_core.TBlock7","rule":"TRule_select_core.TBlock7.Token1","sum":93678926},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Block2","sum":14},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Rule_without_column_list3","sum":24883415},{"parent":"TRule_select_core.TBlock8","rule":"TRule_select_core.TBlock8.Token1","sum":24883415},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token1","sum":14},{"parent":"TRule_select_core.TBlock8.TBlock2","rule":"TRule_select_core.TBlock8.TBlock2.Token2","sum":14},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Rule_join_source2","sum":833277319},{"parent":"TRule_select_core.TBlock9","rule":"TRule_select_core.TBlock9.Token1","sum":833277319},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block1","sum":921844},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block2","sum":909763867},{"parent":"TRule_select_kind","rule":"TRule_select_kind.Block3","sum":2885395},{"parent":"TRule_select_kind.TBlock1","rule":"TRule_select_kind.TBlock1.Token1","sum":921844},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt1","sum":4536125},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt2","sum":848767},{"parent":"TRule_select_kind.TBlock2","rule":"TRule_select_kind.TBlock2.Alt3","sum":904378975},{"parent":"TRule_select_kind.TBlock2.TAlt1","rule":"TRule_select_kind.TBlock2.TAlt1.Rule_process_core1","sum":4536125},{"parent":"TRule_select_kind.TBlock2.TAlt2","rule":"TRule_select_kind.TBlock2.TAlt2.Rule_reduce_core1","sum":848767},{"parent":"TRule_select_kind.TBlock2.TAlt3","rule":"TRule_select_kind.TBlock2.TAlt3.Rule_select_core1","sum":904378975},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Rule_pure_column_or_named3","sum":2885395},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token1","sum":2885395},{"parent":"TRule_select_kind.TBlock3","rule":"TRule_select_kind.TBlock3.Token2","sum":2885395},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis1","sum":779150787},{"parent":"TRule_select_kind_parenthesis","rule":"TRule_select_kind_parenthesis.Alt_select_kind_parenthesis2","sum":7976140},{"parent":"TRule_select_kind_parenthesis.TAlt1","rule":"TRule_select_kind_parenthesis.TAlt1.Rule_select_kind_partial1","sum":779150787},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Rule_select_kind_partial2","sum":7976140},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token1","sum":7976140},{"parent":"TRule_select_kind_parenthesis.TAlt2","rule":"TRule_select_kind_parenthesis.TAlt2.Token3","sum":7976140},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Block2","sum":30691478},{"parent":"TRule_select_kind_partial","rule":"TRule_select_kind_partial.Rule_select_kind1","sum":909763867},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Block3","sum":4603257},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Rule_expr2","sum":30691478},{"parent":"TRule_select_kind_partial.TBlock2","rule":"TRule_select_kind_partial.TBlock2.Token1","sum":30691478},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Rule_expr2","sum":4603257},{"parent":"TRule_select_kind_partial.TBlock2.TBlock3","rule":"TRule_select_kind_partial.TBlock2.TBlock3.Token1","sum":4603257},{"parent":"TRule_select_op","rule":"TRule_select_op.Alt_select_op1","sum":63894618},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Block2","sum":62983928},{"parent":"TRule_select_op.TAlt1","rule":"TRule_select_op.TAlt1.Token1","sum":63894618},{"parent":"TRule_select_op.TAlt1.TBlock2","rule":"TRule_select_op.TAlt1.TBlock2.Token1","sum":62983928},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Block2","sum":33275900},{"parent":"TRule_select_stmt","rule":"TRule_select_stmt.Rule_select_kind_parenthesis1","sum":723232309},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":56935244},{"parent":"TRule_select_stmt.TBlock2","rule":"TRule_select_stmt.TBlock2.Rule_select_op1","sum":56935244},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Block2","sum":4296981},{"parent":"TRule_select_unparenthesized_stmt","rule":"TRule_select_unparenthesized_stmt.Rule_select_kind_partial1","sum":122636940},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_kind_parenthesis2","sum":6959374},{"parent":"TRule_select_unparenthesized_stmt.TBlock2","rule":"TRule_select_unparenthesized_stmt.TBlock2.Rule_select_op1","sum":6959374},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token1","sum":53387},{"parent":"TRule_shift_right","rule":"TRule_shift_right.Token2","sum":53387},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Block2","sum":142994339},{"parent":"TRule_simple_table_ref","rule":"TRule_simple_table_ref.Rule_simple_table_ref_core1","sum":211479641},{"parent":"TRule_simple_table_ref.TBlock2","rule":"TRule_simple_table_ref.TBlock2.Rule_table_hints1","sum":142994339},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core1","sum":133734499},{"parent":"TRule_simple_table_ref_core","rule":"TRule_simple_table_ref_core.Alt_simple_table_ref_core2","sum":77745142},{"parent":"TRule_simple_table_ref_core.TAlt1","rule":"TRule_simple_table_ref_core.TAlt1.Rule_object_ref1","sum":133734499},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Block1","sum":71492},{"parent":"TRule_simple_table_ref_core.TAlt2","rule":"TRule_simple_table_ref_core.TAlt2.Rule_bind_parameter2","sum":77745142},{"parent":"TRule_simple_table_ref_core.TAlt2.TBlock1","rule":"TRule_simple_table_ref_core.TAlt2.TBlock1.Token1","sum":71492},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source1","sum":953241090},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source2","sum":104748390},{"parent":"TRule_single_source","rule":"TRule_single_source.Alt_single_source3","sum":168372},{"parent":"TRule_single_source.TAlt1","rule":"TRule_single_source.TAlt1.Rule_table_ref1","sum":953241090},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Rule_select_stmt2","sum":104748390},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token1","sum":104748390},{"parent":"TRule_single_source.TAlt2","rule":"TRule_single_source.TAlt2.Token3","sum":104748390},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Rule_values_stmt2","sum":168372},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token1","sum":168372},{"parent":"TRule_single_source.TAlt3","rule":"TRule_single_source.TAlt3.Token3","sum":168372},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block2","sum":508513096},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Block3","sum":2640116},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token1","sum":512340006},{"parent":"TRule_smart_parenthesis","rule":"TRule_smart_parenthesis.Token4","sum":512340006},{"parent":"TRule_smart_parenthesis.TBlock2","rule":"TRule_smart_parenthesis.TBlock2.Rule_named_expr_list1","sum":508513096},{"parent":"TRule_smart_parenthesis.TBlock3","rule":"TRule_smart_parenthesis.TBlock3.Token1","sum":2640116},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Block2","sum":33193476},{"parent":"TRule_sort_specification","rule":"TRule_sort_specification.Rule_expr1","sum":181604904},{"parent":"TRule_sort_specification.TBlock2","rule":"TRule_sort_specification.TBlock2.Token1","sum":33193476},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Block2","sum":39858879},{"parent":"TRule_sort_specification_list","rule":"TRule_sort_specification_list.Rule_sort_specification1","sum":107968928},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Rule_sort_specification2","sum":73635976},{"parent":"TRule_sort_specification_list.TBlock2","rule":"TRule_sort_specification_list.TBlock2.Token1","sum":73635976},{"parent":"TRule_sql_query","rule":"TRule_sql_query.Alt_sql_query1","sum":320130391},{"parent":"TRule_sql_query.TAlt1","rule":"TRule_sql_query.TAlt1.Rule_sql_stmt_list1","sum":320130391},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Block1","sum":53},{"parent":"TRule_sql_stmt","rule":"TRule_sql_stmt.Rule_sql_stmt_core2","sum":2720354628},{"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":896077672},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core12","sum":156358531},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core13","sum":16570587},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core17","sum":4706728},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core18","sum":22267674},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core19","sum":8558779},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core2","sum":193539980},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core20","sum":7000888},{"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":943378032},{"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":2566518},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core6","sum":329427984},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core7","sum":208912996},{"parent":"TRule_sql_stmt_core","rule":"TRule_sql_stmt_core.Alt_sql_stmt_core8","sum":13017921},{"parent":"TRule_sql_stmt_core.TAlt1","rule":"TRule_sql_stmt_core.TAlt1.Rule_pragma_stmt1","sum":896077672},{"parent":"TRule_sql_stmt_core.TAlt12","rule":"TRule_sql_stmt_core.TAlt12.Rule_declare_stmt1","sum":156358531},{"parent":"TRule_sql_stmt_core.TAlt13","rule":"TRule_sql_stmt_core.TAlt13.Rule_import_stmt1","sum":16570587},{"parent":"TRule_sql_stmt_core.TAlt17","rule":"TRule_sql_stmt_core.TAlt17.Rule_do_stmt1","sum":4706728},{"parent":"TRule_sql_stmt_core.TAlt18","rule":"TRule_sql_stmt_core.TAlt18.Rule_define_action_or_subquery_stmt1","sum":22267674},{"parent":"TRule_sql_stmt_core.TAlt19","rule":"TRule_sql_stmt_core.TAlt19.Rule_if_stmt1","sum":8558779},{"parent":"TRule_sql_stmt_core.TAlt2","rule":"TRule_sql_stmt_core.TAlt2.Rule_select_stmt1","sum":193539980},{"parent":"TRule_sql_stmt_core.TAlt20","rule":"TRule_sql_stmt_core.TAlt20.Rule_for_stmt1","sum":7000888},{"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":943378032},{"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":2566518},{"parent":"TRule_sql_stmt_core.TAlt6","rule":"TRule_sql_stmt_core.TAlt6.Rule_use_stmt1","sum":329427984},{"parent":"TRule_sql_stmt_core.TAlt7","rule":"TRule_sql_stmt_core.TAlt7.Rule_into_table_stmt1","sum":208912996},{"parent":"TRule_sql_stmt_core.TAlt8","rule":"TRule_sql_stmt_core.TAlt8.Rule_commit_stmt1","sum":13017921},{"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":314643305},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Block4","sum":195133009},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Rule_sql_stmt2","sum":320130391},{"parent":"TRule_sql_stmt_list","rule":"TRule_sql_stmt_list.Token5","sum":320130391},{"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":2400224237},{"parent":"TRule_sql_stmt_list.TBlock3","rule":"TRule_sql_stmt_list.TBlock3.Rule_sql_stmt2","sum":2400224237},{"parent":"TRule_sql_stmt_list.TBlock3.TBlock1","rule":"TRule_sql_stmt_list.TBlock3.TBlock1.Token1","sum":2409292915},{"parent":"TRule_sql_stmt_list.TBlock4","rule":"TRule_sql_stmt_list.TBlock4.Token1","sum":197820473},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_or_bind3","sum":114016881},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Rule_type_name_tag1","sum":114016881},{"parent":"TRule_struct_arg","rule":"TRule_struct_arg.Token2","sum":114016881},{"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":14467055},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Block3","sum":2534097},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token1","sum":14597994},{"parent":"TRule_struct_literal","rule":"TRule_struct_literal.Token4","sum":14597994},{"parent":"TRule_struct_literal.TBlock2","rule":"TRule_struct_literal.TBlock2.Rule_expr_struct_list1","sum":14467055},{"parent":"TRule_struct_literal.TBlock3","rule":"TRule_struct_literal.TBlock3.Token1","sum":2534097},{"parent":"TRule_subselect_stmt","rule":"TRule_subselect_stmt.Block1","sum":329937241},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt1","sum":207300301},{"parent":"TRule_subselect_stmt.TBlock1","rule":"TRule_subselect_stmt.TBlock1.Alt2","sum":122636940},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Rule_select_stmt2","sum":207300301},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token1","sum":207300301},{"parent":"TRule_subselect_stmt.TBlock1.TAlt1","rule":"TRule_subselect_stmt.TBlock1.TAlt1.Token3","sum":207300301},{"parent":"TRule_subselect_stmt.TBlock1.TAlt2","rule":"TRule_subselect_stmt.TBlock1.TAlt2.Rule_select_unparenthesized_stmt1","sum":122636940},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block1","sum":116310},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Block3","sum":264688},{"parent":"TRule_table_arg","rule":"TRule_table_arg.Rule_named_expr2","sum":192507095},{"parent":"TRule_table_arg.TBlock1","rule":"TRule_table_arg.TBlock1.Token1","sum":116310},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Rule_view_name2","sum":264688},{"parent":"TRule_table_arg.TBlock3","rule":"TRule_table_arg.TBlock3.Token1","sum":264688},{"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":154334901},{"parent":"TRule_table_hint","rule":"TRule_table_hint.Alt_table_hint2","sum":18944153},{"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":10710264},{"parent":"TRule_table_hint.TAlt1","rule":"TRule_table_hint.TAlt1.Rule_an_id_hint1","sum":154334901},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Block2","sum":10710264},{"parent":"TRule_table_hint.TAlt1.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.Token1","sum":10710264},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.Alt1","sum":10710264},{"parent":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1","rule":"TRule_table_hint.TAlt1.TBlock2.TBlock2.TAlt1.Rule_type_name_tag1","sum":10710264},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Block2","sum":1660},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Rule_type_name_or_bind3","sum":18944153},{"parent":"TRule_table_hint.TAlt2","rule":"TRule_table_hint.TAlt2.Token1","sum":18944153},{"parent":"TRule_table_hint.TAlt2.TBlock2","rule":"TRule_table_hint.TAlt2.TBlock2.Token1","sum":1660},{"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":162657466},{"parent":"TRule_table_hints","rule":"TRule_table_hints.Token1","sum":162657466},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt1","sum":152165766},{"parent":"TRule_table_hints.TBlock2","rule":"TRule_table_hints.TBlock2.Alt2","sum":10491700},{"parent":"TRule_table_hints.TBlock2.TAlt1","rule":"TRule_table_hints.TBlock2.TAlt1.Rule_table_hint1","sum":152165766},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Block3","sum":10221799},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Rule_table_hint2","sum":10491700},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token1","sum":10491700},{"parent":"TRule_table_hints.TBlock2.TAlt2","rule":"TRule_table_hints.TBlock2.TAlt2.Token4","sum":10491700},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Rule_table_hint2","sum":10621600},{"parent":"TRule_table_hints.TBlock2.TAlt2.TBlock3","rule":"TRule_table_hints.TBlock2.TAlt2.TBlock3.Token1","sum":10621600},{"parent":"TRule_table_key","rule":"TRule_table_key.Block2","sum":864520},{"parent":"TRule_table_key","rule":"TRule_table_key.Rule_id_table_or_type1","sum":330801595},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Rule_view_name2","sum":864520},{"parent":"TRule_table_key.TBlock2","rule":"TRule_table_key.TBlock2.Token1","sum":864520},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block1","sum":39945456},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block2","sum":6030087},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block3","sum":953241090},{"parent":"TRule_table_ref","rule":"TRule_table_ref.Block4","sum":19663127},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Rule_cluster_expr1","sum":39945456},{"parent":"TRule_table_ref.TBlock1","rule":"TRule_table_ref.TBlock1.Token2","sum":39945456},{"parent":"TRule_table_ref.TBlock2","rule":"TRule_table_ref.TBlock2.Token1","sum":6030087},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt1","sum":330801595},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt2","sum":96266390},{"parent":"TRule_table_ref.TBlock3","rule":"TRule_table_ref.TBlock3.Alt3","sum":526173105},{"parent":"TRule_table_ref.TBlock3.TAlt1","rule":"TRule_table_ref.TBlock3.TAlt1.Rule_table_key1","sum":330801595},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Block3","sum":96266365},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Rule_an_id_expr1","sum":96266390},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token2","sum":96266390},{"parent":"TRule_table_ref.TBlock3.TAlt2","rule":"TRule_table_ref.TBlock3.TAlt2.Token4","sum":96266390},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block2","sum":49696578},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Block3","sum":356338},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.Rule_table_arg1","sum":96266365},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Rule_table_arg2","sum":96240730},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock2.Token1","sum":96240730},{"parent":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt2.TBlock3.TBlock3.Token1","sum":356338},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block2","sum":22272712},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Block3","sum":177045},{"parent":"TRule_table_ref.TBlock3.TAlt3","rule":"TRule_table_ref.TBlock3.TAlt3.Rule_bind_parameter1","sum":526173105},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Block2","sum":15906646},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token1","sum":22272712},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.Token3","sum":22272712},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock2.TBlock2.Rule_expr_list1","sum":15906646},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Rule_view_name2","sum":177045},{"parent":"TRule_table_ref.TBlock3.TAlt3.TBlock3","rule":"TRule_table_ref.TBlock3.TAlt3.TBlock3.Token1","sum":177045},{"parent":"TRule_table_ref.TBlock4","rule":"TRule_table_ref.TBlock4.Rule_table_hints1","sum":19663127},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Block6","sum":9275},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_expr4","sum":328669},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Rule_sampling_mode2","sum":328669},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token1","sum":328669},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token3","sum":328669},{"parent":"TRule_tablesample_clause","rule":"TRule_tablesample_clause.Token5","sum":328669},{"parent":"TRule_tablesample_clause.TBlock6","rule":"TRule_tablesample_clause.TBlock6.Rule_repeatable_clause1","sum":9275},{"parent":"TRule_type_id","rule":"TRule_type_id.Token1","sum":11667116},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name1","sum":89350499},{"parent":"TRule_type_name","rule":"TRule_type_name.Alt_type_name2","sum":703427460},{"parent":"TRule_type_name.TAlt1","rule":"TRule_type_name.TAlt1.Rule_type_name_composite1","sum":89350499},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block1","sum":703427460},{"parent":"TRule_type_name.TAlt2","rule":"TRule_type_name.TAlt2.Block2","sum":73589678},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt1","sum":27884202},{"parent":"TRule_type_name.TAlt2.TBlock1","rule":"TRule_type_name.TAlt2.TBlock1.Alt2","sum":675543258},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt1","rule":"TRule_type_name.TAlt2.TBlock1.TAlt1.Rule_type_name_decimal1","sum":27884202},{"parent":"TRule_type_name.TAlt2.TBlock1.TAlt2","rule":"TRule_type_name.TAlt2.TBlock1.TAlt2.Rule_type_name_simple1","sum":675543258},{"parent":"TRule_type_name.TAlt2.TBlock2","rule":"TRule_type_name.TAlt2.TBlock2.Token1","sum":73590713},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block4","sum":9759575},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block5","sum":222641},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Block6","sum":10457},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Rule_type_name_or_bind9","sum":10086496},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token1","sum":10086496},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token10","sum":10086496},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token2","sum":10086496},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token3","sum":10086496},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token7","sum":10086496},{"parent":"TRule_type_name_callable","rule":"TRule_type_name_callable.Token8","sum":10086496},{"parent":"TRule_type_name_callable.TBlock4","rule":"TRule_type_name_callable.TBlock4.Rule_callable_arg_list1","sum":9759575},{"parent":"TRule_type_name_callable.TBlock5","rule":"TRule_type_name_callable.TBlock5.Token1","sum":222641},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Rule_callable_arg_list2","sum":10457},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token1","sum":10457},{"parent":"TRule_type_name_callable.TBlock6","rule":"TRule_type_name_callable.TBlock6.Token3","sum":10457},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block1","sum":106726447},{"parent":"TRule_type_name_composite","rule":"TRule_type_name_composite.Block2","sum":4244791},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt1","sum":33257209},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt10","sum":20320},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt11","sum":456243},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt12","sum":7804},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt13","sum":10086496},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt2","sum":2156159},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt3","sum":26673461},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt4","sum":136152},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt5","sum":25759007},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt6","sum":1520066},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt8","sum":6640454},{"parent":"TRule_type_name_composite.TBlock1","rule":"TRule_type_name_composite.TBlock1.Alt9","sum":13076},{"parent":"TRule_type_name_composite.TBlock1.TAlt1","rule":"TRule_type_name_composite.TBlock1.TAlt1.Rule_type_name_optional1","sum":33257209},{"parent":"TRule_type_name_composite.TBlock1.TAlt10","rule":"TRule_type_name_composite.TBlock1.TAlt10.Rule_type_name_enum1","sum":20320},{"parent":"TRule_type_name_composite.TBlock1.TAlt11","rule":"TRule_type_name_composite.TBlock1.TAlt11.Rule_type_name_resource1","sum":456243},{"parent":"TRule_type_name_composite.TBlock1.TAlt12","rule":"TRule_type_name_composite.TBlock1.TAlt12.Rule_type_name_tagged1","sum":7804},{"parent":"TRule_type_name_composite.TBlock1.TAlt13","rule":"TRule_type_name_composite.TBlock1.TAlt13.Rule_type_name_callable1","sum":10086496},{"parent":"TRule_type_name_composite.TBlock1.TAlt2","rule":"TRule_type_name_composite.TBlock1.TAlt2.Rule_type_name_tuple1","sum":2156159},{"parent":"TRule_type_name_composite.TBlock1.TAlt3","rule":"TRule_type_name_composite.TBlock1.TAlt3.Rule_type_name_struct1","sum":26673461},{"parent":"TRule_type_name_composite.TBlock1.TAlt4","rule":"TRule_type_name_composite.TBlock1.TAlt4.Rule_type_name_variant1","sum":136152},{"parent":"TRule_type_name_composite.TBlock1.TAlt5","rule":"TRule_type_name_composite.TBlock1.TAlt5.Rule_type_name_list1","sum":25759007},{"parent":"TRule_type_name_composite.TBlock1.TAlt6","rule":"TRule_type_name_composite.TBlock1.TAlt6.Rule_type_name_stream1","sum":1520066},{"parent":"TRule_type_name_composite.TBlock1.TAlt8","rule":"TRule_type_name_composite.TBlock1.TAlt8.Rule_type_name_dict1","sum":6640454},{"parent":"TRule_type_name_composite.TBlock1.TAlt9","rule":"TRule_type_name_composite.TBlock1.TAlt9.Rule_type_name_set1","sum":13076},{"parent":"TRule_type_name_composite.TBlock2","rule":"TRule_type_name_composite.TBlock2.Token1","sum":4244794},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind3","sum":27884202},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Rule_integer_or_bind5","sum":27884202},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token1","sum":27884202},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token2","sum":27884202},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token4","sum":27884202},{"parent":"TRule_type_name_decimal","rule":"TRule_type_name_decimal.Token6","sum":27884202},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind3","sum":6640454},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Rule_type_name_or_bind5","sum":6640454},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token1","sum":6640454},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token2","sum":6640454},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token4","sum":6640454},{"parent":"TRule_type_name_dict","rule":"TRule_type_name_dict.Token6","sum":6640454},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block4","sum":20072},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Block5","sum":378},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Rule_type_name_tag3","sum":20320},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token1","sum":20320},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token2","sum":20320},{"parent":"TRule_type_name_enum","rule":"TRule_type_name_enum.Token6","sum":20320},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Rule_type_name_tag2","sum":43728},{"parent":"TRule_type_name_enum.TBlock4","rule":"TRule_type_name_enum.TBlock4.Token1","sum":43728},{"parent":"TRule_type_name_enum.TBlock5","rule":"TRule_type_name_enum.TBlock5.Token1","sum":378},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Rule_type_name_or_bind3","sum":25759007},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token1","sum":25759007},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token2","sum":25759007},{"parent":"TRule_type_name_list","rule":"TRule_type_name_list.Token4","sum":25759007},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Rule_type_name_or_bind3","sum":33257209},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token1","sum":33257209},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token2","sum":33257209},{"parent":"TRule_type_name_optional","rule":"TRule_type_name_optional.Token4","sum":33257209},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind1","sum":636419428},{"parent":"TRule_type_name_or_bind","rule":"TRule_type_name_or_bind.Alt_type_name_or_bind2","sum":2669561},{"parent":"TRule_type_name_or_bind.TAlt1","rule":"TRule_type_name_or_bind.TAlt1.Rule_type_name1","sum":636419428},{"parent":"TRule_type_name_or_bind.TAlt2","rule":"TRule_type_name_or_bind.TAlt2.Rule_bind_parameter1","sum":2669561},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Rule_type_name_tag3","sum":456243},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token1","sum":456243},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token2","sum":456243},{"parent":"TRule_type_name_resource","rule":"TRule_type_name_resource.Token4","sum":456243},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Rule_type_name_or_bind3","sum":13076},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token1","sum":13076},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token2","sum":13076},{"parent":"TRule_type_name_set","rule":"TRule_type_name_set.Token4","sum":13076},{"parent":"TRule_type_name_simple","rule":"TRule_type_name_simple.Rule_an_id_pure1","sum":677385895},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Rule_type_name_or_bind3","sum":1520066},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token1","sum":1520066},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token2","sum":1520066},{"parent":"TRule_type_name_stream","rule":"TRule_type_name_stream.Token4","sum":1520066},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Block2","sum":26673461},{"parent":"TRule_type_name_struct","rule":"TRule_type_name_struct.Token1","sum":26673461},{"parent":"TRule_type_name_struct.TBlock2","rule":"TRule_type_name_struct.TBlock2.Alt1","sum":26670569},{"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":26670558},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token1","sum":26670569},{"parent":"TRule_type_name_struct.TBlock2.TAlt1","rule":"TRule_type_name_struct.TBlock2.TAlt1.Token3","sum":26670569},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block2","sum":20356595},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Block3","sum":2053764},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.Rule_struct_arg1","sum":26670558},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Rule_struct_arg2","sum":87346323},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":87346323},{"parent":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_struct.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":2053764},{"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":104746815},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag2","sum":18252530},{"parent":"TRule_type_name_tag","rule":"TRule_type_name_tag.Alt_type_name_tag3","sum":2612869},{"parent":"TRule_type_name_tag.TAlt1","rule":"TRule_type_name_tag.TAlt1.Rule_id1","sum":104746815},{"parent":"TRule_type_name_tag.TAlt2","rule":"TRule_type_name_tag.TAlt2.Token1","sum":18252530},{"parent":"TRule_type_name_tag.TAlt3","rule":"TRule_type_name_tag.TAlt3.Rule_bind_parameter1","sum":2612869},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_or_bind3","sum":7804},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Rule_type_name_tag5","sum":7804},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token1","sum":7804},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token2","sum":7804},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token4","sum":7804},{"parent":"TRule_type_name_tagged","rule":"TRule_type_name_tagged.Token6","sum":7804},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Block2","sum":2156159},{"parent":"TRule_type_name_tuple","rule":"TRule_type_name_tuple.Token1","sum":2156159},{"parent":"TRule_type_name_tuple.TBlock2","rule":"TRule_type_name_tuple.TBlock2.Alt1","sum":2156149},{"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":2156149},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token1","sum":2156149},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1","rule":"TRule_type_name_tuple.TBlock2.TAlt1.Token3","sum":2156149},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block2","sum":2154633},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Block3","sum":63598},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.Rule_type_name_or_bind1","sum":2156149},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Rule_type_name_or_bind2","sum":3336978},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock2.Token1","sum":3336978},{"parent":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3","rule":"TRule_type_name_tuple.TBlock2.TAlt1.TBlock2.TBlock3.Token1","sum":63598},{"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":121499},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Block5","sum":99},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Rule_variant_arg3","sum":136152},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token1","sum":136152},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token2","sum":136152},{"parent":"TRule_type_name_variant","rule":"TRule_type_name_variant.Token6","sum":136152},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Rule_variant_arg2","sum":231876},{"parent":"TRule_type_name_variant.TBlock4","rule":"TRule_type_name_variant.TBlock4.Token1","sum":231876},{"parent":"TRule_type_name_variant.TBlock5","rule":"TRule_type_name_variant.TBlock5.Token1","sum":99},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Block1","sum":16009368007},{"parent":"TRule_unary_casual_subexpr","rule":"TRule_unary_casual_subexpr.Rule_unary_subexpr_suffix2","sum":16009368007},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt1","sum":7177628946},{"parent":"TRule_unary_casual_subexpr.TBlock1","rule":"TRule_unary_casual_subexpr.TBlock1.Alt2","sum":8831739061},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt1","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt1.Rule_id_expr1","sum":7177628946},{"parent":"TRule_unary_casual_subexpr.TBlock1.TAlt2","rule":"TRule_unary_casual_subexpr.TBlock1.TAlt2.Rule_atom_expr1","sum":8831739061},{"parent":"TRule_unary_op","rule":"TRule_unary_op.Token1","sum":87792338},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr1","sum":16009368007},{"parent":"TRule_unary_subexpr","rule":"TRule_unary_subexpr.Alt_unary_subexpr2","sum":6348054},{"parent":"TRule_unary_subexpr.TAlt1","rule":"TRule_unary_subexpr.TAlt1.Rule_unary_casual_subexpr1","sum":16009368007},{"parent":"TRule_unary_subexpr.TAlt2","rule":"TRule_unary_subexpr.TAlt2.Rule_json_api_expr1","sum":6348054},{"parent":"TRule_unary_subexpr_suffix","rule":"TRule_unary_subexpr_suffix.Block1","sum":4771836263},{"parent":"TRule_unary_subexpr_suffix.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.Block1","sum":5026228634},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt1","sum":173319845},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt2","sum":2874929886},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.Alt3","sum":1977978903},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt1.Rule_key_expr1","sum":173319845},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt2.Rule_invoke_expr1","sum":2874929886},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Block2","sum":1977978903},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.Token1","sum":1977978903},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt1","sum":3152320},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt2","sum":40423819},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.Alt3","sum":1934402764},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt1.Rule_bind_parameter1","sum":3152320},{"parent":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2","rule":"TRule_unary_subexpr_suffix.TBlock1.TBlock1.TAlt3.TBlock2.TAlt2.Token1","sum":40423819},{"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":1934402764},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Rule_cluster_expr2","sum":329427984},{"parent":"TRule_use_stmt","rule":"TRule_use_stmt.Token1","sum":329427984},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Block1","sum":2767190},{"parent":"TRule_using_call_expr","rule":"TRule_using_call_expr.Rule_invoke_expr2","sum":2767190},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt1","sum":1520665},{"parent":"TRule_using_call_expr.TBlock1","rule":"TRule_using_call_expr.TBlock1.Alt3","sum":1246525},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type1","sum":1520665},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Rule_an_id_or_type3","sum":1520665},{"parent":"TRule_using_call_expr.TBlock1.TAlt1","rule":"TRule_using_call_expr.TBlock1.TAlt1.Token2","sum":1520665},{"parent":"TRule_using_call_expr.TBlock1.TAlt3","rule":"TRule_using_call_expr.TBlock1.TAlt3.Rule_bind_parameter1","sum":1246525},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor1","sum":32135},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor2","sum":50918},{"parent":"TRule_value_constructor","rule":"TRule_value_constructor.Alt_value_constructor3","sum":80586},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr3","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr5","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Rule_expr7","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token1","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token2","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token4","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token6","sum":32135},{"parent":"TRule_value_constructor.TAlt1","rule":"TRule_value_constructor.TAlt1.Token8","sum":32135},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr3","sum":50918},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Rule_expr5","sum":50918},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token1","sum":50918},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token2","sum":50918},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token4","sum":50918},{"parent":"TRule_value_constructor.TAlt2","rule":"TRule_value_constructor.TAlt2.Token6","sum":50918},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr3","sum":80586},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Rule_expr5","sum":80586},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token1","sum":80586},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token2","sum":80586},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token4","sum":80586},{"parent":"TRule_value_constructor.TAlt3","rule":"TRule_value_constructor.TAlt3.Token6","sum":80586},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source1","sum":1085217},{"parent":"TRule_values_source","rule":"TRule_values_source.Alt_values_source2","sum":207827779},{"parent":"TRule_values_source.TAlt1","rule":"TRule_values_source.TAlt1.Rule_values_stmt1","sum":1085217},{"parent":"TRule_values_source.TAlt2","rule":"TRule_values_source.TAlt2.Rule_select_stmt1","sum":207827779},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Rule_expr_list2","sum":9055982},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token1","sum":9055982},{"parent":"TRule_values_source_row","rule":"TRule_values_source_row.Token3","sum":9055982},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Block2","sum":486988},{"parent":"TRule_values_source_row_list","rule":"TRule_values_source_row_list.Rule_values_source_row1","sum":1253910},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Rule_values_source_row2","sum":7802072},{"parent":"TRule_values_source_row_list.TBlock2","rule":"TRule_values_source_row_list.TBlock2.Token1","sum":7802072},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Rule_values_source_row_list2","sum":1253910},{"parent":"TRule_values_stmt","rule":"TRule_values_stmt.Token1","sum":1253910},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Block1","sum":356799},{"parent":"TRule_variant_arg","rule":"TRule_variant_arg.Rule_type_name_or_bind2","sum":18347086},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Rule_type_name_tag1","sum":356799},{"parent":"TRule_variant_arg.TBlock1","rule":"TRule_variant_arg.TBlock1.Token2","sum":356799},{"parent":"TRule_view_name","rule":"TRule_view_name.Alt_view_name1","sum":1306253},{"parent":"TRule_view_name.TAlt1","rule":"TRule_view_name.TAlt1.Rule_an_id1","sum":1306253},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr2","sum":158241873},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Rule_expr4","sum":158241873},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token1","sum":158241873},{"parent":"TRule_when_expr","rule":"TRule_when_expr.Token3","sum":158241873},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Rule_window_definition_list2","sum":13585207},{"parent":"TRule_window_clause","rule":"TRule_window_clause.Token1","sum":13585207},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_new_window_name1","sum":14160253},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Rule_window_specification3","sum":14160253},{"parent":"TRule_window_definition","rule":"TRule_window_definition.Token2","sum":14160253},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Block2","sum":434934},{"parent":"TRule_window_definition_list","rule":"TRule_window_definition_list.Rule_window_definition1","sum":13585207},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Rule_window_definition2","sum":575046},{"parent":"TRule_window_definition_list.TBlock2","rule":"TRule_window_definition_list.TBlock2.Token1","sum":575046},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound2","sum":2316737},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Rule_window_frame_bound4","sum":2316737},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token1","sum":2316737},{"parent":"TRule_window_frame_between","rule":"TRule_window_frame_between.Token3","sum":2316737},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound1","sum":1324737},{"parent":"TRule_window_frame_bound","rule":"TRule_window_frame_bound.Alt_window_frame_bound2","sum":3366628},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token1","sum":1324737},{"parent":"TRule_window_frame_bound.TAlt1","rule":"TRule_window_frame_bound.TAlt1.Token2","sum":1324737},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Block1","sum":3366628},{"parent":"TRule_window_frame_bound.TAlt2","rule":"TRule_window_frame_bound.TAlt2.Token2","sum":3366628},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt1","sum":1114210},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.Alt2","sum":2252418},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt1.Rule_expr1","sum":1114210},{"parent":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2","rule":"TRule_window_frame_bound.TAlt2.TBlock1.TAlt2.Token1","sum":2252418},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_extent2","sum":2374628},{"parent":"TRule_window_frame_clause","rule":"TRule_window_frame_clause.Rule_window_frame_units1","sum":2374628},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent1","sum":57891},{"parent":"TRule_window_frame_extent","rule":"TRule_window_frame_extent.Alt_window_frame_extent2","sum":2316737},{"parent":"TRule_window_frame_extent.TAlt1","rule":"TRule_window_frame_extent.TAlt1.Rule_window_frame_bound1","sum":57891},{"parent":"TRule_window_frame_extent.TAlt2","rule":"TRule_window_frame_extent.TAlt2.Rule_window_frame_between1","sum":2316737},{"parent":"TRule_window_frame_units","rule":"TRule_window_frame_units.Token1","sum":2374628},{"parent":"TRule_window_name","rule":"TRule_window_name.Rule_an_id_window1","sum":46640092},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification1","sum":32479839},{"parent":"TRule_window_name_or_specification","rule":"TRule_window_name_or_specification.Alt_window_name_or_specification2","sum":12826512},{"parent":"TRule_window_name_or_specification.TAlt1","rule":"TRule_window_name_or_specification.TAlt1.Rule_window_name1","sum":32479839},{"parent":"TRule_window_name_or_specification.TAlt2","rule":"TRule_window_name_or_specification.TAlt2.Rule_window_specification1","sum":12826512},{"parent":"TRule_window_order_clause","rule":"TRule_window_order_clause.Rule_order_by_clause1","sum":19003363},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Block2","sum":51717},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Rule_named_expr_list4","sum":21791276},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token1","sum":21791276},{"parent":"TRule_window_partition_clause","rule":"TRule_window_partition_clause.Token3","sum":21791276},{"parent":"TRule_window_partition_clause.TBlock2","rule":"TRule_window_partition_clause.TBlock2.Token1","sum":51717},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Rule_window_specification_details2","sum":26986765},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token1","sum":26986765},{"parent":"TRule_window_specification","rule":"TRule_window_specification.Token3","sum":26986765},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block2","sum":21791275},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block3","sum":19003363},{"parent":"TRule_window_specification_details","rule":"TRule_window_specification_details.Block4","sum":2374628},{"parent":"TRule_window_specification_details.TBlock2","rule":"TRule_window_specification_details.TBlock2.Rule_window_partition_clause1","sum":21791275},{"parent":"TRule_window_specification_details.TBlock3","rule":"TRule_window_specification_details.TBlock3.Rule_window_order_clause1","sum":19003363},{"parent":"TRule_window_specification_details.TBlock4","rule":"TRule_window_specification_details.TBlock4.Rule_window_frame_clause1","sum":2374628},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block2","sum":9203014},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Block3","sum":1311173},{"parent":"TRule_without_column_list","rule":"TRule_without_column_list.Rule_without_column_name1","sum":24883415},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Rule_without_column_name2","sum":29234776},{"parent":"TRule_without_column_list.TBlock2","rule":"TRule_without_column_list.TBlock2.Token1","sum":29234776},{"parent":"TRule_without_column_list.TBlock3","rule":"TRule_without_column_list.TBlock3.Token1","sum":1311173},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name1","sum":30839645},{"parent":"TRule_without_column_name","rule":"TRule_without_column_name.Alt_without_column_name2","sum":23278546},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id1","sum":30839645},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Rule_an_id3","sum":30839645},{"parent":"TRule_without_column_name.TAlt1","rule":"TRule_without_column_name.TAlt1.Token2","sum":30839645},{"parent":"TRule_without_column_name.TAlt2","rule":"TRule_without_column_name.TAlt2.Rule_an_id_without1","sum":23278546},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Block2","sum":1095537315},{"parent":"TRule_xor_subexpr","rule":"TRule_xor_subexpr.Rule_eq_subexpr1","sum":14281560370},{"parent":"TRule_xor_subexpr.TBlock2","rule":"TRule_xor_subexpr.TBlock2.Rule_cond_expr1","sum":1095537315},{"parent":"TSQLv1ParserAST","rule":"TSQLv1ParserAST.Rule_sql_query","sum":320130391},{"parent":"TYPE","rule":"BIGINT","sum":7045},{"parent":"TYPE","rule":"BOOL","sum":109153},{"parent":"TYPE","rule":"BYTEs","sum":1},{"parent":"TYPE","rule":"BigInt","sum":210},{"parent":"TYPE","rule":"Bool","sum":9299135},{"parent":"TYPE","rule":"Bytes","sum":421334},{"parent":"TYPE","rule":"DATE","sum":1252991},{"parent":"TYPE","rule":"DATETIME","sum":66736},{"parent":"TYPE","rule":"DATETime","sum":2},{"parent":"TYPE","rule":"DATEtIME","sum":1},{"parent":"TYPE","rule":"DATEtime","sum":34},{"parent":"TYPE","rule":"DAte","sum":9272},{"parent":"TYPE","rule":"DAteTime","sum":54},{"parent":"TYPE","rule":"DAtetime","sum":665},{"parent":"TYPE","rule":"DOUBLE","sum":1351180},{"parent":"TYPE","rule":"DOUBLe","sum":1},{"parent":"TYPE","rule":"DOUBle","sum":1},{"parent":"TYPE","rule":"DOUble","sum":3},{"parent":"TYPE","rule":"DOuble","sum":2143},{"parent":"TYPE","rule":"DaTeTime","sum":1},{"parent":"TYPE","rule":"Date","sum":20625922},{"parent":"TYPE","rule":"Date32","sum":60},{"parent":"TYPE","rule":"DateTIME","sum":19},{"parent":"TYPE","rule":"DateTIme","sum":121},{"parent":"TYPE","rule":"DateTime","sum":4994749},{"parent":"TYPE","rule":"DateTime64","sum":8},{"parent":"TYPE","rule":"DatetIME","sum":35},{"parent":"TYPE","rule":"Datetime","sum":3253222},{"parent":"TYPE","rule":"Datetime64","sum":37},{"parent":"TYPE","rule":"DoubLe","sum":13},{"parent":"TYPE","rule":"Double","sum":30104093},{"parent":"TYPE","rule":"EmptyDict","sum":28},{"parent":"TYPE","rule":"EmptyList","sum":28},{"parent":"TYPE","rule":"FLOAT","sum":191924},{"parent":"TYPE","rule":"FLoat","sum":3426},{"parent":"TYPE","rule":"FlOAT","sum":15},{"parent":"TYPE","rule":"FloaT","sum":320},{"parent":"TYPE","rule":"Float","sum":7080417},{"parent":"TYPE","rule":"Generic","sum":3},{"parent":"TYPE","rule":"INT","sum":422033},{"parent":"TYPE","rule":"INT16","sum":9481},{"parent":"TYPE","rule":"INT32","sum":140114},{"parent":"TYPE","rule":"INT64","sum":4144555},{"parent":"TYPE","rule":"INT8","sum":1823},{"parent":"TYPE","rule":"INTEGER","sum":73414},{"parent":"TYPE","rule":"INTERVAL","sum":10667},{"parent":"TYPE","rule":"INt16","sum":1},{"parent":"TYPE","rule":"INt32","sum":1172},{"parent":"TYPE","rule":"INt64","sum":38323},{"parent":"TYPE","rule":"InT32","sum":1},{"parent":"TYPE","rule":"Int","sum":523129},{"parent":"TYPE","rule":"Int16","sum":906516},{"parent":"TYPE","rule":"Int32","sum":13797078},{"parent":"TYPE","rule":"Int64","sum":47392259},{"parent":"TYPE","rule":"Int8","sum":1004426},{"parent":"TYPE","rule":"Integer","sum":468078},{"parent":"TYPE","rule":"Interval","sum":204594},{"parent":"TYPE","rule":"Interval64","sum":34},{"parent":"TYPE","rule":"JSON","sum":1735332},{"parent":"TYPE","rule":"JSONDocument","sum":255},{"parent":"TYPE","rule":"JSOn","sum":1},{"parent":"TYPE","rule":"JSon","sum":2},{"parent":"TYPE","rule":"Json","sum":5481257},{"parent":"TYPE","rule":"JsonDocument","sum":17007},{"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":1278},{"parent":"TYPE","rule":"PgPolygon","sum":638},{"parent":"TYPE","rule":"PgText","sum":419},{"parent":"TYPE","rule":"PgTimestamp","sum":1875},{"parent":"TYPE","rule":"PgVarChar","sum":1},{"parent":"TYPE","rule":"PgVarchar","sum":231},{"parent":"TYPE","rule":"STRING","sum":2678975},{"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":335154604},{"parent":"TYPE","rule":"TEXT","sum":20612},{"parent":"TYPE","rule":"TIMESTAMP","sum":315869},{"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":195837},{"parent":"TYPE","rule":"TimeStamp","sum":295779},{"parent":"TYPE","rule":"Timestamp","sum":5985852},{"parent":"TYPE","rule":"Timestamp64","sum":486},{"parent":"TYPE","rule":"TzDATE","sum":5},{"parent":"TYPE","rule":"TzDate","sum":48165},{"parent":"TYPE","rule":"TzDateTime","sum":43754},{"parent":"TYPE","rule":"TzDatetime","sum":672850},{"parent":"TYPE","rule":"TzTimeStamp","sum":6},{"parent":"TYPE","rule":"TzTimestamp","sum":8078},{"parent":"TYPE","rule":"Tzdate","sum":5},{"parent":"TYPE","rule":"Tzdatetime","sum":4},{"parent":"TYPE","rule":"UINT16","sum":1235},{"parent":"TYPE","rule":"UINT32","sum":430136},{"parent":"TYPE","rule":"UINT64","sum":590451},{"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":129858},{"parent":"TYPE","rule":"UInt32","sum":7328251},{"parent":"TYPE","rule":"UInt64","sum":9460318},{"parent":"TYPE","rule":"UInt8","sum":153012},{"parent":"TYPE","rule":"UNIT","sum":756},{"parent":"TYPE","rule":"UTF8","sum":267638},{"parent":"TYPE","rule":"UTf8","sum":143},{"parent":"TYPE","rule":"UUID","sum":1241689},{"parent":"TYPE","rule":"UiNt32","sum":4},{"parent":"TYPE","rule":"Uint16","sum":333955},{"parent":"TYPE","rule":"Uint32","sum":18506534},{"parent":"TYPE","rule":"Uint64","sum":32752609},{"parent":"TYPE","rule":"Uint8","sum":2331285},{"parent":"TYPE","rule":"Unit","sum":1150},{"parent":"TYPE","rule":"Utf8","sum":14355669},{"parent":"TYPE","rule":"Uuid","sum":43569},{"parent":"TYPE","rule":"VARCHAR","sum":517176},{"parent":"TYPE","rule":"Varchar","sum":2},{"parent":"TYPE","rule":"Void","sum":11134},{"parent":"TYPE","rule":"XML","sum":21},{"parent":"TYPE","rule":"YSON","sum":226769},{"parent":"TYPE","rule":"YSon","sum":357},{"parent":"TYPE","rule":"Yson","sum":17637234},{"parent":"TYPE","rule":"_PgMoney","sum":3},{"parent":"TYPE","rule":"bigint","sum":8796},{"parent":"TYPE","rule":"bool","sum":936903},{"parent":"TYPE","rule":"bytes","sum":35237},{"parent":"TYPE","rule":"dATE","sum":1},{"parent":"TYPE","rule":"daTE","sum":5},{"parent":"TYPE","rule":"date","sum":32392415},{"parent":"TYPE","rule":"date32","sum":41},{"parent":"TYPE","rule":"dateTIME","sum":8},{"parent":"TYPE","rule":"dateTime","sum":43345},{"parent":"TYPE","rule":"datetime","sum":7110634},{"parent":"TYPE","rule":"datetime64","sum":61},{"parent":"TYPE","rule":"double","sum":6938427},{"parent":"TYPE","rule":"emptyList","sum":1},{"parent":"TYPE","rule":"float","sum":4720867},{"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":1119552},{"parent":"TYPE","rule":"int16","sum":79269},{"parent":"TYPE","rule":"int32","sum":3208024},{"parent":"TYPE","rule":"int64","sum":8444124},{"parent":"TYPE","rule":"int8","sum":42080},{"parent":"TYPE","rule":"integer","sum":135629},{"parent":"TYPE","rule":"interval","sum":400514},{"parent":"TYPE","rule":"json","sum":1061388},{"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":45728030},{"parent":"TYPE","rule":"text","sum":4565258},{"parent":"TYPE","rule":"timeStamp","sum":94},{"parent":"TYPE","rule":"timestamp","sum":21894834},{"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":6},{"parent":"TYPE","rule":"uInt32","sum":12269},{"parent":"TYPE","rule":"uInt64","sum":2528},{"parent":"TYPE","rule":"uInt8","sum":52},{"parent":"TYPE","rule":"uint16","sum":27129},{"parent":"TYPE","rule":"uint32","sum":5308657},{"parent":"TYPE","rule":"uint64","sum":8644573},{"parent":"TYPE","rule":"uint8","sum":159561},{"parent":"TYPE","rule":"unit","sum":693399},{"parent":"TYPE","rule":"utf8","sum":4587294},{"parent":"TYPE","rule":"uuid","sum":2980729},{"parent":"TYPE","rule":"varchar","sum":58836},{"parent":"TYPE","rule":"void","sum":1},{"parent":"TYPE","rule":"xml","sum":32381},{"parent":"TYPE","rule":"yaml","sum":144},{"parent":"TYPE","rule":"yson","sum":1126740}] diff --git a/yql/essentials/docs/ru/syntax/expressions.md b/yql/essentials/docs/ru/syntax/expressions.md index e0e424a38e..76930efd31 100644 --- a/yql/essentials/docs/ru/syntax/expressions.md +++ b/yql/essentials/docs/ru/syntax/expressions.md @@ -168,15 +168,15 @@ WHERE value IS NOT NULL; ## IS \[NOT\] DISTINCT FROM {#is-distinct-from} -Сравнение двух значений. В отличие от обычных [операторов сравнения](#comparison-operators), нуллы считаются равными друг другу. +Сравнение двух значений. В отличие от обычных [операторов сравнения](#comparison-operators), `NULL`-значения считаются равными друг другу. Сравнение осуществляется по следующим правилам: -1. операторы `IS DISTINCT FROM`/`IS NOT DISTINCT FROM` определены для тех и только для тех аргументов, для которых определены операторы `!=` и `=`; -2. результат `IS NOT DISTINCT FROM` равен логическому отрицанию результата `IS DISTINCT FROM` для данных аргументов; -3. если результат оператора `==` не равен нуллу для некоторых аргументов, то он совпадает с результатом оператора `IS NOT DISTINCT FROM` для тех же аргументов; -4. если оба аргумента являются незаполненными `Optional`ми или `NULL`ами, то значение `IS NOT DISTINCT FROM` равно `True` -5. результат `IS NOT DISTINCT FROM` от незаполненного `Optional` или `NULL` и заполненного `Optional` или не-`Optional` значения равен `False`. +1. Операторы `IS DISTINCT FROM`/`IS NOT DISTINCT FROM` определены для тех и только для тех аргументов, для которых определены операторы `!=` и `=`. +2. Результат `IS NOT DISTINCT FROM` равен логическому отрицанию результата `IS DISTINCT FROM` для данных аргументов. +3. Если результат оператора `==` не равен `NULL` для некоторых аргументов, то он совпадает с результатом оператора `IS NOT DISTINCT FROM` для тех же аргументов. +4. Если оба аргумента являются незаполненными `Optional` или `NULL`, то значение `IS NOT DISTINCT FROM` равно `True`. +5. Результат `IS NOT DISTINCT FROM` от незаполненного `Optional` или `NULL` и заполненного `Optional` или не-`Optional` значения равен `False`. Для значений композитных типов эти правила применяются рекурсивно. @@ -435,13 +435,13 @@ $x, $y = AsTuple($y, $x); -- swap значений выражений Семантика табличного выражения зависит от контекста в котором оно используется. В YQL табличные выражения могут применяться в следующих контекстах: -* табличный контекст - после [FROM](select/from.md). +* табличный контекст — после [FROM](select/from.md). Здесь табличные выражения работают как ожидается – например `$input = SELECT a, b, c FROM T; SELECT * FROM $input` вернет таблицу с тремя колонками. Табличный контекст также возникает после [UNION ALL](select/index.md#unionall), [JOIN](join.md#join), [PROCESS](process.md#process), [REDUCE](reduce.md#reduce); -* векторный контекст - после [IN](#in). В этом контексте табличное выражение обязано содержать ровно одну колонку (имя этой колонки никак не влияет на результат выражения). +* векторный контекст — после [IN](#in). В этом контексте табличное выражение обязано содержать ровно одну колонку (имя этой колонки никак не влияет на результат выражения). Табличное выражение в векторном контексте типизируется как список (тип элемента списка при этом совпадает с типом колонки). Пример: `SELECT * FROM T WHERE key IN (SELECT k FROM T1)`; @@ -456,7 +456,7 @@ $input = SELECT 1 AS key, 2 AS value; $process = PROCESS $input; SELECT FormatType(TypeOf($process)); -- $process используется в скалярном контексте, - -- но результат SELECT при этом - List<Struct<'key':Int32,'value':Int32>> + -- но результат SELECT при этом — List<Struct<'key':Int32,'value':Int32>> SELECT $process[0].key; -- вернет 1 @@ -475,7 +475,7 @@ SELECT * FROM $table LEFT JOIN $dict USING(key); END DEFINE; SELECT * FROM $merge_dict("Input", $dict); -- $dict здесь используется в скалярном контексте. - -- ошибка - в скалярном контексте ожидается ровно одна колонка + -- ошибка — в скалярном контексте ожидается ровно одна колонка ``` @@ -491,7 +491,7 @@ SELECT * FROM $table LEFT JOIN $dict() USING(key); -- использование -- (вызов шаблона подзапроса) в табличном контексте END DEFINE; -SELECT * FROM $merge_dict("Input", $dict); -- $dict - шаблон позапроса (не табличное выражение) +SELECT * FROM $merge_dict("Input", $dict); -- $dict — шаблон позапроса (не табличное выражение) -- передаваемый в качестве аргумента табличного выражения ``` diff --git a/yql/essentials/minikql/computation/mkql_method_address_helper.h b/yql/essentials/minikql/computation/mkql_method_address_helper.h index 8935a74d52..35b6a66a90 100644 --- a/yql/essentials/minikql/computation/mkql_method_address_helper.h +++ b/yql/essentials/minikql/computation/mkql_method_address_helper.h @@ -153,14 +153,23 @@ inline uintptr_t GetMethodPtr() { } #else // SHOULD_WRAP_ALL_UNBOXED_VALUES_FOR_CODEGEN +namespace NInternal { +template <typename Method> +inline uintptr_t GetMethodPtr(Method method) { + uintptr_t ptr; + std::memcpy(&ptr, &method, sizeof(uintptr_t)); + return ptr; +} +} // namespace NInternal + template <MethodPointer auto func> inline uintptr_t GetMethodPtr() { - return GetMethodPtr(func); + return NInternal::GetMethodPtr(func); } template <FunctionPointer auto func> inline uintptr_t GetMethodPtr() { - return GetMethodPtr(func); + return NInternal::GetMethodPtr(func); } #endif // SHOULD_WRAP_ALL_UNBOXED_VALUES_FOR_CODEGEN diff --git a/yql/essentials/providers/common/config/yql_dispatch.cpp b/yql/essentials/providers/common/config/yql_dispatch.cpp index 536efac6d9..5a8b2573b1 100644 --- a/yql/essentials/providers/common/config/yql_dispatch.cpp +++ b/yql/essentials/providers/common/config/yql_dispatch.cpp @@ -164,6 +164,12 @@ void TSettingDispatcher::Restore() { } } +void TSettingDispatcher::Enumerate(std::function<void(std::string_view)> callback) { + for (const auto& name : Names) { + callback(name); + } +} + TSettingDispatcher::TErrorCallback TSettingDispatcher::GetDefaultErrorCallback() { return [] (const TString& msg, bool isError) -> bool { if (isError) { diff --git a/yql/essentials/providers/common/config/yql_dispatch.h b/yql/essentials/providers/common/config/yql_dispatch.h index 9c068c9334..0b7a9077dd 100644 --- a/yql/essentials/providers/common/config/yql_dispatch.h +++ b/yql/essentials/providers/common/config/yql_dispatch.h @@ -15,6 +15,7 @@ #include <util/generic/strbuf.h> #include <util/generic/hash.h> #include <util/generic/hash_set.h> +#include <util/generic/set.h> #include <util/generic/yexception.h> #include <util/generic/vector.h> #include <util/generic/guid.h> @@ -344,6 +345,11 @@ public: if (!Handlers.insert({NormalizeName(name), handler}).second) { ythrow yexception() << "Duplicate configuration setting name " << name.Quote(); } + + if (!name.StartsWith('_')) { + Names.insert(name); + } + return *handler; } @@ -383,10 +389,12 @@ public: void Restore(); static TErrorCallback GetDefaultErrorCallback(); static TErrorCallback GetErrorCallback(TPositionHandle pos, TExprContext& ctx); + void Enumerate(std::function<void(std::string_view)> callback); protected: THashSet<TString> ValidClusters; THashMap<TString, TSettingHandler::TPtr> Handlers; + TSet<TString> Names; }; } // namespace NCommon diff --git a/yql/essentials/providers/common/provider/yql_provider.cpp b/yql/essentials/providers/common/provider/yql_provider.cpp index 7f3ef39e9a..f5fdda4052 100644 --- a/yql/essentials/providers/common/provider/yql_provider.cpp +++ b/yql/essentials/providers/common/provider/yql_provider.cpp @@ -1084,7 +1084,7 @@ bool FillUsedFilesImpl( return childrenOk; } -static void GetToken(const TString& string, TString& out, const TTypeAnnotationContext& type) { +void GetToken(const TString& string, TString& out, const TTypeAnnotationContext& type) { auto separator = string.find(":"); const auto p0 = string.substr(0, separator); if (p0 == "api") { diff --git a/yql/essentials/providers/common/provider/yql_provider.h b/yql/essentials/providers/common/provider/yql_provider.h index efddf213ff..4410f1cbc2 100644 --- a/yql/essentials/providers/common/provider/yql_provider.h +++ b/yql/essentials/providers/common/provider/yql_provider.h @@ -216,6 +216,8 @@ void TransformerStatsToYson(const TString& name, const IGraphTransformer::TStati TString TransformerStatsToYson(const IGraphTransformer::TStatistics& stats, NYson::EYsonFormat format = NYson::EYsonFormat::Pretty); +void GetToken(const TString& string, TString& out, const TTypeAnnotationContext& type); + void FillSecureParams(const TExprNode::TPtr& node, const TTypeAnnotationContext& types, THashMap<TString, TString>& secureParams); bool FillUsedFiles(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const TUserDataTable& crutches = {}); diff --git a/yql/essentials/public/fastcheck/format.cpp b/yql/essentials/public/fastcheck/format.cpp index 26a1bce2ca..dac43f0ffa 100644 --- a/yql/essentials/public/fastcheck/format.cpp +++ b/yql/essentials/public/fastcheck/format.cpp @@ -4,6 +4,7 @@ #include <yql/essentials/sql/v1/lexer/antlr4_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/core/issue/yql_issue.h> #include <util/string/builder.h> namespace NYql { @@ -76,7 +77,7 @@ private: auto formatter = NSQLFormat::MakeSqlFormatter(lexers, parsers, settings); TString formattedQuery; res.Success = formatter->Format(request.Program, formattedQuery, res.Issues); - if (res.Success && formattedQuery != NormalizeEOL(request.Program)) { + if (res.Success && NormalizeEOL(formattedQuery) != NormalizeEOL(request.Program)) { res.Success = false; TPosition origPos(0, 1, request.File); TTextWalker origWalker(origPos, true); @@ -104,8 +105,10 @@ private: origSample.erase(origSample.size() - 1); } - res.Issues.AddIssue(TIssue(origPos, TStringBuilder() << - "Format mismatch, expected:\n" << formattedSample << "\nbut got:\n" << origSample)); + auto issue = TIssue(origPos, TStringBuilder() << + "Format mismatch, expected:\n" << formattedSample << "\nbut got:\n" << origSample); + issue.SetCode(EYqlIssueCode::TIssuesIds_EIssueCode_WARNING, ESeverity::TSeverityIds_ESeverityId_S_WARNING); + res.Issues.AddIssue(issue); } return res; diff --git a/yql/essentials/public/fastcheck/linter_ut.cpp b/yql/essentials/public/fastcheck/linter_ut.cpp index 2c5c0bbd0a..c0315d20cf 100644 --- a/yql/essentials/public/fastcheck/linter_ut.cpp +++ b/yql/essentials/public/fastcheck/linter_ut.cpp @@ -115,6 +115,19 @@ Y_UNIT_TEST_SUITE(TLinterTests) { UNIT_ASSERT_VALUES_EQUAL(res.Checks[0].Issues.Size(), 0); } + Y_UNIT_TEST(GoodFormatYqlWithWinEOLInComment) { + TChecksRequest request; + request.Program = "--\r\nSELECT\n 1\n;\n\nSELECT\n 2\n;\n"; + 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_C(res.Checks[0].Success, res.Checks[0].Issues.ToString()); + UNIT_ASSERT_VALUES_EQUAL(res.Checks[0].Issues.Size(), 0); + } + Y_UNIT_TEST(UnparsedFormatYql) { TChecksRequest request; request.Program = "select1\n"; diff --git a/yql/essentials/public/fastcheck/ya.make b/yql/essentials/public/fastcheck/ya.make index 477b0dcee3..02488500a8 100644 --- a/yql/essentials/public/fastcheck/ya.make +++ b/yql/essentials/public/fastcheck/ya.make @@ -13,6 +13,7 @@ PEERDIR( yql/essentials/ast yql/essentials/core/services/mounts yql/essentials/core/user_data + yql/essentials/core/issue/protos yql/essentials/public/udf/service/exception_policy yql/essentials/sql yql/essentials/sql/pg diff --git a/yql/essentials/sql/v1/complete/antlr4/c3i.h b/yql/essentials/sql/v1/complete/antlr4/c3i.h index ca91649a54..26c7186805 100644 --- a/yql/essentials/sql/v1/complete/antlr4/c3i.h +++ b/yql/essentials/sql/v1/complete/antlr4/c3i.h @@ -10,8 +10,10 @@ namespace NSQLComplete { + // std::vector is used to prevent copying a C3 output struct TSuggestedToken { TTokenId Number; + std::vector<TTokenId> Following; }; struct TMatchedRule { diff --git a/yql/essentials/sql/v1/complete/antlr4/c3t.h b/yql/essentials/sql/v1/complete/antlr4/c3t.h index 9042937678..750da64229 100644 --- a/yql/essentials/sql/v1/complete/antlr4/c3t.h +++ b/yql/essentials/sql/v1/complete/antlr4/c3t.h @@ -13,8 +13,6 @@ #include <util/generic/string.h> #include <util/generic/vector.h> -#include <unordered_set> - namespace NSQLComplete { template <class Lexer, class Parser> @@ -67,8 +65,8 @@ namespace NSQLComplete { static TC3Candidates Converted(c3::CandidatesCollection candidates) { TC3Candidates converted; - for (const auto& [token, _] : candidates.tokens) { - converted.Tokens.emplace_back(token); + for (auto& [token, following] : candidates.tokens) { + converted.Tokens.emplace_back(token, std::move(following)); } for (auto& [rule, data] : candidates.rules) { converted.Rules.emplace_back(rule, std::move(data.ruleList)); diff --git a/yql/essentials/sql/v1/complete/bench/main.cpp b/yql/essentials/sql/v1/complete/bench/main.cpp new file mode 100644 index 0000000000..ace37c43e3 --- /dev/null +++ b/yql/essentials/sql/v1/complete/bench/main.cpp @@ -0,0 +1,40 @@ +#include <benchmark/benchmark.h> + +#include <yql/essentials/sql/v1/complete/name/static/name_service.h> +#include <yql/essentials/sql/v1/complete/name/static/ranking.h> +#include <yql/essentials/sql/v1/complete/sql_complete.h> + +#include <yql/essentials/sql/v1/lexer/antlr4_pure/lexer.h> +#include <yql/essentials/sql/v1/lexer/antlr4_pure_ansi/lexer.h> + +#include <util/generic/xrange.h> +#include <util/system/compiler.h> + +namespace NSQLComplete { + + NSQLComplete::TLexerSupplier MakePureLexerSupplier() { + NSQLTranslationV1::TLexers lexers; + lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); + lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); + return [lexers = std::move(lexers)](bool ansi) { + return NSQLTranslationV1::MakeLexer( + lexers, ansi, /* antlr4 = */ true, + NSQLTranslationV1::ELexerFlavor::Pure); + }; + } + + void BenchmarkComplete(benchmark::State& state) { + auto names = NSQLComplete::MakeDefaultNameSet(); + auto ranking = NSQLComplete::MakeDefaultRanking(); + auto service = MakeStaticNameService(std::move(names), std::move(ranking)); + auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(service)); + + for (const auto _ : state) { + auto completion = engine->Complete({"SELECT "}); + benchmark::DoNotOptimize(completion); + } + } + +} // namespace NSQLComplete + +BENCHMARK(NSQLComplete::BenchmarkComplete); diff --git a/yql/essentials/sql/v1/complete/bench/ya.make b/yql/essentials/sql/v1/complete/bench/ya.make new file mode 100644 index 0000000000..aec2f394c8 --- /dev/null +++ b/yql/essentials/sql/v1/complete/bench/ya.make @@ -0,0 +1,13 @@ +G_BENCHMARK() + +SRCS( + main.cpp +) + +PEERDIR( + yql/essentials/sql/v1/complete + yql/essentials/sql/v1/complete/name/static + yql/essentials/sql/v1/lexer +) + +END() diff --git a/yql/essentials/sql/v1/complete/name/static/default_name_set.cpp b/yql/essentials/sql/v1/complete/name/static/default_name_set.cpp deleted file mode 100644 index f04c9180a3..0000000000 --- a/yql/essentials/sql/v1/complete/name/static/default_name_set.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include "name_service.h" - -namespace NSQLComplete { - - // TODO(YQL-19747): Use some name registry - NameSet MakeDefaultNameSet() { - return { - .Types = { - "Bool", - "Int8", - "Uint8", - "Int16", - "Uint16", - "Int32", - "Uint32", - "Int64", - "Uint64", - "Float", - "Double", - "String", - "Utf8", - "Yson", - "Json", - "Uuid", - "JsonDocument", - "Date", - "Datetime", - "Timestamp", - "Interval", - "TzDate", - "TzDatetime", - "TzTimestamp", - "Date32", - "Datetime64", - "Timestamp64", - "Interval64", - "TzDate32", - "TzDatetime64", - "TzTimestamp64", - "Decimal", - "DyNumber", - }, - .Functions = { - "COALESCE", - "LENGTH", - "SUBSTRING", - "FIND", - "RFIND", - "StartsWith", - "EndsWith", - "IF", - "NANVL", - "Random", - "RandomNumber", - "RandomUuid", - "CurrentUtcDate", - "CurrentUtcDatetime", - "CurrentUtcTimestamp", - "CurrentTzDate", - "CurrentTzDatetime", - "CurrentTzTimestamp", - "AddTimezone", - "RemoveTimezone", - "Version", - "MAX_OF", - "MIN_OF", - "GREATEST", - "LEAST", - }, - }; - } - -} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/static/frequency.cpp b/yql/essentials/sql/v1/complete/name/static/frequency.cpp new file mode 100644 index 0000000000..d9c8ba9652 --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/frequency.cpp @@ -0,0 +1,87 @@ +#include "frequency.h" + +#include <library/cpp/json/json_reader.h> +#include <library/cpp/resource/resource.h> + +#include <util/charset/utf8.h> + +namespace NSQLComplete { + + constexpr struct { + struct { + const char* Parent = "parent"; + const char* Rule = "rule"; + const char* Sum = "sum"; + } Key; + struct { + const char* Type = "TYPE"; + const char* Func = "FUNC"; + const char* Module = "MODULE"; + const char* ModuleFunc = "MODULE_FUNC"; + } Parent; + } Json; + + struct TFrequencyItem { + TString Parent; + TString Rule; + size_t Sum; + + static TFrequencyItem ParseJsonMap(NJson::TJsonValue::TMapType&& json) { + return { + .Parent = json.at(Json.Key.Parent).GetStringSafe(), + .Rule = json.at(Json.Key.Rule).GetStringSafe(), + .Sum = json.at(Json.Key.Sum).GetUIntegerSafe(), + }; + } + + static TVector<TFrequencyItem> ParseListFromJsonArray(NJson::TJsonValue::TArray& json) { + TVector<TFrequencyItem> items; + items.reserve(json.size()); + for (auto& element : json) { + auto item = TFrequencyItem::ParseJsonMap(std::move(element.GetMapSafe())); + items.emplace_back(std::move(item)); + } + return items; + } + + static TVector<TFrequencyItem> ParseListFromJsonText(const TStringBuf text) { + NJson::TJsonValue json = NJson::ReadJsonFastTree(text); + return ParseListFromJsonArray(json.GetArraySafe()); + } + }; + + TFrequencyData Convert(TVector<TFrequencyItem> items) { + TFrequencyData data; + for (auto& item : items) { + if (item.Parent == Json.Parent.Type || + item.Parent == Json.Parent.Func || + item.Parent == Json.Parent.ModuleFunc || + item.Parent == Json.Parent.Module) { + item.Rule = ToLowerUTF8(item.Rule); + } + + if (item.Parent == Json.Parent.Type) { + data.Types[item.Rule] += item.Sum; + } 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 { + // Ignore, unsupported: Parser Call Stacks + } + } + return data; + } + + TFrequencyData ParseJsonFrequencyData(const TStringBuf text) { + return Convert(TFrequencyItem::ParseListFromJsonText(text)); + } + + TFrequencyData LoadFrequencyData() { + TString text; + Y_ENSURE(NResource::FindExact("rules_corr_basic.json", &text)); + return ParseJsonFrequencyData(text); + } + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/static/frequency.h b/yql/essentials/sql/v1/complete/name/static/frequency.h new file mode 100644 index 0000000000..3d128f824b --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/frequency.h @@ -0,0 +1,17 @@ +#pragma once + +#include <util/generic/string.h> +#include <util/generic/hash.h> + +namespace NSQLComplete { + + struct TFrequencyData { + THashMap<TString, size_t> Types; + THashMap<TString, size_t> Functions; + }; + + TFrequencyData ParseJsonFrequencyData(const TStringBuf text); + + TFrequencyData LoadFrequencyData(); + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp b/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp new file mode 100644 index 0000000000..dd6ee2cfbb --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/frequency_ut.cpp @@ -0,0 +1,37 @@ +#include "frequency.h" + +#include <library/cpp/testing/unittest/registar.h> + +using namespace NSQLComplete; + +Y_UNIT_TEST_SUITE(FrequencyTests) { + + Y_UNIT_TEST(FrequencyDataJson) { + TFrequencyData actual = ParseJsonFrequencyData(R"([ + {"parent":"FUNC","rule":"ABC","sum":1}, + {"parent":"TYPE","rule":"BIGINT","sum":7101}, + {"parent":"MODULE_FUNC","rule":"Compress::BZip2","sum":2}, + {"parent":"MODULE","rule":"re2","sum":3094}, + {"parent":"TRule_action_or_subquery_args","rule":"TRule_action_or_subquery_args.Block2","sum":4874480} + ])"); + + TFrequencyData expected = { + .Types = { + {"bigint", 7101}, + }, + .Functions = { + {"abc", 1}, + {"compress::bzip2", 2}, + }, + }; + + UNIT_ASSERT_VALUES_EQUAL(actual.Types, expected.Types); + UNIT_ASSERT_VALUES_EQUAL(actual.Functions, expected.Functions); + } + + Y_UNIT_TEST(FrequencyDataResouce) { + TFrequencyData data = LoadFrequencyData(); + Y_UNUSED(data); + } + +} // Y_UNIT_TEST_SUITE(FrequencyTests) 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 new file mode 100644 index 0000000000..29c303b310 --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/json_name_set.cpp @@ -0,0 +1,58 @@ +#include "name_service.h" + +#include <library/cpp/json/json_reader.h> +#include <library/cpp/resource/resource.h> + +namespace NSQLComplete { + + NJson::TJsonValue LoadJsonResource(const TStringBuf filename) { + TString text; + Y_ENSURE(NResource::FindExact(filename, &text)); + return NJson::ReadJsonFastTree(text); + } + + template <class T, class U> + T Merge(T lhs, U rhs) { + std::copy(std::begin(rhs), std::end(rhs), std::back_inserter(lhs)); + return lhs; + } + + TVector<TString> ParseNames(NJson::TJsonValue::TArray& json) { + TVector<TString> keys; + keys.reserve(json.size()); + for (auto& item : json) { + keys.emplace_back(item.GetMapSafe().at("name").GetStringSafe()); + } + return keys; + } + + TVector<TString> ParseTypes(NJson::TJsonValue json) { + return ParseNames(json.GetArraySafe()); + } + + TVector<TString> ParseFunctions(NJson::TJsonValue json) { + return ParseNames(json.GetArraySafe()); + } + + TVector<TString> ParseUfs(NJson::TJsonValue json) { + TVector<TString> names; + for (auto& [module, v] : json.GetMapSafe()) { + auto functions = ParseNames(v.GetArraySafe()); + for (auto& function : functions) { + function.prepend("::").prepend(module); + } + std::copy(std::begin(functions), std::end(functions), std::back_inserter(names)); + } + return names; + } + + NameSet MakeDefaultNameSet() { + return { + .Types = ParseTypes(LoadJsonResource("types.json")), + .Functions = Merge( + ParseFunctions(LoadJsonResource("sql_functions.json")), + ParseUfs(LoadJsonResource("udfs_basic.json"))), + }; + } + +} // namespace NSQLComplete 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 fa2bbfb360..fdb1dd4eae 100644 --- a/yql/essentials/sql/v1/complete/name/static/name_service.cpp +++ b/yql/essentials/sql/v1/complete/name/static/name_service.cpp @@ -1,18 +1,30 @@ #include "name_service.h" +#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); + }); + } + + auto NoCaseCompareLimit(size_t size) { + return [size](const TString& lhs, const TString& rhs) -> bool { + return strncasecmp(lhs.data(), rhs.data(), size) < 0; + }; + } + const TVector<TStringBuf> FilteredByPrefix( const TString& prefix, const TVector<TString>& sorted Y_LIFETIME_BOUND) { auto [first, last] = EqualRange( - std::begin(sorted), - std::end(sorted), - prefix, - [&](const TString& lhs, const TString& rhs) { - return strncasecmp(lhs.data(), rhs.data(), prefix.size()) < 0; - }); - + std::begin(sorted), std::end(sorted), + prefix, NoCaseCompareLimit(prefix.size())); return TVector<TStringBuf>(first, last); } @@ -23,55 +35,23 @@ namespace NSQLComplete { } } - size_t KindWeight(const TGenericName& name) { - return std::visit([](const auto& name) { - using T = std::decay_t<decltype(name)>; - if constexpr (std::is_same_v<T, TFunctionName>) { - return 1; - } - if constexpr (std::is_same_v<T, TTypeName>) { - return 2; - } - }, name); - } - - const TStringBuf ContentView(const TGenericName& name Y_LIFETIME_BOUND) { - return std::visit([](const auto& name) -> TStringBuf { - using T = std::decay_t<decltype(name)>; - if constexpr (std::is_base_of_v<TIndentifier, T>) { - return name.Indentifier; - } - }, name); - } - - void Sort(TVector<TGenericName>& names) { - Sort(names, [](const TGenericName& lhs, const TGenericName& rhs) { - const auto lhs_weight = KindWeight(lhs); - const auto lhs_content = ContentView(lhs); - - const auto rhs_weight = KindWeight(rhs); - const auto rhs_content = ContentView(rhs); - - return std::tie(lhs_weight, lhs_content) < - std::tie(rhs_weight, rhs_content); - }); - } - class TStaticNameService: public INameService { public: - explicit TStaticNameService(NameSet names) + explicit TStaticNameService(NameSet names, IRanking::TPtr ranking) : NameSet_(std::move(names)) + , Ranking_(std::move(ranking)) { - Sort(NameSet_.Types); - Sort(NameSet_.Functions); + Sort(NameSet_.Types, NoCaseCompare); + Sort(NameSet_.Functions, NoCaseCompare); } TFuture<TNameResponse> Lookup(TNameRequest request) override { TNameResponse response; if (request.Constraints.TypeName) { - AppendAs<TTypeName>(response.RankedNames, - FilteredByPrefix(request.Prefix, NameSet_.Types)); + AppendAs<TTypeName>( + response.RankedNames, + FilteredByPrefix(request.Prefix, NameSet_.Types)); } if (request.Constraints.Function) { @@ -80,18 +60,22 @@ namespace NSQLComplete { FilteredByPrefix(request.Prefix, NameSet_.Functions)); } - Sort(response.RankedNames); + Ranking_->CropToSortedPrefix(response.RankedNames, request.Limit); - response.RankedNames.crop(request.Limit); return NThreading::MakeFuture(std::move(response)); } private: NameSet NameSet_; + IRanking::TPtr Ranking_; }; - INameService::TPtr MakeStaticNameService(NameSet names) { - return INameService::TPtr(new TStaticNameService(std::move(names))); + INameService::TPtr MakeStaticNameService() { + return MakeStaticNameService(MakeDefaultNameSet(), MakeDefaultRanking()); + } + + INameService::TPtr MakeStaticNameService(NameSet names, IRanking::TPtr ranking) { + return INameService::TPtr(new TStaticNameService(std::move(names), std::move(ranking))); } } // namespace NSQLComplete 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 7940559803..a5c90465c8 100644 --- a/yql/essentials/sql/v1/complete/name/static/name_service.h +++ b/yql/essentials/sql/v1/complete/name/static/name_service.h @@ -1,5 +1,7 @@ #pragma once +#include "ranking.h" + #include <yql/essentials/sql/v1/complete/name/name_service.h> namespace NSQLComplete { @@ -11,6 +13,8 @@ namespace NSQLComplete { NameSet MakeDefaultNameSet(); - INameService::TPtr MakeStaticNameService(NameSet names); + INameService::TPtr MakeStaticNameService(); + + INameService::TPtr MakeStaticNameService(NameSet names, IRanking::TPtr ranking); } // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/static/ranking.cpp b/yql/essentials/sql/v1/complete/name/static/ranking.cpp new file mode 100644 index 0000000000..45e6e2b2fa --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/ranking.cpp @@ -0,0 +1,102 @@ +#include "ranking.h" + +#include "frequency.h" + +#include <yql/essentials/sql/v1/complete/name/name_service.h> + +#include <util/charset/utf8.h> + +namespace NSQLComplete { + + class TRanking: public IRanking { + private: + struct TRow { + TGenericName Name; + size_t Weight; + }; + + public: + TRanking(TFrequencyData frequency) + : Frequency_(std::move(frequency)) + { + } + + void CropToSortedPrefix(TVector<TGenericName>& names, size_t limit) override { + limit = std::min(limit, names.size()); + + TVector<TRow> rows; + rows.reserve(names.size()); + for (TGenericName& name : names) { + size_t weight = Weight(name); + rows.emplace_back(std::move(name), weight); + } + + ::PartialSort( + std::begin(rows), std::begin(rows) + limit, std::end(rows), + [this](const TRow& lhs, const TRow& rhs) { + const size_t lhs_weight = ReversedWeight(lhs.Weight); + const auto lhs_content = ContentView(lhs.Name); + + const size_t rhs_weight = ReversedWeight(rhs.Weight); + const auto rhs_content = ContentView(rhs.Name); + + return std::tie(lhs_weight, lhs_content) < + std::tie(rhs_weight, rhs_content); + }); + + names.crop(limit); + rows.crop(limit); + + for (size_t i = 0; i < limit; ++i) { + names[i] = std::move(rows[i].Name); + } + } + + private: + size_t Weight(const TGenericName& name) const { + return std::visit([this](const auto& name) -> size_t { + using T = std::decay_t<decltype(name)>; + + auto identifier = ToLowerUTF8(ContentView(name)); + + if constexpr (std::is_same_v<T, TFunctionName>) { + if (auto weight = Frequency_.Functions.FindPtr(identifier)) { + return *weight; + } + } + + if constexpr (std::is_same_v<T, TTypeName>) { + if (auto weight = Frequency_.Types.FindPtr(identifier)) { + return *weight; + } + } + + return 0; + }, name); + } + + static size_t ReversedWeight(size_t weight) { + return std::numeric_limits<size_t>::max() - weight; + } + + 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<TIndentifier, T>) { + return name.Indentifier; + } + }, name); + } + + TFrequencyData Frequency_; + }; + + IRanking::TPtr MakeDefaultRanking() { + return IRanking::TPtr(new TRanking(LoadFrequencyData())); + } + + IRanking::TPtr MakeDefaultRanking(TFrequencyData frequency) { + return IRanking::TPtr(new TRanking(frequency)); + } + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/static/ranking.h b/yql/essentials/sql/v1/complete/name/static/ranking.h new file mode 100644 index 0000000000..e24607eded --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/ranking.h @@ -0,0 +1,23 @@ +#pragma once + +#include "frequency.h" + +#include <yql/essentials/sql/v1/complete/name/name_service.h> + +#include <util/generic/hash.h> + +namespace NSQLComplete { + + class IRanking { + public: + using TPtr = THolder<IRanking>; + + virtual void CropToSortedPrefix(TVector<TGenericName>& names, size_t limit) = 0; + virtual ~IRanking() = default; + }; + + IRanking::TPtr MakeDefaultRanking(); + + IRanking::TPtr MakeDefaultRanking(TFrequencyData frequency); + +} // namespace NSQLComplete diff --git a/yql/essentials/sql/v1/complete/name/static/ranking_ut.cpp b/yql/essentials/sql/v1/complete/name/static/ranking_ut.cpp new file mode 100644 index 0000000000..fdd3659336 --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/ranking_ut.cpp @@ -0,0 +1,14 @@ +#include "ranking.h" + +#include <library/cpp/testing/unittest/registar.h> + +using namespace NSQLComplete; + +Y_UNIT_TEST_SUITE(FrequencyTests) { + + Y_UNIT_TEST(FrequencyDataIsParsable) { + TFrequencyData data = LoadFrequencyData(); + Y_UNUSED(data); + } + +} // Y_UNIT_TEST_SUITE(FrequencyTests) diff --git a/yql/essentials/sql/v1/complete/name/static/ut/ya.make b/yql/essentials/sql/v1/complete/name/static/ut/ya.make new file mode 100644 index 0000000000..60963b761b --- /dev/null +++ b/yql/essentials/sql/v1/complete/name/static/ut/ya.make @@ -0,0 +1,7 @@ +UNITTEST_FOR(yql/essentials/sql/v1/complete/name/static) + +SRCS( + frequency_ut.cpp +) + +END() diff --git a/yql/essentials/sql/v1/complete/name/static/ya.make b/yql/essentials/sql/v1/complete/name/static/ya.make index bdf97e2412..639371447a 100644 --- a/yql/essentials/sql/v1/complete/name/static/ya.make +++ b/yql/essentials/sql/v1/complete/name/static/ya.make @@ -1,12 +1,26 @@ LIBRARY() SRCS( - default_name_set.cpp + frequency.cpp + json_name_set.cpp name_service.cpp + ranking.cpp ) PEERDIR( yql/essentials/sql/v1/complete/name + yql/essentials/sql/v1/complete/text +) + +RESOURCE( + 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/rules_corr_basic.json rules_corr_basic.json ) END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/yql/essentials/sql/v1/complete/sql_complete.cpp b/yql/essentials/sql/v1/complete/sql_complete.cpp index b3ddda2b23..74ddbc0415 100644 --- a/yql/essentials/sql/v1/complete/sql_complete.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete.cpp @@ -102,6 +102,7 @@ namespace NSQLComplete { return {ECandidateKind::TypeName, std::move(name.Indentifier)}; } if constexpr (std::is_base_of_v<TFunctionName, T>) { + name.Indentifier += "("; return {ECandidateKind::FunctionName, std::move(name.Indentifier)}; } }, std::move(name))); @@ -127,11 +128,11 @@ namespace NSQLComplete { lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); - INameService::TPtr names = MakeStaticNameService(MakeDefaultNameSet()); + INameService::TPtr names = MakeStaticNameService(MakeDefaultNameSet(), MakeDefaultRanking()); return MakeSqlCompletionEngine([lexers = std::move(lexers)](bool ansi) { return NSQLTranslationV1::MakeLexer( - lexers, ansi, /* antlr4 = */ true, + lexers, ansi, /* antlr4 = */ true, NSQLTranslationV1::ELexerFlavor::Pure); }, std::move(names)); } diff --git a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp index 5f07d5c338..ade78e81a7 100644 --- a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp @@ -1,7 +1,9 @@ #include "sql_complete.h" #include <yql/essentials/sql/v1/complete/name/fallback/name_service.h> +#include <yql/essentials/sql/v1/complete/name/static/frequency.h> #include <yql/essentials/sql/v1/complete/name/static/name_service.h> +#include <yql/essentials/sql/v1/complete/name/static/ranking.h> #include <yql/essentials/sql/v1/lexer/lexer.h> #include <yql/essentials/sql/v1/lexer/antlr4_pure/lexer.h> @@ -45,18 +47,20 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); return [lexers = std::move(lexers)](bool ansi) { return NSQLTranslationV1::MakeLexer( - lexers, ansi, /* antlr4 = */ true, + lexers, ansi, /* antlr4 = */ true, NSQLTranslationV1::ELexerFlavor::Pure); }; } ISqlCompletionEngine::TPtr MakeSqlCompletionEngineUT() { TLexerSupplier lexer = MakePureLexerSupplier(); - INameService::TPtr names = MakeStaticNameService({ + NameSet names = { .Types = {"Uint64"}, .Functions = {"StartsWith"}, - }); - return MakeSqlCompletionEngine(std::move(lexer), std::move(names)); + }; + auto ranking = MakeDefaultRanking({}); + INameService::TPtr service = MakeStaticNameService(std::move(names), std::move(ranking)); + return MakeSqlCompletionEngine(std::move(lexer), std::move(service)); } TVector<TCandidate> Complete(ISqlCompletionEngine::TPtr& engine, TStringBuf prefix) { @@ -73,7 +77,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "CREATE"}, {Keyword, "DECLARE"}, {Keyword, "DEFINE"}, - {Keyword, "DELETE"}, + {Keyword, "DELETE FROM"}, {Keyword, "DISCARD"}, {Keyword, "DO"}, {Keyword, "DROP"}, @@ -95,7 +99,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "REVOKE"}, {Keyword, "ROLLBACK"}, {Keyword, "SELECT"}, - {Keyword, "SHOW"}, + {Keyword, "SHOW CREATE"}, {Keyword, "UPDATE"}, {Keyword, "UPSERT"}, {Keyword, "USE"}, @@ -113,13 +117,13 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(Alter) { TVector<TCandidate> expected = { - {Keyword, "ASYNC"}, - {Keyword, "BACKUP"}, + {Keyword, "ASYNC REPLICATION"}, + {Keyword, "BACKUP COLLECTION"}, {Keyword, "DATABASE"}, {Keyword, "EXTERNAL"}, {Keyword, "GROUP"}, {Keyword, "OBJECT"}, - {Keyword, "RESOURCE"}, + {Keyword, "RESOURCE POOL"}, {Keyword, "SEQUENCE"}, {Keyword, "TABLE"}, {Keyword, "TABLESTORE"}, @@ -134,17 +138,17 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(Create) { TVector<TCandidate> expected = { - {Keyword, "ASYNC"}, - {Keyword, "BACKUP"}, + {Keyword, "ASYNC REPLICATION"}, + {Keyword, "BACKUP COLLECTION"}, {Keyword, "EXTERNAL"}, {Keyword, "GROUP"}, {Keyword, "OBJECT"}, - {Keyword, "OR"}, - {Keyword, "RESOURCE"}, + {Keyword, "OR REPLACE"}, + {Keyword, "RESOURCE POOL"}, {Keyword, "TABLE"}, {Keyword, "TABLESTORE"}, - {Keyword, "TEMP"}, - {Keyword, "TEMPORARY"}, + {Keyword, "TEMP TABLE"}, + {Keyword, "TEMPORARY TABLE"}, {Keyword, "TOPIC"}, {Keyword, "TRANSFER"}, {Keyword, "USER"}, @@ -166,12 +170,12 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(Drop) { TVector<TCandidate> expected = { - {Keyword, "ASYNC"}, - {Keyword, "BACKUP"}, + {Keyword, "ASYNC REPLICATION"}, + {Keyword, "BACKUP COLLECTION"}, {Keyword, "EXTERNAL"}, {Keyword, "GROUP"}, {Keyword, "OBJECT"}, - {Keyword, "RESOURCE"}, + {Keyword, "RESOURCE POOL"}, {Keyword, "TABLE"}, {Keyword, "TABLESTORE"}, {Keyword, "TOPIC"}, @@ -194,7 +198,7 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "CREATE"}, {Keyword, "DECLARE"}, {Keyword, "DEFINE"}, - {Keyword, "DELETE"}, + {Keyword, "DELETE FROM"}, {Keyword, "DISCARD"}, {Keyword, "DO"}, {Keyword, "DROP"}, @@ -209,14 +213,14 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { {Keyword, "PARALLEL"}, {Keyword, "PRAGMA"}, {Keyword, "PROCESS"}, - {Keyword, "QUERY"}, + {Keyword, "QUERY PLAN"}, {Keyword, "REDUCE"}, {Keyword, "REPLACE"}, {Keyword, "RESTORE"}, {Keyword, "REVOKE"}, {Keyword, "ROLLBACK"}, {Keyword, "SELECT"}, - {Keyword, "SHOW"}, + {Keyword, "SHOW CREATE"}, {Keyword, "UPDATE"}, {Keyword, "UPSERT"}, {Keyword, "USE"}, @@ -230,21 +234,21 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(Grant) { TVector<TCandidate> expected = { {Keyword, "ALL"}, - {Keyword, "ALTER"}, + {Keyword, "ALTER SCHEMA"}, {Keyword, "CONNECT"}, {Keyword, "CREATE"}, - {Keyword, "DESCRIBE"}, + {Keyword, "DESCRIBE SCHEMA"}, {Keyword, "DROP"}, - {Keyword, "ERASE"}, + {Keyword, "ERASE ROW"}, {Keyword, "FULL"}, {Keyword, "GRANT"}, {Keyword, "INSERT"}, {Keyword, "LIST"}, {Keyword, "MANAGE"}, {Keyword, "MODIFY"}, - {Keyword, "REMOVE"}, + {Keyword, "REMOVE SCHEMA"}, {Keyword, "SELECT"}, - {Keyword, "UPDATE"}, + {Keyword, "UPDATE ROW"}, {Keyword, "USE"}, }; @@ -274,36 +278,36 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(Select) { TVector<TCandidate> expected = { {Keyword, "ALL"}, - {Keyword, "BITCAST"}, + {Keyword, "BITCAST("}, {Keyword, "CALLABLE"}, {Keyword, "CASE"}, - {Keyword, "CAST"}, + {Keyword, "CAST("}, {Keyword, "CURRENT_DATE"}, {Keyword, "CURRENT_TIME"}, {Keyword, "CURRENT_TIMESTAMP"}, - {Keyword, "DICT"}, + {Keyword, "DICT<"}, {Keyword, "DISTINCT"}, {Keyword, "EMPTY_ACTION"}, {Keyword, "ENUM"}, - {Keyword, "EXISTS"}, + {Keyword, "EXISTS("}, {Keyword, "FALSE"}, - {Keyword, "FLOW"}, - {Keyword, "JSON_EXISTS"}, - {Keyword, "JSON_QUERY"}, - {Keyword, "JSON_VALUE"}, - {Keyword, "LIST"}, + {Keyword, "FLOW<"}, + {Keyword, "JSON_EXISTS("}, + {Keyword, "JSON_QUERY("}, + {Keyword, "JSON_VALUE("}, + {Keyword, "LIST<"}, {Keyword, "NOT"}, {Keyword, "NULL"}, - {Keyword, "OPTIONAL"}, - {Keyword, "RESOURCE"}, - {Keyword, "SET"}, + {Keyword, "OPTIONAL<"}, + {Keyword, "RESOURCE<"}, + {Keyword, "SET<"}, {Keyword, "STREAM"}, {Keyword, "STRUCT"}, - {Keyword, "TAGGED"}, + {Keyword, "TAGGED<"}, {Keyword, "TRUE"}, {Keyword, "TUPLE"}, {Keyword, "VARIANT"}, - {FunctionName, "StartsWith"}, + {FunctionName, "StartsWith("}, }; auto engine = MakeSqlCompletionEngineUT(); @@ -312,35 +316,35 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(SelectWhere) { TVector<TCandidate> expected = { - {Keyword, "BITCAST"}, + {Keyword, "BITCAST("}, {Keyword, "CALLABLE"}, {Keyword, "CASE"}, - {Keyword, "CAST"}, + {Keyword, "CAST("}, {Keyword, "CURRENT_DATE"}, {Keyword, "CURRENT_TIME"}, {Keyword, "CURRENT_TIMESTAMP"}, - {Keyword, "DICT"}, + {Keyword, "DICT<"}, {Keyword, "EMPTY_ACTION"}, {Keyword, "ENUM"}, - {Keyword, "EXISTS"}, + {Keyword, "EXISTS("}, {Keyword, "FALSE"}, - {Keyword, "FLOW"}, - {Keyword, "JSON_EXISTS"}, - {Keyword, "JSON_QUERY"}, - {Keyword, "JSON_VALUE"}, - {Keyword, "LIST"}, + {Keyword, "FLOW<"}, + {Keyword, "JSON_EXISTS("}, + {Keyword, "JSON_QUERY("}, + {Keyword, "JSON_VALUE("}, + {Keyword, "LIST<"}, {Keyword, "NOT"}, {Keyword, "NULL"}, - {Keyword, "OPTIONAL"}, - {Keyword, "RESOURCE"}, - {Keyword, "SET"}, - {Keyword, "STREAM"}, + {Keyword, "OPTIONAL<"}, + {Keyword, "RESOURCE<"}, + {Keyword, "SET<"}, + {Keyword, "STREAM<"}, {Keyword, "STRUCT"}, - {Keyword, "TAGGED"}, + {Keyword, "TAGGED<"}, {Keyword, "TRUE"}, {Keyword, "TUPLE"}, {Keyword, "VARIANT"}, - {FunctionName, "StartsWith"}, + {FunctionName, "StartsWith("}, }; auto engine = MakeSqlCompletionEngineUT(); @@ -359,20 +363,20 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(TypeName) { TVector<TCandidate> expected = { - {Keyword, "CALLABLE"}, - {Keyword, "DECIMAL"}, - {Keyword, "DICT"}, - {Keyword, "ENUM"}, - {Keyword, "FLOW"}, - {Keyword, "LIST"}, - {Keyword, "OPTIONAL"}, - {Keyword, "RESOURCE"}, - {Keyword, "SET"}, - {Keyword, "STREAM"}, + {Keyword, "CALLABLE<("}, + {Keyword, "DECIMAL("}, + {Keyword, "DICT<"}, + {Keyword, "ENUM<"}, + {Keyword, "FLOW<"}, + {Keyword, "LIST<"}, + {Keyword, "OPTIONAL<"}, + {Keyword, "RESOURCE<"}, + {Keyword, "SET<"}, + {Keyword, "STREAM<"}, {Keyword, "STRUCT"}, - {Keyword, "TAGGED"}, + {Keyword, "TAGGED<"}, {Keyword, "TUPLE"}, - {Keyword, "VARIANT"}, + {Keyword, "VARIANT<"}, {TypeName, "Uint64"}, }; @@ -426,23 +430,24 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { Y_UNIT_TEST(InvalidStatementsRecovery) { auto engine = MakeSqlCompletionEngineUT(); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, "select select; ").size(), 35); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, "select select;").size(), 35); + UNIT_ASSERT_GE(Complete(engine, "select select; ").size(), 35); + UNIT_ASSERT_GE(Complete(engine, "select select;").size(), 35); UNIT_ASSERT_VALUES_EQUAL_C(Complete(engine, "!;").size(), 0, "Lexer failing"); } - Y_UNIT_TEST(DefaultNameSet) { + Y_UNIT_TEST(DefaultNameService) { auto set = MakeDefaultNameSet(); - auto service = MakeStaticNameService(std::move(set)); + auto service = MakeStaticNameService(std::move(set), MakeDefaultRanking()); auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(service)); { TVector<TCandidate> expected = { - {TypeName, "Uint16"}, - {TypeName, "Uint32"}, {TypeName, "Uint64"}, - {TypeName, "Uint8"}, + {TypeName, "Uint32"}, {TypeName, "Utf8"}, {TypeName, "Uuid"}, + {TypeName, "Uint8"}, + {TypeName, "Unit"}, + {TypeName, "Uint16"}, }; UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT OPTIONAL<U"}), expected); } @@ -469,14 +474,62 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { auto silent = MakeHolder<TSilentNameService>(); auto primary = MakeDeadlinedNameService(std::move(silent), TDuration::MilliSeconds(1)); - auto standby = MakeStaticNameService(MakeDefaultNameSet()); + auto standby = MakeStaticNameService(MakeDefaultNameSet(), MakeDefaultRanking({})); auto fallback = MakeFallbackNameService(std::move(primary), std::move(standby)); auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(fallback)); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT CAST (1 AS U"}).size(), 6); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT CAST (1 AS "}).size(), 47); - UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT "}).size(), 55); + UNIT_ASSERT_GE(Complete(engine, {"SELECT CAST (1 AS U"}).size(), 6); + UNIT_ASSERT_GE(Complete(engine, {"SELECT CAST (1 AS "}).size(), 47); + UNIT_ASSERT_GE(Complete(engine, {"SELECT "}).size(), 55); + } + + Y_UNIT_TEST(Ranking) { + TFrequencyData frequency = { + .Types = { + {"int32", 128}, + {"int64", 64}, + {"interval", 32}, + {"interval64", 32}, + }, + .Functions = { + {"min", 128}, + {"max", 64}, + {"maxof", 64}, + {"minby", 32}, + {"maxby", 32}, + }, + }; + auto service = MakeStaticNameService(MakeDefaultNameSet(), MakeDefaultRanking(frequency)); + auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(service)); + { + TVector<TCandidate> expected = { + {TypeName, "Int32"}, + {TypeName, "Int64"}, + {TypeName, "Interval"}, + {TypeName, "Interval64"}, + {TypeName, "Int16"}, + {TypeName, "Int8"}, + }; + UNIT_ASSERT_VALUES_EQUAL(Complete(engine, {"SELECT OPTIONAL<I"}), expected); + } + { + TVector<TCandidate> expectedPrefix = { + {FunctionName, "Min("}, + {FunctionName, "Max("}, + {FunctionName, "MaxOf("}, + {FunctionName, "MaxBy("}, + {FunctionName, "MinBy("}, + {FunctionName, "Math::Abs("}, + {FunctionName, "Math::Acos("}, + {FunctionName, "Math::Asin("}, + }; + + auto actualPrefix = Complete(engine, {"SELECT m"}); + actualPrefix.crop(expectedPrefix.size()); + + UNIT_ASSERT_VALUES_EQUAL(actualPrefix, expectedPrefix); + } } } // Y_UNIT_TEST_SUITE(SqlCompleteTests) diff --git a/yql/essentials/sql/v1/complete/syntax/grammar.cpp b/yql/essentials/sql/v1/complete/syntax/grammar.cpp index 4274d4bfb4..b4f64630f7 100644 --- a/yql/essentials/sql/v1/complete/syntax/grammar.cpp +++ b/yql/essentials/sql/v1/complete/syntax/grammar.cpp @@ -1,15 +1,16 @@ #include "grammar.h" -#include <yql/essentials/sql/v1/format/sql_format.h> +#include <yql/essentials/sql/v1/reflect/sql_reflect.h> namespace NSQLComplete { class TSqlGrammar: public ISqlGrammar { public: - TSqlGrammar() + TSqlGrammar(const NSQLReflect::TLexerGrammar& grammar) : Vocabulary(GetVocabularyP()) , AllTokens(ComputeAllTokens()) - , KeywordTokens(ComputeKeywordTokens()) + , KeywordTokens(ComputeKeywordTokens(grammar)) + , PunctuationTokens(ComputePunctuationTokens(grammar)) { } @@ -25,6 +26,10 @@ namespace NSQLComplete { return KeywordTokens; } + const std::unordered_set<TTokenId>& GetPunctuationTokens() const override { + return PunctuationTokens; + } + private: static const antlr4::dfa::Vocabulary* GetVocabularyP() { return &NALADefaultAntlr4::SQLv1Antlr4Parser(nullptr).getVocabulary(); @@ -42,26 +47,39 @@ namespace NSQLComplete { return allTokens; } - std::unordered_set<TTokenId> ComputeKeywordTokens() { + std::unordered_set<TTokenId> ComputeKeywordTokens( + const NSQLReflect::TLexerGrammar& grammar) { const auto& vocabulary = GetVocabulary(); - const auto keywords = NSQLFormat::GetKeywords(); auto keywordTokens = GetAllTokens(); std::erase_if(keywordTokens, [&](TTokenId token) { - return !keywords.contains(vocabulary.getSymbolicName(token)); + return !grammar.KeywordNames.contains(vocabulary.getSymbolicName(token)); }); keywordTokens.erase(TOKEN_EOF); return keywordTokens; } + std::unordered_set<TTokenId> ComputePunctuationTokens( + const NSQLReflect::TLexerGrammar& grammar) { + const auto& vocabulary = GetVocabulary(); + + auto punctuationTokens = GetAllTokens(); + std::erase_if(punctuationTokens, [&](TTokenId token) { + return !grammar.PunctuationNames.contains(vocabulary.getSymbolicName(token)); + }); + + return punctuationTokens; + } + const antlr4::dfa::Vocabulary* Vocabulary; const std::unordered_set<TTokenId> AllTokens; const std::unordered_set<TTokenId> KeywordTokens; + const std::unordered_set<TTokenId> PunctuationTokens; }; const ISqlGrammar& GetSqlGrammar() { - const static TSqlGrammar DefaultSqlGrammar{}; + const static TSqlGrammar DefaultSqlGrammar(NSQLReflect::LoadLexerGrammar()); return DefaultSqlGrammar; } diff --git a/yql/essentials/sql/v1/complete/syntax/grammar.h b/yql/essentials/sql/v1/complete/syntax/grammar.h index b6449698ea..a349bd4a3d 100644 --- a/yql/essentials/sql/v1/complete/syntax/grammar.h +++ b/yql/essentials/sql/v1/complete/syntax/grammar.h @@ -21,6 +21,7 @@ namespace NSQLComplete { virtual const antlr4::dfa::Vocabulary& GetVocabulary() const = 0; virtual const std::unordered_set<TTokenId>& GetAllTokens() const = 0; virtual const std::unordered_set<TTokenId>& GetKeywordTokens() const = 0; + virtual const std::unordered_set<TTokenId>& GetPunctuationTokens() const = 0; virtual ~ISqlGrammar() = default; }; diff --git a/yql/essentials/sql/v1/complete/syntax/local.cpp b/yql/essentials/sql/v1/complete/syntax/local.cpp index 430718a56f..cac43e5a32 100644 --- a/yql/essentials/sql/v1/complete/syntax/local.cpp +++ b/yql/essentials/sql/v1/complete/syntax/local.cpp @@ -73,6 +73,9 @@ namespace NSQLComplete { for (auto keywordToken : Grammar->GetKeywordTokens()) { ignoredTokens.erase(keywordToken); } + for (auto punctuationToken : Grammar->GetPunctuationTokens()) { + ignoredTokens.erase(punctuationToken); + } return ignoredTokens; } @@ -107,12 +110,27 @@ namespace NSQLComplete { TVector<TString> keywords; for (const auto& token : candidates.Tokens) { if (keywordTokens.contains(token.Number)) { - keywords.emplace_back(vocabulary.getDisplayName(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); + } } } 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(); + } + return name; + } + bool IsTypeNameMatched(const TC3Candidates& candidates) { return AnyOf(candidates.Rules, [&](const TMatchedRule& rule) { return IsLikelyTypeStack(rule.ParserCallStack); diff --git a/yql/essentials/sql/v1/complete/syntax/ya.make b/yql/essentials/sql/v1/complete/syntax/ya.make index a3fe973e31..24fd94a952 100644 --- a/yql/essentials/sql/v1/complete/syntax/ya.make +++ b/yql/essentials/sql/v1/complete/syntax/ya.make @@ -16,12 +16,11 @@ PEERDIR( 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 - - # TODO(YQL-19747): Replace with the sql/v1/reflect to get keywords - yql/essentials/sql/v1/format + yql/essentials/sql/v1/reflect ) END() diff --git a/yql/essentials/sql/v1/context.cpp b/yql/essentials/sql/v1/context.cpp index 569ae375eb..de2668608e 100644 --- a/yql/essentials/sql/v1/context.cpp +++ b/yql/essentials/sql/v1/context.cpp @@ -658,4 +658,16 @@ void TTranslation::AltNotImplemented(const TString& ruleName, ui32 altCase, cons Error() << ruleName << ": alternative is not implemented yet: " << AltDescription(node, altCase, descr); } +void EnumerateSqlFlags(std::function<void(std::string_view)> callback) { + for (const auto& x : CTX_PRAGMA_FIELDS) { + callback(x.first); + callback(TString("Disable") + x.first); + } + + for (const auto& x : CTX_PRAGMA_MAYBE_FIELDS) { + callback(x.first); + callback(TString("Disable") + x.first); + } +} + } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/context.h b/yql/essentials/sql/v1/context.h index b911370b3e..17e86c77c3 100644 --- a/yql/essentials/sql/v1/context.h +++ b/yql/essentials/sql/v1/context.h @@ -471,4 +471,6 @@ namespace NSQLTranslationV1 { protected: TContext& Ctx; }; + + void EnumerateSqlFlags(std::function<void(std::string_view)> callback); } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/lexer/lexer_ut.cpp b/yql/essentials/sql/v1/lexer/lexer_ut.cpp index 1ddfd04b50..549dc9d8fa 100644 --- a/yql/essentials/sql/v1/lexer/lexer_ut.cpp +++ b/yql/essentials/sql/v1/lexer/lexer_ut.cpp @@ -68,7 +68,7 @@ TVector<TString> GetTokenViews(ILexer::TPtr& lexer, const TString& query) { TString ToString(TParsedToken token) { TString& string = token.Name; - if (!AsciiEqualsIgnoreCase(token.Name, token.Content) && token.Name != "EOF") { + if (token.Name != token.Content && token.Name != "EOF") { string += "("; string += token.Content; string += ")"; @@ -306,6 +306,7 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { UNIT_ASSERT_TOKENIZED(lexer, "SELECT", "SELECT EOF"); UNIT_ASSERT_TOKENIZED(lexer, "INSERT", "INSERT EOF"); UNIT_ASSERT_TOKENIZED(lexer, "FROM", "FROM EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "from", "FROM(from) EOF"); } Y_UNIT_TEST_ON_EACH_LEXER(Punctuation) { @@ -418,8 +419,8 @@ Y_UNIT_TEST_SUITE(SQLv1Lexer) { Y_UNIT_TEST_ON_EACH_LEXER(SimpleQuery) { auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); - UNIT_ASSERT_TOKENIZED(lexer, "select 1", "SELECT WS( ) DIGITS(1) EOF"); - UNIT_ASSERT_TOKENIZED(lexer, "SELect 1", "SELECT WS( ) DIGITS(1) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "select 1", "SELECT(select) WS( ) DIGITS(1) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "SELect 1", "SELECT(SELect) WS( ) DIGITS(1) EOF"); } Y_UNIT_TEST_ON_EACH_LEXER(ComplexQuery) { diff --git a/yql/essentials/sql/v1/lexer/regex/lexer.cpp b/yql/essentials/sql/v1/lexer/regex/lexer.cpp index b0b5c2dad4..b8ca033b0c 100644 --- a/yql/essentials/sql/v1/lexer/regex/lexer.cpp +++ b/yql/essentials/sql/v1/lexer/regex/lexer.cpp @@ -109,8 +109,9 @@ namespace NSQLTranslationV1 { bool MatchKeyword(const TStringBuf prefix, TParsedTokenList& matches) { size_t count = 0; for (const auto& keyword : Grammar_.KeywordNames) { - if (AsciiEqualsIgnoreCase(prefix.substr(0, keyword.length()), keyword)) { - matches.emplace_back(keyword, keyword); + const TStringBuf content = prefix.substr(0, keyword.length()); + if (AsciiEqualsIgnoreCase(content, keyword)) { + matches.emplace_back(keyword, TString(content)); count += 1; } } diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp index 627f1e0ae3..d6b6f96bef 100644 --- a/yql/essentials/sql/v1/sql_query.cpp +++ b/yql/essentials/sql/v1/sql_query.cpp @@ -2585,6 +2585,7 @@ void TSqlQuery::AlterTableDropChangefeed(const TRule_alter_table_drop_changefeed params.DropChangefeeds.emplace_back(IdEx(node.GetRule_an_id3(), *this)); } +/// @see EnumeratePragmas too TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success) { success = false; const TString& prefix = OptIdPrefixAsStr(stmt.GetRule_opt_id_prefix_or_type2(), *this); @@ -3945,4 +3946,60 @@ bool TSqlQuery::ParseTableStoreFeatures(std::map<TString, TDeferredAtom> & resul return true; } +void EnumeratePragmas(std::function<void(std::string_view)> callback) { + callback("ClassicDivision"); + callback("StrictJoinKeyTypes"); + callback("DisableStrictJoinKeyTypes"); + callback("CheckedOps"); + callback("UnicodeLiterals"); + callback("DisableUnicodeLiterals"); + callback("WarnUntypedStringLiterals"); + callback("DisableWarnUntypedStringLiterals"); + callback("File"); + callback("FileOption"); + callback("Folder"); + callback("Udf"); + callback("Library"); + callback("Package"); + callback("PackageVersion"); + callback("RefSelect"); + callback("SampleSelect"); + callback("AllowDotInAlias"); + callback("OverrideLibrary"); + callback("DirectRead"); + callback("AutoCommit"); + callback("UseTablePrefixForEach"); + callback("PathPrefix"); + callback("GroupByLimit"); + callback("GroupByCubeLimit"); + callback("SimpleColumns"); + callback("DisableSimpleColumns"); + callback("ResultRowsLimit"); + callback("ResultSizeLimit"); + callback("RuntimeLogLevel"); + callback("Warning"); + callback("Greetings"); + callback("WarningMsg"); + callback("ErrorMsg"); + callback("AllowUnnamedColumns"); + callback("WarnUnnamedColumns"); + callback("DiscoveryMode"); + callback("EnableSystemColumns"); + callback("DqEngine"); + callback("BlockEngine"); + callback("JsonQueryReturnsJsonDocument"); + callback("DisableJsonQueryReturnsJsonDocument"); + callback("PositionalUnionAll"); + callback("PqReadBy"); + callback("DataWatermarks"); + callback("FeatureR010"); + callback("CostBasedOptimizer"); + callback("Engine"); + callback("yson.AutoConvert"); + callback("yson.Strict"); + callback("yson.DisableStrict"); + callback("yson.CastToString"); + callback("yson.DisableCastToString"); +} + } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/sql_query.h b/yql/essentials/sql/v1/sql_query.h index ea5b917f8f..52cd3c402b 100644 --- a/yql/essentials/sql/v1/sql_query.h +++ b/yql/essentials/sql/v1/sql_query.h @@ -84,4 +84,6 @@ private: const bool TopLevel; }; +void EnumeratePragmas(std::function<void(std::string_view)> callback); + } // namespace NSQLTranslationV1 diff --git a/yql/essentials/tests/s-expressions/minirun/part6/canondata/result.json b/yql/essentials/tests/s-expressions/minirun/part6/canondata/result.json index 8b0a76c9b1..181e08dbb8 100644 --- a/yql/essentials/tests/s-expressions/minirun/part6/canondata/result.json +++ b/yql/essentials/tests/s-expressions/minirun/part6/canondata/result.json @@ -1,4 +1,18 @@ { + "test.test[Blocks-ListToBlocks-default.txt-Debug]": [ + { + "checksum": "a75bba410aa5a961fb719529319ca282", + "size": 929, + "uri": "https://{canondata_backend}/1130705/45dbf61264fbf40322799d506e95dda3522ed97f/resource.tar.gz#test.test_Blocks-ListToBlocks-default.txt-Debug_/opt.yql" + } + ], + "test.test[Blocks-ListToBlocks-default.txt-Results]": [ + { + "checksum": "86b7325d54c0a9d92f4a858c1328793d", + "size": 1794, + "uri": "https://{canondata_backend}/1130705/45dbf61264fbf40322799d506e95dda3522ed97f/resource.tar.gz#test.test_Blocks-ListToBlocks-default.txt-Results_/results.txt" + } + ], "test.test[Builtins-AsOptionalType-default.txt-Debug]": [ { "checksum": "147133ffe72e4619d67cefcf20918941", 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 42fd52ccd1..2e73910948 100644 --- a/yql/essentials/tests/s-expressions/minirun/part8/canondata/result.json +++ b/yql/essentials/tests/s-expressions/minirun/part8/canondata/result.json @@ -41,6 +41,20 @@ "uri": "https://{canondata_backend}/1597364/1f3e7f25c6ddb50b091fa9aaedebacdf37917233/resource.tar.gz#test.test_Aggregation-InMemAggregateZero-default.txt-Results_/results.txt" } ], + "test.test[Blocks-ListFromBlocks-default.txt-Debug]": [ + { + "checksum": "e997dbfaff24e3885002450606790825", + "size": 928, + "uri": "https://{canondata_backend}/1937429/6dc717bd36879ce84e2fa1eb85b97eefce0733e9/resource.tar.gz#test.test_Blocks-ListFromBlocks-default.txt-Debug_/opt.yql" + } + ], + "test.test[Blocks-ListFromBlocks-default.txt-Results]": [ + { + "checksum": "86b7325d54c0a9d92f4a858c1328793d", + "size": 1794, + "uri": "https://{canondata_backend}/1937429/6dc717bd36879ce84e2fa1eb85b97eefce0733e9/resource.tar.gz#test.test_Blocks-ListFromBlocks-default.txt-Results_/results.txt" + } + ], "test.test[Builtins-ToIntegral-default.txt-Debug]": [ { "checksum": "33f569baf5940bbd79fbf635f47cc363", diff --git a/yql/essentials/tests/s-expressions/suites/Blocks/ListFromBlocks.yqls b/yql/essentials/tests/s-expressions/suites/Blocks/ListFromBlocks.yqls new file mode 100644 index 0000000000..d84d220223 --- /dev/null +++ b/yql/essentials/tests/s-expressions/suites/Blocks/ListFromBlocks.yqls @@ -0,0 +1,23 @@ +( +(let config (DataSource 'config)) +(let res_sink (DataSink 'result)) + +(let row1 (AsStruct '('"key" (Int32 '1)) '('"subkey" (Int32 '"1001")) '('"value" (String '"AAA")))) +(let row2 (AsStruct '('"key" (Int32 '2)) '('"subkey" (Int32 '"1002")) '('"value" (String '"AAB")))) +(let row3 (AsStruct '('"key" (Int32 '3)) '('"subkey" (Int32 '"1003")) '('"value" (String '"AAC")))) +(let row4 (AsStruct '('"key" (Int32 '4)) '('"subkey" (Int32 '"1004")) '('"value" (String '"AAD")))) +(let row5 (AsStruct '('"key" (Int32 '5)) '('"subkey" (Int32 '"1005")) '('"value" (String '"AAE")))) +(let table (AsList row1 row2 row3 row4 row5)) + +(let expandLambda (lambda '(item) (Member item '"key") (Member item '"subkey") (Member item '"value"))) +(let wideBlockStream (WideToBlocks (FromFlow (ExpandMap (ToFlow table) expandLambda)))) + +(let narrowLambda (lambda '(key subkey value blockLength) (AsStruct '('"key" key) '('"subkey" subkey) '('"value" value) '('"_yql_block_length" blockLength)))) +(let blockList (ForwardList (NarrowMap (ToFlow wideBlockStream) narrowLambda))) + +(let list (ListFromBlocks blockList)) + +(let world (Write! world res_sink (Key) list '('('type)))) +(let world (Commit! world res_sink)) +(return world) +) diff --git a/yql/essentials/tests/s-expressions/suites/Blocks/ListToBlocks.yqls b/yql/essentials/tests/s-expressions/suites/Blocks/ListToBlocks.yqls new file mode 100644 index 0000000000..ad596fcc38 --- /dev/null +++ b/yql/essentials/tests/s-expressions/suites/Blocks/ListToBlocks.yqls @@ -0,0 +1,23 @@ +( +(let config (DataSource 'config)) +(let res_sink (DataSink 'result)) + +(let row1 (AsStruct '('"key" (Int32 '1)) '('"subkey" (Int32 '"1001")) '('"value" (String '"AAA")))) +(let row2 (AsStruct '('"key" (Int32 '2)) '('"subkey" (Int32 '"1002")) '('"value" (String '"AAB")))) +(let row3 (AsStruct '('"key" (Int32 '3)) '('"subkey" (Int32 '"1003")) '('"value" (String '"AAC")))) +(let row4 (AsStruct '('"key" (Int32 '4)) '('"subkey" (Int32 '"1004")) '('"value" (String '"AAD")))) +(let row5 (AsStruct '('"key" (Int32 '5)) '('"subkey" (Int32 '"1005")) '('"value" (String '"AAE")))) +(let table (AsList row1 row2 row3 row4 row5)) + +(let blockList (ListToBlocks table)) + +(let expandLambda (lambda '(item) (Member item '"key") (Member item '"subkey") (Member item '"value") (Member item '"_yql_block_length"))) +(let wideStream (WideFromBlocks (FromFlow (ExpandMap (ToFlow blockList) expandLambda)))) + +(let narrowLambda (lambda '(key subkey value) (AsStruct '('"key" key) '('"subkey" subkey) '('"value" value)))) +(let list (ForwardList (NarrowMap (ToFlow wideStream) narrowLambda))) + +(let world (Write! world res_sink (Key) list '('('type)))) +(let world (Commit! world res_sink)) +(return world) +) diff --git a/yql/essentials/tools/yql_complete/ya.make b/yql/essentials/tools/yql_complete/ya.make index d745f9142a..107e6ba562 100644 --- a/yql/essentials/tools/yql_complete/ya.make +++ b/yql/essentials/tools/yql_complete/ya.make @@ -5,6 +5,8 @@ PROGRAM() PEERDIR( library/cpp/getopt yql/essentials/sql/v1/complete + yql/essentials/sql/v1/lexer/antlr4_pure + yql/essentials/sql/v1/lexer/antlr4_pure_ansi ) SRCS( diff --git a/yql/essentials/tools/yql_complete/yql_complete.cpp b/yql/essentials/tools/yql_complete/yql_complete.cpp index 289573190b..320b9f1b48 100644 --- a/yql/essentials/tools/yql_complete/yql_complete.cpp +++ b/yql/essentials/tools/yql_complete/yql_complete.cpp @@ -1,14 +1,38 @@ #include <yql/essentials/sql/v1/complete/sql_complete.h> +#include <yql/essentials/sql/v1/complete/name/static/frequency.h> +#include <yql/essentials/sql/v1/complete/name/static/ranking.h> +#include <yql/essentials/sql/v1/complete/name/static/name_service.h> + +#include <yql/essentials/sql/v1/lexer/antlr4_pure/lexer.h> +#include <yql/essentials/sql/v1/lexer/antlr4_pure_ansi/lexer.h> #include <library/cpp/getopt/last_getopt.h> #include <util/stream/file.h> +NSQLComplete::TFrequencyData LoadFrequencyDataFromFile(TString filepath) { + TString text = TUnbufferedFileInput(filepath).ReadAll(); + return NSQLComplete::ParseJsonFrequencyData(text); +} + +NSQLComplete::TLexerSupplier MakePureLexerSupplier() { + NSQLTranslationV1::TLexers lexers; + lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); + lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); + return [lexers = std::move(lexers)](bool ansi) { + return NSQLTranslationV1::MakeLexer( + lexers, ansi, /* antlr4 = */ true, + NSQLTranslationV1::ELexerFlavor::Pure); + }; +} + int Run(int argc, char* argv[]) { NLastGetopt::TOpts opts = NLastGetopt::TOpts::Default(); TString inFileName; + TString freqFileName; TMaybe<ui64> pos; opts.AddLongOption('i', "input", "input file").RequiredArgument("input").StoreResult(&inFileName); + opts.AddLongOption('f', "freq", "frequences file").StoreResult(&freqFileName); opts.AddLongOption('p', "pos", "position").StoreResult(&pos); opts.SetFreeArgsNum(0); opts.AddHelpOption(); @@ -20,9 +44,21 @@ int Run(int argc, char* argv[]) { inFile.Reset(new TUnbufferedFileInput(inFileName)); } IInputStream& in = inFile ? *inFile.Get() : Cin; - auto queryString = in.ReadAll(); - auto engine = NSQLComplete::MakeSqlCompletionEngine(); + + NSQLComplete::IRanking::TPtr ranking; + if (freqFileName.empty()) { + ranking = NSQLComplete::MakeDefaultRanking(); + } else { + auto freq = LoadFrequencyDataFromFile(freqFileName); + ranking = NSQLComplete::MakeDefaultRanking(std::move(freq)); + } + auto engine = NSQLComplete::MakeSqlCompletionEngine( + MakePureLexerSupplier(), + NSQLComplete::MakeStaticNameService( + NSQLComplete::MakeDefaultNameSet(), + std::move(ranking))); + NSQLComplete::TCompletionInput input; input.Text = queryString; if (pos) { diff --git a/yql/essentials/udfs/language/yql/test/canondata/result.json b/yql/essentials/udfs/language/yql/test/canondata/result.json index 86fc5e7c75..0fb3474a34 100644 --- a/yql/essentials/udfs/language/yql/test/canondata/result.json +++ b/yql/essentials/udfs/language/yql/test/canondata/result.json @@ -14,6 +14,11 @@ "uri": "file://test.test_ExtractInFuncs_/results.txt" } ], + "test.test[ExtractPragmas]": [ + { + "uri": "file://test.test_ExtractPragmas_/results.txt" + } + ], "test.test[ExtractTypes]": [ { "uri": "file://test.test_ExtractTypes_/results.txt" diff --git a/yql/essentials/udfs/language/yql/test/canondata/test.test_ExtractPragmas_/results.txt b/yql/essentials/udfs/language/yql/test/canondata/test.test_ExtractPragmas_/results.txt new file mode 100644 index 0000000000..fe436fa6d4 --- /dev/null +++ b/yql/essentials/udfs/language/yql/test/canondata/test.test_ExtractPragmas_/results.txt @@ -0,0 +1,87 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "q"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "pragma dq.Foo"; + [ + [ + [ + "PRAGMA"; + "dq.Foo"; + "1" + ] + ] + ] + ]; + [ + "pragma warningmsg('foo')"; + [ + [ + [ + "PRAGMA"; + "warningmsg"; + "1" + ] + ] + ] + ]; + [ + "pragma yt.Bar"; + [ + [ + [ + "PRAGMA"; + "yt.Bar"; + "1" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/language/yql/test/cases/ExtractPragmas.sql b/yql/essentials/udfs/language/yql/test/cases/ExtractPragmas.sql new file mode 100644 index 0000000000..f6caec4d6b --- /dev/null +++ b/yql/essentials/udfs/language/yql/test/cases/ExtractPragmas.sql @@ -0,0 +1,8 @@ +SELECT + q,ListSort(ListFilter(YqlLang::RuleFreq(q),($x)->($x.0 in ("PRAGMA")))) +FROM (VALUES + ("pragma warningmsg('foo')"), + ("pragma dq.Foo"), + ("pragma yt.Bar") +) AS a(q) +order by q diff --git a/yql/essentials/udfs/language/yql/yql_language_udf.cpp b/yql/essentials/udfs/language/yql/yql_language_udf.cpp index 2bcff38b6b..f5df852d81 100644 --- a/yql/essentials/udfs/language/yql/yql_language_udf.cpp +++ b/yql/essentials/udfs/language/yql/yql_language_udf.cpp @@ -45,6 +45,8 @@ public: VisitUnaryCasualSubexpr(dynamic_cast<const TRule_in_unary_casual_subexpr&>(msg)); } else if (descr == TRule_type_name_simple::GetDescriptor()) { VisitSimpleType(dynamic_cast<const TRule_type_name_simple&>(msg)); + } else if (descr == TRule_pragma_stmt::GetDescriptor()) { + VisitPragmaStmt(dynamic_cast<const TRule_pragma_stmt&>(msg)); } TStringBuf fullName = descr->full_name(); @@ -85,6 +87,12 @@ private: } } + void VisitPragmaStmt(const TRule_pragma_stmt& msg) { + const TString prefix = OptIdPrefixAsStr(msg.GetRule_opt_id_prefix_or_type2(), Translation); + const TString pragma(Id(msg.GetRule_an_id3(), Translation)); + Freqs[std::make_pair("PRAGMA", prefix.empty() ? pragma : (prefix + "." + pragma))] += 1; + } + template<typename TUnaryCasualExprRule> void VisitUnaryCasualSubexpr(const TUnaryCasualExprRule& msg) { const auto& block = msg.GetBlock1(); diff --git a/yql/essentials/utils/method_index.h b/yql/essentials/utils/method_index.h index 4668d558f3..04944049c2 100644 --- a/yql/essentials/utils/method_index.h +++ b/yql/essentials/utils/method_index.h @@ -15,11 +15,4 @@ inline size_t GetMethodIndex(Method method) { return GetMethodPtrIndex(ptr); } -template<typename Method> -inline uintptr_t GetMethodPtr(Method method) { - uintptr_t ptr; - std::memcpy(&ptr, &method, sizeof(uintptr_t)); - return ptr; -} - } diff --git a/yt/cpp/mapreduce/client/client.cpp b/yt/cpp/mapreduce/client/client.cpp index fccf3501a9..18c7a3ad5d 100644 --- a/yt/cpp/mapreduce/client/client.cpp +++ b/yt/cpp/mapreduce/client/client.cpp @@ -9,6 +9,7 @@ #include "init.h" #include "lock.h" #include "operation.h" +#include "partition_reader.h" #include "retryful_writer.h" #include "transaction.h" #include "transaction_pinger.h" @@ -420,6 +421,14 @@ TRawTableReaderPtr TClientBase::CreateRawReader( return CreateClientReader(path, format, options).Get(); } +TRawTableReaderPtr TClientBase::CreateRawTablePartitionReader( + const TString& cookie, + const TFormat& format, + const TTablePartitionReaderOptions& options) +{ + return NDetail::CreateTablePartitionReader(RawClient_, ClientRetryPolicy_->CreatePolicyForReaderRequest(), cookie, format, options); +} + TRawTableWriterPtr TClientBase::CreateRawWriter( const TRichYPath& path, const TFormat& format, @@ -883,6 +892,45 @@ THolder<TClientWriter> TClientBase::CreateClientWriter( std::move(skiffOptions)); } +::TIntrusivePtr<INodeReaderImpl> TClientBase::CreateNodeTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options) +{ + auto format = TFormat::YsonBinary(); + ApplyFormatHints<TNode>(&format, options.FormatHints_); + + return MakeIntrusive<TNodeTableReader>(CreateRawTablePartitionReader(cookie, format, options)); +} + +::TIntrusivePtr<IProtoReaderImpl> TClientBase::CreateProtoTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options, + const Message* prototype) +{ + auto descriptors = TVector<const ::google::protobuf::Descriptor*>{ + prototype->GetDescriptor(), + }; + auto format = TFormat::Protobuf(descriptors, Context_.Config->ProtobufFormatWithDescriptors); + return MakeIntrusive<TLenvalProtoTableReader>( + CreateRawTablePartitionReader(cookie, format, options), + std::move(descriptors)); +} + +::TIntrusivePtr<ISkiffRowReaderImpl> TClientBase::CreateSkiffRowTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options, + const ISkiffRowSkipperPtr& skipper, + const NSkiff::TSkiffSchemaPtr& schema) +{ + auto skiffOptions = TCreateSkiffSchemaOptions().HasRangeIndex(true); + auto resultSchema = NYT::NDetail::CreateSkiffSchema(TVector{schema}, skiffOptions); + return new TSkiffRowTableReader( + CreateRawTablePartitionReader(cookie, NYT::NDetail::CreateSkiffFormat(resultSchema), options), + resultSchema, + {skipper}, + std::move(skiffOptions)); +} + ::TIntrusivePtr<INodeWriterImpl> TClientBase::CreateNodeWriter( const TRichYPath& path, const TTableWriterOptions& options) { diff --git a/yt/cpp/mapreduce/client/client.h b/yt/cpp/mapreduce/client/client.h index ef0741044c..71d62965fc 100644 --- a/yt/cpp/mapreduce/client/client.h +++ b/yt/cpp/mapreduce/client/client.h @@ -130,6 +130,11 @@ public: const TFormat& format, const TTableReaderOptions& options) override; + TRawTableReaderPtr CreateRawTablePartitionReader( + const TString& cookie, + const TFormat& format, + const TTablePartitionReaderOptions& options) override; + TRawTableWriterPtr CreateRawWriter( const TRichYPath& path, const TFormat& format, @@ -268,6 +273,21 @@ private: const ISkiffRowSkipperPtr& skipper, const NSkiff::TSkiffSchemaPtr& schema) override; + ::TIntrusivePtr<INodeReaderImpl> CreateNodeTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options) override; + + ::TIntrusivePtr<IProtoReaderImpl> CreateProtoTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options, + const Message* prototype) override; + + ::TIntrusivePtr<ISkiffRowReaderImpl> CreateSkiffRowTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options, + const ISkiffRowSkipperPtr& skipper, + const NSkiff::TSkiffSchemaPtr& schema) override; + ::TIntrusivePtr<INodeWriterImpl> CreateNodeWriter( const TRichYPath& path, const TTableWriterOptions& options) override; diff --git a/yt/cpp/mapreduce/client/operation.cpp b/yt/cpp/mapreduce/client/operation.cpp index 9a1511025a..553b1a0777 100644 --- a/yt/cpp/mapreduce/client/operation.cpp +++ b/yt/cpp/mapreduce/client/operation.cpp @@ -854,6 +854,9 @@ void BuildCommonOperationPart( MergeNodes((*specNode)["annotations"], nirvanaContext.Annotations); } + if (baseSpec.Alias_) { + (*specNode)["alias"] = *baseSpec.Alias_; + } TString pool; if (baseSpec.Pool_) { pool = *baseSpec.Pool_; diff --git a/yt/cpp/mapreduce/client/partition_reader.cpp b/yt/cpp/mapreduce/client/partition_reader.cpp new file mode 100644 index 0000000000..1610a087cc --- /dev/null +++ b/yt/cpp/mapreduce/client/partition_reader.cpp @@ -0,0 +1,66 @@ +#include "partition_reader.h" + +#include <yt/cpp/mapreduce/common/retry_request.h> + +#include <yt/cpp/mapreduce/interface/raw_client.h> + +namespace NYT::NDetail { + +//////////////////////////////////////////////////////////////////////////////// + +class TPartitionTableReader + : public TRawTableReader +{ +public: + TPartitionTableReader(std::unique_ptr<IInputStream> input) + : Input_(std::move(input)) + { } + + bool Retry( + const TMaybe<ui32>& /*rangeIndex*/, + const TMaybe<ui64>& /*rowIndex*/, + const std::exception_ptr& /*error*/) override + { + return false; + } + + void ResetRetries() override + { } + + bool HasRangeIndices() const override + { + return false; + } + +protected: + size_t DoRead(void* buf, size_t len) override + { + return Input_->Read(buf, len); + } + +private: + std::unique_ptr<IInputStream> Input_; +}; + +//////////////////////////////////////////////////////////////////////////////// + +TRawTableReaderPtr CreateTablePartitionReader( + const IRawClientPtr& rawClient, + const IRequestRetryPolicyPtr& retryPolicy, + const TString& cookie, + const TMaybe<TFormat>& format, + const TTablePartitionReaderOptions& options) +{ + + auto stream = NDetail::RequestWithRetry<std::unique_ptr<IInputStream>>( + retryPolicy, + [&] (TMutationId /*mutationId*/) { + return rawClient->ReadTablePartition(cookie, format, options); + } + ); + return MakeIntrusive<TPartitionTableReader>(std::move(stream)); +} + +//////////////////////////////////////////////////////////////////////////////// + +} // namespace NYT::NDetail diff --git a/yt/cpp/mapreduce/client/partition_reader.h b/yt/cpp/mapreduce/client/partition_reader.h new file mode 100644 index 0000000000..19b7258ac8 --- /dev/null +++ b/yt/cpp/mapreduce/client/partition_reader.h @@ -0,0 +1,18 @@ +#include <yt/cpp/mapreduce/common/fwd.h> + +#include <yt/cpp/mapreduce/interface/io.h> + +namespace NYT::NDetail { + +//////////////////////////////////////////////////////////////////////////////// + +TRawTableReaderPtr CreateTablePartitionReader( + const IRawClientPtr& rawClient, + const IRequestRetryPolicyPtr& retryPolicy, + const TString& cookie, + const TMaybe<TFormat>& format, + const TTablePartitionReaderOptions& options); + +//////////////////////////////////////////////////////////////////////////////// + +} // namespace NYT::NDetail diff --git a/yt/cpp/mapreduce/client/ya.make b/yt/cpp/mapreduce/client/ya.make index 6ac61f8f7e..c3f4c1876d 100644 --- a/yt/cpp/mapreduce/client/ya.make +++ b/yt/cpp/mapreduce/client/ya.make @@ -17,6 +17,7 @@ SRCS( operation_preparer.cpp operation_tracker.cpp operation.cpp + partition_reader.cpp prepare_operation.cpp py_helpers.cpp retry_heavy_write_request.cpp diff --git a/yt/cpp/mapreduce/http_client/raw_client.cpp b/yt/cpp/mapreduce/http_client/raw_client.cpp index 734282c2cf..ab8fbf5821 100644 --- a/yt/cpp/mapreduce/http_client/raw_client.cpp +++ b/yt/cpp/mapreduce/http_client/raw_client.cpp @@ -755,6 +755,24 @@ std::unique_ptr<IInputStream> THttpRawClient::ReadTable( return std::make_unique<NHttpClient::THttpResponseStream>(std::move(responseInfo)); } +std::unique_ptr<IInputStream> THttpRawClient::ReadTablePartition( + const TString& cookie, + const TMaybe<TFormat>& format, + const TTablePartitionReaderOptions& options) +{ + TMutationId mutationId; + THttpHeader header("GET", "api/v4/read_table_partition", /*isApi*/ false); + header.SetOutputFormat(format); + header.SetResponseCompression(ToString(Context_.Config->AcceptEncoding)); + auto params = NRawClient::SerializeParamsForReadTablePartition(cookie, options); + header.MergeParameters(params); + + TRequestConfig config; + config.IsHeavy = true; + auto responseInfo = RequestWithoutRetry(Context_, mutationId, header, /*body*/ {}, config); + return std::make_unique<NHttpClient::THttpResponseStream>(std::move(responseInfo)); +} + std::unique_ptr<IInputStream> THttpRawClient::ReadBlobTable( const TTransactionId& transactionId, const TRichYPath& path, diff --git a/yt/cpp/mapreduce/http_client/raw_client.h b/yt/cpp/mapreduce/http_client/raw_client.h index d292688978..adcec39884 100644 --- a/yt/cpp/mapreduce/http_client/raw_client.h +++ b/yt/cpp/mapreduce/http_client/raw_client.h @@ -280,6 +280,11 @@ public: const TMaybe<TFormat>& format, const TTableReaderOptions& options = {}) override; + std::unique_ptr<IInputStream> ReadTablePartition( + const TString& cookie, + const TMaybe<TFormat>& format, + const TTablePartitionReaderOptions& options = {}) override; + std::unique_ptr<IInputStream> ReadBlobTable( const TTransactionId& transactionId, const TRichYPath& path, diff --git a/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp b/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp index 081845be5e..8487a1de8f 100644 --- a/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp +++ b/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp @@ -668,6 +668,13 @@ TNode SerializeParamsForReadTable( return result; } +TNode SerializeParamsForReadTablePartition(const TString& cookie, const TTablePartitionReaderOptions& /*options*/) +{ + TNode node; + node["cookie"] = cookie; + return node; +} + TNode SerializeParamsForReadBlobTable( const TTransactionId& transactionId, const TRichYPath& path, @@ -815,6 +822,7 @@ TNode SerializeParamsForGetTablePartitions( result["max_partition_count"] = *options.MaxPartitionCount_; } result["adjust_data_weight_per_partition"] = options.AdjustDataWeightPerPartition_; + result["enable_cookies"] = options.EnableCookies_; return result; } diff --git a/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.h b/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.h index 5dc2045bc5..90c8dd8e24 100644 --- a/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.h +++ b/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.h @@ -159,6 +159,10 @@ TNode SerializeParamsForReadTable( const TTransactionId& transactionId, const TTableReaderOptions& options); +TNode SerializeParamsForReadTablePartition( + const TString& cookie, + const TTablePartitionReaderOptions& options); + TNode SerializeParamsForReadBlobTable( const TTransactionId& transactionId, const TRichYPath& path, diff --git a/yt/cpp/mapreduce/interface/client_method_options.h b/yt/cpp/mapreduce/interface/client_method_options.h index d8024a7e73..4bb2df112c 100644 --- a/yt/cpp/mapreduce/interface/client_method_options.h +++ b/yt/cpp/mapreduce/interface/client_method_options.h @@ -675,7 +675,7 @@ struct TTableReaderOptions FLUENT_FIELD_DEFAULT(size_t, SizeLimit, 4 << 20); /// - /// @brief Allows to fine tune format that is used for reading tables. + /// @brief Allows fine-tuning of the format used for reading tables. /// /// Has no effect when used with raw-reader. FLUENT_FIELD_OPTION(TFormatHints, FormatHints); @@ -686,6 +686,20 @@ struct TTableReaderOptions FLUENT_FIELD_DEFAULT(TControlAttributes, ControlAttributes, TControlAttributes()); }; +/// Options for @ref NYT::IClient::CreatePartitionTableReader +struct TTablePartitionReaderOptions +{ + /// @cond Doxygen_Suppress + using TSelf = TTablePartitionReaderOptions; + /// @endcond + + /// + /// @brief Allows fine-tuning of the format used for reading tables. + /// + /// Has no effect when used with raw-reader. + FLUENT_FIELD_OPTION(TFormatHints, FormatHints); +}; + /// Options for @ref NYT::IClient::CreateTableWriter struct TTableWriterOptions : public TIOOptions<TTableWriterOptions> @@ -1471,6 +1485,12 @@ struct TGetTablePartitionsOptions /// /// |True| by default. FLUENT_FIELD_DEFAULT(bool, AdjustDataWeightPerPartition, true); + + /// + /// @brief Enable partition cookies in response. + /// + /// Partition cookies allow to efficiently read partitions using @ref NYT::IClientBase::CreateTablePartitionReader method. + FLUENT_FIELD_DEFAULT(bool, EnableCookies, false); }; /// diff --git a/yt/cpp/mapreduce/interface/common.h b/yt/cpp/mapreduce/interface/common.h index 9752e15822..82556fb08a 100644 --- a/yt/cpp/mapreduce/interface/common.h +++ b/yt/cpp/mapreduce/interface/common.h @@ -1248,6 +1248,9 @@ struct TMultiTablePartition /// Aggregate statistics of all the table ranges in the partition. TStatistics AggregateStatistics; + + /// Partition cookie that can be passed to @ref NYT::IClientBase::CreatePartitionReader + TMaybe<TString> Cookie; }; /// Table partitions from GetTablePartitions command. diff --git a/yt/cpp/mapreduce/interface/io-inl.h b/yt/cpp/mapreduce/interface/io-inl.h index 056910f785..ba53b874b9 100644 --- a/yt/cpp/mapreduce/interface/io-inl.h +++ b/yt/cpp/mapreduce/interface/io-inl.h @@ -2,6 +2,7 @@ #ifndef IO_INL_H_ #error "Direct inclusion of this file is not allowed, use io.h" +#include "io.h" // For the sake of sane code completion. #endif #undef IO_INL_H_ @@ -632,6 +633,30 @@ inline TTableReaderPtr<T> IIOClient::CreateTableReader( } } +template <> +inline TTableReaderPtr<TNode> IIOClient::CreateTablePartitionReader<TNode>( + const TString& cookie, const TTablePartitionReaderOptions& options) +{ + return new TTableReader<TNode>(CreateNodeTablePartitionReader(cookie, options)); +} + +template <class T> +inline TTableReaderPtr<T> IIOClient::CreateTablePartitionReader( + const TString& path, const TTablePartitionReaderOptions& options) +{ + if constexpr (TIsBaseOf<Message, T>::Value) { + T prototype; + return new TTableReader<T>(CreateProtoReader(path, options, &prototype)); + } else if constexpr (TIsSkiffRow<T>::value) { + const auto& hints = options.FormatHints_ ? options.FormatHints_->SkiffRowHints_ : Nothing(); + auto schema = GetSkiffSchema<T>(hints); + auto skipper = CreateSkiffSkipper<T>(hints); + return new TTableReader<T>(CreateSkiffRowReader(path, options, skipper, schema), hints); + } else { + static_assert(TDependentFalse<T>, "Unsupported type for table reader"); + } +} + //////////////////////////////////////////////////////////////////////////////// template <typename T> diff --git a/yt/cpp/mapreduce/interface/io.h b/yt/cpp/mapreduce/interface/io.h index becde0def2..aadbca3298 100644 --- a/yt/cpp/mapreduce/interface/io.h +++ b/yt/cpp/mapreduce/interface/io.h @@ -331,7 +331,7 @@ private: /// /// @see @ref NYT::TTableReaderIterator template <class T> -TTableReaderIterator<T> begin(TTableReader<T>& reader) +TTableReaderIterator<T> begin(TTableReader<T>& reader) // NOLINT { return TTableReaderIterator<T>(&reader); } @@ -340,7 +340,7 @@ TTableReaderIterator<T> begin(TTableReader<T>& reader) /// /// @see @ref NYT::TTableReaderIterator template <class T> -TTableReaderIterator<T> end(TTableReader<T>&) +TTableReaderIterator<T> end(TTableReader<T>&) // NOLINT { return TTableReaderIterator<T>(nullptr); } @@ -460,6 +460,30 @@ public: const TTableWriterOptions& options = TTableWriterOptions()) = 0; /// + /// @brief Create raw reader of table partition + /// + /// Reader returns unparsed data in specified format. + /// + /// @param cookie Partition cookie received from @ref NYT::IClientBase::GetTablesPartitions. + /// @param format Format description. + /// @param options Additional options. + virtual TRawTableReaderPtr CreateRawTablePartitionReader( + const TString& cookie, + const TFormat& format, + const TTablePartitionReaderOptions& options = {}) = 0; + + /// + /// @brief Create reader of table partition + /// + /// @param cookie Partition cookie received from @ref NYT::IClientBase::GetTablesPartitions. + /// @param format Format description. + /// @param options Additional options. + template <class T> + TTableReaderPtr<T> CreateTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options = {}); + + /// /// @brief Create a reader for [blob table](https://docs.yandex-team.ru/docs/yt/description/storage/blobtables) at `path`. /// /// @param path Blob table path. @@ -497,6 +521,20 @@ private: const ISkiffRowSkipperPtr& skipper, const NSkiff::TSkiffSchemaPtr& schema) = 0; + virtual ::TIntrusivePtr<INodeReaderImpl> CreateNodeTablePartitionReader( + const TString& cookie, const TTablePartitionReaderOptions& options) = 0; + + virtual ::TIntrusivePtr<IProtoReaderImpl> CreateProtoTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options, + const ::google::protobuf::Message* prototype) = 0; + + virtual ::TIntrusivePtr<ISkiffRowReaderImpl> CreateSkiffRowTablePartitionReader( + const TString& cookie, + const TTablePartitionReaderOptions& options, + const ISkiffRowSkipperPtr& skipper, + const NSkiff::TSkiffSchemaPtr& schema) = 0; + virtual ::TIntrusivePtr<INodeWriterImpl> CreateNodeWriter( const TRichYPath& path, const TTableWriterOptions& options) = 0; diff --git a/yt/cpp/mapreduce/interface/operation.h b/yt/cpp/mapreduce/interface/operation.h index 869c8f9c0b..50c694b5b0 100644 --- a/yt/cpp/mapreduce/interface/operation.h +++ b/yt/cpp/mapreduce/interface/operation.h @@ -523,6 +523,9 @@ struct TOperationSpecBase /// If operation doesn't finish in time it will be aborted. FLUENT_FIELD_OPTION(TDuration, TimeLimit); + /// @brief Alias for searching for an operation in the future. + FLUENT_FIELD_OPTION(TString, Alias); + /// @brief Title to be shown in web interface. FLUENT_FIELD_OPTION(TString, Title); diff --git a/yt/cpp/mapreduce/interface/raw_client.h b/yt/cpp/mapreduce/interface/raw_client.h index 24f8de61b6..23819357db 100644 --- a/yt/cpp/mapreduce/interface/raw_client.h +++ b/yt/cpp/mapreduce/interface/raw_client.h @@ -282,6 +282,11 @@ public: const TMaybe<TFormat>& format, const TTableReaderOptions& options = {}) = 0; + virtual std::unique_ptr<IInputStream> ReadTablePartition( + const TString& cookie, + const TMaybe<TFormat>& format, + const TTablePartitionReaderOptions& options = {}) = 0; + virtual std::unique_ptr<IInputStream> ReadBlobTable( const TTransactionId& transactionId, const TRichYPath& path, diff --git a/yt/cpp/mapreduce/interface/serialize.cpp b/yt/cpp/mapreduce/interface/serialize.cpp index 5ea65b62f1..64f38e7d0a 100644 --- a/yt/cpp/mapreduce/interface/serialize.cpp +++ b/yt/cpp/mapreduce/interface/serialize.cpp @@ -537,6 +537,7 @@ void Deserialize(TMultiTablePartition& partition, const TNode& node) const auto& nodeMap = node.AsMap(); DESERIALIZE_ITEM("table_ranges", partition.TableRanges); DESERIALIZE_ITEM("aggregate_statistics", partition.AggregateStatistics); + DESERIALIZE_ITEM("cookie", partition.Cookie) } void Deserialize(TMultiTablePartitions& partitions, const TNode& node) diff --git a/yt/yql/providers/yt/common/yql_yt_settings.cpp b/yt/yql/providers/yt/common/yql_yt_settings.cpp index e8f019ea16..27d6a032a1 100644 --- a/yt/yql/providers/yt/common/yql_yt_settings.cpp +++ b/yt/yql/providers/yt/common/yql_yt_settings.cpp @@ -366,6 +366,13 @@ TYtConfiguration::TYtConfiguration(TTypeAnnotationContext& typeCtx) OperationSpec[cluster] = spec; HybridDqExecution = false; }); + REGISTER_SETTING(*this, FmrOperationSpec) + .Parser([](const TString& v) { return NYT::NodeFromYsonString(v, ::NYson::EYsonType::Node); }) + .Validator([] (const TString&, const NYT::TNode& value) { + if (!value.IsMap()) { + throw yexception() << "Expected yson map, but got " << value.GetType(); + } + }); REGISTER_SETTING(*this, Annotations) .Parser([](const TString& v) { return NYT::NodeFromYsonString(v); }) .Validator([] (const TString&, const NYT::TNode& value) { diff --git a/yt/yql/providers/yt/common/yql_yt_settings.h b/yt/yql/providers/yt/common/yql_yt_settings.h index e2dd916629..5a291b5dab 100644 --- a/yt/yql/providers/yt/common/yql_yt_settings.h +++ b/yt/yql/providers/yt/common/yql_yt_settings.h @@ -183,6 +183,7 @@ struct TYtSettings { NCommon::TConfSetting<TString, true> DockerImage; NCommon::TConfSetting<NYT::TNode, true> JobEnv; NCommon::TConfSetting<NYT::TNode, true> OperationSpec; + NCommon::TConfSetting<NYT::TNode, true> FmrOperationSpec; NCommon::TConfSetting<NYT::TNode, true> Annotations; NCommon::TConfSetting<NYT::TNode, true> StartedBy; NCommon::TConfSetting<NYT::TNode, true> Description; diff --git a/yt/yql/providers/yt/fmr/coordinator/impl/ya.make b/yt/yql/providers/yt/fmr/coordinator/impl/ya.make index 11d323d128..5a16fbe0ce 100644 --- a/yt/yql/providers/yt/fmr/coordinator/impl/ya.make +++ b/yt/yql/providers/yt/fmr/coordinator/impl/ya.make @@ -7,6 +7,7 @@ SRCS( PEERDIR( library/cpp/random_provider library/cpp/threading/future + library/cpp/yson/node yt/yql/providers/yt/fmr/coordinator/interface yql/essentials/utils/log yql/essentials/utils diff --git a/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.cpp b/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.cpp index 9c14f30403..1831e7f1ac 100644 --- a/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.cpp +++ b/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.cpp @@ -64,7 +64,12 @@ public: TString taskId = GenerateId(); auto taskParams = MakeDefaultTaskParamsFromOperation(request.OperationParams); - TTask::TPtr createdTask = MakeTask(request.TaskType, taskId, taskParams, request.SessionId, request.ClusterConnection); + TMaybe<NYT::TNode> jobSettings = Nothing(); + auto fmrOperationSpec = request.FmrOperationSpec; + if (fmrOperationSpec && fmrOperationSpec->IsMap() && fmrOperationSpec->HasKey("job_settings")) { + jobSettings = (*fmrOperationSpec)["job_settings"]; + } + TTask::TPtr createdTask = MakeTask(request.TaskType, taskId, taskParams, request.SessionId, request.ClusterConnection, jobSettings); Tasks_[taskId] = TCoordinatorTaskInfo{.Task = createdTask, .TaskStatus = ETaskStatus::Accepted, .OperationId = operationId}; diff --git a/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.h b/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.h index d8a526096a..b3c06dbe5c 100644 --- a/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.h +++ b/yt/yql/providers/yt/fmr/coordinator/impl/yql_yt_coordinator_impl.h @@ -1,6 +1,7 @@ #pragma once #include <library/cpp/random_provider/random_provider.h> +#include <library/cpp/yson/node/node.h> #include <util/system/mutex.h> #include <util/system/guard.h> #include <util/generic/queue.h> diff --git a/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/ya.make b/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/ya.make index 62df195306..cd29edc85d 100644 --- a/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/ya.make +++ b/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/ya.make @@ -5,6 +5,7 @@ SRCS( ) PEERDIR( + library/cpp/yson/node yt/yql/providers/yt/fmr/coordinator/interface yt/yql/providers/yt/fmr/proto yt/yql/providers/yt/fmr/request_options/proto_helpers diff --git a/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/yql_yt_coordinator_proto_helpers.cpp b/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/yql_yt_coordinator_proto_helpers.cpp index fbb4a641a0..8c244c3f1a 100644 --- a/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/yql_yt_coordinator_proto_helpers.cpp +++ b/yt/yql/providers/yt/fmr/coordinator/interface/proto_helpers/yql_yt_coordinator_proto_helpers.cpp @@ -1,4 +1,5 @@ #include "yql_yt_coordinator_proto_helpers.h" +#include <library/cpp/yson/node/node_io.h> namespace NYql::NFmr { @@ -71,6 +72,9 @@ NProto::TStartOperationRequest StartOperationRequestToProto(const TStartOperatio protoStartOperationRequest.SetNumRetries(startOperationRequest.NumRetries); auto protoClusterConnection = ClusterConnectionToProto(startOperationRequest.ClusterConnection); protoStartOperationRequest.MutableClusterConnection()->Swap(&protoClusterConnection); + if (startOperationRequest.FmrOperationSpec) { + protoStartOperationRequest.SetFmrOperationSpec(NYT::NodeToYsonString(*startOperationRequest.FmrOperationSpec)); + } return protoStartOperationRequest; } @@ -84,6 +88,9 @@ TStartOperationRequest StartOperationRequestFromProto(const NProto::TStartOperat } startOperationRequest.NumRetries = protoStartOperationRequest.GetNumRetries(); startOperationRequest.ClusterConnection = ClusterConnectionFromProto(protoStartOperationRequest.GetClusterConnection()); + if (protoStartOperationRequest.HasFmrOperationSpec()) { + startOperationRequest.FmrOperationSpec = NYT::NodeFromYsonString(protoStartOperationRequest.GetFmrOperationSpec()); + } return startOperationRequest; } diff --git a/yt/yql/providers/yt/fmr/coordinator/interface/yql_yt_coordinator.h b/yt/yql/providers/yt/fmr/coordinator/interface/yql_yt_coordinator.h index 15a06b2d59..15ecd6c97a 100644 --- a/yt/yql/providers/yt/fmr/coordinator/interface/yql_yt_coordinator.h +++ b/yt/yql/providers/yt/fmr/coordinator/interface/yql_yt_coordinator.h @@ -25,7 +25,8 @@ struct TStartOperationRequest { TString SessionId; TMaybe<TString> IdempotencyKey = Nothing(); ui32 NumRetries = 1; // Not supported yet - TClusterConnection ClusterConnection = {}; + TClusterConnection ClusterConnection = {}; // TODO - change to map + TMaybe<NYT::TNode> FmrOperationSpec = Nothing(); }; struct TStartOperationResponse { diff --git a/yt/yql/providers/yt/fmr/job/impl/ut/yql_yt_job_ut.cpp b/yt/yql/providers/yt/fmr/job/impl/ut/yql_yt_job_ut.cpp index ac3a9263c6..7b17dee907 100644 --- a/yt/yql/providers/yt/fmr/job/impl/ut/yql_yt_job_ut.cpp +++ b/yt/yql/providers/yt/fmr/job/impl/ut/yql_yt_job_ut.cpp @@ -156,7 +156,7 @@ Y_UNIT_TEST_SUITE(TaskRunTests) { TYtTableRef output = TYtTableRef("test_cluster", "test_path"); TUploadTaskParams params = TUploadTaskParams(input, output); - TTask::TPtr task = MakeTask(ETaskType::Upload, "test_task_id", params, "test_session_id"); + TTask::TPtr task = MakeTask(ETaskType::Upload, "test_task_id", params, "test_session_id", TClusterConnection()); auto key = GetTableDataServiceKey(input.TableId, "test_part_id", 0); tableDataServicePtr->Put(key, GetBinaryYson(TableContent_1)); ETaskStatus status = RunJob(task, tableDataServicePtr, ytService, cancelFlag).TaskStatus; @@ -178,7 +178,7 @@ Y_UNIT_TEST_SUITE(TaskRunTests) { TYtTableRef output = TYtTableRef("test_cluster", "test_path"); TUploadTaskParams params = TUploadTaskParams(input, output); - TTask::TPtr task = MakeTask(ETaskType::Upload, "test_task_id", params, "test_session_id"); + TTask::TPtr task = MakeTask(ETaskType::Upload, "test_task_id", params, "test_session_id", TClusterConnection()); // No tables in tableDataService ETaskStatus status = RunJob(task, tableDataServicePtr, ytService, cancelFlag).TaskStatus; @@ -205,7 +205,7 @@ Y_UNIT_TEST_SUITE(TaskRunTests) { auto params = TMergeTaskParams(inputs, output); auto tableDataServiceExpectedOutputKey = GetTableDataServiceKey(output.TableId, output.PartId, 0); - TTask::TPtr task = MakeTask(ETaskType::Upload, "test_task_id", params, "test_session_id"); + TTask::TPtr task = MakeTask(ETaskType::Merge, "test_task_id", params, "test_session_id", TClusterConnection()); auto key_1 = GetTableDataServiceKey(input_1.TableId, "test_part_id", 0); auto key_3 = GetTableDataServiceKey(input_3.TableId, "test_part_id", 0); @@ -239,7 +239,7 @@ Y_UNIT_TEST_SUITE(TaskRunTests) { auto params = TMergeTaskParams(inputs, output); auto tableDataServiceExpectedOutputKey = GetTableDataServiceKey(output.TableId, output.PartId, 0); - TTask::TPtr task = MakeTask(ETaskType::Upload, "test_task_id", params, "test_session_id"); + TTask::TPtr task = MakeTask(ETaskType::Merge, "test_task_id", params, "test_session_id", TClusterConnection()); auto key_1 = GetTableDataServiceKey(input_1.TableId, "test_part_id", 0); auto key_3 = GetTableDataServiceKey(input_3.TableId, "test_part_id", 0); diff --git a/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.cpp b/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.cpp index aa3d0b5112..c8da1df480 100644 --- a/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.cpp +++ b/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.cpp @@ -16,15 +16,12 @@ namespace NYql::NFmr { class TFmrJob: public IFmrJob { public: - TFmrJob(ITableDataService::TPtr tableDataService, IYtService::TPtr ytService, std::shared_ptr<std::atomic<bool>> cancelFlag, const TFmrJobSettings& settings) + TFmrJob(ITableDataService::TPtr tableDataService, IYtService::TPtr ytService, std::shared_ptr<std::atomic<bool>> cancelFlag, const TMaybe<TFmrJobSettings>& settings) : TableDataService_(tableDataService), YtService_(ytService), CancelFlag_(cancelFlag), Settings_(settings) { } - virtual std::variant<TError, TStatistics> Download( - const TDownloadTaskParams& params, - const TClusterConnection& clusterConnection - ) override { + virtual std::variant<TError, TStatistics> Download(const TDownloadTaskParams& params, const TClusterConnection& clusterConnection) override { try { const auto ytTable = params.Input; const auto cluster = params.Input.Cluster; @@ -36,9 +33,9 @@ public: YQL_CLOG(DEBUG, FastMapReduce) << "Downloading " << cluster << '.' << path; auto ytTableReader = YtService_->MakeReader(ytTable, clusterConnection); // TODO - pass YtReader settings from Gateway - auto tableDataServiceWriter = TFmrTableDataServiceWriter(tableId, partId, TableDataService_, Settings_.FmrTableDataServiceWriterSettings); + auto tableDataServiceWriter = TFmrTableDataServiceWriter(tableId, partId, TableDataService_, GetFmrTableDataServiceWriterSettings()); - ParseRecords(*ytTableReader, tableDataServiceWriter, Settings_.ParseRecordSettings.BlockCount, Settings_.ParseRecordSettings.BlockSize); + ParseRecords(*ytTableReader, tableDataServiceWriter, GetParseRecordSettings().BlockCount, GetParseRecordSettings().BlockSize); tableDataServiceWriter.Flush(); TTableStats stats = tableDataServiceWriter.GetStats(); @@ -59,9 +56,9 @@ public: YQL_CLOG(DEBUG, FastMapReduce) << "Uploading " << cluster << '.' << path; - auto tableDataServiceReader = TFmrTableDataServiceReader(tableId, tableRanges, TableDataService_, Settings_.FmrTableDataServiceReaderSettings); - auto ytTableWriter = YtService_->MakeWriter(ytTable, clusterConnection); // TODO - pass YtReader settings from Gateway - ParseRecords(tableDataServiceReader, *ytTableWriter, Settings_.ParseRecordSettings.BlockCount, Settings_.ParseRecordSettings.BlockSize); + auto tableDataServiceReader = TFmrTableDataServiceReader(tableId, tableRanges, TableDataService_, GetFmrTableDataServiceReaderSettings()); + auto ytTableWriter = YtService_->MakeWriter(ytTable, clusterConnection); + ParseRecords(tableDataServiceReader, *ytTableWriter, GetParseRecordSettings().BlockCount, GetParseRecordSettings().BlockSize); ytTableWriter->Flush(); return TStatistics(); @@ -71,6 +68,7 @@ public: } virtual std::variant<TError, TStatistics> Merge(const TMergeTaskParams& params, const TClusterConnection& clusterConnection) override { + // TODO - unordered_map<ClusterConnection> // расширить таск парамс. добавить туда мету try { const auto inputs = params.Input; @@ -78,13 +76,13 @@ public: YQL_CLOG(DEBUG, FastMapReduce) << "Merging " << inputs.size() << " inputs"; - auto tableDataServiceWriter = TFmrTableDataServiceWriter(output.TableId, output.PartId, TableDataService_, Settings_.FmrTableDataServiceWriterSettings); + auto tableDataServiceWriter = TFmrTableDataServiceWriter(output.TableId, output.PartId, TableDataService_, GetFmrTableDataServiceWriterSettings()); for (const auto& inputTableRef : inputs) { if (CancelFlag_->load()) { return TError("Canceled"); } auto inputTableReader = GetTableInputStream(inputTableRef, clusterConnection); - ParseRecords(*inputTableReader, tableDataServiceWriter, Settings_.ParseRecordSettings.BlockCount, Settings_.ParseRecordSettings.BlockSize); + ParseRecords(*inputTableReader, tableDataServiceWriter, GetParseRecordSettings().BlockCount, GetParseRecordSettings().BlockSize); } tableDataServiceWriter.Flush(); return TStatistics({{output, tableDataServiceWriter.GetStats()}}); @@ -101,17 +99,29 @@ private: if (ytTable) { return YtService_->MakeReader(*ytTable, clusterConnection); // TODO - pass YtReader settings from Gateway } else if (fmrTable) { - return MakeIntrusive<TFmrTableDataServiceReader>(fmrTable->TableId, fmrTable->TableRanges, TableDataService_, Settings_.FmrTableDataServiceReaderSettings); + return MakeIntrusive<TFmrTableDataServiceReader>(fmrTable->TableId, fmrTable->TableRanges, TableDataService_, GetFmrTableDataServiceReaderSettings()); } else { ythrow yexception() << "Unsupported table type"; } } + TParseRecordSettings GetParseRecordSettings() { + return Settings_ ? Settings_->ParseRecordSettings : TParseRecordSettings(); + } + + TFmrTableDataServiceReaderSettings GetFmrTableDataServiceReaderSettings() { + return Settings_ ? Settings_->FmrTableDataServiceReaderSettings : TFmrTableDataServiceReaderSettings(); + } + + TFmrTableDataServiceWriterSettings GetFmrTableDataServiceWriterSettings() { + return Settings_ ? Settings_->FmrTableDataServiceWriterSettings : TFmrTableDataServiceWriterSettings(); + } + private: ITableDataService::TPtr TableDataService_; IYtService::TPtr YtService_; std::shared_ptr<std::atomic<bool>> CancelFlag_; - const TFmrJobSettings Settings_; + TMaybe<TFmrJobSettings> Settings_; }; IFmrJob::TPtr MakeFmrJob( @@ -128,9 +138,10 @@ TJobResult RunJob( ITableDataService::TPtr tableDataService, IYtService::TPtr ytService, std::shared_ptr<std::atomic<bool>> cancelFlag, - const TFmrJobSettings& settings + const TMaybe<TFmrJobSettings>& settings ) { - IFmrJob::TPtr job = MakeFmrJob(tableDataService, ytService, cancelFlag, settings); + TFmrJobSettings jobSettings = settings ? *settings : GetJobSettingsFromTask(task); + IFmrJob::TPtr job = MakeFmrJob(tableDataService, ytService, cancelFlag, jobSettings); auto processTask = [job, task] (auto&& taskParams) { using T = std::decay_t<decltype(taskParams)>; @@ -160,4 +171,36 @@ TJobResult RunJob( return {ETaskStatus::Completed, *statistics}; }; +TFmrJobSettings GetJobSettingsFromTask(TTask::TPtr task) { + if (!task->JobSettings) { + return TFmrJobSettings(); + } + auto jobSettings = *task->JobSettings; + YQL_ENSURE(jobSettings.IsMap()); + TFmrJobSettings resultSettings{}; + if (jobSettings.HasKey("parse_record_settings")) { + auto& parseRecordSettings = jobSettings["parse_record_settings"]; + if (parseRecordSettings.HasKey("block_count")) { + resultSettings.ParseRecordSettings.BlockCount = parseRecordSettings["block_count"].AsInt64(); + } + if (parseRecordSettings.HasKey("block_size")) { + resultSettings.ParseRecordSettings.BlockSize = parseRecordSettings["block_size"].AsInt64(); + // TODO - support different formats (B, MB, ...) + } + } + if (jobSettings.HasKey("fmr_reader_settings")) { + auto& fmrReaderSettings = jobSettings["fmr_reader_settings"]; + if (fmrReaderSettings.HasKey("read_ahead_chunks")) { + resultSettings.FmrTableDataServiceReaderSettings.ReadAheadChunks = fmrReaderSettings["read_ahead_chunks"].AsInt64(); + } + } + if (jobSettings.HasKey("fmr_writer_settings")) { + auto& fmrWriterSettings = jobSettings["fmr_writer_settings"]; + if (fmrWriterSettings.HasKey("chunk_size")) { + resultSettings.FmrTableDataServiceWriterSettings.ChunkSize = fmrWriterSettings["chunk_size"].AsInt64(); + } + } + return resultSettings; +} + } // namespace NYql diff --git a/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.h b/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.h index 7010a2eb96..cb21e95f9c 100644 --- a/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.h +++ b/yt/yql/providers/yt/fmr/job/impl/yql_yt_job_impl.h @@ -9,7 +9,7 @@ namespace NYql::NFmr { struct TParseRecordSettings { ui64 BlockCount = 1; - ui64 BlockSize = 1024 * 1024; // 1Mb + ui64 BlockSize = 1024 * 1024; }; struct TFmrJobSettings { @@ -20,6 +20,8 @@ struct TFmrJobSettings { IFmrJob::TPtr MakeFmrJob(ITableDataService::TPtr tableDataService, IYtService::TPtr ytService, std::shared_ptr<std::atomic<bool>> cancelFlag, const TFmrJobSettings& settings = {}); -TJobResult RunJob(TTask::TPtr task, ITableDataService::TPtr tableDataService, IYtService::TPtr ytService, std::shared_ptr<std::atomic<bool>> cancelFlag, const TFmrJobSettings& settings = {}); +TJobResult RunJob(TTask::TPtr task, ITableDataService::TPtr tableDataService, IYtService::TPtr ytService, std::shared_ptr<std::atomic<bool>> cancelFlag, const TMaybe<TFmrJobSettings>& settings = Nothing()); + +TFmrJobSettings GetJobSettingsFromTask(TTask::TPtr task); } // namespace NYql diff --git a/yt/yql/providers/yt/fmr/job/impl/yql_yt_table_data_service_writer.h b/yt/yql/providers/yt/fmr/job/impl/yql_yt_table_data_service_writer.h index a708b79543..2e27cd4f07 100644 --- a/yt/yql/providers/yt/fmr/job/impl/yql_yt_table_data_service_writer.h +++ b/yt/yql/providers/yt/fmr/job/impl/yql_yt_table_data_service_writer.h @@ -10,7 +10,7 @@ namespace NYql::NFmr { struct TFmrTableDataServiceWriterSettings { - ui64 ChunkSize = 1024 * 1024; // 1Mb + ui64 ChunkSize = 1024 * 1024; }; class TFmrTableDataServiceWriter: public NYT::TRawTableWriter { diff --git a/yt/yql/providers/yt/fmr/proto/coordinator.proto b/yt/yql/providers/yt/fmr/proto/coordinator.proto index 99d0ca2361..a104cf26ea 100644 --- a/yt/yql/providers/yt/fmr/proto/coordinator.proto +++ b/yt/yql/providers/yt/fmr/proto/coordinator.proto @@ -22,6 +22,7 @@ message TStartOperationRequest { optional string IdempotencyKey = 4; uint32 NumRetries = 5; TClusterConnection ClusterConnection = 6; + optional string FmrOperationSpec = 7; } message TStartOperationResponse { diff --git a/yt/yql/providers/yt/fmr/proto/request_options.proto b/yt/yql/providers/yt/fmr/proto/request_options.proto index a2580eb39f..4bd35eacaa 100644 --- a/yt/yql/providers/yt/fmr/proto/request_options.proto +++ b/yt/yql/providers/yt/fmr/proto/request_options.proto @@ -156,6 +156,7 @@ message TTask { string SessionId = 4; optional uint32 NumRetries = 5; TClusterConnection ClusterConnection = 6; + optional string JobSettings = 7; } message TTaskState { diff --git a/yt/yql/providers/yt/fmr/request_options/proto_helpers/yql_yt_request_proto_helpers.cpp b/yt/yql/providers/yt/fmr/request_options/proto_helpers/yql_yt_request_proto_helpers.cpp index 0ce6dea92d..0860c00996 100644 --- a/yt/yql/providers/yt/fmr/request_options/proto_helpers/yql_yt_request_proto_helpers.cpp +++ b/yt/yql/providers/yt/fmr/request_options/proto_helpers/yql_yt_request_proto_helpers.cpp @@ -1,4 +1,5 @@ #include "yql_yt_request_proto_helpers.h" +#include <library/cpp/yson/node/node_io.h> namespace NYql::NFmr { @@ -399,6 +400,9 @@ NProto::TTask TaskToProto(const TTask& task) { protoTask.SetNumRetries(task.NumRetries); auto clusterConnection = ClusterConnectionToProto(task.ClusterConnection); protoTask.MutableClusterConnection()->Swap(&clusterConnection); + if (task.JobSettings) { + protoTask.SetJobSettings(NYT::NodeToYsonString(*task.JobSettings)); + } return protoTask; } @@ -410,6 +414,9 @@ TTask TaskFromProto(const NProto::TTask& protoTask) { task.SessionId = protoTask.GetSessionId(); task.NumRetries = protoTask.GetNumRetries(); task.ClusterConnection = ClusterConnectionFromProto(protoTask.GetClusterConnection()); + if (protoTask.HasJobSettings()) { + task.JobSettings = NYT::NodeFromYsonString(protoTask.GetJobSettings()); + } return task; } diff --git a/yt/yql/providers/yt/fmr/request_options/ya.make b/yt/yql/providers/yt/fmr/request_options/ya.make index 9e330848c2..df82ec258f 100644 --- a/yt/yql/providers/yt/fmr/request_options/ya.make +++ b/yt/yql/providers/yt/fmr/request_options/ya.make @@ -5,6 +5,7 @@ SRCS( ) PEERDIR( + library/cpp/yson/node library/cpp/threading/future ) diff --git a/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.cpp b/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.cpp index 319cf20801..0dc3650855 100644 --- a/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.cpp +++ b/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.cpp @@ -2,8 +2,8 @@ namespace NYql::NFmr { -TTask::TPtr MakeTask(ETaskType taskType, const TString& taskId, const TTaskParams& taskParams, const TString& sessionId, const TClusterConnection& clusterConnection) { - return MakeIntrusive<TTask>(taskType, taskId, taskParams, sessionId, clusterConnection); +TTask::TPtr MakeTask(ETaskType taskType, const TString& taskId, const TTaskParams& taskParams, const TString& sessionId, const TClusterConnection& clusterConnection, const TMaybe<NYT::TNode>& jobSettings) { + return MakeIntrusive<TTask>(taskType, taskId, taskParams, sessionId, clusterConnection, jobSettings); } TTaskState::TPtr MakeTaskState(ETaskStatus taskStatus, const TString& taskId, const TMaybe<TFmrError>& taskErrorMessage, const TStatistics& stats) { diff --git a/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.h b/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.h index 2c2e94a057..de18d91fa0 100644 --- a/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.h +++ b/yt/yql/providers/yt/fmr/request_options/yql_yt_request_options.h @@ -1,5 +1,6 @@ #pragma once +#include <library/cpp/yson/node/node.h> #include <util/digest/numeric.h> #include <util/generic/maybe.h> #include <util/generic/string.h> @@ -167,8 +168,8 @@ struct TClusterConnection { struct TTask: public TThrRefBase { TTask() = default; - TTask(ETaskType taskType, const TString& taskId, const TTaskParams& taskParams, const TString& sessionId, const TClusterConnection& clusterConnection, ui32 numRetries = 1) - : TaskType(taskType), TaskId(taskId), TaskParams(taskParams), SessionId(sessionId), ClusterConnection(clusterConnection), NumRetries(numRetries) + TTask(ETaskType taskType, const TString& taskId, const TTaskParams& taskParams, const TString& sessionId, const TClusterConnection& clusterConnection, const TMaybe<NYT::TNode> & jobSettings = Nothing(), ui32 numRetries = 1) + : TaskType(taskType), TaskId(taskId), TaskParams(taskParams), SessionId(sessionId), ClusterConnection(clusterConnection), JobSettings(jobSettings), NumRetries(numRetries) { } @@ -177,6 +178,7 @@ struct TTask: public TThrRefBase { TTaskParams TaskParams = {}; TString SessionId; TClusterConnection ClusterConnection = {}; + TMaybe<NYT::TNode> JobSettings = {}; ui32 NumRetries; // Not supported yet using TPtr = TIntrusivePtr<TTask>; @@ -197,7 +199,7 @@ struct TTaskState: public TThrRefBase { using TPtr = TIntrusivePtr<TTaskState>; }; -TTask::TPtr MakeTask(ETaskType taskType, const TString& taskId, const TTaskParams& taskParams, const TString& sessionId, const TClusterConnection& clusterConnection = TClusterConnection{}); +TTask::TPtr MakeTask(ETaskType taskType, const TString& taskId, const TTaskParams& taskParams, const TString& sessionId, const TClusterConnection& clusterConnection = TClusterConnection{}, const TMaybe<NYT::TNode>& jobSettings = Nothing()); TTaskState::TPtr MakeTaskState(ETaskStatus taskStatus, const TString& taskId, const TMaybe<TFmrError>& taskErrorMessage = Nothing(), const TStatistics& stats = TStatistics()); diff --git a/yt/yql/providers/yt/fmr/yt_service/impl/yql_yt_yt_service_impl.cpp b/yt/yql/providers/yt/fmr/yt_service/impl/yql_yt_yt_service_impl.cpp index c6e535fb71..d618766ede 100644 --- a/yt/yql/providers/yt/fmr/yt_service/impl/yql_yt_yt_service_impl.cpp +++ b/yt/yql/providers/yt/fmr/yt_service/impl/yql_yt_yt_service_impl.cpp @@ -28,13 +28,13 @@ public: NYT::TRawTableWriterPtr MakeWriter( const TYtTableRef& ytTable, const TClusterConnection& clusterConnection, - const TYtWriterSettings& writerSetttings + const TYtWriterSettings& /*writerSetttings*/ ) override { auto client = CreateClient(clusterConnection); auto transaction = client->AttachTransaction(GetGuid(clusterConnection.TransactionId)); - auto path = NYT::TRichYPath(NYT::AddPathPrefix(ytTable.Path, "//")); - auto richPath = NYT::TRichYPath(path).Append(writerSetttings.AppendMode); - return transaction->CreateRawWriter(richPath, NYT::TFormat::YsonBinary()); + TString ytPath = NYT::AddPathPrefix(ytTable.Path, "//"); + auto richPath = NYT::TRichYPath(ytPath).Append(true); + return transaction->CreateRawWriter(richPath, NYT::TFormat::YsonBinary()); // TODO - support writerOptions } private: diff --git a/yt/yql/providers/yt/fmr/yt_service/interface/yql_yt_yt_service.h b/yt/yql/providers/yt/fmr/yt_service/interface/yql_yt_yt_service.h index 1661c18895..7ed2a47fc0 100644 --- a/yt/yql/providers/yt/fmr/yt_service/interface/yql_yt_yt_service.h +++ b/yt/yql/providers/yt/fmr/yt_service/interface/yql_yt_yt_service.h @@ -11,7 +11,6 @@ struct TYtReaderSettings { }; struct TYtWriterSettings { - bool AppendMode = true; }; class IYtService: public TThrRefBase { diff --git a/yt/yql/providers/yt/gateway/file/yql_yt_file.cpp b/yt/yql/providers/yt/gateway/file/yql_yt_file.cpp index 529e0806df..429880e66e 100644 --- a/yt/yql/providers/yt/gateway/file/yql_yt_file.cpp +++ b/yt/yql/providers/yt/gateway/file/yql_yt_file.cpp @@ -1593,7 +1593,7 @@ private: } TClusterConnectionResult GetClusterConnection(const TClusterConnectionOptions&& /*options*/) override { - ythrow yexception() << "GetClusterConnection should not be called for file gateway"; + return TClusterConnectionResult(); } diff --git a/yt/yql/providers/yt/gateway/fmr/ya.make b/yt/yql/providers/yt/gateway/fmr/ya.make index c424b95d0b..d00a1b6ee4 100644 --- a/yt/yql/providers/yt/gateway/fmr/ya.make +++ b/yt/yql/providers/yt/gateway/fmr/ya.make @@ -5,13 +5,16 @@ SRCS( ) PEERDIR( + yql/essentials/providers/common/codec yql/essentials/utils/log - yt/cpp/mapreduce/client + yt/cpp/mapreduce/common + yt/cpp/mapreduce/interface yt/yql/providers/yt/gateway/lib yt/yql/providers/yt/gateway/native yt/yql/providers/yt/expr_nodes yt/yql/providers/yt/fmr/coordinator/interface yt/yql/providers/yt/lib/config_clusters + yt/yql/providers/yt/lib/schema yt/yql/providers/yt/provider ) diff --git a/yt/yql/providers/yt/gateway/fmr/yql_yt_fmr.cpp b/yt/yql/providers/yt/gateway/fmr/yql_yt_fmr.cpp index aab5bdb6dd..dd5160d07c 100644 --- a/yt/yql/providers/yt/gateway/fmr/yql_yt_fmr.cpp +++ b/yt/yql/providers/yt/gateway/fmr/yql_yt_fmr.cpp @@ -2,16 +2,20 @@ #include <thread> +#include <yt/cpp/mapreduce/common/helpers.h> #include <yt/cpp/mapreduce/interface/client.h> #include <yt/yql/providers/yt/expr_nodes/yql_yt_expr_nodes.h> #include <yt/yql/providers/yt/gateway/lib/yt_helpers.h> #include <yt/yql/providers/yt/gateway/native/yql_yt_native.h> +#include <yt/yql/providers/yt/lib/schema/schema.h> #include <yt/yql/providers/yt/provider/yql_yt_helpers.h> +#include <yql/essentials/providers/common/codec/yql_codec_type_flags.h> #include <yql/essentials/utils/log/log.h> #include <yql/essentials/utils/log/profile.h> #include <util/generic/ptr.h> +#include <util/string/split.h> #include <util/thread/pool.h> using namespace NThreading; @@ -27,7 +31,7 @@ enum class ETablePresenceStatus { Both }; -struct TDownloadTableToFmrResult: public NCommon::TOperationResult {}; // Download Yt -> Fmr TableDataService +struct TFmrOperationResult: public NCommon::TOperationResult {}; class TFmrYtGateway final: public TYtForwardingGatewayBase { public: @@ -41,7 +45,7 @@ public: auto getOperationStatusesFunc = [&] { while (!StopFmrGateway_) { with_lock(SessionStates_->Mutex) { - auto checkOperationStatuses = [&] <typename T> (std::unordered_map<TString, TPromise<T>>& operationStatuses, const TString& sessionId) { + auto checkOperationStatuses = [&] (std::unordered_map<TString, TPromise<TFmrOperationResult>>& operationStatuses, const TString& sessionId) { for (auto& [operationId, promise]: operationStatuses) { YQL_CLOG(TRACE, FastMapReduce) << "Sending get operation request to coordinator with operationId: " << operationId; @@ -53,9 +57,15 @@ public: with_lock(SessionStates_->Mutex) { bool operationCompleted = getOperationStatus != EOperationStatus::Accepted && getOperationStatus != EOperationStatus::InProgress; if (operationCompleted) { - // operation finished, set value in future returned in Publish / Download + // operation finished, set value in future returned in DoMerge / DoUpload bool hasCompletedSuccessfully = getOperationStatus == EOperationStatus::Completed; - SendOperationCompletionSignal(promise, hasCompletedSuccessfully, operationErrorMessages); + if (hasCompletedSuccessfully) { + TFmrOperationResult fmrOperationResult{}; + fmrOperationResult.SetSuccess(); + promise.SetValue(fmrOperationResult); + } else { + promise.SetException(JoinRange(' ', operationErrorMessages.begin(), operationErrorMessages.end())); + } YQL_CLOG(DEBUG, FastMapReduce) << "Sending delete operation request to coordinator with operationId: " << operationId; auto deleteOperationFuture = Coordinator_->DeleteOperation({operationId}); deleteOperationFuture.Subscribe([&, sessionId, operationId] (const auto& deleteFuture) { @@ -66,8 +76,7 @@ public: YQL_ENSURE( SessionStates_->Sessions.contains(sessionId)); auto& sessionInfo = SessionStates_->Sessions[sessionId]; auto& operationStates = sessionInfo.OperationStates; - operationStates.DownloadOperationStatuses.erase(operationId); - operationStates.UploadOperationStatuses.erase(operationId); + operationStates.OperationStatuses.erase(operationId); } }); } @@ -78,8 +87,7 @@ public: for (auto [sessionId, sessionInfo]: SessionStates_->Sessions) { auto& operationStates = sessionInfo.OperationStates; - checkOperationStatuses(operationStates.DownloadOperationStatuses, sessionId); - checkOperationStatuses(operationStates.UploadOperationStatuses, sessionId); + checkOperationStatuses(operationStates.OperationStatuses, sessionId); } } Sleep(TimeToSleepBetweenGetOperationRequests_); @@ -93,138 +101,73 @@ public: GetOperationStatusesThread_.join(); } - TFuture<TPublishResult> Publish(const TExprNode::TPtr& node, TExprContext& ctx, TPublishOptions&& options) final { + TFuture<TRunResult> Run(const TExprNode::TPtr& node, TExprContext& ctx, TRunOptions&& options) final { YQL_LOG_CTX_SCOPE(TStringBuf("Gateway"), __FUNCTION__); - if (!Coordinator_) { - return Slave_->Publish(node, ctx, std::move(options)); - } - auto publish = TYtPublish(node); + auto nodePos = ctx.GetPosition(node->Pos()); + TYtOpBase opBase(node); TString sessionId = options.SessionId(); - auto cluster = publish.DataSink().Cluster().StringValue(); - auto token = options.Config()->Auth.Get(); - TString transformedInputPath; - TString userName = GetUsername(sessionId); - for (auto out: publish.Input()) { - auto outTable = GetOutTable(out).Cast<TYtOutTable>(); - TStringBuf inputPath = outTable.Name().Value(); - transformedInputPath = NYql::TransformPath(GetTablesTmpFolder(*options.Config()), inputPath, true, userName); - break; + if (auto op = opBase.Maybe<TYtMerge>()) { + auto ytMerge = op.Cast(); + std::vector<TYtTableRef> inputTables = GetMergeInputTables(ytMerge); + TYtTableRef outputTable = GetMergeOutputTable(ytMerge); + auto future = DoMerge(inputTables, outputTable, std::move(options)); + return future.Apply([this, pos = nodePos, outputTable = std::move(outputTable), options = std::move(options)] (const TFuture<TFmrOperationResult>& f) { + try { + f.GetValue(); // rethrow error if any + TString sessionId = options.SessionId(); + auto config = options.Config(); + TString transformedOutputTableId = GetTransformedPath(outputTable.Path, sessionId, config); + TString fmrOutputTableId = outputTable.Cluster + "." + transformedOutputTableId; + SetTablePresenceStatus(fmrOutputTableId, sessionId, ETablePresenceStatus::OnlyInFmr); + TRunResult result; + result.OutTableStats.emplace_back(outputTable.Path, MakeIntrusive<TYtTableStatInfo>()); // TODO - add statistics? + result.OutTableStats.back().second->Id = "fmr_" + fmrOutputTableId; + result.SetSuccess(); + return MakeFuture<TRunResult>(std::move(result)); + } catch (...) { + return MakeFuture(ResultFromCurrentException<TRunResult>(pos)); + } + }); + } else { + return Slave_->Run(node, ctx, std::move(options)); } + } - // TODO - handle several inputs in Publish, use ColumnGroups, Run Merge - - auto outputPath = publish.Publish().Name().StringValue(); - auto idempotencyKey = GenerateId(); + TFuture<TPublishResult> Publish(const TExprNode::TPtr& node, TExprContext& ctx, TPublishOptions&& options) final { + TString sessionId = options.SessionId(); + YQL_LOG_CTX_SCOPE(TStringBuf("Gateway"), __FUNCTION__); + auto nodePos = ctx.GetPosition(node->Pos()); + auto publish = TYtPublish(node); - auto fmrTableId = cluster + "." + outputPath; + auto cluster = publish.DataSink().Cluster().StringValue(); + std::vector<TFmrTableRef> fmrTableIds; + auto config = options.Config(); - TFuture<TDownloadTableToFmrResult> downloadToFmrFuture; - TFuture<void> downloadedSuccessfully; + std::vector<TFuture<TFmrOperationResult>> uploadFmrTablesToYtFutures; - with_lock(SessionStates_->Mutex) { - auto& tablePresenceStatuses = SessionStates_->Sessions[sessionId].TablePresenceStatuses; + for (auto out: publish.Input()) { + auto outTableWithCluster = GetOutTableWithCluster(out); + auto outTable = GetOutTable(out).Cast<TYtOutTable>(); + TStringBuf inputPath = outTable.Name().Value(); + TString transformedInputPath = GetTransformedPath(ToString(inputPath), sessionId, config); + auto outputBase = out.Operation().Cast<TYtOutputOpBase>().Ptr(); - if (!tablePresenceStatuses.contains(fmrTableId)) { - TYtTableRef ytTable{.Path = transformedInputPath, .Cluster = cluster}; - TFmrTableRef fmrTable{.TableId = fmrTableId}; - tablePresenceStatuses[fmrTableId] = ETablePresenceStatus::Both; - downloadToFmrFuture = DownloadToFmrTableDataSerivce(ytTable, fmrTable, sessionId, options.Config()); - downloadedSuccessfully = downloadToFmrFuture.Apply([downloadedSuccessfully] (auto& downloadFuture) { - auto downloadResult = downloadFuture.GetValueSync(); - }); - } else { - downloadedSuccessfully = MakeFuture(); - } + TFmrTableRef fmrTableRef = TFmrTableRef{outTableWithCluster.second + "." + transformedInputPath}; + uploadFmrTablesToYtFutures.emplace_back(DoUpload(fmrTableRef, sessionId, config, outputBase, ctx)); } - downloadedSuccessfully.Wait(); // blocking until download to fmr finishes - - TUploadOperationParams uploadOperationParams{ - .Input = TFmrTableRef{fmrTableId}, - .Output = TYtTableRef{outputPath, cluster} - }; - - auto clusterConnectionOptions = TClusterConnectionOptions(options.SessionId()) - .Cluster(cluster).Config(options.Config()); - auto clusterConnection = GetClusterConnection(std::move(clusterConnectionOptions)); - YQL_ENSURE(clusterConnection.Success()); - - TStartOperationRequest uploadRequest{ - .TaskType = ETaskType::Upload, - .OperationParams = uploadOperationParams, - .SessionId = sessionId, - .IdempotencyKey=idempotencyKey, - .NumRetries=1, - .ClusterConnection = TClusterConnection{ - .TransactionId = clusterConnection.TransactionId, - .YtServerName = clusterConnection.YtServerName, - .Token = clusterConnection.Token - } - }; - - auto promise = NewPromise<TPublishResult>(); - auto future = promise.GetFuture(); - YQL_CLOG(DEBUG, FastMapReduce) << "Starting upload to yt table: " << cluster + "." + outputPath; - auto uploadOperationResponseFuture = Coordinator_->StartOperation(uploadRequest); - uploadOperationResponseFuture.Subscribe([this, promise = std::move(promise), sessionId] (const auto& uploadFuture) { - TStartOperationResponse startOperationResponse = uploadFuture.GetValueSync(); - TString operationId = startOperationResponse.OperationId; - with_lock(SessionStates_->Mutex) { - YQL_ENSURE(SessionStates_->Sessions.contains(sessionId)); - auto& operationStates = SessionStates_->Sessions[sessionId].OperationStates; - auto& uploadOperationStatuses = operationStates.UploadOperationStatuses; - YQL_ENSURE(!uploadOperationStatuses.contains(operationId)); - uploadOperationStatuses[operationId] = promise; - } - }); - return future; - } - - TFuture<TDownloadTableToFmrResult> DownloadToFmrTableDataSerivce( - const TYtTableRef& ytTableRef, const TFmrTableRef& fmrTableRef, const TString& sessionId, TYtSettings::TConstPtr& config) - { - YQL_LOG_CTX_SCOPE(TStringBuf("Gateway"), __FUNCTION__); - TString fmrTableId = fmrTableRef.TableId; - TDownloadOperationParams downloadOperationParams{ - .Input = ytTableRef, - .Output = {fmrTableId} - }; + auto outputPath = publish.Publish().Name().StringValue(); auto idempotencyKey = GenerateId(); - auto clusterConnectionOptions = TClusterConnectionOptions(sessionId) - .Cluster(ytTableRef.Cluster).Config(config); - auto clusterConnection = GetClusterConnection(std::move(clusterConnectionOptions)); - YQL_ENSURE(clusterConnection.Success()); - TStartOperationRequest downloadRequest{ - .TaskType = ETaskType::Download, - .OperationParams = downloadOperationParams, - .SessionId = sessionId, - .IdempotencyKey = idempotencyKey, - .NumRetries=1, - .ClusterConnection = TClusterConnection{ - .TransactionId = clusterConnection.TransactionId, - .YtServerName = clusterConnection.YtServerName, - .Token = clusterConnection.Token - } - }; - YQL_CLOG(DEBUG, FastMapReduce) << "Starting download from yt table: " << fmrTableId; - - auto promise = NewPromise<TDownloadTableToFmrResult>(); - auto future = promise.GetFuture(); - - auto downloadOperationResponseFuture = Coordinator_->StartOperation(downloadRequest); - downloadOperationResponseFuture.Subscribe([this, promise = std::move(promise), sessionId] (const auto& downloadFuture) { - TStartOperationResponse downloadOperationResponse = downloadFuture.GetValueSync(); - TString operationId = downloadOperationResponse.OperationId; - with_lock(SessionStates_->Mutex) { - auto& operationStates = SessionStates_->Sessions[sessionId].OperationStates; - auto& downloadOperationStatuses = operationStates.DownloadOperationStatuses; - YQL_ENSURE(!downloadOperationStatuses.contains(operationId)); - downloadOperationStatuses[operationId] = promise; + return WaitExceptionOrAll(uploadFmrTablesToYtFutures).Apply([&, pos = nodePos, curNode = std::move(node), options = std::move(options)] (const TFuture<void>& f) mutable { + try { + f.GetValue(); // rethrow error if any + return Slave_->Publish(curNode, ctx, std::move(options)); + } catch (...) { + return MakeFuture(ResultFromCurrentException<TPublishResult>(pos)); } }); - return future; } TClusterConnectionResult GetClusterConnection(const TClusterConnectionOptions&& options) override { @@ -267,29 +210,233 @@ public: YQL_ENSURE(sessions.contains(sessionId)); auto& operationStates = sessions[sessionId].OperationStates; - auto cancelOperationsFunc = [&] <typename T> (std::unordered_map<TString, TPromise<T>>& operationStatuses) { + auto cancelOperationsFunc = [&] (std::unordered_map<TString, TPromise<TFmrOperationResult>>& operationStatuses) { std::vector<TFuture<TDeleteOperationResponse>> cancelOperationsFutures; for (auto& [operationId, promise]: operationStatuses) { cancelOperationsFutures.emplace_back(Coordinator_->DeleteOperation({operationId})); } NThreading::WaitAll(cancelOperationsFutures).GetValueSync(); - for (auto& [operationId, promise]: operationStatuses) { - SendOperationCompletionSignal(promise, false); - } }; - cancelOperationsFunc(operationStates.DownloadOperationStatuses); - cancelOperationsFunc(operationStates.UploadOperationStatuses); + cancelOperationsFunc(operationStates.OperationStatuses); } Slave_->CleanupSession(std::move(options)).Wait(); return MakeFuture(); } private: + TString GenerateId() { + return GetGuidAsString(RandomProvider_->GenGuid()); + } + + TString GetUsername(const TString& sessionId) { + with_lock(SessionStates_->Mutex) { + YQL_ENSURE(SessionStates_->Sessions.contains(sessionId)); + auto& session = SessionStates_->Sessions[sessionId]; + return session.UserName; + } + } + + TString GetTransformedPath(const TString& path, const TString& sessionId, TYtSettings::TConstPtr& config) { + TString username = GetUsername(sessionId); + return NYql::TransformPath(GetTablesTmpFolder(*config), path, true, username); + } + + void SetTablePresenceStatus(const TString& fmrTableId, const TString& sessionId, ETablePresenceStatus newStatus) { + with_lock(SessionStates_->Mutex) { + auto& tablePresenceStatuses = SessionStates_->Sessions[sessionId].TablePresenceStatuses; + tablePresenceStatuses[fmrTableId] = newStatus; + } + } + + TMaybe<ETablePresenceStatus> GetTablePresenceStatus(const TString& fmrTableId, const TString& sessionId) { + with_lock(SessionStates_->Mutex) { + auto& tablePresenceStatuses = SessionStates_->Sessions[sessionId].TablePresenceStatuses; + if (!tablePresenceStatuses.contains(fmrTableId)) { + return Nothing(); + } + return tablePresenceStatuses[fmrTableId]; + } + } + + std::vector<TYtTableRef> GetMergeInputTables(const TYtMerge& ytMerge) { + auto input = ytMerge.Maybe<TYtTransientOpBase>().Cast().Input(); + std::vector<TYtTableRef> inputTables; + for (auto section: input.Cast<TYtSectionList>()) { + for (auto path: section.Paths()) { + TYtPathInfo pathInfo(path); + TYtTableRef ytTable{.Path = pathInfo.Table->Name, .Cluster = pathInfo.Table->Cluster}; + inputTables.emplace_back(ytTable); + } + } + return inputTables; + } + + TYtTableRef GetMergeOutputTable(const TYtMerge& ytMerge) { + auto output = ytMerge.Maybe<TYtOutputOpBase>().Cast().Output(); + std::vector<TYtTableRef> outputTables; + for (auto table: output) { + TYtOutTableInfo tableInfo(table); + TString outTableName = tableInfo.Name; + if (outTableName.empty()) { + outTableName = TStringBuilder() << "tmp/" << GetGuidAsString(RandomProvider_->GenGuid()); + } + outputTables.emplace_back(outTableName, tableInfo.Cluster); + } + YQL_ENSURE(outputTables.size() == 1); + return outputTables[0]; + } + + TString GetClusterFromMergeTables(const std::vector<TYtTableRef>& inputTables, TYtTableRef& outputTable) { + std::unordered_set<TString> clusters; + for (auto& [path, cluster]: inputTables) { + clusters.emplace(cluster); + } + YQL_ENSURE(clusters.size() == 1); + TString cluster = *clusters.begin(); + if (outputTable.Cluster) { + YQL_ENSURE(outputTable.Cluster == cluster); + } else { + outputTable.Cluster = cluster; + } + return cluster; + } + + TClusterConnection GetTablesClusterConnection(const TString& cluster, const TString& sessionId, TYtSettings::TConstPtr& config) { + auto clusterConnectionOptions = TClusterConnectionOptions(sessionId).Cluster(cluster).Config(config); + auto clusterConnection = GetClusterConnection(std::move(clusterConnectionOptions)); + return TClusterConnection{ + .TransactionId = clusterConnection.TransactionId, + .YtServerName = clusterConnection.YtServerName, + .Token = clusterConnection.Token + }; + } + + TFuture<TFmrOperationResult> GetRunningOperationFuture(const TStartOperationRequest& startOperationRequest, const TString& sessionId) { + auto promise = NewPromise<TFmrOperationResult>(); + auto future = promise.GetFuture(); + auto startOperationResponseFuture = Coordinator_->StartOperation(startOperationRequest); + startOperationResponseFuture.Subscribe([this, promise = std::move(promise), sessionId] (const auto& mergeFuture) { + TStartOperationResponse mergeOperationResponse = mergeFuture.GetValueSync(); + TString operationId = mergeOperationResponse.OperationId; + with_lock(SessionStates_->Mutex) { + auto& operationStates = SessionStates_->Sessions[sessionId].OperationStates; + auto& operationStatuses = operationStates.OperationStatuses; + YQL_ENSURE(!operationStatuses.contains(operationId)); + operationStatuses[operationId] = promise; + } + }); + return future; + } + + TFuture<TFmrOperationResult> DoUpload(const TFmrTableRef& fmrTableRef, const TString& sessionId, TYtSettings::TConstPtr& config, TExprNode::TPtr outputOpBase, TExprContext& ctx) { + YQL_LOG_CTX_ROOT_SESSION_SCOPE(sessionId); + std::vector<TString> ytTableInfo; + StringSplitter(fmrTableRef.TableId).SplitByString(".").AddTo(&ytTableInfo); + YQL_ENSURE(ytTableInfo.size() == 2); + TString outputCluster = ytTableInfo[0], outputPath = ytTableInfo[1]; + auto tablePresenceStatus = GetTablePresenceStatus(fmrTableRef.TableId, sessionId); + if (!tablePresenceStatus || *tablePresenceStatus != ETablePresenceStatus::OnlyInFmr) { + YQL_CLOG(DEBUG, FastMapReduce) << " We assume table " << fmrTableRef.TableId << " should be present in yt, not uploading from fmr"; + TFmrOperationResult fmrOperationResult = TFmrOperationResult(); + fmrOperationResult.SetSuccess(); + return MakeFuture(fmrOperationResult); + } + + TUploadOperationParams uploadOperationParams{ + .Input = fmrTableRef, + .Output = TYtTableRef{.Path = outputPath, .Cluster = outputCluster} + }; + + auto clusterConnection = GetTablesClusterConnection(outputCluster, sessionId, config); + TStartOperationRequest uploadRequest{ + .TaskType = ETaskType::Upload, + .OperationParams = uploadOperationParams, + .SessionId = sessionId, + .IdempotencyKey = GenerateId(), + .NumRetries=1, + .ClusterConnection = clusterConnection, + .FmrOperationSpec = config->FmrOperationSpec.Get(outputCluster) + }; + + auto prepareOptions = TPrepareOptions(sessionId) + .Config(config); + auto prepareFuture = Slave_->Prepare(outputOpBase, ctx, std::move(prepareOptions)); + + return prepareFuture.Apply([this, uploadRequest = std::move(uploadRequest), sessionId = std::move(sessionId), fmrTableId = std::move(fmrTableRef.TableId)] (const TFuture<TRunResult>& f) { + try { + f.GetValue(); // rethrow error if any + YQL_LOG_CTX_ROOT_SESSION_SCOPE(sessionId); + YQL_CLOG(DEBUG, FastMapReduce) << "Starting upload from fmr to yt for table: " << fmrTableId; + return GetRunningOperationFuture(uploadRequest, sessionId).Apply([this, sessionId = std::move(sessionId), fmrTableId = std::move(fmrTableId)] (const TFuture<TFmrOperationResult>& f) { + try { + YQL_LOG_CTX_ROOT_SESSION_SCOPE(sessionId); + auto fmrUploadResult = f.GetValue(); + SetTablePresenceStatus(fmrTableId, sessionId, ETablePresenceStatus::Both); + return f; + } catch (...) { + YQL_CLOG(ERROR, FastMapReduce) << CurrentExceptionMessage(); + return MakeFuture(ResultFromCurrentException<TFmrOperationResult>()); + } + }); + } catch (...) { + YQL_CLOG(ERROR, FastMapReduce) << CurrentExceptionMessage(); + return MakeFuture(ResultFromCurrentException<TFmrOperationResult>()); + } + }); + } + + TFuture<TFmrOperationResult> DoMerge(const std::vector<TYtTableRef>& inputTables, TYtTableRef& outputTable, TRunOptions&& options) { + TString sessionId = options.SessionId(); + YQL_LOG_CTX_ROOT_SESSION_SCOPE(sessionId); + YQL_LOG_CTX_SCOPE(TStringBuf("Gateway"), __FUNCTION__); + auto cluster = GetClusterFromMergeTables(inputTables, outputTable); // Can set outputTable.Cluster if empty + + TString outputTableId = outputTable.Path, outputCluster = outputTable.Cluster; + TString transformedOutputTableId = GetTransformedPath(outputTableId, sessionId, options.Config()); + TFmrTableRef fmrOutputTable{.TableId = outputCluster + "." + transformedOutputTableId}; + + std::vector<TOperationTableRef> mergeInputTables; + for (auto& ytTable: inputTables) { + TString fmrTableId = ytTable.Cluster + "." + ytTable.Path; + auto tablePresenceStatus = GetTablePresenceStatus(fmrTableId, sessionId); + if (!tablePresenceStatus) { + SetTablePresenceStatus(fmrTableId, sessionId, ETablePresenceStatus::OnlyInYt); + } + + if (tablePresenceStatus && *tablePresenceStatus != ETablePresenceStatus::OnlyInYt) { + // table is in fmr, do not download + mergeInputTables.emplace_back(TFmrTableRef{.TableId = fmrTableId}); + } else { + mergeInputTables.emplace_back(ytTable); + } + } + + TMergeOperationParams mergeOperationParams{.Input = mergeInputTables,.Output = fmrOutputTable}; + auto clusterConnection = GetTablesClusterConnection(cluster, sessionId, options.Config()); + TStartOperationRequest mergeOperationRequest{ + .TaskType = ETaskType::Merge, + .OperationParams = mergeOperationParams, + .SessionId = sessionId, + .IdempotencyKey = GenerateId(), + .NumRetries = 1, + .ClusterConnection = clusterConnection, + .FmrOperationSpec = options.Config()->FmrOperationSpec.Get(outputCluster) + }; + + std::vector<TString> inputPaths; + std::transform(inputTables.begin(),inputTables.end(), std::back_inserter(inputPaths), [](const TYtTableRef& ytTableRef){ + return ytTableRef.Path;} + ); + + YQL_CLOG(DEBUG, FastMapReduce) << "Starting merge from yt tables: " << JoinRange(' ', inputPaths.begin(), inputPaths.end()); + return GetRunningOperationFuture(mergeOperationRequest, sessionId); + } + +private: struct TFmrGatewayOperationsState { - std::unordered_map<TString, TPromise<TPublishResult>> UploadOperationStatuses = {}; // operationId -> promise which we set when operation completes - std::unordered_map<TString, TPromise<TDownloadTableToFmrResult>> DownloadOperationStatuses = {}; + std::unordered_map<TString, TPromise<TFmrOperationResult>> OperationStatuses = {}; // operationId -> promise which we set when operation completes }; struct TSessionInfo { @@ -309,31 +456,6 @@ private: TDuration TimeToSleepBetweenGetOperationRequests_; std::thread GetOperationStatusesThread_; std::atomic<bool> StopFmrGateway_; - - TString GenerateId() { - return GetGuidAsString(RandomProvider_->GenGuid()); - } - - template <std::derived_from<NCommon::TOperationResult> T> - void SendOperationCompletionSignal(TPromise<T> promise, bool completedSuccessfully = false, const std::vector<TFmrError>& errorMessages = {}) { - YQL_ENSURE(!promise.HasValue()); - T commonOperationResult{}; - if (completedSuccessfully) { - commonOperationResult.SetSuccess(); - } else if (!errorMessages.empty()) { - auto exception = yexception() << "Operation failed with errors: " << JoinSeq(" ", errorMessages); - commonOperationResult.SetException(exception); - } - promise.SetValue(commonOperationResult); - } - - TString GetUsername(const TString& sessionId) { - with_lock(SessionStates_->Mutex) { - YQL_ENSURE(SessionStates_->Sessions.contains(sessionId)); - auto& session = SessionStates_->Sessions[sessionId]; - return session.UserName; - } - } }; } // namespace diff --git a/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp b/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp index cb0e35fb78..4f476876b2 100644 --- a/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp +++ b/yt/yql/providers/yt/gateway/native/yql_yt_native.cpp @@ -1060,15 +1060,6 @@ public: } const bool initial = NYql::HasSetting(publish.Settings().Ref(), EYtSettingType::Initial); - std::unordered_map<EYtSettingType, TString> strOpts; - for (const auto& setting : publish.Settings().Ref().Children()) { - if (setting->ChildrenSize() == 2) { - strOpts.emplace(FromString<EYtSettingType>(setting->Head().Content()), setting->Tail().Content()); - } else if (setting->ChildrenSize() == 1) { - strOpts.emplace(FromString<EYtSettingType>(setting->Head().Content()), TString());; - } - } - YQL_CLOG(INFO, ProviderYt) << "Mode: " << mode << ", IsInitial: " << initial; TSession::TPtr session = GetSession(options.SessionId()); @@ -1079,15 +1070,35 @@ public: TVector<TSrcTable> src; ui64 chunksCount = 0; ui64 dataSize = 0; - std::unordered_set<TString> columnGroups; + TSet<TString> srcColumnGroupAlts; + bool first = true; + const TStructExprType* itemType = nullptr; for (auto out: publish.Input()) { auto outTableWithCluster = GetOutTableWithCluster(out); auto outTable = outTableWithCluster.first.Cast<TYtOutTable>(); src.emplace_back(outTable.Name().StringValue(), outTableWithCluster.second); - if (auto columnGroupSetting = NYql::GetSetting(outTable.Settings().Ref(), EYtSettingType::ColumnGroups)) { - columnGroups.emplace(columnGroupSetting->Tail().Content()); - } else { - columnGroups.emplace(); + if (first) { + itemType = GetSeqItemType(*outTable.Ref().GetTypeAnn()).Cast<TStructExprType>(); + if (auto columnGroupSetting = NYql::GetSetting(outTable.Settings().Ref(), EYtSettingType::ColumnGroups)) { + srcColumnGroupAlts.emplace(columnGroupSetting->Tail().Content()); + TString expanded; + if (ExpandDefaultColumnGroup(columnGroupSetting->Tail().Content(), *itemType, expanded)) { + srcColumnGroupAlts.insert(expanded); + } + } + first = false; + } else if (!srcColumnGroupAlts.empty()) { + if (auto columnGroupSetting = NYql::GetSetting(outTable.Settings().Ref(), EYtSettingType::ColumnGroups)) { + if (!srcColumnGroupAlts.contains(columnGroupSetting->Tail().Content())) { + TString expanded; + if (!ExpandDefaultColumnGroup(columnGroupSetting->Tail().Content(), *GetSeqItemType(*outTable.Ref().GetTypeAnn()).Cast<TStructExprType>(), expanded) + || !srcColumnGroupAlts.contains(expanded)) { + srcColumnGroupAlts.clear(); + } + } + } else { + srcColumnGroupAlts.clear(); + } } auto stat = TYtTableStatInfo(outTable.Stat()); chunksCount += stat.ChunkCount; @@ -1099,7 +1110,38 @@ public: if (src.size() > 10) { YQL_CLOG(INFO, ProviderYt) << "...total input tables=" << src.size(); } - TString srcColumnGroups = columnGroups.size() == 1 ? *columnGroups.cbegin() : TString(); + + bool forceMerge = false; + bool forceTransform = false; + std::unordered_map<EYtSettingType, TString> strOpts; + for (const auto& setting : publish.Settings().Ref().Children()) { + const auto settingType = FromString<EYtSettingType>(setting->Head().Content()); + if (setting->ChildrenSize() == 2) { + TString value = TString{setting->Tail().Content()}; + if (EYtSettingType::ColumnGroups == settingType) { + bool groupDiff = false; + if (srcColumnGroupAlts.empty()) { + groupDiff = true; + } else { + if (!srcColumnGroupAlts.contains(value)) { + TString expanded; + YQL_ENSURE(itemType); + if (ExpandDefaultColumnGroup(value, *itemType, expanded)) { + value = std::move(expanded); + groupDiff = !srcColumnGroupAlts.contains(value); + } + } + } + if (groupDiff) { + forceMerge = forceTransform = true; + YQL_CLOG(INFO, ProviderYt) << "Column groups diff forces merge"; + } + } + strOpts.emplace(settingType, value); + } else if (setting->ChildrenSize() == 1) { + strOpts.emplace(settingType, TString()); + } + } bool combineChunks = false; if (auto minChunkSize = options.Config()->MinPublishedAvgChunkSize.Get()) { @@ -1111,6 +1153,7 @@ public: YQL_CLOG(INFO, ProviderYt) << "Output: " << cluster << '.' << dst; if (combineChunks) { YQL_CLOG(INFO, ProviderYt) << "Use chunks combining"; + forceMerge = true; } if (Services_.Config->GetLocalChainTest()) { if (!src.empty()) { @@ -1130,9 +1173,9 @@ public: const ui32 dstEpoch = TEpochInfo::Parse(publish.Publish().Epoch().Ref()).GetOrElse(0); auto execCtx = MakeExecCtx(std::move(options), session, cluster, node.Get(), &ctx); - return session->Queue_->Async([execCtx, src = std::move(src), dst, dstEpoch, isAnonymous, mode, initial, srcColumnGroups, combineChunks, strOpts = std::move(strOpts)] () mutable { + return session->Queue_->Async([execCtx, src = std::move(src), dst, dstEpoch, isAnonymous, mode, initial, combineChunks, forceMerge, forceTransform, strOpts = std::move(strOpts)] () mutable { YQL_LOG_CTX_ROOT_SESSION_SCOPE(execCtx->LogCtx_); - return ExecPublish(execCtx, std::move(src), dst, dstEpoch, isAnonymous, mode, initial, srcColumnGroups, combineChunks, strOpts); + return ExecPublish(execCtx, std::move(src), dst, dstEpoch, isAnonymous, mode, initial, combineChunks, forceMerge, forceTransform, strOpts); }) .Apply([nodePos] (const TFuture<void>& f) { try { @@ -2414,8 +2457,9 @@ private: const bool isAnonymous, EYtWriteMode mode, const bool initial, - const TString& srcColumnGroups, const bool combineChunks, + bool forceMerge, + bool forceTransform, const std::unordered_map<EYtSettingType, TString>& strOpts) { TString tmpFolder = GetTablesTmpFolder(*execCtx->Options_.Config()); @@ -2490,8 +2534,6 @@ private: ); } - bool forceMerge = combineChunks; - NYT::MergeNodes(yqlAttrs, GetUserAttributes(execCtx->GetEntryForCluster(src.back().Cluster)->Tx, src.back().Name, true)); NYT::MergeNodes(yqlAttrs, YqlOpOptionsToAttrs(execCtx->Session_->OperationOptions_)); if (EYtWriteMode::RenewKeepMeta == mode) { @@ -2582,8 +2624,6 @@ private: } } - bool forceTransform = false; - #define DEFINE_OPT(name, attr, transform) \ auto dst##name = isAnonymous \ ? execCtx->Options_.Config()->Temporary##name.Get(cluster) \ @@ -2612,10 +2652,6 @@ private: NYT::TNode columnGroupsSpec; if (const auto it = strOpts.find(EYtSettingType::ColumnGroups); it != strOpts.cend() && execCtx->Options_.Config()->OptimizeFor.Get(cluster).GetOrElse(NYT::OF_LOOKUP_ATTR) != NYT::OF_LOOKUP_ATTR) { columnGroupsSpec = NYT::NodeFromYsonString(it->second); - if (it->second != srcColumnGroups) { - forceMerge = forceTransform = true; - YQL_CLOG(INFO, ProviderYt) << "Column groups diff forces merge, src=" << srcColumnGroups << ", dst=" << it->second; - } } TFuture<void> res; @@ -2656,7 +2692,7 @@ private: input = TRichYPath(std::get<0>(*p)).TransactionId(std::get<1>(*p)).OriginalPath(NYT::AddPathPrefix(dstPath, NYT::TConfig::Get()->Prefix)).Columns(columns); } } else { - input = TRichYPath(dstPath).Columns(columns); + input = TRichYPath(dstPath).Columns(columns); } mergeSpec.AddInput(input); } diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.cpp index b1836d0019..89758d7b2e 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.cpp @@ -678,16 +678,6 @@ TCoLambda FallbackLambdaOutput(TCoLambda lambda, TExprContext& ctx) { return lambda; } -TYtDSink GetDataSink(TExprBase input, TExprContext& ctx) { - if (auto read = input.Maybe<TCoRight>().Input().Maybe<TYtReadTable>()) { - return TYtDSink(ctx.RenameNode(read.Cast().DataSource().Ref(), "DataSink")); - } else if (auto out = input.Maybe<TYtOutput>()) { - return GetOutputOp(out.Cast()).DataSink(); - } else { - YQL_ENSURE(false, "Unknown operation input"); - } -} - TYtDSink MakeDataSink(TPositionHandle pos, TStringBuf cluster, TExprContext& ctx) { return Build<TYtDSink>(ctx, pos) .Category() diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.h b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.h index 7cd61ba28a..6cb1af8a2c 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.h +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_helper.h @@ -49,7 +49,6 @@ NNodes::TCoLambda FallbackLambdaInput(NNodes::TCoLambda lambda, TExprContext& ct NNodes::TCoLambda FallbackLambdaOutput(NNodes::TCoLambda lambda, TExprContext& ctx); -NNodes::TYtDSink GetDataSink(NNodes::TExprBase input, TExprContext& ctx); NNodes::TYtDSink MakeDataSink(TPositionHandle pos, TStringBuf cluster, TExprContext& ctx); NNodes::TYtDSource MakeDataSource(TPositionHandle pos, TStringBuf cluster, TExprContext& ctx); diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_join.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_join.cpp index 23dc3d2d67..a59d38fb87 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_join.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_join.cpp @@ -50,7 +50,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::EquiJoin(TExprBase node } else { hasYtInput = true; auto cluster = DeriveClusterFromInput(list, selectionMode); - if (!UpdateUsedCluster(inputClusters[i], cluster, selectionMode)) { + if (!cluster || !UpdateUsedCluster(inputClusters[i], *cluster, selectionMode)) { return node; } } diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_map.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_map.cpp index 373d8dbf65..efc9ce9916 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_map.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_map.cpp @@ -64,7 +64,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::FlatMap(TExprBase node, const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); auto cluster = DeriveClusterFromInput(input, selectionMode); - if (!IsYtCompleteIsolatedLambda(flatMap.Lambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!cluster || !IsYtCompleteIsolatedLambda(flatMap.Lambda().Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -120,7 +120,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::FlatMap(TExprBase node, auto ytMap = Build<TYtMap>(ctx, node.Pos()) .World(ApplySyncListToWorld(GetWorld(input, {}, ctx).Ptr(), syncList, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx)) .Output() .Add(outTables) @@ -160,7 +160,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::LMap(TExprBase node, TE const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); auto cluster = DeriveClusterFromInput(lmap.Input(), selectionMode); - if (!IsYtCompleteIsolatedLambda(lmap.Lambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!cluster || !IsYtCompleteIsolatedLambda(lmap.Lambda().Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -197,7 +197,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::LMap(TExprBase node, TE auto map = Build<TYtMap>(ctx, lmap.Pos()) .World(ApplySyncListToWorld(NPrivate::GetWorld(lmap.Input(), {}, ctx).Ptr(), syncList, ctx)) - .DataSink(NPrivate::GetDataSink(lmap.Input(), ctx)) + .DataSink(MakeDataSink(lmap.Pos(), *cluster, ctx)) .Input(NPrivate::ConvertInputTable(lmap.Input(), ctx)) .Output() .Add(outTables) @@ -243,19 +243,22 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::CombineByKey(TExprBase const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); auto cluster = DeriveClusterFromInput(input, selectionMode); - if (!IsYtCompleteIsolatedLambda(combineByKey.PreMapLambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!cluster) { return node; } - if (!IsYtCompleteIsolatedLambda(combineByKey.KeySelectorLambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(combineByKey.PreMapLambda().Ref(), syncList, *cluster, false, selectionMode)) { return node; } - if (!IsYtCompleteIsolatedLambda(combineByKey.InitHandlerLambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(combineByKey.KeySelectorLambda().Ref(), syncList, *cluster, false, selectionMode)) { return node; } - if (!IsYtCompleteIsolatedLambda(combineByKey.UpdateHandlerLambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(combineByKey.InitHandlerLambda().Ref(), syncList, *cluster, false, selectionMode)) { return node; } - if (!IsYtCompleteIsolatedLambda(combineByKey.FinishHandlerLambda().Ref(), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(combineByKey.UpdateHandlerLambda().Ref(), syncList, *cluster, false, selectionMode)) { + return node; + } + if (!IsYtCompleteIsolatedLambda(combineByKey.FinishHandlerLambda().Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -394,7 +397,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::CombineByKey(TExprBase return Build<TYtOutput>(ctx, combineByKey.Pos()) .Operation<TYtMap>() .World(ApplySyncListToWorld(GetWorld(input, {}, ctx).Ptr(), syncList, ctx)) - .DataSink(MakeDataSink(combineByKey.Pos(), cluster, ctx)) + .DataSink(MakeDataSink(combineByKey.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx)) .Output() .Add(combineOut.ToExprNode(ctx, combineByKey.Pos()).Cast<TYtOutTable>()) diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_misc.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_misc.cpp index a28693fa81..3b65cedd9f 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_misc.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_misc.cpp @@ -326,7 +326,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::TakeOrSkip(TExprBase no const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); auto cluster = DeriveClusterFromInput(input, selectionMode); - if (!IsYtCompleteIsolatedLambda(countBase.Count().Ref(), syncList, cluster, false, selectionMode)) { + if (!cluster || !IsYtCompleteIsolatedLambda(countBase.Count().Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -937,7 +937,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::UpdateDataSinkCluster(T return node; } - TString cluster = DeriveClusterFromSectionList(op.Input(), selectionMode); + TString cluster = GetClusterFromSectionList(op.Input()); if (cluster == op.DataSink().Cluster().Value()) { return node; } @@ -956,7 +956,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::UpdateDataSourceCluster } auto op = node.Cast<TYtReadTable>(); - TString cluster = DeriveClusterFromSectionList(op.Input(), ERuntimeClusterSelectionMode::Auto); + TString cluster = GetClusterFromSectionList(op.Input()); if (cluster == op.DataSource().Cluster().Value()) { return node; } diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_partition.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_partition.cpp index b2035b5749..11100b77fc 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_partition.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_partition.cpp @@ -40,8 +40,9 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); auto cluster = DeriveClusterFromInput(input, selectionMode); - if (!IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, cluster, false, selectionMode) - || !IsYtCompleteIsolatedLambda(handlerLambda.Ref(), syncList, cluster, false, selectionMode)) { + if (!cluster + || !IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, *cluster, false, selectionMode) + || !IsYtCompleteIsolatedLambda(handlerLambda.Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -99,7 +100,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas } TCoLambda sortKeySelectorLambda = partByKey.SortKeySelectorLambda().Cast<TCoLambda>(); - if (!IsYtCompleteIsolatedLambda(sortKeySelectorLambda.Ref(), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(sortKeySelectorLambda.Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -732,7 +733,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas if (canUseReduce) { auto reduce = Build<TYtReduce>(ctx, node.Pos()) .World(ApplySyncListToWorld(GetWorld(input, {}, ctx).Ptr(), syncList, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx)) .Output() .Add(ConvertOutTables(node.Pos(), outItemType, ctx, State_, &partByKey.Ref().GetConstraintSet())) @@ -783,7 +784,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas input = Build<TYtOutput>(ctx, node.Pos()) .Operation<TYtMap>() .World(world) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered))) .Output() .Add(ConvertOutTables(node.Pos(), mapOutputType ? mapOutputType : inputItemType, ctx, State_)) @@ -807,7 +808,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas input = Build<TYtOutput>(ctx, node.Pos()) .Operation<TYtMerge>() .World(world) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx, opts.MakeUnordered(unordered))) .Output() .Add(ConvertOutTables(node.Pos(), inputItemType, ctx, State_)) @@ -832,7 +833,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas input = Build<TYtOutput>(ctx, node.Pos()) .Operation<TYtMap>() .World(world) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered))) .Output() .Add(ConvertOutTables(node.Pos(), mapOutputType, ctx, State_)) @@ -861,7 +862,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas auto result = Build<TYtMap>(ctx, node.Pos()) .World(ApplySyncListToWorld(world.Ptr(), syncList, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered))) .Output() .Add(ConvertOutTables(node.Pos(), outItemType, ctx, State_, &partByKey.Ref().GetConstraintSet())) @@ -877,7 +878,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas } auto mapReduce = Build<TYtMapReduce>(ctx, node.Pos()) .World(ApplySyncListToWorld(world.Ptr(), syncList, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered))) .Output() .Add(ConvertOutTables(node.Pos(), outItemType, ctx, State_, &partByKey.Ref().GetConstraintSet())) diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_sort.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_sort.cpp index 3ba8f17156..51f8b826bb 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_sort.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_sort.cpp @@ -76,7 +76,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE auto cluster = DeriveClusterFromInput(sort.Input(), selectionMode); TSyncMap syncList; - if (!IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, cluster, false, selectionMode)) { + if (!cluster || !IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, *cluster, false, selectionMode)) { return node; } @@ -136,7 +136,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE sortInput = Build<TYtOutput>(ctx, node.Pos()) .Operation<TYtMap>() .World(world) - .DataSink(NPrivate::GetDataSink(sort.Input(), ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(NPrivate::ConvertInputTable(sort.Input(), ctx, NPrivate::TConvertInputOpts().MakeUnordered(unordered))) .Output() .Add(mapOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>()) @@ -168,7 +168,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE sortInput = Build<TYtOutput>(ctx, node.Pos()) .Operation<TYtMerge>() .World(world) - .DataSink(NPrivate::GetDataSink(sort.Input(), ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(NPrivate::ConvertInputTable(sort.Input(), ctx, opts.MakeUnordered(unordered))) .Output() .Add(mergeOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>()) @@ -219,7 +219,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE auto res = canUseMerge ? TExprBase(Build<TYtMerge>(ctx, node.Pos()) .World(world) - .DataSink(NPrivate::GetDataSink(sortInput, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(NPrivate::ConvertInputTable(sortInput, ctx, opts.ClearUnordered())) .Output() .Add(sortOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>()) @@ -234,7 +234,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE .Done()): TExprBase(Build<TYtSort>(ctx, node.Pos()) .World(world) - .DataSink(NPrivate::GetDataSink(sortInput, ctx)) + .DataSink(MakeDataSink(node.Pos(), *cluster, ctx)) .Input(NPrivate::ConvertInputTable(sortInput, ctx, opts.MakeUnordered(unordered))) .Output() .Add(sortOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>()) @@ -475,6 +475,10 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::AssumeConstraints(TExpr return assume; } + const ERuntimeClusterSelectionMode selectionMode = + State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); + auto cluster = DeriveClusterFromInput(input, selectionMode); + auto sorted = assume.Ref().GetConstraint<TSortedConstraintNode>(); auto maybeOp = input.Maybe<TYtOutput>().Operation(); @@ -559,7 +563,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::AssumeConstraints(TExpr return Build<TYtOutput>(ctx, assume.Pos()) .Operation<TYtMerge>() .World(GetWorld(input, {}, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(assume.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx, opts)) .Output() .Add(outTable.ToExprNode(ctx, assume.Pos()).Cast<TYtOutTable>()) @@ -620,7 +624,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::AssumeConstraints(TExpr return Build<TYtOutput>(ctx, assume.Pos()) .Operation<TYtMap>() .World(GetWorld(input, {}, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(assume.Pos(), *cluster, ctx)) .Input(ConvertInputTable(input, ctx)) .Output() .Add(outTable.ToExprNode(ctx, assume.Pos()).Cast<TYtOutTable>()) diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_write.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_write.cpp index 0cd3a828fb..d64d795d94 100644 --- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_write.cpp +++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_write.cpp @@ -342,9 +342,12 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Write(TExprBase node, T auto cluster = TString{write.DataSink().Cluster().Value()}; const auto selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); const auto srcCluster = DeriveClusterFromInput(write.Content(), selectionMode); - if (selectionMode == ERuntimeClusterSelectionMode::Disable && cluster != srcCluster) { + if (!srcCluster) { + return node; + } + if (selectionMode == ERuntimeClusterSelectionMode::Disable && cluster != *srcCluster) { ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "Result from cluster " << TString{srcCluster}.Quote() + << "Result from cluster " << srcCluster->Quote() << " cannot be written to a different destination cluster " << cluster.Quote())); return {}; } @@ -599,12 +602,12 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::ReplaceStatWriteTable(T const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); + TString cluster; if (!IsYtProviderInput(input, false)) { if (!EnsurePersistable(input.Ref(), ctx)) { return {}; } - TString cluster; TSyncMap syncList; if (!IsYtCompleteIsolatedLambda(input.Ref(), syncList, cluster, false, selectionMode)) { return node; @@ -660,10 +663,15 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::ReplaceStatWriteTable(T auto section = read.Input().Item(0); auto scheme = section.Ptr()->GetTypeAnn()->Cast<TListExprType>()->GetItemType(); + auto srcCluster = DeriveClusterFromInput(input, selectionMode); + if (!srcCluster) { + return node; + } + cluster = *srcCluster; auto path = CopyOrTrivialMap(section.Pos(), GetWorld(input, {}, ctx), - GetDataSink(input, ctx), + MakeDataSink(section.Pos(), cluster, ctx), *scheme, Build<TYtSection>(ctx, section.Pos()) .InitFrom(section) @@ -693,7 +701,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::ReplaceStatWriteTable(T return Build<TYtStatOut>(ctx, write.Pos()) .World(GetWorld(input, {}, ctx)) - .DataSink(GetDataSink(input, ctx)) + .DataSink(MakeDataSink(write.Pos(), cluster, ctx)) .Input(newInput.Cast()) .Table(table) .ReplaceMask(write.ReplaceMask()) diff --git a/yt/yql/providers/yt/provider/yql_yt_datasink_exec.cpp b/yt/yql/providers/yt/provider/yql_yt_datasink_exec.cpp index 2d7e0ce5b5..05e0ca5caa 100644 --- a/yt/yql/providers/yt/provider/yql_yt_datasink_exec.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_datasink_exec.cpp @@ -606,12 +606,16 @@ private: ); } - TStatusCallbackPair HandleYtDqProcessWrite(const TExprNode::TPtr& input, TExprContext& ctx) { + TStatusCallbackPair HandleYtDqProcessWrite(const TExprNode::TPtr& input, TExprNode::TPtr& output, TExprContext& ctx) { const TYtDqProcessWrite op(input); const auto section = op.Output().Cast<TYtOutSection>(); Y_ENSURE(section.Size() == 1, "TYtDqProcessWrite expects 1 output table but got " << section.Size()); const TYtOutTable tmpTable = section.Item(0); + if (AssignRuntimeCluster(op, output, ctx)) { + return SyncRepeatWithRestart(); + } + if (!input->HasResult()) { if (!tmpTable.Name().Value().empty()) { ctx.AddError(TIssue(ctx.GetPosition(section.Pos()), TStringBuilder() << "Incomplete execution of " diff --git a/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp b/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp index 1e93f1bf93..789b821fc4 100644 --- a/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp @@ -441,19 +441,6 @@ private: } const bool initialWrite = NYql::HasSetting(settings, EYtSettingType::Initial); const bool monotonicKeys = NYql::HasSetting(settings, EYtSettingType::MonotonicKeys); - TString columnGroup; - TSet<TString> columnGroupAlts; - if (auto setting = NYql::GetSetting(settings, EYtSettingType::ColumnGroups)) { - if (!ValidateColumnGroups(*setting, *itemType->Cast<TStructExprType>(), ctx)) { - return TStatus::Error; - } - columnGroup = setting->Tail().Content(); - columnGroupAlts.insert(columnGroup); - TString exandedSpec; - if (ExpandDefaultColumnGroup(setting->Tail().Content(), *itemType->Cast<TStructExprType>(), exandedSpec)) { - columnGroupAlts.insert(std::move(exandedSpec)); - } - } if (!initialWrite && mode != EYtWriteMode::Append) { ctx.AddError(TIssue(pos, TStringBuilder() << @@ -587,8 +574,22 @@ private: << GetTypeDiff(*description.RowType, *itemType))); return TStatus::Error; } + } - if (!columnGroupAlts.empty() && !AnyOf(columnGroupAlts, [&](const auto& grp) { return description.ColumnGroupSpecAlts.contains(grp); })) { + TString columnGroup; + TSet<TString> columnGroupAlts; + // Check and expand column groups _after_ type alignment (TryConvertTo) + if (auto setting = NYql::GetSetting(settings, EYtSettingType::ColumnGroups)) { + if (!ValidateColumnGroups(*setting, *itemType->Cast<TStructExprType>(), ctx)) { + return TStatus::Error; + } + columnGroup = setting->Tail().Content(); + columnGroupAlts.insert(columnGroup); + TString exandedSpec; + if (ExpandDefaultColumnGroup(setting->Tail().Content(), *itemType->Cast<TStructExprType>(), exandedSpec)) { + columnGroupAlts.insert(std::move(exandedSpec)); + } + if (checkLayout && !AnyOf(columnGroupAlts, [&](const auto& grp) { return description.ColumnGroupSpecAlts.contains(grp); })) { ctx.AddError(TIssue(pos, TStringBuilder() << "Insert with different " << ToString(EYtSettingType::ColumnGroups).Quote() diff --git a/yt/yql/providers/yt/provider/yql_yt_helpers.cpp b/yt/yql/providers/yt/provider/yql_yt_helpers.cpp index 60428c7f64..887b57d204 100644 --- a/yt/yql/providers/yt/provider/yql_yt_helpers.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_helpers.cpp @@ -374,12 +374,14 @@ TExprNode::TPtr ToOutTable(TYtOutput output, TExprContext& ctx) { .Done().Ptr(); } -TString DeriveClusterFromSection(const NNodes::TYtSection& section, ERuntimeClusterSelectionMode mode) { +TMaybe<TString> DeriveClusterFromSection(const NNodes::TYtSection& section, ERuntimeClusterSelectionMode mode) { TString result; for (const auto& path : section.Paths()) { auto info = TYtTableBaseInfo::Parse(path.Table()); YQL_ENSURE(info->Cluster, "Unexpected TYtOutTable in input section"); - YQL_ENSURE(UpdateUsedCluster(result, info->Cluster, mode)); + if (!UpdateUsedCluster(result, info->Cluster, mode)) { + return {}; + } } return result; } @@ -387,22 +389,32 @@ TString DeriveClusterFromSection(const NNodes::TYtSection& section, ERuntimeClus } // unnamed TString GetClusterFromSection(const NNodes::TYtSection& section) { - return DeriveClusterFromSection(section, ERuntimeClusterSelectionMode::Auto); + auto result = DeriveClusterFromSection(section, ERuntimeClusterSelectionMode::Auto); + YQL_ENSURE(result); + return *result; } TString GetClusterFromSectionList(const NNodes::TYtSectionList& sectionList) { - return DeriveClusterFromSectionList(sectionList, ERuntimeClusterSelectionMode::Auto); + auto result = DeriveClusterFromSectionList(sectionList, ERuntimeClusterSelectionMode::Auto); + YQL_ENSURE(result); + return *result; } -TString DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode) { +TMaybe<TString> DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode) { TString result; for (const auto& section : sectionList) { - YQL_ENSURE(UpdateUsedCluster(result, DeriveClusterFromSection(section, mode), mode)); + auto sectionCluster = DeriveClusterFromSection(section, mode); + if (!sectionCluster.Defined()) { + return {}; + } + if (!UpdateUsedCluster(result, *sectionCluster, mode)) { + return {}; + } } return result; } -TString DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode) { +TMaybe<TString> DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode) { if (auto read = input.Maybe<TCoRight>().Input().Maybe<TYtReadTable>()) { return DeriveClusterFromSectionList(read.Cast().Input(), mode); } else if (auto output = input.Maybe<TYtOutput>()) { diff --git a/yt/yql/providers/yt/provider/yql_yt_helpers.h b/yt/yql/providers/yt/provider/yql_yt_helpers.h index 218885159c..9eaa4b4aeb 100644 --- a/yt/yql/providers/yt/provider/yql_yt_helpers.h +++ b/yt/yql/providers/yt/provider/yql_yt_helpers.h @@ -21,10 +21,14 @@ namespace NYql { constexpr TStringBuf YtUnspecifiedCluster = "$runtime"; +// Equivalent to Derive* with mode=Auto TString GetClusterFromSection(const NNodes::TYtSection& section); TString GetClusterFromSectionList(const NNodes::TYtSectionList& sectionList); -TString DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode); -TString DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode); + +// Derive cluster according to mode. Will return empty optional for mode=Disable if input contains multiple clusters +TMaybe<TString> DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode); +TMaybe<TString> DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode); + TString GetRuntimeCluster(const TExprNode& op, const TYtState::TPtr& state); bool UpdateUsedCluster(TString& usedCluster, const TString& newCluster, ERuntimeClusterSelectionMode mode); diff --git a/yt/yql/providers/yt/provider/yql_yt_logical_optimize.cpp b/yt/yql/providers/yt/provider/yql_yt_logical_optimize.cpp index c3fb88db5a..5d78e98fae 100644 --- a/yt/yql/providers/yt/provider/yql_yt_logical_optimize.cpp +++ b/yt/yql/providers/yt/provider/yql_yt_logical_optimize.cpp @@ -332,6 +332,9 @@ protected: const ERuntimeClusterSelectionMode selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION); auto cluster = DeriveClusterFromInput(input, selectionMode); + if (!cluster) { + return node; + } for (auto handler: aggregate.Handlers()) { auto trait = handler.Trait(); @@ -346,12 +349,12 @@ protected: t.FinishHandler(), }; for (auto lambda : lambdas) { - if (!IsYtCompleteIsolatedLambda(lambda.Ref(), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(lambda.Ref(), syncList, *cluster, false, selectionMode)) { return node; } } } else if (trait.Ref().IsCallable("AggApply")) { - if (!IsYtCompleteIsolatedLambda(*trait.Ref().Child(2), syncList, cluster, false, selectionMode)) { + if (!IsYtCompleteIsolatedLambda(*trait.Ref().Child(2), syncList, *cluster, false, selectionMode)) { return node; } } diff --git a/yt/yql/tests/sql/suites/multicluster/map_force.cfg b/yt/yql/tests/sql/suites/multicluster/map_force.cfg new file mode 100644 index 0000000000..0d0b05747b --- /dev/null +++ b/yt/yql/tests/sql/suites/multicluster/map_force.cfg @@ -0,0 +1,4 @@ +providers yt +res result.txt +in plato.PInput input1.txt +in banach.Unused input2.txt diff --git a/yt/yql/tests/sql/suites/multicluster/map_force.sql b/yt/yql/tests/sql/suites/multicluster/map_force.sql new file mode 100644 index 0000000000..6df51bcf08 --- /dev/null +++ b/yt/yql/tests/sql/suites/multicluster/map_force.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +/* yt can not */ +pragma yt.RuntimeCluster='banach'; +pragma yt.RuntimeClusterSelection='force'; + +select key || "0" as key0, subkey from plato.PInput where subkey != "3"; diff --git a/yt/yql/tests/sql/suites/multicluster/partition_by_key_force.cfg b/yt/yql/tests/sql/suites/multicluster/partition_by_key_force.cfg new file mode 100644 index 0000000000..0d0b05747b --- /dev/null +++ b/yt/yql/tests/sql/suites/multicluster/partition_by_key_force.cfg @@ -0,0 +1,4 @@ +providers yt +res result.txt +in plato.PInput input1.txt +in banach.Unused input2.txt diff --git a/yt/yql/tests/sql/suites/multicluster/partition_by_key_force.sql b/yt/yql/tests/sql/suites/multicluster/partition_by_key_force.sql new file mode 100644 index 0000000000..67239c3f27 --- /dev/null +++ b/yt/yql/tests/sql/suites/multicluster/partition_by_key_force.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +/* yt can not */ +pragma yt.RuntimeCluster='banach'; +pragma yt.RuntimeClusterSelection='force'; + +select key, max(subkey) as msk from plato.PInput group by key; + +select max(key) as mk from plato.PInput; + diff --git a/yt/yql/tests/sql/suites/multicluster/sort_force.cfg b/yt/yql/tests/sql/suites/multicluster/sort_force.cfg new file mode 100644 index 0000000000..0d0b05747b --- /dev/null +++ b/yt/yql/tests/sql/suites/multicluster/sort_force.cfg @@ -0,0 +1,4 @@ +providers yt +res result.txt +in plato.PInput input1.txt +in banach.Unused input2.txt diff --git a/yt/yql/tests/sql/suites/multicluster/sort_force.sql b/yt/yql/tests/sql/suites/multicluster/sort_force.sql new file mode 100644 index 0000000000..074905f3d1 --- /dev/null +++ b/yt/yql/tests/sql/suites/multicluster/sort_force.sql @@ -0,0 +1,8 @@ +/* postgres can not */ +/* yt can not */ +pragma yt.RuntimeCluster='banach'; +pragma yt.RuntimeClusterSelection='force'; + +select * from plato.PInput +order by key, subkey; + diff --git a/yt/yt/client/api/client.cpp b/yt/yt/client/api/client.cpp index 8eff6f8d3f..b7e4e876d1 100644 --- a/yt/yt/client/api/client.cpp +++ b/yt/yt/client/api/client.cpp @@ -12,6 +12,7 @@ namespace NYT::NApi { using namespace NConcurrency; using namespace NYTree; +using namespace NYson; //////////////////////////////////////////////////////////////////////////////// @@ -19,43 +20,49 @@ static constexpr auto& Logger = ApiLogger; //////////////////////////////////////////////////////////////////////////////// -std::optional<std::string> TClusterAwareClientBase::GetClusterName(bool fetchIfNull) +TFuture<std::optional<std::string>> TClusterAwareClientBase::GetClusterName(bool fetchIfNull) { { auto guard = ReaderGuard(SpinLock_); if (ClusterName_) { - return ClusterName_; + return MakeFuture(ClusterName_); } } auto clusterName = GetConnection()->GetClusterName(); - if (fetchIfNull && !clusterName) { - clusterName = FetchClusterNameFromMasterCache(); - } - - if (!clusterName) { - return {}; + if (clusterName) { + auto guard = WriterGuard(SpinLock_); + ClusterName_ = clusterName; + return MakeFuture(ClusterName_); } - auto guard = WriterGuard(SpinLock_); - if (!ClusterName_) { - ClusterName_ = clusterName; + if (!fetchIfNull) { + return MakeFuture<std::optional<std::string>>({}); } - return ClusterName_; + return FetchClusterNameFromMasterCache().Apply( + BIND([this, this_ = MakeStrong(this)] (const std::optional<std::string>& clusterName) -> std::optional<std::string> { + auto guard = WriterGuard(SpinLock_); + ClusterName_ = clusterName; + return ClusterName_; + })); } -std::optional<std::string> TClusterAwareClientBase::FetchClusterNameFromMasterCache() +TFuture<std::optional<std::string>> TClusterAwareClientBase::FetchClusterNameFromMasterCache() { TGetNodeOptions options; options.ReadFrom = EMasterChannelKind::MasterCache; - auto clusterNameYsonOrError = WaitFor(GetNode(ClusterNamePath, options)); - if (!clusterNameYsonOrError.IsOK()) { - YT_LOG_WARNING(clusterNameYsonOrError, "Could not fetch cluster name from from master cache (Path: %v)", - ClusterNamePath); - return {}; - } - return ConvertTo<std::string>(clusterNameYsonOrError.Value()); + + return GetNode(ClusterNamePath, options).Apply( + BIND([] (const TErrorOr<TYsonString>& clusterNameYsonOrError) -> std::optional<std::string> { + if (!clusterNameYsonOrError.IsOK()) { + YT_LOG_WARNING(clusterNameYsonOrError, "Could not fetch cluster name from from master cache (Path: %v)", + ClusterNamePath); + return {}; + } + + return ConvertTo<std::string>(clusterNameYsonOrError.Value()); + })); } //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yt/client/api/client.h b/yt/yt/client/api/client.h index d0ada67e69..823e37ad39 100644 --- a/yt/yt/client/api/client.h +++ b/yt/yt/client/api/client.h @@ -84,7 +84,7 @@ struct IClient virtual const NChaosClient::IReplicationCardCachePtr& GetReplicationCardCache() = 0; virtual const NTransactionClient::ITimestampProviderPtr& GetTimestampProvider() = 0; - virtual std::optional<std::string> GetClusterName(bool fetchIfNull = true) = 0; + virtual TFuture<std::optional<std::string>> GetClusterName(bool fetchIfNull = true) = 0; }; DEFINE_REFCOUNTED_TYPE(IClient) @@ -103,13 +103,13 @@ public: //! NB: Descendants of this class should be able to perform GetNode calls, //! so this cannot be used directly in tablet transactions. //! Use the transaction's parent client instead. - std::optional<std::string> GetClusterName(bool fetchIfNull) override; + TFuture<std::optional<std::string>> GetClusterName(bool fetchIfNull) override; private: YT_DECLARE_SPIN_LOCK(NThreading::TReaderWriterSpinLock, SpinLock_); std::optional<std::string> ClusterName_; - std::optional<std::string> FetchClusterNameFromMasterCache(); + TFuture<std::optional<std::string>> FetchClusterNameFromMasterCache(); }; //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yt/client/api/delegating_client.h b/yt/yt/client/api/delegating_client.h index ca2e945220..f04c210842 100644 --- a/yt/yt/client/api/delegating_client.h +++ b/yt/yt/client/api/delegating_client.h @@ -23,7 +23,7 @@ public: // IClientBase methods DELEGATE_METHOD(IConnectionPtr, GetConnection, (), ()) - DELEGATE_METHOD(std::optional<std::string>, GetClusterName, + DELEGATE_METHOD(TFuture<std::optional<std::string>>, GetClusterName, (bool fetchIfNull), (fetchIfNull)) diff --git a/yt/yt/client/api/rpc_proxy/client_base.cpp b/yt/yt/client/api/rpc_proxy/client_base.cpp index b6db71e2c5..359c814011 100644 --- a/yt/yt/client/api/rpc_proxy/client_base.cpp +++ b/yt/yt/client/api/rpc_proxy/client_base.cpp @@ -254,7 +254,7 @@ TFuture<TYsonString> TClientBase::GetNode( // COMPAT(max42): after 22.3 is everywhere, drop legacy field. if (options.Attributes) { - ToProto(req->mutable_legacy_attributes()->mutable_keys(), options.Attributes.Keys); + ToProto(req->mutable_legacy_attributes()->mutable_keys(), options.Attributes.Keys()); ToProto(req->mutable_attributes(), options.Attributes); } else { req->mutable_legacy_attributes()->set_all(true); @@ -290,7 +290,7 @@ TFuture<TYsonString> TClientBase::ListNode( // COMPAT(max42): after 22.3 is everywhere, drop legacy field. if (options.Attributes) { - ToProto(req->mutable_legacy_attributes()->mutable_keys(), options.Attributes.Keys); + ToProto(req->mutable_legacy_attributes()->mutable_keys(), options.Attributes.Keys()); ToProto(req->mutable_attributes(), options.Attributes); } else { req->mutable_legacy_attributes()->set_all(true); diff --git a/yt/yt/client/driver/distributed_table_commands.cpp b/yt/yt/client/driver/distributed_table_commands.cpp index 4942408318..0f26f86cbf 100644 --- a/yt/yt/client/driver/distributed_table_commands.cpp +++ b/yt/yt/client/driver/distributed_table_commands.cpp @@ -46,9 +46,9 @@ void TStartDistributedWriteSessionCommand::DoExecute(ICommandContextPtr context) auto sessionAndCookies = WaitFor(context->GetClient()->StartDistributedWriteSession(Path, Options)) .ValueOrThrow(); - signatureGenerator->Sign(sessionAndCookies.Session.Underlying()); + signatureGenerator->Resign(sessionAndCookies.Session.Underlying()); for (const auto& cookie : sessionAndCookies.Cookies) { - signatureGenerator->Sign(cookie.Underlying()); + signatureGenerator->Resign(cookie.Underlying()); } ProduceOutput(context, [sessionAndCookies = std::move(sessionAndCookies)] (IYsonConsumer* consumer) { @@ -146,7 +146,7 @@ void TWriteTableFragmentCommand::DoExecute(ICommandContextPtr context) auto writer = DynamicPointerCast<NApi::ITableFragmentWriter>(TableWriter); auto signedWriteResult = writer->GetWriteFragmentResult(); - context->GetDriver()->GetSignatureGenerator()->Sign(signedWriteResult.Underlying()); + context->GetDriver()->GetSignatureGenerator()->Resign(signedWriteResult.Underlying()); ProduceOutput(context, [result = std::move(signedWriteResult)] (IYsonConsumer* consumer) { Serialize( diff --git a/yt/yt/client/driver/driver.cpp b/yt/yt/client/driver/driver.cpp index 11c96e1335..0fa6393238 100644 --- a/yt/yt/client/driver/driver.cpp +++ b/yt/yt/client/driver/driver.cpp @@ -537,8 +537,8 @@ private: TClientCachePtr ClientCache_; const IClientPtr RootClient_; IProxyDiscoveryCachePtr ProxyDiscoveryCache_; - ISignatureGeneratorPtr SignatureGenerator_; - ISignatureValidatorPtr SignatureValidator_; + const ISignatureGeneratorPtr SignatureGenerator_; + const ISignatureValidatorPtr SignatureValidator_; class TCommandContext; using TCommandContextPtr = TIntrusivePtr<TCommandContext>; diff --git a/yt/yt/client/driver/table_commands.cpp b/yt/yt/client/driver/table_commands.cpp index 6a2d4eb19c..e31b6e43f2 100644 --- a/yt/yt/client/driver/table_commands.cpp +++ b/yt/yt/client/driver/table_commands.cpp @@ -528,7 +528,7 @@ void TPartitionTablesCommand::DoExecute(ICommandContextPtr context) for (auto& partition : partitions.Partitions) { if (partition.Cookie) { - context->GetDriver()->GetSignatureGenerator()->Sign(partition.Cookie.Underlying()); + context->GetDriver()->GetSignatureGenerator()->Resign(partition.Cookie.Underlying()); } } diff --git a/yt/yt/client/federated/client.cpp b/yt/yt/client/federated/client.cpp index ffce8ff06c..2a07474aaa 100644 --- a/yt/yt/client/federated/client.cpp +++ b/yt/yt/client/federated/client.cpp @@ -342,7 +342,7 @@ public: return client->GetConnection(); } - std::optional<std::string> GetClusterName(bool fetchIfNull) override + TFuture<std::optional<std::string>> GetClusterName(bool fetchIfNull) override { auto [client, _] = GetActiveClient(); return client->GetClusterName(fetchIfNull); @@ -637,7 +637,7 @@ void TClient::CheckClustersHealth() const auto& check = checks[index]; auto error = NConcurrency::WaitFor(check); YT_LOG_DEBUG_UNLESS(error.IsOK(), error, "Cluster %Qv is marked as unhealthy", - UnderlyingClients_[index]->Client->GetClusterName(/*fetchIfNull*/ false)); + UnderlyingClients_[index]->Client->GetConnection()->GetClusterName()); UnderlyingClients_[index]->HasErrors = !error.IsOK() && !error.FindMatching(NSecurityClient::EErrorCode::AuthorizationError); // Ignore authorization errors. } diff --git a/yt/yt/client/federated/unittests/client_ut.cpp b/yt/yt/client/federated/unittests/client_ut.cpp index 5caba8db1a..baa69dc45d 100644 --- a/yt/yt/client/federated/unittests/client_ut.cpp +++ b/yt/yt/client/federated/unittests/client_ut.cpp @@ -21,6 +21,7 @@ using namespace NYT::NApi; using ::testing::_; using ::testing::AnyNumber; using ::testing::Return; +using ::testing::ReturnRef; using ::testing::StrictMock; using TStrictMockClient = StrictMock<NApi::TMockClient>; @@ -172,9 +173,14 @@ TEST(TFederatedClientTest, CheckHealth) auto mockClientSas = New<TStrictMockClient>(); + auto mockConnectionVla = New<TStrictMockConnection>(); + std::optional<std::string> clusterName("vla-cluster"); + EXPECT_CALL(*mockConnectionVla, GetClusterName()) + .WillRepeatedly(ReturnRef(clusterName)); + auto mockClientVla = New<TStrictMockClient>(); - EXPECT_CALL(*mockClientVla, GetClusterName(_)) - .Times(AnyNumber()); + EXPECT_CALL(*mockClientVla, GetConnection()) + .WillRepeatedly(Return(mockConnectionVla)); // To identify best (closest) cluster. NYson::TYsonString listResult1(TStringBuf(R"(["a-rpc-proxy-a.sas.yp-c.yandex.net:9013"])")); @@ -462,17 +468,25 @@ TEST(TFederatedClientTest, AttachTransaction) auto mockConnectionSas = New<TStrictMockConnection>(); EXPECT_CALL(*mockConnectionSas, GetClusterTag()) .WillRepeatedly(Return(NObjectClient::TCellTag(123))); + std::optional<std::string> clusterNameSas = "cluster-sas"; + EXPECT_CALL(*mockConnectionSas, GetClusterName()) + .WillRepeatedly(ReturnRef(clusterNameSas)); EXPECT_CALL(*mockClientSas, GetConnection()) - .WillOnce(Return(mockConnectionSas)); + .WillRepeatedly(Return(mockConnectionSas)); auto mockConnectionVla = New<TStrictMockConnection>(); EXPECT_CALL(*mockConnectionVla, GetClusterTag()) .WillRepeatedly(Return(NObjectClient::TCellTag(456))); + std::optional<std::string> clusterNameVla = "cluster-vla"; + EXPECT_CALL(*mockConnectionVla, GetClusterName()) + .WillRepeatedly(ReturnRef(clusterNameVla)); + EXPECT_CALL(*mockClientVla, GetConnection()) + .WillRepeatedly(Return(mockConnectionVla)); // Creation of federated client. std::vector<IClientPtr> clients{mockClientSas, mockClientVla}; auto config = New<TFederationConfig>(); - config->ClusterHealthCheckPeriod = TDuration::Seconds(5); + config->ClusterHealthCheckPeriod = TDuration::Seconds(1); auto federatedClient = CreateClient(clients, config); // Wait initialization. diff --git a/yt/yt/client/hedging/hedging.cpp b/yt/yt/client/hedging/hedging.cpp index b6f7e294da..5ea0675af6 100644 --- a/yt/yt/client/hedging/hedging.cpp +++ b/yt/yt/client/hedging/hedging.cpp @@ -66,10 +66,10 @@ public: return Executor_->GetClient(0)->GetConnection(); } - std::optional<std::string> GetClusterName(bool fetchIfNull = true) override + TFuture<std::optional<std::string>> GetClusterName(bool fetchIfNull = true) override { Y_UNUSED(fetchIfNull); - return {}; + return MakeFuture<std::optional<std::string>>({}); } RETRYABLE_METHOD(TFuture<TUnversionedLookupRowsResult>, LookupRows, (const TYPath&, NTableClient::TNameTablePtr, const TSharedRange<NTableClient::TUnversionedRow>&, const TLookupRowsOptions&)); diff --git a/yt/yt/client/queue_client/consumer_client.cpp b/yt/yt/client/queue_client/consumer_client.cpp index d3d8a7cb22..cccac4b318 100644 --- a/yt/yt/client/queue_client/consumer_client.cpp +++ b/yt/yt/client/queue_client/consumer_client.cpp @@ -672,12 +672,13 @@ ISubConsumerClientPtr CreateSubConsumerClient( { auto queueCluster = queuePath.GetCluster(); if (!queueCluster && queueClusterClient) { - if (auto queueClusterFromClient = queueClusterClient->GetClusterName()) { + // `CreateSubConsumerClient` function calls `WaitFor` already, it will be fixed later. + if (auto queueClusterFromClient = WaitFor(queueClusterClient->GetClusterName()).ValueOrThrow()) { queueCluster = *queueClusterFromClient; } } if (!queueCluster) { - if (auto clientCluster = consumerClusterClient->GetClusterName()) { + if (auto clientCluster = WaitFor(consumerClusterClient->GetClusterName()).ValueOrThrow()) { queueCluster = *clientCluster; } } diff --git a/yt/yt/client/scheduler/public.h b/yt/yt/client/scheduler/public.h index 74a89e058c..4e3c22af5c 100644 --- a/yt/yt/client/scheduler/public.h +++ b/yt/yt/client/scheduler/public.h @@ -161,6 +161,7 @@ DEFINE_ENUM(EAbortReason, ((AddressResolveFailed) ( 57)) ((UnexpectedNodeJobPhase) ( 58)) ((JobCountChangedByUserRequest) ( 59)) + ((NbdErrors) ( 60)) ((SchedulingFirst) (100)) ((SchedulingTimeout) (101)) ((SchedulingResourceOvercommit) (102)) diff --git a/yt/yt/client/signature/generator.cpp b/yt/yt/client/signature/generator.cpp index 33a431a5ab..799b64e620 100644 --- a/yt/yt/client/signature/generator.cpp +++ b/yt/yt/client/signature/generator.cpp @@ -10,25 +10,38 @@ using namespace NYson; //////////////////////////////////////////////////////////////////////////////// -TSignaturePtr ISignatureGenerator::Sign(std::string payload) +TSignaturePtr ISignatureGenerator::Sign(std::string payload) const { auto signature = New<TSignature>(); signature->Payload_ = std::move(payload); - Sign(signature); + Resign(signature); return signature; } //////////////////////////////////////////////////////////////////////////////// +namespace { + struct TDummySignatureGenerator : public ISignatureGenerator { - void Sign(const TSignaturePtr& signature) override + void Resign(const TSignaturePtr& /*signature*/) const final + { } +}; + +struct TAlwaysThrowingSignatureGenerator + : public ISignatureGenerator +{ + void Resign(const TSignaturePtr& /*signature*/) const final { - signature->Header_ = NYson::TYsonString("DummySignature"_sb); + THROW_ERROR_EXCEPTION("Signature generation is unsupported"); } }; +} // namespace + +//////////////////////////////////////////////////////////////////////////////// + ISignatureGeneratorPtr CreateDummySignatureGenerator() { return New<TDummySignatureGenerator>(); @@ -40,17 +53,6 @@ const ISignatureGeneratorPtr& GetDummySignatureGenerator() return signatureGenerator; } -//////////////////////////////////////////////////////////////////////////////// - -struct TAlwaysThrowingSignatureGenerator - : public ISignatureGenerator -{ - void Sign(const TSignaturePtr& /*signature*/) override - { - THROW_ERROR_EXCEPTION("Signature generation is unsupported"); - } -}; - ISignatureGeneratorPtr CreateAlwaysThrowingSignatureGenerator() { return New<TAlwaysThrowingSignatureGenerator>(); diff --git a/yt/yt/client/signature/generator.h b/yt/yt/client/signature/generator.h index 771288af7f..93aeb9f409 100644 --- a/yt/yt/client/signature/generator.h +++ b/yt/yt/client/signature/generator.h @@ -13,9 +13,9 @@ struct ISignatureGenerator { //! Fills out the Signature_ and Header_ fields in a given TSignature //! based on its payload. - virtual void Sign(const TSignaturePtr& signature) = 0; + virtual void Resign(const TSignaturePtr& signature) const = 0; - [[nodiscard]] TSignaturePtr Sign(std::string payload); + [[nodiscard]] TSignaturePtr Sign(std::string payload) const; }; DEFINE_REFCOUNTED_TYPE(ISignatureGenerator) diff --git a/yt/yt/client/signature/signature.cpp b/yt/yt/client/signature/signature.cpp index b7b26d25ec..4e59711add 100644 --- a/yt/yt/client/signature/signature.cpp +++ b/yt/yt/client/signature/signature.cpp @@ -25,11 +25,9 @@ void Serialize(const TSignature& signature, IYsonConsumer* consumer) { consumer->OnBeginMap(); BuildYsonMapFragmentFluently(consumer) - .Item("header").Value(signature.Header_.ToString()) + .Item("header").Value((signature.Header_ ? signature.Header_.ToString() : "")) .Item("payload").Value(signature.Payload_) - .Item("signature").Value(TStringBuf( - reinterpret_cast<const char*>(signature.Signature_.data()), - signature.Signature_.size())); + .Item("signature").Value(signature.Signature_); consumer->OnEndMap(); } @@ -40,12 +38,7 @@ void Deserialize(TSignature& signature, INodePtr node) auto mapNode = node->AsMap(); signature.Header_ = TYsonString(mapNode->GetChildValueOrThrow<TString>("header")); signature.Payload_ = mapNode->GetChildValueOrThrow<std::string>("payload"); - - auto signatureString = mapNode->GetChildValueOrThrow<std::string>("signature"); - auto signatureBytes = std::as_bytes(std::span(signatureString)); - signature.Signature_.resize(signatureBytes.size()); - - std::copy(signatureBytes.begin(), signatureBytes.end(), signature.Signature_.begin()); + signature.Signature_ = mapNode->GetChildValueOrThrow<std::string>("signature"); } void Deserialize(TSignature& signature, TYsonPullParserCursor* cursor) diff --git a/yt/yt/client/signature/signature.h b/yt/yt/client/signature/signature.h index a9bbaf8660..bab9dcab38 100644 --- a/yt/yt/client/signature/signature.h +++ b/yt/yt/client/signature/signature.h @@ -25,16 +25,12 @@ public: private: NYson::TYsonString Header_; std::string Payload_; - std::vector<std::byte> Signature_; + std::string Signature_; friend struct ISignatureGenerator; - friend struct TDummySignatureGenerator; - friend struct TAlwaysThrowingSignatureGenerator; friend class TSignatureGenerator; friend struct ISignatureValidator; - friend struct TDummySignatureValidator; - friend struct TAlwaysThrowingSignatureValidator; friend class TSignatureValidator; friend void Serialize(const TSignature& signature, NYson::IYsonConsumer* consumer); diff --git a/yt/yt/client/signature/unittests/dummy_ut.cpp b/yt/yt/client/signature/unittests/dummy_ut.cpp index 364717473e..7034efd6cb 100644 --- a/yt/yt/client/signature/unittests/dummy_ut.cpp +++ b/yt/yt/client/signature/unittests/dummy_ut.cpp @@ -17,26 +17,16 @@ using namespace NYson; using namespace NYTree; const auto YsonSignature = TYsonString( - R"({"header"="DummySignature";"payload"="payload";"signature"="";})"_sb); + R"({"header"="DummySignature";"payload"="payload";"signature"="abacaba";})"_sb); //////////////////////////////////////////////////////////////////////////////// TEST(TDummySignatureGeneratorTest, Generate) { auto generator = CreateDummySignatureGenerator(); - auto signature = generator->Sign("payload"); - EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text), YsonSignature); - generator->Sign(signature); - EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text), YsonSignature); -} - -//////////////////////////////////////////////////////////////////////////////// - -TEST(TDummySignatureValidatorTest, ValidateGood) -{ auto signature = ConvertTo<TSignaturePtr>(YsonSignature); - auto validator = CreateDummySignatureValidator(); - EXPECT_TRUE(validator->Validate(signature).Get().Value()); + generator->Resign(signature);; + EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text).ToString(), YsonSignature.ToString()); } //////////////////////////////////////////////////////////////////////////////// @@ -54,7 +44,7 @@ TEST(TDummySignatureValidatorTest, GenerateValidate) TEST(TAlwaysThrowingSignatureGeneratorTest, Generate) { auto generator = CreateAlwaysThrowingSignatureGenerator(); - EXPECT_THROW_WITH_SUBSTRING(generator->Sign(New<TSignature>()), "unsupported"); + EXPECT_THROW_WITH_SUBSTRING(generator->Resign(New<TSignature>()), "unsupported"); } //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yt/client/signature/validator.cpp b/yt/yt/client/signature/validator.cpp index aebc42d488..e4a25a3bdd 100644 --- a/yt/yt/client/signature/validator.cpp +++ b/yt/yt/client/signature/validator.cpp @@ -8,32 +8,35 @@ namespace NYT::NSignature { //////////////////////////////////////////////////////////////////////////////// +namespace { + struct TDummySignatureValidator : public ISignatureValidator { - TFuture<bool> Validate(const TSignaturePtr& signature) override + TFuture<bool> Validate(const TSignaturePtr& /*signature*/) const final { - YT_VERIFY(signature->Header_.ToString() == "DummySignature"); return TrueFuture; } }; -ISignatureValidatorPtr CreateDummySignatureValidator() -{ - return New<TDummySignatureValidator>(); -} - -//////////////////////////////////////////////////////////////////////////////// - struct TAlwaysThrowingSignatureValidator : public ISignatureValidator { - TFuture<bool> Validate(const TSignaturePtr& /*signature*/) override + TFuture<bool> Validate(const TSignaturePtr& /*signature*/) const final { THROW_ERROR_EXCEPTION("Signature validation is unsupported"); } }; +} // namespace + +//////////////////////////////////////////////////////////////////////////////// + +ISignatureValidatorPtr CreateDummySignatureValidator() +{ + return New<TDummySignatureValidator>(); +} + ISignatureValidatorPtr CreateAlwaysThrowingSignatureValidator() { return New<TAlwaysThrowingSignatureValidator>(); diff --git a/yt/yt/client/signature/validator.h b/yt/yt/client/signature/validator.h index 94425001d3..72777f9475 100644 --- a/yt/yt/client/signature/validator.h +++ b/yt/yt/client/signature/validator.h @@ -13,7 +13,7 @@ namespace NYT::NSignature { struct ISignatureValidator : public TRefCounted { - virtual TFuture<bool> Validate(const TSignaturePtr& signature) = 0; + virtual TFuture<bool> Validate(const TSignaturePtr& signature) const = 0; }; DEFINE_REFCOUNTED_TYPE(ISignatureValidator) diff --git a/yt/yt/client/unittests/mock/client.h b/yt/yt/client/unittests/mock/client.h index 254f08dd90..8a5f8b7bdf 100644 --- a/yt/yt/client/unittests/mock/client.h +++ b/yt/yt/client/unittests/mock/client.h @@ -38,7 +38,7 @@ public: MOCK_METHOD(IConnectionPtr, GetConnection, (), (override)); - MOCK_METHOD(std::optional<std::string>, GetClusterName, (bool fetchIfNull), (override)); + MOCK_METHOD(TFuture<std::optional<std::string>>, GetClusterName, (bool fetchIfNull), (override)); MOCK_METHOD(TFuture<ITransactionPtr>, StartTransaction, ( NTransactionClient::ETransactionType type, diff --git a/yt/yt/core/actions/invoker_util.h b/yt/yt/core/actions/invoker_util.h index 0b020c3f6b..a5dd251fa7 100644 --- a/yt/yt/core/actions/invoker_util.h +++ b/yt/yt/core/actions/invoker_util.h @@ -1,12 +1,17 @@ #pragma once +#include "invoker.h" #include "public.h" -#include <yt/yt/core/concurrency/scheduler_api.h> +#include <yt/yt/core/actions/bind.h> namespace NYT { //////////////////////////////////////////////////////////////////////////////// +// Forward declaration +IInvoker* GetCurrentInvoker(); + +//////////////////////////////////////////////////////////////////////////////// //! Returns the synchronous-ish invoker that defers recurrent action invocation. /*! diff --git a/yt/yt/core/actions/unittests/future_ut.cpp b/yt/yt/core/actions/unittests/future_ut.cpp index de1f661e1d..e27136c092 100644 --- a/yt/yt/core/actions/unittests/future_ut.cpp +++ b/yt/yt/core/actions/unittests/future_ut.cpp @@ -5,6 +5,7 @@ #include <yt/yt/core/actions/invoker_util.h> #include <yt/yt/core/concurrency/action_queue.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <yt/yt/core/misc/ref_counted_tracker.h> #include <yt/yt/core/misc/mpsc_stack.h> diff --git a/yt/yt/core/actions/unittests/invoker_ut.cpp b/yt/yt/core/actions/unittests/invoker_ut.cpp index be43a0b3d7..8460a78471 100644 --- a/yt/yt/core/actions/unittests/invoker_ut.cpp +++ b/yt/yt/core/actions/unittests/invoker_ut.cpp @@ -6,6 +6,7 @@ #include <yt/yt/core/misc/finally.h> #include <yt/yt/core/concurrency/action_queue.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <yt/yt/core/concurrency/thread_pool.h> #include <yt/yt/library/profiling/public.h> diff --git a/yt/yt/core/concurrency/fair_share_action_queue.cpp b/yt/yt/core/concurrency/fair_share_action_queue.cpp index ef00551028..e90347d81a 100644 --- a/yt/yt/core/concurrency/fair_share_action_queue.cpp +++ b/yt/yt/core/concurrency/fair_share_action_queue.cpp @@ -4,6 +4,7 @@ #include "profiling_helpers.h" #include "system_invokers.h" +#include <yt/yt/core/actions/bind.h> #include <yt/yt/core/actions/invoker_util.h> #include <yt/yt/core/actions/invoker_detail.h> diff --git a/yt/yt/core/concurrency/fiber_scheduler_thread.cpp b/yt/yt/core/concurrency/fiber_scheduler_thread.cpp index 228b9629d9..073e8d4007 100644 --- a/yt/yt/core/concurrency/fiber_scheduler_thread.cpp +++ b/yt/yt/core/concurrency/fiber_scheduler_thread.cpp @@ -8,6 +8,7 @@ #include <yt/yt/library/profiling/producer.h> #include <yt/yt/core/actions/invoker_util.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <yt/yt/core/misc/finally.h> #include <yt/yt/core/misc/shutdown.h> diff --git a/yt/yt/core/concurrency/thread_pool_detail.cpp b/yt/yt/core/concurrency/thread_pool_detail.cpp index 36cd128bee..f0d9a23181 100644 --- a/yt/yt/core/concurrency/thread_pool_detail.cpp +++ b/yt/yt/core/concurrency/thread_pool_detail.cpp @@ -4,6 +4,7 @@ #include "private.h" #include <yt/yt/core/actions/invoker_util.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <algorithm> diff --git a/yt/yt/core/concurrency/unittests/bounded_concurrency_invoker_ut.cpp b/yt/yt/core/concurrency/unittests/bounded_concurrency_invoker_ut.cpp index 5a22f97430..163eee1f26 100644 --- a/yt/yt/core/concurrency/unittests/bounded_concurrency_invoker_ut.cpp +++ b/yt/yt/core/concurrency/unittests/bounded_concurrency_invoker_ut.cpp @@ -3,6 +3,7 @@ #include <yt/yt/core/actions/future.h> #include <yt/yt/core/concurrency/action_queue.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <yt/yt/core/logging/log.h> diff --git a/yt/yt/core/concurrency/unittests/invoker_pool_ut.cpp b/yt/yt/core/concurrency/unittests/invoker_pool_ut.cpp index 498f18ecc5..23fe1158ce 100644 --- a/yt/yt/core/concurrency/unittests/invoker_pool_ut.cpp +++ b/yt/yt/core/concurrency/unittests/invoker_pool_ut.cpp @@ -1,6 +1,7 @@ #include <yt/yt/core/test_framework/framework.h> #include <yt/yt/core/concurrency/action_queue.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <yt/yt/core/actions/invoker.h> #include <yt/yt/core/actions/invoker_detail.h> diff --git a/yt/yt/core/concurrency/unittests/scheduled_executor_ut.cpp b/yt/yt/core/concurrency/unittests/scheduled_executor_ut.cpp index f0573463c6..6c52861a28 100644 --- a/yt/yt/core/concurrency/unittests/scheduled_executor_ut.cpp +++ b/yt/yt/core/concurrency/unittests/scheduled_executor_ut.cpp @@ -5,6 +5,7 @@ #include <yt/yt/core/concurrency/action_queue.h> #include <yt/yt/core/concurrency/delayed_executor.h> #include <yt/yt/core/concurrency/scheduled_executor.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <atomic> diff --git a/yt/yt/core/http/compression.cpp b/yt/yt/core/http/compression.cpp index e719f54262..17e7a24872 100644 --- a/yt/yt/core/http/compression.cpp +++ b/yt/yt/core/http/compression.cpp @@ -5,6 +5,7 @@ #include <yt/yt/core/ytree/serialize.h> #include <yt/yt/core/compression/dictionary_codec.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <library/cpp/streams/brotli/brotli.h> diff --git a/yt/yt/core/misc/error.cpp b/yt/yt/core/misc/error.cpp index d316d8d579..6601358f75 100644 --- a/yt/yt/core/misc/error.cpp +++ b/yt/yt/core/misc/error.cpp @@ -2,6 +2,7 @@ #include "serialize.h" #include <yt/yt/core/concurrency/fls.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <yt/yt/core/net/local_address.h> diff --git a/yt/yt/core/misc/fs.cpp b/yt/yt/core/misc/fs.cpp index 17ebc4b0db..b14d33e6bd 100644 --- a/yt/yt/core/misc/fs.cpp +++ b/yt/yt/core/misc/fs.cpp @@ -6,6 +6,7 @@ #include <yt/yt/core/misc/proc.h> #include <yt/yt/core/actions/invoker_util.h> +#include <yt/yt/core/concurrency/scheduler_api.h> #include <library/cpp/yt/system/handle_eintr.h> #include <library/cpp/yt/system/exit.h> diff --git a/yt/yt/core/misc/range_helpers-inl.h b/yt/yt/core/misc/range_helpers-inl.h index 6f9e054d23..aba43b32a6 100644 --- a/yt/yt/core/misc/range_helpers-inl.h +++ b/yt/yt/core/misc/range_helpers-inl.h @@ -95,6 +95,20 @@ auto TransformRangeTo(TRange&& range, TTransformFunction&& function) std::forward<TTransformFunction>(function))); } +template <std::ranges::range TRange, class TOperation, class TProjection> +auto FoldRange(TRange&& range, TOperation operation, TProjection projection) +{ + auto iter = range.begin(); + if (iter == range.end()) { + return std::remove_cvref_t<decltype(std::invoke(projection, *iter))>{}; + } + auto accumulator = std::invoke(projection, *iter); + for (++iter; iter != range.end(); ++iter) { + accumulator = std::invoke(operation, accumulator, std::invoke(projection, *iter)); + } + return accumulator; +} + //////////////////////////////////////////////////////////////////////////////// } // namespace NYT diff --git a/yt/yt/core/misc/range_helpers.h b/yt/yt/core/misc/range_helpers.h index c59fc54f77..5df2f63c3c 100644 --- a/yt/yt/core/misc/range_helpers.h +++ b/yt/yt/core/misc/range_helpers.h @@ -18,7 +18,7 @@ template <std::ranges::range... TRanges> auto ZipMutable(TRanges&&... ranges); //! Converts the provided range to the specified container. -//! This is a simplified equivalent of std::ranges::to from range-v3. +//! This is a simplified equivalent of std::ranges::to from ranges-v3. template <class TContainer, std::ranges::input_range TRange> auto RangeTo(TRange&& range); @@ -26,6 +26,10 @@ auto RangeTo(TRange&& range); template <class TContainer, std::ranges::input_range TRange, class TTransformFunction> auto TransformRangeTo(TRange&& range, TTransformFunction&& function); +//! An equivalent of std::ranges::fold_left from ranges-v3. +template <std::ranges::range TRange, class TOperation, class TProjection = std::identity> +auto FoldRange(TRange&& range, TOperation operation, TProjection projection = {}); + //////////////////////////////////////////////////////////////////////////////// } // namespace NYT diff --git a/yt/yt/core/misc/unittests/range_helpers_ut.cpp b/yt/yt/core/misc/unittests/range_helpers_ut.cpp index 19a2031034..4c38374f75 100644 --- a/yt/yt/core/misc/unittests/range_helpers_ut.cpp +++ b/yt/yt/core/misc/unittests/range_helpers_ut.cpp @@ -50,5 +50,17 @@ TEST(TRangeHelpersTest, RangeToString) //////////////////////////////////////////////////////////////////////////////// +TEST(TRangeHelpersTest, Fold) +{ + EXPECT_EQ(0, FoldRange(std::vector<int>{}, std::plus{})); + EXPECT_EQ(6, FoldRange(std::vector<int>{1, 2, 3}, std::plus{})); + EXPECT_EQ(5, FoldRange( + std::vector<std::vector<int>>{{1, 2}, {3, 4, 5}}, + std::plus{}, + std::ranges::ssize)); +} + +//////////////////////////////////////////////////////////////////////////////// + } // namespace } // namespace NYT diff --git a/yt/yt/core/yson/protobuf_interop-inl.h b/yt/yt/core/yson/protobuf_interop-inl.h index 6f7d630002..6f7d3585ad 100644 --- a/yt/yt/core/yson/protobuf_interop-inl.h +++ b/yt/yt/core/yson/protobuf_interop-inl.h @@ -4,6 +4,8 @@ #include "protobuf_interop.h" #endif +#include <library/cpp/yt/error/error.h> + namespace NYT::NYson { //////////////////////////////////////////////////////////////////////////////// @@ -17,13 +19,6 @@ const TProtobufMessageType* ReflectProtobufMessageType() //////////////////////////////////////////////////////////////////////////////// -namespace NDetail { - -//////////////////////////////////////////////////////////////////////////////// - -template <CProtobufElement TElementType> -consteval std::string_view GetProtobufElementTypeName(); - #define MAP_PROTOBUF_ELEMENT_TYPE_NAME(elementType, name) \ template <> \ consteval std::string_view GetProtobufElementTypeName<elementType>() \ @@ -40,22 +35,26 @@ MAP_PROTOBUF_ELEMENT_TYPE_NAME(TProtobufAnyElement, "any") #undef MAP_PROTOBUF_ELEMENT_TYPE_NAME -std::string_view GetProtobufElementTypeName(const NYson::TProtobufElement& element); - //////////////////////////////////////////////////////////////////////////////// -} // namespace NDetail - -//////////////////////////////////////////////////////////////////////////////// +template <class... U> +auto VisitProtobufElement(const TProtobufElement& element, U&&... visitorOverloads) +{ + TOverloaded visitor{std::forward<U>(visitorOverloads)...}; + return Visit(element, [&] <CProtobufElement TElement> (const std::unique_ptr<TElement>& element) { + YT_VERIFY(element); + return visitor(*element); + }); +} template <CProtobufElement TElementType> -const TElementType& GetProtobufElementOrThrow(const NYson::TProtobufElement& element) +const TElementType& GetProtobufElementOrThrow(const TProtobufElement& element) { const auto* result = std::get_if<std::unique_ptr<TElementType>>(&element); THROW_ERROR_EXCEPTION_UNLESS(result, "Expected protobuf element of type %Qv, but got of type %Qv", - NDetail::GetProtobufElementTypeName<TElementType>(), - NDetail::GetProtobufElementTypeName(element)); + GetProtobufElementTypeName<TElementType>(), + GetProtobufElementTypeName(element)); return *result->get(); } diff --git a/yt/yt/core/yson/protobuf_interop.cpp b/yt/yt/core/yson/protobuf_interop.cpp index 0aa00e3f07..b49cae0c42 100644 --- a/yt/yt/core/yson/protobuf_interop.cpp +++ b/yt/yt/core/yson/protobuf_interop.cpp @@ -197,6 +197,74 @@ void WriteSchema(const TProtobufEnumType* enumType, IYsonConsumer* consumer); //////////////////////////////////////////////////////////////////////////////// +NYson::TProtobufElementType GetProtobufElementType(const TProtobufElement& protobufElement) +{ + return VisitProtobufElement(protobufElement, + [] (const TProtobufMessageElement& /*element*/) { + return TProtobufElementType{FieldDescriptor::TYPE_MESSAGE}; + }, + [] (const TProtobufScalarElement& element) { + return element.Type; + }, + [] (const TProtobufAttributeDictionaryElement& /*element*/) { + return TProtobufElementType{FieldDescriptor::TYPE_MESSAGE}; + }, + [] (const TProtobufRepeatedElement& element) { + return GetProtobufElementType(element.Element); + }, + [] (const TProtobufMapElement& /*element*/) { + // NB! Map is interpreted directly as repeated message field. + return TProtobufElementType{FieldDescriptor::TYPE_MESSAGE}; + }, + [] (const TProtobufAnyElement& /*element*/) { + return TProtobufElementType{FieldDescriptor::TYPE_STRING}; + } + ); +} + +NYTree::ENodeType GetNodeTypeByProtobufScalarElement(const TProtobufScalarElement& scalarElement) +{ + switch (scalarElement.Type.Underlying()) { + case FieldDescriptor::TYPE_INT64: + case FieldDescriptor::TYPE_INT32: + case FieldDescriptor::TYPE_SINT32: + case FieldDescriptor::TYPE_SINT64: + case FieldDescriptor::TYPE_SFIXED32: + case FieldDescriptor::TYPE_SFIXED64: + return NYTree::ENodeType::Int64; + case FieldDescriptor::TYPE_UINT64: + case FieldDescriptor::TYPE_FIXED64: + case FieldDescriptor::TYPE_UINT32: + case FieldDescriptor::TYPE_FIXED32: + return NYTree::ENodeType::Uint64; + case FieldDescriptor::TYPE_BOOL: + return NYTree::ENodeType::Boolean; + case FieldDescriptor::TYPE_STRING: + case FieldDescriptor::TYPE_BYTES: + return NYTree::ENodeType::String; + case FieldDescriptor::TYPE_ENUM: + switch (scalarElement.EnumStorageType) { + case EEnumYsonStorageType::String: + return NYTree::ENodeType::String; + case EEnumYsonStorageType::Int: + return NYTree::ENodeType::Int64; + } + YT_ABORT(); + case FieldDescriptor::TYPE_DOUBLE: + case FieldDescriptor::TYPE_FLOAT: + return NYTree::ENodeType::Double; + case FieldDescriptor::TYPE_GROUP: + case FieldDescriptor::TYPE_MESSAGE: + // NB! Scalar element cannot be of type message. + break; + } + + THROW_ERROR_EXCEPTION("Encountered non-scalar field type for scalar protobuf element") + << TErrorAttribute("fieldType", scalarElement.Type.Underlying()); +} + +//////////////////////////////////////////////////////////////////////////////// + class TProtobufTypeRegistry { public: @@ -810,7 +878,8 @@ TProtobufElement TProtobufField::GetElement(bool insideRepeated) const return std::make_unique<TProtobufScalarElement>(TProtobufScalarElement{ static_cast<TProtobufElementType>(GetType()), GetEnumYsonStorageType(), - EnumType_ + GetEnumType(), + IsEnumValueCheckStrict(), }); } } @@ -3022,10 +3091,6 @@ TProtobufElementResolveResult GetProtobufElementFromField( //////////////////////////////////////////////////////////////////////////////// -namespace NDetail { - -//////////////////////////////////////////////////////////////////////////////// - std::string_view GetProtobufElementTypeName(const NYson::TProtobufElement& element) { return Visit(element, @@ -3034,10 +3099,6 @@ std::string_view GetProtobufElementTypeName(const NYson::TProtobufElement& eleme }); } -//////////////////////////////////////////////////////////////////////////////// - -} // namespace NDetail - TProtobufElementResolveResult ResolveProtobufElementByYPath( const TProtobufMessageType* rootType, const NYPath::TYPathBuf path, diff --git a/yt/yt/core/yson/protobuf_interop.h b/yt/yt/core/yson/protobuf_interop.h index 7ad3bd9879..79b06b9ec4 100644 --- a/yt/yt/core/yson/protobuf_interop.h +++ b/yt/yt/core/yson/protobuf_interop.h @@ -84,6 +84,7 @@ struct TProtobufScalarElement // Meaningful only when TYPE == TYPE_ENUM. EEnumYsonStorageType EnumStorageType; const TProtobufEnumType* EnumType; + bool StrictEnumChecks; }; struct TProtobufAttributeDictionaryElement @@ -126,7 +127,20 @@ TProtobufElementResolveResult ResolveProtobufElementByYPath( //////////////////////////////////////////////////////////////////////////////// template <CProtobufElement TElementType> -const TElementType& GetProtobufElementOrThrow(const NYson::TProtobufElement& element); +consteval std::string_view GetProtobufElementTypeName(); + +std::string_view GetProtobufElementTypeName(const TProtobufElement& element); + +// Version of `NYT::Visit` for `TProtobufElement` which skips `std::unique_ptr` wrappers. +template <class... U> +auto VisitProtobufElement(const TProtobufElement& element, U&&... visitorOverloads); + +TProtobufElementType GetProtobufElementType(const TProtobufElement& protobufElement); + +NYTree::ENodeType GetNodeTypeByProtobufScalarElement(const TProtobufScalarElement& scalarElement); + +template <CProtobufElement TElementType> +const TElementType& GetProtobufElementOrThrow(const TProtobufElement& element); //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yt/core/ytree/attribute_filter-inl.h b/yt/yt/core/ytree/attribute_filter-inl.h index a319270ad1..34c1934284 100644 --- a/yt/yt/core/ytree/attribute_filter-inl.h +++ b/yt/yt/core/ytree/attribute_filter-inl.h @@ -10,7 +10,7 @@ namespace NYT::NYTree { template <class T> TAttributeFilter::TAttributeFilter(std::initializer_list<T> keys) - : Keys({keys.begin(), keys.end()}) + : Keys_({keys.begin(), keys.end()}) , Universal(false) { } diff --git a/yt/yt/core/ytree/attribute_filter.cpp b/yt/yt/core/ytree/attribute_filter.cpp index e6213d810e..3c5d217f37 100644 --- a/yt/yt/core/ytree/attribute_filter.cpp +++ b/yt/yt/core/ytree/attribute_filter.cpp @@ -197,18 +197,18 @@ std::unique_ptr<IHeterogenousFilterConsumer> CreateFilteringConsumerImpl( //////////////////////////////////////////////////////////////////////////////// TAttributeFilter::TAttributeFilter(std::vector<IAttributeDictionary::TKey> keys, std::vector<TYPath> paths) - : Keys(std::move(keys)) - , Paths(std::move(paths)) + : Keys_(std::move(keys)) + , Paths_(std::move(paths)) , Universal(false) { } TAttributeFilter::TAttributeFilter(std::initializer_list<TString> keys) - : Keys({keys.begin(), keys.end()}) + : Keys_({keys.begin(), keys.end()}) , Universal(false) { } TAttributeFilter::TAttributeFilter(const std::vector<TString>& keys) - : Keys({keys.begin(), keys.end()}) + : Keys_({keys.begin(), keys.end()}) , Universal(false) { } @@ -219,14 +219,25 @@ TAttributeFilter::operator bool() const void TAttributeFilter::ValidateKeysOnly(TStringBuf context) const { - if (!Paths.empty()) { + if (!Paths_.empty()) { THROW_ERROR_EXCEPTION("Filtering attributes by path is not implemented for %v", context); } } bool TAttributeFilter::IsEmpty() const { - return !Universal && Keys.empty() && Paths.empty(); + return !Universal && Keys_.empty() && Paths_.empty(); +} + +void TAttributeFilter::AddKey(IAttributeDictionary::TKey key) +{ + Universal = false; + Keys_.emplace_back(std::move(key)); +} + +void TAttributeFilter::ReserveKeys(size_t capacity) +{ + Keys_.reserve(capacity); } bool TAttributeFilter::AdmitsKeySlow(TStringBuf key) const @@ -234,18 +245,18 @@ bool TAttributeFilter::AdmitsKeySlow(TStringBuf key) const if (!*this) { return true; } - return std::find(Keys.begin(), Keys.end(), key) != Keys.end() || - std::find(Paths.begin(), Paths.end(), "/" + ToYPathLiteral(key)) != Paths.end(); + return std::find(Keys_.begin(), Keys_.end(), key) != Keys_.end() || + std::find(Paths_.begin(), Paths_.end(), "/" + ToYPathLiteral(key)) != Paths_.end(); } TAttributeFilter::TKeyToFilter TAttributeFilter::Normalize() const { YT_VERIFY(*this); - if (Paths.empty()) { + if (Paths_.empty()) { // Fast path for key-only case. TKeyToFilter result; - result.reserve(Keys.size()); - for (const auto& key : Keys) { + result.reserve(Keys_.size()); + for (const auto& key : Keys_) { result[key] = std::nullopt; } return result; @@ -254,12 +265,12 @@ TAttributeFilter::TKeyToFilter TAttributeFilter::Normalize() const // As a first step, prepare a combined vector of paths: canonize all paths // and transform all keys to paths of form /<ToYPathLiteral(key)> (which is // already a canonical form). - std::vector<TYPath> paths = Paths; + std::vector<TYPath> paths = Paths_; for (auto& path : paths) { NDetail::CanonizeAndValidatePath(path); } - paths.reserve(paths.size() + Keys.size()); - for (const auto& key : Keys) { + paths.reserve(paths.size() + Keys_.size()); + for (const auto& key : Keys_) { paths.emplace_back("/" + ToYPathLiteral(key)); } @@ -414,15 +425,17 @@ void ToProto(NProto::TAttributeFilter* protoFilter, const TAttributeFilter& filt { YT_VERIFY(filter); - ToProto(protoFilter->mutable_keys(), filter.Keys); - ToProto(protoFilter->mutable_paths(), filter.Paths); + ToProto(protoFilter->mutable_keys(), filter.Keys()); + ToProto(protoFilter->mutable_paths(), filter.Paths()); } void FromProto(TAttributeFilter* filter, const NProto::TAttributeFilter& protoFilter) { - filter->Universal = false; - FromProto(&filter->Keys, protoFilter.keys()); - FromProto(&filter->Paths, protoFilter.paths()); + std::vector<IAttributeDictionary::TKey> keys; + std::vector<NYPath::TYPath> paths; + FromProto(&keys, protoFilter.keys()); + FromProto(&paths, protoFilter.paths()); + *filter = TAttributeFilter(std::move(keys), std::move(paths)); } void Serialize(const TAttributeFilter& filter, IYsonConsumer* consumer) @@ -430,8 +443,8 @@ void Serialize(const TAttributeFilter& filter, IYsonConsumer* consumer) if (filter) { BuildYsonFluently(consumer) .BeginMap() - .Item("keys").Value(filter.Keys) - .Item("paths").Value(filter.Paths) + .Item("keys").Value(filter.Keys()) + .Item("paths").Value(filter.Paths()) .EndMap(); } else { BuildYsonFluently(consumer) @@ -445,30 +458,29 @@ void Deserialize(TAttributeFilter& filter, const INodePtr& node) case ENodeType::Map: { auto mapNode = node->AsMap(); - filter.Universal = false; - filter.Keys.clear(); + std::vector<IAttributeDictionary::TKey> keys; + std::vector<TYPath> paths; if (auto keysNode = mapNode->FindChild("keys")) { - filter.Keys = ConvertTo<std::vector<IAttributeDictionary::TKey>>(keysNode); + keys = ConvertTo<std::vector<IAttributeDictionary::TKey>>(keysNode); } - filter.Paths.clear(); if (auto pathsNode = mapNode->FindChild("paths")) { - filter.Paths = ConvertTo<std::vector<TYPath>>(pathsNode); + paths = ConvertTo<std::vector<TYPath>>(pathsNode); } + filter = TAttributeFilter(std::move(keys), std::move(paths)); + break; } case ENodeType::List: { // Compatibility mode with HTTP clients that specify attribute keys as string lists. - filter.Universal = false; - filter.Keys = ConvertTo<std::vector<IAttributeDictionary::TKey>>(node); - filter.Paths = {}; + + auto keys = ConvertTo<std::vector<IAttributeDictionary::TKey>>(node); + filter = TAttributeFilter(keys); break; } case ENodeType::Entity: { - filter.Universal = true; - filter.Keys = {}; - filter.Paths = {}; + filter = TAttributeFilter(); break; } default: @@ -487,7 +499,7 @@ void FormatValue( TStringBuf /*spec*/) { if (attributeFilter) { - builder->AppendFormat("{Keys: %v, Paths: %v}", attributeFilter.Keys, attributeFilter.Paths); + builder->AppendFormat("{Keys: %v, Paths: %v}", attributeFilter.Keys(), attributeFilter.Paths()); } else { builder->AppendString("(universal)"); } @@ -512,8 +524,8 @@ void FormatValue( auto limit = view.Limit; if (attributeFilter) { builder->AppendFormat("{Keys: %v, Paths: %v}", - MakeShrunkFormattableView(attributeFilter.Keys, TDefaultFormatter{}, limit), - MakeShrunkFormattableView(attributeFilter.Paths, TDefaultFormatter{}, limit)); + MakeShrunkFormattableView(attributeFilter.Keys(), TDefaultFormatter{}, limit), + MakeShrunkFormattableView(attributeFilter.Paths(), TDefaultFormatter{}, limit)); } else { builder->AppendString("(universal)"); } diff --git a/yt/yt/core/ytree/attribute_filter.h b/yt/yt/core/ytree/attribute_filter.h index 10b7fc6551..59ddc7a9ff 100644 --- a/yt/yt/core/ytree/attribute_filter.h +++ b/yt/yt/core/ytree/attribute_filter.h @@ -66,8 +66,8 @@ namespace NYT::NYTree { struct TAttributeFilter { //! Whitelist of top-level keys to be returned. - std::vector<IAttributeDictionary::TKey> Keys; - std::vector<NYPath::TYPath> Paths; + DEFINE_BYREF_RO_PROPERTY(std::vector<IAttributeDictionary::TKey>, Keys); + DEFINE_BYREF_RO_PROPERTY(std::vector<NYPath::TYPath>, Paths); //! If true, filter is universal, i.e. behavior depends on service's own policy; //! in such case #Keys and #Paths are always empty. @@ -100,6 +100,12 @@ struct TAttributeFilter //! error message. void ValidateKeysOnly(TStringBuf context = "this context") const; + //! Adds key. Makes attribute filter not universal if it was universal. + void AddKey(IAttributeDictionary::TKey key); + + //! Reserve keys. + void ReserveKeys(size_t capacity); + //! Returns true if #key appears in Keys or "/#key" appears in Paths using linear search. bool AdmitsKeySlow(IAttributeDictionary::TKeyView key) const; |