summaryrefslogtreecommitdiff
path: root/dist/serial.py
diff options
context:
space:
mode:
authorKeith Bostic <keith.bostic@wiredtiger.com>2011-09-11 10:45:03 +0000
committerKeith Bostic <keith.bostic@wiredtiger.com>2011-09-11 10:45:03 +0000
commitbae4cd52b0b72100714104eb2895b779783dcb5a (patch)
tree4aded7043b54fc3b56851b90d04714b14b5b88a7 /dist/serial.py
parentef58f2e8314c4828893dd4e2668101b3667dc92d (diff)
downloadmongo-bae4cd52b0b72100714104eb2895b779783dcb5a.tar.gz
Replace column-store page-extension code with a new skiplist, maintained
on the last page of the tree. Replace the col_extend serialization function with a new append function Pin the last page of the tree in memory so we can access it without first acquiring a hazard reference. And, don't acquire/release hazard references on pinned pages. Don't ever try to evict a pinned page during a sync call. Change sync to quit trying after 5 attempts -- the page is busy. Always flush memory before we release a hazard referenced on a page we've just pinned, make sure the pin hits memory before the hazard reference is released. Fix bugs where the row- and column-store code was calling the row_key serialization function incorrectly, the WT_INSERT field was not allocated and should not have been freed, also the insert serialization function had a similar problem. Once this change was made, we no longer needed to track the sizes of these items. Change the row- and column-store code to not use per session buffers for on-page structures, specifically the insert list heads, use normal allocation memory instead. Change the test/format code to test insert with fixed-length files, again. Create column.i: it's a few routines from cursor.i and the search routine from col_srch.c. Remove the btree/col_extend.c file, no longer used. Remove the column_internal_extend, column_leaf_extend configuration values, no longer used. Remove the functions that let the workQ increase the count of pages in memory, no longer used. --HG-- rename : src/include/cursor.i => src/include/column.i extra : rebase_source : ee32aeda7db964def30da0920abe6aaf59ba62a1
Diffstat (limited to 'dist/serial.py')
-rw-r--r--dist/serial.py26
1 files changed, 12 insertions, 14 deletions
diff --git a/dist/serial.py b/dist/serial.py
index 7136b2f415f..c9520631fa4 100644
--- a/dist/serial.py
+++ b/dist/serial.py
@@ -17,23 +17,21 @@ class Serial:
self.args = args
msgtypes = [
+Serial('append', 'WT_WORKQ_FUNC', 1, [
+ SerialArg('WT_INSERT_HEAD **', 'inshead'),
+ SerialArg('WT_INSERT ***', 'ins_stack'),
+ SerialArg('WT_INSERT_HEAD **', 'new_inslist', 1),
+ SerialArg('WT_INSERT_HEAD *', 'new_inshead', 1),
+ SerialArg('WT_INSERT *', 'new_ins', 0),
+ SerialArg('u_int', 'skipdepth'),
+ ]),
+
Serial('cache_read', 'WT_WORKQ_READ', 0, [
SerialArg('WT_PAGE *', 'parent'),
SerialArg('WT_REF *', 'parent_ref'),
SerialArg('int', 'dsk_verify'),
]),
-Serial('col_extend', 'WT_WORKQ_FUNC', 1, [
- SerialArg('WT_PAGE *', 'page'),
- SerialArg('WT_PAGE *', 'new_intl', 1),
- SerialArg('WT_COL_REF *', 't', 1),
- SerialArg('uint32_t', 'internal_extend'),
- SerialArg('WT_PAGE *', 'new_leaf', 1),
- SerialArg('void *', 'entries', 1),
- SerialArg('uint32_t', 'leaf_extend'),
- SerialArg('uint64_t', 'recno'),
- ]),
-
Serial('evict_file', 'WT_WORKQ_EVICT', 0, [
SerialArg('int', 'close_method'),
]),
@@ -45,8 +43,8 @@ Serial('insert', 'WT_WORKQ_FUNC', 1, [
SerialArg('WT_INSERT ***', 'ins_stack'),
SerialArg('WT_INSERT_HEAD **', 'new_inslist', 1),
SerialArg('WT_INSERT_HEAD *', 'new_inshead', 1),
- SerialArg('WT_INSERT *', 'ins', 1),
- SerialArg('uint32_t', 'depth'),
+ SerialArg('WT_INSERT *', 'new_ins', 0),
+ SerialArg('u_int', 'skipdepth'),
]),
Serial('row_key', 'WT_WORKQ_FUNC', 1, [
@@ -60,7 +58,7 @@ Serial('update', 'WT_WORKQ_FUNC', 1, [
SerialArg('uint32_t', 'write_gen'),
SerialArg('WT_UPDATE **', 'srch_upd'),
SerialArg('WT_UPDATE **', 'new_upd', 1),
- SerialArg('WT_UPDATE *', 'upd', 1),
+ SerialArg('WT_UPDATE *', 'upd', 0),
]),
]