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