summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2020-11-10 17:05:50 +1100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-11-10 12:28:18 +0000
commit9e8989bfd5dd36bf835247130d1d1229806802bf (patch)
tree425fa3a099a4bf2ac2e9841e98abc6a9a49f21d7
parent1ec7eeba23b21952b01050770c6ceb46ac1789f6 (diff)
downloadmongo-9e8989bfd5dd36bf835247130d1d1229806802bf.tar.gz
Import wiredtiger: 2fb1c7b6fde6de1550079bcf4582cbade9f40e50 from branch mongodb-5.0
ref: 805fe0276c..2fb1c7b6fd for: 4.9.0 WT-6678 Remove Huffman Encoding support for Keys WT-6713 Remove transaction support from custom data sources
-rw-r--r--src/third_party/wiredtiger/dist/api_data.py4
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_huffman.c47
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_page.c6
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_vrfy_dsk.c38
-rw-r--r--src/third_party/wiredtiger/src/btree/row_key.c16
-rw-r--r--src/third_party/wiredtiger/src/config/config_def.c29
-rw-r--r--src/third_party/wiredtiger/src/cursor/cur_ds.c59
-rw-r--r--src/third_party/wiredtiger/src/docs/custom-data-sources.dox6
-rw-r--r--src/third_party/wiredtiger/src/docs/file-formats.dox12
-rw-r--r--src/third_party/wiredtiger/src/docs/huffman.dox9
-rw-r--r--src/third_party/wiredtiger/src/docs/tune-page-size-and-comp.dox11
-rw-r--r--src/third_party/wiredtiger/src/include/btmem.h9
-rw-r--r--src/third_party/wiredtiger/src/include/btree.h1
-rw-r--r--src/third_party/wiredtiger/src/include/btree_inline.h7
-rw-r--r--src/third_party/wiredtiger/src/include/cell_inline.h5
-rw-r--r--src/third_party/wiredtiger/src/include/cursor.h16
-rw-r--r--src/third_party/wiredtiger/src/include/cursor_inline.h7
-rw-r--r--src/third_party/wiredtiger/src/include/wiredtiger.in3
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_row.c8
-rwxr-xr-xsrc/third_party/wiredtiger/test/evergreen.yml2
-rw-r--r--src/third_party/wiredtiger/test/format/CONFIG.stress1
-rw-r--r--src/third_party/wiredtiger/test/format/config.h3
-rw-r--r--src/third_party/wiredtiger/test/format/config_compat.c2
-rw-r--r--src/third_party/wiredtiger/test/format/config_compat.sed1
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-56371
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-67251
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-67271
-rw-r--r--src/third_party/wiredtiger/test/format/format.h1
-rwxr-xr-xsrc/third_party/wiredtiger/test/format/format.sh4
-rw-r--r--src/third_party/wiredtiger/test/format/wts.c2
-rw-r--r--src/third_party/wiredtiger/test/suite/test_base02.py2
-rwxr-xr-xsrc/third_party/wiredtiger/test/suite/test_base05.py2
-rw-r--r--src/third_party/wiredtiger/test/suite/test_huffman01.py24
-rw-r--r--src/third_party/wiredtiger/test/suite/test_huffman02.py13
35 files changed, 78 insertions, 277 deletions
diff --git a/src/third_party/wiredtiger/dist/api_data.py b/src/third_party/wiredtiger/dist/api_data.py
index 367fe924a0d..14132297f13 100644
--- a/src/third_party/wiredtiger/dist/api_data.py
+++ b/src/third_party/wiredtiger/dist/api_data.py
@@ -267,10 +267,6 @@ file_config = format_meta + file_runtime_config + [
Config('format', 'btree', r'''
the file format''',
choices=['btree']),
- Config('huffman_key', 'none', r'''
- configure Huffman encoding for keys. Permitted values are
- \c "none", \c "english", \c "utf8<file>" or \c "utf16<file>".
- See @ref huffman for more information'''),
Config('huffman_value', 'none', r'''
configure Huffman encoding for values. Permitted values are
\c "none", \c "english", \c "utf8<file>" or \c "utf16<file>".
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index 12b52ce60eb..9627b7da599 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -2,5 +2,5 @@
"vendor": "wiredtiger",
"github": "wiredtiger/wiredtiger.git",
"branch": "mongodb-5.0",
- "commit": "805fe0276c367cb70321af3e1f473c881d0adc87"
+ "commit": "2fb1c7b6fde6de1550079bcf4582cbade9f40e50"
}
diff --git a/src/third_party/wiredtiger/src/btree/bt_huffman.c b/src/third_party/wiredtiger/src/btree/bt_huffman.c
index 8496339d666..13e4952ce33 100644
--- a/src/third_party/wiredtiger/src/btree/bt_huffman.c
+++ b/src/third_party/wiredtiger/src/btree/bt_huffman.c
@@ -197,7 +197,7 @@ __wt_btree_huffman_open(WT_SESSION_IMPL *session)
{
struct __wt_huffman_table *table;
WT_BTREE *btree;
- WT_CONFIG_ITEM key_conf, value_conf;
+ WT_CONFIG_ITEM value_conf;
WT_DECL_RET;
u_int entries, numbytes;
const char **cfg;
@@ -205,11 +205,9 @@ __wt_btree_huffman_open(WT_SESSION_IMPL *session)
btree = S2BT(session);
cfg = btree->dhandle->cfg;
- WT_RET(__wt_config_gets_none(session, cfg, "huffman_key", &key_conf));
- WT_RET(__huffman_confchk(session, &key_conf));
WT_RET(__wt_config_gets_none(session, cfg, "huffman_value", &value_conf));
WT_RET(__huffman_confchk(session, &value_conf));
- if (key_conf.len == 0 && value_conf.len == 0)
+ if (value_conf.len == 0)
return (0);
switch (btree->type) { /* Check file type compatibility. */
@@ -217,43 +215,10 @@ __wt_btree_huffman_open(WT_SESSION_IMPL *session)
WT_RET_MSG(session, EINVAL, "fixed-size column-store files may not be Huffman encoded");
/* NOTREACHED */
case BTREE_COL_VAR:
- if (key_conf.len != 0)
- WT_RET_MSG(session, EINVAL,
- "the keys of variable-length column-store files may not be Huffman encoded");
- break;
case BTREE_ROW:
break;
}
- if (key_conf.len == 0) {
- ;
- } else if (strncmp(key_conf.str, "english", key_conf.len) == 0) {
- struct __wt_huffman_table copy[WT_ELEMENTS(__wt_huffman_nytenglish)];
-
- memcpy(copy, __wt_huffman_nytenglish, sizeof(__wt_huffman_nytenglish));
- WT_RET(__wt_huffman_open(
- session, copy, WT_ELEMENTS(__wt_huffman_nytenglish), 1, &btree->huffman_key));
-
- /* Check for a shared key/value table. */
- if (value_conf.len != 0 && strncmp(value_conf.str, "english", value_conf.len) == 0) {
- btree->huffman_value = btree->huffman_key;
- return (0);
- }
- } else {
- WT_RET(__wt_huffman_read(session, &key_conf, &table, &entries, &numbytes));
- ret = __wt_huffman_open(session, table, entries, numbytes, &btree->huffman_key);
- __wt_free(session, table);
- if (ret != 0)
- return (ret);
-
- /* Check for a shared key/value table. */
- if (value_conf.len != 0 && key_conf.len == value_conf.len &&
- memcmp(key_conf.str, value_conf.str, key_conf.len) == 0) {
- btree->huffman_value = btree->huffman_key;
- return (0);
- }
- }
-
if (value_conf.len == 0) {
;
} else if (strncmp(value_conf.str, "english", value_conf.len) == 0) {
@@ -375,14 +340,6 @@ __wt_btree_huffman_close(WT_SESSION_IMPL *session)
btree = S2BT(session);
- if (btree->huffman_key != NULL) {
- /* Key and data may use the same table, only close it once. */
- if (btree->huffman_value == btree->huffman_key)
- btree->huffman_value = NULL;
-
- __wt_huffman_close(session, btree->huffman_key);
- btree->huffman_key = NULL;
- }
if (btree->huffman_value != NULL) {
__wt_huffman_close(session, btree->huffman_value);
btree->huffman_value = NULL;
diff --git a/src/third_party/wiredtiger/src/btree/bt_page.c b/src/third_party/wiredtiger/src/btree/bt_page.c
index 5a9cc9cea41..75855d8a465 100644
--- a/src/third_party/wiredtiger/src/btree/bt_page.c
+++ b/src/third_party/wiredtiger/src/btree/bt_page.c
@@ -563,10 +563,10 @@ __inmem_row_leaf(WT_SESSION_IMPL *session, WT_PAGE *page)
continue;
case WT_CELL_KEY:
/*
- * Simple keys without compression (not Huffman encoded or prefix compressed), can be
- * directly referenced on the page to avoid repeatedly unpacking their cells.
+ * Simple keys without prefix compression can be directly referenced on the page to
+ * avoid repeatedly unpacking their cells.
*/
- if (!btree->huffman_key && unpack.prefix == 0)
+ if (unpack.prefix == 0)
__wt_row_leaf_key_set(page, rip, &unpack);
else
__wt_row_leaf_key_set_cell(page, rip, unpack.cell);
diff --git a/src/third_party/wiredtiger/src/btree/bt_vrfy_dsk.c b/src/third_party/wiredtiger/src/btree/bt_vrfy_dsk.c
index d8d6b4e899d..22782c35041 100644
--- a/src/third_party/wiredtiger/src/btree/bt_vrfy_dsk.c
+++ b/src/third_party/wiredtiger/src/btree/bt_vrfy_dsk.c
@@ -452,7 +452,6 @@ __verify_dsk_row_leaf(
WT_DECL_RET;
WT_ITEM *last;
enum { FIRST, WAS_KEY, WAS_VALUE } last_cell_type;
- void *huffman;
size_t prefix;
uint32_t cell_num, cell_type, i, key_cnt, last_cell_num;
uint8_t *end;
@@ -460,7 +459,6 @@ __verify_dsk_row_leaf(
btree = S2BT(session);
bm = btree->bm;
unpack = &_unpack;
- huffman = dsk->type == WT_PAGE_ROW_INT ? NULL : btree->huffman_key;
WT_ERR(__wt_scr_alloc(session, 0, &current));
WT_ERR(__wt_scr_alloc(session, 0, &last_pfx));
@@ -575,37 +573,15 @@ __verify_dsk_row_leaf(
cell_num, tag, prefix, last->size);
/*
- * If Huffman decoding required, unpack the cell to build the key, then resolve the prefix.
- * Else, we can do it faster internally because we don't have to shuffle memory around as
- * much.
+ * Get the cell's data/length and make sure we have enough buffer space.
*/
- if (huffman != NULL) {
- WT_ERR(__wt_dsk_cell_data_ref(session, dsk->type, unpack, current));
+ WT_ERR(__wt_buf_init(session, current, prefix + unpack->size));
- /*
- * If there's a prefix, make sure there's enough buffer space, then shift the decoded
- * data past the prefix and copy the prefix into place. Take care with the pointers:
- * current->data may be pointing inside the buffer.
- */
- if (prefix != 0) {
- WT_ERR(__wt_buf_grow(session, current, prefix + current->size));
- memmove((uint8_t *)current->mem + prefix, current->data, current->size);
- memcpy(current->mem, last->data, prefix);
- current->data = current->mem;
- current->size += prefix;
- }
- } else {
- /*
- * Get the cell's data/length and make sure we have enough buffer space.
- */
- WT_ERR(__wt_buf_init(session, current, prefix + unpack->size));
-
- /* Copy the prefix then the data into place. */
- if (prefix != 0)
- memcpy(current->mem, last->data, prefix);
- memcpy((uint8_t *)current->mem + prefix, unpack->data, unpack->size);
- current->size = prefix + unpack->size;
- }
+ /* Copy the prefix then the data into place. */
+ if (prefix != 0)
+ memcpy(current->mem, last->data, prefix);
+ memcpy((uint8_t *)current->mem + prefix, unpack->data, unpack->size);
+ current->size = prefix + unpack->size;
key_compare:
/*
diff --git a/src/third_party/wiredtiger/src/btree/row_key.c b/src/third_party/wiredtiger/src/btree/row_key.c
index b9113df8f44..132059c28cb 100644
--- a/src/third_party/wiredtiger/src/btree/row_key.c
+++ b/src/third_party/wiredtiger/src/btree/row_key.c
@@ -345,20 +345,8 @@ switch_and_jump:
}
}
if (direction == FORWARD) {
- /*
- * Get a reference to the current key's bytes. Usually we want bytes from the page,
- * fast-path that case.
- */
- if (btree->huffman_key == NULL) {
- p = unpack->data;
- size = unpack->size;
- } else {
- if (tmp == NULL)
- WT_ERR(__wt_scr_alloc(session, 0, &tmp));
- WT_ERR(__wt_dsk_cell_data_ref(session, WT_PAGE_ROW_LEAF, unpack, tmp));
- p = tmp->data;
- size = tmp->size;
- }
+ p = unpack->data;
+ size = unpack->size;
/*
* Grow the buffer as necessary as well as ensure data has been copied into local buffer
diff --git a/src/third_party/wiredtiger/src/config/config_def.c b/src/third_party/wiredtiger/src/config/config_def.c
index edb45b25472..7ec7b27170c 100644
--- a/src/third_party/wiredtiger/src/config/config_def.c
+++ b/src/third_party/wiredtiger/src/config/config_def.c
@@ -251,7 +251,7 @@ static const WT_CONFIG_CHECK confchk_WT_SESSION_create[] = {
{"encryption", "category", NULL, NULL, confchk_WT_SESSION_create_encryption_subconfigs, 2},
{"exclusive", "boolean", NULL, NULL, NULL, 0}, {"extractor", "string", NULL, NULL, NULL, 0},
{"format", "string", NULL, "choices=[\"btree\"]", NULL, 0},
- {"huffman_key", "string", NULL, NULL, NULL, 0}, {"huffman_value", "string", NULL, NULL, NULL, 0},
+ {"huffman_value", "string", NULL, NULL, NULL, 0},
{"ignore_in_memory_cache_size", "boolean", NULL, NULL, NULL, 0},
{"immutable", "boolean", NULL, NULL, NULL, 0},
{"import", "category", NULL, NULL, confchk_WT_SESSION_create_import_subconfigs, 3},
@@ -380,7 +380,7 @@ static const WT_CONFIG_CHECK confchk_file_config[] = {
{"dictionary", "int", NULL, "min=0", NULL, 0},
{"encryption", "category", NULL, NULL, confchk_WT_SESSION_create_encryption_subconfigs, 2},
{"format", "string", NULL, "choices=[\"btree\"]", NULL, 0},
- {"huffman_key", "string", NULL, NULL, NULL, 0}, {"huffman_value", "string", NULL, NULL, NULL, 0},
+ {"huffman_value", "string", NULL, NULL, NULL, 0},
{"ignore_in_memory_cache_size", "boolean", NULL, NULL, NULL, 0},
{"internal_item_max", "int", NULL, "min=0", NULL, 0},
{"internal_key_max", "int", NULL, "min=0", NULL, 0},
@@ -419,8 +419,7 @@ static const WT_CONFIG_CHECK confchk_file_meta[] = {
{"dictionary", "int", NULL, "min=0", NULL, 0},
{"encryption", "category", NULL, NULL, confchk_WT_SESSION_create_encryption_subconfigs, 2},
{"format", "string", NULL, "choices=[\"btree\"]", NULL, 0},
- {"huffman_key", "string", NULL, NULL, NULL, 0}, {"huffman_value", "string", NULL, NULL, NULL, 0},
- {"id", "string", NULL, NULL, NULL, 0},
+ {"huffman_value", "string", NULL, NULL, NULL, 0}, {"id", "string", NULL, NULL, NULL, 0},
{"ignore_in_memory_cache_size", "boolean", NULL, NULL, NULL, 0},
{"internal_item_max", "int", NULL, "min=0", NULL, 0},
{"internal_key_max", "int", NULL, "min=0", NULL, 0},
@@ -466,7 +465,7 @@ static const WT_CONFIG_CHECK confchk_lsm_meta[] = {
{"columns", "list", NULL, NULL, NULL, 0}, {"dictionary", "int", NULL, "min=0", NULL, 0},
{"encryption", "category", NULL, NULL, confchk_WT_SESSION_create_encryption_subconfigs, 2},
{"format", "string", NULL, "choices=[\"btree\"]", NULL, 0},
- {"huffman_key", "string", NULL, NULL, NULL, 0}, {"huffman_value", "string", NULL, NULL, NULL, 0},
+ {"huffman_value", "string", NULL, NULL, NULL, 0},
{"ignore_in_memory_cache_size", "boolean", NULL, NULL, NULL, 0},
{"internal_item_max", "int", NULL, "min=0", NULL, 0},
{"internal_key_max", "int", NULL, "min=0", NULL, 0},
@@ -897,7 +896,7 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"read_timestamp=none),block_allocation=best,block_compressor=,"
"cache_resident=false,checksum=uncompressed,colgroups=,collator=,"
"columns=,dictionary=0,encryption=(keyid=,name=),exclusive=false,"
- "extractor=,format=btree,huffman_key=,huffman_value=,"
+ "extractor=,format=btree,huffman_value=,"
"ignore_in_memory_cache_size=false,immutable=false,"
"import=(enabled=false,file_metadata=,repair=false),"
"internal_item_max=0,internal_key_max=0,"
@@ -912,7 +911,7 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"prefix_compression=false,prefix_compression_min=4,source=,"
"split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,"
"type=file,value_format=u",
- confchk_WT_SESSION_create, 45},
+ confchk_WT_SESSION_create, 44},
{"WT_SESSION.drop",
"checkpoint_wait=true,force=false,lock_wait=true,"
"remove_files=true",
@@ -961,8 +960,8 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"assert=(commit_timestamp=none,durable_timestamp=none,"
"read_timestamp=none),block_allocation=best,block_compressor=,"
"cache_resident=false,checksum=uncompressed,collator=,columns=,"
- "dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key="
- ",huffman_value=,ignore_in_memory_cache_size=false,"
+ "dictionary=0,encryption=(keyid=,name=),format=btree,"
+ "huffman_value=,ignore_in_memory_cache_size=false,"
"internal_item_max=0,internal_key_max=0,"
"internal_key_truncate=true,internal_page_max=4KB,key_format=u,"
"key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,"
@@ -971,15 +970,15 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"prefix_compression=false,prefix_compression_min=4,"
"split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,"
"value_format=u",
- confchk_file_config, 37},
+ confchk_file_config, 36},
{"file.meta",
"access_pattern_hint=none,allocation_size=4KB,app_metadata=,"
"assert=(commit_timestamp=none,durable_timestamp=none,"
"read_timestamp=none),block_allocation=best,block_compressor=,"
"cache_resident=false,checkpoint=,checkpoint_backup_info=,"
"checkpoint_lsn=,checksum=uncompressed,collator=,columns=,"
- "dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key="
- ",huffman_value=,id=,ignore_in_memory_cache_size=false,"
+ "dictionary=0,encryption=(keyid=,name=),format=btree,"
+ "huffman_value=,id=,ignore_in_memory_cache_size=false,"
"internal_item_max=0,internal_key_max=0,"
"internal_key_truncate=true,internal_page_max=4KB,key_format=u,"
"key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,"
@@ -988,7 +987,7 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"prefix_compression=false,prefix_compression_min=4,"
"split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,"
"value_format=u,version=(major=0,minor=0)",
- confchk_file_meta, 42},
+ confchk_file_meta, 41},
{"index.meta",
"app_metadata=,collator=,columns=,extractor=,immutable=false,"
"index_key_columns=,key_format=u,source=,type=file,value_format=u",
@@ -999,7 +998,7 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"read_timestamp=none),block_allocation=best,block_compressor=,"
"cache_resident=false,checksum=uncompressed,chunks=,collator=,"
"columns=,dictionary=0,encryption=(keyid=,name=),format=btree,"
- "huffman_key=,huffman_value=,ignore_in_memory_cache_size=false,"
+ "huffman_value=,ignore_in_memory_cache_size=false,"
"internal_item_max=0,internal_key_max=0,"
"internal_key_truncate=true,internal_page_max=4KB,key_format=u,"
"key_gap=10,last=,leaf_item_max=0,leaf_key_max=0,"
@@ -1013,7 +1012,7 @@ static const WT_CONFIG_ENTRY config_entries[] = {{"WT_CONNECTION.add_collator",
"prefix_compression=false,prefix_compression_min=4,"
"split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,"
"value_format=u",
- confchk_lsm_meta, 41},
+ confchk_lsm_meta, 40},
{"table.meta",
"app_metadata=,colgroups=,collator=,columns=,key_format=u,"
"value_format=u",
diff --git a/src/third_party/wiredtiger/src/cursor/cur_ds.c b/src/third_party/wiredtiger/src/cursor/cur_ds.c
index 581caa37413..6bb3b3e1e73 100644
--- a/src/third_party/wiredtiger/src/cursor/cur_ds.c
+++ b/src/third_party/wiredtiger/src/cursor/cur_ds.c
@@ -9,34 +9,6 @@
#include "wt_internal.h"
/*
- * __curds_txn_enter --
- * Do transactional initialization when starting an operation.
- */
-static int
-__curds_txn_enter(WT_SESSION_IMPL *session, bool update)
-{
- /* Check if we need to start an autocommit transaction. */
- if (update)
- WT_RET(__wt_txn_autocommit_check(session));
-
- session->ncursors++; /* XXX */
- __wt_txn_cursor_op(session);
-
- return (0);
-}
-
-/*
- * __curds_txn_leave --
- * Do transactional cleanup when ending an operation.
- */
-static void
-__curds_txn_leave(WT_SESSION_IMPL *session)
-{
- if (--session->ncursors == 0) /* XXX */
- __wt_txn_read_last(session);
-}
-
-/*
* __curds_key_set --
* Set the key for the data-source.
*/
@@ -183,14 +155,10 @@ __curds_next(WT_CURSOR *cursor)
WT_STAT_CONN_INCR(session, cursor_next);
WT_STAT_DATA_INCR(session, cursor_next);
- WT_ERR(__curds_txn_enter(session, false));
-
F_CLR(cursor, WT_CURSTD_KEY_SET | WT_CURSTD_VALUE_SET);
ret = __curds_cursor_resolve(cursor, source->next(source));
err:
- __curds_txn_leave(session);
-
API_END_RET(session, ret);
}
@@ -212,13 +180,10 @@ __curds_prev(WT_CURSOR *cursor)
WT_STAT_CONN_INCR(session, cursor_prev);
WT_STAT_DATA_INCR(session, cursor_prev);
- WT_ERR(__curds_txn_enter(session, false));
-
F_CLR(cursor, WT_CURSTD_KEY_SET | WT_CURSTD_VALUE_SET);
ret = __curds_cursor_resolve(cursor, source->prev(source));
err:
- __curds_txn_leave(session);
API_END_RET(session, ret);
}
@@ -266,14 +231,10 @@ __curds_search(WT_CURSOR *cursor)
WT_STAT_CONN_INCR(session, cursor_search);
WT_STAT_DATA_INCR(session, cursor_search);
- WT_ERR(__curds_txn_enter(session, false));
-
WT_ERR(__curds_key_set(cursor));
ret = __curds_cursor_resolve(cursor, source->search(source));
err:
- __curds_txn_leave(session);
-
API_END_RET(session, ret);
}
@@ -295,14 +256,10 @@ __curds_search_near(WT_CURSOR *cursor, int *exact)
WT_STAT_CONN_INCR(session, cursor_search_near);
WT_STAT_DATA_INCR(session, cursor_search_near);
- WT_ERR(__curds_txn_enter(session, false));
-
WT_ERR(__curds_key_set(cursor));
ret = __curds_cursor_resolve(cursor, source->search_near(source, exact));
err:
- __curds_txn_leave(session);
-
API_END_RET(session, ret);
}
@@ -321,8 +278,6 @@ __curds_insert(WT_CURSOR *cursor)
CURSOR_UPDATE_API_CALL(cursor, session, insert);
- WT_ERR(__curds_txn_enter(session, true));
-
WT_STAT_CONN_INCR(session, cursor_insert);
WT_STAT_DATA_INCR(session, cursor_insert);
WT_STAT_DATA_INCRV(session, cursor_insert_bytes, cursor->key.size + cursor->value.size);
@@ -333,8 +288,6 @@ __curds_insert(WT_CURSOR *cursor)
ret = __curds_cursor_resolve(cursor, source->insert(source));
err:
- __curds_txn_leave(session);
-
CURSOR_UPDATE_API_END(session, ret);
return (ret);
}
@@ -359,15 +312,11 @@ __curds_update(WT_CURSOR *cursor)
WT_STAT_CONN_INCRV(session, cursor_update_bytes, cursor->value.size);
WT_STAT_DATA_INCRV(session, cursor_update_bytes, cursor->value.size);
- WT_ERR(__curds_txn_enter(session, true));
-
WT_ERR(__curds_key_set(cursor));
WT_ERR(__curds_value_set(cursor));
ret = __curds_cursor_resolve(cursor, source->update(source));
err:
- __curds_txn_leave(session);
-
CURSOR_UPDATE_API_END(session, ret);
return (ret);
}
@@ -392,14 +341,10 @@ __curds_remove(WT_CURSOR *cursor)
WT_STAT_CONN_INCRV(session, cursor_remove_bytes, cursor->key.size);
WT_STAT_DATA_INCRV(session, cursor_remove_bytes, cursor->key.size);
- WT_ERR(__curds_txn_enter(session, true));
-
WT_ERR(__curds_key_set(cursor));
ret = __curds_cursor_resolve(cursor, source->remove(source));
err:
- __curds_txn_leave(session);
-
CURSOR_UPDATE_API_END(session, ret);
return (ret);
}
@@ -422,14 +367,10 @@ __curds_reserve(WT_CURSOR *cursor)
WT_STAT_CONN_INCR(session, cursor_reserve);
WT_STAT_DATA_INCR(session, cursor_reserve);
- WT_ERR(__curds_txn_enter(session, true));
-
WT_ERR(__curds_key_set(cursor));
ret = __curds_cursor_resolve(cursor, source->reserve(source));
err:
- __curds_txn_leave(session);
-
CURSOR_UPDATE_API_END(session, ret);
return (ret);
}
diff --git a/src/third_party/wiredtiger/src/docs/custom-data-sources.dox b/src/third_party/wiredtiger/src/docs/custom-data-sources.dox
index 340f25997a5..00eca5fcf38 100644
--- a/src/third_party/wiredtiger/src/docs/custom-data-sources.dox
+++ b/src/third_party/wiredtiger/src/docs/custom-data-sources.dox
@@ -233,4 +233,10 @@ responsibility of the implementation to protect any shared data. For
example, object operations such as WT_DATA_SOURCE::drop might not be
permitted while there are open cursors for the WT_DATA_SOURCE object.
+@section custom_data_source_transactions Transactions
+
+WiredTiger does not start implicit transactions to the WT_DATA_SOURCE
+methods. It is the responsibility of the custom data source implementation
+to support the transaction semantics.
+
*/
diff --git a/src/third_party/wiredtiger/src/docs/file-formats.dox b/src/third_party/wiredtiger/src/docs/file-formats.dox
index 9e66293365a..10433703835 100644
--- a/src/third_party/wiredtiger/src/docs/file-formats.dox
+++ b/src/third_party/wiredtiger/src/docs/file-formats.dox
@@ -96,13 +96,11 @@ pages to disk.
Dictionary compression is disabled by default.
- Huffman encoding reduces the size requirement of both the in-memory
-and on-disk objects by compressing individual key/value items, and can
-be separately configured either or both keys and values. The cost is
-additional CPU and memory use when searching the in-memory tree (if keys
-are encoded), and additional CPU and memory use when returning values
-from the in-memory tree and when writing pages to disk. Note the
-additional CPU cost of Huffman encoding can be high, and should be
-considered. (See @subpage_single huffman for details.)
+and on-disk objects by compressing individual value items. The cost is
+additional CPU and memory use when returning values from the in-memory
+tree and when writing pages to disk. Note the additional CPU cost of
+Huffman encoding can be high, and should be considered. (See
+@subpage_single huffman for details.)
Huffman encoding is disabled by default.
diff --git a/src/third_party/wiredtiger/src/docs/huffman.dox b/src/third_party/wiredtiger/src/docs/huffman.dox
index 41e4be5ced3..e2912394d1f 100644
--- a/src/third_party/wiredtiger/src/docs/huffman.dox
+++ b/src/third_party/wiredtiger/src/docs/huffman.dox
@@ -1,18 +1,13 @@
/*! @page huffman Huffman Encoding
-Keys in row-stores and variable-length values in either row- or
-column-stores can be compressed with Huffman encoding.
+Variable-length values in either row- or column-stores can be
+compressed with Huffman encoding.
Huffman compression is maintained in memory as well as on disk, and can
increase the amount of usable data the cache can hold as well as
decrease the size of the data on disk. The additional CPU cost of
Huffman coding can be high, and should be considered.
-To configure Huffman encoding for the key in a row-store, specify \c
-huffman_key=english, \c huffman_key=utf8<file> or \c
-huffman_key=utf16<file> in the configuration passed to \c
-WT_SESSION::create.
-
To configure Huffman encoding for a variable-length value in either a
row-store or a column-store, specify \c huffman_value=english, \c
huffman_value=utf8<file> or \c huffman_value=utf16<file> in the
diff --git a/src/third_party/wiredtiger/src/docs/tune-page-size-and-comp.dox b/src/third_party/wiredtiger/src/docs/tune-page-size-and-comp.dox
index 9659d389bf0..b39a9de2594 100644
--- a/src/third_party/wiredtiger/src/docs/tune-page-size-and-comp.dox
+++ b/src/third_party/wiredtiger/src/docs/tune-page-size-and-comp.dox
@@ -356,20 +356,19 @@ such a configuration string is as follows:
- Huffman
\n
-Reduces the size requirement by compressing individual key/value items, and
-can be separately configured either or both keys and values. The additional
-CPU cost of Huffman encoding can be high, and should be considered. (See @ref
-huffman for details.)
+Reduces the size requirement by compressing individual value items, and
+can be configured for values. The additional CPU cost of Huffman encoding
+can be high, and should be considered. (See @ref huffman for details.)
\n\n
Huffman configuration:
\n
-Specified using the \c huffman_key and \c huffman_value configuration
+Specified using the \c huffman_value configuration
options to WT_SESSION::create. These options can take values of "english"
(to use a built-in English language frequency table), "utf8<file>" or
"utf16<file>" (to use a custom UTF-8 or UTF-16 symbol frequency table file).
An example of such a configuration string is as follows:
<pre>
-"key_format=S,value_format=S,huffman_key=english,huffman_value=english"
+"key_format=S,value_format=S,huffman_value=english"
</pre>
- Block Compression
diff --git a/src/third_party/wiredtiger/src/include/btmem.h b/src/third_party/wiredtiger/src/include/btmem.h
index ca789921b1d..b066bcde18f 100644
--- a/src/third_party/wiredtiger/src/include/btmem.h
+++ b/src/third_party/wiredtiger/src/include/btmem.h
@@ -1015,11 +1015,10 @@ struct __wt_col {
/*
* WT_IKEY --
- * Instantiated key: row-store keys are usually prefix compressed and
- * sometimes Huffman encoded or overflow objects. Normally, a row-store
- * page in-memory key points to the on-page WT_CELL, but in some cases,
- * we instantiate the key in memory, in which case the row-store page
- * in-memory key points to a WT_IKEY structure.
+ * Instantiated key: row-store keys are usually prefix compressed or overflow objects.
+ * Normally, a row-store page in-memory key points to the on-page WT_CELL, but in some
+ * cases, we instantiate the key in memory, in which case the row-store page in-memory
+ * key points to a WT_IKEY structure.
*/
struct __wt_ikey {
uint32_t size; /* Key length */
diff --git a/src/third_party/wiredtiger/src/include/btree.h b/src/third_party/wiredtiger/src/include/btree.h
index 238cb7e6fd1..19eea8088ae 100644
--- a/src/third_party/wiredtiger/src/include/btree.h
+++ b/src/third_party/wiredtiger/src/include/btree.h
@@ -112,7 +112,6 @@ struct __wt_btree {
/* AUTOMATIC FLAG VALUE GENERATION STOP */
uint32_t assert_flags; /* Debugging assertion information */
- void *huffman_key; /* Key huffman encoding */
void *huffman_value; /* Value huffman encoding */
enum {
diff --git a/src/third_party/wiredtiger/src/include/btree_inline.h b/src/third_party/wiredtiger/src/include/btree_inline.h
index 9a18ae24d7b..dfa6adf21af 100644
--- a/src/third_party/wiredtiger/src/include/btree_inline.h
+++ b/src/third_party/wiredtiger/src/include/btree_inline.h
@@ -887,10 +887,9 @@ __wt_row_leaf_key_info(
* A row-store leaf page key is in one of two places: if instantiated,
* the WT_ROW pointer references a WT_IKEY structure, otherwise, it
* references an on-page offset. Further, on-page keys are in one of
- * two states: if the key is a simple key (not an overflow key, prefix
- * compressed or Huffman encoded, all of which are likely), the key's
- * offset/size is encoded in the pointer. Otherwise, the offset is to
- * the key's on-page cell.
+ * two states: if the key is a simple key (not an overflow key or prefix
+ * compressed, all of which are likely), the key's offset/size is encoded
+ * in the pointer. Otherwise, the offset is to the key's on-page cell.
*
* Now the magic: allocated memory must be aligned to store any standard
* type, and we expect some standard type to require at least quad-byte
diff --git a/src/third_party/wiredtiger/src/include/cell_inline.h b/src/third_party/wiredtiger/src/include/cell_inline.h
index 37a8f31305e..b065b72c472 100644
--- a/src/third_party/wiredtiger/src/include/cell_inline.h
+++ b/src/third_party/wiredtiger/src/include/cell_inline.h
@@ -1081,6 +1081,7 @@ __cell_data_ref(WT_SESSION_IMPL *session, WT_PAGE *page, int page_type,
void *huffman;
btree = S2BT(session);
+ huffman = NULL;
/* Reference the cell's data, optionally decode it. */
switch (unpack->type) {
@@ -1089,8 +1090,6 @@ __cell_data_ref(WT_SESSION_IMPL *session, WT_PAGE *page, int page_type,
store->size = unpack->size;
if (page_type == WT_PAGE_ROW_INT)
return (0);
-
- huffman = btree->huffman_key;
break;
case WT_CELL_VALUE:
store->data = unpack->data;
@@ -1101,8 +1100,6 @@ __cell_data_ref(WT_SESSION_IMPL *session, WT_PAGE *page, int page_type,
WT_RET(__wt_ovfl_read(session, page, unpack, store, &decoded));
if (page_type == WT_PAGE_ROW_INT || decoded)
return (0);
-
- huffman = btree->huffman_key;
break;
case WT_CELL_VALUE_OVFL:
WT_RET(__wt_ovfl_read(session, page, unpack, store, &decoded));
diff --git a/src/third_party/wiredtiger/src/include/cursor.h b/src/third_party/wiredtiger/src/include/cursor.h
index 8cd3e211f13..5460978d09f 100644
--- a/src/third_party/wiredtiger/src/include/cursor.h
+++ b/src/third_party/wiredtiger/src/include/cursor.h
@@ -159,14 +159,14 @@ struct __wt_cursor_btree {
WT_COL *cip_saved; /* Last iteration reference */
/*
- * We don't instantiate prefix-compressed keys on pages where there's no Huffman encoding
- * because we don't want to waste memory if only moving a cursor through the page, and it's
- * faster to build keys while moving through the page than to roll-forward from a previously
- * instantiated key (we don't instantiate all of the keys, just the ones at binary search
- * points). We can't use the application's WT_CURSOR key field as a copy of the last-returned
- * key because it may have been altered by the API layer, for example, dump cursors. Instead we
- * store the last-returned key in a temporary buffer. The rip_saved field is used to determine
- * if the key in the temporary buffer has the prefix needed for building the current key.
+ * We don't instantiate prefix-compressed keys on pages because we don't want to waste memory if
+ * only moving a cursor through the page, and it's faster to build keys while moving through the
+ * page than to roll-forward from a previously instantiated key (we don't instantiate all of the
+ * keys, just the ones at binary search points). We can't use the application's WT_CURSOR key
+ * field as a copy of the last-returned key because it may have been altered by the API layer,
+ * for example, dump cursors. Instead we store the last-returned key in a temporary buffer. The
+ * rip_saved field is used to determine if the key in the temporary buffer has the prefix needed
+ * for building the current key.
*/
WT_ROW *rip_saved; /* Last-returned key reference */
diff --git a/src/third_party/wiredtiger/src/include/cursor_inline.h b/src/third_party/wiredtiger/src/include/cursor_inline.h
index ad2ffcc6538..7675b495b44 100644
--- a/src/third_party/wiredtiger/src/include/cursor_inline.h
+++ b/src/third_party/wiredtiger/src/include/cursor_inline.h
@@ -423,7 +423,6 @@ static inline int
__cursor_row_slot_key_return(
WT_CURSOR_BTREE *cbt, WT_ROW *rip, WT_CELL_UNPACK_KV *kpack, bool *kpack_used)
{
- WT_BTREE *btree;
WT_CELL *cell;
WT_ITEM *kb;
WT_PAGE *page;
@@ -433,7 +432,6 @@ __cursor_row_slot_key_return(
*kpack_used = false;
session = CUR2S(cbt);
- btree = S2BT(session);
page = cbt->ref->page;
kb = &cbt->iface.key;
@@ -453,10 +451,6 @@ __cursor_row_slot_key_return(
if (__wt_row_leaf_key_info(page, copy, NULL, &cell, &kb->data, &kb->size))
return (0);
- /* Huffman encoded keys are a slow path in all cases. */
- if (btree->huffman_key != NULL)
- goto slow;
-
/*
* Unpack the cell and deal with overflow and prefix-compressed keys. Inline building simple
* prefix-compressed keys from a previous key, otherwise build from scratch.
@@ -487,7 +481,6 @@ __cursor_row_slot_key_return(
* Call __wt_row_leaf_key_work instead of __wt_row_leaf_key: we already did
* __wt_row_leaf_key's fast-path checks inline.
*/
-slow:
WT_RET(__wt_row_leaf_key_work(session, page, rip, cbt->row_key, false));
}
kb->data = cbt->row_key->data;
diff --git a/src/third_party/wiredtiger/src/include/wiredtiger.in b/src/third_party/wiredtiger/src/include/wiredtiger.in
index 846bc11d603..f5568a8b7e1 100644
--- a/src/third_party/wiredtiger/src/include/wiredtiger.in
+++ b/src/third_party/wiredtiger/src/include/wiredtiger.in
@@ -1079,9 +1079,6 @@ struct __wt_session {
* \c none.}
* @config{format, the file format., a string\, chosen from the following options: \c
* "btree"; default \c btree.}
- * @config{huffman_key, configure Huffman encoding for keys. Permitted values are \c
- * "none"\, \c "english"\, \c "utf8<file>" or \c "utf16<file>". See @ref huffman for more
- * information., a string; default \c none.}
* @config{huffman_value, configure Huffman encoding for values. Permitted values are \c
* "none"\, \c "english"\, \c "utf8<file>" or \c "utf16<file>". See @ref huffman for more
* information., a string; default \c none.}
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_row.c b/src/third_party/wiredtiger/src/reconcile/rec_row.c
index 05807ee3b69..9f6c0449059 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_row.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_row.c
@@ -156,11 +156,6 @@ __rec_cell_build_leaf_key(
WT_RET(__wt_buf_set(session, &key->buf, (uint8_t *)data + pfx, size - pfx));
}
- /* Optionally compress the key using the Huffman engine. */
- if (btree->huffman_key != NULL)
- WT_RET(__wt_huffman_encode(
- session, btree->huffman_key, key->buf.data, (uint32_t)key->buf.size, &key->buf));
-
/* Create an overflow object if the data won't fit. */
if (key->buf.size > btree->maxleafkey) {
/*
@@ -972,8 +967,7 @@ __wt_rec_row_leaf(
kpack = &_kpack;
__wt_cell_unpack_kv(session, page->dsk, cell, kpack);
- if (btree->huffman_key == NULL && kpack->type == WT_CELL_KEY &&
- tmpkey->size >= kpack->prefix && tmpkey->size != 0) {
+ if (kpack->type == WT_CELL_KEY && tmpkey->size >= kpack->prefix && tmpkey->size != 0) {
/*
* Grow the buffer as necessary, ensuring data data has been copied into local
* buffer space, then append the suffix to the prefix already in the buffer.
diff --git a/src/third_party/wiredtiger/test/evergreen.yml b/src/third_party/wiredtiger/test/evergreen.yml
index cf65f3efb1d..1827a2aec58 100755
--- a/src/third_party/wiredtiger/test/evergreen.yml
+++ b/src/third_party/wiredtiger/test/evergreen.yml
@@ -1932,7 +1932,7 @@ tasks:
extra_args: leak_memory=0 mmap=1 file_type=row checkpoints=0 in_memory=1 reverse=1 truncate=1
- func: "format test"
vars:
- extra_args: checkpoints=1 leak_memory=0 mmap=1 file_type=row compression=zlib huffman_key=1 huffman_value=1
+ extra_args: checkpoints=1 leak_memory=0 mmap=1 file_type=row compression=zlib huffman_value=1
# FIXME-WT-6668: temporarily disable lower isolation level test
# - func: "format test"
# vars:
diff --git a/src/third_party/wiredtiger/test/format/CONFIG.stress b/src/third_party/wiredtiger/test/format/CONFIG.stress
index 65a93e05821..e5ec1e5f754 100644
--- a/src/third_party/wiredtiger/test/format/CONFIG.stress
+++ b/src/third_party/wiredtiger/test/format/CONFIG.stress
@@ -1,5 +1,4 @@
# A reasonable configuration for stress testing.
-btree.huffman_key=0
btree.huffman_value=0
cache.minimum=20
runs.rows=1000000:5000000
diff --git a/src/third_party/wiredtiger/test/format/config.h b/src/third_party/wiredtiger/test/format/config.h
index 605ae4655fb..321dc33ddd2 100644
--- a/src/third_party/wiredtiger/test/format/config.h
+++ b/src/third_party/wiredtiger/test/format/config.h
@@ -88,9 +88,6 @@ static CONFIG c[] = {
NULL},
/* 20% */
- {"btree.huffman_key", "configure huffman encoded keys", C_BOOL, 20, 0, 0, &g.c_huffman_key, NULL},
-
- /* 20% */
{"btree.huffman_value", "configure huffman encoded values", C_BOOL, 20, 0, 0, &g.c_huffman_value,
NULL},
diff --git a/src/third_party/wiredtiger/test/format/config_compat.c b/src/third_party/wiredtiger/test/format/config_compat.c
index 69011fddfea..6bd784c1031 100644
--- a/src/third_party/wiredtiger/test/format/config_compat.c
+++ b/src/third_party/wiredtiger/test/format/config_compat.c
@@ -89,8 +89,6 @@ static const char *list[] = {
"runs.type",
"firstfit=",
"disk.firstfit",
- "huffman_key=",
- "btree.huffman_key",
"huffman_value=",
"btree.huffman_value",
"in_memory=",
diff --git a/src/third_party/wiredtiger/test/format/config_compat.sed b/src/third_party/wiredtiger/test/format/config_compat.sed
index 5b138afb355..0f43b19fc6a 100644
--- a/src/third_party/wiredtiger/test/format/config_compat.sed
+++ b/src/third_party/wiredtiger/test/format/config_compat.sed
@@ -5,7 +5,6 @@ s/^backup=/backups=/
s/^btree.bitcnt=/bitcnt=/
s/^btree.compression=/compression=/
s/^btree.dictionary=/dictionary=/
-s/^btree.huffman_key=/huffman_key=/
s/^btree.huffman_value=/huffman_value=/
s/^btree.internal_key_truncation=/internal_key_truncation=/
s/^btree.internal_page_max=/internal_page_max=/
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-5637 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-5637
index 32f0baa246b..68338d050ae 100644
--- a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-5637
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-5637
@@ -9,7 +9,6 @@ backup.incr_granularity=3973
btree.bitcnt=4
btree.compression=none
btree.dictionary=0
-btree.huffman_key=0
btree.huffman_value=0
btree.internal_key_truncation=1
btree.internal_page_max=9
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6725 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6725
index 0e9041c57f3..144d9aaadd4 100644
--- a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6725
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6725
@@ -9,7 +9,6 @@
btree.bitcnt=6
btree.compression=none
btree.dictionary=0
- btree.huffman_key=0
btree.huffman_value=0
btree.internal_key_truncation=1
btree.internal_page_max=15
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6727 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6727
index 554d86c6c13..62b3f7bba5f 100644
--- a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6727
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-6727
@@ -9,7 +9,6 @@ backup.incr_granularity=16
btree.bitcnt=7
btree.compression=snappy
btree.dictionary=0
-btree.huffman_key=0
btree.huffman_value=0
btree.internal_key_truncation=1
btree.internal_page_max=12
diff --git a/src/third_party/wiredtiger/test/format/format.h b/src/third_party/wiredtiger/test/format/format.h
index 05645d4c37a..ca4998a210e 100644
--- a/src/third_party/wiredtiger/test/format/format.h
+++ b/src/third_party/wiredtiger/test/format/format.h
@@ -170,7 +170,6 @@ typedef struct {
char *c_file_type;
uint32_t c_firstfit;
uint32_t c_hs_cursor;
- uint32_t c_huffman_key;
uint32_t c_huffman_value;
uint32_t c_in_memory;
uint32_t c_independent_thread_rng;
diff --git a/src/third_party/wiredtiger/test/format/format.sh b/src/third_party/wiredtiger/test/format/format.sh
index 5cffe3a2274..8392d4a18ce 100755
--- a/src/third_party/wiredtiger/test/format/format.sh
+++ b/src/third_party/wiredtiger/test/format/format.sh
@@ -49,9 +49,9 @@ smoke_list=(
# "$smoke_base_1 file_type=var"
# Huffman key/value encoding.
- "$smoke_base_1 file_type=row huffman_key=1 huffman_value=1"
+ "$smoke_base_1 file_type=row huffman_value=1"
# Temporarily disabled
- # "$smoke_base_1 file_type=var huffman_key=1 huffman_value=1"
+ # "$smoke_base_1 file_type=var huffman_value=1"
# LSM
# Temporarily disabled
diff --git a/src/third_party/wiredtiger/test/format/wts.c b/src/third_party/wiredtiger/test/format/wts.c
index a3295d16f88..d017d28ff38 100644
--- a/src/third_party/wiredtiger/test/format/wts.c
+++ b/src/third_party/wiredtiger/test/format/wts.c
@@ -317,8 +317,6 @@ create_object(WT_CONNECTION *conn)
CONFIG_APPEND(p, ",value_format=%" PRIu32 "t", g.c_bitcnt);
break;
case ROW:
- if (g.c_huffman_key)
- CONFIG_APPEND(p, ",huffman_key=english");
if (g.c_prefix_compression)
CONFIG_APPEND(p, ",prefix_compression_min=%" PRIu32, g.c_prefix_compression_min);
else
diff --git a/src/third_party/wiredtiger/test/suite/test_base02.py b/src/third_party/wiredtiger/test/suite/test_base02.py
index 58685a3196a..7f328f02432 100644
--- a/src/third_party/wiredtiger/test/suite/test_base02.py
+++ b/src/third_party/wiredtiger/test/suite/test_base02.py
@@ -73,7 +73,7 @@ class test_base02(wttest.WiredTigerTestCase):
]
conf_encoding = [
None,
- 'huffman_key=,huffman_value=english',
+ 'huffman_value=english',
]
for size in conf_confsize:
for col in conf_col:
diff --git a/src/third_party/wiredtiger/test/suite/test_base05.py b/src/third_party/wiredtiger/test/suite/test_base05.py
index 8e63715838c..fcdebb90031 100755
--- a/src/third_party/wiredtiger/test/suite/test_base05.py
+++ b/src/third_party/wiredtiger/test/suite/test_base05.py
@@ -42,9 +42,7 @@ class test_base05(wttest.WiredTigerTestCase):
nentries = 1000
scenarios = make_scenarios([
('no_huffman', dict(extraconfig='')),
- ('huffman_key', dict(extraconfig='huffman_key="english"')),
('huffman_val', dict(extraconfig='huffman_value="english"')),
- ('huffman_keyval', dict(extraconfig='huffman_key="english",huffman_value="english"'))
])
def config_string(self):
diff --git a/src/third_party/wiredtiger/test/suite/test_huffman01.py b/src/third_party/wiredtiger/test/suite/test_huffman01.py
index 17683256355..abd44079371 100644
--- a/src/third_party/wiredtiger/test/suite/test_huffman01.py
+++ b/src/third_party/wiredtiger/test/suite/test_huffman01.py
@@ -40,28 +40,16 @@ class test_huffman01(wttest.WiredTigerTestCase, suite_subprocess):
"""
table_name = 'table:test_huff'
- huffkey = [
- ('none', dict(huffkey='huffman_key=none',kfile=None)),
- ('english', dict(huffkey='huffman_key=english',kfile=None)),
- ('utf8', dict(huffkey='huffman_key=utf8t8file',kfile='t8file')),
- ('utf16', dict(huffkey='huffman_key=utf16t16file',kfile='t16file')),
- ]
huffval = [
('none', dict(huffval=',huffman_value=none',vfile=None)),
('english', dict(huffval=',huffman_value=english',vfile=None)),
('utf8', dict(huffval=',huffman_value=utf8t8file',vfile='t8file')),
('utf16', dict(huffval=',huffman_value=utf16t16file',vfile='t16file')),
]
- scenarios = make_scenarios(huffkey, huffval)
+ scenarios = make_scenarios(huffval)
def test_huffman(self):
dir = self.conn.get_home()
- if self.kfile != None:
- # For the UTF settings write some made-up frequency information.
- f = open(dir + '/' + self.kfile, 'w')
- f.write('48 546233\n49 460946\n')
- f.write('0x4a 546233\n0x4b 460946\n')
- f.close()
# if self.vfile != None and not os.path.exists(self.vfile):
if self.vfile != None:
f = open(dir + '/' + self.vfile, 'w')
@@ -69,7 +57,7 @@ class test_huffman01(wttest.WiredTigerTestCase, suite_subprocess):
f.write('48 546233\n49 460946\n')
f.write('0x4a 546233\n0x4b 460946\n')
f.close()
- config=self.huffkey + self.huffval
+ config= self.huffval
self.session.create(self.table_name, config)
# Test Huffman encoding ranges.
@@ -82,7 +70,7 @@ class test_huffman_range(wttest.WiredTigerTestCase):
f = open(dir + '/t8file', 'w')
f.write('256 546233\n257 460946\n')
f.close()
- config="huffman_key=utf8t8file"
+ config="huffman_value=utf8t8file"
msg = '/not in range/'
self.assertRaisesWithMessage(wiredtiger.WiredTigerError,
lambda: self.session.create(self.table_name, config), msg)
@@ -93,7 +81,7 @@ class test_huffman_range(wttest.WiredTigerTestCase):
f = open(dir + '/t16file', 'w')
f.write('65536 546233\n65537 460946\n')
f.close()
- config="huffman_key=utf16t16file"
+ config="huffman_value=utf16t16file"
msg = '/not in range/'
self.assertRaisesWithMessage(wiredtiger.WiredTigerError,
lambda: self.session.create(self.table_name, config), msg)
@@ -105,7 +93,7 @@ class test_huffman_range(wttest.WiredTigerTestCase):
f = open(dir + '/t8file', 'w')
f.write('48 4294967296\n49 4294967297\n')
f.close()
- config="huffman_key=utf8t8file"
+ config="huffman_value=utf8t8file"
msg = '/not in range/'
self.assertRaisesWithMessage(wiredtiger.WiredTigerError,
lambda: self.session.create(self.table_name, config), msg)
@@ -117,7 +105,7 @@ class test_huffman_range(wttest.WiredTigerTestCase):
f.write('100 546233\n101 460946\n')
f.write('102 546233\n100 460946\n')
f.close()
- config="huffman_key=utf8t8file"
+ config="huffman_value=utf8t8file"
msg = '/duplicate symbol/'
self.assertRaisesWithMessage(wiredtiger.WiredTigerError,
lambda: self.session.create(self.table_name, config), msg)
diff --git a/src/third_party/wiredtiger/test/suite/test_huffman02.py b/src/third_party/wiredtiger/test/suite/test_huffman02.py
index a9dce6a0c3c..327386466b4 100644
--- a/src/third_party/wiredtiger/test/suite/test_huffman02.py
+++ b/src/third_party/wiredtiger/test/suite/test_huffman02.py
@@ -34,11 +34,6 @@ import wiredtiger, wttest
# test_huffman02.py
# Huffman key and value configurations test.
class test_huffman02(wttest.WiredTigerTestCase, suite_subprocess):
- huffkey = [
- ('bad', dict(keybad=1,huffkey=',huffman_key=bad')),
- ('english', dict(keybad=0,huffkey=',huffman_key=english')),
- ('none', dict(keybad=0,huffkey=',huffman_key=none')),
- ]
huffval = [
('bad', dict(valbad=1,huffval=',huffman_value=bad')),
('english', dict(valbad=0,huffval=',huffman_value=english')),
@@ -48,15 +43,15 @@ class test_huffman02(wttest.WiredTigerTestCase, suite_subprocess):
('file', dict(uri='file:huff')),
('table', dict(uri='table:huff')),
]
- scenarios = make_scenarios(type, huffkey, huffval)
+ scenarios = make_scenarios(type, huffval)
def test_huffman(self):
- if self.keybad or self.valbad:
+ if self.valbad:
msg = '/Invalid argument/'
self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda:
- self.session.create(self.uri, self.huffkey + self.huffval), msg)
+ self.session.create(self.uri, self.huffval), msg)
else:
- self.session.create(self.uri, self.huffkey + self.huffval)
+ self.session.create(self.uri, self.huffval)
if __name__ == '__main__':
wttest.run()