mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-02 12:32:04 +00:00
28 lines
904 B
C++
28 lines
904 B
C++
#pragma once
|
|
#include <Interpreters/Context_fwd.h>
|
|
#include <Parsers/IAST_fwd.h>
|
|
#include <Core/Types.h>
|
|
|
|
namespace DB
|
|
{
|
|
|
|
struct MutationCommand;
|
|
class ASTAlterCommand;
|
|
|
|
struct FirstNonDeterministicFunctionResult
|
|
{
|
|
std::optional<String> nondeterministic_function_name;
|
|
bool subquery = false;
|
|
};
|
|
|
|
/// Searches for non-deterministic functions and subqueries which
|
|
/// may also be non-deterministic in expressions of mutation command.
|
|
FirstNonDeterministicFunctionResult findFirstNonDeterministicFunction(const MutationCommand & command, ContextPtr context);
|
|
|
|
/// Executes non-deterministic functions and subqueries in expressions of mutation
|
|
/// command and replaces them to the literals with a result of expressions.
|
|
/// Returns rewritten query if expressions were replaced, nullptr otherwise.
|
|
ASTPtr replaceNonDeterministicToScalars(const ASTAlterCommand & alter_command, ContextPtr context);
|
|
|
|
}
|