26 const std::optional<GeoJoinOperandsTableKeyPair>
28 std::optional<GeoJoinOperandsTableKeyPair> ret;
31 std::unordered_set<shared::TableKey> table_keys;
35 table_keys.emplace(cv->getTableKey());
37 if (table_keys.size() == 2) {
38 const auto inner_table_key =
geo_arg_cvs_.front()->getTableKey();
39 std::for_each(table_keys.cbegin(),
42 if (table_key != inner_table_key) {
43 ret = {inner_table_key, table_key};
58 for (
size_t i = 0; i < func_oper->
getArity(); i++) {
59 if (
auto cv = dynamic_cast<const Analyzer::ColumnVar*>(func_oper->
getArg(i))) {
68 if (
auto cv = dynamic_cast<const Analyzer::ColumnVar*>(arg)) {
void * visitFunctionOper(const Analyzer::FunctionOper *func_oper) const override
const std::vector< const Analyzer::ColumnVar * > & getGeoArgCvs() const
virtual std::vector< Analyzer::Expr * > getChildExprs() const
void * visitGeoExpr(const Analyzer::GeoExpr *geo_expr) const override
const std::string & getGeoFunctionName() const
std::vector< const Analyzer::ColumnVar * > geo_arg_cvs_
const Analyzer::Expr * getArg(const size_t i) const
const std::optional< GeoJoinOperandsTableKeyPair > getJoinTableKeyPair() const
std::string getName() const
std::string geo_func_name_