diff options
author | Michael Cahill <michael.cahill@wiredtiger.com> | 2011-05-06 15:58:00 +1000 |
---|---|---|
committer | Michael Cahill <michael.cahill@wiredtiger.com> | 2011-05-06 15:58:00 +1000 |
commit | 7fde73aa31a1a68941fc56ab42f98a1879f2bd16 (patch) | |
tree | ef6709e99f67dfad1609b9929e71181b27f0de34 /src | |
parent | fd23fdcc90a3272e0fc76328a9c149fa56cc19ee (diff) | |
download | mongo-7fde73aa31a1a68941fc56ab42f98a1879f2bd16.tar.gz |
Fix the handling of "printable" config for dump cursors: make it a separate flag rather than combining it with "dump".
refs #28
Diffstat (limited to 'src')
-rw-r--r-- | src/api/config_def.c | 3 | ||||
-rw-r--r-- | src/api/cur_btree.c | 15 | ||||
-rw-r--r-- | src/api/cur_dump.c | 4 | ||||
-rw-r--r-- | src/api/cur_stat.c | 16 | ||||
-rw-r--r-- | src/include/api.h | 7 | ||||
-rw-r--r-- | src/include/extern.h | 2 | ||||
-rw-r--r-- | src/include/wiredtiger.in | 4 |
7 files changed, 21 insertions, 30 deletions
diff --git a/src/api/config_def.c b/src/api/config_def.c index 1c80102c2ed..32c2f45d592 100644 --- a/src/api/config_def.c +++ b/src/api/config_def.c @@ -64,7 +64,8 @@ __wt_confdfl_session_log_printf = const char * __wt_confdfl_session_open_cursor = - "bulk=false,dump=false,isolation=read-committed,overwrite=false,raw=false"; + "bulk=false,dump=false,isolation=read-committed,overwrite=false," + "printable=false,raw=false"; const char * __wt_confdfl_session_rename = diff --git a/src/api/cur_btree.c b/src/api/cur_btree.c index a9638901947..a5c52fcec43 100644 --- a/src/api/cur_btree.c +++ b/src/api/cur_btree.c @@ -243,8 +243,7 @@ __wt_cursor_open(SESSION *session, WT_CONFIG_ITEM cval; WT_CURSOR *cursor; const char *key_format, *value_format; - int bulk, raw, ret; - uint32_t dump; + int bulk, dump, printable, raw, ret; size_t csize; API_CONF_INIT(session, open_cursor, config); @@ -278,13 +277,9 @@ __wt_cursor_open(SESSION *session, WT_ERR(__wt_config_gets(__cfg, "bulk", &cval)); bulk = (cval.val != 0); WT_ERR(__wt_config_gets(__cfg, "dump", &cval)); - if ((cval.type == ITEM_STRING || cval.type == ITEM_ID) && - cval.len > 0) { - if (strncasecmp("printable", cval.str, cval.len) == 0) - dump = WT_DUMP_PRINT; - else if (strncasecmp("raw", cval.str, cval.len) == 0) - dump = WT_DUMP_RAW; - } + dump = (cval.val != 0); + WT_ERR(__wt_config_gets(__cfg, "printable", &cval)); + printable = (cval.val != 0); WT_ERR(__wt_config_gets(__cfg, "raw", &cval)); raw = (cval.val != 0); @@ -302,7 +297,7 @@ __wt_cursor_open(SESSION *session, if (bulk) WT_ERR(__wt_curbulk_init((CURSOR_BULK *)cbt)); if (dump != 0) - __wt_curdump_init(cursor, dump); + __wt_curdump_init(cursor, printable); if (raw) F_SET(cursor, WT_CURSTD_RAW); diff --git a/src/api/cur_dump.c b/src/api/cur_dump.c index ff955a575ee..8f837462daf 100644 --- a/src/api/cur_dump.c +++ b/src/api/cur_dump.c @@ -154,13 +154,13 @@ __curdump_set_value(WT_CURSOR *cursor, ...) * initialize a dump cursor. */ void -__wt_curdump_init(WT_CURSOR *cursor, uint32_t flags) +__wt_curdump_init(WT_CURSOR *cursor, int printable) { cursor->get_key = __curdump_get_key; cursor->get_value = __curdump_get_value; cursor->set_key = __curdump_set_key; cursor->set_value = __curdump_set_value; - if (LF_ISSET(WT_DUMP_PRINT)) + if (printable) F_SET(cursor, WT_CURSTD_PRINT); } diff --git a/src/api/cur_stat.c b/src/api/cur_stat.c index d606a83cdee..2ef9b95ff49 100644 --- a/src/api/cur_stat.c +++ b/src/api/cur_stat.c @@ -200,23 +200,17 @@ __wt_curstat_open(SESSION *session, WT_CONFIG_ITEM cval; WT_CURSOR *cursor; const char *key_format, *value_format; - int raw, ret; - uint32_t dump; + int dump, printable, raw, ret; size_t csize; API_CONF_INIT(session, open_cursor, config); /* Skip "stat:". */ uri += 5; - dump = 0; WT_ERR(__wt_config_gets(__cfg, "dump", &cval)); - if ((cval.type == ITEM_STRING || cval.type == ITEM_ID) && - cval.len > 0) { - if (strncasecmp("printable", cval.str, cval.len) == 0) - dump = WT_DUMP_PRINT; - else if (strncasecmp("raw", cval.str, cval.len) == 0) - dump = WT_DUMP_RAW; - } + dump = (cval.val != 0); + WT_ERR(__wt_config_gets(__cfg, "printable", &cval)); + printable = (cval.val != 0); WT_ERR(__wt_config_gets(__cfg, "raw", &cval)); raw = (cval.val != 0); @@ -230,7 +224,7 @@ __wt_curstat_open(SESSION *session, __wt_cursor_init(cursor, config); if (dump) - __wt_curdump_init(cursor, dump); + __wt_curdump_init(cursor, printable); if (raw) F_SET(cursor, WT_CURSTD_RAW); diff --git a/src/include/api.h b/src/include/api.h index 6f0241e8254..a17aa165815 100644 --- a/src/include/api.h +++ b/src/include/api.h @@ -349,9 +349,8 @@ extern WT_EVENT_HANDLER *__wt_event_handler_verbose; #define WT_BUF_INUSE 0x00000001 #define WT_COLUMN 0x00000004 #define WT_CREATE 0x00000001 -#define WT_DEBUG 0x00000004 -#define WT_DUMP_PRINT 0x00000002 -#define WT_DUMP_RAW 0x00000001 +#define WT_DEBUG 0x00000002 +#define WT_DUMP_PRINT 0x00000001 #define WT_HUFFMAN_KEY 0x00000004 #define WT_HUFFMAN_VALUE 0x00000002 #define WT_RDONLY 0x00000002 @@ -368,7 +367,7 @@ extern WT_EVENT_HANDLER *__wt_event_handler_verbose; #define WT_WORKQ_RUN 0x00000001 #define WT_WRITE 0x00000001 -#define WT_APIMASK_BT_DUMP 0x00000007 +#define WT_APIMASK_BT_DUMP 0x00000003 #define WT_APIMASK_BT_OPEN 0x00000001 #define WT_APIMASK_BT_SEARCH_COL 0x00000001 #define WT_APIMASK_BT_SEARCH_KEY_ROW 0x00000001 diff --git a/src/include/extern.h b/src/include/extern.h index 86462c400e9..58b3db8111c 100644 --- a/src/include/extern.h +++ b/src/include/extern.h @@ -65,7 +65,7 @@ int __wt_curconfig_open(SESSION *session, const char *uri, const char *config, WT_CURSOR **cursorp); -void __wt_curdump_init(WT_CURSOR *cursor, uint32_t flags); +void __wt_curdump_init(WT_CURSOR *cursor, int printable); int __wt_curstat_open(SESSION *session, const char *uri, const char *config, diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in index 8be45c98d00..95f91178aa6 100644 --- a/src/include/wiredtiger.in +++ b/src/include/wiredtiger.in @@ -459,12 +459,14 @@ struct wt_session { * @configstart{session.open_cursor, see dist/api_data.py} * @config{bulk, configure the cursor for bulk loads} * @config{dump, configure the cursor for dump format inputs and - * outputs. One of \c false\, \c "printable" or \c "raw"} + * outputs.} * @config{isolation, the isolation level for this cursor\, one of \c * "snapshot" or \c "read-committed" or \c "read-uncommitted". Ignored * for transactional cursors} * @config{overwrite, if an existing key is inserted\, overwrite the * existing value} + * @config{printable, for dump cursors\, pass through printable bytes + * unmodified.} * @config{raw, ignore the encodings for the key and value\, manage data * as if the formats were \c "u"} * @configend |