forked from cruppstahl/upscaledb
/
TODO
executable file
·193 lines (145 loc) · 6.76 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
I Am Legend:
Items are sorted by priority (highest on top).
o a pending TODO item (for the current release)
. a pending TODO item (for future releases)
x a finished TODO item
-----------------------------------------------------------------------------
x performance improvements for extkeys:
x resize the hash table
x ownership: one cache per DB, not per ENV
x when closing the DB: before freeing *ANY* page, call
extkey_cache_purge_all() and delete extkey of the DB
x when freeing the page: don't close extkeys if extkey-cache of this
db was deleted
x key_compare_pub_to_int: how can we get around the malloc in
db_prepare_...? we need two pointers and they should be owned by
the database (and NOT overwrite the keyalloc-pointers!)
-> could store pointers in btree structure
x when using DIRECT_ACCESS and the record is tiny/small (<= 8 bytes) the
flag will be ignored (see email from Lionel)
x add unittests which show the problems
x and fix them :)
x a small memory leak
==12954== 44 bytes in 1 blocks are definitely lost in loss record 1 of 6
==12954== at 0x4024F20: malloc (vg_replace_malloc.c:236)
==12954== by 0x40B44E0: alloc_impl (mem.c:38)
==12954== by 0x40B0B5F: _remote_fun_txn_begin (remote.c:663)
==12954== by 0x40A582D: ham_txn_begin (hamsterdb.c:314)
==12954== by 0x8156438: RemoteTest::txnBeginCommitTest() (remote.cpp:494)
x when inserting sequential values (i.e. db1.c) then the hinter should kick
in and (with help of histograms) do an APPEND or PREPEND
x if upper_bound or lower_bound was set: set a flag; otherwise unset it
x if this flag was set: when splitting a page, select the pivot value
in a higher (or lower) range (or is the current algorithm good enough?)
x if this flag was set: compare key with upper_bound (or lower_bound)
on insert/btree_cursor_insert and set force_append/force_prepend
if it's a hit (and immediately update the histogram)
x unittests/debugging/profiling
x when repeatedly requesting unused pages from the cache, and the calls always
fail, the hinter should also kick in and avoid these calls for a certain
timespan (i.e. only every 5th call will go to the cache)
x no, don't use the hinter; but rewrite the cache mechanism to get an
unused page
x monster.sh - errors
x --data_access_mode=HAM_DAM_SEQUENTIAL_INSERT --keysize=680 --duplicate=1 ../../testfiles/1/190.tst
x --data_access_mode=HAM_DAM_SEQUENTIAL_INSERT --keysize=680 --duplicate=1 ../../testfiles/1/194.tst
x --data_access_mode=HAM_DAM_SEQUENTIAL_INSERT --pagesize=1024 --overwrite=1 --keysize=16 ../../testfiles/1/170.tst
x --data_access_mode=HAM_DAM_SEQUENTIAL_INSERT --pagesize=1024 --overwrite=1 --keysize=16 ../../testfiles/1/ext_021.tst
x release 1.1.7
------------------------------------------------------------
o what about a HAM_RMW flag for ham_insert - it will do a read/modify/write
operation if the record already exists; but how can we propagate a callback
for this?
o empty/small/tiny records
o large records
o in-memory records
o unittests
o documentation in header file
o documentation in wiki
o release new .NET wrapper with fix from a.todorov (-> nabble)
x move to github
. add server functionality
o when compiling mongoose it shows a warning (gcc 4)
. add automatic code coverage using gconv
http://www.manpagez.com/man/1/gcov/
http://gcc.gnu.org/onlinedocs/gcc/Gcov.html
http://aleccolocco.blogspot.com/2009/08/sqlite-lesson-in-low-defect-software.html (section "Test Coverage with GCC")
o track coverage results, publish online
o gui tools: http://code.google.com/p/trucov/,
http://sourceforge.net/projects/ggcov/files/
. remove HAM_HINT_UBER_FAST_ACCESS, HAM_HINT_RANDOM_ACCESS, HAM_HINT_SEQUENTIAL
. unix daemon/windows service
o new option to set the working directory
o new option to set the username
. more server stuff
o add acceptance tests
. more server stuff
o how could we do authentication?
. support https?
. disable local client?
o need configure switch to disable the local client
-> also clean up db.h, env.h...
o add tests for --disable-remote and --disable-local to release.sh
. remove the garbage-list from the cache - it's not used
-----------------------------------------------------------------------------
o update the Python API
x move to github
. add server functionality
-----------------------------------------------------------------------------
o update the java API
x move to github
o add server functionality
=======================================================================
o how can we support the following environments
o threadx
o vxworks
o qnx
o opencl
o montavista
o nokia/intel embedded linux
. openwrt
. tron
. itron
. microitron
. android
x wince
-> and how can we automatically test them?
. pure java network client
. WinCE: create and run Unittests project
http://msexchangeteam.com/archive/2004/02/23/78930.aspx
o also, we could use mmap (which is currently disabled)
. some tests in filter.cpp are deactivated - fix them
. run profiling for duplicate tests - can things be improved?
o blob_overwrite/duplicate table handling: in some cases we can use
HAM_DIRECT_ACCESS to speed up things (at least for in-memory)
. webpage changes
http://www.purenetworks.com/
http://www.omegathemes.com/tf/smartages/#
http://eucalyptus.com/
http://www.pctools.com/de
x the header page image is too large
o frontpage: have multiple images (scrolling in background) with more
text info?
http://malsup.com/jquery/cycle/basic.html
http://www.sohtanaka.com/web-design/examples/image-slider/
http://www.slidedeck.com/
o sitemap: pulldown with jquery
o download: need download gates to track in analytics as goals
o rss feed
. evaluate if we can use bamboo for building and testing on multiple
platforms
o http://www.atlassian.com/software/bamboo/features/elastic.jsp#remote
o install server
o setup several agents (win32, win64, linux x86, linux x86_64, ...) and
run either all or only some of the tests, including valgrind!
o need tool to upgrade databases from 1.0.x to 1.1.x!
. ham_get_parameter: could return VERSION of the database
. approx. matching: need a sample
. Ger: can specify an initial file size
. merge threadsafe code
. HighLevelTxnTest::rollbackHugeBlobTest is inactive because huge blobs are
directly written to disk instead of going through the cache -> in case of
a txn_abort, these blobs are not reallocated
. win32: check Ger's solution - he can handle multiple msvc versions
. Perl wrapper
. PHP wrapper