Skip to content

Commit

Permalink
SERVER-1534 SERVER-10911: enable curentDate/min/max mods
Browse files Browse the repository at this point in the history
  • Loading branch information
scotthernandez committed Oct 1, 2013
1 parent e41385a commit 278f1b4
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 0 deletions.
73 changes: 73 additions & 0 deletions jstests/verify_update_mods.js
@@ -0,0 +1,73 @@
// Verify update mods exist
t = db.update_mods;
t.drop();

t.save({_id:1});
t.update({}, {$set:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$unset:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$inc:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$mul:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$push:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$pushAll:{a:[1]}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$addToSet:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$pull:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$pop:{a:true}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$rename:{a:"b"}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$bit:{a:{and:NumberLong(1)}}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$currentDate:{a:true}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$max:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()

t.save({_id:1});
t.update({}, {$min:{a:1}})
assert.automsg( "!db.getLastError()" );
t.remove()
17 changes: 17 additions & 0 deletions src/mongo/db/ops/modifier_table.cpp
Expand Up @@ -35,6 +35,8 @@
#include "mongo/base/status.h"
#include "mongo/db/ops/modifier_add_to_set.h"
#include "mongo/db/ops/modifier_bit.h"
#include "mongo/db/ops/modifier_compare.h"
#include "mongo/db/ops/modifier_current_date.h"
#include "mongo/db/ops/modifier_inc.h"
#include "mongo/db/ops/modifier_pop.h"
#include "mongo/db/ops/modifier_pull.h"
Expand Down Expand Up @@ -71,9 +73,18 @@ namespace modifiertable {
ModifierEntry* entryBit = new ModifierEntry("$bit", MOD_BIT);
nameMap->insert(make_pair(StringData(entryBit->name), entryBit));

ModifierEntry* entryCurrentDate = new ModifierEntry("$currentDate", MOD_CURRENTDATE);
nameMap->insert(make_pair(StringData(entryCurrentDate->name), entryCurrentDate));

ModifierEntry* entryInc = new ModifierEntry("$inc", MOD_INC);
nameMap->insert(make_pair(StringData(entryInc->name), entryInc));

ModifierEntry* entryMax = new ModifierEntry("$max", MOD_MAX);
nameMap->insert(make_pair(StringData(entryMax->name), entryMax));

ModifierEntry* entryMin = new ModifierEntry("$min", MOD_MIN);
nameMap->insert(make_pair(StringData(entryMin->name), entryMin));

ModifierEntry* entryMul = new ModifierEntry("$mul", MOD_MUL);
nameMap->insert(make_pair(StringData(entryMul->name), entryMul));

Expand Down Expand Up @@ -128,8 +139,14 @@ namespace modifiertable {
return new ModifierAddToSet;
case MOD_BIT:
return new ModifierBit;
case MOD_CURRENTDATE:
return new ModifierCurrentDate;
case MOD_INC:
return new ModifierInc(ModifierInc::MODE_INC);
case MOD_MAX:
return new ModifierCompare(ModifierCompare::MAX);
case MOD_MIN:
return new ModifierCompare(ModifierCompare::MIN);
case MOD_MUL:
return new ModifierInc(ModifierInc::MODE_MUL);
case MOD_POP:
Expand Down
4 changes: 4 additions & 0 deletions src/mongo/db/ops/modifier_table.h
Expand Up @@ -33,10 +33,14 @@
namespace mongo {
namespace modifiertable {

// NOTE: Please update jstests/verify_update_mods.js or include a jstest for any new mods
enum ModifierType {
MOD_ADD_TO_SET,
MOD_BIT,
MOD_CURRENTDATE,
MOD_INC,
MOD_MAX,
MOD_MIN,
MOD_MUL,
MOD_POP,
MOD_PULL,
Expand Down

0 comments on commit 278f1b4

Please sign in to comment.