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"
64 "shortest_path_among_three";
87 const std::string& label,
const std::vector<PropertyType>& property_types,
88 const std::vector<std::string>& property_names,
89 const std::vector<std::tuple<PropertyType, std::string, size_t>>&
91 const std::vector<StorageStrategy>& strategies = {},
92 size_t max_vnum =
static_cast<size_t>(1) << 32,
93 const std::string& description =
"");
96 const std::string& dst_label,
97 const std::string& edge_label,
98 const std::vector<PropertyType>& properties,
99 const std::vector<std::string>& prop_names,
102 bool oe_mutable =
true,
bool ie_mutable =
true,
103 bool sort_on_compaction =
false,
104 const std::string& description =
"");
115 label_t label_id,
const std::vector<PropertyType>& types,
116 const std::vector<StorageStrategy>& strategies = {});
119 const std::string& label)
const;
122 const std::string& label)
const;
134 const std::string& label)
const;
138 bool exist(
const std::string& src_label,
const std::string& dst_label,
139 const std::string& edge_label)
const;
145 const std::string& src_label,
const std::string& dst_label,
146 const std::string& label)
const;
157 const std::string& dst_label,
158 const std::string& label)
const;
166 const std::string& src_label,
const std::string& dst_label,
167 const std::string& label)
const;
174 const std::string& prop)
const;
177 const std::string& prop)
const;
180 const std::string& dst_label,
181 const std::string& edge_label,
182 const std::string& prop)
const;
187 const std::string& dst_label,
188 const std::string& edge_label)
const;
194 const std::string& dst_label,
195 const std::string& label)
const;
198 const std::string& dst_label,
199 const std::string& label)
const;
202 const std::string& dst_label,
203 const std::string& label)
const;
220 const std::string& dst_label,
221 const std::string& label)
const;
224 const std::string& dst_label,
225 const std::string& label)
const;
228 const std::string& dst_label,
229 const std::string& label)
const;
239 const std::vector<std::tuple<PropertyType, std::string, size_t>>&
244 void Serialize(std::unique_ptr<grape::LocalIOAdaptor>& writer)
const;
246 void Deserialize(std::unique_ptr<grape::LocalIOAdaptor>& reader);
255 const std::unordered_map<std::string, std::pair<std::string, uint8_t>>&
259 const std::vector<std::pair<std::string, std::string>>& plugins);
277 const std::unordered_map<std::string, std::pair<PropertyType, uint8_t>>&
292 std::vector<std::vector<std::tuple<PropertyType, std::string, size_t>>>
304 std::vector<std::unordered_map<std::string, std::pair<PropertyType, uint8_t>>>
307 std::unordered_map<std::string, std::pair<std::string, uint8_t>>
319 #endif // GRAPHSCOPE_FRAGMENT_SCHEMA_H_
std::map< uint32_t, bool > oe_mutability_
Definition: schema.h:301
static constexpr const uint16_t STRING_DEFAULT_MAX_LENGTH
Definition: schema.h:49
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:61
static constexpr uint8_t BUILTIN_PLUGIN_NUM
Definition: schema.h:52
bool get_sort_on_compaction(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:347
std::string version_
Definition: schema.h:312
bool has_edge_label(const std::string &src_label, const std::string &dst_label, const std::string &edge_label) const
Definition: schema.cc:1435
static constexpr const char * MAX_LENGTH_KEY
Definition: schema.h:48
label_t get_edge_label_id(const std::string &label) const
Definition: schema.cc:362
std::map< uint32_t, bool > ie_mutability_
Definition: schema.h:302
bool outgoing_edge_mutable(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:327
std::map< uint32_t, std::string > e_descriptions_
Definition: schema.h:298
static constexpr const char * HQPS_ADHOC_READ_PLUGIN_ID_STR
Definition: schema.h:42
static Result< Schema > LoadFromYaml(const std::string &schema_config)
Definition: schema.cc:1458
static constexpr uint8_t ADHOC_READ_PLUGIN_ID
Definition: schema.h:35
EdgeStrategy get_outgoing_edge_strategy(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:307
label_t vertex_label_to_index(const std::string &label)
Definition: schema.cc:437
static constexpr const char * VARCHAR_KEY
Definition: schema.h:47
static constexpr uint8_t BUILTIN_COUNT_VERTICES_PLUGIN_ID
Definition: schema.h:54
static constexpr uint8_t BUILTIN_TVSP_PLUGIN_ID
Definition: schema.h:62
PropertyType get_edge_property(label_t src, label_t dst, label_t edge) const
Definition: schema.cc:267
EdgeStrategy get_incoming_edge_strategy(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:317
void Deserialize(std::unique_ptr< grape::LocalIOAdaptor > &reader)
Definition: schema.cc:411
static constexpr const char * PRIMITIVE_TYPE_KEY
Definition: schema.h:46
std::string description_
Definition: schema.h:311
IdIndexer< std::string, label_t > vlabel_indexer_
Definition: schema.h:287
Definition: adj_list.h:23
bool EmplacePlugins(const std::vector< std::pair< std::string, std::string >> &plugins)
Definition: schema.cc:1254
std::string get_edge_description(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:240
static Result< Schema > LoadFromYamlNode(const YAML::Node &schema_node)
Definition: schema.cc:1473
EdgeStrategy get_outgoing_edge_strategy(label_t src_label, label_t dst_label, label_t label) const
Definition: schema.h:205
static const std::vector< std::string > COMPATIBLE_VERSIONS
Definition: schema.h:73
void Serialize(std::unique_ptr< grape::LocalIOAdaptor > &writer) const
Definition: schema.cc:399
const std::vector< StorageStrategy > & get_vertex_storage_strategies(const std::string &label) const
Definition: schema.cc:180
std::string compiler_path_
Definition: schema.h:313
void set_compiler_path(const std::string &compiler_path)
Definition: schema.cc:35
std::map< uint32_t, EdgeStrategy > oe_strategy_
Definition: schema.h:299
const std::string & get_compiler_path() const
Definition: schema.cc:39
bool vertex_has_primary_key(const std::string &label, const std::string &prop) const
Definition: schema.cc:1397
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:273
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:216
Schema()
Definition: schema.cc:32
std::string GetDescription() const
Definition: schema.cc:1374
std::vector< size_t > max_vnum_
Definition: schema.h:306
void RemovePlugin(const std::string &plugin_name)
Definition: schema.cc:1368
static constexpr const char * BUILTIN_TVSP_PLUGIN_NAME
Definition: schema.h:63
static constexpr const char * BUILTIN_COUNT_VERTICES_PLUGIN_NAME
Definition: schema.h:55
bool valid_edge_property(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:297
void SetPluginDir(const std::string &plugin_dir)
Definition: schema.cc:1366
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:308
label_t vertex_label_num() const
Definition: schema.cc:110
static constexpr uint8_t BUILTIN_PLUGIN_IDS[BUILTIN_PLUGIN_NUM]
Definition: schema.h:68
std::string GetPluginDir() const
Definition: schema.cc:1372
static constexpr uint8_t CYPHER_READ_PLUGIN_ID
Definition: schema.h:39
label_t edge_label_num() const
Definition: schema.cc:114
static constexpr uint8_t BUILTIN_PAGERANK_PLUGIN_ID
Definition: schema.h:57
void SetVersion(const std::string &version)
Definition: schema.cc:1380
std::map< uint32_t, std::vector< std::string > > eprop_names_
Definition: schema.h:297
void set_vertex_properties(label_t label_id, const std::vector< PropertyType > &types, const std::vector< StorageStrategy > &strategies={})
Definition: schema.cc:130
std::string get_vertex_label_name(label_t index) const
Definition: schema.cc:374
void SetDescription(const std::string &description)
Definition: schema.cc:1376
std::string GetVersion() const
Definition: schema.cc:1381
std::map< uint32_t, EdgeStrategy > ie_strategy_
Definition: schema.h:300
bool has_vertex_label(const std::string &label) const
Definition: schema.cc:1430
bool has_multi_props_edge_
Definition: schema.h:314
static constexpr uint8_t BUILTIN_K_DEGREE_NEIGHBORS_PLUGIN_ID
Definition: schema.h:59
std::map< uint32_t, std::vector< PropertyType > > eproperties_
Definition: schema.h:296
static constexpr const char * BUILTIN_PAGERANK_PLUGIN_NAME
Definition: schema.h:58
void Clear()
Definition: schema.cc:41
const std::string & get_vertex_description(const std::string &label) const
Definition: schema.cc:165
static constexpr uint8_t MAX_PLUGIN_ID
Definition: schema.h:34
label_t label_type
Definition: schema.h:78
bool Equals(const Schema &other) const
Definition: schema.cc:469
static constexpr uint8_t HQPS_ADHOC_WRITE_PLUGIN_ID
Definition: schema.h:37
std::string plugin_dir_
Definition: schema.h:310
static constexpr const char * CYPHER_READ_DEBUG_PLUGIN_ID_STR
Definition: schema.h:45
static constexpr uint8_t CYPHER_WRITE_PLUGIN_ID
Definition: schema.h:40
const std::vector< std::string > & get_vertex_property_names(const std::string &label) const
Definition: schema.cc:149
std::map< uint32_t, bool > sort_on_compactions_
Definition: schema.h:303
const std::unordered_map< std::string, std::pair< std::string, uint8_t > > & GetPlugins() const
Definition: schema.cc:1248
EdgeStrategy
Definition: types.h:24
const std::vector< PropertyType > & get_vertex_properties(const std::string &label) const
Definition: schema.cc:138
static constexpr const char * BUILTIN_PLUGIN_NAMES[BUILTIN_PLUGIN_NUM]
Definition: schema.h:65
std::vector< std::unordered_map< std::string, std::pair< PropertyType, uint8_t > > > vprop_name_to_type_and_index_
Definition: schema.h:305
static constexpr const char * BUILTIN_K_DEGREE_NEIGHBORS_PLUGIN_NAME
Definition: schema.h:60
static constexpr uint8_t CYPHER_READ_DEBUG_PLUGIN_ID
Definition: schema.h:41
static constexpr const char * ADHOC_READ_PLUGIN_ID_STR
Definition: schema.h:44
bool vertex_has_property(const std::string &label, const std::string &prop) const
Definition: schema.cc:1386
std::string get_edge_label_name(label_t index) const
Definition: schema.cc:382
bool contains_vertex_label(const std::string &label) const
Definition: schema.cc:118
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:83
uint32_t generate_edge_label(label_t src, label_t dst, label_t edge) const
Definition: schema.cc:458
size_t get_max_vnum(const std::string &label) const
Definition: schema.cc:191
std::vector< std::vector< PropertyType > > vproperties_
Definition: schema.h:289
bool exist(const std::string &src_label, const std::string &dst_label, const std::string &edge_label) const
Definition: schema.cc:201
bool contains_edge_label(const std::string &label) const
Definition: schema.cc:369
static constexpr const char * DEFAULT_SCHEMA_VERSION
Definition: schema.h:74
static const std::vector< std::string > & GetCompatibleVersions()
Definition: schema.cc:1484
uint8_t label_t
Definition: types.h:32
static bool IsBuiltinPlugin(const std::string &plugin_name)
Definition: schema.cc:23
bool incoming_edge_mutable(const std::string &src_label, const std::string &dst_label, const std::string &label) const
Definition: schema.cc:337
std::vector< std::vector< std::string > > vprop_names_
Definition: schema.h:290
EdgeStrategy get_incoming_edge_strategy(label_t src_label, label_t dst_label, label_t label) const
Definition: schema.h:212
static constexpr const char * HQPS_ADHOC_WRITE_PLUGIN_ID_STR
Definition: schema.h:43
IdIndexer< std::string, label_t > elabel_indexer_
Definition: schema.h:288
label_t edge_label_to_index(const std::string &label)
Definition: schema.cc:452
std::vector< std::vector< StorageStrategy > > vprop_storage_
Definition: schema.h:295
label_t get_vertex_label_id(const std::string &label) const
Definition: schema.cc:123
bool has_multi_props_edge() const
Definition: schema.cc:1383
std::vector< std::string > v_descriptions_
Definition: schema.h:291
const std::vector< std::tuple< PropertyType, std::string, size_t > > & get_vertex_primary_key(label_t index) const
Definition: schema.cc:391
const std::unordered_map< std::string, std::pair< PropertyType, uint8_t > > & get_vprop_name_to_type_and_index(label_t label) const
Definition: schema.cc:197
std::vector< std::vector< std::tuple< PropertyType, std::string, size_t > > > v_primary_keys_
Definition: schema.h:293
static constexpr uint8_t HQPS_ADHOC_READ_PLUGIN_ID
Definition: schema.h:36
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:1411