hybridse::vm::SchemasContext

#include <schemas_context.h>

Summary

class hybridse::vm::SchemasContext;

Utility context to resolve column spec into detailed column information. This class should be explicitly initialized with schema source list info or some physical node with schema intiailized. If initialized by physical node, current context will take a relation name used when column search is assiociated with a relation name. and the node graph can be traversed to resolve column inherited from input nodes.

Public functions

SchemasContext(const PhysicalOpNode * root)

ResolveColumnIndexByName(const std::string & relation_name, const std::string & column_name, size_t * schema_idx, size_t * col_idx) const

base::Status

ResolveColumnIndexByID(size_t column_id, size_t * schema_idx, size_t * col_idx) const

base::Status

ResolveColumnNameByID(size_t column_id, std::string * name) const

base::Status

ResolveColumnRefIndex(const node::ColumnRefNode * column_ref, size_t * schema_idx, size_t * col_idx) const

base::Status

ResolveColumnID(const std::string & relation_name, const std::string & column_name, size_t * column_id) const

base::Status

ResolveColumnID(const std::string & relation_name, const std::string & column_name, size_t * column_id, int * child_path_idx, size_t * child_column_id, size_t * source_column_id, const PhysicalOpNode ** source_node) const

base::Status

ResolveExprDependentColumns(const node::ExprNode * expr, std::set< size_t > * column_ids) const

base::Status

ResolveExprDependentColumns(const node::ExprNode * expr, std::vector< const node::ExprNode * > * columns) const

base::Status

GetName() const

const std::string &

GetRoot() const

const PhysicalOpNode *

GetRowFormat(size_t idx) const

GetSchemaSource(size_t idx) const

const SchemaSource *

GetSchema(size_t idx) const

size_t

SetName(const std::string & name)

void

Merge(size_t child_idx, const SchemasContext * child)

void

MergeWithNewID(size_t child_idx, const SchemasContext * child, PhysicalPlanContext * plan_ctx)

void

void

void

Empty() const

bool

GetColumnNum() const

size_t

BuildTrivial(const std::vector< const codec::Schema * > & schemas)

void

BuildTrivial(const std::vector< const type::TableDef * > & tables)

void

Public Functions

function SchemasContext

function SchemasContext

function ~SchemasContext

function ResolveColumnIndexByName

Given relation name and column name, return schema slice index and column index within current context.

function ResolveColumnIndexByID

Given unique column id, return schema slice index and column index within schema slice within current context.

function ResolveColumnNameByID

Given unique column id, return column name.

function ResolveColumnRefIndex

Resolve index for column reference expression

function ResolveColumnID

Given relation name and column name, return column unique id under current context.

function ResolveColumnID

Resolve source column by relation name and column name recursively. If it can be resolved in current node, child_path_id is -1, else child_path_id is the index of the child which the column is resolved from.

function ResolveExprDependentColumns

Resolve all columns input expression will depend on. Return column id list.

function ResolveExprDependentColumns

function GetName

Get the relation name for this schema context, default ""

function GetRoot

function GetRowFormat

Get detailed format for idxth schema source.

function GetSchemaSource

Get idxth schema source.

function GetSchema

Get raw schema for idxth schema source.

function GetSchemaSourceSize

Get num of total schema sources.

function SetName

Set the relation name for this schema context.

function AddSource

Add new schema source and return the mutable instance of added source.

function Merge

Add schema sources from child and inherit column identifiers.

function MergeWithNewID

Add schema sources from child with new column identifiers. The source informations are set to traceback which child column the new column is from.

function Clear

function Build

function Empty

function GetColumnNum

Get total column num of all schema sources.

function GetOutputSchema

function BuildTrivial

Helper method to init schemas context with trival schema sources this can be commonly used when no plan node is provided.

function BuildTrivial

Last updated