Column-oriented GPU-accelerated Database Management System
CoGaDB
|
00001 #pragma once 00002 00003 #include <query_processing/column_processing/definitions.hpp> 00004 #include <persistence/storage_manager.hpp> 00005 00006 namespace CoGaDB { 00007 namespace query_processing { 00008 namespace physical_operator { 00009 00010 class column_scan_operator : public hype::queryprocessing::UnaryOperator<ColumnPtr, ColumnPtr> { 00011 public: 00012 typedef column_processing::cpu::TypedOperatorPtr TypedOperatorPtr; 00013 column_scan_operator(const hype::SchedulingDecision& sched_dec, const std::string& table_name, const std::string& column_name); 00014 column_scan_operator(const hype::SchedulingDecision& sched_dec, TablePtr table_ptr, const std::string& column_name); 00015 virtual bool execute(); 00016 virtual ~column_scan_operator(); 00017 private: 00018 std::string table_name_; 00019 std::string column_name_; 00020 TablePtr table_ptr_; 00021 }; 00022 00023 column_processing::cpu::Physical_Operator_Map_Ptr map_init_function_column_scan_operator(); 00024 column_processing::cpu::TypedOperatorPtr create_column_scan_operator(column_processing::cpu::TypedLogicalNode& logical_node, const hype::SchedulingDecision&, column_processing::cpu::TypedOperatorPtr left_child, column_processing::cpu::TypedOperatorPtr right_child); 00025 00026 }//end namespace physical_operator 00027 00028 namespace logical_operator { 00029 00030 class Logical_Column_Scan : public hype::queryprocessing::TypedNode_Impl<ColumnPtr, physical_operator::map_init_function_column_scan_operator> //init_function_column_scan_operator> //init_function_column_scan_operator> 00031 { 00032 public: 00033 Logical_Column_Scan(const std::string& table_name, const std::string& column_name); 00034 Logical_Column_Scan(TablePtr table, const std::string& column_name); 00035 00036 virtual unsigned int getOutputResultSize() const; 00037 00038 virtual double getCalculatedSelectivity() const; 00039 00040 virtual std::string getOperationName() const; 00041 00042 const std::string& getTableName() const; 00043 00044 const TablePtr getTablePtr(); 00045 00046 const std::string& getColumnName() const; 00047 00048 std::string toString(bool verbose) const; 00049 00050 virtual column_processing::cpu::TypedOperatorPtr getOptimalOperator(column_processing::cpu::TypedOperatorPtr left_child, column_processing::cpu::TypedOperatorPtr right_child, hype::DeviceTypeConstraint dev_constr); 00051 00052 private: 00053 std::string table_name_; 00054 std::string column_name_; 00055 TablePtr table_ptr_; 00056 }; 00057 00058 }//end namespace logical_operator 00059 00060 }//end namespace query_processing 00061 00062 }; //end namespace CogaDB