Flex  0.17.9
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
gs::Schema Class Reference

#include <schema.h>

Collaboration diagram for gs::Schema:
Collaboration graph
[legend]

Public Types

using label_type = label_t
 

Public Member Functions

 Schema ()
 
 ~Schema ()
 
void Clear ()
 
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="")
 
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="")
 
label_t vertex_label_num () const
 
label_t edge_label_num () const
 
bool contains_vertex_label (const std::string &label) const
 
label_t get_vertex_label_id (const std::string &label) const
 
void set_vertex_properties (label_t label_id, const std::vector< PropertyType > &types, const std::vector< StorageStrategy > &strategies={})
 
const std::vector< PropertyType > & get_vertex_properties (const std::string &label) const
 
const std::vector< std::string > & get_vertex_property_names (const std::string &label) const
 
const std::string & get_vertex_description (const std::string &label) const
 
const std::vector< PropertyType > & get_vertex_properties (label_t label) const
 
const std::vector< std::string > & get_vertex_property_names (label_t label) const
 
const std::string & get_vertex_description (label_t label) const
 
const std::vector< StorageStrategy > & get_vertex_storage_strategies (const std::string &label) const
 
size_t get_max_vnum (const std::string &label) const
 
bool exist (const std::string &src_label, const std::string &dst_label, const std::string &edge_label) const
 
bool exist (label_type src_label, label_type dst_label, label_type edge_label) const
 
const std::vector< PropertyType > & get_edge_properties (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
const std::vector< PropertyType > & get_edge_properties (label_t src_label, label_t dst_label, label_t label) const
 
std::string get_edge_description (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
std::string get_edge_description (label_t src_label, label_t dst_label, label_t label) const
 
PropertyType get_edge_property (label_t src, label_t dst, label_t edge) const
 
const std::vector< std::string > & get_edge_property_names (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
const std::vector< std::string > & get_edge_property_names (const label_t &src_label, const label_t &dst_label, const label_t &label) const
 
bool vertex_has_property (const std::string &label, const std::string &prop) const
 
bool vertex_has_primary_key (const std::string &label, const std::string &prop) const
 
bool edge_has_property (const std::string &src_label, const std::string &dst_label, const std::string &edge_label, const std::string &prop) const
 
bool has_vertex_label (const std::string &label) const
 
bool has_edge_label (const std::string &src_label, const std::string &dst_label, const std::string &edge_label) const
 
bool has_edge_label (label_t src_label, label_t dst_label, label_t edge_label) const
 
bool valid_edge_property (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
EdgeStrategy get_outgoing_edge_strategy (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
EdgeStrategy get_incoming_edge_strategy (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
bool outgoing_edge_mutable (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
bool incoming_edge_mutable (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
bool get_sort_on_compaction (const std::string &src_label, const std::string &dst_label, const std::string &label) const
 
bool contains_edge_label (const std::string &label) const
 
label_t get_edge_label_id (const std::string &label) const
 
std::string get_vertex_label_name (label_t index) const
 
std::string get_edge_label_name (label_t index) const
 
const std::vector< std::tuple< PropertyType, std::string, size_t > > & get_vertex_primary_key (label_t index) const
 
const std::string & get_vertex_primary_key_name (label_t index) const
 
void Serialize (std::unique_ptr< grape::LocalIOAdaptor > &writer) const
 
void Deserialize (std::unique_ptr< grape::LocalIOAdaptor > &reader)
 
bool Equals (const Schema &other) const
 
const std::unordered_map< std::string, std::pair< std::string, uint8_t > > & GetPlugins () const
 
bool EmplacePlugins (const std::vector< std::pair< std::string, std::string >> &plugins)
 
void SetPluginDir (const std::string &plugin_dir)
 
void RemovePlugin (const std::string &plugin_name)
 
std::string GetPluginDir () const
 
std::string GetDescription () const
 
void SetDescription (const std::string &description)
 
void SetVersion (const std::string &version)
 
std::string GetVersion () const
 
bool has_multi_props_edge () const
 

Static Public Member Functions

static bool IsBuiltinPlugin (const std::string &plugin_name)
 
static const std::vector< std::string > & GetCompatibleVersions ()
 
static Result< SchemaLoadFromYaml (const std::string &schema_config)
 
static Result< SchemaLoadFromYamlNode (const YAML::Node &schema_node)
 

Static Public Attributes

static constexpr uint8_t RESERVED_PLUGIN_NUM = 1
 
static constexpr uint8_t MAX_PLUGIN_ID = 251
 
static constexpr uint8_t ADHOC_READ_PLUGIN_ID = 253
 
static constexpr uint8_t HQPS_ADHOC_READ_PLUGIN_ID = 254
 
static constexpr uint8_t HQPS_ADHOC_WRITE_PLUGIN_ID = 255
 
static constexpr const char * HQPS_ADHOC_READ_PLUGIN_ID_STR = "\xFE"
 
static constexpr const char * HQPS_ADHOC_WRITE_PLUGIN_ID_STR = "\xFF"
 
static constexpr const char * ADHOC_READ_PLUGIN_ID_STR = "\xFD"
 
static constexpr const char * PRIMITIVE_TYPE_KEY = "primitive_type"
 
static constexpr const char * VARCHAR_KEY = "varchar"
 
static constexpr const char * MAX_LENGTH_KEY = "max_length"
 
static constexpr const uint16_t STRING_DEFAULT_MAX_LENGTH = 256
 
static constexpr uint8_t BUILTIN_PLUGIN_NUM = 1
 
static constexpr uint8_t BUILTIN_COUNT_VERTICES_PLUGIN_ID = 252
 
static constexpr const char * BUILTIN_COUNT_VERTICES_PLUGIN_NAME
 
static constexpr const char * BUILTIN_PLUGIN_NAMES [BUILTIN_PLUGIN_NUM]
 
static constexpr uint8_t BUILTIN_PLUGIN_IDS [BUILTIN_PLUGIN_NUM]
 
static const std::vector< std::string > COMPATIBLE_VERSIONS
 
static constexpr const char * DEFAULT_SCHEMA_VERSION = "v0.0"
 

Private Member Functions

label_t vertex_label_to_index (const std::string &label)
 
label_t edge_label_to_index (const std::string &label)
 
uint32_t generate_edge_label (label_t src, label_t dst, label_t edge) const
 

Private Attributes

IdIndexer< std::string, label_tvlabel_indexer_
 
IdIndexer< std::string, label_telabel_indexer_
 
std::vector< std::vector< PropertyType > > vproperties_
 
std::vector< std::vector< std::string > > vprop_names_
 
std::vector< std::string > v_descriptions_
 
std::vector< std::vector< std::tuple< PropertyType, std::string, size_t > > > v_primary_keys_
 
std::vector< std::vector< StorageStrategy > > vprop_storage_
 
std::map< uint32_t, std::vector< PropertyType > > eproperties_
 
std::map< uint32_t, std::vector< std::string > > eprop_names_
 
std::map< uint32_t, std::string > e_descriptions_
 
std::map< uint32_t, EdgeStrategyoe_strategy_
 
std::map< uint32_t, EdgeStrategyie_strategy_
 
std::map< uint32_t, bool > oe_mutability_
 
std::map< uint32_t, bool > ie_mutability_
 
std::map< uint32_t, bool > sort_on_compactions_
 
std::vector< size_t > max_vnum_
 
std::unordered_map< std::string, std::pair< std::string, uint8_t > > plugin_name_to_path_and_id_
 
std::string plugin_dir_
 
std::string description_
 
std::string version_
 
bool has_multi_props_edge_
 

Member Typedef Documentation

◆ label_type

Constructor & Destructor Documentation

◆ Schema()

gs::Schema::Schema ( )

◆ ~Schema()

gs::Schema::~Schema ( )
default

Member Function Documentation

◆ add_edge_label()

void gs::Schema::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 = "" 
)

◆ add_vertex_label()

void gs::Schema::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 = "" 
)

◆ Clear()

void gs::Schema::Clear ( )

◆ contains_edge_label()

bool gs::Schema::contains_edge_label ( const std::string &  label) const

◆ contains_vertex_label()

bool gs::Schema::contains_vertex_label ( const std::string &  label) const

◆ Deserialize()

void gs::Schema::Deserialize ( std::unique_ptr< grape::LocalIOAdaptor > &  reader)

◆ edge_has_property()

bool gs::Schema::edge_has_property ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  edge_label,
const std::string &  prop 
) const

◆ edge_label_num()

label_t gs::Schema::edge_label_num ( ) const

◆ edge_label_to_index()

label_t gs::Schema::edge_label_to_index ( const std::string &  label)
private

◆ EmplacePlugins()

bool gs::Schema::EmplacePlugins ( const std::vector< std::pair< std::string, std::string >> &  plugins)

◆ Equals()

bool gs::Schema::Equals ( const Schema other) const

◆ exist() [1/2]

bool gs::Schema::exist ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  edge_label 
) const

◆ exist() [2/2]

bool gs::Schema::exist ( label_type  src_label,
label_type  dst_label,
label_type  edge_label 
) const

◆ generate_edge_label()

uint32_t gs::Schema::generate_edge_label ( label_t  src,
label_t  dst,
label_t  edge 
) const
private

◆ get_edge_description() [1/2]

std::string gs::Schema::get_edge_description ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ get_edge_description() [2/2]

std::string gs::Schema::get_edge_description ( label_t  src_label,
label_t  dst_label,
label_t  label 
) const

◆ get_edge_label_id()

label_t gs::Schema::get_edge_label_id ( const std::string &  label) const

◆ get_edge_label_name()

std::string gs::Schema::get_edge_label_name ( label_t  index) const

◆ get_edge_properties() [1/2]

const std::vector< PropertyType > & gs::Schema::get_edge_properties ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ get_edge_properties() [2/2]

const std::vector< PropertyType > & gs::Schema::get_edge_properties ( label_t  src_label,
label_t  dst_label,
label_t  label 
) const

◆ get_edge_property()

PropertyType gs::Schema::get_edge_property ( label_t  src,
label_t  dst,
label_t  edge 
) const

◆ get_edge_property_names() [1/2]

const std::vector< std::string > & gs::Schema::get_edge_property_names ( const label_t src_label,
const label_t dst_label,
const label_t label 
) const

◆ get_edge_property_names() [2/2]

const std::vector< std::string > & gs::Schema::get_edge_property_names ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ get_incoming_edge_strategy()

EdgeStrategy gs::Schema::get_incoming_edge_strategy ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ get_max_vnum()

size_t gs::Schema::get_max_vnum ( const std::string &  label) const

◆ get_outgoing_edge_strategy()

EdgeStrategy gs::Schema::get_outgoing_edge_strategy ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ get_sort_on_compaction()

bool gs::Schema::get_sort_on_compaction ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ get_vertex_description() [1/2]

const std::string & gs::Schema::get_vertex_description ( const std::string &  label) const

◆ get_vertex_description() [2/2]

const std::string & gs::Schema::get_vertex_description ( label_t  label) const

◆ get_vertex_label_id()

label_t gs::Schema::get_vertex_label_id ( const std::string &  label) const

◆ get_vertex_label_name()

std::string gs::Schema::get_vertex_label_name ( label_t  index) const

◆ get_vertex_primary_key()

const std::vector< std::tuple< PropertyType, std::string, size_t > > & gs::Schema::get_vertex_primary_key ( label_t  index) const

◆ get_vertex_primary_key_name()

const std::string& gs::Schema::get_vertex_primary_key_name ( label_t  index) const

◆ get_vertex_properties() [1/2]

const std::vector< PropertyType > & gs::Schema::get_vertex_properties ( const std::string &  label) const

◆ get_vertex_properties() [2/2]

const std::vector< PropertyType > & gs::Schema::get_vertex_properties ( label_t  label) const

◆ get_vertex_property_names() [1/2]

const std::vector< std::string > & gs::Schema::get_vertex_property_names ( const std::string &  label) const

◆ get_vertex_property_names() [2/2]

const std::vector< std::string > & gs::Schema::get_vertex_property_names ( label_t  label) const

◆ get_vertex_storage_strategies()

const std::vector< StorageStrategy > & gs::Schema::get_vertex_storage_strategies ( const std::string &  label) const

◆ GetCompatibleVersions()

const std::vector< std::string > & gs::Schema::GetCompatibleVersions ( )
static

◆ GetDescription()

std::string gs::Schema::GetDescription ( ) const

◆ GetPluginDir()

std::string gs::Schema::GetPluginDir ( ) const

◆ GetPlugins()

const std::unordered_map< std::string, std::pair< std::string, uint8_t > > & gs::Schema::GetPlugins ( ) const

◆ GetVersion()

std::string gs::Schema::GetVersion ( ) const

◆ has_edge_label() [1/2]

bool gs::Schema::has_edge_label ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  edge_label 
) const

◆ has_edge_label() [2/2]

bool gs::Schema::has_edge_label ( label_t  src_label,
label_t  dst_label,
label_t  edge_label 
) const

◆ has_multi_props_edge()

bool gs::Schema::has_multi_props_edge ( ) const

◆ has_vertex_label()

bool gs::Schema::has_vertex_label ( const std::string &  label) const

◆ incoming_edge_mutable()

bool gs::Schema::incoming_edge_mutable ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ IsBuiltinPlugin()

bool gs::Schema::IsBuiltinPlugin ( const std::string &  plugin_name)
static

◆ LoadFromYaml()

Result< Schema > gs::Schema::LoadFromYaml ( const std::string &  schema_config)
static

◆ LoadFromYamlNode()

Result< Schema > gs::Schema::LoadFromYamlNode ( const YAML::Node &  schema_node)
static

◆ outgoing_edge_mutable()

bool gs::Schema::outgoing_edge_mutable ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ RemovePlugin()

void gs::Schema::RemovePlugin ( const std::string &  plugin_name)

◆ Serialize()

void gs::Schema::Serialize ( std::unique_ptr< grape::LocalIOAdaptor > &  writer) const

◆ set_vertex_properties()

void gs::Schema::set_vertex_properties ( label_t  label_id,
const std::vector< PropertyType > &  types,
const std::vector< StorageStrategy > &  strategies = {} 
)

◆ SetDescription()

void gs::Schema::SetDescription ( const std::string &  description)

◆ SetPluginDir()

void gs::Schema::SetPluginDir ( const std::string &  plugin_dir)

◆ SetVersion()

void gs::Schema::SetVersion ( const std::string &  version)

◆ valid_edge_property()

bool gs::Schema::valid_edge_property ( const std::string &  src_label,
const std::string &  dst_label,
const std::string &  label 
) const

◆ vertex_has_primary_key()

bool gs::Schema::vertex_has_primary_key ( const std::string &  label,
const std::string &  prop 
) const

◆ vertex_has_property()

bool gs::Schema::vertex_has_property ( const std::string &  label,
const std::string &  prop 
) const

◆ vertex_label_num()

label_t gs::Schema::vertex_label_num ( ) const

◆ vertex_label_to_index()

label_t gs::Schema::vertex_label_to_index ( const std::string &  label)
private

Member Data Documentation

◆ ADHOC_READ_PLUGIN_ID

constexpr uint8_t gs::Schema::ADHOC_READ_PLUGIN_ID = 253
staticconstexpr

◆ ADHOC_READ_PLUGIN_ID_STR

constexpr const char* gs::Schema::ADHOC_READ_PLUGIN_ID_STR = "\xFD"
staticconstexpr

◆ BUILTIN_COUNT_VERTICES_PLUGIN_ID

constexpr uint8_t gs::Schema::BUILTIN_COUNT_VERTICES_PLUGIN_ID = 252
staticconstexpr

◆ BUILTIN_COUNT_VERTICES_PLUGIN_NAME

constexpr const char* gs::Schema::BUILTIN_COUNT_VERTICES_PLUGIN_NAME
staticconstexpr
Initial value:
=
"count_vertices"

◆ BUILTIN_PLUGIN_IDS

constexpr uint8_t gs::Schema::BUILTIN_PLUGIN_IDS[BUILTIN_PLUGIN_NUM]
staticconstexpr

◆ BUILTIN_PLUGIN_NAMES

constexpr const char* gs::Schema::BUILTIN_PLUGIN_NAMES[BUILTIN_PLUGIN_NUM]
staticconstexpr

◆ BUILTIN_PLUGIN_NUM

constexpr uint8_t gs::Schema::BUILTIN_PLUGIN_NUM = 1
staticconstexpr

◆ COMPATIBLE_VERSIONS

const std::vector< std::string > gs::Schema::COMPATIBLE_VERSIONS
static
Initial value:
= {
"v0.0",
"v0.1"
}

◆ DEFAULT_SCHEMA_VERSION

constexpr const char* gs::Schema::DEFAULT_SCHEMA_VERSION = "v0.0"
staticconstexpr

◆ description_

std::string gs::Schema::description_
private

◆ e_descriptions_

std::map<uint32_t, std::string> gs::Schema::e_descriptions_
private

◆ elabel_indexer_

IdIndexer<std::string, label_t> gs::Schema::elabel_indexer_
private

◆ eprop_names_

std::map<uint32_t, std::vector<std::string> > gs::Schema::eprop_names_
private

◆ eproperties_

std::map<uint32_t, std::vector<PropertyType> > gs::Schema::eproperties_
private

◆ has_multi_props_edge_

bool gs::Schema::has_multi_props_edge_
private

◆ HQPS_ADHOC_READ_PLUGIN_ID

constexpr uint8_t gs::Schema::HQPS_ADHOC_READ_PLUGIN_ID = 254
staticconstexpr

◆ HQPS_ADHOC_READ_PLUGIN_ID_STR

constexpr const char* gs::Schema::HQPS_ADHOC_READ_PLUGIN_ID_STR = "\xFE"
staticconstexpr

◆ HQPS_ADHOC_WRITE_PLUGIN_ID

constexpr uint8_t gs::Schema::HQPS_ADHOC_WRITE_PLUGIN_ID = 255
staticconstexpr

◆ HQPS_ADHOC_WRITE_PLUGIN_ID_STR

constexpr const char* gs::Schema::HQPS_ADHOC_WRITE_PLUGIN_ID_STR = "\xFF"
staticconstexpr

◆ ie_mutability_

std::map<uint32_t, bool> gs::Schema::ie_mutability_
private

◆ ie_strategy_

std::map<uint32_t, EdgeStrategy> gs::Schema::ie_strategy_
private

◆ MAX_LENGTH_KEY

constexpr const char* gs::Schema::MAX_LENGTH_KEY = "max_length"
staticconstexpr

◆ MAX_PLUGIN_ID

constexpr uint8_t gs::Schema::MAX_PLUGIN_ID = 251
staticconstexpr

◆ max_vnum_

std::vector<size_t> gs::Schema::max_vnum_
private

◆ oe_mutability_

std::map<uint32_t, bool> gs::Schema::oe_mutability_
private

◆ oe_strategy_

std::map<uint32_t, EdgeStrategy> gs::Schema::oe_strategy_
private

◆ plugin_dir_

std::string gs::Schema::plugin_dir_
private

◆ plugin_name_to_path_and_id_

std::unordered_map<std::string, std::pair<std::string, uint8_t> > gs::Schema::plugin_name_to_path_and_id_
private

◆ PRIMITIVE_TYPE_KEY

constexpr const char* gs::Schema::PRIMITIVE_TYPE_KEY = "primitive_type"
staticconstexpr

◆ RESERVED_PLUGIN_NUM

constexpr uint8_t gs::Schema::RESERVED_PLUGIN_NUM = 1
staticconstexpr

◆ sort_on_compactions_

std::map<uint32_t, bool> gs::Schema::sort_on_compactions_
private

◆ STRING_DEFAULT_MAX_LENGTH

constexpr const uint16_t gs::Schema::STRING_DEFAULT_MAX_LENGTH = 256
staticconstexpr

◆ v_descriptions_

std::vector<std::string> gs::Schema::v_descriptions_
private

◆ v_primary_keys_

std::vector<std::vector<std::tuple<PropertyType, std::string, size_t> > > gs::Schema::v_primary_keys_
private

◆ VARCHAR_KEY

constexpr const char* gs::Schema::VARCHAR_KEY = "varchar"
staticconstexpr

◆ version_

std::string gs::Schema::version_
private

◆ vlabel_indexer_

IdIndexer<std::string, label_t> gs::Schema::vlabel_indexer_
private

◆ vprop_names_

std::vector<std::vector<std::string> > gs::Schema::vprop_names_
private

◆ vprop_storage_

std::vector<std::vector<StorageStrategy> > gs::Schema::vprop_storage_
private

◆ vproperties_

std::vector<std::vector<PropertyType> > gs::Schema::vproperties_
private

The documentation for this class was generated from the following files:
gs::Schema::BUILTIN_COUNT_VERTICES_PLUGIN_ID
static constexpr uint8_t BUILTIN_COUNT_VERTICES_PLUGIN_ID
Definition: schema.h:48
gs::Schema::BUILTIN_COUNT_VERTICES_PLUGIN_NAME
static constexpr const char * BUILTIN_COUNT_VERTICES_PLUGIN_NAME
Definition: schema.h:49