本文整理汇总了C++中WT_DATA_SOURCE类的典型用法代码示例。如果您正苦于以下问题:C++ WT_DATA_SOURCE类的具体用法?C++ WT_DATA_SOURCE怎么用?C++ WT_DATA_SOURCE使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了WT_DATA_SOURCE类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: __wt_schema_range_truncate
/*
* __wt_schema_range_truncate --
* WT_SESSION::truncate with a range.
*/
int
__wt_schema_range_truncate(
WT_SESSION_IMPL *session, WT_CURSOR *start, WT_CURSOR *stop)
{
WT_CURSOR *cursor;
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
const char *uri;
cursor = (start != NULL) ? start : stop;
uri = cursor->internal_uri;
if (WT_PREFIX_MATCH(uri, "file:"))
WT_WITH_BTREE(session, ((WT_CURSOR_BTREE *)cursor)->btree,
ret = __wt_btcur_range_truncate(
(WT_CURSOR_BTREE *)start, (WT_CURSOR_BTREE *)stop));
else if (WT_PREFIX_MATCH(uri, "table:"))
ret = __wt_table_range_truncate(
(WT_CURSOR_TABLE *)start, (WT_CURSOR_TABLE *)stop);
else if ((dsrc = __wt_schema_get_source(session, uri)) != NULL &&
dsrc->range_truncate != NULL)
ret = dsrc->range_truncate(dsrc, &session->iface, start, stop);
else
ret = __wt_range_truncate(start, stop);
return (ret);
}
开发者ID:rueckstiess,项目名称:mongo,代码行数:31,代码来源:schema_truncate.c
示例2: __wt_open_cursor
/*
* __wt_open_cursor --
* Internal version of WT_SESSION::open_cursor.
*/
int
__wt_open_cursor(WT_SESSION_IMPL *session,
const char *uri, WT_CURSOR *owner, const char *cfg[], WT_CURSOR **cursorp)
{
WT_COLGROUP *colgroup;
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
if (WT_PREFIX_MATCH(uri, "backup:"))
ret = __wt_curbackup_open(session, uri, cfg, cursorp);
else if (WT_PREFIX_MATCH(uri, "colgroup:")) {
/*
* Column groups are a special case: open a cursor on the
* underlying data source.
*/
WT_RET(__wt_schema_get_colgroup(session, uri, NULL, &colgroup));
ret = __wt_open_cursor(
session, colgroup->source, owner, cfg, cursorp);
} else if (WT_PREFIX_MATCH(uri, "config:"))
ret = __wt_curconfig_open(session, uri, cfg, cursorp);
else if (WT_PREFIX_MATCH(uri, "file:"))
ret = __wt_curfile_open(session, uri, owner, cfg, cursorp);
else if (WT_PREFIX_MATCH(uri, "index:"))
ret = __wt_curindex_open(session, uri, cfg, cursorp);
else if (WT_PREFIX_MATCH(uri, "statistics:"))
ret = __wt_curstat_open(session, uri, cfg, cursorp);
else if (WT_PREFIX_MATCH(uri, "table:"))
ret = __wt_curtable_open(session, uri, cfg, cursorp);
else if ((ret = __wt_schema_get_source(session, uri, &dsrc)) == 0)
ret = dsrc->open_cursor(dsrc, &session->iface,
uri, owner, cfg, cursorp);
return (ret);
}
开发者ID:zhliu03,项目名称:wiredtiger,代码行数:38,代码来源:session_api.c
示例3: __wt_schema_truncate
/*
* __wt_schema_truncate --
* WT_SESSION::truncate without a range.
*/
int
__wt_schema_truncate(
WT_SESSION_IMPL *session, const char *uri, const char *cfg[])
{
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
const char *tablename;
tablename = uri;
if (WT_PREFIX_MATCH(uri, "file:")) {
ret = __truncate_file(session, uri);
} else if (WT_PREFIX_MATCH(uri, "lsm:"))
ret = __wt_lsm_tree_truncate(session, uri, cfg);
else if (WT_PREFIX_SKIP(tablename, "table:"))
ret = __truncate_table(session, tablename, cfg);
else if ((dsrc = __wt_schema_get_source(session, uri)) != NULL)
ret = dsrc->truncate == NULL ?
__truncate_dsrc(session, uri) :
dsrc->truncate(
dsrc, &session->iface, uri, (WT_CONFIG_ARG *)cfg);
else
ret = __wt_bad_object_type(session, uri);
/* If we didn't find a metadata entry, map that error to ENOENT. */
return (ret == WT_NOTFOUND ? ENOENT : ret);
}
开发者ID:rueckstiess,项目名称:mongo,代码行数:31,代码来源:schema_truncate.c
示例4: __wt_schema_drop
/*
* __wt_schema_drop --
* Process a WT_SESSION::drop operation for all supported types.
*/
int
__wt_schema_drop(WT_SESSION_IMPL *session, const char *uri, const char *cfg[])
{
WT_CONFIG_ITEM cval;
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
bool force;
WT_RET(__wt_config_gets_def(session, cfg, "force", 0, &cval));
force = cval.val != 0;
WT_RET(__wt_meta_track_on(session));
/* Paranoia: clear any handle from our caller. */
session->dhandle = NULL;
if (WT_PREFIX_MATCH(uri, "colgroup:"))
ret = __drop_colgroup(session, uri, force, cfg);
else if (WT_PREFIX_MATCH(uri, "file:"))
ret = __drop_file(session, uri, force, cfg);
else if (WT_PREFIX_MATCH(uri, "index:"))
ret = __drop_index(session, uri, force, cfg);
else if (WT_PREFIX_MATCH(uri, "lsm:"))
ret = __wt_lsm_tree_drop(session, uri, cfg);
else if (WT_PREFIX_MATCH(uri, "table:"))
ret = __drop_table(session, uri, cfg);
else if ((dsrc = __wt_schema_get_source(session, uri)) != NULL)
ret = dsrc->drop == NULL ?
__wt_object_unsupported(session, uri) :
dsrc->drop(
dsrc, &session->iface, uri, (WT_CONFIG_ARG *)cfg);
else
ret = __wt_bad_object_type(session, uri);
/*
* Map WT_NOTFOUND to ENOENT, based on the assumption WT_NOTFOUND means
* there was no metadata entry. Map ENOENT to zero if force is set.
*/
if (ret == WT_NOTFOUND || ret == ENOENT)
ret = force ? 0 : ENOENT;
/* Bump the schema generation so that stale data is ignored. */
++S2C(session)->schema_gen;
WT_TRET(__wt_meta_track_off(session, true, ret != 0));
return (ret);
}
开发者ID:ChineseDr,项目名称:mongo,代码行数:52,代码来源:schema_drop.c
示例5: __wt_schema_drop
int
__wt_schema_drop(WT_SESSION_IMPL *session, const char *uri, const char *cfg[])
{
WT_CONFIG_ITEM cval;
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
int force;
WT_RET(__wt_config_gets_defno(session, cfg, "force", &cval));
force = (cval.val != 0);
/* Disallow drops from the WiredTiger name space. */
WT_RET(__wt_schema_name_check(session, uri));
WT_RET(__wt_meta_track_on(session));
/* Be careful to ignore any btree handle in our caller. */
WT_CLEAR_BTREE_IN_SESSION(session);
if (WT_PREFIX_MATCH(uri, "colgroup:"))
ret = __drop_colgroup(session, uri, cfg);
else if (WT_PREFIX_MATCH(uri, "file:"))
ret = __drop_file(session, uri, force, cfg);
else if (WT_PREFIX_MATCH(uri, "index:"))
ret = __drop_index(session, uri, cfg);
else if (WT_PREFIX_MATCH(uri, "table:"))
ret = __drop_table(session, uri, force, cfg);
else if ((ret = __wt_schema_get_source(session, uri, &dsrc)) == 0)
ret = dsrc->drop(dsrc, &session->iface, uri, cfg);
/*
* Map WT_NOTFOUND to ENOENT (or to 0 if "force" is set), based on the
* assumption WT_NOTFOUND means there was no metadata entry. The
* underlying drop functions should handle this case (we passed them
* the "force" value), but better safe than sorry.
*/
if (ret == WT_NOTFOUND)
ret = force ? 0 : ENOENT;
/* Bump the schema generation so that stale data is ignored. */
++S2C(session)->schema_gen;
WT_TRET(__wt_meta_track_off(session, ret != 0));
return (ret);
}
开发者ID:niumowm,项目名称:wiredtiger,代码行数:46,代码来源:schema_drop.c
示例6: __wt_schema_rename
/*
* __wt_schema_rename --
* WT_SESSION::rename.
*/
int
__wt_schema_rename(WT_SESSION_IMPL *session,
const char *uri, const char *newuri, const char *cfg[])
{
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
const char *p, *t;
/* Disallow renames to/from the WiredTiger name space. */
WT_RET(__wt_schema_name_check(session, uri));
WT_RET(__wt_schema_name_check(session, newuri));
/* The target type must match the source type. */
for (p = uri, t = newuri; *p == *t && *p != ':'; ++p, ++t)
;
if (*p != ':' || *t != ':')
WT_RET_MSG(session, EINVAL,
"rename target type must match URI: %s to %s", uri, newuri);
/*
* We track rename operations, if we fail in the middle, we want to
* back it all out.
*/
WT_RET(__wt_meta_track_on(session));
if (WT_PREFIX_MATCH(uri, "file:"))
ret = __rename_file(session, uri, newuri);
else if (WT_PREFIX_MATCH(uri, "lsm:"))
ret = __wt_lsm_tree_rename(session, uri, newuri, cfg);
else if (WT_PREFIX_MATCH(uri, "table:"))
ret = __rename_table(session, uri, newuri, cfg);
else if ((ret = __wt_schema_get_source(session, uri, &dsrc)) == 0)
ret = dsrc->rename == NULL ?
__wt_object_unsupported(session, uri) :
dsrc->rename(dsrc, &session->iface,
uri, newuri, (WT_CONFIG_ARG *)cfg);
/* Bump the schema generation so that stale data is ignored. */
++S2C(session)->schema_gen;
WT_TRET(__wt_meta_track_off(session, ret != 0));
/* If we didn't find a metadata entry, map that error to ENOENT. */
return (ret == WT_NOTFOUND ? ENOENT : ret);
}
开发者ID:umerazad,项目名称:wiredtiger,代码行数:49,代码来源:schema_rename.c
示例7: __wt_schema_rename
/*
* __wt_schema_rename --
* WT_SESSION::rename.
*/
int
__wt_schema_rename(WT_SESSION_IMPL *session,
const char *uri, const char *newuri, const char *cfg[])
{
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
const char *oldname, *newname;
WT_UNUSED(cfg);
/* Disallow renames to/from the WiredTiger name space. */
WT_RET(__wt_schema_name_check(session, uri));
WT_RET(__wt_schema_name_check(session, newuri));
/*
* We track rename operations, if we fail in the middle, we want to
* back it all out.
*/
WT_RET(__wt_meta_track_on(session));
oldname = uri;
newname = newuri;
if (WT_PREFIX_SKIP(oldname, "file:")) {
if (!WT_PREFIX_SKIP(newname, "file:"))
WT_RET_MSG(session, EINVAL,
"rename target type must match URI: %s to %s",
uri, newuri);
ret = __rename_file(session, uri, newuri);
} else if (WT_PREFIX_SKIP(oldname, "table:")) {
if (!WT_PREFIX_SKIP(newname, "table:"))
WT_RET_MSG(session, EINVAL,
"rename target type must match URI: %s to %s",
uri, newuri);
ret = __rename_table(session, oldname, newname);
} else if ((ret = __wt_schema_get_source(session, oldname, &dsrc)) == 0)
ret = dsrc->rename(dsrc,
&session->iface, oldname, newname, cfg[1]);
WT_TRET(__wt_meta_track_off(session, ret != 0));
/* If we didn't find a metadata entry, map that error to ENOENT. */
return (ret == WT_NOTFOUND ? ENOENT : ret);
}
开发者ID:qixin,项目名称:wiredtiger,代码行数:47,代码来源:schema_rename.c
示例8: __wt_schema_truncate
/*
* __wt_schema_truncate --
* WT_SESSION::truncate.
*/
int
__wt_schema_truncate(
WT_SESSION_IMPL *session, const char *uri, const char *cfg[])
{
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
const char *tablename;
WT_UNUSED(cfg);
tablename = uri;
if (WT_PREFIX_MATCH(uri, "file:"))
ret = __truncate_file(session, uri);
else if (WT_PREFIX_SKIP(tablename, "table:"))
ret = __truncate_table(session, tablename);
else if ((ret = __wt_schema_get_source(session, uri, &dsrc)) == 0)
ret = dsrc->truncate(dsrc, &session->iface, uri, cfg);
/* If we didn't find a metadata entry, map that error to ENOENT. */
return (ret == WT_NOTFOUND ? ENOENT : ret);
}
开发者ID:niumowm,项目名称:wiredtiger,代码行数:25,代码来源:schema_truncate.c
示例9: __wt_schema_worker
/*
* __wt_schema_worker --
* Get Btree handles for the object and cycle through calls to an
* underlying worker function with each handle.
*/
int
__wt_schema_worker(WT_SESSION_IMPL *session,
const char *uri,
int (*file_func)(WT_SESSION_IMPL *, const char *[]),
int (*name_func)(WT_SESSION_IMPL *, const char *),
const char *cfg[], uint32_t open_flags)
{
WT_COLGROUP *colgroup;
WT_DATA_SOURCE *dsrc;
WT_DECL_RET;
WT_INDEX *idx;
WT_SESSION *wt_session;
WT_TABLE *table;
const char *tablename;
u_int i;
table = NULL;
tablename = uri;
if (name_func != NULL)
WT_ERR(name_func(session, uri));
/* Get the btree handle(s) and call the underlying function. */
if (WT_PREFIX_MATCH(uri, "file:")) {
if (file_func != NULL) {
WT_ERR(__wt_session_get_btree_ckpt(
session, uri, cfg, open_flags));
ret = file_func(session, cfg);
WT_TRET(__wt_session_release_btree(session));
}
} else if (WT_PREFIX_MATCH(uri, "colgroup:")) {
WT_ERR(__wt_schema_get_colgroup(session, uri, NULL, &colgroup));
WT_ERR(__wt_schema_worker(session, colgroup->source,
file_func, name_func, cfg, open_flags));
} else if (WT_PREFIX_SKIP(tablename, "index:")) {
idx = NULL;
WT_ERR(__wt_schema_get_index(session, uri, NULL, &idx));
WT_ERR(__wt_schema_worker(session, idx->source,
file_func, name_func, cfg, open_flags));
} else if (WT_PREFIX_MATCH(uri, "lsm:")) {
WT_ERR(__wt_lsm_tree_worker(
session, uri, file_func, name_func, cfg, open_flags));
} else if (WT_PREFIX_SKIP(tablename, "table:")) {
WT_ERR(__wt_schema_get_table(session,
tablename, strlen(tablename), 0, &table));
WT_ASSERT(session, session->dhandle == NULL);
/*
* We could make a recursive call for each colgroup or index
* URI, but since we have already opened the table, we can take
* a short cut and skip straight to the sources. If we have a
* name function, it needs to know about the intermediate URIs.
*/
for (i = 0; i < WT_COLGROUPS(table); i++) {
colgroup = table->cgroups[i];
if (name_func != NULL)
WT_ERR(name_func(session, colgroup->name));
WT_ERR(__wt_schema_worker(session, colgroup->source,
file_func, name_func, cfg, open_flags));
}
WT_ERR(__wt_schema_open_indices(session, table));
for (i = 0; i < table->nindices; i++) {
idx = table->indices[i];
if (name_func != NULL)
WT_ERR(name_func(session, idx->name));
WT_ERR(__wt_schema_worker(session, idx->source,
file_func, name_func, cfg, open_flags));
}
} else if ((dsrc = __wt_schema_get_source(session, uri)) != NULL) {
wt_session = (WT_SESSION *)session;
if (file_func == __wt_compact && dsrc->compact != NULL)
WT_ERR(dsrc->compact(
dsrc, wt_session, uri, (WT_CONFIG_ARG *)cfg));
else if (file_func == __wt_salvage && dsrc->salvage != NULL)
WT_ERR(dsrc->salvage(
dsrc, wt_session, uri, (WT_CONFIG_ARG *)cfg));
else if (file_func == __wt_verify && dsrc->verify != NULL)
WT_ERR(dsrc->verify(
dsrc, wt_session, uri, (WT_CONFIG_ARG *)cfg));
else
WT_ERR(__wt_object_unsupported(session, uri));
} else
WT_ERR(__wt_bad_object_type(session, uri));
err: if (table != NULL)
__wt_schema_release_table(session, table);
return (ret);
}
开发者ID:ckoolkarni,项目名称:wiredtiger,代码行数:94,代码来源:schema_worker.c
注:本文中的WT_DATA_SOURCE类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论