Accept plan changes in updatable_views regression tests
authorTomas Vondra <tomas@2ndquadrant.com>
Fri, 7 Jul 2017 22:43:12 +0000 (00:43 +0200)
committerTomas Vondra <tomas@2ndquadrant.com>
Fri, 7 Jul 2017 22:43:12 +0000 (00:43 +0200)
The accepted plan changes are trivial and exactly match upstream changes
mostly due to commits 215b43cdc8 and 92a43e4857.

I've not accepted changes in the two UPDATE plans at the very end, as
those are more complicated and require more thorough investigation.

src/test/regress/expected/updatable_views.out

index 97aeee83e31016003ee2b39b117aedb0fee3d1ce..e9758b0b4147abd0abb42f827c5ff81d77a0e0b5 100644 (file)
@@ -1662,7 +1662,7 @@ EXPLAIN (costs off, nodes off) UPDATE rw_view1 SET a = a + 5;
 -----------------------------------------------------------------------------
  Remote Subquery Scan on any
    ->  Update on base_tbl b
-         ->  Hash Semi Join
+         ->  Hash Join
                Hash Cond: (b.a = r.a)
                ->  Seq Scan on base_tbl b
                ->  Hash
@@ -1871,28 +1871,22 @@ EXPLAIN (costs off, nodes off) SELECT * FROM rw_view1 WHERE snoop(person);
 (5 rows)
 
 EXPLAIN (costs off, nodes off) UPDATE rw_view1 SET person=person WHERE snoop(person);
-                           QUERY PLAN                            
------------------------------------------------------------------
- Remote Subquery Scan on all
-   ->  Update on base_tbl base_tbl_1
-         ->  Subquery Scan on base_tbl
-               Filter: snoop(base_tbl.person)
-               ->  LockRows
-                     ->  Seq Scan on base_tbl base_tbl_2
-                           Filter: (visibility = 'public'::text)
-(7 rows)
+                               QUERY PLAN                                
+-------------------------------------------------------------------------
+ Remote Subquery Scan on any
+   ->  Update on base_tbl
+         ->  Seq Scan on base_tbl
+               Filter: ((visibility = 'public'::text) AND snoop(person))
+(4 rows)
 
 EXPLAIN (costs off, nodes off) DELETE FROM rw_view1 WHERE NOT snoop(person);
-                           QUERY PLAN                            
------------------------------------------------------------------
- Remote Subquery Scan on all
-   ->  Delete on base_tbl base_tbl_1
-         ->  Subquery Scan on base_tbl
-               Filter: (NOT snoop(base_tbl.person))
-               ->  LockRows
-                     ->  Seq Scan on base_tbl base_tbl_2
-                           Filter: (visibility = 'public'::text)
-(7 rows)
+                                  QUERY PLAN                                   
+-------------------------------------------------------------------------------
+ Remote Subquery Scan on any
+   ->  Delete on base_tbl
+         ->  Seq Scan on base_tbl
+               Filter: ((visibility = 'public'::text) AND (NOT snoop(person)))
+(4 rows)
 
 -- security barrier view on top of security barrier view
 CREATE VIEW rw_view2 WITH (security_barrier = true) AS
@@ -1944,32 +1938,22 @@ EXPLAIN (costs off, nodes off) SELECT * FROM rw_view2 WHERE snoop(person);
 (7 rows)
 
 EXPLAIN (costs off, nodes off) UPDATE rw_view2 SET person=person WHERE snoop(person);
-                              QUERY PLAN                               
------------------------------------------------------------------------
- Remote Subquery Scan on all
-   ->  Update on base_tbl base_tbl_1
-         ->  Subquery Scan on base_tbl
-               Filter: snoop(base_tbl.person)
-               ->  Subquery Scan on base_tbl_2
-                     Filter: snoop(base_tbl_2.person)
-                     ->  LockRows
-                           ->  Seq Scan on base_tbl base_tbl_3
-                                 Filter: (visibility = 'public'::text)
-(9 rows)
+                                        QUERY PLAN                                         
+-------------------------------------------------------------------------------------------
+ Remote Subquery Scan on any
+   ->  Update on base_tbl
+         ->  Seq Scan on base_tbl
+               Filter: ((visibility = 'public'::text) AND snoop(person) AND snoop(person))
+(4 rows)
 
 EXPLAIN (costs off, nodes off) DELETE FROM rw_view2 WHERE NOT snoop(person);
-                              QUERY PLAN                               
------------------------------------------------------------------------
- Remote Subquery Scan on all
-   ->  Delete on base_tbl base_tbl_1
-         ->  Subquery Scan on base_tbl
-               Filter: (NOT snoop(base_tbl.person))
-               ->  Subquery Scan on base_tbl_2
-                     Filter: snoop(base_tbl_2.person)
-                     ->  LockRows
-                           ->  Seq Scan on base_tbl base_tbl_3
-                                 Filter: (visibility = 'public'::text)
-(9 rows)
+                                           QUERY PLAN                                            
+-------------------------------------------------------------------------------------------------
+ Remote Subquery Scan on any
+   ->  Delete on base_tbl
+         ->  Seq Scan on base_tbl
+               Filter: ((visibility = 'public'::text) AND snoop(person) AND (NOT snoop(person)))
+(4 rows)
 
 DROP TABLE base_tbl CASCADE;
 NOTICE:  drop cascades to 2 other objects
@@ -1994,19 +1978,17 @@ SELECT * FROM rw_view1;
 (1 row)
 
 EXPLAIN (costs off, nodes off) DELETE FROM rw_view1 WHERE id = 1 AND snoop(data);
-                                  QUERY PLAN                                   
--------------------------------------------------------------------------------
+                               QUERY PLAN                                
+-------------------------------------------------------------------------
  Remote Subquery Scan on any
    ->  Update on base_tbl base_tbl_1
          ->  Nested Loop
                ->  Index Scan using base_tbl_pkey on base_tbl base_tbl_1
                      Index Cond: (id = 1)
-               ->  Subquery Scan on base_tbl
-                     Filter: snoop(base_tbl.data)
-                     ->  Index Scan using base_tbl_pkey on base_tbl base_tbl_2
-                           Index Cond: (id = 1)
-                           Filter: (NOT deleted)
-(10 rows)
+               ->  Index Scan using base_tbl_pkey on base_tbl
+                     Index Cond: (id = 1)
+                     Filter: ((NOT deleted) AND snoop(data))
+(8 rows)
 
 DELETE FROM rw_view1 WHERE id = 1 AND snoop(data);
 EXPLAIN (costs off, nodes off) INSERT INTO rw_view1 VALUES (2, 'New row 2');