本文整理汇总了C++中NamespaceString函数的典型用法代码示例。如果您正苦于以下问题:C++ NamespaceString函数的具体用法?C++ NamespaceString怎么用?C++ NamespaceString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NamespaceString函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: parseLegacyInsert
InsertOp parseLegacyInsert(const Message& msgRaw) {
DbMessage msg(msgRaw);
InsertOp op;
op.ns = NamespaceString(msg.getns());
op.continueOnError = msg.reservedField() & InsertOption_ContinueOnError;
uassert(ErrorCodes::InvalidLength, "Need at least one object to insert", msg.moreJSObjs());
while (msg.moreJSObjs()) {
op.documents.push_back(msg.nextJsObj());
}
// There is no limit on the number of inserts in a legacy batch.
return op;
}
开发者ID:bjori,项目名称:mongo,代码行数:14,代码来源:write_ops_parsers.cpp
示例2: verify
boost::optional<Document> DocumentSourceOut::getNext() {
pExpCtx->checkForInterrupt();
// make sure we only write out once
if (_done)
return boost::none;
_done = true;
verify(_mongod);
DBClientBase* conn = _mongod->directClient();
prepTempCollection();
verify(_tempNs.size() != 0);
vector<BSONObj> bufferedObjects;
int bufferedBytes = 0;
while (boost::optional<Document> next = pSource->getNext()) {
BSONObj toInsert = next->toBson();
bufferedBytes += toInsert.objsize();
if (!bufferedObjects.empty() && bufferedBytes > BSONObjMaxUserSize) {
spill(bufferedObjects);
bufferedObjects.clear();
bufferedBytes = toInsert.objsize();
}
bufferedObjects.push_back(toInsert);
}
if (!bufferedObjects.empty())
spill(bufferedObjects);
// Checking again to make sure we didn't become sharded while running.
uassert(17018,
str::stream() << "namespace '" << _outputNs.ns()
<< "' became sharded so it can't be used for $out'",
!_mongod->isSharded(_outputNs));
BSONObj rename =
BSON("renameCollection" << _tempNs.ns() << "to" << _outputNs.ns() << "dropTarget" << true);
BSONObj info;
bool ok = conn->runCommand("admin", rename, info);
uassert(16997, str::stream() << "renameCollection for $out failed: " << info, ok);
// We don't need to drop the temp collection in our destructor if the rename succeeded.
_tempNs = NamespaceString("");
// This "DocumentSource" doesn't produce output documents. This can change in the future
// if we support using $out in "tee" mode.
return boost::none;
}
开发者ID:AlexOreshkevich,项目名称:mongo,代码行数:49,代码来源:document_source_out.cpp
示例3: parseLegacyDelete
DeleteOp parseLegacyDelete(const Message& msgRaw) {
DbMessage msg(msgRaw);
DeleteOp op;
op.ns = NamespaceString(msg.getns());
// Legacy deletes only allowed one delete per operation. Layout is flags, query.
op.deletes.emplace_back();
auto& singleDelete = op.deletes.back();
const int flags = msg.pullInt();
singleDelete.multi = !(flags & RemoveOption_JustOne);
singleDelete.query = msg.nextJsObj();
return op;
}
开发者ID:GodotGo,项目名称:mongo,代码行数:15,代码来源:write_ops_parsers.cpp
示例4: checkAuthForCommand
virtual Status checkAuthForCommand(ClientBasic* client,
const std::string& dbname,
const BSONObj& cmdObj) {
std::string ns = parseNs(dbname, cmdObj);
ActionSet actions;
actions.addAction(ActionType::insert);
actions.addAction(ActionType::createIndex); // SERVER-11418
if (!client->getAuthorizationSession()->isAuthorizedForActionsOnResource(
ResourcePattern::forExactNamespace(NamespaceString(ns)), actions)) {
return Status(ErrorCodes::Unauthorized, "Unauthorized");
}
return Status::OK();
}
开发者ID:baiyanghese,项目名称:mongo,代码行数:15,代码来源:clone_collection.cpp
示例5: status
Status WriteCmd::checkAuthForCommand( ClientBasic* client,
const std::string& dbname,
const BSONObj& cmdObj ) {
Status status( auth::checkAuthForWriteCommand( client->getAuthorizationSession(),
_writeType,
NamespaceString( parseNs( dbname, cmdObj ) ),
cmdObj ));
if ( !status.isOK() ) {
setLastError( status.code(), status.reason().c_str() );
}
return status;
}
开发者ID:Attnaorg,项目名称:mongo,代码行数:15,代码来源:write_commands.cpp
示例6: massert
void DBClientCursor::initLazy( bool isRetry ) {
massert( 15875 , "DBClientCursor::initLazy called on a client that doesn't support lazy" , _client->lazySupported() );
if (DBClientWithCommands::RunCommandHookFunc hook = _client->getRunCommandHook()) {
if (NamespaceString(ns).isCommand()) {
BSONObjBuilder bob;
bob.appendElements(query);
hook(&bob);
query = bob.obj();
}
}
Message toSend;
_assembleInit( toSend );
_client->say( toSend, isRetry, &_originalHost );
}
开发者ID:Attnaorg,项目名称:mongo,代码行数:15,代码来源:dbclientcursor.cpp
示例7: autoColl
bool Helpers::getLast(OperationContext* opCtx, const char* ns, BSONObj& result) {
AutoGetCollectionForReadCommand autoColl(opCtx, NamespaceString(ns));
auto exec = InternalPlanner::collectionScan(
opCtx, ns, autoColl.getCollection(), PlanExecutor::NO_YIELD, InternalPlanner::BACKWARD);
PlanExecutor::ExecState state = exec->getNext(&result, NULL);
// Non-yielding collection scans from InternalPlanner will never error.
invariant(PlanExecutor::ADVANCED == state || PlanExecutor::IS_EOF == state);
if (PlanExecutor::ADVANCED == state) {
result = result.getOwned();
return true;
}
return false;
}
开发者ID:DINKIN,项目名称:mongo,代码行数:16,代码来源:dbhelpers.cpp
示例8: run
void run() {
WriteUnitOfWork wunit(&_opCtx);
BSONObj x = BSON("x" << 1);
ASSERT(x["_id"].type() == 0);
Collection* collection =
_context.db()->getOrCreateCollection(&_opCtx, NamespaceString(ns()));
OpDebug* const nullOpDebug = nullptr;
ASSERT(!collection->insertDocument(&_opCtx, InsertStatement(x), nullOpDebug, true).isOK());
StatusWith<BSONObj> fixed = fixDocumentForInsert(_opCtx.getServiceContext(), x);
ASSERT(fixed.isOK());
x = fixed.getValue();
ASSERT(x["_id"].type() == jstOID);
ASSERT(collection->insertDocument(&_opCtx, InsertStatement(x), nullOpDebug, true).isOK());
wunit.commit();
}
开发者ID:EvgeniyPatlan,项目名称:percona-server-mongodb,代码行数:16,代码来源:pdfiletests.cpp
示例9: uassert
void SyncClusterConnection::insert( const string &ns, BSONObj obj , int flags) {
uassert(13119,
(string)"SyncClusterConnection::insert obj has to have an _id: " + obj.jsonString(),
NamespaceString(ns).coll == "system.indexes" || obj["_id"].type());
string errmsg;
if ( ! prepare( errmsg ) )
throw UserException( 8003 , (string)"SyncClusterConnection::insert prepare failed: " + errmsg );
for ( size_t i=0; i<_conns.size(); i++ ) {
_conns[i]->insert( ns , obj , flags);
}
_checkLast();
}
开发者ID:Regina-Cupido-Officium,项目名称:mongodb,代码行数:16,代码来源:syncclusterconnection.cpp
示例10: invariant
Status CatalogManagerReplicaSet::getCollections(OperationContext* txn,
const std::string* dbName,
std::vector<CollectionType>* collections,
OpTime* opTime) {
BSONObjBuilder b;
if (dbName) {
invariant(!dbName->empty());
b.appendRegex(CollectionType::fullNs(),
string(str::stream() << "^" << pcrecpp::RE::QuoteMeta(*dbName) << "\\."));
}
auto configShard = grid.shardRegistry()->getShard(txn, "config");
auto readHost = configShard->getTargeter()->findHost(kConfigReadSelector);
if (!readHost.isOK()) {
return readHost.getStatus();
}
auto findStatus = _exhaustiveFindOnConfig(readHost.getValue(),
NamespaceString(CollectionType::ConfigNS),
b.obj(),
BSONObj(),
boost::none); // no limit
if (!findStatus.isOK()) {
return findStatus.getStatus();
}
const auto& docsOpTimePair = findStatus.getValue();
for (const BSONObj& obj : docsOpTimePair.value) {
const auto collectionResult = CollectionType::fromBSON(obj);
if (!collectionResult.isOK()) {
collections->clear();
return {ErrorCodes::FailedToParse,
str::stream() << "error while parsing " << CollectionType::ConfigNS
<< " document: " << obj << " : "
<< collectionResult.getStatus().toString()};
}
collections->push_back(collectionResult.getValue());
}
if (opTime) {
*opTime = docsOpTimePair.opTime;
}
return Status::OK();
}
开发者ID:pgmarchenko,项目名称:mongo,代码行数:47,代码来源:catalog_manager_replica_set.cpp
示例11: _exhaustiveFindOnConfig
Status CatalogManagerReplicaSet::_checkDbDoesNotExist(OperationContext* txn,
const string& dbName,
DatabaseType* db) {
BSONObjBuilder queryBuilder;
queryBuilder.appendRegex(
DatabaseType::name(), (string) "^" + pcrecpp::RE::QuoteMeta(dbName) + "$", "i");
const auto configShard = grid.shardRegistry()->getShard(txn, "config");
const auto readHost = configShard->getTargeter()->findHost(kConfigReadSelector);
if (!readHost.isOK()) {
return readHost.getStatus();
}
auto findStatus = _exhaustiveFindOnConfig(readHost.getValue(),
NamespaceString(DatabaseType::ConfigNS),
queryBuilder.obj(),
BSONObj(),
1);
if (!findStatus.isOK()) {
return findStatus.getStatus();
}
const auto& docs = findStatus.getValue().value;
if (docs.empty()) {
return Status::OK();
}
BSONObj dbObj = docs.front();
std::string actualDbName = dbObj[DatabaseType::name()].String();
if (actualDbName == dbName) {
if (db) {
auto parseDBStatus = DatabaseType::fromBSON(dbObj);
if (!parseDBStatus.isOK()) {
return parseDBStatus.getStatus();
}
*db = parseDBStatus.getValue();
}
return Status(ErrorCodes::NamespaceExists,
str::stream() << "database " << dbName << " already exists");
}
return Status(ErrorCodes::DatabaseDifferCase,
str::stream() << "can't have 2 databases that just differ on case "
<< " have: " << actualDbName << " want to add: " << dbName);
}
开发者ID:pgmarchenko,项目名称:mongo,代码行数:47,代码来源:catalog_manager_replica_set.cpp
示例12: sortOrder
void SortKeyGenerator::getBoundsForSort(OperationContext* txn,
const BSONObj& queryObj,
const BSONObj& sortObj) {
QueryPlannerParams params;
params.options = QueryPlannerParams::NO_TABLE_SCAN;
// We're creating a "virtual index" with key pattern equal to the sort order.
IndexEntry sortOrder(
sortObj, IndexNames::BTREE, true, false, false, "doesnt_matter", NULL, BSONObj());
params.indices.push_back(sortOrder);
auto statusWithQueryForSort = CanonicalQuery::canonicalize(
txn, NamespaceString("fake.ns"), queryObj, ExtensionsCallbackNoop());
verify(statusWithQueryForSort.isOK());
std::unique_ptr<CanonicalQuery> queryForSort = std::move(statusWithQueryForSort.getValue());
std::vector<QuerySolution*> solns;
LOG(5) << "Sort key generation: Planning to obtain bounds for sort.";
QueryPlanner::plan(*queryForSort, params, &solns);
// TODO: are there ever > 1 solns? If so, do we look for a specific soln?
if (1 == solns.size()) {
IndexScanNode* ixScan = NULL;
QuerySolutionNode* rootNode = solns[0]->root.get();
if (rootNode->getType() == STAGE_FETCH) {
FetchNode* fetchNode = static_cast<FetchNode*>(rootNode);
if (fetchNode->children[0]->getType() != STAGE_IXSCAN) {
delete solns[0];
// No bounds.
return;
}
ixScan = static_cast<IndexScanNode*>(fetchNode->children[0]);
} else if (rootNode->getType() == STAGE_IXSCAN) {
ixScan = static_cast<IndexScanNode*>(rootNode);
}
if (ixScan) {
_bounds.fields.swap(ixScan->bounds.fields);
_hasBounds = true;
}
}
for (size_t i = 0; i < solns.size(); ++i) {
delete solns[i];
}
}
开发者ID:aug-int,项目名称:mongo,代码行数:47,代码来源:sort_key_generator.cpp
示例13: parseLegacyUpdate
UpdateOp parseLegacyUpdate(const Message& msgRaw) {
DbMessage msg(msgRaw);
UpdateOp op;
op.ns = NamespaceString(msg.getns());
// Legacy updates only allowed one update per operation. Layout is flags, query, update.
op.updates.emplace_back();
auto& singleUpdate = op.updates.back();
const int flags = msg.pullInt();
singleUpdate.upsert = flags & UpdateOption_Upsert;
singleUpdate.multi = flags & UpdateOption_Multi;
singleUpdate.query = msg.nextJsObj();
singleUpdate.update = msg.nextJsObj();
return op;
}
开发者ID:GodotGo,项目名称:mongo,代码行数:17,代码来源:write_ops_parsers.cpp
示例14: checkAuthForCommand
Status checkAuthForCommand( ClientBasic* client,
const std::string& dbname,
const BSONObj& cmdObj ) {
Status status = auth::checkAuthForWriteCommand( client->getAuthorizationSession(),
_writeType,
NamespaceString( parseNs( dbname,
cmdObj ) ),
cmdObj );
// TODO: Remove this when we standardize GLE reporting from commands
if ( !status.isOK() ) {
setLastError( status.code(), status.reason().c_str() );
}
return status;
}
开发者ID:Aaron20141021,项目名称:mongo,代码行数:17,代码来源:cluster_write_cmd.cpp
示例15: TEST_F
TEST_F(KeysManagerShardedTest, GetKeyWithSingleKey) {
keyManager()->startMonitoring(getServiceContext());
KeysCollectionDocument origKey1(
1, "dummy", TimeProofService::generateRandomKey(), LogicalTime(Timestamp(105, 0)));
ASSERT_OK(insertToConfigCollection(
operationContext(), NamespaceString(KeysCollectionDocument::ConfigNS), origKey1.toBSON()));
auto keyStatus =
keyManager()->getKeyForValidation(operationContext(), 1, LogicalTime(Timestamp(100, 0)));
ASSERT_OK(keyStatus.getStatus());
auto key = keyStatus.getValue();
ASSERT_EQ(1, key.getKeyId());
ASSERT_EQ(origKey1.getKey(), key.getKey());
ASSERT_EQ(Timestamp(105, 0), key.getExpiresAt().asTimestamp());
}
开发者ID:DINKIN,项目名称:mongo,代码行数:17,代码来源:keys_collection_manager_sharding_test.cpp
示例16: NamespaceString
Privilege AuthorizationManager::_modifyPrivilegeForSpecialCases(const Privilege& privilege) {
ActionSet newActions;
newActions.addAllActionsFromSet(privilege.getActions());
std::string collectionName = NamespaceString(privilege.getResource()).coll;
if (collectionName == "system.users") {
newActions.removeAction(ActionType::find);
newActions.removeAction(ActionType::insert);
newActions.removeAction(ActionType::update);
newActions.removeAction(ActionType::remove);
newActions.addAction(ActionType::userAdmin);
} else if (collectionName == "system.profle" && newActions.contains(ActionType::find)) {
newActions.removeAction(ActionType::find);
newActions.addAction(ActionType::profileRead);
}
return Privilege(privilege.getResource(), newActions);
}
开发者ID:chenbk85,项目名称:mongo,代码行数:17,代码来源:authorization_manager.cpp
示例17: checkForIdIndexes
void checkForIdIndexes(const std::string& dbName) {
if (!replSettings.usingReplSets()) {
// we only care about the _id index if we are in a replset
return;
}
if (dbName == "local") {
// we do not need an _id index on anything in the local database
return;
}
const string systemNamespaces = cc().database()->name() + ".system.namespaces";
shared_ptr<Cursor> cursor = theDataFileMgr.findAll(systemNamespaces);
// gather collections
vector<string> collections = vector<string>();
for ( ; cursor && cursor->ok(); cursor->advance()) {
const BSONObj entry = cursor->current();
string name = entry["name"].valuestrsafe();
if (name.find('$') == string::npos && !NamespaceString(name).isSystem()) {
collections.push_back(name);
}
}
// for each collection, ensure there is a $_id_ index
for (vector<string>::iterator i = collections.begin();
i != collections.end(); ++i) {
bool idIndexExists = false;
string indexName = str::stream() << *i << ".$_id_";
boost::shared_ptr<Cursor> indexCursor = theDataFileMgr.findAll(systemNamespaces);
for ( ; indexCursor && indexCursor->ok(); indexCursor->advance()) {
const BSONObj entry = indexCursor->current();
string name = entry["name"].valuestrsafe();
if (!name.compare(indexName)) {
idIndexExists = true;
break;
}
}
if (!idIndexExists) {
log() << "WARNING: the collection '" << *i
<< "' lacks a unique index on _id."
<< " This index is needed for replication to function properly"
<< startupWarningsLog;
log() << "\t To fix this, on the primary run 'db." << i->substr(i->find('.')+1)
<< ".createIndex({_id: 1}, {unique: true})'"
<< startupWarningsLog;
}
}
}
开发者ID:hipsterbd,项目名称:mongo,代码行数:45,代码来源:db.cpp
示例18: addRequiredPrivileges
virtual void addRequiredPrivileges(const std::string& dbname,
const BSONObj& cmdObj,
std::vector<Privilege>* out) {
ActionSet sourceActions;
sourceActions.addAction(ActionType::find);
out->push_back(Privilege(parseResourcePattern(dbname, cmdObj), sourceActions));
ActionSet targetActions;
targetActions.addAction(ActionType::insert);
targetActions.addAction(ActionType::createIndex);
targetActions.addAction(ActionType::convertToCapped);
std::string collection = cmdObj.getStringField("toCollection");
uassert(16708, "bad 'toCollection' value", !collection.empty());
out->push_back(Privilege(ResourcePattern::forExactNamespace(
NamespaceString(dbname, collection)),
targetActions));
}
开发者ID:glenlray,项目名称:mongo,代码行数:18,代码来源:collection_to_capped.cpp
示例19: run
virtual void run() {
const BSONObj inputBson = pipelineFromJsonArray(inputPipeJson());
const BSONObj shardPipeExpected = pipelineFromJsonArray(shardPipeJson());
const BSONObj mergePipeExpected = pipelineFromJsonArray(mergePipeJson());
intrusive_ptr<ExpressionContext> ctx =
new ExpressionContext(&_opCtx, NamespaceString("a.collection"));
string errmsg;
mergePipe = Pipeline::parseCommand(errmsg, inputBson, ctx);
ASSERT_EQUALS(errmsg, "");
ASSERT(mergePipe != NULL);
shardPipe = mergePipe->splitForSharded();
ASSERT(shardPipe != NULL);
ASSERT_EQUALS(Value(shardPipe->writeExplainOps()), Value(shardPipeExpected["pipeline"]));
ASSERT_EQUALS(Value(mergePipe->writeExplainOps()), Value(mergePipeExpected["pipeline"]));
}
开发者ID:NorthBird,项目名称:mongo,代码行数:18,代码来源:pipeline_test.cpp
示例20: _checkAuthorizationImpl
Status Command::_checkAuthorization(Command* c,
ClientBasic* client,
const std::string& dbname,
const BSONObj& cmdObj,
bool fromRepl) {
namespace mmb = mutablebson;
Status status = _checkAuthorizationImpl(c, client, dbname, cmdObj, fromRepl);
if (!status.isOK()) {
log() << status << std::endl;
}
mmb::Document cmdToLog(cmdObj, mmb::Document::kInPlaceDisabled);
c->redactForLogging(&cmdToLog);
audit::logCommandAuthzCheck(client,
NamespaceString(c->parseNs(dbname, cmdObj)),
cmdToLog,
status.code());
return status;
}
开发者ID:jewkesy,项目名称:mongo,代码行数:18,代码来源:commands.cpp
注:本文中的NamespaceString函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论