diff options
author | Vitaly Stoyan <vitstn@gmail.com> | 2023-12-21 12:53:31 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-21 12:53:31 +0300 |
commit | 037dc17c006d158a227672e21578612a85178728 (patch) | |
tree | cc864bbddba0b2c06cbcaade4c202cd91458a4db | |
parent | 35f1f39580e30e0736ffd75eaa3a815aa8f21860 (diff) | |
download | ydb-037dc17c006d158a227672e21578612a85178728.tar.gz |
init (#610)
197 files changed, 1961 insertions, 1053 deletions
diff --git a/build/plugins/cp.py b/build/plugins/cp.py index 5c663a3bdd..ca41fd3b7e 100644 --- a/build/plugins/cp.py +++ b/build/plugins/cp.py @@ -4,14 +4,25 @@ from _common import sort_by_keywords def oncopy(unit, *args): - keywords = {'RESULT': 1, 'KEEP_DIR_STRUCT': 0, 'DESTINATION': 1, 'FROM': 1} + keywords = { + 'RESULT': 1, + 'KEEP_DIR_STRUCT': 0, + 'DESTINATION': 1, + 'FROM': 1, + 'OUTPUT_INCLUDES': -1, + 'AUTO': 0, + 'WITH_CONTEXT': 0, + } flat_args, spec_args = sort_by_keywords(keywords, args) dest_dir = spec_args['DESTINATION'][0] if 'DESTINATION' in spec_args else '' from_dir = spec_args['FROM'][0] if 'FROM' in spec_args else '' + output_includes = spec_args['OUTPUT_INCLUDES'] if 'OUTPUT_INCLUDES' in spec_args else None keep_struct = 'KEEP_DIR_STRUCT' in spec_args save_in_var = 'RESULT' in spec_args + auto = 'AUTO' in spec_args + with_context = 'WITH_CONTEXT' in spec_args targets = [] for source in flat_args: @@ -25,6 +36,12 @@ def oncopy(unit, *args): target_path = os.path.join(dest_dir, rel_path, filename) if save_in_var: targets.append(target_path) - unit.oncopy_file([source_path, target_path]) + unit.oncopy_file( + [source_path, target_path] + + (['OUTPUT_INCLUDES'] + output_includes if output_includes else []) + + (['OUTPUT_INCLUDES', source_path] if with_context else []) + + (['AUTO'] if auto else []) + ) + if save_in_var: unit.set([spec_args["RESULT"][0], " ".join(targets)]) diff --git a/build/plugins/llvm_bc.py b/build/plugins/llvm_bc.py index b41c106fe2..bd1e4099f2 100644 --- a/build/plugins/llvm_bc.py +++ b/build/plugins/llvm_bc.py @@ -2,10 +2,12 @@ from _common import rootrel_arc_src, sort_by_keywords, skip_build_root def onllvm_bc(unit, *args): - free_args, kwds = sort_by_keywords({'SYMBOLS': -1, 'NAME': 1, 'GENERATE_MACHINE_CODE': 0, 'NO_COMPILE': 0}, args) + free_args, kwds = sort_by_keywords( + {'SYMBOLS': -1, 'NAME': 1, 'GENERATE_MACHINE_CODE': 0, 'NO_COMPILE': 0, 'SUFFIX': 1}, args + ) name = kwds['NAME'][0] symbols = kwds.get('SYMBOLS') - obj_suf = unit.get('OBJ_SUF') + obj_suf = kwds['SUFFIX'][0] if 'SUFFIX' in kwds else '' + unit.get('OBJ_SUF') skip_compile_step = 'NO_COMPILE' in kwds merged_bc = name + '_merged' + obj_suf + '.bc' out_bc = name + '_optimized' + obj_suf + '.bc' diff --git a/ydb/core/engine/mkql_engine_flat_extfunc.cpp b/ydb/core/engine/mkql_engine_flat_extfunc.cpp index 2c5d99b278..31d8c6558a 100644 --- a/ydb/core/engine/mkql_engine_flat_extfunc.cpp +++ b/ydb/core/engine/mkql_engine_flat_extfunc.cpp @@ -2,6 +2,7 @@ #include "mkql_engine_flat_impl.h" #include "mkql_keys.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_pack.h> #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/core/kqp/runtime/kqp_compute.cpp b/ydb/core/kqp/runtime/kqp_compute.cpp index b2ea8ba2cb..412ed9252c 100644 --- a/ydb/core/kqp/runtime/kqp_compute.cpp +++ b/ydb/core/kqp/runtime/kqp_compute.cpp @@ -1,6 +1,7 @@ #include "kqp_compute.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/comp_nodes/mkql_factories.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_program_builder.h> diff --git a/ydb/library/yql/core/spilling/storage/file_storage/ya.make b/ydb/library/yql/core/spilling/storage/file_storage/ya.make index bb62430431..73cd58ff13 100644 --- a/ydb/library/yql/core/spilling/storage/file_storage/ya.make +++ b/ydb/library/yql/core/spilling/storage/file_storage/ya.make @@ -10,22 +10,6 @@ PEERDIR( NO_COMPILER_WARNINGS() -IF (NOT MKQL_DISABLE_CODEGEN) - PEERDIR( - ydb/library/yql/minikql/codegen - contrib/libs/llvm12/lib/IR - contrib/libs/llvm12/lib/ExecutionEngine/MCJIT - contrib/libs/llvm12/lib/Linker - contrib/libs/llvm12/lib/Target/X86 - contrib/libs/llvm12/lib/Target/X86/AsmParser - contrib/libs/llvm12/lib/Transforms/IPO - ) -ELSE() - CFLAGS( - -DMKQL_DISABLE_CODEGEN - ) -ENDIF() - YQL_LAST_ABI_VERSION() END() diff --git a/ydb/library/yql/core/spilling/storage/ya.make b/ydb/library/yql/core/spilling/storage/ya.make index 8c4746a1a3..aab18fca5c 100644 --- a/ydb/library/yql/core/spilling/storage/ya.make +++ b/ydb/library/yql/core/spilling/storage/ya.make @@ -11,22 +11,6 @@ PEERDIR( NO_COMPILER_WARNINGS() -IF (NOT MKQL_DISABLE_CODEGEN) - PEERDIR( - ydb/library/yql/minikql/codegen - contrib/libs/llvm12/lib/IR - contrib/libs/llvm12/lib/ExecutionEngine/MCJIT - contrib/libs/llvm12/lib/Linker - contrib/libs/llvm12/lib/Target/X86 - contrib/libs/llvm12/lib/Target/X86/AsmParser - contrib/libs/llvm12/lib/Transforms/IPO - ) -ELSE() - CFLAGS( - -DMKQL_DISABLE_CODEGEN - ) -ENDIF() - YQL_LAST_ABI_VERSION() END() diff --git a/ydb/library/yql/core/spilling/ya.make b/ydb/library/yql/core/spilling/ya.make index af3aa1592c..709d2db250 100644 --- a/ydb/library/yql/core/spilling/ya.make +++ b/ydb/library/yql/core/spilling/ya.make @@ -23,22 +23,6 @@ PEERDIR( NO_COMPILER_WARNINGS() -IF (NOT MKQL_DISABLE_CODEGEN) - PEERDIR( - ydb/library/yql/minikql/codegen - contrib/libs/llvm12/lib/IR - contrib/libs/llvm12/lib/ExecutionEngine/MCJIT - contrib/libs/llvm12/lib/Linker - contrib/libs/llvm12/lib/Target/X86 - contrib/libs/llvm12/lib/Target/X86/AsmParser - contrib/libs/llvm12/lib/Transforms/IPO - ) -ELSE() - CFLAGS( - -DMKQL_DISABLE_CODEGEN - ) -ENDIF() - YQL_LAST_ABI_VERSION() END() diff --git a/ydb/library/yql/minikql/codegen/codegen.cpp b/ydb/library/yql/minikql/codegen/codegen.cpp index 7508858c1c..dbb98ca13c 100644 --- a/ydb/library/yql/minikql/codegen/codegen.cpp +++ b/ydb/library/yql/minikql/codegen/codegen.cpp @@ -1,30 +1,5 @@ #include "codegen.h" -#include <llvm/ExecutionEngine/ExecutionEngine.h> -#include <llvm/ExecutionEngine/JITEventListener.h> -#include <llvm/ExecutionEngine/MCJIT.h> -#include <llvm/IR/DiagnosticInfo.h> -#include <llvm/IR/DiagnosticPrinter.h> -#include <llvm/IR/LegacyPassManager.h> -#include <llvm/IR/LLVMContext.h> -#include <llvm/IR/Module.h> -#include <llvm/IR/Verifier.h> -#include <llvm/IRReader/IRReader.h> -#include <llvm/Linker/Linker.h> -#include <llvm-c/Disassembler.h> -#include <llvm/Support/Host.h> -#include <llvm/Support/ManagedStatic.h> -#include <llvm/Support/SourceMgr.h> -#include <llvm/Support/TargetSelect.h> -#include <llvm/Support/Timer.h> -#include <llvm/Support/ErrorHandling.h> -#include <llvm/Transforms/IPO.h> -#include <llvm/Transforms/IPO/PassManagerBuilder.h> -#include <llvm/Transforms/Instrumentation.h> -#include <llvm/Transforms/Instrumentation/AddressSanitizer.h> -#include <llvm/Transforms/Instrumentation/MemorySanitizer.h> -#include <llvm/Transforms/Instrumentation/ThreadSanitizer.h> -#include <llvm/LinkAllPasses.h> - +#include "codegen_llvm_deps.h" // Y_IGNORE #include <contrib/libs/re2/re2/re2.h> #include <util/generic/maybe.h> @@ -211,10 +186,16 @@ namespace NCodegen { namespace { - void FatalErrorHandler(void* user_data, const std::string& reason, bool gen_crash_diag) { + void FatalErrorHandler(void* user_data, +#if LLVM_VERSION_MAJOR == 12 + const std::string& reason +#else + const char* reason +#endif + , bool gen_crash_diag) { Y_UNUSED(user_data); Y_UNUSED(gen_crash_diag); - ythrow yexception() << "LLVM fatal error: " << reason.c_str(); + ythrow yexception() << "LLVM fatal error: " << reason; } void AddAddressSanitizerPasses(const llvm::PassManagerBuilder& builder, llvm::legacy::PassManagerBase& pm) { @@ -313,7 +294,9 @@ public: targetOptions.EnableFastISel = true; // init manually, this field was lost in llvm::TargetOptions ctor :/ // make coverity happy +#if LLVM_VERSION_MAJOR == 12 targetOptions.StackProtectorGuardOffset = 0; +#endif std::string what; auto&& engineBuilder = llvm::EngineBuilder(std::move(module)); diff --git a/ydb/library/yql/minikql/codegen/codegen_llvm_deps.h.txt b/ydb/library/yql/minikql/codegen/codegen_llvm_deps.h.txt new file mode 100644 index 0000000000..5b0dc3caea --- /dev/null +++ b/ydb/library/yql/minikql/codegen/codegen_llvm_deps.h.txt @@ -0,0 +1,27 @@ +#pragma once + +#include <llvm/ExecutionEngine/ExecutionEngine.h> +#include <llvm/ExecutionEngine/JITEventListener.h> +#include <llvm/ExecutionEngine/MCJIT.h> +#include <llvm/IR/DiagnosticInfo.h> +#include <llvm/IR/DiagnosticPrinter.h> +#include <llvm/IR/LegacyPassManager.h> +#include <llvm/IR/LLVMContext.h> +#include <llvm/IR/Module.h> +#include <llvm/IR/Verifier.h> +#include <llvm/IRReader/IRReader.h> +#include <llvm/Linker/Linker.h> +#include <llvm-c/Disassembler.h> +#include <llvm/Support/Host.h> +#include <llvm/Support/ManagedStatic.h> +#include <llvm/Support/SourceMgr.h> +#include <llvm/Support/TargetSelect.h> +#include <llvm/Support/Timer.h> +#include <llvm/Support/ErrorHandling.h> +#include <llvm/Transforms/IPO.h> +#include <llvm/Transforms/IPO/PassManagerBuilder.h> +#include <llvm/Transforms/Instrumentation.h> +#include <llvm/Transforms/Instrumentation/AddressSanitizer.h> +#include <llvm/Transforms/Instrumentation/MemorySanitizer.h> +#include <llvm/Transforms/Instrumentation/ThreadSanitizer.h> +#include <llvm/LinkAllPasses.h> diff --git a/ydb/library/yql/minikql/codegen/codegen_ut.cpp b/ydb/library/yql/minikql/codegen/codegen_ut.cpp index 527cd742e7..980ece9d62 100644 --- a/ydb/library/yql/minikql/codegen/codegen_ut.cpp +++ b/ydb/library/yql/minikql/codegen/codegen_ut.cpp @@ -1,10 +1,6 @@ -#include "codegen.h" +#include <ydb/library/yql/minikql/codegen/codegen.h> -#include <llvm/IR/Constants.h> -#include <llvm/IR/DerivedTypes.h> -#include <llvm/IR/Instructions.h> -#include <llvm/IR/LLVMContext.h> -#include <llvm/IR/Module.h> +#include <codegen_ut_llvm_deps.h> // Y_IGNORE #include <library/cpp/testing/unittest/registar.h> #include <library/cpp/resource/resource.h> diff --git a/ydb/library/yql/minikql/codegen/codegen_ut_llvm_deps.h.txt b/ydb/library/yql/minikql/codegen/codegen_ut_llvm_deps.h.txt new file mode 100644 index 0000000000..2d4a3ccbc9 --- /dev/null +++ b/ydb/library/yql/minikql/codegen/codegen_ut_llvm_deps.h.txt @@ -0,0 +1,7 @@ +#pragma once + +#include <llvm/IR/Constants.h> +#include <llvm/IR/DerivedTypes.h> +#include <llvm/IR/Instructions.h> +#include <llvm/IR/LLVMContext.h> +#include <llvm/IR/Module.h> diff --git a/ydb/library/yql/minikql/codegen/llvm/ut/ya.make b/ydb/library/yql/minikql/codegen/llvm/ut/ya.make new file mode 100644 index 0000000000..85f3f16cbb --- /dev/null +++ b/ydb/library/yql/minikql/codegen/llvm/ut/ya.make @@ -0,0 +1,27 @@ +UNITTEST() + +PEERDIR( + contrib/libs/llvm12/lib/IR + contrib/libs/llvm12/lib/ExecutionEngine/MCJIT + contrib/libs/llvm12/lib/Linker + contrib/libs/llvm12/lib/Target/X86 + contrib/libs/llvm12/lib/Target/X86/AsmParser + contrib/libs/llvm12/lib/Target/X86/Disassembler + contrib/libs/llvm12/lib/Transforms/IPO + contrib/libs/llvm12/lib/Transforms/ObjCARC +) + +IF (OS_LINUX) + PEERDIR( + contrib/libs/llvm12/lib/ExecutionEngine/PerfJITEvents + ) +ENDIF() + +SET(LLVM_VER 12) + +INCLUDE(../../ut/ya.make.inc) + +PEERDIR(ydb/library/yql/minikql/codegen/llvm) + +END() + diff --git a/ydb/library/yql/minikql/codegen/llvm/ya.make b/ydb/library/yql/minikql/codegen/llvm/ya.make new file mode 100644 index 0000000000..ada81a0d32 --- /dev/null +++ b/ydb/library/yql/minikql/codegen/llvm/ya.make @@ -0,0 +1,26 @@ +LIBRARY() + +PEERDIR( + contrib/libs/llvm12/lib/IR + contrib/libs/llvm12/lib/ExecutionEngine/MCJIT + contrib/libs/llvm12/lib/Linker + contrib/libs/llvm12/lib/Target/X86 + contrib/libs/llvm12/lib/Target/X86/AsmParser + contrib/libs/llvm12/lib/Target/X86/Disassembler + contrib/libs/llvm12/lib/Transforms/IPO + contrib/libs/llvm12/lib/Transforms/ObjCARC +) + +IF (OS_LINUX) + PEERDIR( + contrib/libs/llvm12/lib/ExecutionEngine/PerfJITEvents + ) +ENDIF() + +INCLUDE(../ya.make.inc) + +END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/ydb/library/yql/minikql/codegen/llvm14/ut/ya.make b/ydb/library/yql/minikql/codegen/llvm14/ut/ya.make new file mode 100644 index 0000000000..a542021b9f --- /dev/null +++ b/ydb/library/yql/minikql/codegen/llvm14/ut/ya.make @@ -0,0 +1,27 @@ +UNITTEST() + +PEERDIR( + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Target/X86/Disassembler + contrib/libs/llvm14/lib/Transforms/IPO + contrib/libs/llvm14/lib/Transforms/ObjCARC +) + +IF (OS_LINUX) + PEERDIR( + contrib/libs/llvm14/lib/ExecutionEngine/PerfJITEvents + ) +ENDIF() + + +SET(LLVM_VER 14) + +INCLUDE(../../ut/ya.make.inc) + +PEERDIR(ydb/library/yql/minikql/codegen/llvm14) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/codegen/llvm14/ya.make b/ydb/library/yql/minikql/codegen/llvm14/ya.make new file mode 100644 index 0000000000..68982baff7 --- /dev/null +++ b/ydb/library/yql/minikql/codegen/llvm14/ya.make @@ -0,0 +1,26 @@ +LIBRARY() + +PEERDIR( + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Target/X86/Disassembler + contrib/libs/llvm14/lib/Transforms/IPO + contrib/libs/llvm14/lib/Transforms/ObjCARC +) + +IF (OS_LINUX) + PEERDIR( + contrib/libs/llvm14/lib/ExecutionEngine/PerfJITEvents + ) +ENDIF() + +INCLUDE(../ya.make.inc) + +END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/ydb/library/yql/minikql/codegen/ut/ya.make b/ydb/library/yql/minikql/codegen/ut/ya.make.inc index bc942549b1..876e6a06e5 100644 --- a/ydb/library/yql/minikql/codegen/ut/ya.make +++ b/ydb/library/yql/minikql/codegen/ut/ya.make.inc @@ -1,11 +1,32 @@ -UNITTEST_FOR(ydb/library/yql/minikql/codegen) +OWNER(g:yql) NO_COMPILER_WARNINGS() -SRCS( - codegen_ut.cpp +ADDINCL( + ${ARCADIA_BUILD_ROOT}/${MODDIR} ) +COPY_FILE( + TEXT + ../codegen_ut_llvm_deps.h.txt codegen_ut_llvm_deps.h + OUTPUT_INCLUDES + llvm/IR/Constants.h + llvm/IR/DerivedTypes.h + llvm/IR/Instructions.h + llvm/IR/LLVMContext.h + llvm/IR/Module.h +) + + +COPY_FILE( + AUTO + ../codegen_ut.cpp codegen_ut.cpp + OUTPUT_INCLUDES + codegen_ut_llvm_deps.h +) + +SRCDIR(ydb/library/yql/minikql/codegen/ut) + IF (OS_WINDOWS) LLVM_BC( fib.cpp @@ -15,6 +36,7 @@ IF (OS_WINDOWS) 128_bit.cpp 128_bit_win.ll NAME Funcs + SUFFIX .${LLVM_VER} SYMBOLS fib sum_sqr @@ -32,6 +54,7 @@ ELSE() 128_bit.cpp 128_bit.ll NAME Funcs + SUFFIX .${LLVM_VER} SYMBOLS fib sum_sqr @@ -42,4 +65,4 @@ ELSE() ) ENDIF() -END() + diff --git a/ydb/library/yql/minikql/codegen/ya.make b/ydb/library/yql/minikql/codegen/ya.make index fc5ba7756b..5d082d5ae9 100644 --- a/ydb/library/yql/minikql/codegen/ya.make +++ b/ydb/library/yql/minikql/codegen/ya.make @@ -1,41 +1 @@ -LIBRARY() - -SRCS( - codegen.cpp -) - -NO_COMPILER_WARNINGS() - -IF (NOT WINDOWS) - PEERDIR( - contrib/libs/cxxsupp/builtins - ) -ELSE() - PEERDIR( - ydb/library/yql/public/decimal - ) -ENDIF() - -PEERDIR( - contrib/libs/re2 - contrib/libs/llvm12/lib/IR - contrib/libs/llvm12/lib/ExecutionEngine/MCJIT - contrib/libs/llvm12/lib/Linker - contrib/libs/llvm12/lib/Target/X86 - contrib/libs/llvm12/lib/Target/X86/AsmParser - contrib/libs/llvm12/lib/Target/X86/Disassembler - contrib/libs/llvm12/lib/Transforms/IPO - contrib/libs/llvm12/lib/Transforms/ObjCARC -) - -IF (OS_LINUX) - PEERDIR( - contrib/libs/llvm12/lib/ExecutionEngine/PerfJITEvents - ) -ENDIF() - -END() - -RECURSE_FOR_TESTS( - ut -) +RECURSE(llvm llvm14)
\ No newline at end of file diff --git a/ydb/library/yql/minikql/codegen/ya.make.inc b/ydb/library/yql/minikql/codegen/ya.make.inc new file mode 100644 index 0000000000..65b7b788d0 --- /dev/null +++ b/ydb/library/yql/minikql/codegen/ya.make.inc @@ -0,0 +1,66 @@ +OWNER( + g:yql + g:yql_ydb_core +) + +ADDINCL( + ${ARCADIA_BUILD_ROOT}/${MODDIR} + ydb/library/yql/minikql/codegen +) + +COPY_FILE( + AUTO + ../codegen_llvm_deps.h.txt ${ARCADIA_BUILD_ROOT}/${MODDIR}/codegen_llvm_deps.h + OUTPUT_INCLUDES + llvm/ExecutionEngine/ExecutionEngine.h + llvm/ExecutionEngine/JITEventListener.h + llvm/ExecutionEngine/MCJIT.h + llvm/IR/DiagnosticInfo.h + llvm/IR/DiagnosticPrinter.h + llvm/IR/LegacyPassManager.h + llvm/IR/LLVMContext.h + llvm/IR/Module.h + llvm/IR/Verifier.h + llvm/IRReader/IRReader.h + llvm/Linker/Linker.h + llvm-c/Disassembler.h + llvm/Support/Host.h + llvm/Support/ManagedStatic.h + llvm/Support/SourceMgr.h + llvm/Support/TargetSelect.h + llvm/Support/Timer.h + llvm/Support/ErrorHandling.h + llvm/Transforms/IPO.h + llvm/Transforms/IPO/PassManagerBuilder.h + llvm/Transforms/Instrumentation.h + llvm/Transforms/Instrumentation/AddressSanitizer.h + llvm/Transforms/Instrumentation/MemorySanitizer.h + llvm/Transforms/Instrumentation/ThreadSanitizer.h + llvm/LinkAllPasses.h +) + + +COPY_FILE( + AUTO + ../codegen.cpp codegen.cpp + OUTPUT_INCLUDES + codegen_llvm_deps.h +) + +NO_COMPILER_WARNINGS() + +IF (NOT WINDOWS) + PEERDIR( + contrib/libs/cxxsupp/builtins + ) +ELSE() + PEERDIR( + ydb/library/yql/public/decimal + ) +ENDIF() + +PEERDIR( + contrib/libs/re2 +) + +PROVIDES(MINIKQL_CODEGEN) diff --git a/ydb/library/yql/minikql/comp_nodes/llvm/ut/ya.make b/ydb/library/yql/minikql/comp_nodes/llvm/ut/ya.make new file mode 100644 index 0000000000..956d4f4a73 --- /dev/null +++ b/ydb/library/yql/minikql/comp_nodes/llvm/ut/ya.make @@ -0,0 +1,19 @@ +UNITTEST() + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm + ydb/library/yql/minikql/comp_nodes/llvm + ydb/library/yql/minikql/invoke_builtins/llvm + contrib/libs/llvm12/lib/IR + contrib/libs/llvm12/lib/ExecutionEngine/MCJIT + contrib/libs/llvm12/lib/Linker + contrib/libs/llvm12/lib/Target/X86 + contrib/libs/llvm12/lib/Target/X86/AsmParser + contrib/libs/llvm12/lib/Transforms/IPO +) + +INCLUDE(../../ut/ya.make.inc) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/comp_nodes/llvm/ya.make b/ydb/library/yql/minikql/comp_nodes/llvm/ya.make index e92bc4dfb7..1b6561071e 100644 --- a/ydb/library/yql/minikql/comp_nodes/llvm/ya.make +++ b/ydb/library/yql/minikql/comp_nodes/llvm/ya.make @@ -1,9 +1,14 @@ LIBRARY() +OWNER( + g:yql + g:yql_ydb_core +) + NO_COMPILER_WARNINGS() PEERDIR( - ydb/library/yql/minikql/codegen + ydb/library/yql/minikql/codegen/llvm ydb/library/yql/minikql/invoke_builtins/llvm contrib/libs/llvm12/lib/IR contrib/libs/llvm12/lib/ExecutionEngine/MCJIT @@ -17,3 +22,7 @@ INCLUDE(../ya.make.inc) END() +RECURSE_FOR_TESTS( + ut +) + diff --git a/ydb/library/yql/minikql/comp_nodes/llvm14/ut/ya.make b/ydb/library/yql/minikql/comp_nodes/llvm14/ut/ya.make new file mode 100644 index 0000000000..0126919c93 --- /dev/null +++ b/ydb/library/yql/minikql/comp_nodes/llvm14/ut/ya.make @@ -0,0 +1,19 @@ +UNITTEST() + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm14 + ydb/library/yql/minikql/comp_nodes/llvm14 + ydb/library/yql/minikql/invoke_builtins/llvm14 + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Transforms/IPO +) + +INCLUDE(../../ut/ya.make.inc) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/comp_nodes/llvm14/ya.make b/ydb/library/yql/minikql/comp_nodes/llvm14/ya.make new file mode 100644 index 0000000000..77eb4fbd8f --- /dev/null +++ b/ydb/library/yql/minikql/comp_nodes/llvm14/ya.make @@ -0,0 +1,27 @@ +LIBRARY() + +OWNER( + g:yql + g:yql_ydb_core +) + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm14 + ydb/library/yql/minikql/invoke_builtins/llvm14 + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Transforms/IPO +) + +INCLUDE(../ya.make.inc) + +END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_addmember.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_addmember.cpp index 7cdfee695d..8f0d32f296 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_addmember.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_addmember.cpp @@ -1,6 +1,7 @@ #include "mkql_addmember.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_aggrcount.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_aggrcount.cpp index c08aadfd84..616743ade7 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_aggrcount.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_aggrcount.cpp @@ -1,6 +1,7 @@ #include "mkql_aggrcount.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_append.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_append.cpp index c9499169c9..abc913a06f 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_append.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_append.cpp @@ -1,6 +1,6 @@ #include "mkql_append.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_apply.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_apply.cpp index 4f0c2dec4c..5f24fe2ccc 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_apply.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_apply.cpp @@ -1,7 +1,7 @@ #include "mkql_apply.h" #include <ydb/library/yql/minikql/computation/mkql_block_impl.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <library/cpp/containers/stack_array/stack_array.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp index 88ddb42ac4..ca91d66c45 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_agg.cpp @@ -5,9 +5,10 @@ #include <ydb/library/yql/minikql/computation/mkql_block_reader.h> #include <ydb/library/yql/minikql/computation/mkql_block_builder.h> #include <ydb/library/yql/minikql/computation/mkql_block_impl.h> +#include <ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_impl.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_compress.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_compress.cpp index f24b163376..b90c759406 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_block_compress.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_compress.cpp @@ -2,11 +2,12 @@ #include <ydb/library/yql/minikql/computation/mkql_block_builder.h> #include <ydb/library/yql/minikql/computation/mkql_block_impl.h> +#include <ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h> #include <ydb/library/yql/minikql/arrow/arrow_util.h> #include <ydb/library/yql/minikql/arrow/mkql_bit_utils.h> #include <ydb/library/yql/minikql/mkql_type_builder.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp index 6455a05587..d36f80a8e1 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp @@ -5,7 +5,7 @@ #include <ydb/library/yql/minikql/arrow/arrow_util.h> #include <ydb/library/yql/minikql/mkql_type_builder.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_top.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_top.cpp index 50e787272e..be3309b044 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_block_top.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_top.cpp @@ -3,6 +3,7 @@ #include <ydb/library/yql/minikql/computation/mkql_block_reader.h> #include <ydb/library/yql/minikql/computation/mkql_block_builder.h> #include <ydb/library/yql/minikql/computation/mkql_block_impl.h> +#include <ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h> #include <ydb/library/yql/public/udf/arrow/block_item_comparator.h> @@ -10,7 +11,7 @@ #include <ydb/library/yql/minikql/arrow/arrow_util.h> #include <ydb/library/yql/minikql/mkql_type_builder.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp index b0130cca0f..a719c116f9 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp @@ -3,11 +3,12 @@ #include <ydb/library/yql/minikql/computation/mkql_block_reader.h> #include <ydb/library/yql/minikql/computation/mkql_block_builder.h> #include <ydb/library/yql/minikql/computation/mkql_block_impl.h> +#include <ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h> #include <ydb/library/yql/minikql/arrow/arrow_defs.h> #include <ydb/library/yql/minikql/arrow/arrow_util.h> #include <ydb/library/yql/minikql/mkql_type_builder.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_callable.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_callable.cpp index a163dd684d..8708daf0e1 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_callable.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_callable.cpp @@ -1,5 +1,5 @@ #include "mkql_callable.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_chain1_map.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_chain1_map.cpp index dab2cd4b5b..5c11feed49 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_chain1_map.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_chain1_map.cpp @@ -1,6 +1,6 @@ #include "mkql_chain1_map.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_chain_map.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_chain_map.cpp index af9fe58d16..c798bd73e4 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_chain_map.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_chain_map.cpp @@ -1,6 +1,6 @@ #include "mkql_chain_map.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_chopper.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_chopper.cpp index a27c803bdc..ef8c5ffdc6 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_chopper.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_chopper.cpp @@ -1,6 +1,6 @@ #include "mkql_chopper.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_coalesce.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_coalesce.cpp index 014ecc9771..2bed26ed81 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_coalesce.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_coalesce.cpp @@ -1,5 +1,5 @@ #include "mkql_coalesce.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_collect.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_collect.cpp index 05849e45f7..a70828fcdd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_collect.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_collect.cpp @@ -1,6 +1,6 @@ #include "mkql_collect.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp index 9cf7db1a19..575c0aa553 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp @@ -1,6 +1,6 @@ #include "mkql_combine.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_stats_registry.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_condense.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_condense.cpp index 2a99bfb9b0..588c476a8c 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_condense.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_condense.cpp @@ -4,7 +4,7 @@ #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_condense1.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_condense1.cpp index 43cffed7cd..89503e8255 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_condense1.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_condense1.cpp @@ -4,7 +4,7 @@ #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_contains.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_contains.cpp index 75c8cb4f02..009cad6021 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_contains.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_contains.cpp @@ -1,5 +1,5 @@ #include "mkql_contains.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_decimal_div.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_decimal_div.cpp index bb0124725f..d1335dfca3 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_decimal_div.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_decimal_div.cpp @@ -1,6 +1,6 @@ #include "mkql_decimal_div.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> -#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/public/decimal/yql_decimal.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mod.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mod.cpp index b953039e12..0f3d35349a 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mod.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mod.cpp @@ -1,6 +1,6 @@ #include "mkql_decimal_div.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> -#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/public/decimal/yql_decimal.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mul.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mul.cpp index ab135d8fc0..b776763d91 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mul.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_decimal_mul.cpp @@ -1,6 +1,6 @@ #include "mkql_decimal_mul.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> -#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/public/decimal/yql_decimal.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_dictitems.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_dictitems.cpp index b2a2ac4e0a..6a6c018148 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_dictitems.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_dictitems.cpp @@ -1,6 +1,7 @@ #include "mkql_dictitems.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_program_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_discard.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_discard.cpp index 7b9dff2e62..0569360d99 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_discard.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_discard.cpp @@ -1,6 +1,6 @@ #include "mkql_discard.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_runtime_version.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_element.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_element.cpp index d6649a40a9..fd7fb67427 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_element.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_element.cpp @@ -1,5 +1,5 @@ #include "mkql_element.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_ensure.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_ensure.cpp index c9e8d4c5c5..74166050dc 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_ensure.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_ensure.cpp @@ -1,5 +1,5 @@ #include "mkql_ensure.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_program_builder.h> #include <ydb/library/yql/public/udf/udf_terminator.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_enumerate.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_enumerate.cpp index 34639d7ec4..03f86c447b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_enumerate.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_enumerate.cpp @@ -1,6 +1,7 @@ #include "mkql_enumerate.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_exists.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_exists.cpp index 7cffd75739..c8a25335b9 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_exists.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_exists.cpp @@ -1,5 +1,5 @@ #include "mkql_exists.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_extend.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_extend.cpp index 1c4ac7456e..7975d22e74 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_extend.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_extend.cpp @@ -1,6 +1,6 @@ #include "mkql_extend.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_factory.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_factory.cpp index 3a3cbc4fd3..f8bde610d8 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_factory.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_factory.cpp @@ -113,7 +113,7 @@ #include "mkql_withcontext.h" #include "mkql_zip.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <string_view> #include <unordered_map> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_filter.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_filter.cpp index 0641165317..034e9c25c3 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_filter.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_filter.cpp @@ -1,6 +1,6 @@ #include "mkql_filter.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp index bfb5881422..51cf8316cd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp @@ -1,6 +1,6 @@ #include "mkql_flatmap.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/utils/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_flow.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_flow.cpp index dbe5925570..c4744d760b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_flow.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_flow.cpp @@ -1,6 +1,6 @@ #include "mkql_flow.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_fold.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_fold.cpp index d3d00d8b3e..8723f3e44a 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_fold.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_fold.cpp @@ -1,5 +1,5 @@ #include "mkql_fold.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_fold1.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_fold1.cpp index e5f344a613..4d13424863 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_fold1.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_fold1.cpp @@ -1,5 +1,5 @@ #include "mkql_fold1.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_fromstring.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_fromstring.cpp index 6afd780ffa..44a3d8cf7b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_fromstring.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_fromstring.cpp @@ -1,10 +1,10 @@ #include "mkql_fromstring.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> -#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> +#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h> // Y_IGNORE #include <ydb/library/yql/public/udf/udf_terminator.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp index 9cd39efa5a..43812c7abb 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp @@ -8,7 +8,7 @@ #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> #include <ydb/library/yql/minikql/comp_nodes/mkql_factories.h> #include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_pack.h> #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_guess.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_guess.cpp index 2642cbdb6b..a141e57fd4 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_guess.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_guess.cpp @@ -1,5 +1,5 @@ #include "mkql_guess.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_hasitems.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_hasitems.cpp index 4e7e307d78..108e9d4f5c 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_hasitems.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_hasitems.cpp @@ -1,5 +1,5 @@ #include "mkql_hasitems.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_heap.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_heap.cpp index a77136640f..af1f694777 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_heap.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_heap.cpp @@ -1,7 +1,7 @@ #include "mkql_heap.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_if.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_if.cpp index 8b61744364..f4124f0a03 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_if.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_if.cpp @@ -1,5 +1,5 @@ #include "mkql_if.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_ifpresent.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_ifpresent.cpp index fa36453086..2ad1beb61b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_ifpresent.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_ifpresent.cpp @@ -1,5 +1,5 @@ #include "mkql_ifpresent.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_invoke.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_invoke.cpp index 95f0492c1b..f27c375a87 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_invoke.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_invoke.cpp @@ -1,6 +1,6 @@ #include "mkql_invoke.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_iterator.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_iterator.cpp index 55778f58e7..2d2872b400 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_iterator.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_iterator.cpp @@ -1,7 +1,8 @@ #include "mkql_iterator.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp index ced7166e5f..1020a706f7 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp @@ -1,7 +1,8 @@ #include "mkql_join.h" #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_pack.h> #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_join_dict.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_join_dict.cpp index 21e40ff88a..cf0c29aa41 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_join_dict.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_join_dict.cpp @@ -2,7 +2,7 @@ #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_program_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_lazy_list.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_lazy_list.cpp index f50e1000ac..85f304f0d9 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_lazy_list.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_lazy_list.cpp @@ -1,6 +1,6 @@ #include "mkql_lazy_list.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_length.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_length.cpp index cf8c1e5ae6..ec26a228ab 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_length.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_length.cpp @@ -1,6 +1,6 @@ #include "mkql_length.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> -#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_listfromrange.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_listfromrange.cpp index 58ba03b54e..87262250fd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_listfromrange.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_listfromrange.cpp @@ -1,6 +1,6 @@ #include "mkql_listfromrange.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_logical.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_logical.cpp index 795f4d92bd..ed84bd4c5a 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_logical.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_logical.cpp @@ -1,5 +1,5 @@ #include "mkql_logical.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include "mkql_check_args.h" diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_lookup.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_lookup.cpp index 8ef161d424..689c8c739d 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_lookup.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_lookup.cpp @@ -1,5 +1,5 @@ #include "mkql_lookup.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_map.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_map.cpp index ce1b534cf8..0a7e5e493e 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_map.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_map.cpp @@ -1,6 +1,6 @@ #include "mkql_map.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp index 4b000dd8df..803652d2cd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp @@ -1,7 +1,8 @@ #include "mkql_map_join.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_program_builder.h> #include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_match_recognize.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_match_recognize.cpp index 2058d02575..160dfbf8bc 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_match_recognize.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_match_recognize.cpp @@ -5,6 +5,7 @@ #include <ydb/library/yql/core/sql_types/match_recognize.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_impl.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_pack.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_runtime_version.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_multimap.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_multimap.cpp index 96f1508795..be355d747b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_multimap.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_multimap.cpp @@ -1,6 +1,6 @@ #include "mkql_multimap.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/utils/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_null.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_null.cpp index a08f71206f..025c528d60 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_null.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_null.cpp @@ -1,5 +1,6 @@ #include "mkql_null.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_prepend.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_prepend.cpp index 280ce19128..faef8c4c4f 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_prepend.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_prepend.cpp @@ -1,6 +1,6 @@ #include "mkql_prepend.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_random.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_random.cpp index 2621689fc3..d46dbaeee9 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_random.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_random.cpp @@ -1,5 +1,6 @@ #include "mkql_random.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_program_builder.h> #include <ydb/library/yql/minikql/mkql_string_util.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_reduce.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_reduce.cpp index a921dad4e6..4fce63ffbd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_reduce.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_reduce.cpp @@ -1,6 +1,6 @@ #include "mkql_reduce.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_removemember.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_removemember.cpp index 338f3fdb37..442ddfe3bb 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_removemember.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_removemember.cpp @@ -1,6 +1,7 @@ #include "mkql_removemember.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_reverse.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_reverse.cpp index fd7cbefc65..40feae31f5 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_reverse.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_reverse.cpp @@ -1,6 +1,6 @@ #include "mkql_reverse.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_size.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_size.cpp index 88a88b6bf9..a1ef8e6eed 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_size.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_size.cpp @@ -1,6 +1,7 @@ #include "mkql_size.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_skip.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_skip.cpp index 996a9d1d7e..881450504c 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_skip.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_skip.cpp @@ -1,6 +1,6 @@ #include "mkql_skip.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_source.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_source.cpp index d68ad0aaf0..1610c98c5d 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_source.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_source.cpp @@ -1,6 +1,7 @@ #include "mkql_source.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_squeeze_to_list.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_squeeze_to_list.cpp index 40f73014aa..550edda117 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_squeeze_to_list.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_squeeze_to_list.cpp @@ -2,7 +2,7 @@ #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp index ea5df1c8da..643018d4c5 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp @@ -1,6 +1,6 @@ #include "mkql_switch.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_stats_registry.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_take.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_take.cpp index 41e6ba86c7..16ea5fcbbd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_take.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_take.cpp @@ -1,6 +1,6 @@ #include "mkql_take.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_time_order_recover.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_time_order_recover.cpp index ee8aebbfdd..f32d828a0f 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_time_order_recover.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_time_order_recover.cpp @@ -1,7 +1,8 @@ #include "mkql_time_order_recover.h" #include "mkql_saveload.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_string_util.h> #include <queue> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_timezone.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_timezone.cpp index 8838143650..e8f08fcfa6 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_timezone.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_timezone.cpp @@ -1,5 +1,5 @@ #include "mkql_timezone.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_string_util.h> #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_tobytes.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_tobytes.cpp index 29246ddce2..5e22714213 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_tobytes.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_tobytes.cpp @@ -1,5 +1,5 @@ #include "mkql_tobytes.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/utils/swap_bytes.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_todict.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_todict.cpp index 51264ebad8..220fc19ebd 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_todict.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_todict.cpp @@ -1,7 +1,7 @@ #include "mkql_todict.h" #include <ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_pack.h> #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_toindexdict.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_toindexdict.cpp index 6593797cfd..d671cc3fef 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_toindexdict.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_toindexdict.cpp @@ -1,6 +1,6 @@ #include "mkql_toindexdict.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_tooptional.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_tooptional.cpp index 25d275709c..3578de1f62 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_tooptional.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_tooptional.cpp @@ -1,5 +1,5 @@ #include "mkql_tooptional.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_tostring.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_tostring.cpp index 11ed1dc74f..b60f141261 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_tostring.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_tostring.cpp @@ -1,7 +1,7 @@ #include "mkql_tostring.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_udf.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_udf.cpp index c083843926..e5527387df 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_udf.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_udf.cpp @@ -1,6 +1,7 @@ #include "mkql_udf.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/computation/mkql_validate.h> #include <ydb/library/yql/minikql/mkql_function_registry.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_unwrap.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_unwrap.cpp index 09caba5307..6bdbebbb04 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_unwrap.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_unwrap.cpp @@ -1,5 +1,5 @@ #include "mkql_unwrap.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/public/udf/udf_terminator.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_varitem.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_varitem.cpp index 43111ad9ba..9c3072e2d9 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_varitem.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_varitem.cpp @@ -1,6 +1,6 @@ #include "mkql_varitem.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_visitall.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_visitall.cpp index 2762dd841c..331c82ac1b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_visitall.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_visitall.cpp @@ -1,5 +1,5 @@ #include "mkql_visitall.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <util/string/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_way.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_way.cpp index ebb87ae398..9de8d09018 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_way.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_way.cpp @@ -1,6 +1,7 @@ #include "mkql_way.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_string_util.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_while.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_while.cpp index 6f0e84ed5c..649da3d5e4 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_while.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_while.cpp @@ -1,6 +1,6 @@ #include "mkql_while.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_chain_map.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_chain_map.cpp index a04b7edaf6..a9cdd38156 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_chain_map.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_chain_map.cpp @@ -1,6 +1,6 @@ #include "mkql_wide_chain_map.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/utils/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_chopper.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_chopper.cpp index ab946a7916..8a32efc421 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_chopper.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_chopper.cpp @@ -1,6 +1,6 @@ #include "mkql_chopper.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/utils/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_combine.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_combine.cpp index a0ee20997f..7a3f0f3d09 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_combine.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_combine.cpp @@ -1,7 +1,7 @@ #include "mkql_wide_combine.h" #include "mkql_rh_hash.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_condense.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_condense.cpp index 66e13153d5..aae09f6053 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_condense.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_condense.cpp @@ -3,7 +3,7 @@ #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/utils/cast.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_filter.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_filter.cpp index d943968e5e..ef9e5ef89a 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_filter.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_filter.cpp @@ -1,6 +1,6 @@ #include "mkql_wide_filter.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/utils/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_map.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_map.cpp index 39744c6412..5e37dd99bf 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_map.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_map.cpp @@ -1,6 +1,6 @@ #include "mkql_wide_map.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/mkql_node_cast.h> #include <ydb/library/yql/utils/cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_wide_top_sort.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_wide_top_sort.cpp index 071342579e..7ad66ba832 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_wide_top_sort.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_wide_top_sort.cpp @@ -1,6 +1,6 @@ #include "mkql_wide_top_sort.h" -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_llvm_base.h> #include <ydb/library/yql/minikql/computation/presort.h> #include <ydb/library/yql/minikql/mkql_node_builder.h> diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_withcontext.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_withcontext.cpp index c4c29dc405..9358f9adf7 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_withcontext.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_withcontext.cpp @@ -1,7 +1,7 @@ #include "mkql_withcontext.h" #include <ydb/library/yql/minikql/mkql_node_cast.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> #include <ydb/library/yql/parser/pg_wrapper/interface/context.h> @@ -211,7 +211,7 @@ public: block = main; - const auto state = new LoadInst(statePtr, "state", block); + const auto state = new LoadInst(statePtrType, statePtr, "state", block); const auto half = CastInst::Create(Instruction::Trunc, state, Type::getInt64Ty(context), "half", block); const auto stateArg = CastInst::Create(Instruction::IntToPtr, half, statePtrType, "state_arg", block); diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_zip.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_zip.cpp index 940a59f675..bb5a708afe 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_zip.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_zip.cpp @@ -1,5 +1,6 @@ #include "mkql_zip.h" #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/minikql/computation/mkql_custom_list.h> #include <ydb/library/yql/minikql/mkql_node_cast.h> diff --git a/ydb/library/yql/minikql/comp_nodes/no_llvm/ya.make b/ydb/library/yql/minikql/comp_nodes/no_llvm/ya.make index 589a87f354..58bb2d80c8 100644 --- a/ydb/library/yql/minikql/comp_nodes/no_llvm/ya.make +++ b/ydb/library/yql/minikql/comp_nodes/no_llvm/ya.make @@ -1,5 +1,10 @@ LIBRARY() +OWNER( + g:yql + g:yql_ydb_core +) + CXXFLAGS(-DMKQL_DISABLE_CODEGEN) ADDINCL(GLOBAL ydb/library/yql/minikql/codegen/llvm_stub) diff --git a/ydb/library/yql/minikql/comp_nodes/ut/mkql_block_skiptake_ut.cpp b/ydb/library/yql/minikql/comp_nodes/ut/mkql_block_skiptake_ut.cpp index a5ead18465..77b68ede9d 100644 --- a/ydb/library/yql/minikql/comp_nodes/ut/mkql_block_skiptake_ut.cpp +++ b/ydb/library/yql/minikql/comp_nodes/ut/mkql_block_skiptake_ut.cpp @@ -2,7 +2,7 @@ #include <ydb/library/yql/minikql/arrow/arrow_defs.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> -#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h> // Y_IGNORE #include <arrow/array/builder_primitive.h> diff --git a/ydb/library/yql/minikql/comp_nodes/ut/ya.make.inc b/ydb/library/yql/minikql/comp_nodes/ut/ya.make.inc new file mode 100644 index 0000000000..12c027fddc --- /dev/null +++ b/ydb/library/yql/minikql/comp_nodes/ut/ya.make.inc @@ -0,0 +1,105 @@ +FORK_SUBTESTS() + +SPLIT_FACTOR(60) + +IF (SANITIZER_TYPE == "thread" OR WITH_VALGRIND) + TIMEOUT(3600) + SIZE(LARGE) + TAG(ya:fat) +ELSE() + TIMEOUT(600) + SIZE(MEDIUM) +ENDIF() + +REQUIREMENTS(ram:32) + +OWNER(g:yql) + +INCLUDE(${ARCADIA_ROOT}/ydb/library/yql/minikql/computation/header.ya.make.inc) +INCLUDE(${ARCADIA_ROOT}/ydb/library/yql/minikql/invoke_builtins/header.ya.make.inc) + +SET(ORIG_SRC_DIR ydb/library/yql/minikql/comp_nodes/ut) + +SET(ORIG_SOURCES + mkql_test_factory.cpp + mkql_bit_utils_ut.cpp + mkql_block_compress_ut.cpp + mkql_block_skiptake_ut.cpp + mkql_block_top_sort_ut.cpp + mkql_blocks_ut.cpp + mkql_combine_ut.cpp + mkql_condense_ut.cpp + mkql_decimal_ut.cpp + mkql_chain_map_ut.cpp + mkql_chopper_ut.cpp + mkql_filters_ut.cpp + mkql_flatmap_ut.cpp + mkql_fromstring_ut.cpp + mkql_multihopping_saveload_ut.cpp + mkql_multihopping_ut.cpp + mkql_multimap_ut.cpp + mkql_fold_ut.cpp + mkql_heap_ut.cpp + mkql_compare_ut.cpp + mkql_computation_node_ut.cpp + mkql_group_ut.cpp + mkql_dict_ut.cpp + mkql_isa_detection_ut.cpp + mkql_join_ut.cpp + mkql_join_dict_ut.cpp + mkql_grace_join_ut.cpp + mkql_map_join_ut.cpp + mkql_match_recognize_matched_vars_ut.cpp + mkql_match_recognize_list_ut.cpp + mkql_match_recognize_nfa_ut.cpp + mkql_safe_circular_buffer_ut.cpp + mkql_sort_ut.cpp + mkql_switch_ut.cpp + mkql_todict_ut.cpp + mkql_variant_ut.cpp + mkql_wide_chain_map_ut.cpp + mkql_wide_chopper_ut.cpp + mkql_wide_combine_ut.cpp + mkql_wide_condense_ut.cpp + mkql_wide_filter_ut.cpp + mkql_wide_map_ut.cpp + mkql_wide_nodes_ut.cpp + mkql_wide_stream_ut.cpp + mkql_wide_top_sort_ut.cpp + mkql_listfromrange_ut.cpp + mkql_mapnext_ut.cpp + mkql_rh_hash_ut.cpp +) + +PEERDIR( + ydb/library/yql/public/udf + ydb/library/yql/public/udf/arrow + ydb/library/yql/public/udf/service/exception_policy + ydb/library/yql/sql/pg_dummy +) + +CFLAGS( + -mprfchw +) + +YQL_LAST_ABI_VERSION() + +IF (MKQL_RUNTIME_VERSION) + CFLAGS( + -DMKQL_RUNTIME_VERSION=$MKQL_RUNTIME_VERSION + ) +ENDIF() + +ADDINCL( + ${ORIG_SRC_DIR} +) + +COPY( + WITH_CONTEXT + AUTO + FROM ${ORIG_SRC_DIR} + ${ORIG_SOURCES} + OUTPUT_INCLUDES + ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h +) + diff --git a/ydb/library/yql/minikql/comp_nodes/ya.make b/ydb/library/yql/minikql/comp_nodes/ya.make index 424ecfb86d..3a5f1d3ab2 100644 --- a/ydb/library/yql/minikql/comp_nodes/ya.make +++ b/ydb/library/yql/minikql/comp_nodes/ya.make @@ -1,8 +1,15 @@ +OWNER( + g:yql + g:yql_ydb_core +) + RECURSE( llvm + llvm14 no_llvm ) RECURSE_FOR_TESTS( - ut + llvm/ut + llvm14/ut ) diff --git a/ydb/library/yql/minikql/comp_nodes/ya.make.inc b/ydb/library/yql/minikql/comp_nodes/ya.make.inc index fa3d5459e3..594c4a682c 100644 --- a/ydb/library/yql/minikql/comp_nodes/ya.make.inc +++ b/ydb/library/yql/minikql/comp_nodes/ya.make.inc @@ -1,6 +1,9 @@ -SRCDIR(ydb/library/yql/minikql/comp_nodes) +INCLUDE(${ARCADIA_ROOT}/ydb/library/yql/minikql/computation/header.ya.make.inc) +INCLUDE(${ARCADIA_ROOT}/ydb/library/yql/minikql/invoke_builtins/header.ya.make.inc) -SRCS( +SET(ORIG_SRC_DIR ${ARCADIA_ROOT}/ydb/library/yql/minikql/comp_nodes) + +SET(ORIG_SOURCES mkql_addmember.cpp mkql_aggrcount.cpp mkql_append.cpp @@ -127,6 +130,21 @@ SRCS( mkql_zip.cpp ) +ADDINCL( + ${ORIG_SRC_DIR} +) + +COPY( + WITH_CONTEXT + AUTO + FROM ${ORIG_SRC_DIR} + ${ORIG_SOURCES} + OUTPUT_INCLUDES + ${BINDIR}/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h +) + PEERDIR( contrib/libs/apache/arrow ydb/library/binary_json @@ -136,6 +154,7 @@ PEERDIR( ydb/library/yql/parser/pg_wrapper/interface ydb/library/yql/utils ydb/library/actors/core + ydb/library/yql/public/issue/protos ) CFLAGS( @@ -144,4 +163,4 @@ CFLAGS( YQL_LAST_ABI_VERSION() -PROVIDES(mkql_comp_nodes) +PROVIDES(MINIKQL_COMP_NODES) diff --git a/ydb/library/yql/minikql/computation/header.ya.make.inc b/ydb/library/yql/minikql/computation/header.ya.make.inc new file mode 100644 index 0000000000..91b417664c --- /dev/null +++ b/ydb/library/yql/minikql/computation/header.ya.make.inc @@ -0,0 +1,21 @@ +INCLUDE_ONCE() + +ADDINCL( + GLOBAL ${ARCADIA_BUILD_ROOT}/${MODDIR} + GLOBAL ${ARCADIA_BUILD_ROOT}/${MODDIR}/ydb/library/yql/minikql/computation +) + +COPY_FILE(TEXT + ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h.txt + ${BINDIR}/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h + OUTPUT_INCLUDES + ${ARCADIA_ROOT}/ydb/library/yql/minikql/computation/mkql_computation_node_codegen_common.h + llvm/IR/Value.h + llvm/IR/BasicBlock.h + llvm/IR/Function.h + llvm/IR/LLVMContext.h + llvm/IR/Module.h + llvm/IR/DerivedTypes.h + llvm/IR/Instructions.h + llvm/IR/Constants.h +) diff --git a/ydb/library/yql/minikql/computation/llvm/ut/ya.make b/ydb/library/yql/minikql/computation/llvm/ut/ya.make new file mode 100644 index 0000000000..c071a36450 --- /dev/null +++ b/ydb/library/yql/minikql/computation/llvm/ut/ya.make @@ -0,0 +1,19 @@ +UNITTEST() + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm + ydb/library/yql/minikql/computation/llvm + ydb/library/yql/minikql/comp_nodes/llvm + contrib/libs/llvm12/lib/IR + contrib/libs/llvm12/lib/ExecutionEngine/MCJIT + contrib/libs/llvm12/lib/Linker + contrib/libs/llvm12/lib/Target/X86 + contrib/libs/llvm12/lib/Target/X86/AsmParser + contrib/libs/llvm12/lib/Transforms/IPO +) + +INCLUDE(../../ut/ya.make.inc) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/computation/llvm/ya.make b/ydb/library/yql/minikql/computation/llvm/ya.make index 077ac01a13..a70fa31127 100644 --- a/ydb/library/yql/minikql/computation/llvm/ya.make +++ b/ydb/library/yql/minikql/computation/llvm/ya.make @@ -3,7 +3,7 @@ LIBRARY() NO_COMPILER_WARNINGS() PEERDIR( - ydb/library/yql/minikql/codegen + ydb/library/yql/minikql/codegen/llvm contrib/libs/llvm12/lib/IR contrib/libs/llvm12/lib/ExecutionEngine/MCJIT contrib/libs/llvm12/lib/Linker @@ -15,3 +15,7 @@ PEERDIR( INCLUDE(../ya.make.inc) END() + +RECURSE_FOR_TESTS( + ut +)
\ No newline at end of file diff --git a/ydb/library/yql/minikql/computation/llvm14/ut/ya.make b/ydb/library/yql/minikql/computation/llvm14/ut/ya.make new file mode 100644 index 0000000000..93e6274423 --- /dev/null +++ b/ydb/library/yql/minikql/computation/llvm14/ut/ya.make @@ -0,0 +1,19 @@ +UNITTEST() + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm14 + ydb/library/yql/minikql/computation/llvm14 + ydb/library/yql/minikql/comp_nodes/llvm14 + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Transforms/IPO +) + +INCLUDE(../../ut/ya.make.inc) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/computation/llvm14/ya.make b/ydb/library/yql/minikql/computation/llvm14/ya.make new file mode 100644 index 0000000000..222a8b1bed --- /dev/null +++ b/ydb/library/yql/minikql/computation/llvm14/ya.make @@ -0,0 +1,21 @@ +LIBRARY() + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm14 + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Transforms/IPO +) + +INCLUDE(../ya.make.inc) + +END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/ydb/library/yql/minikql/computation/mkql_block_impl.h b/ydb/library/yql/minikql/computation/mkql_block_impl.h index c710dbfd8c..9a8d39b316 100644 --- a/ydb/library/yql/minikql/computation/mkql_block_impl.h +++ b/ydb/library/yql/minikql/computation/mkql_block_impl.h @@ -2,10 +2,8 @@ #include "mkql_computation_node_impl.h" #include "mkql_computation_node_holders.h" -#include "mkql_llvm_base.h" #include <ydb/library/yql/minikql/arrow/arrow_util.h> -#include <ydb/library/yql/minikql/codegen/codegen.h> #include <ydb/library/yql/public/udf/arrow/block_item.h> #include <arrow/array.h> @@ -111,39 +109,4 @@ struct TBlockState : public TComputationValue<TBlockState> { NUdf::TUnboxedValuePod Get(const ui64 sliceSize, const THolderFactory& holderFactory, const size_t idx) const; }; -#ifndef MKQL_DISABLE_CODEGEN - class TLLVMFieldsStructureBlockState: public TLLVMFieldsStructure<TComputationValue<TBlockState>> { - private: - using TBase = TLLVMFieldsStructure<TComputationValue<TBlockState>>; - llvm::IntegerType*const CountType; - llvm::PointerType*const PointerType; - llvm::ArrayType*const SkipSpaceType; - protected: - using TBase::Context; - static constexpr auto BaseFields = 3U; - public: - std::vector<llvm::Type*> GetFieldsArray() { - std::vector<llvm::Type*> result = TBase::GetFields(); - result.emplace_back(CountType); - result.emplace_back(PointerType); - result.emplace_back(SkipSpaceType); - return result; - } - - llvm::Constant* GetCount() { - return llvm::ConstantInt::get(llvm::Type::getInt32Ty(Context), TBase::GetFieldsCount() + 0); - } - - llvm::Constant* GetPointer() { - return llvm::ConstantInt::get(llvm::Type::getInt32Ty(Context), TBase::GetFieldsCount() + 1); - } - - TLLVMFieldsStructureBlockState(llvm::LLVMContext& context, size_t width) - : TBase(context) - , CountType(llvm::Type::getInt64Ty(Context)) - , PointerType(llvm::PointerType::getUnqual(llvm::ArrayType::get(llvm::Type::getInt128Ty(Context), width))) - , SkipSpaceType(llvm::ArrayType::get(llvm::Type::getInt64Ty(Context), 9U)) // Skip std::vectors Values & Arrays - {} - }; -#endif } //namespace NKikimr::NMiniKQL diff --git a/ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h b/ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h new file mode 100644 index 0000000000..326432002e --- /dev/null +++ b/ydb/library/yql/minikql/computation/mkql_block_impl_codegen.h @@ -0,0 +1,45 @@ +#pragma once + +#include "mkql_block_item.h" +#include "mkql_llvm_base.h" + +#include <ydb/library/yql/minikql/codegen/codegen.h> + +namespace NKikimr::NMiniKQL { + +#ifndef MKQL_DISABLE_CODEGEN + class TLLVMFieldsStructureBlockState: public TLLVMFieldsStructure<TComputationValue<TBlockState>> { + private: + using TBase = TLLVMFieldsStructure<TComputationValue<TBlockState>>; + llvm::IntegerType*const CountType; + llvm::PointerType*const PointerType; + llvm::ArrayType*const SkipSpaceType; + protected: + using TBase::Context; + static constexpr auto BaseFields = 3U; + public: + std::vector<llvm::Type*> GetFieldsArray() { + std::vector<llvm::Type*> result = TBase::GetFields(); + result.emplace_back(CountType); + result.emplace_back(PointerType); + result.emplace_back(SkipSpaceType); + return result; + } + + llvm::Constant* GetCount() { + return llvm::ConstantInt::get(llvm::Type::getInt32Ty(Context), TBase::GetFieldsCount() + 0); + } + + llvm::Constant* GetPointer() { + return llvm::ConstantInt::get(llvm::Type::getInt32Ty(Context), TBase::GetFieldsCount() + 1); + } + + TLLVMFieldsStructureBlockState(llvm::LLVMContext& context, size_t width) + : TBase(context) + , CountType(llvm::Type::getInt64Ty(Context)) + , PointerType(llvm::PointerType::getUnqual(llvm::ArrayType::get(llvm::Type::getInt128Ty(Context), width))) + , SkipSpaceType(llvm::ArrayType::get(llvm::Type::getInt64Ty(Context), 9U)) // Skip std::vectors Values & Arrays + {} + }; +#endif +} //namespace NKikimr::NMiniKQL diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.cpp index 0f0c33e156..06e62e7101 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.cpp +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.cpp @@ -1,4 +1,4 @@ -#include "mkql_computation_node_codegen.h" +#include "mkql_computation_node_codegen.h" // Y_IGNORE #include "mkql_computation_node_holders.h" #include <ydb/library/yql/minikql/codegen/codegen.h> diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h b/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h.txt index 0e72bf5b64..cb4df89f59 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h.txt @@ -1,11 +1,6 @@ #pragma once -#include "mkql_computation_node_impl.h" -#include "mkql_custom_list.h" - -#include <ydb/library/yql/minikql/codegen/codegen.h> -#include <ydb/library/yql/utils/method_index.h> -#include <type_traits> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_codegen_common.h> #ifdef MKQL_DISABLE_CODEGEN namespace NKikimr { diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_codegen_common.h b/ydb/library/yql/minikql/computation/mkql_computation_node_codegen_common.h new file mode 100644 index 0000000000..f8f3720d4b --- /dev/null +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_codegen_common.h @@ -0,0 +1,8 @@ +#pragma once + +#include "mkql_computation_node_impl.h" +#include "mkql_custom_list.h" + +#include <ydb/library/yql/minikql/codegen/codegen.h> +#include <ydb/library/yql/utils/method_index.h> +#include <type_traits> diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp index cdaf0ab89e..7519d036b4 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp @@ -1,6 +1,7 @@ #include "mkql_computation_node_holders.h" +#include "mkql_computation_node_holders_codegen.h" #include "mkql_value_builder.h" -#include "mkql_computation_node_codegen.h" +#include "mkql_computation_node_codegen.h" // Y_IGNORE #include <ydb/library/yql/minikql/arrow/mkql_memory_pool.h> #include <ydb/library/yql/minikql/computation/mkql_computation_pattern_cache.h> #include <ydb/library/yql/minikql/comp_nodes/mkql_saveload.h> diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp index ee459f8e19..10119daf00 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp @@ -1,5 +1,4 @@ #include "mkql_computation_node_holders.h" -#include "mkql_computation_node_codegen.h" #include "mkql_computation_node_pack.h" #include "mkql_custom_list.h" #include "mkql_value_builder.h" @@ -232,217 +231,6 @@ private: TDefaultListRepresentation Items; }; -class TOptionalNode: public TDecoratorCodegeneratorNode<TOptionalNode> { - typedef TDecoratorCodegeneratorNode<TOptionalNode> TBaseComputation; -public: - TOptionalNode(IComputationNode* itemNode) - : TBaseComputation(itemNode) - {} - - NUdf::TUnboxedValuePod DoCalculate(TComputationContext&, const NUdf::TUnboxedValuePod& value) const { - return value.MakeOptional(); - } - -#ifndef MKQL_DISABLE_CODEGEN - Value* DoGenerateGetValue(const TCodegenContext& ctx, Value* arg, BasicBlock*& block) const { - return MakeOptional(ctx.Codegen.GetContext(), arg, block); - } -#endif -}; - -class TDirectArrayHolderInplace : public TComputationValue<TDirectArrayHolderInplace> { -public: - void* operator new(size_t sz) = delete; - void* operator new[](size_t sz) = delete; - void operator delete(void *mem, std::size_t sz) { - const auto pSize = static_cast<void*>(static_cast<ui8*>(mem) + sizeof(TComputationValue<TDirectArrayHolderInplace>)); - FreeWithSize(mem, sz + *static_cast<ui64*>(pSize) * sizeof(NUdf::TUnboxedValue)); - } - - void operator delete[](void *mem, std::size_t sz) = delete; - - TDirectArrayHolderInplace(TMemoryUsageInfo* memInfo, ui64 size) - : TComputationValue(memInfo) - , Size(size) - { - MKQL_ENSURE(Size > 0U, "Can't create empty array holder."); - MKQL_MEM_TAKE(GetMemInfo(), GetPtr(), Size * sizeof(NUdf::TUnboxedValue)); - std::memset(GetPtr(), 0, Size * sizeof(NUdf::TUnboxedValue)); - } - - ~TDirectArrayHolderInplace() { - for (ui64 i = 0U; i < Size; ++i) { - (GetPtr() + i)->~TUnboxedValue(); - } - MKQL_MEM_RETURN(GetMemInfo(), GetPtr(), Size * sizeof(NUdf::TUnboxedValue)); - } - - ui64 GetSize() const { - return Size; - } - - NUdf::TUnboxedValue* GetPtr() const { - return (NUdf::TUnboxedValue*)(this + 1); - } - -private: - class TIterator : public TTemporaryComputationValue<TIterator> { - public: - TIterator(const TDirectArrayHolderInplace* parent) - : TTemporaryComputationValue(parent->GetMemInfo()), Parent(const_cast<TDirectArrayHolderInplace*>(parent)) - {} - - private: - bool Skip() final { - return ++Current < Parent->GetSize(); - } - - bool Next(NUdf::TUnboxedValue& value) final { - if (!Skip()) - return false; - value = Parent->GetPtr()[Current]; - return true; - } - - bool NextPair(NUdf::TUnboxedValue& key, NUdf::TUnboxedValue& payload) final { - if (!Next(payload)) - return false; - key = NUdf::TUnboxedValuePod(Current); - return true; - } - - const NUdf::TRefCountedPtr<TDirectArrayHolderInplace> Parent; - ui64 Current = Max<ui64>(); - }; - - class TKeysIterator : public TTemporaryComputationValue<TKeysIterator> { - public: - TKeysIterator(const TDirectArrayHolderInplace& parent) - : TTemporaryComputationValue(parent.GetMemInfo()), Size(parent.GetSize()) - {} - private: - bool Skip() final { - return ++Current < Size; - } - - bool Next(NUdf::TUnboxedValue& key) final { - if (!Skip()) - return false; - key = NUdf::TUnboxedValuePod(Current); - return true; - } - - const ui64 Size; - ui64 Current = Max<ui64>(); - }; - - bool HasListItems() const final { - return true; - } - - bool HasDictItems() const final { - return true; - } - - bool HasFastListLength() const final { - return true; - } - - ui64 GetListLength() const final { - return Size; - } - - ui64 GetDictLength() const final { - return Size; - } - - ui64 GetEstimatedListLength() const final { - return Size; - } - - NUdf::TUnboxedValue GetListIterator() const final { - return NUdf::TUnboxedValuePod(new TIterator(this)); - } - - NUdf::TUnboxedValue GetDictIterator() const final { - return NUdf::TUnboxedValuePod(new TIterator(this)); - } - - NUdf::TUnboxedValue GetPayloadsIterator() const final { - return NUdf::TUnboxedValuePod(new TIterator(this)); - } - - NUdf::TUnboxedValue GetKeysIterator() const final { - return NUdf::TUnboxedValuePod(new TKeysIterator(*this)); - } - - NUdf::IBoxedValuePtr ReverseListImpl(const NUdf::IValueBuilder& builder) const final { - if (1U >= Size) - return const_cast<TDirectArrayHolderInplace*>(this); - - NUdf::TUnboxedValue* items = nullptr; - auto result = builder.NewArray(Size, items); - std::reverse_copy(GetPtr(), GetPtr() + Size, items); - return result.Release().AsBoxed(); - } - - NUdf::IBoxedValuePtr SkipListImpl(const NUdf::IValueBuilder& builder, ui64 count) const final { - if (!count) - return const_cast<TDirectArrayHolderInplace*>(this); - - if (count >= Size) - return builder.NewEmptyList().Release().AsBoxed(); - - const auto newSize = Size - count; - NUdf::TUnboxedValue* items = nullptr; - auto result = builder.NewArray(newSize, items); - std::copy_n(GetPtr() + count, newSize, items); - return result.Release().AsBoxed(); - } - - NUdf::IBoxedValuePtr TakeListImpl(const NUdf::IValueBuilder& builder, ui64 count) const final { - if (!count) - return builder.NewEmptyList().Release().AsBoxed(); - - if (count >= Size) - return const_cast<TDirectArrayHolderInplace*>(this); - - const auto newSize = count; - NUdf::TUnboxedValue* items = nullptr; - auto result = builder.NewArray(newSize, items); - std::copy_n(GetPtr(), newSize, items); - return result.Release().AsBoxed(); - } - - NUdf::IBoxedValuePtr ToIndexDictImpl(const NUdf::IValueBuilder&) const final { - return const_cast<TDirectArrayHolderInplace*>(this); - } - - bool Contains(const NUdf::TUnboxedValuePod& key) const final { - return key.Get<ui64>() < Size; - } - - NUdf::TUnboxedValue Lookup(const NUdf::TUnboxedValuePod& key) const final { - const auto index = key.Get<ui64>(); - return index < Size ? GetPtr()[index].MakeOptional() : NUdf::TUnboxedValuePod(); - } - - NUdf::TUnboxedValue GetElement(ui32 index) const final { - Y_DEBUG_ABORT_UNLESS(index < Size); - return GetPtr()[index]; - } - - const NUdf::TUnboxedValue* GetElements() const final { - return GetPtr(); - } - - bool IsSortedDict() const override { - return true; - } - - const ui64 Size; -}; - template <class TBaseVector> class TVectorHolderBase: public TComputationValue<TVectorHolderBase<TBaseVector>>, public TBaseVector { private: @@ -640,101 +428,6 @@ public: using TBase::TBase; }; -class TArrayNode: public TMutableCodegeneratorFallbackNode<TArrayNode> { - typedef TMutableCodegeneratorFallbackNode<TArrayNode> TBaseComputation; -public: - TArrayNode(TComputationMutables& mutables, TComputationNodePtrVector&& valueNodes) - : TBaseComputation(mutables, EValueRepresentation::Boxed) - , ValueNodes(std::move(valueNodes)) - , Cache(mutables) - { - } - - NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { - NUdf::TUnboxedValue *items = nullptr; - const auto result = Cache.NewArray(ctx, ValueNodes.size(), items); - if (!ValueNodes.empty()) { - Y_ABORT_UNLESS(items); - for (const auto& node : ValueNodes) { - *items++ = node->GetValue(ctx); - } - } - - return result; - } - -#ifndef MKQL_DISABLE_CODEGEN - Value* DoGenerateGetValue(const TCodegenContext& ctx, BasicBlock*& block) const { - if (ValueNodes.size() > CodegenArraysFallbackLimit) - return TBaseComputation::DoGenerateGetValue(ctx, block); - - auto& context = ctx.Codegen.GetContext(); - - const auto valType = Type::getInt128Ty(context); - const auto idxType = Type::getInt32Ty(context); - const auto type = ArrayType::get(valType, ValueNodes.size()); - const auto ptrType = PointerType::getUnqual(type); - /// TODO: how to get computation context or other workaround - const auto itms = *Stateless || ctx.AlwaysInline ? - new AllocaInst(ptrType, 0U, "itms", &ctx.Func->getEntryBlock().back()): - new AllocaInst(ptrType, 0U, "itms", block); - const auto result = Cache.GenNewArray(ValueNodes.size(), itms, ctx, block); - const auto itemsPtr = new LoadInst(ptrType, itms, "items", block); - - ui32 i = 0U; - for (const auto node : ValueNodes) { - const auto itemPtr = GetElementPtrInst::CreateInBounds(type, itemsPtr, {ConstantInt::get(idxType, 0), ConstantInt::get(idxType, i++)}, "item", block); - GetNodeValue(itemPtr, node, ctx, block); - } - return result; - } -#endif -private: - void RegisterDependencies() const final { - std::for_each(ValueNodes.cbegin(), ValueNodes.cend(), std::bind(&TArrayNode::DependsOn, this, std::placeholders::_1)); - } - - const TComputationNodePtrVector ValueNodes; - const TContainerCacheOnContext Cache; -}; - -class TEmptyNode : public TMutableCodegeneratorNode<TEmptyNode> { - typedef TMutableCodegeneratorNode<TEmptyNode> TBaseComputation; -public: - TEmptyNode(TComputationMutables& mutables) - : TBaseComputation(mutables, EValueRepresentation::Boxed) - {} - - NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { - return ctx.HolderFactory.GetEmptyContainerLazy(); - } - -#ifndef MKQL_DISABLE_CODEGEN - Value* DoGenerateGetValue(const TCodegenContext& ctx, BasicBlock*& block) const { - auto& context = ctx.Codegen.GetContext(); - const auto valueType = Type::getInt128Ty(context); - const auto factory = ctx.GetFactory(); - const auto func = ConstantInt::get(Type::getInt64Ty(context), GetMethodPtr(&THolderFactory::GetEmptyContainerLazy)); - - if (NYql::NCodegen::ETarget::Windows != ctx.Codegen.GetEffectiveTarget()) { - const auto funType = FunctionType::get(valueType, {factory->getType()}, false); - const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); - const auto res = CallInst::Create(funType, funcPtr, {factory}, "res", block); - return res; - } else { - const auto retPtr = new AllocaInst(valueType, 0U, "ret_ptr", block); - const auto funType = FunctionType::get(Type::getVoidTy(context), {factory->getType(), retPtr->getType()}, false); - const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); - CallInst::Create(funType, funcPtr, {factory, retPtr}, "", block); - const auto res = new LoadInst(valueType, retPtr, "res", block); - return res; - } - } -#endif -private: - void RegisterDependencies() const final {} -}; - class TEmptyContainerHolder: public TComputationValue<TEmptyContainerHolder> { public: TEmptyContainerHolder(TMemoryUsageInfo* memInfo) @@ -2725,110 +2418,6 @@ private: TComputationContext* Ctx; }; -class TDictNode: public TMutableComputationNode<TDictNode> { - typedef TMutableComputationNode<TDictNode> TBaseComputation; -public: - TDictNode(TComputationMutables& mutables, - std::vector<std::pair<IComputationNode*, IComputationNode*>>&& itemNodes, - const TKeyTypes& types, bool isTuple, TType* encodedType, - NUdf::IHash::TPtr hash, NUdf::IEquate::TPtr equate, - NUdf::ICompare::TPtr compare, bool isSorted) - : TBaseComputation(mutables) - , ItemNodes(std::move(itemNodes)) - , Types(types) - , IsTuple(isTuple) - , EncodedType(encodedType) - , Hash(hash) - , Equate(equate) - , Compare(compare) - , IsSorted(isSorted) - {} - - NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { - TKeyPayloadPairVector items; - items.reserve(ItemNodes.size()); - for (const auto& node : ItemNodes) { - items.emplace_back(node.first->GetValue(ctx), node.second->GetValue(ctx)); - } - - std::optional<TValuePacker> packer; - if (EncodedType) { - packer.emplace(true, EncodedType); - } - - if (IsSorted) { - const TSortedDictFiller filler = [&](TKeyPayloadPairVector& values) { - values = std::move(items); - }; - - return ctx.HolderFactory.CreateDirectSortedDictHolder(filler, Types, IsTuple, EDictSortMode::RequiresSorting, - true, EncodedType, Compare.Get(), Equate.Get()); - } else { - THashedDictFiller filler = - [&items, &packer](TValuesDictHashMap& map) { - for (auto& value : items) { - auto key = std::move(value.first); - if (packer) { - key = MakeString(packer->Pack(key)); - } - - map.emplace(std::move(key), std::move(value.second)); - } - }; - - return ctx.HolderFactory.CreateDirectHashedDictHolder( - filler, Types, IsTuple, true, EncodedType, Hash.Get(), Equate.Get()); - } - } - -private: - void RegisterDependencies() const final { - for (const auto& itemNode : ItemNodes) { - DependsOn(itemNode.first); - DependsOn(itemNode.second); - } - } - - const std::vector<std::pair<IComputationNode*, IComputationNode*>> ItemNodes; - const TKeyTypes Types; - const bool IsTuple; - TType* EncodedType; - NUdf::IHash::TPtr Hash; - NUdf::IEquate::TPtr Equate; - NUdf::ICompare::TPtr Compare; - const bool IsSorted; -}; - -class TVariantNode : public TMutableCodegeneratorNode<TVariantNode> { - typedef TMutableCodegeneratorNode<TVariantNode> TBaseComputation; -public: - TVariantNode(TComputationMutables& mutables, IComputationNode* itemNode, ui32 index) - : TBaseComputation(mutables, EValueRepresentation::Any) - , ItemNode(itemNode) - , Index(index) - {} - - NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { - if (auto item = ItemNode->GetValue(ctx); item.TryMakeVariant(Index)) - return item.Release(); - else - return ctx.HolderFactory.CreateBoxedVariantHolder(item.Release(), Index); - } -#ifndef MKQL_DISABLE_CODEGEN - Value* DoGenerateGetValue(const TCodegenContext& ctx, BasicBlock*& block) const { - const auto value = GetNodeValue(ItemNode, ctx, block); - return MakeVariant(value, ConstantInt::get(Type::getInt32Ty(ctx.Codegen.GetContext()), Index), ctx, block); - } -#endif -private: - void RegisterDependencies() const final { - DependsOn(ItemNode); - } - - IComputationNode *const ItemNode; - const ui32 Index; -}; - class TVariantHolder : public TComputationValue<TVariantHolder> { public: TVariantHolder(TMemoryUsageInfo* memInfo, NUdf::TUnboxedValue&& item, ui32 index) @@ -3907,58 +3496,6 @@ KNOWN_PRIMITIVE_VALUE_TYPES(DEFINE_HASHED_SINGLE_FIXED_COMPACT_MULTI_MAP_OPT) KNOWN_PRIMITIVE_VALUE_TYPES(DEFINE_HASHED_SINGLE_FIXED_COMPACT_MULTI_MAP_NONOPT) #undef DEFINE_HASHED_SINGLE_FIXED_COMPACT_MULTI_MAP_NONOPT -////////////////////////////////////////////////////////////////////////////// -// TNodeFactory -////////////////////////////////////////////////////////////////////////////// -TNodeFactory::TNodeFactory(TMemoryUsageInfo& memInfo, TComputationMutables& mutables) - : MemInfo(memInfo) - , Mutables(mutables) -{ -} - -IComputationNode* TNodeFactory::CreateEmptyNode() const -{ - return new TEmptyNode(Mutables); -} - -IComputationNode* TNodeFactory::CreateOptionalNode(IComputationNode* item) const -{ - return item ? new TOptionalNode(item) : CreateImmutableNode(NUdf::TUnboxedValuePod()); -} - -IComputationNode* TNodeFactory::CreateArrayNode(TComputationNodePtrVector&& values) const -{ - if (values.empty()) { - return new TEmptyNode(Mutables); - } - - return new TArrayNode(Mutables, std::move(values)); -} - -IComputationNode* TNodeFactory::CreateDictNode( - std::vector<std::pair<IComputationNode*, IComputationNode*>>&& items, - const TKeyTypes& types, bool isTuple, TType* encodedType, - NUdf::IHash::TPtr hash, NUdf::IEquate::TPtr equate, NUdf::ICompare::TPtr compare, bool isSorted) const -{ - if (items.empty()) { - return new TEmptyNode(Mutables); - } - - return new TDictNode(Mutables, std::move(items), types, isTuple, encodedType, hash, equate, compare, isSorted); -} - -IComputationNode* TNodeFactory::CreateVariantNode(IComputationNode* item, ui32 index) const { - return new TVariantNode(Mutables, item, index); -} - -IComputationNode* TNodeFactory::CreateTypeNode(TType* type) const { - return CreateImmutableNode(NUdf::TUnboxedValuePod(new TTypeHolder(&MemInfo, type))); -} - -IComputationNode* TNodeFactory::CreateImmutableNode(NUdf::TUnboxedValue&& value) const { - return new TUnboxedImmutableCodegeneratorNode(&MemInfo, std::move(value)); -} - void GetDictionaryKeyTypes(TType* keyType, TKeyTypes& types, bool& isTuple, bool& encoded, bool& useIHash, bool expandTuple) { isTuple = false; encoded = false; @@ -4003,170 +3540,6 @@ void GetDictionaryKeyTypes(TType* keyType, TKeyTypes& types, bool& isTuple, bool } } -TContainerCacheOnContext::TContainerCacheOnContext(TComputationMutables& mutables) - : Index(mutables.CurValueIndex++) -{ - ++++mutables.CurValueIndex; -} - -NUdf::TUnboxedValuePod TContainerCacheOnContext::NewArray(TComputationContext& ctx, ui64 size, NUdf::TUnboxedValue*& items) const { - if (!size) - return ctx.HolderFactory.GetEmptyContainerLazy(); - - auto& index = ctx.MutableValues[Index]; - if (index.IsInvalid()) - index = NUdf::TUnboxedValuePod::Zero(); - - { - auto& val = ctx.MutableValues[Index + (index.Get<bool>() ? 1U : 2U)]; - if (val.IsInvalid() || !val.UniqueBoxed()) { - index = NUdf::TUnboxedValuePod(!index.Get<bool>()); - auto& value = ctx.MutableValues[Index + (index.Get<bool>() ? 1U : 2U)]; - if (value.IsInvalid() || !value.UniqueBoxed()) { - return value = ctx.HolderFactory.CreateDirectArrayHolder(size, items); - } - } - } - - auto& value = ctx.MutableValues[Index + (index.Get<bool>() ? 1U : 2U)]; - items = static_cast<const TDirectArrayHolderInplace*>(value.AsBoxed().Get())->GetPtr(); - std::fill_n(items, size, NUdf::TUnboxedValue()); - return value; -} - -#ifndef MKQL_DISABLE_CODEGEN -namespace { - -Value* GenerateCheckNotUniqueBoxed(Value* value, LLVMContext& context, Function* function, BasicBlock*& block) { - const auto invalid = ConstantInt::get(value->getType(), 0xFFFFFFFFFFFFFFFFULL); - const auto empty = CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_ULE, value, invalid, "empty", block); - - const auto have = BasicBlock::Create(context, "have", function); - const auto done = BasicBlock::Create(context, "done", function); - const auto result = PHINode::Create(empty->getType(), 2, "result", done); - result->addIncoming(empty, block); - BranchInst::Create(done, have, empty, block); - - block = have; - const auto half = CastInst::Create(Instruction::Trunc, value, Type::getInt64Ty(context), "half", block); - const auto type = StructType::get(context, {PointerType::getUnqual(StructType::get(context)), Type::getInt32Ty(context), Type::getInt16Ty(context)}); - const auto boxptr = CastInst::Create(Instruction::IntToPtr, half, PointerType::getUnqual(type), "boxptr", block); - const auto cntptr = GetElementPtrInst::CreateInBounds(type, boxptr, {ConstantInt::get(Type::getInt32Ty(context), 0), ConstantInt::get(Type::getInt32Ty(context), 1)}, "cntptr", block); - const auto refs = new LoadInst(Type::getInt32Ty(context), cntptr, "refs", block); - const auto many = CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_UGT, refs, ConstantInt::get(refs->getType(), 1U), "many", block); - result->addIncoming(many, block); - BranchInst::Create(done, block); - - block = done; - return result; -} - -} - -Value* TContainerCacheOnContext::GenNewArray(ui64 sz, Value* items, const TCodegenContext& ctx, BasicBlock*& block) const { - auto& context = ctx.Codegen.GetContext(); - const auto valueType = Type::getInt128Ty(context); - const auto arrayType = ArrayType::get(valueType, sz); - const auto pointerType = PointerType::getUnqual(arrayType); - - const auto idxType = Type::getInt32Ty(context); - - const auto values = ctx.GetMutables(); - - const auto indexPtr = GetElementPtrInst::CreateInBounds(valueType, values, {ConstantInt::get(idxType, Index)}, "index_ptr", block); - - const auto raw = new LoadInst(valueType, indexPtr, "raw", block); - - const auto indb = GetterFor<bool>(raw, context, block); - const auto indf = CastInst::Create(Instruction::ZExt, indb, idxType, "indf", block); - const auto ind_one = BinaryOperator::CreateAdd(indf, ConstantInt::get(idxType, Index + 1U), "ind_one", block); - - const auto tpfirst = GetElementPtrInst::CreateInBounds(valueType, values, {ind_one}, "tpfirst", block); - - const auto tfirst = new LoadInst(valueType, tpfirst, "tfirst", block); - const auto cfirst = GenerateCheckNotUniqueBoxed(tfirst, context, ctx.Func, block); - - const auto scnd = BasicBlock::Create(context, "scnd", ctx.Func); - const auto make = BasicBlock::Create(context, "make", ctx.Func); - const auto have = BasicBlock::Create(context, "have", ctx.Func); - const auto exit = BasicBlock::Create(context, "exit", ctx.Func); - const auto result = PHINode::Create(valueType, 2, "result", exit); - - const auto has = PHINode::Create(tfirst->getType(), 2, "has", have); - has->addIncoming(tfirst, block); - - BranchInst::Create(scnd, have, cfirst, block); - - block = scnd; - - const auto neg = BinaryOperator::CreateXor(indb, ConstantInt::get(indb->getType(), 1), "xor", block); - const auto newInd = SetterFor<bool>(neg, context, block); - new StoreInst(newInd, indexPtr, block); - - const auto inds = CastInst::Create(Instruction::ZExt, neg, idxType, "inds", block); - - const auto ind_two = BinaryOperator::CreateAdd(inds, ConstantInt::get(idxType, Index + 1U), "ind_two", block); - - const auto tpsecond = GetElementPtrInst::CreateInBounds(valueType, values, {ind_two}, "tpsecond", block); - const auto tsecond = new LoadInst(valueType, tpsecond, "tsecond", block); - const auto csecond = GenerateCheckNotUniqueBoxed(tsecond, context, ctx.Func, block); - has->addIncoming(tsecond, block); - BranchInst::Create(make, have, csecond, block); - - { - block = make; - ValueUnRef(EValueRepresentation::Boxed, tpsecond, ctx, block); - - const auto fact = ctx.GetFactory(); - - const auto func = ConstantInt::get(Type::getInt64Ty(context), GetMethodPtr(&THolderFactory::CreateDirectArrayHolder)); - const auto size = ConstantInt::get(Type::getInt64Ty(context), sz); - - if (NYql::NCodegen::ETarget::Windows != ctx.Codegen.GetEffectiveTarget()) { - const auto funType = FunctionType::get(valueType, {fact->getType(), size->getType(), items->getType()}, false); - const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); - const auto array = CallInst::Create(funType, funcPtr, {fact, size, items}, "array", block); - AddRefBoxed(array, ctx, block); - result->addIncoming(array, block); - new StoreInst(array, tpsecond, block); - } else { - const auto funType = FunctionType::get(Type::getVoidTy(context), {fact->getType(), tpsecond->getType(), size->getType(), items->getType()}, false); - const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); - CallInst::Create(funType, funcPtr, {fact, tpsecond, size, items}, "", block); - const auto array = new LoadInst(valueType, tpsecond, "array", block); - AddRefBoxed(array, ctx, block); - result->addIncoming(array, block); - } - - BranchInst::Create(exit, block); - } - - { - block = have; - - const auto half = CastInst::Create(Instruction::Trunc, has, Type::getInt64Ty(context), "half", block); - - const auto offs = BinaryOperator::CreateAdd(half, ConstantInt::get(half->getType(), sizeof(TDirectArrayHolderInplace)), "offs", block); - - const auto itemsPtr = CastInst::Create(Instruction::IntToPtr, offs, pointerType, "items_ptr", block); - - for (ui64 i = 0; i < sz; ++i) { - const auto itemp = GetElementPtrInst::CreateInBounds(arrayType, itemsPtr, {ConstantInt::get(idxType, 0), ConstantInt::get(idxType, i)}, "itemp", block); - ValueUnRef(EValueRepresentation::Any, itemp, ctx, block); - } - - result->addIncoming(has, block); - - new StoreInst(ConstantAggregateZero::get(arrayType), itemsPtr, block); - new StoreInst(itemsPtr, items, block); - BranchInst::Create(exit, block); - } - - block = exit; - return result; -} -#endif - TPlainContainerCache::TPlainContainerCache() { Clear(); } diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_holders.h b/ydb/library/yql/minikql/computation/mkql_computation_node_holders.h index 8de411b674..f52c7a7093 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_node_holders.h +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_holders.h @@ -21,22 +21,11 @@ #include <optional> #include <vector> -#ifndef MKQL_DISABLE_CODEGEN -namespace llvm { - class Value; - class BasicBlock; -} -#endif - namespace NKikimr { namespace NMiniKQL { class TMemoryUsageInfo; -#ifndef MKQL_DISABLE_CODEGEN -struct TCodegenContext; -#endif - const ui32 CodegenArraysFallbackLimit = 1000u; using TKeyTypes = std::vector<std::pair<NUdf::EDataSlot, bool>>; @@ -639,6 +628,199 @@ private: THashMap<TTypeBase, TValuePtr, THasherTType, TEqualTType> Registry; }; +class TDirectArrayHolderInplace : public TComputationValue<TDirectArrayHolderInplace> { +public: + void* operator new(size_t sz) = delete; + void* operator new[](size_t sz) = delete; + void operator delete(void *mem, std::size_t sz) { + const auto pSize = static_cast<void*>(static_cast<ui8*>(mem) + sizeof(TComputationValue<TDirectArrayHolderInplace>)); + FreeWithSize(mem, sz + *static_cast<ui64*>(pSize) * sizeof(NUdf::TUnboxedValue)); + } + + void operator delete[](void *mem, std::size_t sz) = delete; + + TDirectArrayHolderInplace(TMemoryUsageInfo* memInfo, ui64 size) + : TComputationValue(memInfo) + , Size(size) + { + MKQL_ENSURE(Size > 0U, "Can't create empty array holder."); + MKQL_MEM_TAKE(GetMemInfo(), GetPtr(), Size * sizeof(NUdf::TUnboxedValue)); + std::memset(GetPtr(), 0, Size * sizeof(NUdf::TUnboxedValue)); + } + + ~TDirectArrayHolderInplace() { + for (ui64 i = 0U; i < Size; ++i) { + (GetPtr() + i)->~TUnboxedValue(); + } + MKQL_MEM_RETURN(GetMemInfo(), GetPtr(), Size * sizeof(NUdf::TUnboxedValue)); + } + + ui64 GetSize() const { + return Size; + } + + NUdf::TUnboxedValue* GetPtr() const { + return (NUdf::TUnboxedValue*)(this + 1); + } + +private: + class TIterator : public TTemporaryComputationValue<TIterator> { + public: + TIterator(const TDirectArrayHolderInplace* parent) + : TTemporaryComputationValue(parent->GetMemInfo()), Parent(const_cast<TDirectArrayHolderInplace*>(parent)) + {} + + private: + bool Skip() final { + return ++Current < Parent->GetSize(); + } + + bool Next(NUdf::TUnboxedValue& value) final { + if (!Skip()) + return false; + value = Parent->GetPtr()[Current]; + return true; + } + + bool NextPair(NUdf::TUnboxedValue& key, NUdf::TUnboxedValue& payload) final { + if (!Next(payload)) + return false; + key = NUdf::TUnboxedValuePod(Current); + return true; + } + + const NUdf::TRefCountedPtr<TDirectArrayHolderInplace> Parent; + ui64 Current = Max<ui64>(); + }; + + class TKeysIterator : public TTemporaryComputationValue<TKeysIterator> { + public: + TKeysIterator(const TDirectArrayHolderInplace& parent) + : TTemporaryComputationValue(parent.GetMemInfo()), Size(parent.GetSize()) + {} + private: + bool Skip() final { + return ++Current < Size; + } + + bool Next(NUdf::TUnboxedValue& key) final { + if (!Skip()) + return false; + key = NUdf::TUnboxedValuePod(Current); + return true; + } + + const ui64 Size; + ui64 Current = Max<ui64>(); + }; + + bool HasListItems() const final { + return true; + } + + bool HasDictItems() const final { + return true; + } + + bool HasFastListLength() const final { + return true; + } + + ui64 GetListLength() const final { + return Size; + } + + ui64 GetDictLength() const final { + return Size; + } + + ui64 GetEstimatedListLength() const final { + return Size; + } + + NUdf::TUnboxedValue GetListIterator() const final { + return NUdf::TUnboxedValuePod(new TIterator(this)); + } + + NUdf::TUnboxedValue GetDictIterator() const final { + return NUdf::TUnboxedValuePod(new TIterator(this)); + } + + NUdf::TUnboxedValue GetPayloadsIterator() const final { + return NUdf::TUnboxedValuePod(new TIterator(this)); + } + + NUdf::TUnboxedValue GetKeysIterator() const final { + return NUdf::TUnboxedValuePod(new TKeysIterator(*this)); + } + + NUdf::IBoxedValuePtr ReverseListImpl(const NUdf::IValueBuilder& builder) const final { + if (1U >= Size) + return const_cast<TDirectArrayHolderInplace*>(this); + + NUdf::TUnboxedValue* items = nullptr; + auto result = builder.NewArray(Size, items); + std::reverse_copy(GetPtr(), GetPtr() + Size, items); + return result.Release().AsBoxed(); + } + + NUdf::IBoxedValuePtr SkipListImpl(const NUdf::IValueBuilder& builder, ui64 count) const final { + if (!count) + return const_cast<TDirectArrayHolderInplace*>(this); + + if (count >= Size) + return builder.NewEmptyList().Release().AsBoxed(); + + const auto newSize = Size - count; + NUdf::TUnboxedValue* items = nullptr; + auto result = builder.NewArray(newSize, items); + std::copy_n(GetPtr() + count, newSize, items); + return result.Release().AsBoxed(); + } + + NUdf::IBoxedValuePtr TakeListImpl(const NUdf::IValueBuilder& builder, ui64 count) const final { + if (!count) + return builder.NewEmptyList().Release().AsBoxed(); + + if (count >= Size) + return const_cast<TDirectArrayHolderInplace*>(this); + + const auto newSize = count; + NUdf::TUnboxedValue* items = nullptr; + auto result = builder.NewArray(newSize, items); + std::copy_n(GetPtr(), newSize, items); + return result.Release().AsBoxed(); + } + + NUdf::IBoxedValuePtr ToIndexDictImpl(const NUdf::IValueBuilder&) const final { + return const_cast<TDirectArrayHolderInplace*>(this); + } + + bool Contains(const NUdf::TUnboxedValuePod& key) const final { + return key.Get<ui64>() < Size; + } + + NUdf::TUnboxedValue Lookup(const NUdf::TUnboxedValuePod& key) const final { + const auto index = key.Get<ui64>(); + return index < Size ? GetPtr()[index].MakeOptional() : NUdf::TUnboxedValuePod(); + } + + NUdf::TUnboxedValue GetElement(ui32 index) const final { + Y_DEBUG_ABORT_UNLESS(index < Size); + return GetPtr()[index]; + } + + const NUdf::TUnboxedValue* GetElements() const final { + return GetPtr(); + } + + bool IsSortedDict() const override { + return true; + } + + const ui64 Size; +}; + ////////////////////////////////////////////////////////////////////////////// // THolderFactory ////////////////////////////////////////////////////////////////////////////// @@ -848,48 +1030,8 @@ inline bool TComputationContext::CheckAdjustedMemLimit(ui64 memLimit, ui64 initM return currentMemUsage * UsageAdjustor >= initMemUsage + memLimit; } -////////////////////////////////////////////////////////////////////////////// -// TNodeFactory -////////////////////////////////////////////////////////////////////////////// -class TNodeFactory: private TNonCopyable -{ -public: - TNodeFactory(TMemoryUsageInfo& memInfo, TComputationMutables& mutables); - - IComputationNode* CreateTypeNode(TType* type) const; - - IComputationNode* CreateImmutableNode(NUdf::TUnboxedValue&& value) const; - - IComputationNode* CreateEmptyNode() const; - - IComputationNode* CreateArrayNode(TComputationNodePtrVector&& items) const; - - IComputationNode* CreateOptionalNode(IComputationNode* item) const; - - IComputationNode* CreateDictNode( - std::vector<std::pair<IComputationNode*, IComputationNode*>>&& items, - const TKeyTypes& types, bool isTuple, TType* encodedType, - NUdf::IHash::TPtr hash, NUdf::IEquate::TPtr equate, NUdf::ICompare::TPtr compare, bool isSorted) const; - - IComputationNode* CreateVariantNode(IComputationNode* item, ui32 index) const; - -private: - TMemoryUsageInfo& MemInfo; - TComputationMutables& Mutables; -}; - void GetDictionaryKeyTypes(TType* keyType, TKeyTypes& types, bool& isTuple, bool& encoded, bool& useIHash, bool expandTuple = true); -struct TContainerCacheOnContext : private TNonCopyable { - TContainerCacheOnContext(TComputationMutables& mutables); - - NUdf::TUnboxedValuePod NewArray(TComputationContext& ctx, ui64 size, NUdf::TUnboxedValue*& items) const; -#ifndef MKQL_DISABLE_CODEGEN - llvm::Value* GenNewArray(ui64 sz, llvm::Value* items, const TCodegenContext& ctx, llvm::BasicBlock*& block) const; -#endif - const ui32 Index; -}; - class TPlainContainerCache { public: TPlainContainerCache(); diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.cpp new file mode 100644 index 0000000000..7851730332 --- /dev/null +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.cpp @@ -0,0 +1,443 @@ +#include "mkql_computation_node_holders_codegen.h" +#include "mkql_computation_node_codegen.h" // Y_IGNORE +#include "mkql_computation_node_pack.h" +#include <ydb/library/yql/minikql/mkql_string_util.h> + +namespace NKikimr { +namespace NMiniKQL { + +TContainerCacheOnContext::TContainerCacheOnContext(TComputationMutables& mutables) + : Index(mutables.CurValueIndex++) +{ + ++++mutables.CurValueIndex; +} + +NUdf::TUnboxedValuePod TContainerCacheOnContext::NewArray(TComputationContext& ctx, ui64 size, NUdf::TUnboxedValue*& items) const { + if (!size) + return ctx.HolderFactory.GetEmptyContainerLazy(); + + auto& index = ctx.MutableValues[Index]; + if (index.IsInvalid()) + index = NUdf::TUnboxedValuePod::Zero(); + + { + auto& val = ctx.MutableValues[Index + (index.Get<bool>() ? 1U : 2U)]; + if (val.IsInvalid() || !val.UniqueBoxed()) { + index = NUdf::TUnboxedValuePod(!index.Get<bool>()); + auto& value = ctx.MutableValues[Index + (index.Get<bool>() ? 1U : 2U)]; + if (value.IsInvalid() || !value.UniqueBoxed()) { + return value = ctx.HolderFactory.CreateDirectArrayHolder(size, items); + } + } + } + + auto& value = ctx.MutableValues[Index + (index.Get<bool>() ? 1U : 2U)]; + items = static_cast<const TDirectArrayHolderInplace*>(value.AsBoxed().Get())->GetPtr(); + std::fill_n(items, size, NUdf::TUnboxedValue()); + return value; +} + +#ifndef MKQL_DISABLE_CODEGEN +namespace { + +Value* GenerateCheckNotUniqueBoxed(Value* value, LLVMContext& context, Function* function, BasicBlock*& block) { + const auto invalid = ConstantInt::get(value->getType(), 0xFFFFFFFFFFFFFFFFULL); + const auto empty = CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_ULE, value, invalid, "empty", block); + + const auto have = BasicBlock::Create(context, "have", function); + const auto done = BasicBlock::Create(context, "done", function); + const auto result = PHINode::Create(empty->getType(), 2, "result", done); + result->addIncoming(empty, block); + BranchInst::Create(done, have, empty, block); + + block = have; + const auto half = CastInst::Create(Instruction::Trunc, value, Type::getInt64Ty(context), "half", block); + const auto type = StructType::get(context, {PointerType::getUnqual(StructType::get(context)), Type::getInt32Ty(context), Type::getInt16Ty(context)}); + const auto boxptr = CastInst::Create(Instruction::IntToPtr, half, PointerType::getUnqual(type), "boxptr", block); + const auto cntptr = GetElementPtrInst::CreateInBounds(type, boxptr, {ConstantInt::get(Type::getInt32Ty(context), 0), ConstantInt::get(Type::getInt32Ty(context), 1)}, "cntptr", block); + const auto refs = new LoadInst(Type::getInt32Ty(context), cntptr, "refs", block); + const auto many = CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_UGT, refs, ConstantInt::get(refs->getType(), 1U), "many", block); + result->addIncoming(many, block); + BranchInst::Create(done, block); + + block = done; + return result; +} + +} + +Value* TContainerCacheOnContext::GenNewArray(ui64 sz, Value* items, const TCodegenContext& ctx, BasicBlock*& block) const { + auto& context = ctx.Codegen.GetContext(); + const auto valueType = Type::getInt128Ty(context); + const auto arrayType = ArrayType::get(valueType, sz); + const auto pointerType = PointerType::getUnqual(arrayType); + + const auto idxType = Type::getInt32Ty(context); + + const auto values = ctx.GetMutables(); + + const auto indexPtr = GetElementPtrInst::CreateInBounds(valueType, values, {ConstantInt::get(idxType, Index)}, "index_ptr", block); + + const auto raw = new LoadInst(valueType, indexPtr, "raw", block); + + const auto indb = GetterFor<bool>(raw, context, block); + const auto indf = CastInst::Create(Instruction::ZExt, indb, idxType, "indf", block); + const auto ind_one = BinaryOperator::CreateAdd(indf, ConstantInt::get(idxType, Index + 1U), "ind_one", block); + + const auto tpfirst = GetElementPtrInst::CreateInBounds(valueType, values, {ind_one}, "tpfirst", block); + + const auto tfirst = new LoadInst(valueType, tpfirst, "tfirst", block); + const auto cfirst = GenerateCheckNotUniqueBoxed(tfirst, context, ctx.Func, block); + + const auto scnd = BasicBlock::Create(context, "scnd", ctx.Func); + const auto make = BasicBlock::Create(context, "make", ctx.Func); + const auto have = BasicBlock::Create(context, "have", ctx.Func); + const auto exit = BasicBlock::Create(context, "exit", ctx.Func); + const auto result = PHINode::Create(valueType, 2, "result", exit); + + const auto has = PHINode::Create(tfirst->getType(), 2, "has", have); + has->addIncoming(tfirst, block); + + BranchInst::Create(scnd, have, cfirst, block); + + block = scnd; + + const auto neg = BinaryOperator::CreateXor(indb, ConstantInt::get(indb->getType(), 1), "xor", block); + const auto newInd = SetterFor<bool>(neg, context, block); + new StoreInst(newInd, indexPtr, block); + + const auto inds = CastInst::Create(Instruction::ZExt, neg, idxType, "inds", block); + + const auto ind_two = BinaryOperator::CreateAdd(inds, ConstantInt::get(idxType, Index + 1U), "ind_two", block); + + const auto tpsecond = GetElementPtrInst::CreateInBounds(valueType, values, {ind_two}, "tpsecond", block); + const auto tsecond = new LoadInst(valueType, tpsecond, "tsecond", block); + const auto csecond = GenerateCheckNotUniqueBoxed(tsecond, context, ctx.Func, block); + has->addIncoming(tsecond, block); + BranchInst::Create(make, have, csecond, block); + + { + block = make; + ValueUnRef(EValueRepresentation::Boxed, tpsecond, ctx, block); + + const auto fact = ctx.GetFactory(); + + const auto func = ConstantInt::get(Type::getInt64Ty(context), GetMethodPtr(&THolderFactory::CreateDirectArrayHolder)); + const auto size = ConstantInt::get(Type::getInt64Ty(context), sz); + + if (NYql::NCodegen::ETarget::Windows != ctx.Codegen.GetEffectiveTarget()) { + const auto funType = FunctionType::get(valueType, {fact->getType(), size->getType(), items->getType()}, false); + const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); + const auto array = CallInst::Create(funType, funcPtr, {fact, size, items}, "array", block); + AddRefBoxed(array, ctx, block); + result->addIncoming(array, block); + new StoreInst(array, tpsecond, block); + } else { + const auto funType = FunctionType::get(Type::getVoidTy(context), {fact->getType(), tpsecond->getType(), size->getType(), items->getType()}, false); + const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); + CallInst::Create(funType, funcPtr, {fact, tpsecond, size, items}, "", block); + const auto array = new LoadInst(valueType, tpsecond, "array", block); + AddRefBoxed(array, ctx, block); + result->addIncoming(array, block); + } + + BranchInst::Create(exit, block); + } + + { + block = have; + + const auto half = CastInst::Create(Instruction::Trunc, has, Type::getInt64Ty(context), "half", block); + + const auto offs = BinaryOperator::CreateAdd(half, ConstantInt::get(half->getType(), sizeof(TDirectArrayHolderInplace)), "offs", block); + + const auto itemsPtr = CastInst::Create(Instruction::IntToPtr, offs, pointerType, "items_ptr", block); + + for (ui64 i = 0; i < sz; ++i) { + const auto itemp = GetElementPtrInst::CreateInBounds(arrayType, itemsPtr, {ConstantInt::get(idxType, 0), ConstantInt::get(idxType, i)}, "itemp", block); + ValueUnRef(EValueRepresentation::Any, itemp, ctx, block); + } + + result->addIncoming(has, block); + + new StoreInst(ConstantAggregateZero::get(arrayType), itemsPtr, block); + new StoreInst(itemsPtr, items, block); + BranchInst::Create(exit, block); + } + + block = exit; + return result; +} +#endif + +class TEmptyNode : public TMutableCodegeneratorNode<TEmptyNode> { + typedef TMutableCodegeneratorNode<TEmptyNode> TBaseComputation; +public: + TEmptyNode(TComputationMutables& mutables) + : TBaseComputation(mutables, EValueRepresentation::Boxed) + {} + + NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { + return ctx.HolderFactory.GetEmptyContainerLazy(); + } + +#ifndef MKQL_DISABLE_CODEGEN + Value* DoGenerateGetValue(const TCodegenContext& ctx, BasicBlock*& block) const { + auto& context = ctx.Codegen.GetContext(); + const auto valueType = Type::getInt128Ty(context); + const auto factory = ctx.GetFactory(); + const auto func = ConstantInt::get(Type::getInt64Ty(context), GetMethodPtr(&THolderFactory::GetEmptyContainerLazy)); + + if (NYql::NCodegen::ETarget::Windows != ctx.Codegen.GetEffectiveTarget()) { + const auto funType = FunctionType::get(valueType, {factory->getType()}, false); + const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); + const auto res = CallInst::Create(funType, funcPtr, {factory}, "res", block); + return res; + } else { + const auto retPtr = new AllocaInst(valueType, 0U, "ret_ptr", block); + const auto funType = FunctionType::get(Type::getVoidTy(context), {factory->getType(), retPtr->getType()}, false); + const auto funcPtr = CastInst::Create(Instruction::IntToPtr, func, PointerType::getUnqual(funType), "function", block); + CallInst::Create(funType, funcPtr, {factory, retPtr}, "", block); + const auto res = new LoadInst(valueType, retPtr, "res", block); + return res; + } + } +#endif +private: + void RegisterDependencies() const final {} +}; + +class TOptionalNode: public TDecoratorCodegeneratorNode<TOptionalNode> { + typedef TDecoratorCodegeneratorNode<TOptionalNode> TBaseComputation; +public: + TOptionalNode(IComputationNode* itemNode) + : TBaseComputation(itemNode) + {} + + NUdf::TUnboxedValuePod DoCalculate(TComputationContext&, const NUdf::TUnboxedValuePod& value) const { + return value.MakeOptional(); + } + +#ifndef MKQL_DISABLE_CODEGEN + Value* DoGenerateGetValue(const TCodegenContext& ctx, Value* arg, BasicBlock*& block) const { + return MakeOptional(ctx.Codegen.GetContext(), arg, block); + } +#endif +}; + +class TArrayNode: public TMutableCodegeneratorFallbackNode<TArrayNode> { + typedef TMutableCodegeneratorFallbackNode<TArrayNode> TBaseComputation; +public: + TArrayNode(TComputationMutables& mutables, TComputationNodePtrVector&& valueNodes) + : TBaseComputation(mutables, EValueRepresentation::Boxed) + , ValueNodes(std::move(valueNodes)) + , Cache(mutables) + { + } + + NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { + NUdf::TUnboxedValue *items = nullptr; + const auto result = Cache.NewArray(ctx, ValueNodes.size(), items); + if (!ValueNodes.empty()) { + Y_ABORT_UNLESS(items); + for (const auto& node : ValueNodes) { + *items++ = node->GetValue(ctx); + } + } + + return result; + } + +#ifndef MKQL_DISABLE_CODEGEN + Value* DoGenerateGetValue(const TCodegenContext& ctx, BasicBlock*& block) const { + if (ValueNodes.size() > CodegenArraysFallbackLimit) + return TBaseComputation::DoGenerateGetValue(ctx, block); + + auto& context = ctx.Codegen.GetContext(); + + const auto valType = Type::getInt128Ty(context); + const auto idxType = Type::getInt32Ty(context); + const auto type = ArrayType::get(valType, ValueNodes.size()); + const auto ptrType = PointerType::getUnqual(type); + /// TODO: how to get computation context or other workaround + const auto itms = *Stateless || ctx.AlwaysInline ? + new AllocaInst(ptrType, 0U, "itms", &ctx.Func->getEntryBlock().back()): + new AllocaInst(ptrType, 0U, "itms", block); + const auto result = Cache.GenNewArray(ValueNodes.size(), itms, ctx, block); + const auto itemsPtr = new LoadInst(ptrType, itms, "items", block); + + ui32 i = 0U; + for (const auto node : ValueNodes) { + const auto itemPtr = GetElementPtrInst::CreateInBounds(type, itemsPtr, {ConstantInt::get(idxType, 0), ConstantInt::get(idxType, i++)}, "item", block); + GetNodeValue(itemPtr, node, ctx, block); + } + return result; + } +#endif +private: + void RegisterDependencies() const final { + std::for_each(ValueNodes.cbegin(), ValueNodes.cend(), std::bind(&TArrayNode::DependsOn, this, std::placeholders::_1)); + } + + const TComputationNodePtrVector ValueNodes; + const TContainerCacheOnContext Cache; +}; + +class TVariantNode : public TMutableCodegeneratorNode<TVariantNode> { + typedef TMutableCodegeneratorNode<TVariantNode> TBaseComputation; +public: + TVariantNode(TComputationMutables& mutables, IComputationNode* itemNode, ui32 index) + : TBaseComputation(mutables, EValueRepresentation::Any) + , ItemNode(itemNode) + , Index(index) + {} + + NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { + if (auto item = ItemNode->GetValue(ctx); item.TryMakeVariant(Index)) + return item.Release(); + else + return ctx.HolderFactory.CreateBoxedVariantHolder(item.Release(), Index); + } +#ifndef MKQL_DISABLE_CODEGEN + Value* DoGenerateGetValue(const TCodegenContext& ctx, BasicBlock*& block) const { + const auto value = GetNodeValue(ItemNode, ctx, block); + return MakeVariant(value, ConstantInt::get(Type::getInt32Ty(ctx.Codegen.GetContext()), Index), ctx, block); + } +#endif +private: + void RegisterDependencies() const final { + DependsOn(ItemNode); + } + + IComputationNode *const ItemNode; + const ui32 Index; +}; + +class TDictNode: public TMutableComputationNode<TDictNode> { + typedef TMutableComputationNode<TDictNode> TBaseComputation; +public: + TDictNode(TComputationMutables& mutables, + std::vector<std::pair<IComputationNode*, IComputationNode*>>&& itemNodes, + const TKeyTypes& types, bool isTuple, TType* encodedType, + NUdf::IHash::TPtr hash, NUdf::IEquate::TPtr equate, + NUdf::ICompare::TPtr compare, bool isSorted) + : TBaseComputation(mutables) + , ItemNodes(std::move(itemNodes)) + , Types(types) + , IsTuple(isTuple) + , EncodedType(encodedType) + , Hash(hash) + , Equate(equate) + , Compare(compare) + , IsSorted(isSorted) + {} + + NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { + TKeyPayloadPairVector items; + items.reserve(ItemNodes.size()); + for (const auto& node : ItemNodes) { + items.emplace_back(node.first->GetValue(ctx), node.second->GetValue(ctx)); + } + + std::optional<TValuePacker> packer; + if (EncodedType) { + packer.emplace(true, EncodedType); + } + + if (IsSorted) { + const TSortedDictFiller filler = [&](TKeyPayloadPairVector& values) { + values = std::move(items); + }; + + return ctx.HolderFactory.CreateDirectSortedDictHolder(filler, Types, IsTuple, EDictSortMode::RequiresSorting, + true, EncodedType, Compare.Get(), Equate.Get()); + } else { + THashedDictFiller filler = + [&items, &packer](TValuesDictHashMap& map) { + for (auto& value : items) { + auto key = std::move(value.first); + if (packer) { + key = MakeString(packer->Pack(key)); + } + + map.emplace(std::move(key), std::move(value.second)); + } + }; + + return ctx.HolderFactory.CreateDirectHashedDictHolder( + filler, Types, IsTuple, true, EncodedType, Hash.Get(), Equate.Get()); + } + } + +private: + void RegisterDependencies() const final { + for (const auto& itemNode : ItemNodes) { + DependsOn(itemNode.first); + DependsOn(itemNode.second); + } + } + + const std::vector<std::pair<IComputationNode*, IComputationNode*>> ItemNodes; + const TKeyTypes Types; + const bool IsTuple; + TType* EncodedType; + NUdf::IHash::TPtr Hash; + NUdf::IEquate::TPtr Equate; + NUdf::ICompare::TPtr Compare; + const bool IsSorted; +}; + +////////////////////////////////////////////////////////////////////////////// +// TNodeFactory +////////////////////////////////////////////////////////////////////////////// +TNodeFactory::TNodeFactory(TMemoryUsageInfo& memInfo, TComputationMutables& mutables) + : MemInfo(memInfo) + , Mutables(mutables) +{ +} + +IComputationNode* TNodeFactory::CreateEmptyNode() const +{ + return new TEmptyNode(Mutables); +} + +IComputationNode* TNodeFactory::CreateOptionalNode(IComputationNode* item) const +{ + return item ? new TOptionalNode(item) : CreateImmutableNode(NUdf::TUnboxedValuePod()); +} + +IComputationNode* TNodeFactory::CreateArrayNode(TComputationNodePtrVector&& values) const +{ + if (values.empty()) { + return new TEmptyNode(Mutables); + } + + return new TArrayNode(Mutables, std::move(values)); +} + +IComputationNode* TNodeFactory::CreateDictNode( + std::vector<std::pair<IComputationNode*, IComputationNode*>>&& items, + const TKeyTypes& types, bool isTuple, TType* encodedType, + NUdf::IHash::TPtr hash, NUdf::IEquate::TPtr equate, NUdf::ICompare::TPtr compare, bool isSorted) const +{ + if (items.empty()) { + return new TEmptyNode(Mutables); + } + + return new TDictNode(Mutables, std::move(items), types, isTuple, encodedType, hash, equate, compare, isSorted); +} + +IComputationNode* TNodeFactory::CreateVariantNode(IComputationNode* item, ui32 index) const { + return new TVariantNode(Mutables, item, index); +} + +IComputationNode* TNodeFactory::CreateTypeNode(TType* type) const { + return CreateImmutableNode(NUdf::TUnboxedValuePod(new TTypeHolder(&MemInfo, type))); +} + +IComputationNode* TNodeFactory::CreateImmutableNode(NUdf::TUnboxedValue&& value) const { + return new TUnboxedImmutableCodegeneratorNode(&MemInfo, std::move(value)); +} + +} // namespace NMiniKQL +} // namespace NKikimr diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h b/ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h new file mode 100644 index 0000000000..3c510319f7 --- /dev/null +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h @@ -0,0 +1,62 @@ +#pragma once + +#include "mkql_computation_node_holders.h" + +#ifndef MKQL_DISABLE_CODEGEN +namespace llvm { + class Value; + class BasicBlock; +} +#endif + +namespace NKikimr { +namespace NMiniKQL { + +class TMemoryUsageInfo; + +#ifndef MKQL_DISABLE_CODEGEN +struct TCodegenContext; +#endif + +struct TContainerCacheOnContext : private TNonCopyable { + TContainerCacheOnContext(TComputationMutables& mutables); + + NUdf::TUnboxedValuePod NewArray(TComputationContext& ctx, ui64 size, NUdf::TUnboxedValue*& items) const; +#ifndef MKQL_DISABLE_CODEGEN + llvm::Value* GenNewArray(ui64 sz, llvm::Value* items, const TCodegenContext& ctx, llvm::BasicBlock*& block) const; +#endif + const ui32 Index; +}; + +////////////////////////////////////////////////////////////////////////////// +// TNodeFactory +////////////////////////////////////////////////////////////////////////////// +class TNodeFactory: private TNonCopyable +{ +public: + TNodeFactory(TMemoryUsageInfo& memInfo, TComputationMutables& mutables); + + IComputationNode* CreateTypeNode(TType* type) const; + + IComputationNode* CreateImmutableNode(NUdf::TUnboxedValue&& value) const; + + IComputationNode* CreateEmptyNode() const; + + IComputationNode* CreateArrayNode(TComputationNodePtrVector&& items) const; + + IComputationNode* CreateOptionalNode(IComputationNode* item) const; + + IComputationNode* CreateDictNode( + std::vector<std::pair<IComputationNode*, IComputationNode*>>&& items, + const TKeyTypes& types, bool isTuple, TType* encodedType, + NUdf::IHash::TPtr hash, NUdf::IEquate::TPtr equate, NUdf::ICompare::TPtr compare, bool isSorted) const; + + IComputationNode* CreateVariantNode(IComputationNode* item, ui32 index) const; + +private: + TMemoryUsageInfo& MemInfo; + TComputationMutables& Mutables; +}; + +} // namespace NMiniKQL +} // namespace NKikimr diff --git a/ydb/library/yql/minikql/computation/mkql_pack_bc.cpp b/ydb/library/yql/minikql/computation/mkql_pack_bc.cpp new file mode 100644 index 0000000000..68441746c3 --- /dev/null +++ b/ydb/library/yql/minikql/computation/mkql_pack_bc.cpp @@ -0,0 +1,200 @@ +#include <util/generic/buffer.h> + +#include <ydb/library/yql/public/udf/udf_value.h> +#include <ydb/library/yql/minikql/pack_num.h> +#include <library/cpp/packedtypes/zigzag.h> + +#include <ydb/library/yql/minikql/defs.h> +#include "mkql_optional_usage_mask.h" + +using namespace NKikimr; + +namespace NDetails { + +void PackUInt64(ui64 pos, ui64 val, TBuffer& buf) { + const auto actual = Pack64(val, buf.Data() + pos); + buf.Chop(pos + actual, MAX_PACKED64_SIZE - actual); +} + +void PackUInt64(ui64 val, TBuffer& buf) { + size_t off = buf.Size(); + buf.Advance(MAX_PACKED64_SIZE); + buf.EraseBack(MAX_PACKED64_SIZE - Pack64(val, buf.Data() + off)); +} + +void PackInt64(i64 val, TBuffer& buf) { + PackUInt64(ZigZagEncode(val), buf); +} + +void PackUInt32(ui32 val, TBuffer& buf) { + size_t off = buf.Size(); + buf.Advance(MAX_PACKED32_SIZE); + buf.EraseBack(MAX_PACKED32_SIZE - Pack32(val, buf.Data() + off)); +} + +void PackInt32(i32 val, TBuffer& buf) { + PackUInt32(ZigZagEncode(val), buf); +} + +ui64 UnpackUInt64(TStringBuf& buf) { + ui64 res = 0; + size_t read = Unpack64(buf.data(), buf.length(), res); + MKQL_ENSURE(read, "Bad ui64 packed data"); + buf.Skip(read); + return res; +} + +i64 UnpackInt64(TStringBuf& buf) { + return ZigZagDecode(UnpackUInt64(buf)); +} + +ui32 UnpackUInt32(TStringBuf& buf) { + ui32 res = 0; + size_t read = Unpack32(buf.data(), buf.length(), res); + MKQL_ENSURE(read, "Bad ui32 packed data"); + buf.Skip(read); + return res; +} + +i32 UnpackInt32(TStringBuf& buf) { + return ZigZagDecode(UnpackUInt32(buf)); +} + +template <typename T> +void PutRawData(T val, TBuffer& buf) { + buf.Append(reinterpret_cast<const char*>(&val), sizeof(T)); +} + +template <typename T> +T GetRawData(TStringBuf& buf) { + MKQL_ENSURE(sizeof(T) <= buf.size(), "Bad packed data. Buffer too small"); + T val = 0; + std::memcpy(&val, buf.data(), sizeof(T)); + buf.Skip(sizeof(T)); + return val; +} + +} + +extern "C" void GetElement(const TRawUV* value, ui32 index, TRawUV* item) { + const auto result(reinterpret_cast<const NUdf::TUnboxedValuePod*>(value)->GetElement(index)); + *item = reinterpret_cast<const TRawUV&>(result); +} + +extern "C" bool FetchNextItem(const TRawUV* value, TRawUV* item) { + NUdf::TUnboxedValue fetch; + if (NUdf::EFetchStatus::Finish == reinterpret_cast<const NUdf::TUnboxedValuePod*>(value)->Fetch(fetch)) + return false; + *item = reinterpret_cast<TRawUV&>(fetch); + return true; +} + +extern "C" bool NextListItem(TRawUV* value, TRawUV* item) { + NUdf::TUnboxedValue next; + const auto v = reinterpret_cast<NUdf::TUnboxedValuePod*>(value); + if (!v->Next(next)) { + v->DeleteUnreferenced(); + return false; + } + + *item = reinterpret_cast<TRawUV&>(next); + return true; +} + +extern "C" bool NextDictItem(TRawUV* value, TRawUV* first, TRawUV* second) { + NUdf::TUnboxedValue key, payload; + const auto v = reinterpret_cast<NUdf::TUnboxedValuePod*>(value); + if (!v->NextPair(key, payload)) { + v->DeleteUnreferenced(); + return false; + } + + *first = reinterpret_cast<TRawUV&>(key); + *second = reinterpret_cast<TRawUV&>(payload); + return true; +} + +extern "C" void PackString(const TRawUV* value, ui64* buffer) { + const auto& stringRef = reinterpret_cast<const NUdf::TUnboxedValue*>(value)->AsStringRef(); + NDetails::PackUInt32(stringRef.Size(), *reinterpret_cast<TBuffer*>(buffer)); + reinterpret_cast<TBuffer*>(buffer)->Append(stringRef.Data(), stringRef.Size()); +} + +extern "C" void PackStringData(const TRawUV* value, ui64* buffer) { + const auto& stringRef = reinterpret_cast<const NUdf::TUnboxedValue*>(value)->AsStringRef(); + reinterpret_cast<TBuffer*>(buffer)->Append(stringRef.Data(), stringRef.Size()); +} + +extern "C" void PackBool(const TRawUV* value, ui64* buffer) { + NDetails::PutRawData(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<bool>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackByte(const TRawUV* value, ui64* buffer) { + NDetails::PutRawData(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<ui8>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackInt32(const TRawUV* value, ui64* buffer) { + NDetails::PackInt32(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<i32>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackUInt32(const TRawUV* value, ui64* buffer) { + NDetails::PackUInt32(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<ui32>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackInt64(const TRawUV* value, ui64* buffer) { + NDetails::PackInt64(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<i64>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackUInt64(const TRawUV* value, ui64* buffer) { + NDetails::PackUInt64(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<ui64>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackFloat(const TRawUV* value, ui64* buffer) { + NDetails::PutRawData(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<float>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" void PackDouble(const TRawUV* value, ui64* buffer) { + NDetails::PutRawData(reinterpret_cast<const NUdf::TUnboxedValue*>(value)->Get<double>(), *reinterpret_cast<TBuffer*>(buffer)); +} + +extern "C" ui32 GetVariantItem(const TRawUV* value, TRawUV* item, ui64* buffer) { + const auto v = reinterpret_cast<const NUdf::TUnboxedValuePod*>(value); + const ui32 index = v->GetVariantIndex(); + NDetails::PackUInt32(index, *reinterpret_cast<TBuffer*>(buffer)); + const auto result(v->GetVariantItem()); + *item = reinterpret_cast<const TRawUV&>(result); + return index; +} + +extern "C" bool GetListIterator(const TRawUV* value, TRawUV* item, ui64* buffer) { + const auto v = reinterpret_cast<const NUdf::TUnboxedValuePod*>(value); + const auto size = v->GetListLength(); + NDetails::PackUInt64(size, *reinterpret_cast<TBuffer*>(buffer)); + if (!size) + return false; + const auto result(v->GetListIterator().Release()); + *item = reinterpret_cast<const TRawUV&>(result); + return true; +} + +extern "C" bool GetDictIterator(const TRawUV* value, TRawUV* item, ui64* buffer) { + const auto v = reinterpret_cast<const NUdf::TUnboxedValuePod*>(value); + const auto size = v->GetDictLength(); + NDetails::PackUInt64(size, *reinterpret_cast<TBuffer*>(buffer)); + if (!size) + return false; + const auto result(v->GetDictIterator().Release()); + *item = reinterpret_cast<const TRawUV&>(result); + return true; +} + +extern "C" bool GetOptionalValue(const TRawUV* value, TRawUV* item, ui64* mask) { + const auto v = reinterpret_cast<const NUdf::TUnboxedValuePod*>(value); + const bool has = bool(*v); + reinterpret_cast<NMiniKQL::NDetails::TOptionalUsageMask*>(mask)->SetNextEmptyOptional(!*v); + if (has) { + const auto result(v->GetOptionalValue()); + *item = reinterpret_cast<const TRawUV&>(result); + } + return has; +} diff --git a/ydb/library/yql/minikql/computation/no_llvm/ya.make b/ydb/library/yql/minikql/computation/no_llvm/ya.make index 7e86314b94..037cf17102 100644 --- a/ydb/library/yql/minikql/computation/no_llvm/ya.make +++ b/ydb/library/yql/minikql/computation/no_llvm/ya.make @@ -1,5 +1,10 @@ LIBRARY() +OWNER( + g:yql + g:yql_ydb_core +) + CXXFLAGS(-DMKQL_DISABLE_CODEGEN) ADDINCL(GLOBAL ydb/library/yql/minikql/codegen/llvm_stub) diff --git a/ydb/library/yql/minikql/computation/ut/ya.make b/ydb/library/yql/minikql/computation/ut/ya.make.inc index b4c2ff659f..b2cc788e6d 100644 --- a/ydb/library/yql/minikql/computation/ut/ya.make +++ b/ydb/library/yql/minikql/computation/ut/ya.make.inc @@ -1,5 +1,3 @@ -UNITTEST_FOR(ydb/library/yql/minikql/computation/llvm) - FORK_SUBTESTS() IF (SANITIZER_TYPE == "thread" OR WITH_VALGRIND) @@ -11,6 +9,8 @@ ELSE() SIZE(MEDIUM) ENDIF() +OWNER(g:yql) + SRCDIR(ydb/library/yql/minikql/computation) SRCS( @@ -27,12 +27,9 @@ SRCS( PEERDIR( contrib/libs/apache/arrow library/cpp/threading/local_executor - ydb/library/yql/minikql/comp_nodes/llvm ydb/library/yql/parser/pg_wrapper ydb/library/yql/public/udf/service/exception_policy ydb/library/yql/dq/proto ) YQL_LAST_ABI_VERSION() - -END() diff --git a/ydb/library/yql/minikql/computation/ya.make b/ydb/library/yql/minikql/computation/ya.make index 424ecfb86d..db6af57d68 100644 --- a/ydb/library/yql/minikql/computation/ya.make +++ b/ydb/library/yql/minikql/computation/ya.make @@ -1,8 +1,46 @@ +OWNER( + g:yql + g:yql_ydb_core +) + +LIBRARY() + +SRCS( + mkql_block_builder.cpp + mkql_block_impl.cpp + mkql_block_reader.cpp + mkql_block_transport.cpp + mkql_computation_node.cpp + mkql_computation_node_holders.cpp + mkql_computation_node_impl.cpp + mkql_computation_node_pack.cpp + mkql_computation_node_pack_impl.cpp + mkql_custom_list.cpp + mkql_validate.cpp + mkql_value_builder.cpp + mkql_computation_pattern_cache.cpp + presort.cpp +) + +PEERDIR( + contrib/libs/apache/arrow + ydb/library/yql/public/types + ydb/library/yql/parser/pg_wrapper/interface + ydb/library/yql/public/udf + ydb/library/yql/minikql/arrow +) + +YQL_LAST_ABI_VERSION() + +END() + RECURSE( llvm + llvm14 no_llvm ) RECURSE_FOR_TESTS( - ut + llvm/ut + llvm14/ut ) diff --git a/ydb/library/yql/minikql/computation/ya.make.inc b/ydb/library/yql/minikql/computation/ya.make.inc index 4e7de31cb8..9de6ecfff3 100644 --- a/ydb/library/yql/minikql/computation/ya.make.inc +++ b/ydb/library/yql/minikql/computation/ya.make.inc @@ -1,24 +1,19 @@ -SRCDIR(ydb/library/yql/minikql/computation) - -SRCS( - mkql_block_builder.cpp - mkql_block_impl.cpp - mkql_block_reader.cpp - mkql_block_transport.cpp - mkql_computation_node.cpp +OWNER( + g:yql + g:yql_ydb_core +) + + +INCLUDE(header.ya.make.inc) + +SET(ORIG_SRC_DIR ydb/library/yql/minikql/computation) + +SET(ORIG_SOURCES mkql_computation_node_codegen.cpp mkql_computation_node_graph.cpp mkql_computation_node_graph_saveload.cpp - mkql_computation_node_holders.cpp - mkql_computation_node_impl.cpp - mkql_computation_node_pack.cpp - mkql_computation_node_pack_impl.cpp - mkql_custom_list.cpp + mkql_computation_node_holders_codegen.cpp mkql_llvm_base.cpp - mkql_validate.cpp - mkql_value_builder.cpp - mkql_computation_pattern_cache.cpp - presort.cpp ) PEERDIR( @@ -30,12 +25,25 @@ PEERDIR( library/cpp/time_provider ydb/library/yql/minikql ydb/library/yql/minikql/arrow + ydb/library/yql/minikql/computation ydb/library/yql/parser/pg_wrapper/interface ydb/library/yql/public/udf ydb/library/yql/utils library/cpp/threading/future ) -PROVIDES(mkql_computation) - YQL_LAST_ABI_VERSION() + +ADDINCL( + ${ORIG_SRC_DIR} +) + +COPY( + WITH_CONTEXT + AUTO + FROM ${ORIG_SRC_DIR} + ${ORIG_SOURCES} + OUTPUT_INCLUDES ${BINDIR}/ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h +) + +PROVIDES(MINIKQL_COMPUTATION) diff --git a/ydb/library/yql/minikql/invoke_builtins/header.ya.make.inc b/ydb/library/yql/minikql/invoke_builtins/header.ya.make.inc new file mode 100644 index 0000000000..0df83322e7 --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/header.ya.make.inc @@ -0,0 +1,44 @@ +INCLUDE_ONCE() + +INCLUDE(${ARCADIA_ROOT}/ydb/library/yql/minikql/computation/header.ya.make.inc) + +ADDINCL( + ${ARCADIA_BUILD_ROOT}/${MODDIR} + ${ARCADIA_BUILD_ROOT}/${MODDIR}/ydb/library/yql/minikql/invoke_builtins + ydb/library/yql/minikql/invoke_builtins +) + +COPY_FILE(TEXT + ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h.txt + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h + OUTPUT_INCLUDES + ydb/library/yql/minikql/computation/mkql_computation_node_codegen.h + ydb/library/yql/minikql/codegen/codegen.h +) + +COPY_FILE(TEXT + ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen_llvm.h.txt + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen_llvm.h + OUTPUT_INCLUDES + llvm/IR/Constants.h + llvm/IR/DerivedTypes.h + llvm/IR/Instructions.h +) + +COPY_FILE(TEXT + ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h.txt + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h + OUTPUT_INCLUDES + mkql_builtins_impl_common.h + mkql_builtins.h + mkql_builtins_codegen.h + mkql_builtins_codegen_llvm.h +) + +COPY_FILE(TEXT + ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h.txt + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h + OUTPUT_INCLUDES + mkql_builtins_impl.h +) + diff --git a/ydb/library/yql/minikql/invoke_builtins/llvm/ut/ya.make b/ydb/library/yql/minikql/invoke_builtins/llvm/ut/ya.make new file mode 100644 index 0000000000..50448637f3 --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/llvm/ut/ya.make @@ -0,0 +1,19 @@ +UNITTEST() + +SRCDIR(ydb/library/yql/minikql/invoke_builtins/llvm) + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm + ydb/library/yql/minikql/invoke_builtins/llvm + ydb/library/yql/minikql/computation/llvm + contrib/libs/llvm12/lib/IR + contrib/libs/llvm12/lib/ExecutionEngine/MCJIT + contrib/libs/llvm12/lib/Linker + contrib/libs/llvm12/lib/Target/X86 + contrib/libs/llvm12/lib/Target/X86/AsmParser + contrib/libs/llvm12/lib/Transforms/IPO +) + +INCLUDE(../../ut/ya.make.inc) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/invoke_builtins/llvm/ya.make b/ydb/library/yql/minikql/invoke_builtins/llvm/ya.make index e73006e002..582e335163 100644 --- a/ydb/library/yql/minikql/invoke_builtins/llvm/ya.make +++ b/ydb/library/yql/minikql/invoke_builtins/llvm/ya.make @@ -3,7 +3,7 @@ LIBRARY() NO_COMPILER_WARNINGS() PEERDIR( - ydb/library/yql/minikql/codegen + ydb/library/yql/minikql/codegen/llvm ydb/library/yql/minikql/computation/llvm contrib/libs/llvm12/lib/IR contrib/libs/llvm12/lib/ExecutionEngine/MCJIT @@ -15,4 +15,10 @@ PEERDIR( INCLUDE(../ya.make.inc) +PROVIDES(mkql_invoke_builtins) + END() + +RECURSE_FOR_TESTS( + ut +)
\ No newline at end of file diff --git a/ydb/library/yql/minikql/invoke_builtins/llvm14/ut/ya.make b/ydb/library/yql/minikql/invoke_builtins/llvm14/ut/ya.make new file mode 100644 index 0000000000..6d34eb4771 --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/llvm14/ut/ya.make @@ -0,0 +1,19 @@ +UNITTEST() + +SRCDIR(ydb/library/yql/minikql/invoke_builtins/llvm14) + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm14 + ydb/library/yql/minikql/invoke_builtins/llvm14 + ydb/library/yql/minikql/computation/llvm14 + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Transforms/IPO +) + +INCLUDE(../../ut/ya.make.inc) + +END()
\ No newline at end of file diff --git a/ydb/library/yql/minikql/invoke_builtins/llvm14/ya.make b/ydb/library/yql/minikql/invoke_builtins/llvm14/ya.make new file mode 100644 index 0000000000..dc02aeea21 --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/llvm14/ya.make @@ -0,0 +1,29 @@ +LIBRARY() + +OWNER( + g:yql + g:yql_ydb_core +) + +NO_COMPILER_WARNINGS() + +PEERDIR( + ydb/library/yql/minikql/codegen/llvm14 + ydb/library/yql/minikql/computation/llvm14 + contrib/libs/llvm14/lib/IR + contrib/libs/llvm14/lib/ExecutionEngine/MCJIT + contrib/libs/llvm14/lib/Linker + contrib/libs/llvm14/lib/Target/X86 + contrib/libs/llvm14/lib/Target/X86/AsmParser + contrib/libs/llvm14/lib/Transforms/IPO +) + +INCLUDE(../ya.make.inc) + +PROVIDES(mkql_invoke_builtins) + +END() + +RECURSE_FOR_TESTS( + ut +) diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins.cpp index 8bca6fdc39..987f6c282d 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins.cpp @@ -1,5 +1,5 @@ #include "mkql_builtins.h" -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include "mkql_builtins_compare.h" #include "mkql_builtins_string_kernels.h" diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_abs.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_abs.cpp index 7d8f5b25c3..e5d7731fc2 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_abs.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_abs.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include <cmath> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_add.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_add.cpp index d6c142642b..f50ef29857 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_add.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_add.cpp @@ -1,6 +1,6 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitand.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitand.cpp index cc5fd9dfd5..a5a2967bae 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitand.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitand.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitnot.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitnot.cpp index ea4b552600..864e68fed1 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitnot.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitnot.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitor.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitor.cpp index 757cf58f04..5650ccbc5b 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitor.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitor.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitxor.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitxor.cpp index 7c88f90143..018faee16a 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitxor.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_bitxor.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_byteat.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_byteat.cpp index 542159735a..b7fbf1e5d3 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_byteat.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_byteat.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.cpp index 62f9ba9430..c86e44ac4e 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.cpp @@ -1,9 +1,7 @@ -#include "mkql_builtins_codegen.h" +#include "mkql_builtins_codegen.h" // Y_IGNORE #ifndef MKQL_DISABLE_CODEGEN -#include <llvm/IR/Constants.h> -#include <llvm/IR/DerivedTypes.h> -#include <llvm/IR/Instructions.h> +#include "mkql_builtins_codegen_llvm.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h.txt index 4e46a4d31e..4e46a4d31e 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen.h.txt diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen_llvm.h.txt b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen_llvm.h.txt new file mode 100644 index 0000000000..fd7726b7be --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_codegen_llvm.h.txt @@ -0,0 +1,5 @@ +#pragma once + +#include <llvm/IR/Constants.h> +#include <llvm/IR/DerivedTypes.h> +#include <llvm/IR/Instructions.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_compare.h b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_compare.h index 3798913e20..098899f53c 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_compare.h +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_compare.h @@ -1,6 +1,6 @@ #pragma once -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_concat.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_concat.cpp index 543d9b2f9c..190f0b9396 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_concat.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_concat.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE // Y_IGNORE #include <ydb/library/yql/minikql/mkql_string_util.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp index 54f96f43d7..4ea6062cc0 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include <ydb/library/yql/public/udf/udf_value_builder.h> #include <util/generic/ylimits.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_countbits.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_countbits.cpp index 23f269d3b1..d71b06251d 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_countbits.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_countbits.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE // Y_IGNORE #include <library/cpp/pop_count/popcount.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_datetime.h b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_datetime.h index d19a3178dc..31f7adc15c 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_datetime.h +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_datetime.h @@ -1,6 +1,6 @@ #pragma once -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_dec.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_dec.cpp index 06bfa421ec..3400b70909 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_dec.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_dec.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.cpp index f89b2e7d9a..bd11f4198a 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h.txt index 2289a5f4f6..1ef75eb006 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h.txt @@ -1,6 +1,6 @@ #pragma once -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_div.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_div.cpp index d130c24cb4..880321f8f0 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_div.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_div.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include "mkql_builtins_datetime.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_equals.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_equals.cpp index 01c4331a2d..806f9152b6 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_equals.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_equals.cpp @@ -1,6 +1,6 @@ #include "mkql_builtins_compare.h" #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_string_kernels.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_find.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_find.cpp index aece421d61..b085f6b93f 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_find.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_find.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater.cpp index e5f24b672b..95bf8db40c 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater.cpp @@ -1,6 +1,6 @@ #include "mkql_builtins_compare.h" #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_string_kernels.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater_or_equal.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater_or_equal.cpp index 27b919b7b5..26b29e75f0 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater_or_equal.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater_or_equal.cpp @@ -1,6 +1,6 @@ #include "mkql_builtins_compare.h" #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_string_kernels.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h.txt index 5f920e96e1..9f505aee3d 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h.txt @@ -1,20 +1,9 @@ #pragma once -#include <ydb/library/yql/minikql/defs.h> -#include <ydb/library/yql/public/udf/udf_value.h> -#include <ydb/library/yql/public/udf/udf_types.h> -#include <ydb/library/yql/minikql/mkql_function_metadata.h> -#include <ydb/library/yql/minikql/arrow/arrow_defs.h> -#include <ydb/library/yql/minikql/arrow/arrow_util.h> -#include <util/string/cast.h> - +#include "mkql_builtins_impl_common.h" #include "mkql_builtins.h" #include "mkql_builtins_codegen.h" -#include <arrow/compute/function.h> -#include <arrow/util/bit_util.h> -#include <arrow/util/bitmap_ops.h> - namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl_common.h b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl_common.h new file mode 100644 index 0000000000..34f56ba23e --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl_common.h @@ -0,0 +1,13 @@ +#pragma once + +#include <ydb/library/yql/minikql/defs.h> +#include <ydb/library/yql/public/udf/udf_value.h> +#include <ydb/library/yql/public/udf/udf_types.h> +#include <ydb/library/yql/minikql/mkql_function_metadata.h> +#include <ydb/library/yql/minikql/arrow/arrow_defs.h> +#include <ydb/library/yql/minikql/arrow/arrow_util.h> +#include <util/string/cast.h> + +#include <arrow/compute/function.h> +#include <arrow/util/bit_util.h> +#include <arrow/util/bitmap_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_inc.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_inc.cpp index b210c50b6a..4e0a56e0c6 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_inc.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_inc.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_invprestr.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_invprestr.cpp index 03f19f2382..e256e79672 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_invprestr.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_invprestr.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include <ydb/library/yql/minikql/mkql_string_util.h> #include <ydb/library/yql/minikql/computation/presort.h> #include <util/thread/singleton.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less.cpp index ad60c14c61..5923d93f7a 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less.cpp @@ -1,6 +1,6 @@ #include "mkql_builtins_compare.h" #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_string_kernels.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less_or_equal.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less_or_equal.cpp index bdb2f5a5d3..27d5c0d7a3 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less_or_equal.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less_or_equal.cpp @@ -1,6 +1,6 @@ #include "mkql_builtins_compare.h" #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_string_kernels.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_max.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_max.cpp index 5ab743bf53..18d390846d 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_max.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_max.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_compare.h" #include <cmath> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_min.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_min.cpp index 9d85b84f74..e197fada2f 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_min.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_min.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_compare.h" #include <cmath> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_minus.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_minus.cpp index 4253be8619..aad3e5ccd7 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_minus.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_minus.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mod.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mod.cpp index c9ee042ddd..6e08f29b5e 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mod.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mod.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include <cmath> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mul.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mul.cpp index 6da082824a..36cd070df6 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mul.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_mul.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include "mkql_builtins_datetime.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_nanvl.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_nanvl.cpp index ddc12b8ece..8b89205b32 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_nanvl.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_nanvl.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include <cmath> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_not_equals.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_not_equals.cpp index b896aed350..7cd305b76e 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_not_equals.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_not_equals.cpp @@ -1,6 +1,6 @@ #include "mkql_builtins_compare.h" #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include "mkql_builtins_string_kernels.h" #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_plus.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_plus.cpp index 49979a435a..8251057935 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_plus.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_plus.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotleft.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotleft.cpp index 208428e13b..42ee045f85 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotleft.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotleft.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotright.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotright.cpp index 4694c266df..56305289ee 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotright.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_rotright.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftleft.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftleft.cpp index 02231f46cb..7096fd4a74 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftleft.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftleft.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftright.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftright.cpp index 43bfb6ad98..f35c85fcc3 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftright.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_shiftright.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_string_kernels.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_string_kernels.cpp index a291f463eb..f7a1b20cb8 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_string_kernels.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_string_kernels.cpp @@ -1,5 +1,5 @@ #include "mkql_builtins_string_kernels.h" -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE namespace NKikimr { namespace NMiniKQL { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_sub.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_sub.cpp index bd17921738..2b04e4ea58 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_sub.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_sub.cpp @@ -1,6 +1,6 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include "mkql_builtins_datetime.h" -#include "mkql_builtins_decimal.h" +#include "mkql_builtins_decimal.h" // Y_IGNORE #include <ydb/library/yql/minikql/mkql_type_ops.h> diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_substring.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_substring.cpp index 6411f57817..c29f3bb5d5 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_substring.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_substring.cpp @@ -1,4 +1,4 @@ -#include "mkql_builtins_impl.h" +#include "mkql_builtins_impl.h" // Y_IGNORE #include <ydb/library/yql/minikql/mkql_string_util.h> namespace NKikimr { diff --git a/ydb/library/yql/minikql/invoke_builtins/ut/ya.make.inc b/ydb/library/yql/minikql/invoke_builtins/ut/ya.make.inc new file mode 100644 index 0000000000..eee7440b0b --- /dev/null +++ b/ydb/library/yql/minikql/invoke_builtins/ut/ya.make.inc @@ -0,0 +1,38 @@ +FORK_SUBTESTS() + +IF (SANITIZER_TYPE == "thread" OR WITH_VALGRIND) + TIMEOUT(1800) + SIZE(LARGE) + TAG(ya:fat) +ELSE() + TIMEOUT(600) + SIZE(MEDIUM) +ENDIF() + +OWNER(g:yql) + +PEERDIR( + ydb/library/yql/public/udf + ydb/library/yql/public/udf/service/exception_policy + ydb/library/yql/sql/pg_dummy +) + +YQL_LAST_ABI_VERSION() + +SET(ORIG_SRC_DIR ydb/library/yql/minikql/invoke_builtins) + +SET(ORIG_SOURCES + mkql_builtins_ut.cpp +) + +ADDINCL( + ${ORIG_SRC_DIR} +) + +COPY( + AUTO + FROM ${ORIG_SRC_DIR} + ${ORIG_SOURCES} + OUTPUT_INCLUDES + mkql_builtins.h +) diff --git a/ydb/library/yql/minikql/invoke_builtins/ya.make.inc b/ydb/library/yql/minikql/invoke_builtins/ya.make.inc index c03be1e5ce..59711d7c0a 100644 --- a/ydb/library/yql/minikql/invoke_builtins/ya.make.inc +++ b/ydb/library/yql/minikql/invoke_builtins/ya.make.inc @@ -1,6 +1,8 @@ -SRCDIR(ydb/library/yql/minikql/invoke_builtins) +INCLUDE(header.ya.make.inc) -SRCS( +SET(ORIG_SRC_DIR ydb/library/yql/minikql/invoke_builtins) + +SET(ORIG_SOURCES mkql_builtins.cpp mkql_builtins.h mkql_builtins_abs.cpp @@ -18,7 +20,6 @@ SRCS( mkql_builtins_dec.cpp mkql_builtins_div.cpp mkql_builtins_find.cpp - mkql_builtins_impl.h mkql_builtins_inc.cpp mkql_builtins_invprestr.cpp mkql_builtins_max.cpp @@ -55,4 +56,15 @@ PEERDIR( YQL_LAST_ABI_VERSION() -PROVIDES(mkql_invoke_builtins) +ADDINCL( + ${ORIG_SRC_DIR} +) + +COPY( + AUTO + FROM ${ORIG_SRC_DIR} + ${ORIG_SOURCES} + OUTPUT_INCLUDES + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h + ${BINDIR}/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_decimal.h +) diff --git a/ydb/library/yql/parser/pg_catalog/catalog.h b/ydb/library/yql/parser/pg_catalog/catalog.h index cea4371b7c..ee527410bb 100644 --- a/ydb/library/yql/parser/pg_catalog/catalog.h +++ b/ydb/library/yql/parser/pg_catalog/catalog.h @@ -1,5 +1,5 @@ #pragma once -#include "ydb/library/yql/public/issue/yql_issue.h" +#include <ydb/library/yql/public/issue/yql_issue.h> #include <util/generic/maybe.h> #include <util/generic/string.h> #include <util/generic/vector.h> diff --git a/ydb/library/yql/parser/pg_wrapper/ut/ya.make b/ydb/library/yql/parser/pg_wrapper/ut/ya.make index 5cff7be9a2..c4a4437072 100644 --- a/ydb/library/yql/parser/pg_wrapper/ut/ya.make +++ b/ydb/library/yql/parser/pg_wrapper/ut/ya.make @@ -27,7 +27,7 @@ PEERDIR( ydb/library/yql/public/udf/service/exception_policy ydb/library/yql/minikql/comp_nodes/llvm ydb/library/yql/parser/pg_catalog - ydb/library/yql/minikql/codegen + ydb/library/yql/minikql/codegen/llvm library/cpp/resource ) diff --git a/ydb/library/yql/parser/pg_wrapper/ya.make b/ydb/library/yql/parser/pg_wrapper/ya.make index 7632b8ae55..865c83bedc 100644 --- a/ydb/library/yql/parser/pg_wrapper/ya.make +++ b/ydb/library/yql/parser/pg_wrapper/ya.make @@ -4,6 +4,8 @@ PROVIDES( yql_pg_runtime ) +CXXFLAGS(-DMKQL_DISABLE_CODEGEN) + YQL_LAST_ABI_VERSION() ADDINCL( @@ -66,7 +68,7 @@ PEERDIR( library/cpp/yson ydb/library/yql/core ydb/library/yql/minikql/arrow - ydb/library/yql/minikql/computation/llvm + ydb/library/yql/minikql/computation ydb/library/yql/parser/pg_catalog ydb/library/yql/providers/common/codec ydb/library/yql/public/issue diff --git a/ydb/library/yql/providers/common/codec/ya.make b/ydb/library/yql/providers/common/codec/ya.make index 0691522c03..012ae75ccf 100644 --- a/ydb/library/yql/providers/common/codec/ya.make +++ b/ydb/library/yql/providers/common/codec/ya.make @@ -15,7 +15,7 @@ SRCS( ) PEERDIR( - ydb/library/yql/minikql/computation/llvm + ydb/library/yql/minikql/computation ydb/library/yql/parser/pg_wrapper/interface ydb/library/yql/providers/common/mkql library/cpp/yson/node diff --git a/ydb/library/yql/providers/common/comp_nodes/ya.make b/ydb/library/yql/providers/common/comp_nodes/ya.make index c244a9532c..e829efe3e8 100644 --- a/ydb/library/yql/providers/common/comp_nodes/ya.make +++ b/ydb/library/yql/providers/common/comp_nodes/ya.make @@ -43,7 +43,7 @@ PEERDIR( IF (NOT MKQL_DISABLE_CODEGEN) PEERDIR( - ydb/library/yql/minikql/codegen + ydb/library/yql/minikql/codegen/llvm contrib/libs/llvm12/lib/IR contrib/libs/llvm12/lib/ExecutionEngine/MCJIT contrib/libs/llvm12/lib/Linker diff --git a/ydb/library/yql/providers/yt/codec/codegen/ya.make b/ydb/library/yql/providers/yt/codec/codegen/ya.make index 422511b8da..eb25e02da1 100644 --- a/ydb/library/yql/providers/yt/codec/codegen/ya.make +++ b/ydb/library/yql/providers/yt/codec/codegen/ya.make @@ -15,14 +15,7 @@ PEERDIR( IF (NOT MKQL_DISABLE_CODEGEN) PEERDIR( - contrib/libs/llvm12/lib/IR - contrib/libs/llvm12/lib/ExecutionEngine/MCJIT - contrib/libs/llvm12/lib/Linker - contrib/libs/llvm12/lib/Support - contrib/libs/llvm12/lib/Target/X86 - contrib/libs/llvm12/lib/Target/X86/AsmParser - contrib/libs/llvm12/lib/Transforms/IPO - ydb/library/yql/minikql/codegen + ydb/library/yql/minikql/codegen/llvm ) LLVM_BC( yt_codec_bc.cpp diff --git a/ydb/library/yql/providers/yt/comp_nodes/dq/ya.make b/ydb/library/yql/providers/yt/comp_nodes/dq/ya.make index 48ae5d6ea1..39d9e4c1aa 100644 --- a/ydb/library/yql/providers/yt/comp_nodes/dq/ya.make +++ b/ydb/library/yql/providers/yt/comp_nodes/dq/ya.make @@ -43,6 +43,8 @@ SRCS( dq_yt_writer.cpp ) +INCLUDE(../../../../minikql/computation/header.ya.make.inc) + YQL_LAST_ABI_VERSION() diff --git a/ydb/library/yql/providers/yt/comp_nodes/ya.make b/ydb/library/yql/providers/yt/comp_nodes/ya.make index 0e5c47c6db..d4cde6e54b 100644 --- a/ydb/library/yql/providers/yt/comp_nodes/ya.make +++ b/ydb/library/yql/providers/yt/comp_nodes/ya.make @@ -22,6 +22,8 @@ PEERDIR( ydb/library/yql/providers/yt/expr_nodes ) +# INCLUDE(../../../minikql/computation/header.ya.make.inc) + YQL_LAST_ABI_VERSION() END() diff --git a/ydb/library/yql/providers/yt/gateway/native/yql_yt_lambda_builder.cpp b/ydb/library/yql/providers/yt/gateway/native/yql_yt_lambda_builder.cpp index 8575067cc1..1ca94b87a9 100644 --- a/ydb/library/yql/providers/yt/gateway/native/yql_yt_lambda_builder.cpp +++ b/ydb/library/yql/providers/yt/gateway/native/yql_yt_lambda_builder.cpp @@ -25,6 +25,7 @@ #include <ydb/library/yql/minikql/comp_nodes/mkql_factories.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node.h> #include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h> +#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders_codegen.h> #include <ydb/library/yql/utils/yql_panic.h> |