26#ifndef TABLES_TAQLJOIN_H
27#define TABLES_TAQLJOIN_H
29#include <casacore/casa/aips.h>
30#include <casacore/tables/TaQL/ExprDerNode.h>
31#include <casacore/tables/TaQL/ExprNodeSetOpt.h>
38 class TableExprNodeSetElemCont;
155 const std::vector<std::shared_ptr<TaQLJoinBase>>& children);
166 (
const std::vector<TableExprNode>& mainNodes,
167 const std::vector<TableExprNode>& joinNodes,
168 const std::vector<rownr_t>& rows,
177 const std::vector<TableExprNode>& mainNodes,
178 const std::vector<TableExprNode>& joinNodes,
179 const std::vector<rownr_t>& rows,
188 const std::vector<TableExprNode>& mainNodes,
189 const std::vector<TableExprNode>& joinNodes,
190 const std::vector<rownr_t>& rows,
String: the storage and methods of handling collections of characters.
virtual Int64 findRow(const TableExprId &)=0
Find the row number.
virtual ~TaQLJoinBase()=default
A scalar column of the given type in a join table.
Bool getBool(const TableExprId &id) override
Get a scalar value for this node in the given row.
TaQLJoinColumnBool(const TENShPtr &columnNode, const TableParseJoin &)
~TaQLJoinColumnBool() override=default
void clear() override
Clear the internal data vector (in derived classes).
Vector< DComplex > itsData
DComplex getDComplex(const TableExprId &id) override
TaQLJoinColumnDComplex(const TENShPtr &columnNode, const TableParseJoin &)
void clear() override
Clear the internal data vector (in derived classes).
~TaQLJoinColumnDComplex() override=default
void clear() override
Clear the internal data vector (in derived classes).
TaQLJoinColumnDate(const TENShPtr &columnNode, const TableParseJoin &)
~TaQLJoinColumnDate() override=default
MVTime getDate(const TableExprId &id) override
void clear() override
Clear the internal data vector (in derived classes).
~TaQLJoinColumnDouble() override=default
Double getDouble(const TableExprId &id) override
TaQLJoinColumnDouble(const TENShPtr &columnNode, const TableParseJoin &)
~TaQLJoinColumnInt() override=default
Int64 getInt(const TableExprId &id) override
TaQLJoinColumnInt(const TENShPtr &columnNode, const TableParseJoin &)
void clear() override
Clear the internal data vector (in derived classes).
TaQLJoinColumnString(const TENShPtr &columnNode, const TableParseJoin &)
String getString(const TableExprId &id) override
~TaQLJoinColumnString() override=default
void clear() override
Clear the internal data vector (in derived classes).
A column in a join table.
MArray< Double > getArrayDouble(const TableExprId &id) override
TableExprInfo getTableInfo() const override
Get the table info for this column.
MArray< MVTime > getArrayDate(const TableExprId &id) override
static TableExprNode makeColumnNode(const TENShPtr &columnNode, const TableParseJoin &)
Make the appropriate TaQLJoinColumn object.
MArray< DComplex > getArrayDComplex(const TableExprId &id) override
~TaQLJoinColumn() override=default
MArray< Bool > getArrayBool(const TableExprId &id) override
Get the data for the given id.
MArray< String > getArrayString(const TableExprId &id) override
TaQLJoinColumn(const TENShPtr &columnNode, const TableParseJoin &)
virtual void clear()
Clear the internal data vector (in derived classes).
MArray< Int64 > getArrayInt(const TableExprId &id) override
const TableParseJoin & itsJoin
Class holding the row number as the final level in the comparison tree.
~TaQLJoinRow() override=default
Int64 findRow(const TableExprId &) override
Return the row number.
The rowid in a join table.
const TableParseJoin & itsJoin
~TaQLJoinRowid() override=default
Int64 getInt(const TableExprId &id) override
Get the data (rowid in join table) for the given id.
TaQLJoinRowid(const TableExprInfo &, const TableParseJoin &)
TableExprInfo getTableInfo() const override
Get the table info.
Class holding a comparison part of a join condition.
static std::shared_ptr< TaQLJoinBase > makeOptDiscrete(TableExprNodeRep &node, const std::vector< TableExprNode > &mainNodes, const std::vector< TableExprNode > &joinNodes, const std::vector< rownr_t > &rows, size_t level)
Create nested TaQLJoin nodes for a join expression part at the given level using discrete values.
static std::shared_ptr< TaQLJoinBase > createRecursive(const std::vector< TableExprNode > &mainNodes, const std::vector< TableExprNode > &joinNodes, const std::vector< rownr_t > &rows, size_t level)
From the given level on create nested TaQLJoin nodes.
Int64 findRow(const TableExprId &) override
Find the row number in the join table for the given row in the main table.
std::vector< std::shared_ptr< TaQLJoinBase > > itsChildren
static std::shared_ptr< TaQLJoinBase > makeOptInterval(const TableExprNodeSet &set, const std::vector< TableExprNode > &mainNodes, const std::vector< TableExprNode > &joinNodes, const std::vector< rownr_t > &rows, size_t level)
Create nested TaQLJoin nodes for a join expression part at the given level using intervals.
~TaQLJoin() override=default
TaQLJoin(const TENShPtr &mainNode, const TENShPtr &joinNode, const std::vector< std::shared_ptr< TaQLJoinBase > > &children)
TableExprNodeSetOptBase * itsOptSet
Class to connect a Table and its alias name.
Abstract base class for a node in a table column expression tree.
this file contains all the compiler specific defines
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
std::shared_ptr< TableExprNodeRep > TENShPtr
bool Bool
Define the standard types used by Casacore.