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::NAryOperator<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 virtual bool execute(); 00015 virtual ~column_scan_operator(); 00016 private: 00017 std::string table_name_; 00018 std::string column_name_; 00019 }; 00020 00021 column_processing::cpu::Physical_Operator_Map_Ptr map_init_function_column_scan_operator(); 00022 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); 00023 00024 }//end namespace physical_operator 00025 00026 //extern Map_Init_Function init_function_column_scan_operator; 00027 00028 //Map_Init_Function init_function_column_scan_operator=physical_operator::map_init_function_column_scan_operator; //boost::bind(); 00029 00030 //Map_Init_Function getMap_Init_Function_Scan_Operation(); 00031 00032 namespace logical_operator { 00033 00034 class Logical_Create_Table : public hype::queryprocessing::TypedNode_Impl<ColumnPtr, physical_operator::map_init_function_column_scan_operator> //init_function_column_scan_operator> //init_function_column_scan_operator> 00035 { 00036 public: 00037 Logical_Create_Table(const std::string& table_name, const std::string& column_name); 00038 00039 virtual unsigned int getOutputResultSize() const; 00040 00041 virtual double getCalculatedSelectivity() const; 00042 00043 virtual std::string getOperationName() const; 00044 00045 const std::string& getTableName() const; 00046 00047 const std::string& getColumnName() const; 00048 00049 void addChild(OperatorInputType child) { 00050 childs_.push_back(child); 00051 } 00052 00053 virtual column_processing::cpu::TypedOperatorPtr getOptimalOperator(column_processing::cpu::TypedOperatorPtr left_child, column_processing::cpu::TypedOperatorPtr right_child, hype::DeviceTypeConstraint dev_constr); 00054 00055 private: 00056 00057 std::list<OperatorInputType> childs_; 00058 }; 00059 00060 }//end namespace logical_operator 00061 00062 }//end namespace query_processing 00063 00064 }; //end namespace CogaDB