eckit::sql::expression::ConstantExpression class

Base classes

class SQLExpression

Public static functions

static auto number(double) -> std::shared_ptr<SQLExpression>

Constructors, destructors, conversion operators

ConstantExpression(double, bool, const type::SQLType*)
ConstantExpression(const ConstantExpression&, const PrivateKey&)
~ConstantExpression() override

Public functions

auto operator=(const ConstantExpression&) -> ConstantExpression& deleted
void prepare(SQLSelect&) override
void cleanup(SQLSelect&) override
auto eval(bool& missing) const -> double override
auto isConstant() const -> bool override
auto isNumber() const -> bool override
auto type() const -> const type::SQLType* override
auto clone() const -> std::shared_ptr<SQLExpression> override
auto reshift(int minColumnShift) const -> std::shared_ptr<SQLExpression> override
auto isAggregate() const -> bool override
void output(SQLOutput& s) const override
void partialResult() override
void expandStars(const std::vector<std::reference_wrapper<const SQLTable>>&, expression::Expressions&) override
auto isBitfield() const -> bool override
auto bitfieldDef() const -> BitfieldDef
auto hasMissingValue() const -> bool override
auto missingValue() const -> double
auto eval(bool& missing) const -> double pure virtual
void eval(double* out, bool& missing) const
void preprepare(SQLSelect&) virtual
void updateType(SQLSelect&) virtual
void eval(double* out, bool& missing) const virtual
auto evalAsString(bool& missing) const -> std::string virtual
auto andSplit(expression::Expressions&) -> bool virtual
void tables(std::set<const SQLTable*>&) virtual
auto simplify(bool&) -> std::shared_ptr<SQLExpression> virtual
void title(const std::string&) virtual
auto title() const -> std::string virtual
auto shared_from_this(T... args) -> T
auto weak_from_this(T... args) -> T

Private functions

void print(std::ostream&) const override

Function documentation

static std::shared_ptr<SQLExpression> eckit::sql::expression::ConstantExpression::number(double)

void eckit::sql::expression::ConstantExpression::preprepare(SQLSelect&) virtual

pre-prepare ideally wouldn't exist. To enable a two-pass prepare of SQL columns for SQLSelect, this is here.

void eckit::sql::expression::ConstantExpression::updateType(SQLSelect&) virtual

void eckit::sql::expression::ConstantExpression::eval(double* out, bool& missing) const virtual

std::string eckit::sql::expression::ConstantExpression::evalAsString(bool& missing) const virtual

bool eckit::sql::expression::ConstantExpression::andSplit(expression::Expressions&) virtual

void eckit::sql::expression::ConstantExpression::tables(std::set<const SQLTable*>&) virtual

std::shared_ptr<SQLExpression> eckit::sql::expression::ConstantExpression::simplify(bool&) virtual

void eckit::sql::expression::ConstantExpression::title(const std::string&) virtual

std::string eckit::sql::expression::ConstantExpression::title() const virtual