Fix thinko in matview patch.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Mar 2013 16:00:24 +0000 (12:00 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Mar 2013 16:00:24 +0000 (12:00 -0400)
"break" instead of "continue" suppressed view expansion for views appearing
later in the range table.  Per report from Erikjan Rijkers.

While at it, improve the associated comment a bit.

src/backend/rewrite/rewriteHandler.c

index b99b9930d6a836903a3513b95fd487a322d8c589..8abf5e438c10139e19f83830a16073f9dd2b812f 100644 (file)
@@ -1605,20 +1605,20 @@ fireRIRrules(Query *parsetree, List *activeRIRs, bool forUpdatePushedDown)
        rel = heap_open(rte->relid, NoLock);
 
        /*
-        * Skip materialized view expansion when it is being created.
+        * Ignore RIR rules for a materialized view, if it is scannable.
         *
-        * NOTE: This is assuming that we cannot have gotten to this point
-        * with a non-scannable materialized view unless it is being
-        * populated, and that if it is scannable we want to use the existing
-        * contents. It would be nice to have some way to confirm that we're
-        * doing the right thing here, but rule expansion doesn't give us a
-        * lot to work with, so we are trusting earlier validations and
-        * execution steps to get it right.
+        * NOTE: This is assuming that if an MV is scannable then we always
+        * want to use the existing contents, and if it is not scannable we
+        * cannot have gotten to this point unless it is being populated
+        * (otherwise an error should be thrown).  It would be nice to have
+        * some way to confirm that we're doing the right thing here, but rule
+        * expansion doesn't give us a lot to work with, so we are trusting
+        * earlier validations to throw error if needed.
         */
        if (rel->rd_rel->relkind == RELKIND_MATVIEW && rel->rd_isscannable)
        {
            heap_close(rel, NoLock);
-           break;
+           continue;
        }
 
        /*