SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Schema.cc
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 
8 
9 
10 namespace SWC { namespace DB {
11 
12 
13 Schema::Schema(const Schema& other)
14  : SchemaPrimitives(other),
15  col_name(other.col_name), tags(other.tags) {
16 }
17 
18 
19 namespace {
21 Schema::Tags read_tags(const uint8_t** bufp, size_t* remainp) {
22  Schema::Tags tags;
23  if(uint32_t sz = Serialization::decode_vi32(bufp, remainp)) {
24  tags.reserve(sz);
25  for(;sz;--sz)
27  }
28  return tags;
29 }
30 }
31 
32 Schema::Schema(const uint8_t** bufp, size_t* remainp)
33  : SchemaPrimitives(bufp, remainp),
34  col_name(Serialization::decode_bytes_string(bufp, remainp)),
35  tags(read_tags(bufp, remainp)) {
36 }
37 
38 Schema::~Schema() noexcept { }
39 
40 uint32_t Schema::encoded_length() const noexcept {
41  uint32_t sz = SchemaPrimitives::encoded_length();
44  for(auto& tag : tags)
45  sz += Serialization::encoded_length_bytes(tag.size());
46  return sz;
47 }
48 
49 void Schema::encode(uint8_t** bufp) const {
51  Serialization::encode_bytes(bufp, col_name.c_str(), col_name.size());
53  for(auto& tag : tags)
54  Serialization::encode_bytes(bufp, tag.c_str(), tag.size());
55 }
56 
57 bool Schema::equal(const Ptr& other, bool with_rev) const noexcept {
58  return SchemaPrimitives::equal(*other.get(), with_rev) &&
59  Condition::str_eq(col_name, other->col_name) &&
60  tags == other->tags;
61 }
62 
63 void Schema::display(std::ostream& out) const {
64  out
65  << "Schema("
66  << "cid=" << std::to_string(cid)
67  << " name=\"" << col_name << "\""
68  << " tags=[";
69  for(auto it = tags.cbegin(); it != tags.cend(); ) {
70  out << '"' << *it << '"';
71  if(++it == tags.cend())
72  break;
73  out << ',';
74  }
75  out << ']'
76  << " seq=" << Types::to_string(col_seq)
77  << " type=" << Types::to_string(col_type)
78 
79  << " revision=" << std::to_string(revision)
80  << " compact=" << std::to_string(int(compact_percent))
81 
82  << " cell_versions=" << std::to_string(cell_versions)
83  << " cell_ttl=" << std::to_string(cell_ttl)
84 
85  << " blk_encoding=" << Core::Encoder::to_string(blk_encoding)
86  << " blk_size=" << std::to_string(blk_size)
87  << " blk_cells=" << std::to_string(blk_cells)
88  << " cs_replication=" << std::to_string(int(cs_replication))
89  << " cs_size=" << std::to_string(cs_size)
90  << " cs_max=" << std::to_string(int(cs_max))
91  << " log_rollout=" << std::to_string(int(log_rollout_ratio))
92  << " log_compact=" << std::to_string(int(log_compact_cointervaling))
93  << " log_preload=" << std::to_string(int(log_fragment_preload))
94  << ")" ;
95 }
96 
97 void Schema::print(std::ostream& out) const {
98  display(out);
99 }
100 
101 }}
SWC::DB::SchemaPrimitives::blk_cells
uint32_t blk_cells
Definition: Schema.h:166
Schema.h
SWC::DB::Schema::Schema
SWC_CAN_INLINE Schema() noexcept
Definition: Schema.h:204
SWC::DB::Schema::Ptr
std::shared_ptr< Schema > Ptr
Definition: Schema.h:185
SWC::Serialization::encoded_length_bytes
constexpr SWC_CAN_INLINE size_t encoded_length_bytes(size_t len) noexcept
Definition: Serialization.h:537
SWC::Serialization::encoded_length_vi32
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi32(uint32_t val) noexcept
Definition: Serialization.h:234
SWC::DB::Schema::encode
void encode(uint8_t **bufp) const
Definition: Schema.cc:49
SWC::DB::SchemaPrimitives::encode
SWC_CAN_INLINE void encode(uint8_t **bufp) const
Definition: Schema.h:100
SWC::DB::Types::to_string
const char *SWC_CONST_FUNC to_string(Column typ) noexcept
Definition: Column.cc:38
SWC::DB::SchemaPrimitives
Definition: Schema.h:23
SWC::DB::SchemaPrimitives::cs_size
uint32_t cs_size
Definition: Schema.h:167
SWC::DB::Schema::equal
bool SWC_PURE_FUNC equal(const Ptr &other, bool with_rev=true) const noexcept
Definition: Schema.cc:57
SWC::Serialization::encode_bytes
SWC_CAN_INLINE void encode_bytes(uint8_t **bufp, const void *data, size_t len)
Definition: Serialization.h:542
SWC::DB::Schema
Definition: Schema.h:182
SWC::Condition::str_eq
bool str_eq(const char *s1, const char *s2) noexcept SWC_ATTRIBS((SWC_ATTRIB_O3))
Definition: Comparators_basic.h:237
SWC::DB::SchemaPrimitives::log_fragment_preload
uint8_t log_fragment_preload
Definition: Schema.h:175
SWC::DB::SchemaPrimitives::log_rollout_ratio
uint8_t log_rollout_ratio
Definition: Schema.h:173
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::DB::SchemaPrimitives::revision
int64_t revision
Definition: Schema.h:162
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::DB::SchemaPrimitives::equal
SWC_CAN_INLINE bool equal(const SchemaPrimitives &other, bool with_rev=true) const noexcept
Definition: Schema.h:140
SWC::DB::SchemaPrimitives::blk_encoding
Types::Encoder blk_encoding
Definition: Schema.h:170
SWC::DB::SchemaPrimitives::cs_max
uint8_t cs_max
Definition: Schema.h:172
SWC::DB::SchemaPrimitives::cell_ttl
uint32_t cell_ttl
Definition: Schema.h:164
SWC::DB::Schema::tags
Tags tags
Definition: Schema.h:235
SWC::DB::SchemaPrimitives::col_seq
Types::KeySeq col_seq
Definition: Schema.h:168
SWC::DB::SchemaPrimitives::blk_size
uint32_t blk_size
Definition: Schema.h:165
SWC::Core::Vector< std::string >
SWC::DB::SchemaPrimitives::log_compact_cointervaling
uint8_t log_compact_cointervaling
Definition: Schema.h:174
SWC::DB::Schema::col_name
std::string col_name
Definition: Schema.h:234
SWC::Serialization::decode_bytes_string
SWC_CAN_INLINE std::string decode_bytes_string(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:558
SWC::Core::Vector::cend
constexpr SWC_CAN_INLINE const_iterator cend() const noexcept
Definition: Vector.h:232
SWC::DB::SchemaPrimitives::cs_replication
uint8_t cs_replication
Definition: Schema.h:171
SWC::Serialization::encode_vi32
constexpr SWC_CAN_INLINE void encode_vi32(uint8_t **bufp, uint32_t val)
Definition: Serialization.h:243
SWC::Core::Encoder::to_string
const char *SWC_CONST_FUNC to_string(Type typ) noexcept
Definition: Encoder.cc:31
SWC::DB::SchemaPrimitives::compact_percent
uint8_t compact_percent
Definition: Schema.h:176
SWC::DB::SchemaPrimitives::encoded_length
SWC_CAN_INLINE uint32_t encoded_length() const noexcept
Definition: Schema.h:88
SWC::DB::SchemaPrimitives::cell_versions
uint32_t cell_versions
Definition: Schema.h:163
SWC::DB::Schema::print
void print(std::ostream &out) const
Definition: Schema.cc:97
SWC::DB::SchemaPrimitives::col_type
Types::Column col_type
Definition: Schema.h:169
SWC::DB::Schema::display
void display(std::ostream &out) const
Definition: Schema.cc:63
SWC::Core::Vector::cbegin
constexpr SWC_CAN_INLINE const_iterator cbegin() const noexcept
Definition: Vector.h:216
SWC::Core::to_string
SWC_CAN_INLINE std::string to_string(const BitFieldInt< T, SZ > &v)
Definition: BitFieldInt.h:263
SWC::Core::Vector::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
SWC::Core::Vector::emplace_back
SWC_CAN_INLINE reference emplace_back(ArgsT &&... args)
Definition: Vector.h:349
SWC::DB::SchemaPrimitives::cid
cid_t cid
Definition: Schema.h:161
SWC::DB::Schema::encoded_length
uint32_t SWC_PURE_FUNC encoded_length() const noexcept
Definition: Schema.cc:40
SWC::DB::Schema::~Schema
~Schema() noexcept
Definition: Schema.cc:38
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254