Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-39231

Create command should reject incorrect types for known options

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major - P3
    • Resolution: Fixed
    • None
    • 4.1.10
    • Querying, Usability
    • None
    • Fully Compatible
    • Storage NYC 2019-03-25, Storage NYC 2019-04-08

    Description

      Create command should reject incorrect types for known options. It's easy to accidentally provide the wrong types for a "create" option, like providing a string for "max":

      MongoDB Enterprise > db.createCollection("test", {capped:true, size:10, max:"10"})
      { "ok" : 1 }
      MongoDB Enterprise > db.getCollectionInfos()
      [
      	{
      		"name" : "test",
      		"type" : "collection",
      		"options" : {
      			"capped" : true,
      			"size" : 256
      		},
      ...
      

      Or forgetting the "capped" option but including "size" and "max":

      MongoDB Enterprise > db.createCollection("test2", {size:10, max:10})
      { "ok" : 1 }
      MongoDB Enterprise > db.getCollectionInfos()
      [
      	{
      		"name" : "test2",
      		"type" : "collection",
      		"options" : {
       
      		},
      ...
      

      In both of these cases, the server silently ignores some of the options and creates a collection that, almost certainly, is not what the user wanted. I think it would be an improvement for the "create" command to return an InvalidOptions error instead.

      This is semi-related to SERVER-25459 (Create command should reject unknown options) and SERVER-16069 (Input validation on the arguments to createCollection).

      Attachments

        Issue Links

          Activity

            People

              gregory.wlodarek@mongodb.com Gregory Wlodarek
              shane.harvey@mongodb.com Shane Harvey
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: