本文整理汇总了C++中NamespaceString函数的典型用法代码示例。如果您正苦于以下问题:C++ NamespaceString函数的具体用法?C++ NamespaceString怎么用?C++ NamespaceString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NamespaceString函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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;
}
示例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;
}
示例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;
}
示例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();
}
示例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;
}
示例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 );
}
示例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;
}
示例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();
}
示例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();
}
示例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();
}
示例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);
}
示例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];
}
}
示例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;
}
示例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;
}
示例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());
}