@@ -359,6 +359,69 @@ class EmptySourceOperator : public Operator {
359359 std::vector<int64_t > column_idxs_;
360360};
361361
362+ class ClickHouseSourceOperator : public Operator {
363+ public:
364+ explicit ClickHouseSourceOperator (int64_t id)
365+ : Operator(id, planpb::CLICKHOUSE_SOURCE_OPERATOR ) {}
366+ ~ClickHouseSourceOperator () override = default ;
367+
368+ StatusOr<table_store::schema::Relation> OutputRelation (
369+ const table_store::schema::Schema& schema, const PlanState& state,
370+ const std::vector<int64_t >& input_ids) const override ;
371+ Status Init (const planpb::ClickHouseSourceOperator& pb);
372+ std::string DebugString () const override ;
373+
374+ std::string host () const { return pb_.host (); }
375+ int32_t port () const { return pb_.port (); }
376+ std::string username () const { return pb_.username (); }
377+ std::string password () const { return pb_.password (); }
378+ std::string database () const { return pb_.database (); }
379+ std::string query () const { return pb_.query (); }
380+ int32_t batch_size () const { return pb_.batch_size (); }
381+ bool streaming () const { return pb_.streaming (); }
382+ std::vector<std::string> column_names () const {
383+ return std::vector<std::string>(pb_.column_names ().begin (), pb_.column_names ().end ());
384+ }
385+ std::vector<types::DataType> column_types () const {
386+ std::vector<types::DataType> types;
387+ types.reserve (pb_.column_types_size ());
388+ for (const auto & type : pb_.column_types ()) {
389+ types.push_back (static_cast <types::DataType>(type));
390+ }
391+ return types;
392+ }
393+ std::string timestamp_column () const { return pb_.timestamp_column (); }
394+ std::string partition_column () const { return pb_.partition_column (); }
395+ int64_t start_time () const { return pb_.start_time (); }
396+ int64_t end_time () const { return pb_.end_time (); }
397+
398+ private:
399+ planpb::ClickHouseSourceOperator pb_;
400+ };
401+
402+ class ClickHouseExportSinkOperator : public Operator {
403+ public:
404+ explicit ClickHouseExportSinkOperator (int64_t id)
405+ : Operator(id, planpb::CLICKHOUSE_EXPORT_SINK_OPERATOR ) {}
406+ ~ClickHouseExportSinkOperator () override = default ;
407+
408+ StatusOr<table_store::schema::Relation> OutputRelation (
409+ const table_store::schema::Schema& schema, const PlanState& state,
410+ const std::vector<int64_t >& input_ids) const override ;
411+ Status Init (const planpb::ClickHouseExportSinkOperator& pb);
412+ std::string DebugString () const override ;
413+
414+ const planpb::ClickHouseConfig& clickhouse_config () const { return pb_.clickhouse_config (); }
415+ const std::string& table_name () const { return pb_.table_name (); }
416+ const ::google::protobuf::RepeatedPtrField<planpb::ClickHouseExportSinkOperator::ColumnMapping>&
417+ column_mappings () const {
418+ return pb_.column_mappings ();
419+ }
420+
421+ private:
422+ planpb::ClickHouseExportSinkOperator pb_;
423+ };
424+
362425class OTelExportSinkOperator : public Operator {
363426 public:
364427 explicit OTelExportSinkOperator (int64_t id) : Operator(id, planpb::OTEL_EXPORT_SINK_OPERATOR ) {}
0 commit comments