00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __ZTupleQuisitioner__
00026 #define __ZTupleQuisitioner__
00027 #include "zconfig.h"
00028
00029 #include "ZTBQuery.h"
00030 #include "ZTextCollator.h"
00031
00032 #include <map>
00033 #include <set>
00034 #include <vector>
00035
00036 class ZTupleQuisitioner
00037 {
00038 public:
00039 virtual void Search(const ZTBSpec& iSpec, std::set<uint64>& ioIDs) = 0;
00040 virtual void Search(const ZTBSpec& iSpec, std::vector<uint64>& oIDs) = 0;
00041
00042 virtual void FetchTuples(size_t iCount, const uint64* iIDs, ZTuple* oTuples) = 0;
00043 virtual ZTuple FetchTuple(uint64 iID) = 0;
00044
00045
00046 void Query(const ZRef<ZTBQueryNode>& iNode, const ZTBSpec* iFilter, std::vector<uint64>& ioIDs);
00047 void Query_Unordered(const ZRef<ZTBQueryNode>& iNode, const ZTBSpec* iFilter, std::set<uint64>& ioIDs);
00048
00049 void Query_Combo_Unordered(const std::vector<ZTBQueryNode_Combo::Intersection>& iIntersections,
00050 const ZTBSpec* iFilter, std::set<uint64>& ioIDs);
00051
00052 void Query_Combo(const std::vector<ZTBQueryNode_Combo::Intersection>& iIntersections,
00053 const ZTBSpec* iFilter, std::vector<uint64>& ioIDs);
00054
00055 void Query_Combo_Sorted(const std::vector<ZTBQuery::SortSpec>& iSort,
00056 const std::vector<ZTBQueryNode_Combo::Intersection>& iIntersections,
00057 const ZTBSpec* iFilter, std::vector<uint64>& ioIDs);
00058
00059 void Query_Combo_First(const ZTuplePropName& iFirst, const std::vector<ZTBQuery::SortSpec>& iSort,
00060 const std::vector<ZTBQueryNode_Combo::Intersection>& iIntersections,
00061 const ZTBSpec* iFilter, std::vector<uint64>& ioIDs);
00062
00063 void Query_Intersection_Unordered(const ZTBQueryNode_Combo::Intersection& iIntersection,
00064 const ZTBSpec* iFilter, std::set<uint64>& ioIDs);
00065
00066 void Query_Intersection(const ZTBQueryNode_Combo::Intersection& iIntersection,
00067 const ZTBSpec* iFilter, std::vector<uint64>& oIDs);
00068
00069 private:
00070 ZTextCollator fTextCollators[4];
00071 };
00072
00073 #endif // __ZTupleQuisitioner__