[SCM] PostGIS branch master updated. 3.7.0beta1-255-g0644bfea30

git at osgeo.org git at osgeo.org
Sun Aug 9 03:02:24 PDT 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, master has been updated
       via  0644bfea3078f3fdeed7fdab1f9a688d4a2a49e3 (commit)
       via  742b3f2bc46c457f372d33abe62f568709eff3c5 (commit)
      from  dd6ccce73522e4abc1090d673d323b77d30af359 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0644bfea3078f3fdeed7fdab1f9a688d4a2a49e3
Merge: dd6ccce735 742b3f2bc4
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date:   Sun Aug 9 03:02:23 2026 -0700

    Merge pull request 'raster: keep overview metadata privilege-aware and search-path safe' (!644) from Komzpa/postgis:combine/trac-2821-20260802 into master
    
    Two campaigns fixed Trac #2821 without knowing about each other, on this forge and on the GitHub
    mirror, and the two fixes are complementary rather than competing. This carries both.
    
    From the GitHub side: `raster_columns` and `raster_overviews` resolve the extension raster type as
    `@extschema at .raster` and cast relkind through `pg_catalog."char"`, and `_overview_constraint`
    compares the reference column type to `pg_catalog.pg_typeof($1)::pg_catalog.oid` — hardening
    against search-path and type spoofing.
    
    From the Gitea side: `_overview_constraint` keeps the original view's privilege semantics —
    excluding other temp schemas via `pg_catalog.pg_is_other_temp_schema`, and requiring
    `pg_catalog.has_column_privilege(...)` so an inaccessible reference column cannot be treated as
    valid.
    
    `raster/test/regress/rt_createoverview` and the new `check_raster_overviews.sql` cover both, and
    pass.
    
    Reviewed-on: https://gitea.osgeo.org/postgis/postgis/pulls/644


commit 742b3f2bc46c457f372d33abe62f568709eff3c5
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Sun Aug 2 00:25:26 2026 +0400

    raster: combine overview constraint hardening

diff --git a/NEWS b/NEWS
index 1443dee89a..945e2714bc 100644
--- a/NEWS
+++ b/NEWS
@@ -28,6 +28,8 @@ These are only changes since 3.7.0beta1.
           spend unbounded time on them (Darafei Praliaskouski)
  - GT-484, Use column-level SELECT privileges for metadata views
           (Arthur Bazin)
+ - #2821, [raster] Avoid raster_columns ACL dependency in overview
+          constraints (Darafei Praliaskouski)
  - GT-521, Reject malformed GSERIALIZED payload counts before deserializing
           geometry data (Darafei Praliaskouski)
  - GT-564, Avoid ST_MakePolygon failures with NULL hole array entries
diff --git a/raster/rt_pg/rtpostgis.sql.in b/raster/rt_pg/rtpostgis.sql.in
index 704deecc32..a49331861d 100644
--- a/raster/rt_pg/rtpostgis.sql.in
+++ b/raster/rt_pg/rtpostgis.sql.in
@@ -8345,10 +8345,10 @@ CREATE OR REPLACE VIEW raster_columns AS
 		pg_attribute a,
 		pg_namespace n
 	WHERE a.attisdropped = false
-		AND a.atttypid = 'raster'::regtype
+		AND a.atttypid = '@extschema at .raster'::regtype
 		AND a.attrelid = c.oid
 		AND c.relnamespace = n.oid
-		AND c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char", 'p'::"char"] )
+		AND c.relkind = ANY (ARRAY['r'::pg_catalog."char", 'v'::pg_catalog."char", 'm'::pg_catalog."char", 'f'::pg_catalog."char", 'p'::pg_catalog."char"] )
 		AND NOT pg_catalog.pg_is_other_temp_schema(c.relnamespace) AND pg_catalog.has_column_privilege(c.oid, a.attname,'SELECT'::text);
 
 ------------------------------------------------------------------------------
@@ -8356,9 +8356,28 @@ CREATE OR REPLACE VIEW raster_columns AS
 -------------------------------------------------------------------------------
 
 CREATE OR REPLACE FUNCTION _overview_constraint(ov raster, factor integer, refschema name, reftable name, refcolumn name)
-	RETURNS boolean AS
-	$$ SELECT COALESCE((SELECT TRUE FROM @extschema at .raster_columns WHERE r_table_catalog = current_database() AND r_table_schema = $3 AND r_table_name = $4 AND r_raster_column = $5), FALSE) $$
-	LANGUAGE 'sql' STABLE
+	RETURNS boolean AS $$
+	SELECT COALESCE((
+		SELECT TRUE
+		FROM pg_catalog.pg_class c
+		JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
+		JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid
+		WHERE n.nspname = $3
+			AND c.relname = $4
+			AND a.attname = $5
+			AND a.attisdropped = false
+			AND a.atttypid = pg_catalog.pg_typeof($1)::pg_catalog.oid
+			AND c.relkind = ANY (ARRAY[
+				'r'::pg_catalog."char",
+				'v'::pg_catalog."char",
+				'm'::pg_catalog."char",
+				'f'::pg_catalog."char",
+				'p'::pg_catalog."char"
+			])
+			AND NOT pg_catalog.pg_is_other_temp_schema(c.relnamespace)
+			AND pg_catalog.has_column_privilege(c.oid, a.attname, 'SELECT'::text)
+	), FALSE)
+	$$ LANGUAGE 'sql' STABLE
 	COST 100;
 
 -- Changed: 3.1.2
@@ -8445,16 +8464,19 @@ CREATE OR REPLACE VIEW raster_overviews AS
 	FROM
 		pg_class c,
 		pg_attribute a,
-		pg_type t,
 		pg_namespace n,
 		(SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
 		    FROM pg_constraint) AS s
-	WHERE t.typname = 'raster'::name
-		AND a.attisdropped = false
-		AND a.atttypid = t.oid
+	WHERE a.attisdropped = false
+		AND a.atttypid = '@extschema at .raster'::regtype
 		AND a.attrelid = c.oid
 		AND c.relnamespace = n.oid
-		AND c.relkind = ANY(ARRAY['r'::char, 'v'::char, 'm'::char, 'f'::char])
+		AND c.relkind = ANY(ARRAY[
+			'r'::pg_catalog."char",
+			'v'::pg_catalog."char",
+			'm'::pg_catalog."char",
+			'f'::pg_catalog."char"
+		])
 		AND s.connamespace = n.oid
 		AND s.conrelid = c.oid
 		AND s.consrc LIKE '%_overview_constraint(%'
diff --git a/raster/test/regress/check_raster_overviews.sql b/raster/test/regress/check_raster_overviews.sql
index b60bb7dc7f..5ef209b73b 100644
--- a/raster/test/regress/check_raster_overviews.sql
+++ b/raster/test/regress/check_raster_overviews.sql
@@ -98,3 +98,36 @@ SELECT o_table_name, o_raster_column, r_table_name, r_raster_column, overview_fa
 DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision);
 DROP TABLE IF EXISTS test_raster_overviews;
 DROP TABLE IF EXISTS test_raster_columns;
+
+-----------------------------------------------------------------------
+--- Ticket 2821: AddOverviewConstraints should not depend on
+--- raster_columns view ACLs
+-----------------------------------------------------------------------
+
+CREATE ROLE ticket_2821_user;
+GRANT CREATE ON SCHEMA public TO ticket_2821_user;
+REVOKE SELECT ON raster_columns FROM PUBLIC;
+
+SET ROLE ticket_2821_user;
+CREATE TABLE ticket_2821_raster_columns (
+	rid integer,
+	rast raster
+);
+INSERT INTO ticket_2821_raster_columns VALUES
+	(0, ST_AddBand(ST_MakeEmptyRaster(2, 2, -2, -2, 1, 1, 0, 0, 0), 1, '8BUI', 1, 0)),
+	(1, ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, 1, 0, 0, 0), 1, '8BUI', 2, 0));
+SELECT AddRasterConstraints(current_schema(), 'ticket_2821_raster_columns', 'rast'::name);
+CREATE TABLE ticket_2821_raster_overviews AS
+	SELECT * FROM ticket_2821_raster_columns;
+SELECT AddOverviewConstraints('ticket_2821_raster_overviews', 'rast', 'ticket_2821_raster_columns', 'rast', 1);
+RESET ROLE;
+
+SELECT o_table_name, o_raster_column, r_table_name, r_raster_column, overview_factor
+FROM raster_overviews
+WHERE o_table_name = 'ticket_2821_raster_overviews';
+
+REVOKE CREATE ON SCHEMA public FROM ticket_2821_user;
+GRANT SELECT ON raster_columns TO PUBLIC;
+DROP TABLE IF EXISTS ticket_2821_raster_overviews;
+DROP TABLE IF EXISTS ticket_2821_raster_columns;
+DROP ROLE ticket_2821_user;
diff --git a/raster/test/regress/check_raster_overviews_expected b/raster/test/regress/check_raster_overviews_expected
index 93e8968afe..89b33f719a 100644
--- a/raster/test/regress/check_raster_overviews_expected
+++ b/raster/test/regress/check_raster_overviews_expected
@@ -14,3 +14,6 @@ test_raster_overviews|rast|0|||||f|f||||
 t
 test_raster_columns|rast|0|||||f|f||||
 test_raster_overviews|rast|0|||||f|f||||
+t
+t
+ticket_2821_raster_overviews|rast|ticket_2821_raster_columns|rast|1
diff --git a/raster/test/regress/rt_createoverview.sql b/raster/test/regress/rt_createoverview.sql
index 2b0d87c8b2..3d120fbb15 100644
--- a/raster/test/regress/rt_createoverview.sql
+++ b/raster/test/regress/rt_createoverview.sql
@@ -1,44 +1,86 @@
 SET client_min_messages TO warning;
 -- Test for table without explicit schema
 CREATE TABLE res1 AS SELECT
-  ST_AddBand(
-    ST_MakeEmptyRaster(10, 10, x, y, 1, -1, 0, 0, 0)
+  :schema ST_AddBand(
+    :schema ST_MakeEmptyRaster(10, 10, x, y, 1, -1, 0, 0, 0)
     , 1, '8BUI', 0, 0
   ) r
 FROM generate_series(-170, 160, 10) x,
      generate_series(80, -70, -10) y;
-SELECT addrasterconstraints('res1', 'r');
+SELECT :schema addrasterconstraints('res1', 'r');
 
-SELECT ST_CreateOverview('res1', 'r', 2)::text = 'o_2_res1';
+SELECT :schema ST_CreateOverview('res1', 'r', 2)::text = 'o_2_res1';
 
-SELECT ST_CreateOverview('res1', 'r', 4)::text = 'o_4_res1';
+SELECT :schema ST_CreateOverview('res1', 'r', 4)::text = 'o_4_res1';
 
-SELECT ST_CreateOverview('res1', 'r', 8)::text = 'o_8_res1';
+SELECT :schema ST_CreateOverview('res1', 'r', 8)::text = 'o_8_res1';
 
-SELECT ST_CreateOverview('res1', 'r', 16)::text = 'o_16_res1';
+SELECT :schema ST_CreateOverview('res1', 'r', 16)::text = 'o_16_res1';
 
 SELECT r_table_name tab, r_raster_column c, srid s,
  scale_x sx, scale_y sy,
  blocksize_x w, blocksize_y h, same_alignment a,
  -- regular_blocking (why not regular?)
  --extent::box2d e,
- st_covers(extent::box2d, 'BOX(-170 -80,170 80)'::box2d) ec,
- st_xmin(extent::box2d) = -170 as eix,
- st_ymax(extent::box2d) = 80 as eiy,
- (st_xmax(extent::box2d) - 170) <= scale_x as eox,
+ :schema st_covers(extent:: :schema box2d, 'BOX(-170 -80,170 80)':: :schema box2d) ec,
+ :schema st_xmin(extent:: :schema box2d) = -170 as eix,
+ :schema st_ymax(extent:: :schema box2d) = 80 as eiy,
+ (:schema st_xmax(extent:: :schema box2d) - 170) <= scale_x as eox,
  --(st_xmax(extent::box2d) - 170) eoxd,
- abs(st_ymin(extent::box2d) + 80) <= abs(scale_y) as eoy
+ abs(:schema st_ymin(extent:: :schema box2d) + 80) <= abs(scale_y) as eoy
  --,abs(st_ymin(extent::box2d) + 80) eoyd
- FROM raster_columns
+ FROM :schema raster_columns
 WHERE r_table_name like '%res1'
 ORDER BY scale_x, r_table_name;
 
 SELECT o_table_name, o_raster_column,
        r_table_name, r_raster_column, overview_factor
-FROM raster_overviews
+FROM :schema raster_overviews
 WHERE r_table_name = 'res1'
 ORDER BY overview_factor;
 
+SET search_path TO public;
+SELECT :schema _overview_constraint(
+  (SELECT r FROM public.o_2_res1 LIMIT 1),
+  2, 'public', 'res1', 'r'
+);
+RESET search_path;
+
+CREATE TEMP TABLE pg_class (dummy integer);
+CREATE TEMP TABLE pg_namespace (dummy integer);
+CREATE TEMP TABLE pg_attribute (dummy integer);
+SET search_path TO pg_temp, public;
+SELECT :schema _overview_constraint(
+  (SELECT r FROM public.o_2_res1 LIMIT 1),
+  2, 'public', 'res1', 'r'
+);
+RESET search_path;
+DROP TABLE pg_class;
+DROP TABLE pg_namespace;
+DROP TABLE pg_attribute;
+
+CREATE SCHEMA rt_shadow;
+CREATE DOMAIN rt_shadow."char" AS text;
+SET search_path TO rt_shadow, public;
+SELECT :schema _overview_constraint(
+  (SELECT r FROM public.o_2_res1 LIMIT 1),
+  2, 'public', 'res1', 'r'
+);
+RESET search_path;
+DROP SCHEMA rt_shadow CASCADE;
+
+CREATE SCHEMA rt_spoof;
+CREATE DOMAIN rt_spoof.raster AS text;
+CREATE FUNCTION rt_spoof.postgis_raster_lib_version()
+  RETURNS text LANGUAGE sql IMMUTABLE AS $$ SELECT 'spoof'::text $$;
+SET search_path TO rt_spoof, public;
+SELECT :schema _overview_constraint(
+  (SELECT r FROM public.o_2_res1 LIMIT 1),
+  2, 'public', 'res1', 'r'
+);
+RESET search_path;
+DROP SCHEMA rt_spoof CASCADE;
+
 SELECT 'count',
 (SELECT count(*) r1 from res1),
 (SELECT count(*) r2 from o_2_res1),
@@ -58,36 +100,49 @@ DROP TABLE o_2_res1;
 -- Test overview with table in schema
 --
 CREATE SCHEMA oschm;
+SELECT set_config(
+  'search_path',
+  COALESCE(NULLIF(pg_catalog.rtrim(:'schema', '.'), ''), 'public') || ',public',
+  false
+) IS NOT NULL;
 -- offset the schema tableto distinguish it from original
 -- let it be small to reduce time cost.
 CREATE TABLE oschm.res1 AS SELECT
-  ST_AddBand(
-    ST_MakeEmptyRaster(10, 10, x, y, 1, -1, 0, 0, 0)
+  :schema ST_AddBand(
+    :schema ST_MakeEmptyRaster(10, 10, x, y, 1, -1, 0, 0, 0)
     , 1, '8BUI', 0, 0
   ) r
 FROM generate_series(100, 270, 10) x,
      generate_series(140, -30, -10) y;
-SELECT addrasterconstraints('oschm'::name,'res1'::name, 'r'::name);
+SELECT :schema addrasterconstraints('oschm'::name,'res1'::name, 'r'::name);
 
 -- add overview with explicit schema
-SELECT ST_CreateOverview('oschm.res1', 'r', 8)::text = 'oschm.o_8_res1';
+SELECT :schema ST_CreateOverview('oschm.res1', 'r', 8)::text = 'oschm.o_8_res1';
 
 -- set search path to 'oschm' first
-SET search_path to oschm,public;
+SELECT set_config(
+  'search_path',
+  'oschm,' || COALESCE(NULLIF(pg_catalog.rtrim(:'schema', '.'), ''), 'public') || ',public',
+  false
+) IS NOT NULL;
 
 -- create overview with schema in search_path
-SELECT ST_CreateOverview('res1', 'r', 4)::text = 'o_4_res1';
+SELECT :schema ST_CreateOverview('res1', 'r', 4)::text = 'o_4_res1';
 
 -- Create overview for table in public schema with explicit path
 -- at same factor of schema table
-SELECT ST_CreateOverview('public.res1', 'r', 8)::text = 'public.o_8_res1';
+SELECT :schema ST_CreateOverview('public.res1', 'r', 8)::text = 'public.o_8_res1';
 
 -- Reset the search_path
-SET search_path to public;
+SELECT set_config(
+  'search_path',
+  COALESCE(NULLIF(pg_catalog.rtrim(:'schema', '.'), ''), 'public') || ',public',
+  false
+) IS NOT NULL;
 
 -- Create public overview of public table with same name
 -- and scale as schema table above using reset search path.
-SELECT ST_CreateOverview('res1', 'r', 4)::text = 'o_4_res1';
+SELECT :schema ST_CreateOverview('res1', 'r', 4)::text = 'o_4_res1';
 
 -- Check scale and extent
 -- Offset means that original raster overviews won't match
@@ -97,14 +152,14 @@ SELECT r_table_schema, r_table_name tab, r_raster_column c,
  blocksize_x w, blocksize_y h, same_alignment a,
  -- regular_blocking (why not regular?)
  --extent::box2d e,
- st_covers(extent::box2d, 'BOX(100 -30,270 140)'::box2d) ec,
- st_xmin(extent::box2d) = 100 as eix,
- st_ymax(extent::box2d) = 140 as eiy,
- (st_xmax(extent::box2d) - 280) <= scale_x as eox,
+ :schema st_covers(extent:: :schema box2d, 'BOX(100 -30,270 140)':: :schema box2d) ec,
+ :schema st_xmin(extent:: :schema box2d) = 100 as eix,
+ :schema st_ymax(extent:: :schema box2d) = 140 as eiy,
+ (:schema st_xmax(extent:: :schema box2d) - 280) <= scale_x as eox,
  --(st_xmax(extent::box2d) - 170) eoxd,
- abs(st_ymin(extent::box2d) + 40) <= abs(scale_y) as eoy
+ abs(:schema st_ymin(extent:: :schema box2d) + 40) <= abs(scale_y) as eoy
  --,abs(st_ymin(extent::box2d) + 80) eoyd
- FROM raster_columns
+ FROM :schema raster_columns
 WHERE r_table_name like '%res1'
 ORDER BY r_table_schema, scale_x, r_table_name;
 
@@ -112,7 +167,7 @@ ORDER BY r_table_schema, scale_x, r_table_name;
 -- overview factor is correct, which we do for the original table.
 SELECT o_table_schema, o_table_name, o_raster_column,
        r_table_schema, r_table_name, r_raster_column, overview_factor
-FROM raster_overviews
+FROM :schema raster_overviews
 WHERE r_table_name = 'res1'
 AND   r_table_schema = 'oschm'
 ORDER BY o_table_schema,overview_factor;
@@ -133,6 +188,104 @@ DROP TABLE o_8_res1;
 DROP TABLE o_4_res1;
 DROP TABLE res1;
 
+-- Overview creation should not require SELECT on the raster_columns view.
+SET postgis_reg.schema TO :'schema';
+DO $$
+DECLARE
+  can_manage_view boolean;
+  can_manage_role boolean;
+  had_public_select boolean;
+  ext_schema text := COALESCE(NULLIF(pg_catalog.rtrim(current_setting('postgis_reg.schema'), '.'), ''), 'public');
+  test_role name := format('rt_overview_acl_user_%s_%s', pg_backend_pid(), txid_current());
+  test_schema name := format('rt_overview_acl_%s_%s', pg_backend_pid(), txid_current());
+  created_role boolean := false;
+  created_schema boolean := false;
+BEGIN
+  SELECT pg_has_role(c.relowner, 'USAGE')
+  INTO can_manage_view
+  FROM pg_class c
+  JOIN pg_namespace n ON n.oid = c.relnamespace
+  WHERE n.nspname = ext_schema
+    AND c.relname = 'raster_columns'
+    AND c.relkind = 'v';
+
+  SELECT rolsuper
+  INTO can_manage_role
+  FROM pg_roles
+  WHERE rolname = current_user;
+
+  IF NOT COALESCE(can_manage_view, false) OR NOT COALESCE(can_manage_role, false) THEN
+    RETURN;
+  END IF;
+
+  SELECT EXISTS (
+    SELECT 1
+    FROM pg_class c
+    JOIN pg_namespace n ON n.oid = c.relnamespace
+    CROSS JOIN LATERAL aclexplode(COALESCE(c.relacl, acldefault('r', c.relowner))) a
+    WHERE n.nspname = ext_schema
+      AND c.relname = 'raster_columns'
+      AND c.relkind = 'v'
+      AND a.grantee = 0
+      AND a.privilege_type = 'SELECT'
+  )
+  INTO had_public_select;
+
+  -- Roles and schemas may outlive a failed regression on a non-disposable
+  -- PostgreSQL instance, so use per-run names and only remove objects created
+  -- by this block.
+  EXECUTE format('CREATE ROLE %I', test_role);
+  created_role := true;
+  EXECUTE format('CREATE SCHEMA %I AUTHORIZATION %I', test_schema, test_role);
+  created_schema := true;
+  EXECUTE format('GRANT USAGE ON SCHEMA %I TO %I', ext_schema, test_role);
+  EXECUTE format('REVOKE SELECT ON %I.raster_columns FROM PUBLIC', ext_schema);
+  EXECUTE format('SET ROLE %I', test_role);
+  PERFORM set_config('search_path', format('%I, %I, public', test_schema, ext_schema), true);
+
+  CREATE TABLE res_acl AS SELECT
+    ST_AddBand(
+      ST_MakeEmptyRaster(10, 10, x, y, 1, -1, 0, 0, 0)
+      , 1, '8BUI', 0, 0
+    ) r
+  FROM generate_series(0, 10, 10) x,
+       generate_series(10, 0, -10) y;
+  PERFORM addrasterconstraints('res_acl', 'r');
+
+  CREATE TABLE o_2_res_acl AS SELECT r FROM res_acl LIMIT 1;
+  PERFORM AddOverviewConstraints('o_2_res_acl', 'r', 'res_acl', 'r', 2);
+
+  RESET ROLE;
+  IF had_public_select THEN
+    EXECUTE format('GRANT SELECT ON %I.raster_columns TO PUBLIC', ext_schema);
+  ELSE
+    EXECUTE format('REVOKE SELECT ON %I.raster_columns FROM PUBLIC', ext_schema);
+  END IF;
+  EXECUTE format('DROP SCHEMA %I CASCADE', test_schema);
+  created_schema := false;
+  EXECUTE format('REVOKE USAGE ON SCHEMA %I FROM %I', ext_schema, test_role);
+  EXECUTE format('DROP ROLE %I', test_role);
+  created_role := false;
+EXCEPTION WHEN OTHERS THEN
+  RESET ROLE;
+  IF had_public_select IS NOT NULL THEN
+    IF had_public_select THEN
+      EXECUTE format('GRANT SELECT ON %I.raster_columns TO PUBLIC', ext_schema);
+    ELSE
+      EXECUTE format('REVOKE SELECT ON %I.raster_columns FROM PUBLIC', ext_schema);
+    END IF;
+  END IF;
+  IF created_schema THEN
+    EXECUTE format('DROP SCHEMA IF EXISTS %I CASCADE', test_schema);
+  END IF;
+  IF created_role THEN
+    EXECUTE format('REVOKE USAGE ON SCHEMA %I FROM %I', ext_schema, test_role);
+    EXECUTE format('DROP ROLE IF EXISTS %I', test_role);
+  END IF;
+  RAISE;
+END;
+$$;
+
 -- Reset the session environment
 -- possibly a bit harsh, but we had to set the search_path
 -- and need to reset it back to default.
diff --git a/raster/test/regress/rt_createoverview_expected b/raster/test/regress/rt_createoverview_expected
index e3afec47ac..770713afa8 100644
--- a/raster/test/regress/rt_createoverview_expected
+++ b/raster/test/regress/rt_createoverview_expected
@@ -12,12 +12,19 @@ o_2_res1|r|res1|r|2
 o_4_res1|r|res1|r|4
 o_8_res1|r|res1|r|8
 o_16_res1|r|res1|r|16
+t
+t
+t
+t
 count|544|136|36|10|3
 t
 t
 t
 t
 t
+t
+t
+t
 oschm|res1|r|0|1|-1|10|10|t|t|t|t|t|t
 oschm|o_4_res1|r|0|4|-4|10|10|t|t|t|t|t|t
 oschm|o_8_res1|r|0|8|-8|10|10|t|t|t|t|t|t

-----------------------------------------------------------------------

Summary of changes:
 NEWS                                               |   2 +
 raster/rt_pg/rtpostgis.sql.in                      |  42 +++-
 raster/test/regress/check_raster_overviews.sql     |  33 ++++
 .../test/regress/check_raster_overviews_expected   |   3 +
 raster/test/regress/rt_createoverview.sql          | 213 ++++++++++++++++++---
 raster/test/regress/rt_createoverview_expected     |   7 +
 6 files changed, 260 insertions(+), 40 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list