Kevin Grittner <kgri...@ymail.com> wrote:

> Here is v2 of the patch which changes from the universally
> disliked operator names v1 used.  It also fixes bugs in the row
> comparisons for pass-by-reference types, fixes a couple nearby
> comments, and adds regression tests for a matview containing a
> box column.

I accidentally omitted the regression tests for matview with a box
column from v2.  Rather than redoing the whole thing, here is a v2a
patch to add just that omitted part.
 
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
*** a/src/test/regress/expected/matview.out
--- b/src/test/regress/expected/matview.out
***************
*** 412,418 **** ERROR:  new data for "mv" contains duplicate rows without any NULL columns
  DETAIL:  Row: (1,10)
  DROP TABLE foo CASCADE;
  NOTICE:  drop cascades to materialized view mv
! -- make sure that all indexes covered by unique indexes works
  CREATE TABLE foo(a, b, c) AS VALUES(1, 2, 3);
  CREATE MATERIALIZED VIEW mv AS SELECT * FROM foo;
  CREATE UNIQUE INDEX ON mv (a);
--- 412,418 ----
  DETAIL:  Row: (1,10)
  DROP TABLE foo CASCADE;
  NOTICE:  drop cascades to materialized view mv
! -- make sure that all columns covered by unique indexes works
  CREATE TABLE foo(a, b, c) AS VALUES(1, 2, 3);
  CREATE MATERIALIZED VIEW mv AS SELECT * FROM foo;
  CREATE UNIQUE INDEX ON mv (a);
***************
*** 424,426 **** REFRESH MATERIALIZED VIEW mv;
--- 424,446 ----
  REFRESH MATERIALIZED VIEW CONCURRENTLY mv;
  DROP TABLE foo CASCADE;
  NOTICE:  drop cascades to materialized view mv
+ -- make sure that types with unusual equality tests work
+ CREATE TABLE boxes (id serial primary key, b box);
+ INSERT INTO boxes (b) VALUES
+   ('(32,32),(31,31)'),
+   ('(2.0000004,2.0000004),(1,1)'),
+   ('(1.9999996,1.9999996),(1,1)');
+ CREATE MATERIALIZED VIEW boxmv AS SELECT * FROM boxes;
+ CREATE UNIQUE INDEX boxmv_id ON boxmv (id);
+ UPDATE boxes SET b = '(2,2),(1,1)' WHERE id = 2;
+ REFRESH MATERIALIZED VIEW CONCURRENTLY boxmv;
+ SELECT * FROM boxmv ORDER BY id;
+  id |              b              
+ ----+-----------------------------
+   1 | (32,32),(31,31)
+   2 | (2,2),(1,1)
+   3 | (1.9999996,1.9999996),(1,1)
+ (3 rows)
+ 
+ DROP TABLE boxes CASCADE;
+ NOTICE:  drop cascades to materialized view boxmv
*** a/src/test/regress/sql/matview.sql
--- b/src/test/regress/sql/matview.sql
***************
*** 143,149 **** REFRESH MATERIALIZED VIEW mv;
  REFRESH MATERIALIZED VIEW CONCURRENTLY mv;
  DROP TABLE foo CASCADE;
  
! -- make sure that all indexes covered by unique indexes works
  CREATE TABLE foo(a, b, c) AS VALUES(1, 2, 3);
  CREATE MATERIALIZED VIEW mv AS SELECT * FROM foo;
  CREATE UNIQUE INDEX ON mv (a);
--- 143,149 ----
  REFRESH MATERIALIZED VIEW CONCURRENTLY mv;
  DROP TABLE foo CASCADE;
  
! -- make sure that all columns covered by unique indexes works
  CREATE TABLE foo(a, b, c) AS VALUES(1, 2, 3);
  CREATE MATERIALIZED VIEW mv AS SELECT * FROM foo;
  CREATE UNIQUE INDEX ON mv (a);
***************
*** 154,156 **** INSERT INTO foo VALUES(3, 4, 5);
--- 154,169 ----
  REFRESH MATERIALIZED VIEW mv;
  REFRESH MATERIALIZED VIEW CONCURRENTLY mv;
  DROP TABLE foo CASCADE;
+ 
+ -- make sure that types with unusual equality tests work
+ CREATE TABLE boxes (id serial primary key, b box);
+ INSERT INTO boxes (b) VALUES
+   ('(32,32),(31,31)'),
+   ('(2.0000004,2.0000004),(1,1)'),
+   ('(1.9999996,1.9999996),(1,1)');
+ CREATE MATERIALIZED VIEW boxmv AS SELECT * FROM boxes;
+ CREATE UNIQUE INDEX boxmv_id ON boxmv (id);
+ UPDATE boxes SET b = '(2,2),(1,1)' WHERE id = 2;
+ REFRESH MATERIALIZED VIEW CONCURRENTLY boxmv;
+ SELECT * FROM boxmv ORDER BY id;
+ DROP TABLE boxes CASCADE;
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to