summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2014-11-25 19:30:02 -0500
committerBenety Goh <benety@mongodb.com>2014-12-03 11:55:06 -0500
commit5ebf0f69ee53cde7c5d2a1289609ee1692705c97 (patch)
treeda8bfd0c27589be38c8878cebde960b5fa1fa6d2
parent63ffe70aec1309ff679d6ba6c0272524e767ad69 (diff)
downloadmongo-5ebf0f69ee53cde7c5d2a1289609ee1692705c97.tar.gz
SERVER-16233 storage engine factories support index options validation
-rw-r--r--src/mongo/db/storage/devnull/devnull_init.cpp4
-rw-r--r--src/mongo/db/storage/in_memory/in_memory_init.cpp4
-rw-r--r--src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp4
-rw-r--r--src/mongo/db/storage/rocks/rocks_init.cpp3
-rw-r--r--src/mongo/db/storage/storage_engine.h6
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp7
6 files changed, 28 insertions, 0 deletions
diff --git a/src/mongo/db/storage/devnull/devnull_init.cpp b/src/mongo/db/storage/devnull/devnull_init.cpp
index 95050ac2813..aa752c3da07 100644
--- a/src/mongo/db/storage/devnull/devnull_init.cpp
+++ b/src/mongo/db/storage/devnull/devnull_init.cpp
@@ -53,6 +53,10 @@ namespace mongo {
{
return Status::OK();
}
+
+ virtual Status validateIndexStorageOptions(const BSONObj& options) const {
+ return Status::OK();
+ }
};
} // namespace
diff --git a/src/mongo/db/storage/in_memory/in_memory_init.cpp b/src/mongo/db/storage/in_memory/in_memory_init.cpp
index 321721f2009..c0dc832459f 100644
--- a/src/mongo/db/storage/in_memory/in_memory_init.cpp
+++ b/src/mongo/db/storage/in_memory/in_memory_init.cpp
@@ -54,6 +54,10 @@ namespace mongo {
{
return Status::OK();
}
+
+ virtual Status validateIndexStorageOptions(const BSONObj& options) const {
+ return Status::OK();
+ }
};
} // namespace
diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp
index 8724dff7cfb..65a1a7b3c4b 100644
--- a/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp
+++ b/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp
@@ -51,6 +51,10 @@ namespace mongo {
{
return Status::OK();
}
+
+ virtual Status validateIndexStorageOptions(const BSONObj& options) const {
+ return Status::OK();
+ }
};
} // namespace
diff --git a/src/mongo/db/storage/rocks/rocks_init.cpp b/src/mongo/db/storage/rocks/rocks_init.cpp
index 48e2bc50701..ad0fe429c78 100644
--- a/src/mongo/db/storage/rocks/rocks_init.cpp
+++ b/src/mongo/db/storage/rocks/rocks_init.cpp
@@ -54,6 +54,9 @@ namespace mongo {
return Status::OK();
}
+ virtual Status validateIndexStorageOptions(const BSONObj& options) const {
+ return Status::OK();
+ }
};
} // namespace
diff --git a/src/mongo/db/storage/storage_engine.h b/src/mongo/db/storage/storage_engine.h
index 63912c6bd0c..5e8f623c188 100644
--- a/src/mongo/db/storage/storage_engine.h
+++ b/src/mongo/db/storage/storage_engine.h
@@ -80,6 +80,12 @@ namespace mongo {
* Returns an error if the creation options are not valid.
*/
virtual Status validateCollectionStorageOptions(const BSONObj& options) const = 0;
+
+ /**
+ * Validates creation options for an index in the StorageEngine.
+ * Returns an error if the creation options are not valid.
+ */
+ virtual Status validateIndexStorageOptions(const BSONObj& options) const = 0;
};
/**
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp
index 9f8882aa70a..9578c30d284 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp
@@ -31,6 +31,8 @@
#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kStorage
+#include "mongo/platform/basic.h"
+
#include "mongo/base/init.h"
#include "mongo/db/catalog/collection_options.h"
#include "mongo/db/global_environment_d.h"
@@ -38,6 +40,7 @@
#include "mongo/db/storage/kv/kv_storage_engine.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_global_options.h"
+#include "mongo/db/storage/wiredtiger/wiredtiger_index.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_parameters.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_record_store.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_server_status.h"
@@ -75,6 +78,10 @@ namespace mongo {
virtual Status validateCollectionStorageOptions(const BSONObj& options) const {
return Status::OK();
}
+
+ virtual Status validateIndexStorageOptions(const BSONObj& options) const {
+ return WiredTigerIndex::parseIndexOptions(options).getStatus();
+ }
};
} // namespace