Block update operations on cold collections

XMLWordPrintableJSON

    • Type: New Feature
    • Resolution: Fixed
    • Priority: Major - P3
    • 9.0.0-rc0
    • Affects Version/s: None
    • Component/s: Query Execution
    • None
    • Query Execution
    • Fully Compatible
    • QE 2026-04-27, QE 2026-04-13
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Add a check in write_ops_exec::performUpdate() to reject updates on cold collections.

      This single interception point blocks all update operations identified in the decision doc:

      • `update`,
      • `updateOne`,
      • `updateMany`,
      • `replaceOne`,
      • `findAndModify` (update mode),
      • `findOneAndUpdate`,
      • `findOneAndReplace`,
      • `bulkWrite` (update ops),
      • `$merge`

       Pseudo code in performUpdate() (write_ops_exec.cpp):

      if (!remove && collection.exists() && collection.getCollectionPtr()->getRecordStore()->isColdCollection()) {
          uasserted(ErrorCodes::IllegalOperation,
          str::stream() << "Updates are not supported on cold collection '"
                        << collection.nss().toStringForErrorMsg() << "'");
      } 

      Verify `findAndModify` with `remove: true` is NOT blocked (the `remove` parameter in `performUpdate()` distinguishes this case – the cold check should only apply when `!remove`).

            Assignee:
            Jan Steemann
            Reporter:
            Stephanie Wang
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: