20 namespace spatial_type {
24 const auto operator_name = geo_operator->
getName();
25 if (operator_name ==
"ST_NRings") {
26 return std::make_unique<NRings>(geo_operator, catalog);
27 }
else if (operator_name ==
"ST_NPoints") {
28 return std::make_unique<NPoints>(geo_operator, catalog);
29 }
else if (operator_name ==
"ST_PointN") {
30 return std::make_unique<PointN>(geo_operator, catalog);
31 }
else if (operator_name ==
"ST_StartPoint" || operator_name ==
"ST_EndPoint") {
32 return std::make_unique<StartEndPoint>(geo_operator, catalog);
33 }
else if (operator_name ==
"ST_X" || operator_name ==
"ST_Y") {
34 return std::make_unique<PointAccessors>(geo_operator, catalog);
35 }
else if (operator_name ==
"ST_Point") {
36 return std::make_unique<PointConstructor>(geo_operator, catalog);
37 }
else if (operator_name ==
"ST_Transform") {
38 return std::make_unique<Transform>(geo_operator, catalog);
39 }
else if (operator_name ==
"ST_Perimeter" || operator_name ==
"ST_Area") {
40 return std::make_unique<AreaPerimeter>(geo_operator, catalog);
41 }
else if (operator_name ==
"ST_Centroid") {
42 return std::make_unique<Centroid>(geo_operator, catalog);
43 }
else if (operator_name ==
"ST_Distance" || operator_name ==
"ST_MaxDistance") {
44 return std::make_unique<Distance>(geo_operator, catalog);
56 return std::make_unique<CodeGenerator::NullCheckCodegen>(
70 return std::string(
"_Point");
73 return std::string(
"_LineString");
76 return std::string(
"_Polygon");
79 return std::string(
"_MultiPolygon");
class for a per-database catalog. also includes metadata for the current database and the current use...
std::string suffix(SQLTypes type)
const std::string & getName() const
std::string toString(const Executor::ExtModuleKinds &kind)
virtual SQLTypeInfo getNullType() const =0
virtual std::unique_ptr< CodeGenerator::NullCheckCodegen > getNullCheckCodegen(llvm::Value *null_lv, CgenState *cgen_state, Executor *executor)
const Analyzer::GeoOperator * operator_
virtual const Analyzer::Expr * getOperand(const size_t index)
std::string getName() const
Analyzer::Expr * getOperand(const size_t index) const
static std::unique_ptr< Codegen > init(const Analyzer::GeoOperator *geo_operator, const Catalog_Namespace::Catalog *catalog)