Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions contrib/babelfishpg_common/sql/geography.sql
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,21 @@ CREATE OR REPLACE FUNCTION sys.STDimension(geom sys.GEOGRAPHY)
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

--MAKEVALID
CREATE OR REPLACE FUNCTION sys.MakeValid(geog sys.GEOGRAPHY)
RETURNS sys.GEOGRAPHY
AS $$
BEGIN
IF sys.STIsEmpty(geog) = 1 THEN
RETURN geog;
ELSEIF sys.STIsValid(geog) = 1 THEN
RETURN geog;
ELSE
RETURN sys.makevalid_helper(geog);
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

--STNumPoints
CREATE OR REPLACE FUNCTION sys.STNumPoints(geog sys.GEOGRAPHY)
RETURNS integer
Expand Down Expand Up @@ -678,6 +693,11 @@ CREATE OR REPLACE FUNCTION sys.STDimension_helper(sys.GEOGRAPHY)
AS '$libdir/postgis-3','LWGEOM_dimension'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

CREATE OR REPLACE FUNCTION sys.makevalid_helper(geog sys.GEOGRAPHY)
RETURNS sys.GEOGRAPHY
AS '$libdir/postgis-3', 'ST_MakeValid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

CREATE OR REPLACE FUNCTION sys.STNumPoints_helper(sys.GEOGRAPHY)
RETURNS integer
AS '$libdir/postgis-3', 'LWGEOM_npoints'
Expand Down
20 changes: 20 additions & 0 deletions contrib/babelfishpg_common/sql/geometry.sql
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,21 @@ CREATE OR REPLACE FUNCTION sys.STGeometryType(geom sys.GEOMETRY)
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

--MAKE VALID
CREATE OR REPLACE FUNCTION sys.MakeValid(geom sys.GEOMETRY)
RETURNS sys.GEOMETRY
AS $$
BEGIN
IF sys.STIsEmpty(geom) = 1 THEN
RETURN geom;
ELSEIF sys.STIsValid(geom) = 1 THEN
RETURN geom;
ELSE
RETURN sys.STMakeValid_helper(geom);
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

--Parse
CREATE OR REPLACE FUNCTION sys.Geometry__Parse(geometry_tagged_text sys.NVARCHAR)
RETURNS sys.GEOMETRY
Expand Down Expand Up @@ -675,6 +690,11 @@ CREATE OR REPLACE FUNCTION sys.STNumPoints_helper(sys.GEOMETRY)
AS '$libdir/postgis-3','LWGEOM_npoints'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

CREATE OR REPLACE FUNCTION sys.STMakeValid_helper(sys.GEOMETRY)
RETURNS sys.GEOMETRY
AS '$libdir/postgis-3','ST_MakeValid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

CREATE OR REPLACE FUNCTION sys.STIntersects_helper(geom1 sys.GEOMETRY, geom2 sys.GEOMETRY)
RETURNS sys.BIT
AS '$libdir/postgis-3','ST_Intersects'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,45 @@
-------------------------------------------------------
---- Include changes related to spatial types here ----
-------------------------------------------------------
--geometry
CREATE OR REPLACE FUNCTION sys.MakeValid(geom sys.GEOMETRY)
RETURNS sys.GEOMETRY
AS $$
BEGIN
IF sys.STIsEmpty(geom) = 1 THEN
RETURN geom;
ELSEIF sys.STIsValid(geom) = 1 THEN
RETURN geom;
ELSE
RETURN sys.STMakeValid_helper(geom);
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

CREATE OR REPLACE FUNCTION sys.STMakeValid_helper(sys.GEOMETRY)
RETURNS sys.GEOMETRY
AS '$libdir/postgis-3','ST_MakeValid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

--geography
CREATE OR REPLACE FUNCTION sys.MakeValid(geog sys.GEOGRAPHY)
RETURNS sys.GEOGRAPHY
AS $$
BEGIN
IF sys.STIsEmpty(geog) = 1 THEN
RETURN geog;
ELSEIF sys.STIsValid(geog) = 1 THEN
RETURN geog;
ELSE
RETURN sys.makevalid_helper(geog);
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE;

CREATE OR REPLACE FUNCTION sys.makevalid_helper(geog sys.GEOGRAPHY)
RETURNS sys.GEOGRAPHY
AS '$libdir/postgis-3', 'ST_MakeValid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

--STNumPoints
-- geometry
Expand Down Expand Up @@ -40,6 +79,7 @@ CREATE OR REPLACE FUNCTION sys.STNumPoints_helper(sys.GEOGRAPHY)
RETURNS integer
AS '$libdir/postgis-3', 'LWGEOM_npoints'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;

--parse
--Geometry
CREATE OR REPLACE FUNCTION sys.Geometry__Parse(geometry_tagged_text sys.NVARCHAR)
Expand Down
1 change: 1 addition & 0 deletions contrib/babelfishpg_tsql/antlr/TSqlLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,7 @@ M: [Mm];
M_DOUBLE_QUOTE: ["] M ["] {pltsql_quoted_identifier == true}?;
M_SQBRACKET: '[' M ']';
MANUAL: M A N U A L;
MAKEVALID: M A K E V A L I D;
MARK: M A R K;
MASK: M A S K;
MASKED: M A S K E D;
Expand Down
2 changes: 2 additions & 0 deletions contrib/babelfishpg_tsql/antlr/TSqlParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -3941,6 +3941,7 @@ geospatial_func_no_arg
: STASTEXT
| STASBINARY
| STAREA
| MAKEVALID
| STDIMENSION
| STGEOMETRYTYPE
| STISCLOSED
Expand Down Expand Up @@ -4726,6 +4727,7 @@ keyword
| M
| M_DOUBLE_QUOTE
| M_SQBRACKET
| MAKEVALID
| MANUAL
| MARK
| MASK
Expand Down
25 changes: 25 additions & 0 deletions test/JDBC/expected/Test-spatial-functions-3-vu-cleanup.out
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
USE TestSpatialFunc3_DB;

DROP VIEW TestSpatialFunc3_GeomMetrics_MakeValid_View;
DROP VIEW TestSpatialFunc3_GeogMetrics_MakeValid_View;
DROP VIEW TestSpatialFunc3_GeomMetrics_Area_View;
DROP VIEW TestSpatialFunc3_GeogMetrics_Area_View;

DROP TABLE TestSpatialFunc3_GeomMetrics;
DROP TABLE TestSpatialFunc3_GeogMetrics;

USE MASTER;

DROP VIEW TestSpatialFunc3_MakeValidGeomView1;
DROP VIEW TestSpatialFunc3_MakeValidGeomView2;
DROP VIEW TestSpatialFunc3_MakeValidGeomView3;
DROP VIEW TestSpatialFunc3_MakeValidGeomView4;
DROP VIEW TestSpatialFunc3_MakeValidGeomView5;
DROP VIEW TestSpatialFunc3_MakeValidGeogView1;
DROP VIEW TestSpatialFunc3_MakeValidGeogView2;
DROP VIEW TestSpatialFunc3_MakeValidGeogView3;

DROP TABLE TestSpatialFunc3_MakeValidGeomTemp;
DROP TABLE TestSpatialFunc3_MakeValidGeogTemp;

DROP DATABASE TestSpatialFunc3_DB;
USE TestSTNumPoints_DB;

DROP VIEW STNumPoints_geog_view_db;
Expand Down
Loading