29
29
This will replace Table_ident.
34
32
#ifndef DRIZZLED_IDENTIFIER_SCHEMA_H
35
33
#define DRIZZLED_IDENTIFIER_SCHEMA_H
37
35
#include <drizzled/enum.h>
38
36
#include "drizzled/definitions.h"
39
37
#include "drizzled/message/table.pb.h"
40
#include "drizzled/catalog/local.h"
41
38
#include <string.h>
43
40
#include <assert.h>
51
48
#include <boost/algorithm/string.hpp>
53
#include "drizzled/visibility.h"
55
50
namespace drizzled {
56
namespace identifier {
58
class DRIZZLED_API Schema : public Identifier
52
static std::string catalog("local");
54
class SchemaIdentifier
61
57
std::string db_path;
64
typedef std::vector <Schema> vector;
65
typedef const Schema& const_reference;
67
Schema(const std::string &db_arg);
61
typedef std::vector <SchemaIdentifier> vector;
62
typedef const SchemaIdentifier& const_reference;
64
SchemaIdentifier(const std::string &db_arg);
66
virtual ~SchemaIdentifier()
72
69
virtual void getSQLPath(std::string &arg) const;
74
70
const std::string &getPath() const;
76
72
const std::string &getSchemaName() const
81
const std::string &getCatalogName() const;
77
const std::string &getCatalogName() const
83
82
virtual bool isValid() const;
85
inline virtual bool isSystem() const
90
84
bool compare(const std::string &arg) const;
91
bool compare(Schema::const_reference) const;
85
bool compare(SchemaIdentifier::const_reference) const;
93
friend bool operator<(Schema::const_reference left, Schema::const_reference right)
87
friend bool operator<(SchemaIdentifier::const_reference left, SchemaIdentifier::const_reference right)
95
89
return boost::algorithm::to_upper_copy(left.getSchemaName()) < boost::algorithm::to_upper_copy(right.getSchemaName());
98
friend bool operator==(Schema::const_reference left,
99
Schema::const_reference right)
92
friend std::ostream& operator<<(std::ostream& output,
93
SchemaIdentifier::const_reference identifier)
95
output << "SchemaIdentifier:(";
96
output << identifier.catalog;
98
output << identifier.db;
100
output << identifier.getPath();
103
return output; // for multiple << operators.
106
friend bool operator==(SchemaIdentifier::const_reference left,
107
SchemaIdentifier::const_reference right)
101
109
return boost::iequals(left.getSchemaName(), right.getSchemaName());
105
std::ostream& operator<<(std::ostream& output, const Schema&identifier);
108
} /* namespace identifier */
109
114
} /* namespace drizzled */
111
116
#endif /* DRIZZLED_IDENTIFIER_SCHEMA_H */