Merge pull request #8 from jonahcohen/webscalesql-5.6.19

Use BlockBasedTableOptions for configuring block cache in ha_rocksdb.
#11: Column families for RocksDB-SE

- Basic support for Column Families (writes/reads go the right column
  family).
- CFs are specified per-index in the index comment:
  INDEX (col1,col2) COMMENT 'cf_name'
Better comments and messages for the case when the new database is created
RocksDB-SE: add SHOW ENGINE ROCKSDB STATUS which shows live files.
#11: Column families for RocksDB-SE: support setting options for column families
Issue #11: Column Family support: address review feedback
As requested by Siying Dong: use total_order_seek=1 in ha_rocksdb::remove_rows
Make tests stable: SHOW ENGINE ROCKSDB STATUS output varies across runs
Make a function private, better comments
Fix a crash when starting on pre-ColumnFamily-support db.

After rocksdb::Open(), check for error first, and only then assign
column family handles.
Issue #15: SIGSEGV from reading in blob data

- convert_record_from_storage_format(buf) worked incorrectly
  when buf != table->record[0]. Length bytes were written
  to table->record[0] still.  Moved field->move_field_offset()
  call earlier to prevent that.
- Also, added comments and free() calls to free the retrieved
  blobs (the API is undocumented so we copy what InnoDB does).
Issue #17: Automatic per-index column families

Add support for INDEX idx(col1, ...) COMMENT '$per_index_cf'
Implement basic CHECK TABLE for RocksDB-SE
Issue#14: Unique constraint sometimes breaks

- Don't use RDBSE_KEYDEF::pack_buffer when packing VARCHARs into
RocksDB-SE storage format:
RDBSE_KEYDEF objects are shared among multiple threads, so
concurrent writes/reads will destroy each other's buffer data.
- Instead, allocate VARCHAR conversion buffer in ha_rocksdb object.
Merge branch 'webscalesql-5.6.19-before-rockdb-cf' of github.com:MariaDB/webscalesql-5.6 into webscalesql-5.6.19-before-rockdb-cf
Merge fix for Issue#14 and CHECK TABLE with the column-family-support code
Fix blob null handling during record retrieval

Blobs were failing during record updates when they were null.  The null
flag was set but the record still needed to be zeroed out.

SQL that used to fail:

CREATE TABLE `mytable` (
  `id` bigint(20) NOT NULL,
  `buddy_list_object` text,
  `focused_chat` int(11) unsigned NOT NULL DEFAULT '0',
  `recent_chats` text,
  `online_policy` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 COMPRESSION=ZLIB_STREAM COMMENT='recompression A-07-12';

INSERT INTO mytable (id, `recent_chats`) VALUES (1, 'foo') ON DUPLICATE KEY UPDATE `recent_chats` = VALUES(`recent_chats`);

INSERT INTO mytable (id, `recent_chats`) VALUES (1, 'foo') ON DUPLICATE KEY UPDATE `recent_chats` = VALUES(`recent_chats`);