aboutsummaryrefslogtreecommitdiffstats
path: root/TODO.txt
blob: 04a0aea5772b17d2fdc12be8f713b3d08894f106 (plain)
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
Missing pieces:

- fix long text index entries (for new general sort order)
  * ???
- implement foreign key index creation & relationship creation
  * MEDIUM
- implement table creation w/ complex columns
  * MEDIUM
- implement (optional) foreign key enforcement
  * MEDIUM
- implement write support for properties
  * EASY
- implement table, column, index renaming
  * EASY
- implement table, column, index deletion
  * EASY - MEDIUM
- implement more comprehensive unicode compression write support
  * EASY? (have the code, do we trust it?)
- implement createReadOnlyTemp(InputStream) (delete temp file on close)
  * EASY
- figure out how msaccess manages page/row locks
  * MEDIUM

Refactor goals:
- simplify public API (separate "internal" and "external" api)
* separate table creation objects from existing metadata objects
* remove "simple" index support?
* remove "table traversal methods" from Table?
* enable integrity by default?
* remove import/export methods from Database?
* move database open/create options to DBBuilder
* tweak how import filters work to make them more flexible?
- tweak lookup apis (specify column vs column name)
* separate classes into more packages (api,builder,util,impl)
* remove debug log blocks
* add Row interface
* change savepoint to use table number instead of name?
* don't use columnimpl for creating tables
  * clean up columnimpl/tableimpl constructors
* add updateCurrentRow(Map), add updateRow(Row)
* sort out query types
- clean up javadocs
  - enhance public api classes
  - add @usage tags to util classes
* add unit tests for Row update/delete methods, add/update *FromMap methods
* add reason to unsupop throws for indexes
* remove static methods in CursorImpl/IndexCursorImpl
* create ComplexValue.Id and keep RowId
* remove DatabaseImpl from util classes
- remove unnecessary iterator class from impl classes? (what does this mean?)
* change CodecHandler usage to handle not-inline decoding
  - pass filename to CodecHandler, enable pwd callbacks CallbackHandler
  - pass custom context to CodecHandler?
  - rework CryptCodecProvider to have custom
    javax.security.auth.callback.CallbackHandler which is only invoked if
    password is definitely required.
* rework attachment data handling
- implement page buffering in PageChannel
  * need to implement logical flushing in update code (startUpdate/finishUpdate)
* limit size of IndexPageCache?
- make non-thread-safeness more explicit
- refactor free-space handlers Table/Column?

* public api final cleanup:
  * Database

- changes
  - simple index support gone
  - foreign key constraints enforced by default
  - "main" classes became interfaces
  - advanced API functionality still remains in impl classes
  - all new instance construction via builders
  - iterable methods went away, iterable builder
  - util classes moved to util package
  - Row is now an interface