This is the directory from which we will read the sstables.
Code to actually parse them will come later.
Signed-off-by: Glauber Costa <glommer@cloudius-systems.com>
In some cases, deserialize() can return a null object (if there were zero
input bytes).
In others, it cannot (for string or blob types).
Change the return type to optional<any> and adapt the deserialiation code
to deal with it.
Dynamic types come and go, so they need to be reference counted.
Switch data_type to using a shared_ptr<> for its implementation.
Since thread_ptr is not thread safe, the global primitive types must be
thread_local.
Cassandra allows even regular columns to be treated as a sorted map
(column name -> value), accessing it with get_slice(), so sort the column
names to support this.
Using sstring can lead to confusion with UTF8 strings.
The Java byte type is signed, so make bytes' internal type be signed as
well (even though Cassandra tries to treat it as unsigned).
While we should use int8_t, sstring is not perfectly compatible with this
yet, so add a FIXME and use char instead.
Simplistic database using std::map<> to hold rows, and boost::any to
hold values.
Supports:
- multiple key spaces
- multiple column families
- a few data types
Does not support:
- container data types
- secondary indexes
- composites
- validators