Remove ipcclean utility command --- didn't work on all Unixes and on
authorBruce Momjian
Thu, 27 Mar 2008 17:24:16 +0000 (17:24 +0000)
committerBruce Momjian
Thu, 27 Mar 2008 17:24:16 +0000 (17:24 +0000)
Windows.  Users should use their operating system tools instead.

doc/src/sgml/ref/allfiles.sgml
doc/src/sgml/ref/ipcclean.sgml [deleted file]
doc/src/sgml/reference.sgml
src/backend/utils/init/miscinit.c
src/bin/Makefile
src/bin/ipcclean/Makefile [deleted file]
src/bin/ipcclean/ipcclean.sh [deleted file]

index 898c2c67910e6efa5ce190aff896d9a29ca3bf78..b80a2cf8f04895372b5b20c54490f49b72bac88f 100644 (file)
@@ -1,5 +1,5 @@
 
@@ -145,7 +145,6 @@ Complete list of usable sgml source files in this directory.
 
 
 
-
 
 
 
diff --git a/doc/src/sgml/ref/ipcclean.sgml b/doc/src/sgml/ref/ipcclean.sgml
deleted file mode 100644 (file)
index 97f0d88..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-  ipcclean
-  1
-  Application
-
-  ipcclean
-  remove shared memory and semaphores from a failed PostgreSQL server
-
-  ipcclean
-
-  
-   ipcclean
-  
-
-  Description
-  
-   ipcclean removes all shared memory segments and
-   semaphore sets owned by the current user.  It is intended to be
-   used for cleaning up after a crashed
-   PostgreSQL server (
-   linkend="app-postgres">).  Note that immediately restarting the
-   server will also clean up shared memory and semaphores, so this
-   command is of little real utility.
-  
-
-  
-   Only the database administrator should execute this program as it
-   can cause bizarre behavior (i.e., crashes) if run during multiuser
-   execution.  If this command is executed while a server is running,
-   the shared memory and semaphores allocated by that server will be
-   deleted, which would have rather severe consequences for that
-   server.
-  
-
-  Notes
-
-  
-   This script is a hack, but in the many years since it was written,
-   no one has come up with an equally effective and portable solution.
-   Since postgres can now clean up by
-   itself, it is unlikely that ipcclean will be
-   improved upon in the future.
-  
-
-  
-   The script makes assumptions about the output format of the
-   ipcs
-   utility which might not be true across different operating systems.
-   Therefore, it might not work on your particular OS.  It's wise to
-   look at the script before trying it.
-  
-
-
index 1e8e54653147f8a83b23a884b579e4becbb996ce..a0aed8edf535689d54f3a1ac4eca16b8fddc4bfd 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
 
  Reference
   
 
    &initdb;
-   &ipcclean;
    &pgControldata;
    &pgCtl;
    &pgResetxlog;
index 5a42a8953a7a3e64fbe6790cbf2721e45f952213..5369da439b6a8a270e07ce6771d0f476be0d1775 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.166 2008/01/03 21:23:15 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.167 2008/03/27 17:24:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -841,8 +841,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
                                        id1, id2),
                                 errhint("If you're sure there are no old "
                                    "server processes still running, remove "
-                                        "the shared memory block with "
-                                     "the command \"ipcclean\", \"ipcrm\", "
+                                        "the shared memory block "
                                         "or just delete the file \"%s\".",
                                         filename)));
                }
index 56389351272bf5c52ae68d3cd1f20f4f5413a191..2dbd93ec512a80e093164cffe963db0bb1eb38cc 100644 (file)
@@ -5,7 +5,7 @@
 # Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/bin/Makefile,v 1.52 2008/03/18 16:24:50 petere Exp $
+# $PostgreSQL: pgsql/src/bin/Makefile,v 1.53 2008/03/27 17:24:16 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -13,7 +13,7 @@ subdir = src/bin
 top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
-DIRS = initdb ipcclean pg_ctl pg_dump \
+DIRS = initdb pg_ctl pg_dump \
    psql scripts pg_config pg_controldata pg_resetxlog
 ifeq ($(PORTNAME), win32)
 DIRS+=pgevent
diff --git a/src/bin/ipcclean/Makefile b/src/bin/ipcclean/Makefile
deleted file mode 100644 (file)
index 18cca54..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile for src/bin/ipcclean
-#
-# Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
-# Portions Copyright (c) 1994, Regents of the University of California
-#
-# $PostgreSQL: pgsql/src/bin/ipcclean/Makefile,v 1.22 2008/01/01 19:45:55 momjian Exp $
-#
-#-------------------------------------------------------------------------
-
-subdir = src/bin/ipcclean
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-all: ipcclean
-
-ipcclean: ipcclean.sh
-   cp $< $@
-   chmod a+x $@
-
-install: all installdirs
-   $(INSTALL_SCRIPT) ipcclean '$(DESTDIR)$(bindir)/ipcclean'
-
-installdirs:
-   $(mkinstalldirs) '$(DESTDIR)$(bindir)'
-
-uninstall:
-   rm -f '$(DESTDIR)$(bindir)/ipcclean'
-
-clean distclean maintainer-clean:
-   rm -f ipcclean
diff --git a/src/bin/ipcclean/ipcclean.sh b/src/bin/ipcclean/ipcclean.sh
deleted file mode 100644 (file)
index f55f8c7..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/bin/sh
-#
-# $PostgreSQL: pgsql/src/bin/ipcclean/ipcclean.sh,v 1.18 2006/03/03 21:52:37 momjian Exp $
-#
-
-CMDNAME=`basename $0`
-
-if [ "$1" = '-?' -o "$1" = "--help" ]; then
-    echo "$CMDNAME cleans up shared memory and semaphores from aborted PostgreSQL"
-    echo "backends."
-    echo
-    echo "Usage:"
-    echo "  $CMDNAME"
-    echo
-    echo "Note: Since the utilities underlying this script are very different"
-    echo "from platform to platform, chances are that it might not work on"
-    echo "yours. If that is the case, please write to "
-    echo "so that your platform can be supported in the future."
-    exit 0
-fi
-
-# test for running as root
-
-ISROOT="N"
-if id -u >/dev/null 2>&1
-then   if [ `id -u` -eq 0 ]
-   then    ISROOT="Y"
-   fi
-elif   # only check $LOGNAME if $USER is not set
-   [ "$USER" = 'root' -o \( ! "$USER" -a "$LOGNAME" = 'root' \) ]
-then   ISROOT="Y"
-fi
-
-if [ "$ISROOT" = "Y" ]
-then
-  (
-    echo "$CMDNAME: cannot be run as root" 1>&2
-    echo "Please log in (using, e.g., \"su\") as the (unprivileged) user that" 1>&2
-    echo "owned the server process." 1>&2
-  ) 1>&2
-    exit 1
-fi
-
-EffectiveUser=`id -n -u 2>/dev/null || whoami 2>/dev/null`
-
-#-----------------------------------
-# List of platform-specific hacks
-# Feel free to add yours here.
-#-----------------------------------
-#
-# This is based on RedHat 5.2.
-#
-if [ `uname` = 'Linux' ]; then
-    did_anything=
-
-    if ps x | grep -s '[p]ostmaster' >/dev/null 2>&1 ; then
-        echo "$CMDNAME: a postmaster is still running" 1>&2
-        exit 1
-    fi
-
-    # shared memory
-    for val in `ipcs -m -p | grep '^[0-9]' | awk '{printf "%s:%s:%s\n", $1, $3, $4}'`
-    do
-   save_IFS=$IFS
-   IFS=:
-   set X $val
-   shift
-   IFS=$save_IFS
-   ipcs_shmid=$1
-   ipcs_cpid=$2
-   ipcs_lpid=$3
-
-        # Note: We can do -n here, because we know the platform.
-        echo -n "Shared memory $ipcs_shmid ... "
-
-        # Don't do anything if process still running.
-        # (This check is conceptually phony, but it's
-        # useful anyway in practice.)
-        ps hj $ipcs_cpid $ipcs_lpid >/dev/null 2>&1
-        if [ "$?" -eq 0 ]; then
-            echo "skipped; process still exists (pid $ipcs_cpid or $ipcs_lpid)."
-       continue
-   fi
-
-        # try remove
-        ipcrm shm $ipcs_shmid
-        if [ "$?" -eq 0 ]; then
-            did_anything=t
-        else
-            exit
-        fi
-    done
-
-    # semaphores
-    for val in `ipcs -s -c | grep '^[0-9]' | awk '{printf "%s\n", $1}'`; do
-        echo -n "Semaphore $val ... "
-        # try remove
-        ipcrm sem $val
-        if [ "$?" -eq 0 ]; then
-            did_anything=t
-        else
-            exit
-        fi
-    done
-
-    [ -z "$did_anything" ] && echo "$CMDNAME: nothing removed" && exit 1
-    exit 0
-fi # end Linux
-
-
-# This is the original implementation. It seems to work
-# on FreeBSD, SunOS/Solaris, HP-UX, IRIX, and probably
-# some others.
-
-ipcs | egrep '^m .*|^s .*' | egrep "$EffectiveUser" | \
-awk '{printf "ipcrm -%s %s\n", $1, $2}' '-' | sh