Column-oriented GPU-accelerated Database Management System
CoGaDB
/home/sebastian/gpudbms/trunk/cogadb/include/query_processing/column_processing/cpu_columnscan_operator.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines