Hi Peter,

Il 18/01/18 17:30, Peter Eisentraut ha scritto:
> On 1/17/18 11:33, Petr Jelinek wrote:
>>> P.S: I'm struggling to understand why we have two possible values of
>>> session_replication_role settings that behave identically (origin and
>>> local). I'm unable to see any difference according to the code or the
>>> documentation, so I'm wondering if we should document that they are the
>>> same.
>>>
>> It's for use by 3rd party tools (afaik both londiste and slony use it)
>> to differentiate between replicated and not replicated changes.
> 
> I have committed some documentation updates and tests to cover this a
> bit better.
> 

Thanks, the documentation is a lot clearer now.

This superseded the documentation change that was in the patch, so I've
removed it from the v3 version.

Regards,
Marco

-- 
Marco Nenciarini - 2ndQuadrant Italy
PostgreSQL Training, Services and Support
marco.nenciar...@2ndquadrant.it | www.2ndQuadrant.it
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index f2a928b823..180ebd0717 100644
*** a/src/backend/commands/tablecmds.c
--- b/src/backend/commands/tablecmds.c
***************
*** 1340,1355 **** ExecuteTruncate(TruncateStmt *stmt)
        }
  
        /*
!        * Check foreign key references.  In CASCADE mode, this should be
!        * unnecessary since we just pulled in all the references; but as a
!        * cross-check, do it anyway if in an Assert-enabled build.
         */
  #ifdef USE_ASSERT_CHECKING
-       heap_truncate_check_FKs(rels, false);
- #else
-       if (stmt->behavior == DROP_RESTRICT)
                heap_truncate_check_FKs(rels, false);
  #endif
  
        /*
         * If we are asked to restart sequences, find all the sequences, lock 
them
--- 1340,1363 ----
        }
  
        /*
!        * Suppress foreign key references check if session replication role is
!        * set to REPLICA.
         */
+       if (SessionReplicationRole != SESSION_REPLICATION_ROLE_REPLICA)
+       {
+ 
+               /*
+                * Check foreign key references.  In CASCADE mode, this should 
be
+                * unnecessary since we just pulled in all the references; but 
as a
+                * cross-check, do it anyway if in an Assert-enabled build.
+                */
  #ifdef USE_ASSERT_CHECKING
                heap_truncate_check_FKs(rels, false);
+ #else
+               if (stmt->behavior == DROP_RESTRICT)
+                       heap_truncate_check_FKs(rels, false);
  #endif
+       }
  
        /*
         * If we are asked to restart sequences, find all the sequences, lock 
them

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to