34 #include <wiredtiger.h> 36 #include "mongo/base/disallow_copying.h" 37 #include "mongo/base/status.h" 38 #include "mongo/base/status_with.h" 39 #include "mongo/bson/bsonobj.h" 40 #include "mongo/db/namespace_string.h" 41 #include "mongo/util/assert_util.h" 46 class OperationContext;
47 class WiredTigerConfigParser;
48 class WiredTigerKVEngine;
49 class WiredTigerSession;
61 if (MONGO_likely(retCode == 0))
67 #define invariantWTOK(expression) \ 69 int _invariantWTOK_retCode = expression; \ 70 if (MONGO_unlikely(_invariantWTOK_retCode != 0)) { \ 72 #expression, wtRCToStatus(_invariantWTOK_retCode), __FILE__, __LINE__); \ 90 const WT_ITEM*
Get()
const {
106 static void fetchTypeAndSourceURI(OperationContext*
opCtx,
107 const std::string& tableUri,
109 std::string* source);
115 static Status exportTableToBSON(WT_SESSION* s,
116 const std::string&
uri,
117 const std::string& config,
118 BSONObjBuilder* bob);
136 BSONObjBuilder* bob);
146 static Status getApplicationMetadata(OperationContext* opCtx,
148 BSONObjBuilder* bob);
150 static StatusWith<BSONObj> getApplicationMetadata(OperationContext* opCtx, StringData uri);
159 int64_t minimumVersion,
160 int64_t maximumVersion);
165 static Status checkTableCreationOptions(
const BSONElement& configElem);
172 const std::string& uri,
173 const std::string& config,
180 template <
typename ResultType>
182 const std::string& uri,
183 const std::string& config,
190 template <
typename ResultType>
192 const std::string& uri,
193 const std::string& config,
195 ResultType maximumResultType);
197 static int64_t getIdentSize(WT_SESSION* s,
const std::string& uri);
204 static size_t getCacheSizeMB(
double requestedCacheSizeGB);
214 static WT_EVENT_HANDLER defaultEventHandlers();
221 static int onError(WT_EVENT_HANDLER* handler,
224 const char* message);
226 using ErrorHandler = int (*)(WT_EVENT_HANDLER*, WT_SESSION*, int,
const char*);
238 static int verifyTable(OperationContext* opCtx,
239 const std::string& uri,
240 std::vector<std::string>* errors = NULL);
242 static bool useTableLogging(NamespaceString
ns,
bool replEnabled);
244 static Status setTableLogging(OperationContext* opCtx,
const std::string& uri,
bool on);
246 static Status setTableLogging(WT_SESSION* session,
const std::string& uri,
bool on);
253 template <
typename T>
254 static T _castStatisticsValue(uint64_t statisticsValue);
260 template <
typename T>
261 static T _castStatisticsValue(uint64_t statisticsValue, T maximumResultType);
270 wiredtiger_config_parser_open(NULL, config.rawData(), config.size(), &_parser));
274 invariant(nested.type == WT_CONFIG_ITEM::WT_CONFIG_ITEM_STRUCT);
275 invariantWTOK(wiredtiger_config_parser_open(NULL, nested.str, nested.len, &_parser));
282 int next(WT_CONFIG_ITEM*
key, WT_CONFIG_ITEM* value) {
283 return _parser->next(_parser, key, value);
286 int get(
const char*
key, WT_CONFIG_ITEM* value) {
287 return _parser->get(_parser, key, value);
295 template <
typename ResultType>
297 const std::string&
uri,
298 const std::string& config,
300 return getStatisticsValueAs<ResultType>(
301 session,
uri, config, statisticsKey, std::numeric_limits<ResultType>::max());
305 template <
typename ResultType>
307 const std::string&
uri,
308 const std::string& config,
310 ResultType maximumResultType) {
312 if (!result.isOK()) {
316 _castStatisticsValue<ResultType>(result.getValue(), maximumResultType));
320 template <
typename ResultType>
322 return _castStatisticsValue<ResultType>(statisticsValue,
323 std::numeric_limits<ResultType>::max());
327 template <
typename ResultType>
329 ResultType maximumResultType) {
330 return statisticsValue >
static_cast<uint64_t
>(maximumResultType)
332 : static_cast<ResultType>(statisticsValue);
Definition: wiredtiger_util.h:76
KVEngine * engine
Definition: kv_engine_test_timestamps.cpp:205
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
WiredTigerItem(const void *d, size_t s)
Definition: wiredtiger_util.h:77
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
WT_ITEM * Get()
Definition: wiredtiger_util.h:87
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
Definition: wiredtiger_util.h:216
WiredTigerConfigParser(const WT_CONFIG_ITEM &nested)
Definition: wiredtiger_util.h:273
BSONObj key
Definition: btree_interface.cpp:334
~WiredTigerConfigParser()
Definition: wiredtiger_util.h:278
This is a structure that caches 1 cursor for each uri.
Definition: wiredtiger_session_cache.h:65
const ErrorHandler _defaultErrorHandler
Definition: wiredtiger_util.h:229
WiredTigerItem(const std::string &str)
Definition: wiredtiger_util.h:81
std::shared_ptr< void > data
Definition: ephemeral_for_test_record_store_test.cpp:74
Definition: wiredtiger_kv_engine.h:65
bool wt_keeptxnopen()
Definition: wiredtiger_util.h:51
const WT_ITEM * Get() const
Definition: wiredtiger_util.h:90
WiredTigerConfigParser(StringData config)
Definition: wiredtiger_util.h:268
int(*)(WT_EVENT_HANDLER *, WT_SESSION *, int, const char *) ErrorHandler
Definition: wiredtiger_util.h:226
Definition: index_key_validate.h:40
int next(WT_CONFIG_ITEM *key, WT_CONFIG_ITEM *value)
Definition: wiredtiger_util.h:282
static StatusWith< ResultType > getStatisticsValueAs(WT_SESSION *session, const std::string &uri, const std::string &config, int statisticsKey)
Reads individual statistics using URI and casts to type ResultType.
Definition: wiredtiger_util.h:296
static T _castStatisticsValue(uint64_t statisticsValue)
Casts unsigned 64-bit statistics value to T.
Status wtRCToStatus(int retCode, const char *prefix=NULL)
converts wiredtiger return codes to mongodb statuses.
Definition: wiredtiger_util.h:60
Status wtRCToStatus_slow(int retCode, const char *prefix)
Definition: wiredtiger_util.cpp:82
std::vector< std::string > *const _errors
Definition: wiredtiger_util.h:228
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
#define invariantWTOK(expression)
Definition: wiredtiger_util.h:67
std::string uri
Definition: wiredtiger_standard_record_store_test.cpp:367
Definition: wiredtiger_util.h:95
Definition: wiredtiger_util.h:264
WT_CONFIG_PARSER * _parser
Definition: wiredtiger_util.h:291