diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-07-25 12:13:38 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-07-27 10:30:15 +0200 |
commit | 923639283d2bae0b82cb605fa4680a3058c9d973 (patch) | |
tree | 3c122b70129cdd2b502e1f7056eac896c109f03a /odb/semantics/relational | |
parent | adfa9bbd04cd3571932ee7675344ca723bfa1eab (diff) |
Add support for defining indexes
New db pragma qualifier: index. New tests: common/index, mysql/index,
pgsql/index.
Diffstat (limited to 'odb/semantics/relational')
-rw-r--r-- | odb/semantics/relational/index.hxx | 31 | ||||
-rw-r--r-- | odb/semantics/relational/key.hxx | 9 |
2 files changed, 39 insertions, 1 deletions
diff --git a/odb/semantics/relational/index.hxx b/odb/semantics/relational/index.hxx index af90b12..bf08a23 100644 --- a/odb/semantics/relational/index.hxx +++ b/odb/semantics/relational/index.hxx @@ -17,13 +17,42 @@ namespace semantics class index: public key { public: - index (string const& id): key (id) {} + index (string const& id, + string const& t = string (), + string const& m = string (), + string const& o = string ()) + : key (id), type_ (t), method_ (m), options_ (o) + { + } + + string const& + type () const + { + return type_; + } + + string const& + method () const + { + return method_; + } + + string const& + options () const + { + return options_; + } virtual string kind () const { return "index"; } + + private: + string type_; // E.g., "UNIQUE", etc. + string method_; // E.g., "BTREE", etc. + string options_; // Database-specific index options. }; } } diff --git a/odb/semantics/relational/key.hxx b/odb/semantics/relational/key.hxx index 40e7499..3b86f1c 100644 --- a/odb/semantics/relational/key.hxx +++ b/odb/semantics/relational/key.hxx @@ -32,7 +32,15 @@ namespace semantics return *column_; } + string const& + options () const + { + return options_; + } + public: + contains (string const& o = string ()) : options_ (o) {} + void set_left_node (key_type& n) { @@ -48,6 +56,7 @@ namespace semantics protected: key_type* key_; column_type* column_; + string options_; }; class key: public unameable |