//===----------------------------------------------------------------------===// // DuckDB // // duckdb/execution/operator/helper/physical_vacuum.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/common/unordered_map.hpp" #include "duckdb/execution/physical_operator.hpp" #include "duckdb/parser/parsed_data/vacuum_info.hpp" namespace duckdb { //! PhysicalVacuum represents a VACUUM operation (i.e. VACUUM or ANALYZE) class PhysicalVacuum : public PhysicalOperator { public: static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::VACUUM; public: PhysicalVacuum(unique_ptr info, idx_t estimated_cardinality); unique_ptr info; public: // Source interface SourceResultType GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const override; bool IsSource() const override { return true; } public: // Sink interface unique_ptr GetLocalSinkState(ExecutionContext &context) const override; unique_ptr GetGlobalSinkState(ClientContext &context) const override; SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override; void Combine(ExecutionContext &context, GlobalSinkState &gstate_p, LocalSinkState &lstate_p) const override; SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context, GlobalSinkState &gstate) const override; bool IsSink() const override { return info->has_table; } bool ParallelSink() const override { return IsSink(); } }; } // namespace duckdb