Go to the documentation of this file.
16 #ifndef GRAPHSCOPE_FRAGMENT_SCHEMA_H_
17 #define GRAPHSCOPE_FRAGMENT_SCHEMA_H_
19 #include "flex/engines/hqps_db/core/utils/hqps_utils.h"
59 const std::string& label,
const std::vector<PropertyType>& property_types,
60 const std::vector<std::string>& property_names,
61 const std::vector<std::tuple<PropertyType, std::string, size_t>>&
63 const std::vector<StorageStrategy>& strategies = {},
64 size_t max_vnum =
static_cast<size_t>(1) << 32,
65 const std::string& description =
"");
68 const std::string& dst_label,
69 const std::string& edge_label,
70 const std::vector<PropertyType>& properties,
71 const std::vector<std::string>& prop_names,
74 bool oe_mutable =
true,
bool ie_mutable =
true,
75 bool sort_on_compaction =
false,
76 const std::string& description =
"");
87 label_t label_id,
const std::vector<PropertyType>& types,
88 const std::vector<StorageStrategy>& strategies = {});
91 const std::string& label)
const;
94 const std::string& label)
const;
106 const std::string& label)
const;
110 bool exist(
const std::string& src_label,
const std::string& dst_label,
111 const std::string& edge_label)
const;
117 const std::string& src_label,
const std::string& dst_label,
118 const std::string& label)
const;
125 const std::string& dst_label,
126 const std::string& label)
const;
134 const std::string& src_label,
const std::string& dst_label,
135 const std::string& label)
const;
142 const std::string& prop)
const;
145 const std::string& prop)
const;
148 const std::string& dst_label,
149 const std::string& edge_label,
150 const std::string& prop)
const;
155 const std::string& dst_label,
156 const std::string& edge_label)
const;
162 const std::string& dst_label,
163 const std::string& label)
const;
166 const std::string& dst_label,
167 const std::string& label)
const;
170 const std::string& dst_label,
171 const std::string& label)
const;
174 const std::string& dst_label,
175 const std::string& label)
const;
178 const std::string& dst_label,
179 const std::string& label)
const;
182 const std::string& dst_label,
183 const std::string& label)
const;
193 const std::vector<std::tuple<PropertyType, std::string, size_t>>&
198 void Serialize(std::unique_ptr<grape::LocalIOAdaptor>& writer)
const;
200 void Deserialize(std::unique_ptr<grape::LocalIOAdaptor>& reader);
202 static Result<Schema>
LoadFromYaml(
const std::string& schema_config);
209 const std::unordered_map<std::string, std::pair<std::string, uint8_t>>&
213 const std::vector<std::pair<std::string, std::string>>& plugins);
243 std::vector<std::vector<std::tuple<PropertyType, std::string, size_t>>>
256 std::unordered_map<std::string, std::pair<std::string, uint8_t>>
267 #endif // GRAPHSCOPE_FRAGMENT_SCHEMA_H_
std::map< uint32_t, bool > oe_mutability_
Definition: schema.h:252
static constexpr const uint16_t STRING_DEFAULT_MAX_LENGTH
Definition: schema.h:44
void add_vertex_label(const std::string &label, const std::vector< PropertyType > &property_types, const std::vector< std::string > &property_names, const std::vector< std::tuple< PropertyType, std::string, size_t >> &primary_key, const std::vector< StorageStrategy > &strategies={}, size_t max_vnum=static_cast< size_t >(1)<< 32, const std::string &description="")
Definition: schema.cc:46
bool get_sort_on_compaction(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:323
std::string version_
Definition: schema.h:261
bool has_edge_label(const std::string &src_label, const std::string &dst_label, const std::string &edge_label) const
Definition: schema.cc:1378
static constexpr const char * MAX_LENGTH_KEY
Definition: schema.h:43
label_t get_edge_label_id(const std::string &label) const
Definition: schema.cc:338
std::map< uint32_t, bool > ie_mutability_
Definition: schema.h:253
bool outgoing_edge_mutable(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:303
std::map< uint32_t, std::string > e_descriptions_
Definition: schema.h:249
static constexpr const char * HQPS_ADHOC_READ_PLUGIN_ID_STR
Definition: schema.h:38
static Result< Schema > LoadFromYaml(const std::string &schema_config)
Definition: schema.cc:1401
static constexpr uint8_t ADHOC_READ_PLUGIN_ID
Definition: schema.h:37
EdgeStrategy get_outgoing_edge_strategy(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:283
label_t vertex_label_to_index(const std::string &label)
Definition: schema.cc:405
static constexpr const char * VARCHAR_KEY
Definition: schema.h:42
PropertyType get_edge_property(label_t src, label_t dst, label_t edge) const
Definition: schema.cc:243
EdgeStrategy get_incoming_edge_strategy(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:293
void Deserialize(std::unique_ptr< grape::LocalIOAdaptor > &reader)
Definition: schema.cc:387
static constexpr const char * PRIMITIVE_TYPE_KEY
Definition: schema.h:41
std::string description_
Definition: schema.h:260
IdIndexer< std::string, label_t > vlabel_indexer_
Definition: schema.h:238
Definition: adj_list.h:23
bool EmplacePlugins(const std::vector< std::pair< std::string, std::string >> &plugins)
Definition: schema.cc:1221
std::string get_edge_description(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:216
static Result< Schema > LoadFromYamlNode(const YAML::Node &schema_node)
Definition: schema.cc:1416
static const std::vector< std::string > COMPATIBLE_VERSIONS
Definition: schema.h:47
void Serialize(std::unique_ptr< grape::LocalIOAdaptor > &writer) const
Definition: schema.cc:375
const std::vector< StorageStrategy > & get_vertex_storage_strategies(const std::string &label) const
Definition: schema.cc:161
std::map< uint32_t, EdgeStrategy > oe_strategy_
Definition: schema.h:250
bool vertex_has_primary_key(const std::string &label, const std::string &prop) const
Definition: schema.cc:1340
static constexpr uint8_t RESERVED_PLUGIN_NUM
Definition: schema.h:33
const std::vector< std::string > & get_edge_property_names(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:249
const std::vector< PropertyType > & get_edge_properties(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:192
Schema()
Definition: schema.cc:23
std::string GetDescription() const
Definition: schema.cc:1317
std::vector< size_t > max_vnum_
Definition: schema.h:255
void RemovePlugin(const std::string &plugin_name)
Definition: schema.cc:1311
bool valid_edge_property(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:273
void SetPluginDir(const std::string &plugin_dir)
Definition: schema.cc:1309
const std::string & get_vertex_primary_key_name(label_t index) const
std::unordered_map< std::string, std::pair< std::string, uint8_t > > plugin_name_to_path_and_id_
Definition: schema.h:257
label_t vertex_label_num() const
Definition: schema.cc:91
std::string GetPluginDir() const
Definition: schema.cc:1315
label_t edge_label_num() const
Definition: schema.cc:95
void SetVersion(const std::string &version)
Definition: schema.cc:1323
std::map< uint32_t, std::vector< std::string > > eprop_names_
Definition: schema.h:248
void set_vertex_properties(label_t label_id, const std::vector< PropertyType > &types, const std::vector< StorageStrategy > &strategies={})
Definition: schema.cc:111
std::string get_vertex_label_name(label_t index) const
Definition: schema.cc:350
void SetDescription(const std::string &description)
Definition: schema.cc:1319
std::string GetVersion() const
Definition: schema.cc:1324
std::map< uint32_t, EdgeStrategy > ie_strategy_
Definition: schema.h:251
bool has_vertex_label(const std::string &label) const
Definition: schema.cc:1373
bool has_multi_props_edge_
Definition: schema.h:262
std::map< uint32_t, std::vector< PropertyType > > eproperties_
Definition: schema.h:247
void Clear()
Definition: schema.cc:26
const std::string & get_vertex_description(const std::string &label) const
Definition: schema.cc:146
static constexpr uint8_t MAX_PLUGIN_ID
Definition: schema.h:34
label_t label_type
Definition: schema.h:50
bool Equals(const Schema &other) const
Definition: schema.cc:436
static constexpr uint8_t HQPS_ADHOC_WRITE_PLUGIN_ID
Definition: schema.h:36
std::string plugin_dir_
Definition: schema.h:259
const std::vector< std::string > & get_vertex_property_names(const std::string &label) const
Definition: schema.cc:130
std::map< uint32_t, bool > sort_on_compactions_
Definition: schema.h:254
const std::unordered_map< std::string, std::pair< std::string, uint8_t > > & GetPlugins() const
Definition: schema.cc:1215
EdgeStrategy
Definition: types.h:24
const std::vector< PropertyType > & get_vertex_properties(const std::string &label) const
Definition: schema.cc:119
static constexpr const char * ADHOC_READ_PLUGIN_ID_STR
Definition: schema.h:40
bool vertex_has_property(const std::string &label, const std::string &prop) const
Definition: schema.cc:1329
std::string get_edge_label_name(label_t index) const
Definition: schema.cc:358
bool contains_vertex_label(const std::string &label) const
Definition: schema.cc:99
void add_edge_label(const std::string &src_label, const std::string &dst_label, const std::string &edge_label, const std::vector< PropertyType > &properties, const std::vector< std::string > &prop_names, EdgeStrategy oe=EdgeStrategy::kMultiple, EdgeStrategy ie=EdgeStrategy::kMultiple, bool oe_mutable=true, bool ie_mutable=true, bool sort_on_compaction=false, const std::string &description="")
Definition: schema.cc:64
uint32_t generate_edge_label(label_t src, label_t dst, label_t edge) const
Definition: schema.cc:425
size_t get_max_vnum(const std::string &label) const
Definition: schema.cc:172
std::vector< std::vector< PropertyType > > vproperties_
Definition: schema.h:240
bool exist(const std::string &src_label, const std::string &dst_label, const std::string &edge_label) const
Definition: schema.cc:177
bool contains_edge_label(const std::string &label) const
Definition: schema.cc:345
static constexpr const char * DEFAULT_SCHEMA_VERSION
Definition: schema.h:48
static const std::vector< std::string > & GetCompatibleVersions()
Definition: schema.cc:1427
uint8_t label_t
Definition: types.h:32
bool incoming_edge_mutable(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:313
std::vector< std::vector< std::string > > vprop_names_
Definition: schema.h:241
static constexpr const char * HQPS_ADHOC_WRITE_PLUGIN_ID_STR
Definition: schema.h:39
IdIndexer< std::string, label_t > elabel_indexer_
Definition: schema.h:239
label_t edge_label_to_index(const std::string &label)
Definition: schema.cc:419
std::vector< std::vector< StorageStrategy > > vprop_storage_
Definition: schema.h:246
label_t get_vertex_label_id(const std::string &label) const
Definition: schema.cc:104
bool has_multi_props_edge() const
Definition: schema.cc:1326
std::vector< std::string > v_descriptions_
Definition: schema.h:242
const std::vector< std::tuple< PropertyType, std::string, size_t > > & get_vertex_primary_key(label_t index) const
Definition: schema.cc:367
std::vector< std::vector< std::tuple< PropertyType, std::string, size_t > > > v_primary_keys_
Definition: schema.h:244
static constexpr uint8_t HQPS_ADHOC_READ_PLUGIN_ID
Definition: schema.h:35
bool edge_has_property(const std::string &src_label, const std::string &dst_label, const std::string &edge_label, const std::string &prop) const
Definition: schema.cc:1354