Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > In the patch, notice the old comment that suggests we might need to use
> > CommandCounterIncrement().
> 
> ... which you failed to fix in any meaningful way.  I'd suggest
> 
>       /*
>        * Advance the commmand counter to ensure we see all results
>        * of current transaction.
>        */
>       CommandCounterIncrement();
> 
> and then change SnapshotSelf to SnapshotNow, since there's no longer any
> reason for it to be special.  Compare to CVS tip which already does it
> that way.  See also the identical code in write_user_file (which perhaps
> has no bug, but ISTM it should stay identical).

OK, updated patch.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/commands/user.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/user.c,v
retrieving revision 1.147
diff -c -c -r1.147 user.c
*** src/backend/commands/user.c 31 Dec 2004 21:59:42 -0000      1.147
--- src/backend/commands/user.c 14 Oct 2005 17:36:54 -0000
***************
*** 175,184 ****
  
        /*
         * Read pg_group and write the file.  Note we use SnapshotSelf to
!        * ensure we see all effects of current transaction.  (Perhaps could
!        * do a CommandCounterIncrement beforehand, instead?)
         */
!       scan = heap_beginscan(grel, SnapshotSelf, 0, NULL);
        while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
        {
                Datum           datum,
--- 175,184 ----
  
        /*
         * Read pg_group and write the file.  Note we use SnapshotSelf to
!        * ensure we see all effects of current transaction.
         */
!       CommandCounterIncrement();      /* see our current changes */
!       scan = heap_beginscan(grel, SnapshotNow, 0, NULL);
        while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
        {
                Datum           datum,
***************
*** 322,331 ****
  
        /*
         * Read pg_shadow and write the file.  Note we use SnapshotSelf to
!        * ensure we see all effects of current transaction.  (Perhaps could
!        * do a CommandCounterIncrement beforehand, instead?)
         */
!       scan = heap_beginscan(urel, SnapshotSelf, 0, NULL);
        while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
        {
                Datum           datum;
--- 322,331 ----
  
        /*
         * Read pg_shadow and write the file.  Note we use SnapshotSelf to
!        * ensure we see all effects of current transaction.
         */
!       CommandCounterIncrement();      /* see our current changes */
!       scan = heap_beginscan(urel, SnapshotNow, 0, NULL);
        while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
        {
                Datum           datum;
***************
*** 781,786 ****
--- 781,787 ----
         * Set flag to update flat password file at commit.
         */
        user_file_update_needed();
+       group_file_update_needed();
  }
  
  
***************
*** 1200,1205 ****
--- 1201,1207 ----
         * Set flag to update flat password file at commit.
         */
        user_file_update_needed();
+       group_file_update_needed();
  }
  
  
***************
*** 1286,1291 ****
--- 1288,1294 ----
        heap_close(rel, NoLock);
  
        user_file_update_needed();
+       group_file_update_needed();
  }
  
  

Reply via email to