summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuhong Zhang <yuhong.zhang@mongodb.com>2022-03-28 17:45:22 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-03-28 18:43:51 +0000
commitd38f89d0438e7135e1e0ab09d032e97de0a41b36 (patch)
treed054c8c366ec2550a3fd95935afd55ba3db7cd75
parentbcec786640b9f6b82e1073d41e68c95ff1814a6a (diff)
downloadmongo-d38f89d0438e7135e1e0ab09d032e97de0a41b36.tar.gz
Revert "SERVER-61158 Convert a non-unique index to a unique index via the collMod command"
This reverts commit fe15f13c05c4bfa65f09f6b60931770277785117.
-rw-r--r--jstests/core/collmod_convert_to_unique.js4
-rw-r--r--src/mongo/db/catalog/coll_mod.cpp3
-rw-r--r--src/mongo/db/storage/bson_collection_catalog_entry.cpp6
-rw-r--r--src/mongo/db/storage/bson_collection_catalog_entry.h2
-rw-r--r--src/mongo/db/storage/durable_catalog.h8
-rw-r--r--src/mongo/db/storage/durable_catalog_impl.cpp10
-rw-r--r--src/mongo/db/storage/durable_catalog_impl.h4
7 files changed, 2 insertions, 35 deletions
diff --git a/jstests/core/collmod_convert_to_unique.js b/jstests/core/collmod_convert_to_unique.js
index 6647c0e4345..a7b85450164 100644
--- a/jstests/core/collmod_convert_to_unique.js
+++ b/jstests/core/collmod_convert_to_unique.js
@@ -71,8 +71,8 @@ if (db.getMongo().isMongos()) {
}
// Look up index details in listIndexes output.
-assert.eq(countUnique({a: 1}), 1, 'index should be unique now: ' + tojson(coll.getIndexes()));
+assert.eq(countUnique({a: 1}), 0, 'index should not be unique yet: ' + tojson(coll.getIndexes()));
// Test uniqueness constraint.
-assert.commandFailedWithCode(coll.insert({_id: 100, a: 100}), ErrorCodes.DuplicateKey);
+assert.commandWorked(coll.insert({_id: 100, a: 100}));
})(); \ No newline at end of file
diff --git a/src/mongo/db/catalog/coll_mod.cpp b/src/mongo/db/catalog/coll_mod.cpp
index d6ddb8b9ee0..cc153539e6d 100644
--- a/src/mongo/db/catalog/coll_mod.cpp
+++ b/src/mongo/db/catalog/coll_mod.cpp
@@ -390,9 +390,6 @@ Status _collModInternal(OperationContext* opCtx,
if (cmr.indexUnique) {
if (!cmr.idx->infoObj().getField("unique").trueValue()) {
newUnique = cmr.indexUnique;
- // Change the value of "unique" on disk.
- DurableCatalog::get(opCtx)->updateUniqueSetting(
- opCtx, coll->ns(), cmr.idx->indexName());
result->appendAs(newUnique, "unique_new");
}
}
diff --git a/src/mongo/db/storage/bson_collection_catalog_entry.cpp b/src/mongo/db/storage/bson_collection_catalog_entry.cpp
index 7b4ac9c390e..d61e0a31332 100644
--- a/src/mongo/db/storage/bson_collection_catalog_entry.cpp
+++ b/src/mongo/db/storage/bson_collection_catalog_entry.cpp
@@ -120,12 +120,6 @@ void BSONCollectionCatalogEntry::IndexMetaData::updateTTLSetting(long long newEx
spec = b.obj();
}
-void BSONCollectionCatalogEntry::IndexMetaData::updateUniqueSetting() {
- BSONObjBuilder b(spec);
- b.appendBool("unique", true);
- spec = b.obj();
-}
-
// --------------------------
int BSONCollectionCatalogEntry::MetaData::findIndexOffset(StringData name) const {
diff --git a/src/mongo/db/storage/bson_collection_catalog_entry.h b/src/mongo/db/storage/bson_collection_catalog_entry.h
index 4fdac273732..4f71435937c 100644
--- a/src/mongo/db/storage/bson_collection_catalog_entry.h
+++ b/src/mongo/db/storage/bson_collection_catalog_entry.h
@@ -64,8 +64,6 @@ public:
void updateTTLSetting(long long newExpireSeconds);
- void updateUniqueSetting();
-
std::string name() const {
return spec["name"].String();
}
diff --git a/src/mongo/db/storage/durable_catalog.h b/src/mongo/db/storage/durable_catalog.h
index cb9204ef5e2..65970cde75a 100644
--- a/src/mongo/db/storage/durable_catalog.h
+++ b/src/mongo/db/storage/durable_catalog.h
@@ -131,14 +131,6 @@ public:
StringData idxName,
long long newExpireSeconds) = 0;
- /*
- * Converts the the given index to be unique.
- * This is a one-way transformation - the uniqueness constraint cannot be removed.
- */
- virtual void updateUniqueSetting(OperationContext* opCtx,
- NamespaceString ns,
- StringData idxName) = 0;
-
/**
* Compare the UUID argument to the UUID obtained from the metadata. Return true if they
* are equal, false otherwise. uuid can become a CollectionUUID once MMAPv1 is removed.
diff --git a/src/mongo/db/storage/durable_catalog_impl.cpp b/src/mongo/db/storage/durable_catalog_impl.cpp
index 2fd9c880e02..8e3d75c6640 100644
--- a/src/mongo/db/storage/durable_catalog_impl.cpp
+++ b/src/mongo/db/storage/durable_catalog_impl.cpp
@@ -908,16 +908,6 @@ void DurableCatalogImpl::updateTTLSetting(OperationContext* opCtx,
putMetaData(opCtx, ns, md);
}
-void DurableCatalogImpl::updateUniqueSetting(OperationContext* opCtx,
- NamespaceString ns,
- StringData idxName) {
- BSONCollectionCatalogEntry::MetaData md = getMetaData(opCtx, ns);
- int offset = md.findIndexOffset(idxName);
- invariant(offset >= 0);
- md.indexes[offset].updateUniqueSetting();
- putMetaData(opCtx, ns, md);
-}
-
bool DurableCatalogImpl::isEqualToMetadataUUID(OperationContext* opCtx,
NamespaceString ns,
OptionalCollectionUUID uuid) {
diff --git a/src/mongo/db/storage/durable_catalog_impl.h b/src/mongo/db/storage/durable_catalog_impl.h
index 599372132fa..5b00df9f1e0 100644
--- a/src/mongo/db/storage/durable_catalog_impl.h
+++ b/src/mongo/db/storage/durable_catalog_impl.h
@@ -122,10 +122,6 @@ public:
StringData idxName,
long long newExpireSeconds);
- virtual void updateUniqueSetting(OperationContext* opCtx,
- NamespaceString ns,
- StringData idxName);
-
bool isEqualToMetadataUUID(OperationContext* opCtx,
NamespaceString ns,
OptionalCollectionUUID uuid);