OmniSciDB
a5dc49c757
|
#include <RelAlgDagSerializer.h>
Static Public Member Functions | |
template<class Archive , class RexClass , typename std::enable_if_t< is_rex_class_v< RexClass >> * = nullptr> | |
static void | serialize (Archive &ar, RexClass &obj, const unsigned int version) |
template<class Archive , class... RelAlgNodeClasses> | |
static void | registerClassesWithArchive (Archive &ar) |
template<class Archive , class RelAlgClass , typename std::enable_if_t< is_rel_alg_node_class_v< RelAlgClass >> * = nullptr> | |
static void | serialize (Archive &ar, RelAlgClass &obj, const unsigned int version) |
template<class Archive > | |
static void | serialize (Archive &ar, RelAlgDag &rel_alg_dag, const unsigned int version) |
Primary struct for serializing the RelAlgNode/Rex/RexScalar nodes in a RelAlgDag instance. All RelAlgDag-related classes/structs that don't have public getter/setter interfaces for serialization-dependent members need to friend this struct for private access and provide a serialization specialization below.
Definition at line 109 of file RelAlgDagSerializer.h.
|
inlinestatic |
Utility method that registers polymorphic-derived classes with the boost archive. Registration is needed to ensure derived classes referenced via polymorphic pointer get properly designated for serialization. See: https://www.boost.org/doc/libs/1_74_0/libs/serialization/doc/serialization.html#registration
NOTE: the class types that need to be serialized are passed as a list of template arguments
Definition at line 206 of file RelAlgDagSerializer.h.
|
inlinestatic |
Primary serialization method for Rex/RexScalar-related classes. If you create a new class that inherits from the Rex/RexScalar base class that requires serialization, it needs to be added here.
Making use of "if constexpr" statements to avoid the boilerplate of creating a new templatized method for each class type. This also potentially allows for doing version checking in one spot, if we ever need to version serialization.
Definition at line 122 of file RelAlgDagSerializer.h.
References CHECK.
Referenced by boost::serialization::serialize().
|
inlinestatic |
Primary serialization method for RelAlgNode-related classes, including the root RelAlgDag class. If you create a new class that inherits from the RelAlgNode base class that requires serialization, it needs to be added here.
NOTE: Making use of "if constexpr" statements to avoid the boilerplate of creating a new templatized method for each class type.
Definition at line 221 of file RelAlgDagSerializer.h.
|
inlinestatic |
Primary serialization method for the RelAlgDag clas.
Definition at line 334 of file RelAlgDagSerializer.h.
References RelAlgDag::build_state_, RelAlgDag::global_hints_, RelAlgDag::nodes_, RelAlgDag::query_hint_, and RelAlgDag::subqueries_.