]> granicus.if.org Git - postgis/commitdiff
Fix schema qualification of internal types
authorRaúl Marín Rodríguez <rmrodriguez@carto.com>
Fri, 18 Oct 2019 12:21:24 +0000 (12:21 +0000)
committerRaúl Marín Rodríguez <rmrodriguez@carto.com>
Fri, 18 Oct 2019 12:21:24 +0000 (12:21 +0000)
References #4549

git-svn-id: http://svn.osgeo.org/postgis/branches/3.0@17956 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_dump.c
postgis/lwgeom_geos.c
regress/core/dump.sql
regress/core/dump_expected
regress/core/isvaliddetail.sql
regress/core/isvaliddetail_expected
regress/run_test.pl

index 133a2d7d01a6a43b8e077a859baa661954fc1c63..ae511459c9d460ef0425d047f4a31effed12645c 100644 (file)
@@ -117,7 +117,8 @@ Datum LWGEOM_dump(PG_FUNCTION_ARGS)
                 * Build a tuple description for an
                 * geometry_dump tuple
                 */
-               tupdesc = RelationNameGetTupleDesc("geometry_dump");
+               get_call_result_type(fcinfo, 0, &tupdesc);
+               BlessTupleDesc(tupdesc);
 
                /*
                 * generate attribute metadata needed later to produce
@@ -255,7 +256,8 @@ Datum LWGEOM_dump_rings(PG_FUNCTION_ARGS)
                 * Build a tuple description for an
                 * geometry_dump tuple
                 */
-               tupdesc = RelationNameGetTupleDesc("geometry_dump");
+               get_call_result_type(fcinfo, 0, &tupdesc);
+               BlessTupleDesc(tupdesc);
 
                /*
                 * generate attribute metadata needed later to produce
index b0a2c480b4234b3e4a61e2cacc9b24abe6402670..d8580ab3e56b5eb98edbfa30f4260684f78f45e5 100644 (file)
@@ -1530,12 +1530,8 @@ Datum isvaliddetail(PG_FUNCTION_ARGS)
         * Build a tuple description for a
         * valid_detail tuple
         */
-       tupdesc = RelationNameGetTupleDesc("valid_detail");
-       if ( ! tupdesc )
-       {
-               lwpgerror("TYPE valid_detail not found");
-               PG_RETURN_NULL();
-       }
+       get_call_result_type(fcinfo, 0, &tupdesc);
+       BlessTupleDesc(tupdesc);
 
        /*
         * generate attribute metadata needed later to produce
index a32fb6950a23b91ed76d135de79e12d0ee94a97b..ec55eb8a7e9823bf7bff86b2c955463421fc9a08 100644 (file)
@@ -178,3 +178,15 @@ GEOMETRYCOLLECTION (
        )
 )
 ');
+
+-- Check that it works without the extension schema being available
+BEGIN;
+SET search_path TO pg_catalog;
+WITH data AS
+(
+    SELECT 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))':: :schema geometry as geom
+)
+SELECT 't12',
+       :schema ST_AsText((public.ST_Dump(geom)).geom),
+       :schema ST_AsText((public.ST_DumpRings(geom)).geom) FROM data;
+ROLLBACK;
index 97aba4af430413631998be1273622898d75c5ba3..3a5f574f5d1a7b7b4971f27efdb373e61d77611e 100644 (file)
@@ -16,3 +16,4 @@ t9|{4}|POLYGON((0 0,0 9,9 9,9 0,0 0),(5 5,5 6,6 6,5 5))
 t9|{5,1}|POLYGON((0 0,0 9,9 9,9 0,0 0),(5 5,5 6,6 6,5 5))
 t10|0
 t11|0
+t12|POLYGON((0 0,0 1,1 1,1 0,0 0))|POLYGON((0 0,0 1,1 1,1 0,0 0))
index 41729c7ef115d8ab4ff357b13cd27ec9dd7f8797..627b15a3807183a11ab9199ac086b5f6c4d30dc4 100644 (file)
@@ -48,3 +48,13 @@ select '6s', ST_IsValid(
 select '5r', ST_IsValidReason(
 'POLYGON ((70 250, 40 500, 100 400, 70 250, 80 350, 60 350, 70 250))' , 1);
 
+-- Check that it works without the extension schema being available
+BEGIN;
+SET search_path TO pg_catalog;
+select 7, valid, reason, :schema st_astext(location) FROM (
+  SELECT (:schema ST_IsValidDetail(
+    'POLYGON ((70 250, 70 500, 80 400, 40 400, 70 250))':: :schema geometry
+  )).*
+) foo;
+ROLLBACK;
+
index 1ae00d1b6a70c2d37d1d14422027a204ed061ef3..9b941b2efdaf2a4ebccfbaaaaf4366962e16621e 100644 (file)
@@ -8,3 +8,4 @@
 6|t||
 6s|t
 5r|Valid Geometry
+7|f|Self-intersection|POINT(70 400)
index 786703db17fff0e0bb57d19d50930ca6ac7dac16..8f32e5b79623ecaa5fd7212776e4511b5dc1e405 100755 (executable)
@@ -70,6 +70,7 @@ my $OPT_UPGRADE_PATH = '';
 our $OPT_UPGRADE_FROM = '';
 my $OPT_UPGRADE_TO = '';
 my $VERBOSE = 0;
+my $OPT_SCHEMA = 'public';
 
 GetOptions (
        'verbose' => \$VERBOSE,
@@ -83,7 +84,8 @@ GetOptions (
        'raster' => \$OPT_WITH_RASTER,
        'sfcgal' => \$OPT_WITH_SFCGAL,
        'expect' => \$OPT_EXPECT,
-       'extensions' => \$OPT_EXTENSIONS
+       'extensions' => \$OPT_EXTENSIONS,
+       'schema=s' => \$OPT_SCHEMA
        );
 
 if ( @ARGV < 1 )
@@ -768,6 +770,7 @@ sub run_simple_test
           . " -v \"tmpfile='$tmpfile'\""
           . " -v \"scriptdir=$scriptdir\""
           . " -v \"regdir=$REGDIR\""
+          . " -v \"schema=$OPT_SCHEMA.\""
           . " -tXAq $DB < $sql > $outfile 2>&1";
        my $rv = system($cmd);