summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/Makefile3
-rw-r--r--contrib/README5
-rw-r--r--contrib/findoidjoins/Makefile20
-rw-r--r--contrib/findoidjoins/README.findoidjoins119
-rw-r--r--contrib/findoidjoins/findoidjoins.c147
-rwxr-xr-xcontrib/findoidjoins/make_oidjoins_check68
6 files changed, 1 insertions, 361 deletions
diff --git a/contrib/Makefile b/contrib/Makefile
index 893a2c6e0b9..0641b50872d 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/contrib/Makefile,v 1.55 2005/06/22 22:56:25 tgl Exp $
+# $PostgreSQL: pgsql/contrib/Makefile,v 1.56 2005/06/23 02:33:25 tgl Exp $
subdir = contrib
top_builddir = ..
@@ -13,7 +13,6 @@ WANTED_DIRS = \
dbmirror \
dbsize \
earthdistance \
- findoidjoins \
fulltextindex \
fuzzystrmatch \
intagg \
diff --git a/contrib/README b/contrib/README
index f14481c7bae..3e1ae62b00c 100644
--- a/contrib/README
+++ b/contrib/README
@@ -62,11 +62,6 @@ earthdistance -
Operator for computing earth distance for two points
by Hal Snyder <hal@vailsys.com>
-findoidjoins -
- Finds the joins used by oid columns by examining the actual
- values in the oid columns and row oids.
- by Bruce Momjian <pgman@candle.pha.pa.us>
-
fulltextindex -
Full text indexing using triggers
by Maarten Boekhold <maartenb@dutepp0.et.tudelft.nl>
diff --git a/contrib/findoidjoins/Makefile b/contrib/findoidjoins/Makefile
deleted file mode 100644
index a15378a2a23..00000000000
--- a/contrib/findoidjoins/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# $PostgreSQL: pgsql/contrib/findoidjoins/Makefile,v 1.17 2005/03/25 18:17:10 momjian Exp $
-
-PROGRAM = findoidjoins
-OBJS = findoidjoins.o
-
-PG_CPPFLAGS = -I$(libpq_srcdir)
-PG_LIBS = $(libpq_pgport)
-
-SCRIPTS = make_oidjoins_check
-DOCS = README.findoidjoins
-
-ifdef USE_PGXS
-PGXS = $(shell pg_config --pgxs)
-include $(PGXS)
-else
-subdir = contrib/findoidjoins
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-include $(top_srcdir)/contrib/contrib-global.mk
-endif
diff --git a/contrib/findoidjoins/README.findoidjoins b/contrib/findoidjoins/README.findoidjoins
deleted file mode 100644
index a96641430ab..00000000000
--- a/contrib/findoidjoins/README.findoidjoins
+++ /dev/null
@@ -1,119 +0,0 @@
-
- findoidjoins
-
-This program scans a database and prints oid fields (also reg* fields)
-and the tables they join to. We don't really recommend running it on
-anything but an empty database, such as template1; else it's likely to
-be very slow.
-
-Run on an empty database, it returns the system join relationships (shown
-below for 8.0). Note that unexpected matches may indicate bogus entries
-in system tables --- don't accept a peculiar match without question.
-In particular, a field shown as joining to more than one target table is
-probably messed up. In 8.0, the *only* fields that should join to more
-than one target are pg_description.objoid, pg_depend.objid, and
-pg_depend.refobjid. (Running make_oidjoins_check is an easy way to spot
-fields joining to more than one table, BTW.)
-
-The shell script make_oidjoins_check converts findoidjoins' output
-into an SQL script that checks for dangling links (entries in an
-OID or REG* column that don't match any row in the expected table).
-Note that fields joining to more than one table are NOT processed.
-
-The result of make_oidjoins_check should be installed as the "oidjoins"
-regression test. The oidjoins test should be updated after any
-revision in the patterns of cross-links between system tables.
-(Ideally we'd just regenerate the script as part of the regression
-tests themselves, but that seems too slow...)
-
-NOTE: in 8.0, make_oidjoins_check produces one bogus join check:
-Join pg_catalog.pg_class.relfilenode => pg_catalog.pg_class.oid
-This is an artifact and should not be added to the oidjoins regress test.
-Also beware of any claim that pg_database.datlastsysoid joins to anything;
-this does not actually happen in 8.0, but it did happen before and might
-happen again in future, depending on what operation initdb does last.
-
----------------------------------------------------------------------------
-
-Join pg_catalog.pg_aggregate.aggfnoid => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_aggregate.aggtransfn => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_aggregate.aggfinalfn => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_aggregate.aggtranstype => pg_catalog.pg_type.oid
-Join pg_catalog.pg_am.amgettuple => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.aminsert => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.ambeginscan => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.amrescan => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.amendscan => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.ammarkpos => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.amrestrpos => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.ambuild => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.ambulkdelete => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.amvacuumcleanup => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_am.amcostestimate => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_amop.amopclaid => pg_catalog.pg_opclass.oid
-Join pg_catalog.pg_amop.amopsubtype => pg_catalog.pg_type.oid
-Join pg_catalog.pg_amop.amopopr => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_amproc.amopclaid => pg_catalog.pg_opclass.oid
-Join pg_catalog.pg_amproc.amprocsubtype => pg_catalog.pg_type.oid
-Join pg_catalog.pg_amproc.amproc => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_attribute.attrelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_attribute.atttypid => pg_catalog.pg_type.oid
-Join pg_catalog.pg_cast.castsource => pg_catalog.pg_type.oid
-Join pg_catalog.pg_cast.casttarget => pg_catalog.pg_type.oid
-Join pg_catalog.pg_cast.castfunc => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_class.relnamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_class.reltype => pg_catalog.pg_type.oid
-Join pg_catalog.pg_class.relam => pg_catalog.pg_am.oid
-Join pg_catalog.pg_class.reltablespace => pg_catalog.pg_tablespace.oid
-Join pg_catalog.pg_class.reltoastrelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_class.reltoastidxid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_constraint.connamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_constraint.contypid => pg_catalog.pg_type.oid
-Join pg_catalog.pg_conversion.connamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_conversion.conproc => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_database.dattablespace => pg_catalog.pg_tablespace.oid
-Join pg_catalog.pg_depend.classid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_depend.refclassid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_description.classoid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_index.indexrelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_index.indrelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_language.lanvalidator => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_opclass.opcamid => pg_catalog.pg_am.oid
-Join pg_catalog.pg_opclass.opcnamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_opclass.opcintype => pg_catalog.pg_type.oid
-Join pg_catalog.pg_operator.oprnamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_operator.oprleft => pg_catalog.pg_type.oid
-Join pg_catalog.pg_operator.oprright => pg_catalog.pg_type.oid
-Join pg_catalog.pg_operator.oprresult => pg_catalog.pg_type.oid
-Join pg_catalog.pg_operator.oprcom => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_operator.oprnegate => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_operator.oprlsortop => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_operator.oprrsortop => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_operator.oprltcmpop => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_operator.oprgtcmpop => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_operator.oprcode => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_operator.oprrest => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_operator.oprjoin => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_proc.pronamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_proc.prolang => pg_catalog.pg_language.oid
-Join pg_catalog.pg_proc.prorettype => pg_catalog.pg_type.oid
-Join pg_catalog.pg_rewrite.ev_class => pg_catalog.pg_class.oid
-Join pg_catalog.pg_statistic.starelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_statistic.staop1 => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_statistic.staop2 => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_statistic.staop3 => pg_catalog.pg_operator.oid
-Join pg_catalog.pg_trigger.tgrelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_trigger.tgfoid => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_type.typnamespace => pg_catalog.pg_namespace.oid
-Join pg_catalog.pg_type.typrelid => pg_catalog.pg_class.oid
-Join pg_catalog.pg_type.typelem => pg_catalog.pg_type.oid
-Join pg_catalog.pg_type.typinput => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_type.typoutput => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_type.typreceive => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_type.typsend => pg_catalog.pg_proc.oid
-Join pg_catalog.pg_type.typbasetype => pg_catalog.pg_type.oid
-
----------------------------------------------------------------------------
-
-Bruce Momjian (root@candle.pha.pa.us)
-Updated for 7.3 by Joe Conway (mail@joeconway.com)
diff --git a/contrib/findoidjoins/findoidjoins.c b/contrib/findoidjoins/findoidjoins.c
deleted file mode 100644
index 3afcd7c3c35..00000000000
--- a/contrib/findoidjoins/findoidjoins.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * findoidjoins.c
- *
- * Copyright (c) 2002-2005, PostgreSQL Global Development Group
- *
- * $PostgreSQL: pgsql/contrib/findoidjoins/findoidjoins.c,v 1.25 2005/01/01 05:43:05 momjian Exp $
- */
-#include "postgres_fe.h"
-
-#include "libpq-fe.h"
-#include "pqexpbuffer.h"
-
-
-int
-main(int argc, char **argv)
-{
- PGconn *conn;
- PQExpBufferData sql;
- PGresult *res;
- PGresult *pkrel_res;
- PGresult *fkrel_res;
- char *fk_relname;
- char *fk_nspname;
- char *fk_attname;
- char *pk_relname;
- char *pk_nspname;
- int fk,
- pk; /* loop counters */
-
- if (argc != 2)
- {
- fprintf(stderr, "Usage: %s database\n", argv[0]);
- exit(EXIT_FAILURE);
- }
-
- initPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql, "dbname=%s", argv[1]);
-
- conn = PQconnectdb(sql.data);
- if (PQstatus(conn) == CONNECTION_BAD)
- {
- fprintf(stderr, "connection error: %s\n", PQerrorMessage(conn));
- exit(EXIT_FAILURE);
- }
-
- /* Get a list of relations that have OIDs */
-
- resetPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql, "%s",
- "SET search_path = public;"
- "SELECT c.relname, (SELECT nspname FROM "
- "pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
- "FROM pg_catalog.pg_class c "
- "WHERE c.relkind = 'r' "
- "AND c.relhasoids "
- "ORDER BY nspname, c.relname"
- );
-
- res = PQexec(conn, sql.data);
- if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
- {
- fprintf(stderr, "sql error: %s\n", PQerrorMessage(conn));
- exit(EXIT_FAILURE);
- }
- pkrel_res = res;
-
- /* Get a list of columns of OID type (or any OID-alias type) */
-
- resetPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql, "%s",
- "SELECT c.relname, "
- "(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
- "a.attname "
- "FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
- "WHERE a.attnum > 0 AND c.relkind = 'r' "
- "AND a.attrelid = c.oid "
- "AND a.atttypid IN ('pg_catalog.oid'::regtype, "
- " 'pg_catalog.regclass'::regtype, "
- " 'pg_catalog.regoper'::regtype, "
- " 'pg_catalog.regoperator'::regtype, "
- " 'pg_catalog.regproc'::regtype, "
- " 'pg_catalog.regprocedure'::regtype, "
- " 'pg_catalog.regtype'::regtype) "
- "ORDER BY nspname, c.relname, a.attnum"
- );
-
- res = PQexec(conn, sql.data);
- if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
- {
- fprintf(stderr, "sql error: %s\n", PQerrorMessage(conn));
- exit(EXIT_FAILURE);
- }
- fkrel_res = res;
-
- /*
- * For each column and each relation-having-OIDs, look to see if the
- * column contains any values matching entries in the relation.
- */
-
- for (fk = 0; fk < PQntuples(fkrel_res); fk++)
- {
- fk_relname = PQgetvalue(fkrel_res, fk, 0);
- fk_nspname = PQgetvalue(fkrel_res, fk, 1);
- fk_attname = PQgetvalue(fkrel_res, fk, 2);
-
- for (pk = 0; pk < PQntuples(pkrel_res); pk++)
- {
- pk_relname = PQgetvalue(pkrel_res, pk, 0);
- pk_nspname = PQgetvalue(pkrel_res, pk, 1);
-
- resetPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql,
- "SELECT 1 "
- "FROM \"%s\".\"%s\" t1, "
- "\"%s\".\"%s\" t2 "
- "WHERE t1.\"%s\"::pg_catalog.oid = t2.oid "
- "LIMIT 1",
- fk_nspname, fk_relname, pk_nspname, pk_relname, fk_attname);
-
- res = PQexec(conn, sql.data);
- if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
- {
- fprintf(stderr, "sql error: %s\n", PQerrorMessage(conn));
- exit(EXIT_FAILURE);
- }
-
- if (PQntuples(res) != 0)
- printf("Join %s.%s.%s => %s.%s.oid\n",
- fk_nspname, fk_relname, fk_attname,
- pk_nspname, pk_relname);
-
- PQclear(res);
- }
- }
-
- PQclear(pkrel_res);
- PQclear(fkrel_res);
- PQfinish(conn);
-
- termPQExpBuffer(&sql);
-
- exit(EXIT_SUCCESS);
-}
diff --git a/contrib/findoidjoins/make_oidjoins_check b/contrib/findoidjoins/make_oidjoins_check
deleted file mode 100755
index b6a720a5048..00000000000
--- a/contrib/findoidjoins/make_oidjoins_check
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /bin/sh
-
-# You first run findoidjoins on the template1 database, and send that
-# output into this script to generate a list of SQL statements.
-
-# NOTE: any field that findoidjoins thinks joins to more than one table
-# will NOT be checked by the output of this script. You should be
-# suspicious of multiple entries in findoidjoins' output.
-
-# Caution: you may need to use GNU awk.
-AWK=${AWK:-awk}
-
-TMP="${TMPDIR:-/tmp}/make_oidjoins_check.$$"
-trap "rm -rf $TMP" 0 1 2 3 15
-
-# Create a temporary directory with the proper permissions so no one can
-# intercept our temporary files and cause a security breach.
-OMASK="`umask`"
-umask 077
-if ! mkdir $TMP
-then echo "Can't create temporary directory $TMP." 1>&2
- exit 1
-fi
-umask "$OMASK"
-unset OMASK
-
-INPUTFILE="$TMP/a"
-DUPSFILE="$TMP/b"
-NONDUPSFILE="$TMP/c"
-
-# Read input
-cat "$@" >$INPUTFILE
-
-# Look for fields with multiple references.
-cat $INPUTFILE | cut -d' ' -f2 | sort | uniq -d >$DUPSFILE
-if [ -s $DUPSFILE ] ; then
- echo "Ignoring these fields that link to multiple tables:" 1>&2
- cat $DUPSFILE 1>&2
-fi
-
-# Get the non-multiply-referenced fields.
-cat $INPUTFILE | while read LINE
-do
- set -- $LINE
- grep "^$2\$" $DUPSFILE >/dev/null 2>&1 || echo $LINE
-done >$NONDUPSFILE
-
-# Generate the output.
-cat $NONDUPSFILE |
-$AWK -F'[ \.]' '\
- BEGIN \
- {
- printf "\
---\n\
--- This is created by pgsql/contrib/findoidjoins/make_oidjoin_check\n\
---\n";
- }
- {
- printf "\
-SELECT ctid, %s \n\
-FROM %s.%s fk \n\
-WHERE %s != 0 AND \n\
- NOT EXISTS(SELECT 1 FROM %s.%s pk WHERE pk.oid = fk.%s);\n",
- $4, $2, $3, $4,
- $6, $7, $4;
- }'
-
-exit 0