diff --git a/docker/test/fasttest/run.sh b/docker/test/fasttest/run.sh
index 6a2487bc30d..ec70911d822 100755
--- a/docker/test/fasttest/run.sh
+++ b/docker/test/fasttest/run.sh
@@ -185,7 +185,6 @@ function clone_submodules
contrib/dragonbox
contrib/fast_float
contrib/NuRaft
- contrib/llvm
)
git submodule sync
@@ -202,6 +201,7 @@ function run_cmake
"-DENABLE_LIBRARIES=0"
"-DENABLE_TESTS=0"
"-DENABLE_UTILS=0"
+ "-DENABLE_EMBEDDED_COMPILER=0"
"-DENABLE_THINLTO=0"
"-DUSE_UNWIND=1"
"-DENABLE_NURAFT=1"
@@ -370,6 +370,9 @@ function run_tests
# Depends on AWS
01801_s3_cluster
+
+ # Depents on LLVM JIT
+ 01852_jit_if
)
(time clickhouse-test --hung-check -j 8 --order=random --use-skip-list --no-long --testname --shard --zookeeper --skip "${TESTS_TO_SKIP[@]}" -- "$FASTTEST_FOCUS" 2>&1 ||:) | ts '%Y-%m-%d %H:%M:%S' | tee "$FASTTEST_OUTPUT/test_log.txt"
diff --git a/programs/server/config.xml b/programs/server/config.xml
index a7bb9d49e95..3e8d250d02a 100644
--- a/programs/server/config.xml
+++ b/programs/server/config.xml
@@ -329,6 +329,8 @@
-->
1000
+
+ 1073741824
/var/lib/clickhouse/
diff --git a/src/Interpreters/ActionsDAG.cpp b/src/Interpreters/ActionsDAG.cpp
index c0c401d4610..60aeef7ee59 100644
--- a/src/Interpreters/ActionsDAG.cpp
+++ b/src/Interpreters/ActionsDAG.cpp
@@ -181,13 +181,9 @@ const ActionsDAG::Node & ActionsDAG::addFunction(
node.function_builder = function;
node.children = std::move(children);
+ bool all_const = true;
ColumnsWithTypeAndName arguments(num_arguments);
- /// There are function that can check argument column address and if we want to properly emulate execute
- /// call it is important that column arguments from same node have equal address
- std::unordered_map child_to_dummy_column;
- child_to_dummy_column.reserve(num_arguments);
-
for (size_t i = 0; i < num_arguments; ++i)
{
const auto & child = *node.children[i];
@@ -197,17 +193,8 @@ const ActionsDAG::Node & ActionsDAG::addFunction(
argument.type = child.result_type;
argument.name = child.result_name;
- if (!argument.column)
- {
- auto it = child_to_dummy_column.find(&child);
- if (it != child_to_dummy_column.end())
- argument.column = it->second;
- else
- {
- argument.column = argument.type->createColumn();
- child_to_dummy_column[&child] = argument.column;
- }
- }
+ if (!argument.column || !isColumnConst(*argument.column))
+ all_const = false;
arguments[i] = std::move(argument);
}
@@ -216,9 +203,8 @@ const ActionsDAG::Node & ActionsDAG::addFunction(
node.result_type = node.function_base->getResultType();
node.function = node.function_base->prepare(arguments);
- /// There are function that can be constant event if they arguments are not
- /// For examples greater(x0, x0) will return constant result.
- if (node.function_base->isSuitableForConstantFolding())
+ /// If all arguments are constants, and function is suitable to be executed in 'prepare' stage - execute function.
+ if (all_const && node.function_base->isSuitableForConstantFolding())
{
size_t num_rows = arguments.empty() ? 0 : arguments.front().column->size();
auto col = node.function->execute(arguments, node.result_type, num_rows, true);