| client.h | | client.h | |
| | | | |
| skipping to change at line 99 | | skipping to change at line 99 | |
| : _client( currentClient.get() ) , _oldContext( _client->_c
ontext ), | | : _client( currentClient.get() ) , _oldContext( _client->_c
ontext ), | |
| _path( dbpath ) , _lock(0) , _justCreated(false){ | | _path( dbpath ) , _lock(0) , _justCreated(false){ | |
| _client->_context = this; | | _client->_context = this; | |
| clear(); | | clear(); | |
| } | | } | |
| | | | |
| /** | | /** | |
| * if you are doing this after allowing a write there could be
a race condition | | * if you are doing this after allowing a write there could be
a race condition | |
| * if someone closes that db. this checks that the DB is still
valid | | * if someone closes that db. this checks that the DB is still
valid | |
| */ | | */ | |
|
| Context( string ns , Database * db ); | | Context( string ns , Database * db, bool doauth=true ); | |
| | | | |
| ~Context(); | | ~Context(); | |
| | | | |
| Client* getClient() const { return _client; } | | Client* getClient() const { return _client; } | |
| | | | |
| Database* db() const { | | Database* db() const { | |
| return _db; | | return _db; | |
| } | | } | |
| | | | |
| const char * ns() const { | | const char * ns() const { | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|
| cmdline.h | | cmdline.h | |
| | | | |
| skipping to change at line 57 | | skipping to change at line 57 | |
| DefaultDBPort = 27017, | | DefaultDBPort = 27017, | |
| ConfigServerPort = 27019, | | ConfigServerPort = 27019, | |
| ShardServerPort = 27018 | | ShardServerPort = 27018 | |
| }; | | }; | |
| | | | |
| CmdLine() : | | CmdLine() : | |
| port(DefaultDBPort), rest(false), quiet(false), notablescan(fal
se), prealloc(true), smallfiles(false), | | port(DefaultDBPort), rest(false), quiet(false), notablescan(fal
se), prealloc(true), smallfiles(false), | |
| quota(false), quotaFiles(8), cpu(false), oplogSize(0), defaultP
rofile(0), slowMS(100) | | quota(false), quotaFiles(8), cpu(false), oplogSize(0), defaultP
rofile(0), slowMS(100) | |
| { } | | { } | |
| | | | |
|
| void addGlobalOptions( boost::program_options::options_description& | | static void addGlobalOptions( boost::program_options::options_descr | |
| general , | | iption& general , | |
| boost::program_options::options_description& | | boost::program_options::options_descr | |
| hidden ); | | iption& hidden ); | |
| | | | |
| | | /** | |
| | | * @return true if should run program, false if should exit | |
| | | */ | |
| | | static bool store( int argc , char ** argv , | |
| | | boost::program_options::options_description& vis | |
| | | ible, | |
| | | boost::program_options::options_description& hid | |
| | | den, | |
| | | boost::program_options::positional_options_descr | |
| | | iption& positional, | |
| | | boost::program_options::variables_map &output ); | |
| }; | | }; | |
| | | | |
| extern CmdLine cmdLine; | | extern CmdLine cmdLine; | |
| | | | |
| } | | } | |
| | | | |
End of changes. 1 change blocks. |
| 4 lines changed or deleted | | 16 lines changed or added | |
|
| dbclient.h | | dbclient.h | |
| | | | |
| skipping to change at line 724 | | skipping to change at line 724 | |
| | | | |
| /** | | /** | |
| updates objects matching query | | updates objects matching query | |
| */ | | */ | |
| virtual void update( const string &ns , Query query , BSONObj obj ,
bool upsert = 0 , bool multi = 0 ); | | virtual void update( const string &ns , Query query , BSONObj obj ,
bool upsert = 0 , bool multi = 0 ); | |
| | | | |
| virtual string getServerAddress() const = 0; | | virtual string getServerAddress() const = 0; | |
| | | | |
| virtual bool isFailed() const = 0; | | virtual bool isFailed() const = 0; | |
| | | | |
|
| | | static int countCommas( const string& s ){ | |
| | | int n = 0; | |
| | | for ( unsigned i=0; i<s.size(); i++ ) | |
| | | if ( s[i] == ',' ) | |
| | | n++; | |
| | | return n; | |
| | | } | |
| }; | | }; | |
| | | | |
| class DBClientPaired; | | class DBClientPaired; | |
| | | | |
| class ConnectException : public UserException { | | class ConnectException : public UserException { | |
| public: | | public: | |
| ConnectException(string msg) : UserException(9000,msg) { } | | ConnectException(string msg) : UserException(9000,msg) { } | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 818 | | skipping to change at line 825 | |
| | | | |
| /** Returns the address of the server */ | | /** Returns the address of the server */ | |
| string toString() { | | string toString() { | |
| return serverAddress; | | return serverAddress; | |
| } | | } | |
| | | | |
| string getServerAddress() const { | | string getServerAddress() const { | |
| return serverAddress; | | return serverAddress; | |
| } | | } | |
| | | | |
|
| protected: | | | |
| virtual bool call( Message &toSend, Message &response, bool assertO
k = true ); | | virtual bool call( Message &toSend, Message &response, bool assertO
k = true ); | |
| virtual void say( Message &toSend ); | | virtual void say( Message &toSend ); | |
| virtual void sayPiggyBack( Message &toSend ); | | virtual void sayPiggyBack( Message &toSend ); | |
| virtual void checkResponse( const char *data, int nReturned ); | | virtual void checkResponse( const char *data, int nReturned ); | |
| }; | | }; | |
| | | | |
| /** Use this class to connect to a replica pair of servers. The class
will manage | | /** Use this class to connect to a replica pair of servers. The class
will manage | |
| checking for which server in a replica pair is master, and do failov
er automatically. | | checking for which server in a replica pair is master, and do failov
er automatically. | |
| | | | |
| On a failover situation, expect at least one operation to return
an error (throw | | On a failover situation, expect at least one operation to return
an error (throw | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 7 lines changed or added | |
|
| dbmessage.h | | dbmessage.h | |
| | | | |
| skipping to change at line 135 | | skipping to change at line 135 | |
| ntoreturn = *i; | | ntoreturn = *i; | |
| i++; | | i++; | |
| query = (const char *) i; | | query = (const char *) i; | |
| } | | } | |
| | | | |
| /* for insert and update msgs */ | | /* for insert and update msgs */ | |
| bool moreJSObjs() { | | bool moreJSObjs() { | |
| return nextjsobj != 0; | | return nextjsobj != 0; | |
| } | | } | |
| BSONObj nextJsObj() { | | BSONObj nextJsObj() { | |
|
| if ( nextjsobj == data ) | | if ( nextjsobj == data ) { | |
| nextjsobj += strlen(data) + 1; // skip namespace | | nextjsobj += strlen(data) + 1; // skip namespace | |
|
| | | massert( 13066 , "Message contains no documents", theEnd > | |
| | | nextjsobj ); | |
| | | } | |
| massert( 10304 , "Remaining data too small for BSON object", t
heEnd - nextjsobj > 3 ); | | massert( 10304 , "Remaining data too small for BSON object", t
heEnd - nextjsobj > 3 ); | |
| BSONObj js(nextjsobj); | | BSONObj js(nextjsobj); | |
| massert( 10305 , "Invalid object size", js.objsize() > 3 ); | | massert( 10305 , "Invalid object size", js.objsize() > 3 ); | |
| massert( 10306 , "Next object larger than available space", | | massert( 10306 , "Next object larger than available space", | |
| js.objsize() < ( theEnd - data ) ); | | js.objsize() < ( theEnd - data ) ); | |
| if ( objcheck && !js.valid() ) { | | if ( objcheck && !js.valid() ) { | |
| massert( 10307 , "bad object in message", false); | | massert( 10307 , "bad object in message", false); | |
| } | | } | |
| nextjsobj += js.objsize(); | | nextjsobj += js.objsize(); | |
| if ( nextjsobj >= theEnd ) | | if ( nextjsobj >= theEnd ) | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 4 lines changed or added | |
|
| jsobj.h | | jsobj.h | |
| | | | |
| skipping to change at line 782 | | skipping to change at line 782 | |
| | | | |
| /** adds the field names to the fields set. does NOT clear it (app
ends). */ | | /** adds the field names to the fields set. does NOT clear it (app
ends). */ | |
| int getFieldNames(set<string>& fields) const; | | int getFieldNames(set<string>& fields) const; | |
| | | | |
| /** return has eoo() true if no match | | /** return has eoo() true if no match | |
| supports "." notation to reach into embedded objects | | supports "." notation to reach into embedded objects | |
| */ | | */ | |
| BSONElement getFieldDotted(const char *name) const; | | BSONElement getFieldDotted(const char *name) const; | |
| /** Like getFieldDotted(), but expands multikey arrays and returns
all matching objects | | /** Like getFieldDotted(), but expands multikey arrays and returns
all matching objects | |
| */ | | */ | |
|
| void getFieldsDotted(const char *name, BSONElementSet &ret, bool *d
eep = 0) const; | | void getFieldsDotted(const char *name, BSONElementSet &ret ) const; | |
| /** Like getFieldDotted(), but returns first array encountered whil
e traversing the | | /** Like getFieldDotted(), but returns first array encountered whil
e traversing the | |
| dotted fields of name. The name variable is updated to represe
nt field | | dotted fields of name. The name variable is updated to represe
nt field | |
| names with respect to the returned element. */ | | names with respect to the returned element. */ | |
| BSONElement getFieldDottedOrArray(const char *&name) const; | | BSONElement getFieldDottedOrArray(const char *&name) const; | |
| | | | |
| /** Get the field of the specified name. eoo() is true on the retur
ned | | /** Get the field of the specified name. eoo() is true on the retur
ned | |
| element if not found. | | element if not found. | |
| */ | | */ | |
| BSONElement getField(const char *name) const; | | BSONElement getField(const char *name) const; | |
| | | | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|
| query.h | | query.h | |
| | | | |
| skipping to change at line 202 | | skipping to change at line 202 | |
| | | | |
| The n limit (vs. size) is important when someone fetches only on
e small field from big | | The n limit (vs. size) is important when someone fetches only on
e small field from big | |
| objects, which causes massive scanning server-side. | | objects, which causes massive scanning server-side. | |
| */ | | */ | |
| bool enoughForFirstBatch( int n , int len ) const { | | bool enoughForFirstBatch( int n , int len ) const { | |
| if ( _ntoreturn == 0 ) | | if ( _ntoreturn == 0 ) | |
| return ( len > 1024 * 1024 ) || n >= 101; | | return ( len > 1024 * 1024 ) || n >= 101; | |
| return n >= _ntoreturn || len > MaxBytesToReturnToClientAtOnce; | | return n >= _ntoreturn || len > MaxBytesToReturnToClientAtOnce; | |
| } | | } | |
| | | | |
|
| | | bool enough( int n ) const { | |
| | | if ( _ntoreturn == 0 ) | |
| | | return false; | |
| | | return n >= _ntoreturn; | |
| | | } | |
| | | | |
| private: | | private: | |
| void init( const BSONObj& q ){ | | void init( const BSONObj& q ){ | |
| _reset(); | | _reset(); | |
| uassert( 10105 , "bad skip value in query", _ntoskip >= 0); | | uassert( 10105 , "bad skip value in query", _ntoskip >= 0); | |
| | | | |
| if ( _ntoreturn < 0 ){ | | if ( _ntoreturn < 0 ){ | |
| /* _ntoreturn greater than zero is simply a hint on how man
y objects to send back per | | /* _ntoreturn greater than zero is simply a hint on how man
y objects to send back per | |
| "cursor batch". | | "cursor batch". | |
| A negative number indicates a hard limit. | | A negative number indicates a hard limit. | |
| */ | | */ | |
| | | | |
End of changes. 1 change blocks. |
| 0 lines changed or deleted | | 6 lines changed or added | |
|
| queryoptimizer.h | | queryoptimizer.h | |
| | | | |
| skipping to change at line 167 | | skipping to change at line 167 | |
| FieldRangeSet fbs_; | | FieldRangeSet fbs_; | |
| PlanSet plans_; | | PlanSet plans_; | |
| bool mayRecordPlan_; | | bool mayRecordPlan_; | |
| bool usingPrerecordedPlan_; | | bool usingPrerecordedPlan_; | |
| BSONObj hint_; | | BSONObj hint_; | |
| BSONObj order_; | | BSONObj order_; | |
| long long oldNScanned_; | | long long oldNScanned_; | |
| bool honorRecordedPlan_; | | bool honorRecordedPlan_; | |
| BSONObj min_; | | BSONObj min_; | |
| BSONObj max_; | | BSONObj max_; | |
|
| | | string _special; | |
| }; | | }; | |
| | | | |
| // NOTE min, max, and keyPattern will be updated to be consistent with
the selected index. | | // NOTE min, max, and keyPattern will be updated to be consistent with
the selected index. | |
| IndexDetails *indexDetailsForRange( const char *ns, string &errmsg, BSO
NObj &min, BSONObj &max, BSONObj &keyPattern ); | | IndexDetails *indexDetailsForRange( const char *ns, string &errmsg, BSO
NObj &min, BSONObj &max, BSONObj &keyPattern ); | |
| | | | |
| inline bool isSimpleIdQuery( const BSONObj& query ){ | | inline bool isSimpleIdQuery( const BSONObj& query ){ | |
| return | | return | |
| strcmp( query.firstElement().fieldName() , "_id" ) == 0 && | | strcmp( query.firstElement().fieldName() , "_id" ) == 0 && | |
| query.nFields() == 1 && | | query.nFields() == 1 && | |
| query.firstElement().isSimpleType(); | | query.firstElement().isSimpleType(); | |
| | | | |
End of changes. 1 change blocks. |
| 0 lines changed or deleted | | 1 lines changed or added | |
|
| syncclusterconnection.h | | syncclusterconnection.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| | | | |
| #include "../stdafx.h" | | #include "../stdafx.h" | |
| #include "dbclient.h" | | #include "dbclient.h" | |
| | | | |
| namespace mongo { | | namespace mongo { | |
| | | | |
| /** | | /** | |
| * this is a connection to a cluster of servers that operate as one | | * this is a connection to a cluster of servers that operate as one | |
| * for super high durability | | * for super high durability | |
| */ | | */ | |
|
| class SyncClusterConnection : public DBClientWithCommands { | | class SyncClusterConnection : public DBClientBase { | |
| public: | | public: | |
| /** | | /** | |
| * @param commaSeperated should be 3 hosts comma seperated | | * @param commaSeperated should be 3 hosts comma seperated | |
| */ | | */ | |
| SyncClusterConnection( string commaSeperated ); | | SyncClusterConnection( string commaSeperated ); | |
| SyncClusterConnection( string a , string b , string c ); | | SyncClusterConnection( string a , string b , string c ); | |
| ~SyncClusterConnection(); | | ~SyncClusterConnection(); | |
| | | | |
| /** | | /** | |
| * @return true if all servers are up and ready for writes | | * @return true if all servers are up and ready for writes | |
| | | | |
| skipping to change at line 61 | | skipping to change at line 61 | |
| virtual auto_ptr<DBClientCursor> getMore( const string &ns, long lo
ng cursorId, int nToReturn, int options ); | | virtual auto_ptr<DBClientCursor> getMore( const string &ns, long lo
ng cursorId, int nToReturn, int options ); | |
| | | | |
| virtual void insert( const string &ns, BSONObj obj ); | | virtual void insert( const string &ns, BSONObj obj ); | |
| | | | |
| virtual void insert( const string &ns, const vector< BSONObj >& v )
; | | virtual void insert( const string &ns, const vector< BSONObj >& v )
; | |
| | | | |
| virtual void remove( const string &ns , Query query, bool justOne )
; | | virtual void remove( const string &ns , Query query, bool justOne )
; | |
| | | | |
| virtual void update( const string &ns , Query query , BSONObj obj ,
bool upsert , bool multi ); | | virtual void update( const string &ns , Query query , BSONObj obj ,
bool upsert , bool multi ); | |
| | | | |
|
| virtual string toString(); | | virtual string toString(){ | |
| | | return _toString(); | |
| | | } | |
| | | | |
| | | virtual bool call( Message &toSend, Message &response, bool assertO | |
| | | k ); | |
| | | virtual void say( Message &toSend ); | |
| | | virtual void sayPiggyBack( Message &toSend ); | |
| | | | |
| | | virtual string getServerAddress() const { return _address; } | |
| | | | |
| | | virtual bool isFailed() const { | |
| | | return false; | |
| | | } | |
| | | | |
| private: | | private: | |
| | | | |
|
| | | SyncClusterConnection( SyncClusterConnection& prev ); | |
| | | | |
| | | string _toString() const; | |
| | | | |
| bool _commandOnActive(const string &dbname, const BSONObj& cmd, BSO
NObj &info, int options=0); | | bool _commandOnActive(const string &dbname, const BSONObj& cmd, BSO
NObj &info, int options=0); | |
| | | | |
| auto_ptr<DBClientCursor> _queryOnActive(const string &ns, Query que
ry, int nToReturn, int nToSkip, | | auto_ptr<DBClientCursor> _queryOnActive(const string &ns, Query que
ry, int nToReturn, int nToSkip, | |
| const BSONObj *fieldsToRetu
rn, int queryOptions, int batchSize ); | | const BSONObj *fieldsToRetu
rn, int queryOptions, int batchSize ); | |
| | | | |
| bool _isReadOnly( const string& name ); | | bool _isReadOnly( const string& name ); | |
| | | | |
| void _checkLast(); | | void _checkLast(); | |
| | | | |
| void _connect( string host ); | | void _connect( string host ); | |
|
| vector<DBClientConnection*> _conns; | | | |
| | | | |
|
| | | string _address; | |
| | | vector<DBClientConnection*> _conns; | |
| map<string,int> _lockTypes; | | map<string,int> _lockTypes; | |
| }; | | }; | |
| | | | |
| }; | | }; | |
| | | | |
End of changes. 5 change blocks. |
| 3 lines changed or deleted | | 22 lines changed or added | |
|