From 38cd55e9cf9255b522812d3de73e76beeca031a2 Mon Sep 17 00:00:00 2001 From: Amnon Heiman Date: Thu, 4 Feb 2016 09:29:10 +0200 Subject: [PATCH] Adding the mutation idl This adds the mutation definition idl and add it to the compilation. Signed-off-by: Amnon Heiman --- configure.py | 1 + idl/mutation.idl.hh | 116 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 idl/mutation.idl.hh diff --git a/configure.py b/configure.py index 30594965f3..db5d43f035 100755 --- a/configure.py +++ b/configure.py @@ -505,6 +505,7 @@ idls = ['idl/gossip_digest.idl.hh', 'idl/partition_checksum.idl.hh', 'idl/replay_position.idl.hh', 'idl/truncation_record.idl.hh', + 'idl/mutation.idl.hh', ] scylla_tests_dependencies = scylla_core + api + idls + [ diff --git a/idl/mutation.idl.hh b/idl/mutation.idl.hh new file mode 100644 index 0000000000..e4febccf72 --- /dev/null +++ b/idl/mutation.idl.hh @@ -0,0 +1,116 @@ +/* + * Copyright 2016 ScyllaDB + */ + +/* + * This file is part of Scylla. + * + * Scylla is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Scylla is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Scylla. If not, see . + */ + +class tombstone stub [[writable]] { + api::timestamp_type timestamp; + gc_clock::time_point deletion_time; +}; + +class live_cell stub [[writable]] { + api::timestamp_type created_at; + bytes value; +}; + +class expiring_cell stub [[writable]] { + gc_clock::duration ttl; + gc_clock::time_point expiry; + live_cell c; +}; + +class dead_cell final stub [[writable]] { + tombstone tomb; +}; + +class collection_element stub [[writable]] { + // key's format depends on its CQL type as defined in the schema and is specified in CQL binary protocol. + bytes key; + boost::variant value; +}; + +class collection_cell stub [[writable]] { + tombstone tomb; + std::vector elements; // sorted by key +}; + +class column stub [[writable]] { + uint32_t id; + boost::variant, collection_cell> c; +}; + +class row stub [[writable]] { + std::vector columns; // sorted by id +}; + +class no_marker final stub [[writable]] {}; + +class live_marker stub [[writable]] { + api::timestamp_type created_at; +}; + +class expiring_marker stub [[writable]] { + live_marker lm; + gc_clock::duration ttl; + gc_clock::time_point expiry; +}; + +class dead_marker final stub [[writable]] { + tombstone tomb; +}; + +class clustering_key stub [[writable]] { + // bytess correspond to key components, format of values is specified in the CQL binary protocol + // and depends on the CQL column type for given component. + // prefixes allowed. + std::vector components; +}; + +class partition_key stub [[writable]] { + // bytess correspond to key components, format of values is specified in the CQL binary protocol + // and depends on the CQL column type for given component. + std::vector components; +}; + +class deletable_row stub [[writable]] { + clustering_key key; + boost::variant marker; + tombstone deleted_at; + row cells; +}; + +class range_tombstone stub [[writable]] { + clustering_key key; + tombstone tomb; +}; + +class mutation_partition stub [[writable]] { + tombstone tomb; + row static_row; + std::vector range_tombstones; // sorted by key + std::vector rows; // sorted by key + +}; + +class mutation stub [[writable]] { + utils::UUID table_id; + utils::UUID schema_version; + partition_key key; + mutation_partition partition; +};