Column-oriented GPU-accelerated Database Management System
CoGaDB
/home/sebastian/gpudbms/trunk/cogadb/include/query_processing/column_processing/cpu_column_constant_filter_operator.hpp
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <core/selection_expression.hpp>
00004 #include <query_processing/column_processing/definitions.hpp>
00005 #include <persistence/storage_manager.hpp>
00006 
00007 namespace CoGaDB {
00008     namespace query_processing {
00009         namespace physical_operator {
00010 
00011             class CPU_column_constant_filter_operator : public hype::queryprocessing::UnaryOperator<ColumnPtr, ColumnPtr> {
00012             public:
00013                 typedef column_processing::cpu::TypedOperatorPtr TypedOperatorPtr;
00014                 CPU_column_constant_filter_operator(const hype::SchedulingDecision& sched_dec, TypedOperatorPtr child, const Predicate& pred);
00015                 virtual bool execute();
00016                 virtual ~CPU_column_constant_filter_operator();
00017             private:
00018                 Predicate pred_;
00019             };
00020             
00021             class GPU_column_constant_filter_operator : public hype::queryprocessing::UnaryOperator<ColumnPtr, ColumnPtr> {
00022             public:
00023                 typedef column_processing::cpu::TypedOperatorPtr TypedOperatorPtr;
00024                 GPU_column_constant_filter_operator(const hype::SchedulingDecision& sched_dec, TypedOperatorPtr child, const Predicate& pred);
00025                 virtual bool execute();
00026                 virtual ~GPU_column_constant_filter_operator();
00027             private:
00028                 Predicate pred_;
00029             };
00030             
00031                        
00032 
00033             column_processing::cpu::Physical_Operator_Map_Ptr map_init_function_column_constant_filter_operator();
00034             column_processing::cpu::TypedOperatorPtr create_CPU_column_constant_filter_operator(column_processing::cpu::TypedLogicalNode& logical_node, const hype::SchedulingDecision&, column_processing::cpu::TypedOperatorPtr left_child, column_processing::cpu::TypedOperatorPtr right_child);
00035             column_processing::cpu::TypedOperatorPtr create_GPU_column_constant_filter_operator(column_processing::cpu::TypedLogicalNode& logical_node, const hype::SchedulingDecision&, column_processing::cpu::TypedOperatorPtr left_child, column_processing::cpu::TypedOperatorPtr right_child);
00036             
00037         }//end namespace physical_operator
00038 
00039         namespace logical_operator {
00040 
00041             class Logical_Column_Constant_Filter : public hype::queryprocessing::TypedNode_Impl<ColumnPtr, physical_operator::map_init_function_column_constant_filter_operator> //init_function_column_constant_filter_operator> //init_function_column_constant_filter_operator>
00042             {
00043             public:
00044                 Logical_Column_Constant_Filter(const Predicate&, hype::DeviceConstraint dev_constr = hype::DeviceConstraint());
00045 
00046                 virtual unsigned int getOutputResultSize() const;
00047 
00048                 virtual double getCalculatedSelectivity() const;
00049 
00050                 virtual std::string getOperationName() const;
00051 
00052                 const Predicate& getPredicate() const;
00053                 
00054                 std::string toString(bool verbose) const;
00055                 //virtual column_processing::cpu::TypedOperatorPtr getOptimalOperator(column_processing::cpu::TypedOperatorPtr left_child, column_processing::cpu::TypedOperatorPtr right_child, hype::DeviceTypeConstraint dev_constr);
00056 
00057             private:
00058                 Predicate pred_;
00059             };
00060 
00061         }//end namespace logical_operator
00062 
00063     }//end namespace query_processing
00064 
00065 }; //end namespace CogaDB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines