WL#3282: Handler cleanups 2007

Affects: Server-9.x   —   Status: Un-Assigned

List of handler cleanups that needs to be done sooner or later

- Clean up start/stop of transaction
  (The current way of doing it through external_lock() is a hack that
  has been in place way too long)

- Clean up ha_index_init/ha_index_end() usage.
  (The fact that we have a function  ha_index_or_rnd_end() is
   suspicious)

- Functions for dirty key read of row (needed for foreign keys)

- Functions for online backup handling

- Remove InnoDB specific foreign key calls.
  get_foreign_key_create_info() etc

- Commands for handle table spaces (create, drop, add tables, move tables etc)

- Remove ::dump() and net_read_dump() commands

- Remove BerkelyDB (Depricate in 5.1 and remove in 5.2 ?)

- Split the setting of "records" so that handler knows when and _exact_ 
  values should be returned (for e.g. select count(*)) and when it is 
  enough to return an approximate value for e.g. query planning

- create "shared table object". it means uint shared_table_object_size field
  in the handlerton, and that amount of bytes at the end of the TABLE_SHARE
  for storage engine to use. with a flag to know whether it's initialized
  or not (table is open or only table_share is)

- move THR_LOCK to the TABLE_SHARE, and THR_LOCK_DATE to TABLE

- create "transaction object". similar to "savepoint object" - size is
  specified in the handlerton, in st_transaction the space is allocated
  for all storage engines

- remove "statement transaction", use savepoints instead.