Re: [HACKERS] What is this...? - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] What is this...?
Date
Msg-id 199803091448.JAA01228@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] What is this...?  (jwieck@debis.com (Jan Wieck))
List pgsql-hackers
> > QUERY: copy pg_user from stdin;
>
>               ^^^^^^^ COPY into a view? Cool!
>
> > Enter info followed by a newline
> > End with a backslash and a period on a line by itself.
>
>     So we missed something when renaming pg_user into pg_shadow.
>     Damn.

Here is a patch.  Haven't tested it yet, but patch has been applied to
source tree.

---------------------------------------------------------------------------

*** ./bin/pg_dump/pg_dumpall.orig    Fri Mar  6 12:17:36 1998
--- ./bin/pg_dump/pg_dumpall    Fri Mar  6 12:18:26 1998
***************
*** 2,8 ****
  #
  # pg_dumpall [pg_dump parameters]
  # dumps all databases to standard output
! # It also dumps the pg_user table
  #
  # to adapt to System V vs. BSD 'echo'
  #set -x
--- 2,8 ----
  #
  # pg_dumpall [pg_dump parameters]
  # dumps all databases to standard output
! # It also dumps the pg_shadow table
  #
  # to adapt to System V vs. BSD 'echo'
  #set -x
***************
*** 30,50 ****
  # we don't use POSTGRES_SUPER_USER_ID because the postgres super user id
  # could be different on the two installations
  #
! echo "select datdba into table tmp_pguser \
        from pg_database where datname = 'template1';"
! echo "delete from pg_user where usesysid <> tmp_pguser.datdba;"
! echo "drop table tmp_pguser;"
  #
  # load all the non-postgres users
  #
! echo "copy pg_user from stdin;"
  psql -q template1 <<END
! select pg_user.*
! into table tmp_pg_user
! from pg_user
  where usesysid <> $POSTGRES_SUPER_USER_ID;
! copy tmp_pg_user to stdout;
! drop table tmp_pg_user;
  END
  echo "${BS}."
  psql -l -A -q -t| tr '|' ' ' | grep -v '^template1 ' | \
--- 30,50 ----
  # we don't use POSTGRES_SUPER_USER_ID because the postgres super user id
  # could be different on the two installations
  #
! echo "select datdba into table tmp_pg_shadow \
        from pg_database where datname = 'template1';"
! echo "delete from pg_shadow where usesysid <> tmp_pg_shadow.datdba;"
! echo "drop table tmp_pg_shadow;"
  #
  # load all the non-postgres users
  #
! echo "copy pg_shadow from stdin;"
  psql -q template1 <<END
! select pg_shadow.*
! into table tmp_pg_shadow
! from pg_shadow
  where usesysid <> $POSTGRES_SUPER_USER_ID;
! copy tmp_pg_shadow to stdout;
! drop table tmp_pg_shadow;
  END
  echo "${BS}."
  psql -l -A -q -t| tr '|' ' ' | grep -v '^template1 ' | \
***************
*** 52,58 ****
  do
      POSTGRES_USER="`echo \" \
          select usename \
!         from pg_user \
          where usesysid = $DBUSERID; \" | \
          psql -A -q -t template1`"
      echo "${BS}connect template1 $POSTGRES_USER"
--- 52,58 ----
  do
      POSTGRES_USER="`echo \" \
          select usename \
!         from pg_shadow \
          where usesysid = $DBUSERID; \" | \
          psql -A -q -t template1`"
      echo "${BS}connect template1 $POSTGRES_USER"

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

pgsql-hackers by date:

Previous
From: Andrew Martin
Date:
Subject: Re: [HACKERS] How to...?
Next
From: jwieck@debis.com (Jan Wieck)
Date:
Subject: Re: [HACKERS] create trigger question