Improve documentation for CREATE RECURSIVE VIEW.
authorTom Lane
Tue, 11 Oct 2016 14:08:45 +0000 (10:08 -0400)
committerTom Lane
Tue, 11 Oct 2016 14:09:07 +0000 (10:09 -0400)
It was perhaps not entirely clear that internal self-references shouldn't
be schema-qualified even if the view name is written with a schema.
Spell it out.

Discussion: <[email protected]>

doc/src/sgml/ref/create_view.sgml

index 2af6f6e028e2e07542eca66971e75114d3c9c4ef..a78faf1af58f9835c4738d5df5bb69587addd01e 100644 (file)
@@ -86,13 +86,13 @@ CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW 
      
       Creates a recursive view.  The syntax
 
-CREATE RECURSIVE VIEW name (columns) AS SELECT ...;
+CREATE RECURSIVE VIEW schema . ] view_name (column_names) AS SELECT ...;
 
       is equivalent to
 
-CREATE VIEW name AS WITH RECURSIVE name (columns) AS (SELECT ...) SELECT columns FROM name;
+CREATE VIEW schema . ] view_name AS WITH RECURSIVE view_name (column_names) AS (SELECT ...) SELECT column_names FROM view_name;
 
-      A view column list must be specified for a recursive view.
+      A view column name list must be specified for a recursive view.
      
     
    
@@ -303,11 +303,16 @@ CREATE VIEW comedies AS
   
    Create a recursive view consisting of the numbers from 1 to 100:
 
-CREATE RECURSIVE VIEW nums_1_100 (n) AS
+CREATE RECURSIVE VIEW public.nums_1_100 (n) AS
     VALUES (1)
 UNION ALL
     SELECT n+1 FROM nums_1_100 WHERE n < 100;
-
+
+   Notice that although the recursive view's name is schema-qualified in this
+   CREATE, its internal self-reference is not schema-qualified.
+   This is because the implicitly-created CTE's name cannot be
+   schema-qualified.
+