TO BE DONE LIST 

last modified 4/8/93

Priorities: ** high * medium - low

I. DATABASE

1. B-tree maintenacne

* impl deferred INDEX updates (in progress)
* fix bug in PREV re missing down-ptrs

- impl fix for insert-screw-case (flag in root or wherever it was)

2. I/O

* implement and test random page replacement?
- impl parent/PREV caching??

3. Concurrency

- assure enough FLC blocks for freelist splits in concurrent situation.
  (there seems to be a class of problems about concurrent free-list
   operations: a flush can fail if it causes a split and all the 
   free blocks have been used meanwhile; simultaneous flush and fills;
   and the like. One good idea: since its ok if parent-updates fail,
   we can reduce the number of blocks a split can REQUIRE to 1 leaf 
   block, rahter than logN blocks.)

4. Error handling

- finish impl of error-handling protocol??
- error log
- recode error msg calls to take less (code) space

5. Misc

* count SCAN does not need to copy value strings (since block is copied).
* Jonathan wants the ability to create a seg that need not be kept
  valid on disk -- one that can just be rebuilt if the system crashes.
  This means (a) a WCB bit in HANDLEs to control "essential" updates
  and (b) an arg to OPEN-SEG specifying SAFETY (it isnt valid to 
  specify this option on a per-handle basis)
* Jonathan wants to replace FLUSH-SOME-BUKS with a call that scans
  ENT-TAB for a flushable ENT and another call to (carefully) flush it.
- reduce number of arguments to scan using packets?
- create memory-resident segment.
- see if packets can be replaced with multiple values.

II. DESIGN/DOCUMENTATION

** spell check

- document format of data file (bloks 0,1,2)
- document type S blocks.
- write up thoughts on error-info protocol
- write up WRITE order for blk splits

- read papers (SAGIV, WANG, TRANSACTION book) to see how THEY ahndle
  the difficult problems of delayed update and their ordering, and
  the 2-block mod problem for DELETE.
