summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rwxr-xr-xsrc/tools/FAQ2txt2
-rw-r--r--src/tools/RELEASE_CHANGES26
-rwxr-xr-xsrc/tools/add_cvs_markers50
-rw-r--r--src/tools/backend/README5
-rw-r--r--src/tools/backend/backend_dirs.html3
-rw-r--r--src/tools/backend/index.html2
-rwxr-xr-xsrc/tools/ccsym2
-rwxr-xr-xsrc/tools/check_keywords.pl6
-rwxr-xr-xsrc/tools/codelines4
-rwxr-xr-xsrc/tools/copyright3
-rw-r--r--src/tools/editors/emacs.samples9
-rw-r--r--src/tools/editors/vim.samples1
-rw-r--r--src/tools/entab/Makefile9
-rw-r--r--src/tools/entab/entab.c2
-rw-r--r--src/tools/entab/entab.man4
-rw-r--r--src/tools/entab/halt.c2
-rwxr-xr-xsrc/tools/find_badmacros3
-rwxr-xr-xsrc/tools/find_gt_lt2
-rwxr-xr-xsrc/tools/find_static11
-rwxr-xr-xsrc/tools/find_typedef8
-rw-r--r--src/tools/findoidjoins/Makefile8
-rw-r--r--src/tools/findoidjoins/README70
-rw-r--r--src/tools/findoidjoins/findoidjoins.c99
-rwxr-xr-xsrc/tools/findoidjoins/make_oidjoins_check30
-rw-r--r--src/tools/fsync/Makefile25
-rw-r--r--src/tools/fsync/README11
-rw-r--r--src/tools/fsync/test_fsync.c384
-rw-r--r--src/tools/git-external-diff24
-rwxr-xr-xsrc/tools/git_changelog284
-rw-r--r--src/tools/ifaddrs/Makefile4
-rw-r--r--src/tools/ifaddrs/README2
-rw-r--r--src/tools/ifaddrs/test_ifaddrs.c2
-rwxr-xr-xsrc/tools/make_ctags2
-rw-r--r--src/tools/make_diff/README7
-rwxr-xr-xsrc/tools/make_diff/cporig2
-rwxr-xr-xsrc/tools/make_diff/difforig2
-rwxr-xr-xsrc/tools/make_diff/rmorig2
-rwxr-xr-xsrc/tools/make_etags2
-rwxr-xr-xsrc/tools/make_keywords2
-rwxr-xr-xsrc/tools/make_mkid2
-rw-r--r--src/tools/msvc/Install.pm73
-rw-r--r--src/tools/msvc/Mkvcbuild.pm67
-rw-r--r--src/tools/msvc/Project.pm2
-rw-r--r--src/tools/msvc/README10
-rw-r--r--src/tools/msvc/Solution.pm27
-rwxr-xr-xsrc/tools/msvc/build.bat2
-rw-r--r--src/tools/msvc/build.pl3
-rwxr-xr-xsrc/tools/msvc/builddoc.bat68
-rw-r--r--src/tools/msvc/builddoc.pl122
-rwxr-xr-xsrc/tools/msvc/clean.bat3
-rw-r--r--src/tools/msvc/config_default.pl2
-rw-r--r--src/tools/msvc/gendef.pl2
-rw-r--r--src/tools/msvc/install.bat2
-rwxr-xr-xsrc/tools/msvc/install.pl2
-rw-r--r--src/tools/msvc/mkvcbuild.pl2
-rwxr-xr-xsrc/tools/msvc/pgbison.bat4
-rwxr-xr-xsrc/tools/msvc/pgflex.bat19
-rw-r--r--src/tools/msvc/vcregress.bat2
-rw-r--r--src/tools/msvc/vcregress.pl47
-rwxr-xr-xsrc/tools/pgcvslog293
-rw-r--r--src/tools/pginclude/README2
-rw-r--r--src/tools/pginclude/cpluspluscheck47
-rwxr-xr-xsrc/tools/pginclude/pgcheckdefines2
-rwxr-xr-xsrc/tools/pginclude/pgcompinclude2
-rwxr-xr-xsrc/tools/pginclude/pgdefine2
-rwxr-xr-xsrc/tools/pginclude/pgfixinclude2
-rwxr-xr-xsrc/tools/pginclude/pgrminclude8
-rw-r--r--src/tools/pgindent/README17
-rw-r--r--src/tools/pgindent/indent.bsd.patch2
-rwxr-xr-xsrc/tools/pgindent/pgcppindent2
-rwxr-xr-xsrc/tools/pgindent/pgindent23
-rw-r--r--src/tools/pgindent/typedefs.list325
-rwxr-xr-xsrc/tools/pgtest12
-rwxr-xr-xsrc/tools/version_stamp.pl6
-rwxr-xr-xsrc/tools/win32tzlist.pl4
75 files changed, 1119 insertions, 1207 deletions
diff --git a/src/tools/FAQ2txt b/src/tools/FAQ2txt
index ed2946921e..ab61d4d5f8 100755
--- a/src/tools/FAQ2txt
+++ b/src/tools/FAQ2txt
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/FAQ2txt,v 1.3 2008/04/22 10:30:32 momjian Exp $:
+# src/tools/FAQ2txt:
# Converts doc/src/FAQ/FAQ.html to text file doc/FAQ
diff --git a/src/tools/RELEASE_CHANGES b/src/tools/RELEASE_CHANGES
index 47fa03af93..8e54793f1d 100644
--- a/src/tools/RELEASE_CHANGES
+++ b/src/tools/RELEASE_CHANGES
@@ -6,7 +6,7 @@ For All Releases (major, minor, beta, RC)
(by packager) (beta)
* Release notes
- o scan cvs logs, use pgcvslog and flags in comments
+ o run git log and, if useful, src/tools/git_changelog
o update doc/src/sgml/release.sgml
o run spellchecker on result
o add SGML markup
@@ -30,12 +30,8 @@ For Major Releases
==================
(in addition to the above)
-* Bump minor library versions, major if appropriate (see below)
- o src/interfaces/*/Makefile
- o src/interfaces/*/*/Makefile
-
* Release notes
- o search with commit message text to find CVS commit file changes
+ o use git log or src/tools/git_changelog to find the relevant commits
o check completion of items that have been marked as completed at
http://wiki.postgresql.org/wiki/Todo
o remove completed TODO items
@@ -66,26 +62,30 @@ For Major Releases
Starting a New Development Cycle
================================
-* Create a branch in CVS for maintenance of the previous release
+* Create a branch in git for maintenance of the previous release
* Increment the major version number in src/tools/version_stamp.pl
* Run "src/tools/version_stamp.pl devel", then run autoconf
+* Bump minor library versions, major if appropriate (see below)
+ o src/interfaces/*/Makefile
+ o src/interfaces/*/*/Makefile
+
Creating Back-Branch Release Notes
==================================
-* Do 'cvs log' on each back-branch and run pgcvslog
+* Run src/tools/git_changelog to generate a list of relevant commits
-* In CVS HEAD, edit and create SGML markup for the most recent branch
- in that branch's release-N.N.sgml file
+* On the git master branch, edit and create SGML markup for the most recent
+ branch in that branch's release-N.N.sgml file
* Copy this into older branches' release-N.N.sgml files, then remove
- items that do not apply based on cvs logs for that branch (and add
+ items that do not apply based on commit logs for that branch (and add
any that are needed)
-* Copy the appropriate release-N.N.sgml files into each back CVS branch
+* Copy the appropriate release-N.N.sgml files into each back branch
---------------------------------------------------------------------------
@@ -143,7 +143,7 @@ function:
}
If we wanted to add a third argument:
-
+
void print_stuff(int arg1, int arg2, int arg3)
{
printf("stuff: %d %d %d\n", arg1, arg2, arg3);
diff --git a/src/tools/add_cvs_markers b/src/tools/add_cvs_markers
deleted file mode 100755
index 7344735aa2..0000000000
--- a/src/tools/add_cvs_markers
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-# $PostgreSQL: pgsql/src/tools/add_cvs_markers,v 1.2 2008/06/15 21:58:55 adunstan Exp $
-
-# Author: Andrew Dunstan
-
-# Script to add PostgreSQL markers to source files that are lacking them.
-# currently only works for .c and .h files
-
-# Needs a sed that understands the -i switch.
-# Really only tested on my Linux box.
-
-# We try to avoid adding markers to third party files, or files that will
-# cause regression problems (e.g. some ecpg headers).
-
-# If the file begins with a comment, we put the marker in there,
-# otherwise we add a new comment at the top of the file. This makes things
-# a bit prettier.
-
-# This script should be run at the top of the source tree.
-# If we're in the tools directory, the script tries to take us to the
-# right spot.
-CWD=`pwd`
-test "`basename $CWD`" = "tools" && cd ../..
-
-# need a dummy file in case we don't find any with missing markers,
-# to suppress messages about sed not finding any input files
-touch dummy
-
-# first process the files that already start with a comment:
-
-find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \
- -o -name 'regression.h' -o -name 'sql3types.h' -o -name 'sqlca.h' \) \
- -prune \) -o \( -name '*.[ch]' \) \( -exec grep -q '\$PostgreSQL' {} \; \
- -o -print \) | \
- { while read file ; do
- head -n 1 < $file | grep -q '^/\*' && echo $file
- done ; echo dummy ;} | \
- xargs -l sed -i -e '1s/^\// /' -e '1i/*\n * \x24PostgreSQL:$ \n *'
-
-# now all the rest (i.e. the files that don't start with a comment)
-
-{ find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \
- -o -name 'regression.h' -o -name 'sql3types.h' -o -name 'sqlca.h' \) \
- -prune \) -o \( -name '*.[ch]' \) \( -exec grep -q '\$PostgreSQL' {} \; \
- -o -print \) ; echo dummy ;} | \
- xargs -l sed -i -e '1i/*\n * \x24PostgreSQL:$ \n */'
-
-rm -f dummy
-
diff --git a/src/tools/backend/README b/src/tools/backend/README
index bde3a3e4c0..2b8692d393 100644
--- a/src/tools/backend/README
+++ b/src/tools/backend/README
@@ -1,5 +1,4 @@
-$PostgreSQL: pgsql/src/tools/backend/README,v 1.2 2008/03/21 13:23:29 momjian Exp $
+src/tools/backend/README
-Just point your browser at the index.html file, and click on the
+Just point your browser at the index.html file, and click on the
flowchart to see the description and source code.
-
diff --git a/src/tools/backend/backend_dirs.html b/src/tools/backend/backend_dirs.html
index a77cee96cf..16bd894582 100644
--- a/src/tools/backend/backend_dirs.html
+++ b/src/tools/backend/backend_dirs.html
@@ -339,7 +339,7 @@ i.e. '~'.</p>
href="../../backend/port">port</a> - compatibility routines</h2>
<br />
-
+
<hr />
<small>Maintainer: Bruce Momjian ( <a
href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>
@@ -347,4 +347,3 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>
Last updated: Fri May 6 14:22:27 EDT 2005</small>
</body>
</html>
-
diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html
index 3086ef8a2c..19945f8661 100644
--- a/src/tools/backend/index.html
+++ b/src/tools/backend/index.html
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/src/tools/backend/index.html,v 1.36 2008/10/07 00:19:48 momjian Exp $ -->
+<!-- src/tools/backend/index.html -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
diff --git a/src/tools/ccsym b/src/tools/ccsym
index a90550abde..bf4a92fafb 100755
--- a/src/tools/ccsym
+++ b/src/tools/ccsym
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/ccsym,v 1.7 2006/03/11 04:38:41 momjian Exp $
+# src/tools/ccsym
trap "rm -f /tmp/$$.*" 0 1 2 3 15
cd /tmp
diff --git a/src/tools/check_keywords.pl b/src/tools/check_keywords.pl
index ccfae25d63..3b68638614 100755
--- a/src/tools/check_keywords.pl
+++ b/src/tools/check_keywords.pl
@@ -5,7 +5,7 @@ use strict;
# Check that the keyword lists in gram.y and kwlist.h are sane. Run from
# the top directory, or pass a path to a top directory as argument.
#
-# $PostgreSQL: pgsql/src/tools/check_keywords.pl,v 1.2 2009/04/30 10:26:35 heikki Exp $
+# src/tools/check_keywords.pl
my $path;
@@ -13,7 +13,7 @@ if (@ARGV) {
$path = $ARGV[0];
shift @ARGV;
} else {
- $path = ".";
+ $path = ".";
}
$[ = 1; # set array base to 1
@@ -86,7 +86,7 @@ line: while (<GRAM>) {
if ($arr[$fieldIndexer] eq '|') {
next;
}
-
+
# Put this keyword into the right list
push @{$keywords{$kcat}}, $arr[$fieldIndexer];
}
diff --git a/src/tools/codelines b/src/tools/codelines
index 6455e83e0a..11e86accf2 100755
--- a/src/tools/codelines
+++ b/src/tools/codelines
@@ -1,7 +1,7 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/codelines,v 1.3 2006/03/11 04:38:41 momjian Exp $
+# src/tools/codelines
# This script is used to compute the total number of "C" lines in the release
-# This should be run from the top of the CVS tree after a 'make distclean'
+# This should be run from the top of the Git tree after a 'make distclean'
find . -name '*.[chyl]' | xargs cat| wc -l
diff --git a/src/tools/copyright b/src/tools/copyright
index de1fff2e22..b0d61e1974 100755
--- a/src/tools/copyright
+++ b/src/tools/copyright
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/copyright,v 1.18 2009/01/01 18:31:55 momjian Exp $
+# src/tools/copyright
echo "Using current year: `date '+%Y'`"
@@ -12,4 +12,3 @@ do
done
echo "Manually update doc/src/sgml/legal.sgml and src/interfaces/libpq/libpq.rc.in too" 1>&2
-
diff --git a/src/tools/editors/emacs.samples b/src/tools/editors/emacs.samples
index c1820f28c5..d9cfa2ffd8 100644
--- a/src/tools/editors/emacs.samples
+++ b/src/tools/editors/emacs.samples
@@ -28,6 +28,7 @@
(setq-default tab-width 4)
(c-set-style "bsd") ; set c-basic-offset to 4, plus other stuff
(c-set-offset 'case-label '+) ; tweak case indent to match PG custom
+ (setq fill-column 79) ; matches what pgindent does
(setq indent-tabs-mode t)) ; make sure we keep tabs when indenting
@@ -38,6 +39,7 @@
(c-add-style "pgsql"
'("bsd"
+ (fill-column . 79)
(indent-tabs-mode . t)
(c-basic-offset . 4)
(tab-width . 4)
@@ -64,13 +66,14 @@
(add-hook 'c-mode-hook
(function
- (lambda nil
- (if (string-match "pgsql" buffer-file-name)
+ (lambda nil
+ (if (string-match "postgresql" buffer-file-name)
(progn
(c-set-style "bsd")
- (setq c-basic-offset 4)
+ (setq c-basic-offset 4)
(setq tab-width 4)
(c-set-offset 'case-label '+)
+ (setq fill-column 79)
(setq indent-tabs-mode t)
)
))))
diff --git a/src/tools/editors/vim.samples b/src/tools/editors/vim.samples
index 210d9a360a..ccbc93f69b 100644
--- a/src/tools/editors/vim.samples
+++ b/src/tools/editors/vim.samples
@@ -1,4 +1,3 @@
-
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" These settings are appropriate for editing PostgreSQL code with vim
diff --git a/src/tools/entab/Makefile b/src/tools/entab/Makefile
index 64697a5d70..de8181828a 100644
--- a/src/tools/entab/Makefile
+++ b/src/tools/entab/Makefile
@@ -4,17 +4,17 @@
#
TARGET = entab
BINDIR = /usr/local/bin
-XFLAGS =
+XFLAGS =
CFLAGS = -O
-LIBS =
+LIBS =
$(TARGET) : entab.o halt.o
$(CC) -o $(TARGET) $(XFLAGS) $(CFLAGS) entab.o halt.o $(LIBS)
-entab.o : entab.c
+entab.o : entab.c
$(CC) -c $(XFLAGS) $(CFLAGS) entab.c
-halt.o : halt.c
+halt.o : halt.c
$(CC) -c $(XFLAGS) $(CFLAGS) halt.c
clean:
@@ -26,4 +26,3 @@ install:
install -s $(TARGET) $(BINDIR)
rm -f $(BINDIR)/detab
ln $(BINDIR)/$(TARGET) $(BINDIR)/detab
-
diff --git a/src/tools/entab/entab.c b/src/tools/entab/entab.c
index 7a87e0d5ab..5345c657f5 100644
--- a/src/tools/entab/entab.c
+++ b/src/tools/entab/entab.c
@@ -2,7 +2,7 @@
** entab.c - add tabs to a text file
** by Bruce Momjian (root@candle.pha.pa.us)
**
-** $PostgreSQL: pgsql/src/tools/entab/entab.c,v 1.18 2007/02/08 11:10:27 petere Exp $
+** src/tools/entab/entab.c
**
** version 1.3
**
diff --git a/src/tools/entab/entab.man b/src/tools/entab/entab.man
index a90ab4a2f7..362ec730f4 100644
--- a/src/tools/entab/entab.man
+++ b/src/tools/entab/entab.man
@@ -1,4 +1,4 @@
-.\" $PostgreSQL: pgsql/src/tools/entab/entab.man,v 1.2 2006/03/11 04:38:41 momjian Exp $
+.\" src/tools/entab/entab.man
.TH ENTAB 1 local
.SH NAME
entab - tab processor
@@ -41,7 +41,7 @@ leaving a large gap.
The quote-protection option allows tab replacement without
quoted strings being changed.
Useful when strings in source code will not have the same tab stops
-when executed in the program.
+when executed in the program.
.LP
To change a text file created on a system with one size of tab
stop to display properly on a device with different tab setting,
diff --git a/src/tools/entab/halt.c b/src/tools/entab/halt.c
index af55fa9c2d..dfc5936fad 100644
--- a/src/tools/entab/halt.c
+++ b/src/tools/entab/halt.c
@@ -2,7 +2,7 @@
**
** halt.c
**
-** $PostgreSQL: pgsql/src/tools/entab/halt.c,v 1.10 2006/07/11 21:21:59 alvherre Exp $
+** src/tools/entab/halt.c
**
** This is used to print out error messages and exit
*/
diff --git a/src/tools/find_badmacros b/src/tools/find_badmacros
index f58e213c9d..58f43086e9 100755
--- a/src/tools/find_badmacros
+++ b/src/tools/find_badmacros
@@ -3,7 +3,7 @@
# This script attempts to find bad ifdef's, i.e. ifdef's that use braces
# but not the do { ... } while (0) syntax
#
-# $PostgreSQL: pgsql/src/tools/find_badmacros,v 1.2 2006/03/11 04:38:41 momjian Exp $
+# src/tools/find_badmacros
#
# This is useful for running before pgindent
@@ -20,4 +20,3 @@ do
}' "$FILE"
grep -on '^#define.*{' "$FILE" | grep -v 'do[ ]*{'
done
-
diff --git a/src/tools/find_gt_lt b/src/tools/find_gt_lt
index 72bcad47ea..460a992694 100755
--- a/src/tools/find_gt_lt
+++ b/src/tools/find_gt_lt
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/find_gt_lt,v 1.3 2006/10/16 17:28:03 momjian Exp $
+# src/tools/find_gt_lt
grep "$@" '[^]a-z0-9"/!-]>' *.sgml ref/*.sgml
grep "$@" '<[^]a-z0-9"/!-]' *.sgml ref/*.sgml
diff --git a/src/tools/find_static b/src/tools/find_static
index c841e9ab26..c7014e6014 100755
--- a/src/tools/find_static
+++ b/src/tools/find_static
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/find_static,v 1.5 2006/07/14 14:59:00 momjian Exp $
+# src/tools/find_static
trap "rm -f /tmp/$$" 0 1 2 3 15
@@ -26,8 +26,8 @@ echo "
copy debug from '/tmp/"$$"';
- select *
- into table debug2
+ select *
+ into table debug2
from debug;
create index idebug on debug(scope,func);
@@ -35,8 +35,8 @@ echo "
vacuum debug;
vacuum debug2;
- update debug2
- set scope = '_'
+ update debug2
+ set scope = '_'
from debug
where debug2.func = debug.func and
debug2.scope = 'T' and debug.scope = 'U';
@@ -49,4 +49,3 @@ echo "
where scope = 'T' and func != 'main'
order by file, func;
" |psql debug
-
diff --git a/src/tools/find_typedef b/src/tools/find_typedef
index 4e1ca88d96..8b07de62ef 100755
--- a/src/tools/find_typedef
+++ b/src/tools/find_typedef
@@ -1,15 +1,15 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.16 2009/06/12 03:09:07 momjian Exp $
+# src/tools/find_typedef
# This script attempts to find all typedef's in the postgres binaries
# by using 'nm' to report all typedef debugging symbols.
-#
-# For this program to work, you must have compiled all binaries with
+#
+# For this program to work, you must have compiled all binaries with
# debugging symbols.
#
# This is run on BSD/OS 4.0 or Linux, so you may need to make changes.
-#
+#
# Ignore the nm errors about a file not being a binary file.
#
# It gets typedefs by reading "STABS":
diff --git a/src/tools/findoidjoins/Makefile b/src/tools/findoidjoins/Makefile
index 5f7bd0c77f..b5e4fb73b1 100644
--- a/src/tools/findoidjoins/Makefile
+++ b/src/tools/findoidjoins/Makefile
@@ -2,9 +2,9 @@
#
# Makefile for src/tools/findoidjoins
#
-# Copyright (c) 2003-2010, PostgreSQL Global Development Group
+# Copyright (c) 2003-2011, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/findoidjoins/Makefile,v 1.8 2010/07/05 18:54:38 tgl Exp $
+# src/tools/findoidjoins/Makefile
#
#-------------------------------------------------------------------------
@@ -16,9 +16,9 @@ override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
OBJS= findoidjoins.o
-all: submake-libpq submake-libpgport findoidjoins
+all: findoidjoins
-findoidjoins: findoidjoins.o $(libpq_builddir)/libpq.a
+findoidjoins: findoidjoins.o | submake-libpq submake-libpgport
$(CC) $(CFLAGS) findoidjoins.o $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
clean distclean maintainer-clean:
diff --git a/src/tools/findoidjoins/README b/src/tools/findoidjoins/README
index c98569d13e..c4a96e3c4b 100644
--- a/src/tools/findoidjoins/README
+++ b/src/tools/findoidjoins/README
@@ -1,42 +1,44 @@
-$PostgreSQL: pgsql/src/tools/findoidjoins/README,v 1.7 2010/03/14 04:17:54 tgl Exp $
+src/tools/findoidjoins/README
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.
+and the tables they join to. It is normally used to check the system
+catalog join relationships (shown below for 9.1devel).
-Run on an empty database, it returns the system join relationships (shown
-below for 9.0devel). 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 9.0devel, the *only* fields that should join to more
-than one target are pg_description.objoid, pg_depend.objid,
-pg_depend.refobjid, pg_shdescription.objoid, pg_shdepend.objid, and
-pg_shdepend.refobjid. (Running make_oidjoins_check is an easy way to spot
-fields joining to more than one table, BTW.) NOTE: in an empty database,
-findoidjoins may not report joins for pg_shdescription and pg_shdepend for
-lack of any entries there.
+Historically this has been run against an empty database such as template1,
+but there's a problem with that approach: some of the catalogs are empty
+and so their joining columns won't show up in the output. Current practice
+is to run it against the regression-test database, which populates the
+catalogs in interesting ways.
+
+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 9.1devel, the *only* fields that should join to more than one target
+table are pg_description.objoid, pg_depend.objid, pg_depend.refobjid,
+pg_shdescription.objoid, pg_shdepend.objid, and pg_shdepend.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.
+Note that fields joining to more than one table are NOT processed,
+just reported as linking to more than one table.
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...)
+(Typically we update it at the end of each development cycle.)
-NOTE: in 9.0devel, make_oidjoins_check produces two bogus join checks:
+NOTE: as of 9.1devel, make_oidjoins_check produces two bogus join checks:
Join pg_catalog.pg_class.relfilenode => pg_catalog.pg_class.oid
Join pg_catalog.pg_database.datlastsysoid => pg_catalog.pg_database.oid
These are artifacts and should not be added to the oidjoins regress test.
You might also get output for pg_shdepend.refobjid and pg_shdescription.objoid,
-neither of which should be added.
+neither of which should be added to the regress test.
---------------------------------------------------------------------------
@@ -55,6 +57,7 @@ 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.ambuildempty => 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
@@ -64,24 +67,33 @@ Join pg_catalog.pg_amop.amoplefttype => pg_catalog.pg_type.oid
Join pg_catalog.pg_amop.amoprighttype => pg_catalog.pg_type.oid
Join pg_catalog.pg_amop.amopopr => pg_catalog.pg_operator.oid
Join pg_catalog.pg_amop.amopmethod => pg_catalog.pg_am.oid
+Join pg_catalog.pg_amop.amopsortfamily => pg_catalog.pg_opfamily.oid
Join pg_catalog.pg_amproc.amprocfamily => pg_catalog.pg_opfamily.oid
Join pg_catalog.pg_amproc.amproclefttype => pg_catalog.pg_type.oid
Join pg_catalog.pg_amproc.amprocrighttype => pg_catalog.pg_type.oid
Join pg_catalog.pg_amproc.amproc => pg_catalog.pg_proc.oid
+Join pg_catalog.pg_attrdef.adrelid => pg_catalog.pg_class.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_attribute.attcollation => pg_catalog.pg_collation.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.reloftype => pg_catalog.pg_type.oid
Join pg_catalog.pg_class.relowner => pg_catalog.pg_authid.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_collation.collnamespace => pg_catalog.pg_namespace.oid
+Join pg_catalog.pg_collation.collowner => pg_catalog.pg_authid.oid
Join pg_catalog.pg_constraint.connamespace => pg_catalog.pg_namespace.oid
+Join pg_catalog.pg_constraint.conrelid => pg_catalog.pg_class.oid
Join pg_catalog.pg_constraint.contypid => pg_catalog.pg_type.oid
+Join pg_catalog.pg_constraint.conindid => pg_catalog.pg_class.oid
+Join pg_catalog.pg_constraint.confrelid => pg_catalog.pg_class.oid
Join pg_catalog.pg_conversion.connamespace => pg_catalog.pg_namespace.oid
Join pg_catalog.pg_conversion.conowner => pg_catalog.pg_authid.oid
Join pg_catalog.pg_conversion.conproc => pg_catalog.pg_proc.oid
@@ -91,8 +103,13 @@ Join pg_catalog.pg_db_role_setting.setdatabase => pg_catalog.pg_database.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_enum.enumtypid => pg_catalog.pg_type.oid
+Join pg_catalog.pg_extension.extowner => pg_catalog.pg_authid.oid
+Join pg_catalog.pg_extension.extnamespace => pg_catalog.pg_namespace.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_inherits.inhrelid => pg_catalog.pg_class.oid
+Join pg_catalog.pg_inherits.inhparent => pg_catalog.pg_class.oid
Join pg_catalog.pg_language.lanowner => pg_catalog.pg_authid.oid
Join pg_catalog.pg_language.lanplcallfoid => pg_catalog.pg_proc.oid
Join pg_catalog.pg_language.laninline => pg_catalog.pg_proc.oid
@@ -120,6 +137,7 @@ Join pg_catalog.pg_opfamily.opfowner => pg_catalog.pg_authid.oid
Join pg_catalog.pg_proc.pronamespace => pg_catalog.pg_namespace.oid
Join pg_catalog.pg_proc.proowner => pg_catalog.pg_authid.oid
Join pg_catalog.pg_proc.prolang => pg_catalog.pg_language.oid
+Join pg_catalog.pg_proc.provariadic => pg_catalog.pg_type.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_shdepend.refclassid => pg_catalog.pg_class.oid
@@ -129,6 +147,11 @@ 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_tablespace.spcowner => pg_catalog.pg_authid.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_trigger.tgconstrrelid => pg_catalog.pg_class.oid
+Join pg_catalog.pg_trigger.tgconstrindid => pg_catalog.pg_class.oid
+Join pg_catalog.pg_trigger.tgconstraint => pg_catalog.pg_constraint.oid
Join pg_catalog.pg_ts_config.cfgnamespace => pg_catalog.pg_namespace.oid
Join pg_catalog.pg_ts_config.cfgowner => pg_catalog.pg_authid.oid
Join pg_catalog.pg_ts_config.cfgparser => pg_catalog.pg_ts_parser.oid
@@ -159,8 +182,13 @@ Join pg_catalog.pg_type.typmodin => pg_catalog.pg_proc.oid
Join pg_catalog.pg_type.typmodout => pg_catalog.pg_proc.oid
Join pg_catalog.pg_type.typanalyze => pg_catalog.pg_proc.oid
Join pg_catalog.pg_type.typbasetype => pg_catalog.pg_type.oid
+Join pg_catalog.pg_type.typcollation => pg_catalog.pg_collation.oid
+Join pg_catalog.pg_constraint.conpfeqop []=> pg_catalog.pg_operator.oid
+Join pg_catalog.pg_constraint.conppeqop []=> pg_catalog.pg_operator.oid
+Join pg_catalog.pg_constraint.conffeqop []=> pg_catalog.pg_operator.oid
+Join pg_catalog.pg_proc.proallargtypes []=> pg_catalog.pg_type.oid
---------------------------------------------------------------------------
-Bruce Momjian (root@candle.pha.pa.us)
+Bruce Momjian (bruce@momjian.us)
Updated for 7.3 by Joe Conway (mail@joeconway.com)
diff --git a/src/tools/findoidjoins/findoidjoins.c b/src/tools/findoidjoins/findoidjoins.c
index 5bedee0e44..031a77fa70 100644
--- a/src/tools/findoidjoins/findoidjoins.c
+++ b/src/tools/findoidjoins/findoidjoins.c
@@ -1,9 +1,9 @@
/*
* findoidjoins.c
*
- * Copyright (c) 2002-2010, PostgreSQL Global Development Group
+ * Copyright (c) 2002-2011, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/tools/findoidjoins/findoidjoins.c,v 1.8 2010/01/02 16:58:16 momjian Exp $
+ * src/tools/findoidjoins/findoidjoins.c
*/
#include "postgres_fe.h"
@@ -46,9 +46,7 @@ main(int argc, char **argv)
/* Get a list of relations that have OIDs */
- resetPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql, "%s",
+ printfPQExpBuffer(&sql, "%s",
"SET search_path = public;"
"SELECT c.relname, (SELECT nspname FROM "
"pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
@@ -68,9 +66,7 @@ main(int argc, char **argv)
/* Get a list of columns of OID type (or any OID-alias type) */
- resetPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql, "%s",
+ printfPQExpBuffer(&sql, "%s",
"SELECT c.relname, "
"(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
"a.attname "
@@ -113,15 +109,15 @@ main(int argc, char **argv)
pk_relname = PQgetvalue(pkrel_res, pk, 0);
pk_nspname = PQgetvalue(pkrel_res, pk, 1);
- resetPQExpBuffer(&sql);
-
- appendPQExpBuffer(&sql,
+ printfPQExpBuffer(&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);
+ fk_nspname, fk_relname,
+ pk_nspname, pk_relname,
+ fk_attname);
res = PQexec(conn, sql.data);
if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
@@ -139,8 +135,85 @@ main(int argc, char **argv)
}
}
- PQclear(pkrel_res);
PQclear(fkrel_res);
+
+ /* Now, do the same for referencing columns that are arrays */
+
+ /* Get a list of columns of OID-array type (or any OID-alias type) */
+
+ printfPQExpBuffer(&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, "
+ " 'pg_catalog.regconfig[]'::regtype, "
+ " 'pg_catalog.regdictionary[]'::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);
+
+ printfPQExpBuffer(&sql,
+ "SELECT 1 "
+ "FROM \"%s\".\"%s\" t1, "
+ "\"%s\".\"%s\" t2 "
+ "WHERE t2.oid = ANY(t1.\"%s\")"
+ "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(fkrel_res);
+
+ PQclear(pkrel_res);
+
PQfinish(conn);
termPQExpBuffer(&sql);
diff --git a/src/tools/findoidjoins/make_oidjoins_check b/src/tools/findoidjoins/make_oidjoins_check
index 6321260a0f..09d283462c 100755
--- a/src/tools/findoidjoins/make_oidjoins_check
+++ b/src/tools/findoidjoins/make_oidjoins_check
@@ -1,8 +1,8 @@
#! /bin/sh
-# $PostgreSQL: pgsql/src/tools/findoidjoins/make_oidjoins_check,v 1.3 2008/10/13 12:59:29 tgl Exp $
+# src/tools/findoidjoins/make_oidjoins_check
-# You first run findoidjoins on the template1 database, and send that
+# You first run findoidjoins on the regression database, then 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
@@ -12,17 +12,16 @@
# 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.
+TMP="${TMPDIR:-/tmp}/make_oidjoins_check.$$"
OMASK="`umask`"
umask 077
if ! mkdir $TMP
then echo "Can't create temporary directory $TMP." 1>&2
exit 1
fi
+trap "rm -rf $TMP" 0 1 2 3 15
umask "$OMASK"
unset OMASK
@@ -40,7 +39,7 @@ if [ -s $DUPSFILE ] ; then
cat $DUPSFILE 1>&2
fi
-# Get the non-multiply-referenced fields.
+# Get the fields without multiple references.
cat $INPUTFILE | while read LINE
do
set -- $LINE
@@ -49,7 +48,7 @@ done >$NONDUPSFILE
# Generate the output.
cat $NONDUPSFILE |
-$AWK -F'[ \.]' '\
+$AWK -F'[ .]' '\
BEGIN \
{
printf "\
@@ -57,14 +56,25 @@ $AWK -F'[ \.]' '\
-- This is created by pgsql/src/tools/findoidjoins/make_oidjoins_check\n\
--\n";
}
+ $5 == "=>" \
{
printf "\
-SELECT ctid, %s \n\
-FROM %s.%s fk \n\
-WHERE %s != 0 AND \n\
+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;
+ }
+ $5 == "[]=>" \
+ {
+ printf "\
+SELECT ctid, %s\n\
+FROM (SELECT ctid, unnest(%s) AS %s 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, $4, $4, $2, $3, $4,
+ $6, $7, $4;
}'
exit 0
diff --git a/src/tools/fsync/Makefile b/src/tools/fsync/Makefile
deleted file mode 100644
index 2ddbbe9f47..0000000000
--- a/src/tools/fsync/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile for src/tools/fsync
-#
-# Copyright (c) 2003-2010, PostgreSQL Global Development Group
-#
-# $PostgreSQL: pgsql/src/tools/fsync/Makefile,v 1.9 2010/07/05 18:54:38 tgl Exp $
-#
-#-------------------------------------------------------------------------
-
-subdir = src/tools/fsync
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
-
-OBJS= test_fsync.o
-
-all: submake-libpq submake-libpgport test_fsync
-
-test_fsync: test_fsync.o $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) test_fsync.o $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
-
-clean distclean maintainer-clean:
- rm -f test_fsync$(X) $(OBJS)
diff --git a/src/tools/fsync/README b/src/tools/fsync/README
deleted file mode 100644
index 0ab84b1ef0..0000000000
--- a/src/tools/fsync/README
+++ /dev/null
@@ -1,11 +0,0 @@
-$PostgreSQL: pgsql/src/tools/fsync/README,v 1.5 2009/11/28 15:04:54 momjian Exp $
-
-fsync
-=====
-
-This program tests fsync. The tests are described as part of the program output.
-
- Usage: test_fsync [-f filename] [loops]
-
-Loops defaults to 5000. The default output file is /var/tmp/test_fsync.out.
-Consider that /tmp or /var/tmp might be memory-based file systems.
diff --git a/src/tools/fsync/test_fsync.c b/src/tools/fsync/test_fsync.c
deleted file mode 100644
index c237096717..0000000000
--- a/src/tools/fsync/test_fsync.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * $PostgreSQL: pgsql/src/tools/fsync/test_fsync.c,v 1.30 2010/07/06 19:19:02 momjian Exp $
- *
- *
- * test_fsync.c
- * test various fsync() methods
- */
-
-#include "postgres.h"
-
-#include "access/xlog_internal.h"
-#include "access/xlog.h"
-#include "access/xlogdefs.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <string.h>
-
-
-#ifdef WIN32
-#define FSYNC_FILENAME "./test_fsync.out"
-#else
-/* /tmp might be a memory file system */
-#define FSYNC_FILENAME "/var/tmp/test_fsync.out"
-#endif
-
-#define WRITE_SIZE (8 * 1024) /* 8k */
-
-#define LABEL_FORMAT "\t%-30s"
-
-int loops = 10000;
-
-void die(char *str);
-void print_elapse(struct timeval start_t, struct timeval stop_t);
-
-int
-main(int argc, char *argv[])
-{
- struct timeval start_t;
- struct timeval stop_t;
- int tmpfile,
- i;
- char *full_buf = (char *) malloc(XLOG_SEG_SIZE),
- *buf;
- char *filename = FSYNC_FILENAME;
-
- if (argc > 2 && strcmp(argv[1], "-f") == 0)
- {
- filename = argv[2];
- argv += 2;
- argc -= 2;
- }
-
- if (argc > 1)
- loops = atoi(argv[1]);
-
- for (i = 0; i < XLOG_SEG_SIZE; i++)
- full_buf[i] = random();
-
- if ((tmpfile = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR, 0)) == -1)
- die("Cannot open output file.");
- if (write(tmpfile, full_buf, XLOG_SEG_SIZE) != XLOG_SEG_SIZE)
- die("write failed");
- /* fsync now so later fsync's don't have to do it */
- if (fsync(tmpfile) != 0)
- die("fsync failed");
- close(tmpfile);
-
- buf = (char *) TYPEALIGN(ALIGNOF_XLOG_BUFFER, full_buf);
-
- printf("Loops = %d\n\n", loops);
-
- /*
- * Simple write
- */
- printf("Simple write:\n");
- /* write only */
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- close(tmpfile);
- }
- gettimeofday(&stop_t, NULL);
- printf(LABEL_FORMAT, "8k write");
- print_elapse(start_t, stop_t);
-
- /*
- * Compare file sync methods with one 8k write
- */
- printf("\nCompare file sync methods using one write:\n");
-
-#ifdef OPEN_DATASYNC_FLAG
- /* open_dsync, write */
- if ((tmpfile = open(filename, O_RDWR | O_DSYNC, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "open_datasync 8k write");
- print_elapse(start_t, stop_t);
-#else
- printf("\t(open_datasync unavailable)\n");
-#endif
-
-#ifdef OPEN_SYNC_FLAG
- /* open_fsync, write */
- if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "open_sync 8k write");
- print_elapse(start_t, stop_t);
-#else
- printf("\t(open_sync unavailable)\n");
-#endif
-
-#ifdef HAVE_FDATASYNC
- /* write, fdatasync */
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- fdatasync(tmpfile);
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "8k write, fdatasync");
- print_elapse(start_t, stop_t);
-#else
- printf("\t(fdatasync unavailable)\n");
-#endif
-
- /* write, fsync, close */
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (fsync(tmpfile) != 0)
- die("fsync failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "8k write, fsync");
- print_elapse(start_t, stop_t);
-
- /*
- * Compare file sync methods with two 8k write
- */
- printf("\nCompare file sync methods using two writes:\n");
-
-#ifdef OPEN_DATASYNC_FLAG
- /* open_dsync, write */
- if ((tmpfile = open(filename, O_RDWR | O_DSYNC, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "2 open_datasync 8k writes");
- print_elapse(start_t, stop_t);
-#else
- printf("\t(open_datasync unavailable)\n");
-#endif
-
-#ifdef OPEN_SYNC_FLAG
- /* open_fsync, write */
- if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "2 open_sync 8k writes");
- print_elapse(start_t, stop_t);
-#endif
-
-#ifdef HAVE_FDATASYNC
- /* write, fdatasync */
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- fdatasync(tmpfile);
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "8k write, 8k write, fdatasync");
- print_elapse(start_t, stop_t);
-#else
- printf("\t(fdatasync unavailable)\n");
-#endif
-
- /* write, fsync, close */
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (fsync(tmpfile) != 0)
- die("fsync failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "8k write, 8k write, fsync");
- print_elapse(start_t, stop_t);
-
- /*
- * Compare 1 to 2 writes
- */
- printf("\nCompare open_sync with different sizes:\n");
-
-#ifdef OPEN_SYNC_FLAG
- /* 16k open_sync write */
- if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE * 2) != WRITE_SIZE * 2)
- die("write failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "open_sync 16k write");
- print_elapse(start_t, stop_t);
-
- /* Two 8k open_sync writes */
- if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1)
- die("Cannot open output file.");
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (lseek(tmpfile, 0, SEEK_SET) == -1)
- die("seek failed");
- }
- gettimeofday(&stop_t, NULL);
- close(tmpfile);
- printf(LABEL_FORMAT, "2 open_sync 8k writes");
- print_elapse(start_t, stop_t);
-#else
- printf("\t(open_sync unavailable)\n");
-#endif
-
- /*
- * Fsync another file descriptor?
- */
- printf("\nTest if fsync on non-write file descriptor is honored:\n");
- printf("(If the times are similar, fsync() can sync data written\n");
- printf("on a different descriptor.)\n");
-
- /* write, fsync, close */
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- if (fsync(tmpfile) != 0)
- die("fsync failed");
- close(tmpfile);
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- /* do nothing but the open/close the tests are consistent. */
- close(tmpfile);
- }
- gettimeofday(&stop_t, NULL);
- printf(LABEL_FORMAT, "8k write, fsync, close");
- print_elapse(start_t, stop_t);
-
- /* write, close, fsync */
- gettimeofday(&start_t, NULL);
- for (i = 0; i < loops; i++)
- {
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- if (write(tmpfile, buf, WRITE_SIZE) != WRITE_SIZE)
- die("write failed");
- close(tmpfile);
- /* reopen file */
- if ((tmpfile = open(filename, O_RDWR, 0)) == -1)
- die("Cannot open output file.");
- if (fsync(tmpfile) != 0)
- die("fsync failed");
- close(tmpfile);
- }
- gettimeofday(&stop_t, NULL);
- printf(LABEL_FORMAT, "8k write, close, fsync");
- print_elapse(start_t, stop_t);
-
- /* cleanup */
- free(full_buf);
- unlink(filename);
-
- return 0;
-}
-
-void
-print_elapse(struct timeval start_t, struct timeval stop_t)
-{
- double total_time = (stop_t.tv_sec - start_t.tv_sec) +
- /* usec subtraction might be negative, e.g. 5.4 - 4.8 */
- (stop_t.tv_usec - start_t.tv_usec) * 0.000001;
- double per_second = loops / total_time;
-
- printf("%9.3f/second\n", per_second);
-}
-
-void
-die(char *str)
-{
- fprintf(stderr, "%s\n", str);
- exit(1);
-}
diff --git a/src/tools/git-external-diff b/src/tools/git-external-diff
new file mode 100644
index 0000000000..59fa36624c
--- /dev/null
+++ b/src/tools/git-external-diff
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# This script is used to produce git context diffs
+
+# Supplied parameters:
+# $1 $2 $3 $4 $5 $6 $7
+# path old-file old-hash old-mode new-file new-hash new-mode
+# 'path' is the git-tree-relative path of the file being diff'ed
+
+old_hash="$3"
+new_hash=$(git hash-object "$5")
+
+# no change?
+[ "$old_hash" = "$new_hash" ] && exit 0
+
+[ "$DIFF_OPTS" = "" ] && DIFF_OPTS='-pcd'
+
+echo "diff --git a/$1 b/$1"
+echo "new file mode $7"
+echo "index ${old_hash:0:7}..${new_hash:0:7}"
+
+diff --label a/"$1" --label b/"$1" $DIFF_OPTS "$2" "$5"
+
+exit 0
diff --git a/src/tools/git_changelog b/src/tools/git_changelog
new file mode 100755
index 0000000000..af76f6d0cc
--- /dev/null
+++ b/src/tools/git_changelog
@@ -0,0 +1,284 @@
+#!/usr/bin/perl
+
+#
+# src/tools/git_changelog
+#
+# Display all commits on active branches, merging together commits from
+# different branches that occur close together in time and with identical
+# log messages. Commits are annotated with branch and release info thus:
+# Branch: REL8_3_STABLE Release: REL8_3_2 [92c3a8004] 2008-03-29 00:15:37 +0000
+# This shows that the commit on REL8_3_STABLE was released in 8.3.2.
+# Commits on master will usually instead have notes like
+# Branch: master Release: REL8_4_BR [6fc9d4272] 2008-03-29 00:15:28 +0000
+# showing that this commit is ancestral to release branches 8.4 and later.
+# If no Release: marker appears, the commit hasn't yet made it into any
+# release.
+#
+# Most of the time, matchable commits occur in the same order on all branches,
+# and we print them out in that order. However, if commit A occurs before
+# commit B on branch X and commit B occurs before commit A on branch Y, then
+# there's no ordering which is consistent with both branches.
+#
+# When we encounter a situation where there's no single "best" commit to
+# print next, we print the one that involves the least distortion of the
+# commit order, summed across all branches. In the event of a tie on the
+# distortion measure (which is actually the common case: normally, the
+# distortion is zero), we choose the commit with latest timestamp. If
+# that's a tie too, the commit from the newer branch prints first.
+#
+
+use strict;
+use warnings;
+require Time::Local;
+require Getopt::Long;
+require IPC::Open2;
+
+# Adjust this list when the set of interesting branches changes.
+# (We could get this from "git branches", but not worth the trouble.)
+# NB: master must be first!
+my @BRANCHES = qw(master REL9_0_STABLE REL8_4_STABLE REL8_3_STABLE
+ REL8_2_STABLE REL8_1_STABLE REL8_0_STABLE REL7_4_STABLE REL7_3_STABLE
+ REL7_2_STABLE REL7_1_STABLE REL7_0_PATCHES REL6_5_PATCHES REL6_4);
+
+# Might want to make this parameter user-settable.
+my $timestamp_slop = 600;
+
+my $post_date = 0;
+my $since;
+Getopt::Long::GetOptions('post-date' => \$post_date,
+ 'since=s' => \$since) || usage();
+usage() if @ARGV;
+
+my @git = qw(git log --date=iso);
+push @git, '--since=' . $since if defined $since;
+
+# Collect the release tag data
+my %rel_tags;
+
+{
+ my $cmd = "git for-each-ref refs/tags";
+ my $pid = IPC::Open2::open2(my $git_out, my $git_in, $cmd)
+ || die "can't run $cmd: $!";
+ while (my $line = <$git_out>) {
+ if ($line =~ m|^([a-f0-9]+)\s+commit\s+refs/tags/(\S+)|) {
+ my $commit = $1;
+ my $tag = $2;
+ if ($tag =~ /^REL\d+_\d+$/ ||
+ $tag =~ /^REL\d+_\d+_\d+$/) {
+ $rel_tags{$commit} = $tag;
+ }
+ }
+ }
+ waitpid($pid, 0);
+ my $child_exit_status = $? >> 8;
+ die "$cmd failed" if $child_exit_status != 0;
+}
+
+# Collect the commit data
+my %all_commits;
+my %all_commits_by_branch;
+# This remembers where each branch sprouted from master. Note the values
+# will be wrong if --since terminates the log listing before the branch
+# sprouts; but in that case it doesn't matter since we also won't reach
+# the part of master where it would matter.
+my %sprout_tags;
+
+for my $branch (@BRANCHES) {
+ my @cmd = @git;
+ if ($branch eq "master") {
+ push @cmd, "origin/$branch";
+ } else {
+ push @cmd, "--parents";
+ push @cmd, "master..origin/$branch";
+ }
+ my $pid = IPC::Open2::open2(my $git_out, my $git_in, @cmd)
+ || die "can't run @cmd: $!";
+ my $last_tag = undef;
+ my $last_parent;
+ my %commit;
+ while (my $line = <$git_out>) {
+ if ($line =~ /^commit\s+(\S+)/) {
+ push_commit(\%commit) if %commit;
+ $last_tag = $rel_tags{$1} if defined $rel_tags{$1};
+ %commit = (
+ 'branch' => $branch,
+ 'commit' => $1,
+ 'last_tag' => $last_tag,
+ 'message' => '',
+ );
+ if ($line =~ /^commit\s+\S+\s+(\S+)/) {
+ $last_parent = $1;
+ } else {
+ $last_parent = undef;
+ }
+ }
+ elsif ($line =~ /^Author:\s+(.*)/) {
+ $commit{'author'} = $1;
+ }
+ elsif ($line =~ /^Date:\s+(.*)/) {
+ $commit{'date'} = $1;
+ }
+ elsif ($line =~ /^\s\s/) {
+ $commit{'message'} .= $line;
+ }
+ }
+ push_commit(\%commit) if %commit;
+ $sprout_tags{$last_parent} = $branch if defined $last_parent;
+ waitpid($pid, 0);
+ my $child_exit_status = $? >> 8;
+ die "@cmd failed" if $child_exit_status != 0;
+}
+
+# Run through the master branch and apply tags. We already tagged the other
+# branches, but master needs a separate pass after we've acquired the
+# sprout_tags data. Also, in post-date mode we need to add phony entries
+# for branches that sprouted after a particular master commit was made.
+{
+ my $last_tag = undef;
+ my %sprouted_branches;
+ for my $cc (@{$all_commits_by_branch{'master'}}) {
+ my $commit = $cc->{'commit'};
+ my $c = $cc->{'commits'}->[0];
+ $last_tag = $rel_tags{$commit} if defined $rel_tags{$commit};
+ if (defined $sprout_tags{$commit}) {
+ $last_tag = $sprout_tags{$commit};
+ # normalize branch names for making sprout tags
+ $last_tag =~ s/^(REL\d+_\d+).*/$1_BR/;
+ }
+ $c->{'last_tag'} = $last_tag;
+ if ($post_date) {
+ if (defined $sprout_tags{$commit}) {
+ $sprouted_branches{$sprout_tags{$commit}} = 1;
+ }
+ # insert new commits between master and any other commits
+ my @new_commits = ( shift @{$cc->{'commits'}} );
+ for my $branch (reverse sort keys %sprouted_branches) {
+ my $ccopy = {%{$c}};
+ $ccopy->{'branch'} = $branch;
+ push @new_commits, $ccopy;
+ }
+ $cc->{'commits'} = [ @new_commits, @{$cc->{'commits'}} ];
+ }
+ }
+}
+
+my %position;
+for my $branch (@BRANCHES) {
+ $position{$branch} = 0;
+}
+
+while (1) {
+ my $best_branch;
+ my $best_inversions;
+ my $best_timestamp;
+ for my $branch (@BRANCHES) {
+ my $leader = $all_commits_by_branch{$branch}->[$position{$branch}];
+ next if !defined $leader;
+ my $inversions = 0;
+ for my $branch2 (@BRANCHES) {
+ if (defined $leader->{'branch_position'}{$branch2}) {
+ $inversions += $leader->{'branch_position'}{$branch2}
+ - $position{$branch2};
+ }
+ }
+ if (!defined $best_inversions ||
+ $inversions < $best_inversions ||
+ ($inversions == $best_inversions &&
+ $leader->{'timestamp'} > $best_timestamp)) {
+ $best_branch = $branch;
+ $best_inversions = $inversions;
+ $best_timestamp = $leader->{'timestamp'};
+ }
+ }
+ last if !defined $best_branch;
+ my $winner =
+ $all_commits_by_branch{$best_branch}->[$position{$best_branch}];
+ printf "Author: %s\n", $winner->{'author'};
+ foreach my $c (@{$winner->{'commits'}}) {
+ printf "Branch: %s", $c->{'branch'};
+ if (defined $c->{'last_tag'}) {
+ printf " Release: %s", $c->{'last_tag'};
+ }
+ printf " [%s] %s\n", substr($c->{'commit'}, 0, 9), $c->{'date'};
+ }
+ print "Commit-Order-Inversions: $best_inversions\n"
+ if $best_inversions != 0;
+ print "\n";
+ print $winner->{'message'};
+ print "\n";
+ $winner->{'done'} = 1;
+ for my $branch (@BRANCHES) {
+ my $leader = $all_commits_by_branch{$branch}->[$position{$branch}];
+ if (defined $leader && $leader->{'done'}) {
+ ++$position{$branch};
+ redo;
+ }
+ }
+}
+
+sub push_commit {
+ my ($c) = @_;
+ my $ht = hash_commit($c);
+ my $ts = parse_datetime($c->{'date'});
+ my $cc;
+ # Note that this code will never merge two commits on the same branch,
+ # even if they have the same hash (author/message) and nearby
+ # timestamps. This means that there could be multiple potential
+ # matches when we come to add a commit from another branch. Prefer
+ # the closest-in-time one.
+ for my $candidate (@{$all_commits{$ht}}) {
+ my $diff = abs($ts - $candidate->{'timestamp'});
+ if ($diff < $timestamp_slop &&
+ !exists $candidate->{'branch_position'}{$c->{'branch'}})
+ {
+ if (!defined $cc ||
+ $diff < abs($ts - $cc->{'timestamp'})) {
+ $cc = $candidate;
+ }
+ }
+ }
+ if (!defined $cc) {
+ $cc = {
+ 'author' => $c->{'author'},
+ 'message' => $c->{'message'},
+ 'commit' => $c->{'commit'},
+ 'commits' => [],
+ 'timestamp' => $ts
+ };
+ push @{$all_commits{$ht}}, $cc;
+ }
+ # stash only the fields we'll need later
+ my $smallc = {
+ 'branch' => $c->{'branch'},
+ 'commit' => $c->{'commit'},
+ 'date' => $c->{'date'},
+ 'last_tag' => $c->{'last_tag'}
+ };
+ push @{$cc->{'commits'}}, $smallc;
+ push @{$all_commits_by_branch{$c->{'branch'}}}, $cc;
+ $cc->{'branch_position'}{$c->{'branch'}} =
+ -1+@{$all_commits_by_branch{$c->{'branch'}}};
+}
+
+sub hash_commit {
+ my ($c) = @_;
+ return $c->{'author'} . "\0" . $c->{'message'};
+}
+
+sub parse_datetime {
+ my ($dt) = @_;
+ $dt =~ /^(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+([-+])(\d\d)(\d\d)$/;
+ my $gm = Time::Local::timegm($6, $5, $4, $3, $2-1, $1);
+ my $tzoffset = ($8 * 60 + $9) * 60;
+ $tzoffset = - $tzoffset if $7 eq '-';
+ return $gm - $tzoffset;
+}
+
+sub usage {
+ print STDERR <<EOM;
+Usage: git_changelog [--post-date/-p] [--since=SINCE]
+ --post-date Show branches made after a commit occurred
+ --since Print only commits dated since SINCE
+EOM
+ exit 1;
+}
diff --git a/src/tools/ifaddrs/Makefile b/src/tools/ifaddrs/Makefile
index 72a6aa7de8..ab832afe58 100644
--- a/src/tools/ifaddrs/Makefile
+++ b/src/tools/ifaddrs/Makefile
@@ -2,9 +2,9 @@
#
# Makefile for src/tools/ifaddrs
#
-# Copyright (c) 2003-2010, PostgreSQL Global Development Group
+# Copyright (c) 2003-2011, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/ifaddrs/Makefile,v 1.3 2010/07/05 18:54:38 tgl Exp $
+# src/tools/ifaddrs/Makefile
#
#-------------------------------------------------------------------------
diff --git a/src/tools/ifaddrs/README b/src/tools/ifaddrs/README
index 9b0bd58517..9f92803eb5 100644
--- a/src/tools/ifaddrs/README
+++ b/src/tools/ifaddrs/README
@@ -1,4 +1,4 @@
-$PostgreSQL: pgsql/src/tools/ifaddrs/README,v 1.1 2009/10/01 01:58:58 tgl Exp $
+src/tools/ifaddrs/README
test_ifaddrs
============
diff --git a/src/tools/ifaddrs/test_ifaddrs.c b/src/tools/ifaddrs/test_ifaddrs.c
index 9ba6f11809..48d184c84a 100644
--- a/src/tools/ifaddrs/test_ifaddrs.c
+++ b/src/tools/ifaddrs/test_ifaddrs.c
@@ -1,5 +1,5 @@
/*
- * $PostgreSQL: pgsql/src/tools/ifaddrs/test_ifaddrs.c,v 1.2 2010/02/26 02:01:40 momjian Exp $
+ * src/tools/ifaddrs/test_ifaddrs.c
*
*
* test_ifaddrs.c
diff --git a/src/tools/make_ctags b/src/tools/make_ctags
index 18d96db5b8..4fc01f543d 100755
--- a/src/tools/make_ctags
+++ b/src/tools/make_ctags
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_ctags,v 1.12 2009/01/14 21:59:19 momjian Exp $
+# src/tools/make_ctags
trap "rm -f /tmp/$$" 0 1 2 3 15
rm -f ./tags
diff --git a/src/tools/make_diff/README b/src/tools/make_diff/README
index 9e333b6164..9401a74a64 100644
--- a/src/tools/make_diff/README
+++ b/src/tools/make_diff/README
@@ -1,4 +1,4 @@
-$PostgreSQL: pgsql/src/tools/make_diff/README,v 1.4 2008/03/21 13:23:29 momjian Exp $
+src/tools/make_diff/README
scripts
=======
@@ -14,7 +14,7 @@ for every file in the current directory. I can:
cporig `grep -l HeapTuple *`
If I use mkid (from ftp.postgreSQL.org), I can do:
-
+
cporig `lid -kn 'fsyncOff'`
and get a copy of every file containing that word. I can then do:
@@ -29,7 +29,7 @@ to edit all those files.
When I am ready to generate a patch, I run 'difforig' command from the top of
the source tree:
-
+
I pipe the output of this to a file to hold my patch, and the file names
it processes appear on my screen. It creates a nice patch for me of all
the files I used with cporig.
@@ -37,4 +37,3 @@ the files I used with cporig.
Finally, I remove my old copies with 'rmorig'.
Bruce Momjian
-
diff --git a/src/tools/make_diff/cporig b/src/tools/make_diff/cporig
index a4f2f24d63..7b8f75feb4 100755
--- a/src/tools/make_diff/cporig
+++ b/src/tools/make_diff/cporig
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_diff/cporig,v 1.2 2006/03/11 04:38:42 momjian Exp $
+# src/tools/make_diff/cporig
for FILE
do
diff --git a/src/tools/make_diff/difforig b/src/tools/make_diff/difforig
index a65d7b5dba..08119a42c3 100755
--- a/src/tools/make_diff/difforig
+++ b/src/tools/make_diff/difforig
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_diff/difforig,v 1.2 2006/03/11 04:38:42 momjian Exp $
+# src/tools/make_diff/difforig
if [ "$#" -eq 0 ]
then APATH="."
diff --git a/src/tools/make_diff/rmorig b/src/tools/make_diff/rmorig
index 5d405d0504..9879b786f4 100755
--- a/src/tools/make_diff/rmorig
+++ b/src/tools/make_diff/rmorig
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_diff/rmorig,v 1.2 2006/03/11 04:38:42 momjian Exp $
+# src/tools/make_diff/rmorig
if [ "$#" -eq 0 ]
then APATH="."
diff --git a/src/tools/make_etags b/src/tools/make_etags
index 6acb0df0de..3ce96bc3ca 100755
--- a/src/tools/make_etags
+++ b/src/tools/make_etags
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_etags,v 1.6 2009/01/14 21:59:19 momjian Exp $
+# src/tools/make_etags
rm -f ./TAGS
diff --git a/src/tools/make_keywords b/src/tools/make_keywords
index 4aba19eb02..abbbfe000f 100755
--- a/src/tools/make_keywords
+++ b/src/tools/make_keywords
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_keywords,v 1.2 2006/03/11 04:38:41 momjian Exp $
+# src/tools/make_keywords
cat <<END
To get a list of keywords compared to SQL'92, take the keywords out of
diff --git a/src/tools/make_mkid b/src/tools/make_mkid
index 6938d9b4fd..0c3414073b 100755
--- a/src/tools/make_mkid
+++ b/src/tools/make_mkid
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/make_mkid,v 1.11 2006/03/11 04:38:41 momjian Exp $
+# src/tools/make_mkid
mkid `find \`pwd\`/ \( -name _deadcode -a -prune \) -o \
-type f -name '*.[chyl]' -print|sed 's;//;/;g'`
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm
index 2026d18479..f1028b7374 100644
--- a/src/tools/msvc/Install.pm
+++ b/src/tools/msvc/Install.pm
@@ -3,7 +3,7 @@ package Install;
#
# Package that provides 'make install' functionality for msvc builds
#
-# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.35 2010/04/09 13:05:58 mha Exp $
+# src/tools/msvc/Install.pm
#
use strict;
use warnings;
@@ -56,8 +56,10 @@ sub Install
my $majorver = DetermineMajorVersion();
print "Installing version $majorver for $conf in $target\n";
- EnsureDirectories($target, 'bin','lib','share','share/timezonesets','share/contrib','doc',
- 'doc/contrib', 'symbols', 'share/tsearch_data');
+ EnsureDirectories($target, 'bin', 'lib', 'share', 'share/timezonesets',
+ 'share/extension', 'share/contrib',
+ 'doc', 'doc/extension', 'doc/contrib',
+ 'symbols', 'share/tsearch_data');
CopySolutionOutput($conf, $target);
lcopy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll');
@@ -111,6 +113,25 @@ sub Install
CopyContribFiles($config,$target);
CopyIncludeFiles($target);
+ my $pl_extension_files = [];
+ my @pldirs = ('src/pl/plpgsql/src');
+ push @pldirs,"src/pl/plperl" if $config->{perl};
+ push @pldirs,"src/pl/plpython" if $config->{python};
+ push @pldirs,"src/pl/tcl" if $config->{tcl};
+ File::Find::find(
+ {
+ wanted =>sub {
+ /^(.*--.*\.sql|.*\.control)\z/s
+ &&push(@$pl_extension_files, $File::Find::name);
+ }
+ },
+ @pldirs
+ );
+ CopySetOfFiles(
+ 'PL Extension files', $pl_extension_files,
+ $target . '/share/extension/'
+ );
+
GenerateNLSFiles($target,$config->{nls},$majorver) if ($config->{nls});
print "Installation complete.\n";
@@ -312,10 +333,31 @@ sub CopyContribFiles
next if ($d eq "uuid-ossp"&& !defined($config->{uuid}));
next if ($d eq "sslinfo" && !defined($config->{openssl}));
next if ($d eq "xml2" && !defined($config->{xml}));
+ next if ($d eq "sepgsql");
my $mf = read_file("contrib/$d/Makefile");
$mf =~ s{\\s*[\r\n]+}{}mg;
+
+ # Note: we currently don't support setting MODULEDIR in the makefile
+ my $moduledir = 'contrib';
+
my $flist = '';
+ if ($mf =~ /^EXTENSION\s*=\s*(.*)$/m) {$flist .= $1}
+ if ($flist ne '')
+ {
+ $moduledir = 'extension';
+ $flist = ParseAndCleanRule($flist, $mf);
+
+ foreach my $f (split /\s+/,$flist)
+ {
+ lcopy('contrib/' . $d . '/' . $f . '.control',
+ $target . '/share/extension/' . $f . '.control')
+ || croak("Could not copy file $f.control in contrib $d");
+ print '.';
+ }
+ }
+
+ $flist = '';
if ($mf =~ /^DATA_built\s*=\s*(.*)$/m) {$flist .= $1}
if ($mf =~ /^DATA\s*=\s*(.*)$/m) {$flist .= " $1"}
$flist =~ s/^\s*//; # Remove leading spaces if we had only DATA_built
@@ -324,12 +366,10 @@ sub CopyContribFiles
{
$flist = ParseAndCleanRule($flist, $mf);
- # Special case for contrib/spi
- $flist = "autoinc.sql insert_username.sql moddatetime.sql refint.sql timetravel.sql"
- if ($d eq 'spi');
foreach my $f (split /\s+/,$flist)
{
- lcopy('contrib/' . $d . '/' . $f,$target . '/share/contrib/' . basename($f))
+ lcopy('contrib/' . $d . '/' . $f,
+ $target . '/share/' . $moduledir . '/' . basename($f))
|| croak("Could not copy file $f in contrib $d");
print '.';
}
@@ -343,7 +383,8 @@ sub CopyContribFiles
foreach my $f (split /\s+/,$flist)
{
- lcopy('contrib/' . $d . '/' . $f,$target . '/share/tsearch_data/' . basename($f))
+ lcopy('contrib/' . $d . '/' . $f,
+ $target . '/share/tsearch_data/' . basename($f))
|| croak("Could not copy file $f in contrib $d");
print '.';
}
@@ -361,7 +402,8 @@ sub CopyContribFiles
if ($d eq 'spi');
foreach my $f (split /\s+/,$flist)
{
- lcopy('contrib/' . $d . '/' . $f, $target . '/doc/contrib/' . $f)
+ lcopy('contrib/' . $d . '/' . $f,
+ $target . '/doc/' . $moduledir . '/' . $f)
|| croak("Could not copy file $f in contrib $d");
print '.';
}
@@ -397,7 +439,7 @@ sub CopyIncludeFiles
my $target = shift;
EnsureDirectories($target, 'include', 'include/libpq','include/internal',
- 'include/internal/libpq','include/server');
+ 'include/internal/libpq','include/server', 'include/server/parser');
CopyFiles(
'Public headers',
@@ -431,18 +473,23 @@ sub CopyIncludeFiles
$target . '/include/server/',
'src/include/', 'pg_config.h', 'pg_config_os.h'
);
+ CopyFiles('Grammar header', $target . '/include/server/parser/',
+ 'src/backend/parser/', 'gram.h');
CopySetOfFiles('',[ glob("src\\include\\*.h") ],$target . '/include/server/');
my $D;
opendir($D, 'src/include') || croak "Could not opendir on src/include!\n";
+ # some xcopy progs don't like mixed slash style paths
+ (my $ctarget = $target) =~ s!/!\\!g;
while (my $d = readdir($D))
{
next if ($d =~ /^\./);
+ next if ($d eq '.git');
next if ($d eq 'CVS');
- next unless (-d 'src/include/' . $d);
+ next unless (-d "src/include/$d");
- EnsureDirectories($target . '/include/server', $d);
- system("xcopy /s /i /q /r /y src\\include\\$d\\*.h \"$target\\include\\server\\$d\\\"")
+ EnsureDirectories("$target/include/server/$d");
+ system(qq{xcopy /s /i /q /r /y src\\include\\$d\\*.h "$ctarget\\include\\server\\$d\\"})
&& croak("Failed to copy include directory $d\n");
}
closedir($D);
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 72c58751d0..1d10ee98e8 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -3,7 +3,7 @@ package Mkvcbuild;
#
# Package that generates build files for msvc build
#
-# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.59 2010/07/02 23:25:27 adunstan Exp $
+# src/tools/msvc/Mkvcbuild.pm
#
use Carp;
use Win32;
@@ -25,17 +25,18 @@ my $postgres;
my $libpq;
my $contrib_defines = {'refint' => 'REFINT_VERBOSE'};
-my @contrib_uselibpq = ('dblink', 'oid2name', 'pgbench', 'pg_upgrade',
- 'vacuumlo');
-my @contrib_uselibpgport = ('oid2name', 'pgbench', 'pg_standby',
- 'pg_archivecleanup', 'pg_upgrade', 'vacuumlo');
+my @contrib_uselibpq = ('dblink', 'oid2name', 'pgbench', 'pg_upgrade','vacuumlo');
+my @contrib_uselibpgport =(
+ 'oid2name', 'pgbench', 'pg_standby','pg_archivecleanup',
+ 'pg_test_fsync', 'pg_upgrade', 'vacuumlo'
+);
my $contrib_extralibs = {'pgbench' => ['wsock32.lib']};
my $contrib_extraincludes = {'tsearch2' => ['contrib/tsearch2'], 'dblink' => ['src/backend']};
my $contrib_extrasource = {
'cube' => ['cubescan.l','cubeparse.y'],
'seg' => ['segscan.l','segparse.y']
};
-my @contrib_excludes = ('pgcrypto','intagg');
+my @contrib_excludes = ('pgcrypto','intagg','sepgsql');
sub mkvcbuild
{
@@ -48,10 +49,11 @@ sub mkvcbuild
our @pgportfiles = qw(
chklocale.c crypt.c fseeko.c getrusage.c inet_aton.c random.c srandom.c
- getaddrinfo.c gettimeofday.c kill.c open.c erand48.c
- snprintf.c strlcat.c strlcpy.c dirmod.c exec.c noblock.c path.c pipe.c
- pgsleep.c pgstrcasecmp.c qsort.c qsort_arg.c sprompt.c thread.c
- getopt.c getopt_long.c dirent.c rint.c win32env.c win32error.c);
+ getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c erand48.c
+ snprintf.c strlcat.c strlcpy.c dirmod.c exec.c noblock.c path.c
+ pgcheckdir.c pgmkdirp.c pgsleep.c pgstrcasecmp.c qsort.c qsort_arg.c
+ sprompt.c thread.c getopt.c getopt_long.c dirent.c rint.c win32env.c
+ win32error.c);
$libpgport = $solution->AddProject('libpgport','lib','misc');
$libpgport->AddDefine('FRONTEND');
@@ -64,11 +66,14 @@ sub mkvcbuild
$postgres->ReplaceFile('src\backend\port\dynloader.c','src\backend\port\dynloader\win32.c');
$postgres->ReplaceFile('src\backend\port\pg_sema.c','src\backend\port\win32_sema.c');
$postgres->ReplaceFile('src\backend\port\pg_shmem.c','src\backend\port\win32_shmem.c');
+ $postgres->ReplaceFile('src\backend\port\pg_latch.c','src\backend\port\win32_latch.c');
$postgres->AddFiles('src\port',@pgportfiles);
+ $postgres->AddFile('src\backend\port\pipe.c');
$postgres->AddDir('src\timezone');
$postgres->AddFiles('src\backend\parser','scan.l','gram.y');
$postgres->AddFiles('src\backend\bootstrap','bootscanner.l','bootparse.y');
$postgres->AddFiles('src\backend\utils\misc','guc-file.l');
+ $postgres->AddFiles('src\backend\replication', 'repl_scanner.l', 'repl_gram.y');
$postgres->AddDefine('BUILDING_DLL');
$postgres->AddLibrary('wsock32.lib');
$postgres->AddLibrary('ws2_32.lib');
@@ -167,8 +172,8 @@ sub mkvcbuild
if ($solution->{options}->{python})
{
-
- # Attempt to get python version and location. Assume python.exe in specified dir.
+ # Attempt to get python version and location.
+ # Assume python.exe in specified dir.
open(P,
$solution->{options}->{python}
. "\\python -c \"import sys;print(sys.prefix);print(str(sys.version_info[0])+str(sys.version_info[1]))\" |"
@@ -179,11 +184,14 @@ sub mkvcbuild
chomp($pyver);
close(P);
- # Sometimes (always?) if python is not present, the execution actually works, but gives no data...
+ # Sometimes (always?) if python is not present, the execution
+ # appears to work, but gives no data...
die "Failed to query python for version information\n"
if (!(defined($pyprefix) && defined($pyver)));
- my $plpython = $solution->AddProject('plpython','dll','PLs','src\pl\plpython');
+ my $pymajorver = substr($pyver, 0, 1);
+ my $plpython = $solution->AddProject('plpython' . $pymajorver, 'dll',
+ 'PLs', 'src\pl\plpython');
$plpython->AddIncludeDir($pyprefix . '\include');
$plpython->AddLibrary($pyprefix . "\\Libs\\python$pyver.lib");
$plpython->AddReference($postgres);
@@ -264,6 +272,28 @@ sub mkvcbuild
$pgregress_ecpg->AddDefine('FRONTEND');
$pgregress_ecpg->AddReference($libpgport);
+ my $isolation_tester = $solution->AddProject('isolationtester','exe','misc');
+ $isolation_tester->AddFile('src\test\isolation\isolationtester.c');
+ $isolation_tester->AddFile('src\test\isolation\specparse.y');
+ $isolation_tester->AddFile('src\test\isolation\specscanner.l');
+ $isolation_tester->AddFile('src\test\isolation\specparse.c');
+ $isolation_tester->AddIncludeDir('src\test\isolation');
+ $isolation_tester->AddIncludeDir('src\port');
+ $isolation_tester->AddIncludeDir('src\test\regress');
+ $isolation_tester->AddIncludeDir('src\interfaces\libpq');
+ $isolation_tester->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
+ $isolation_tester->AddDefine('FRONTEND');
+ $isolation_tester->AddReference($libpq, $libpgport);
+
+ my $pgregress_isolation = $solution->AddProject('pg_isolation_regress','exe','misc');
+ $pgregress_isolation->AddFile('src\test\isolation\isolation_main.c');
+ $pgregress_isolation->AddFile('src\test\regress\pg_regress.c');
+ $pgregress_isolation->AddIncludeDir('src\port');
+ $pgregress_isolation->AddIncludeDir('src\test\regress');
+ $pgregress_isolation->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
+ $pgregress_isolation->AddDefine('FRONTEND');
+ $pgregress_isolation->AddReference($libpgport);
+
# src/bin
my $initdb = AddSimpleFrontend('initdb');
$initdb->AddIncludeDir('src\interfaces\libpq');
@@ -271,6 +301,8 @@ sub mkvcbuild
$initdb->AddLibrary('wsock32.lib');
$initdb->AddLibrary('ws2_32.lib');
+ my $pgbasebackup = AddSimpleFrontend('pg_basebackup', 1);
+
my $pgconfig = AddSimpleFrontend('pg_config');
my $pgcontrol = AddSimpleFrontend('pg_controldata');
@@ -430,7 +462,7 @@ sub mkvcbuild
{ # Also catches mbprint.c
$proj->AddFile('src\bin\psql\\' . $f);
}
- else
+ elsif ($f =~ /\.c$/)
{
$proj->AddFile('src\bin\scripts\\' . $f);
}
@@ -572,10 +604,6 @@ sub GenerateContribSqlFiles
$l = substr($l, 0, index($l, '$(addsuffix ')) . substr($l, $i+1);
}
- # Special case for contrib/spi
- $l = "autoinc.sql insert_username.sql moddatetime.sql refint.sql timetravel.sql"
- if ($n eq 'spi');
-
foreach my $d (split /\s+/, $l)
{
my $in = "$d.in";
@@ -587,7 +615,6 @@ sub GenerateContribSqlFiles
my $cont = Project::read_file("contrib/$n/$in");
my $dn = $out;
$dn =~ s/\.sql$//;
- if ($mf =~ /^MODULE_big\s*=\s*(.*)$/m) { $dn = $1 }
$cont =~ s/MODULE_PATHNAME/\$libdir\/$dn/g;
my $o;
open($o,">contrib/$n/$out") || croak "Could not write to contrib/$n/$d";
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index aa9c123da6..66752f9033 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -3,7 +3,7 @@ package Project;
#
# Package that encapsulates a Visual C++ project file generation
#
-# $PostgreSQL: pgsql/src/tools/msvc/Project.pm,v 1.26 2010/04/09 13:05:58 mha Exp $
+# src/tools/msvc/Project.pm
#
use Carp;
use strict;
diff --git a/src/tools/msvc/README b/src/tools/msvc/README
index 603a6e0be2..58e266e11f 100644
--- a/src/tools/msvc/README
+++ b/src/tools/msvc/README
@@ -1,4 +1,4 @@
-$PostgreSQL: pgsql/src/tools/msvc/README,v 1.7 2008/03/21 13:23:29 momjian Exp $
+src/tools/msvc/README
MSVC build
==========
@@ -18,13 +18,13 @@ perltidy -b -bl -nsfs -naws -l=100 -ole=unix *.pl *.pm
Notes about Visual Studio Express
---------------------------------
To build PostgreSQL using Visual Studio Express, the Platform SDK
-has to be installed. Since this is not included in the product
+has to be installed. Since this is not included in the product
originally, extra steps are needed to make it work.
-First, download and install the latest Platform SDK from
-www.microsoft.com.
+First, download and install the latest Platform SDK from
+www.microsoft.com.
-Locate the files vcprojectengine.dll.express.config and
+Locate the files vcprojectengine.dll.express.config and
vcprojectengine.dll.config in the vc\vcpackages directory of
the Visual C++ Express installation. In these files, add the paths
to the Platform SDK to the Include, Library and Path tags. Be sure
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 12b9085bc5..1a7b94da6c 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -3,7 +3,7 @@ package Solution;
#
# Package that encapsulates a Visual C++ solution file generation
#
-# $PostgreSQL: pgsql/src/tools/msvc/Solution.pm,v 1.57 2010/04/09 13:05:58 mha Exp $
+# src/tools/msvc/Solution.pm
#
use Carp;
use strict;
@@ -66,7 +66,7 @@ sub DetermineToolVersions
open(P,"vcbuild /? |") || die "vcbuild command not found";
my $line = <P>;
close(P);
- if ($line !~ /^Microsoft\s*\(R\) Visual C\+\+ Project Builder - \D+(\d+)\.00\.\d+/)
+ if ($line !~ /^Microsoft\s*\(R\) Visual C\+\+ [^-]+ - \D+(\d+)\.00\.\d+/)
{
die "Unable to determine vcbuild version from first line of output!";
}
@@ -273,6 +273,25 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
);
}
+ if ($self->{options}->{python} && IsNewer('src\pl\plpython\spiexceptions.h','src\include\backend\errcodes.txt'))
+ {
+ print "Generating spiexceptions.h...\n";
+ system('perl src\pl\plpython\generate-spiexceptions.pl src\backend\utils\errcodes.txt > src\pl\plpython\spiexceptions.h');
+ }
+
+ if (IsNewer('src\include\utils\errcodes.h','src\backend\utils\errcodes.txt'))
+ {
+ print "Generating errcodes.h...\n";
+ system('perl src\backend\utils\generate-errcodes.pl src\backend\utils\errcodes.txt > src\backend\utils\errcodes.h');
+ copyFile('src\backend\utils\errcodes.h','src\include\utils\errcodes.h');
+ }
+
+ if (IsNewer('src\pl\plpgsql\src\plerrcodes.h','src\backend\utils\errcodes.txt'))
+ {
+ print "Generating plerrcodes.h...\n";
+ system('perl src\pl\plpgsql\src\generate-plerrcodes.pl src\backend\utils\errcodes.txt > src\pl\plpgsql\src\plerrcodes.h');
+ }
+
if (IsNewer('src\interfaces\libpq\libpq.rc','src\interfaces\libpq\libpq.rc.in'))
{
print "Generating libpq.rc...\n";
@@ -370,8 +389,8 @@ EOF
open(O, ">doc/src/sgml/version.sgml") || croak "Could not write to version.sgml\n";
print O <<EOF;
-<!entity version "$self->{strver}">
-<!entity majorversion "$self->{majorver}">
+<!ENTITY version "$self->{strver}">
+<!ENTITY majorversion "$self->{majorver}">
EOF
close(O);
}
diff --git a/src/tools/msvc/build.bat b/src/tools/msvc/build.bat
index 1684d3bec2..4001ac1d0d 100755
--- a/src/tools/msvc/build.bat
+++ b/src/tools/msvc/build.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/build.bat,v 1.10 2007/09/27 21:13:11 adunstan Exp $
+REM src/tools/msvc/build.bat
REM all the logic for this now belongs in build.pl. This file really
REM only exists so you don't have to type "perl build.pl"
REM Resist any temptation to add any logic here.
diff --git a/src/tools/msvc/build.pl b/src/tools/msvc/build.pl
index 764e5942f6..66b5c4c59b 100644
--- a/src/tools/msvc/build.pl
+++ b/src/tools/msvc/build.pl
@@ -1,7 +1,6 @@
-
# -*-perl-*- hey - emacs - this is a perl file
-# $PostgreSQL: pgsql/src/tools/msvc/build.pl,v 1.3 2010/04/09 13:05:58 mha Exp $
+# src/tools/msvc/build.pl
BEGIN
{
diff --git a/src/tools/msvc/builddoc.bat b/src/tools/msvc/builddoc.bat
index 7268ae207f..024706989e 100755
--- a/src/tools/msvc/builddoc.bat
+++ b/src/tools/msvc/builddoc.bat
@@ -1,65 +1,7 @@
@echo off
-REM Adjust path for your docbook installation in buildenv.pl
-REM $PostgreSQL: pgsql/src/tools/msvc/builddoc.bat,v 1.6 2007/12/19 12:29:36 mha Exp $
-
-SETLOCAL
-SET STARTDIR=%CD%
-SET OPENJADE=openjade-1.3.1
-SET DSSSL=docbook-dsssl-1.79
-
-IF EXIST ..\msvc IF EXIST ..\..\..\src cd ..\..\..
-IF NOT EXIST doc\src\sgml\version.sgml goto noversion
-
-IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
-perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
-CALL bldenv.bat
-del bldenv.bat
-:nobuildenv
-
-IF NOT EXIST %DOCROOT%\%OPENJADE% SET NF=OpenJade
-IF NOT EXIST %DOCROOT%\docbook SET NF=docbook
-IF NOT EXIST %DOCROOT%\%DSSSL% set NF=docbook-dssl
-
-IF NOT "%NF%" == "" GOTO notfound
-
-IF "%1" == "renamefiles" GOTO renamefiles
-
-cmd /v /c src\tools\msvc\builddoc renamefiles
-cd doc\src\sgml
-
-SET SGML_CATALOG_FILES=%DOCROOT%\%OPENJADE%\dsssl\catalog;%DOCROOT%\docbook\docbook.cat
-perl %DOCROOT%\%DSSSL%\bin\collateindex.pl -f -g -o bookindex.sgml -N
-perl mk_feature_tables.pl YES ..\..\..\src\backend\catalog\sql_feature_packages.txt ..\..\..\src\backend\catalog\sql_features.txt > features-supported.sgml
-perl mk_feature_tables.pl NO ..\..\..\src\backend\catalog\sql_feature_packages.txt ..\..\..\src\backend\catalog\sql_features.txt > features-unsupported.sgml
-
-echo Running first build...
-%DOCROOT%\%OPENJADE%\bin\openjade -V draft-mode -wall -wno-unused-param -wno-empty -D . -c %DOCROOT%\%DSSSL%\catalog -d stylesheet.dsl -i output-html -t sgml postgres.sgml 2>&1 | findstr /V "DTDDECL catalog entries are not supported"
-echo Running collateindex...
-perl %DOCROOT%\%DSSSL%\bin\collateindex.pl -f -g -i bookindex -o bookindex.sgml HTML.index
-echo Running second build...
-%DOCROOT%\%OPENJADE%\bin\openjade -V draft-mode -wall -wno-unused-param -wno-empty -D . -c %DOCROOT%\%DSSSL%\catalog -d stylesheet.dsl -i output-html -t sgml postgres.sgml 2>&1 | findstr /V "DTDDECL catalog entries are not supported"
-
-cd %STARTDIR%
-echo Docs build complete.
-exit /b
-
-
-:renamefiles
-REM Rename ISO entity files
-CD %DOCROOT%\docbook
-FOR %%f in (ISO*) do (
- set foo=%%f
- IF NOT "!foo:~-4!" == ".gml" ren !foo! !foo:~0,3!-!foo:~3!.gml
-)
-exit /b
-
-:notfound
-echo Could not find directory for %NF%.
-cd %STARTDIR%
-goto :eof
-
-:noversion
-echo Could not find version.sgml. Please run mkvcbuild.pl first!
-cd %STARTDIR%
-goto :eof
+REM src/tools/msvc/builddoc.bat
+REM all the logic for this now belongs in builddoc.pl. This file really
+REM only exists so you don't have to type "perl builddoc.pl"
+REM Resist any temptation to add any logic here.
+@perl builddoc.pl %*
diff --git a/src/tools/msvc/builddoc.pl b/src/tools/msvc/builddoc.pl
new file mode 100644
index 0000000000..deaf659e77
--- /dev/null
+++ b/src/tools/msvc/builddoc.pl
@@ -0,0 +1,122 @@
+# -*-perl-*- hey - emacs - this is a perl file
+
+# Adjust path for your docbook installation in buildenv.pl
+
+# src/tools/msvc/builddoc.pl
+# translated from an earlier .bat file
+
+use strict;
+use File::Copy;
+use Cwd qw(abs_path getcwd);
+
+
+my $startdir = getcwd();
+
+my $openjade = 'openjade-1.3.1';
+my $dsssl = 'docbook-dsssl-1.79';
+
+chdir '../../..' if (-d '../msvc' && -d '../../../src');
+
+noversion() unless -e 'doc/src/sgml/version.sgml';
+
+require 'src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';
+
+my $docroot = $ENV{DOCROOT};
+die "bad DOCROOT '$docroot'" unless ($docroot && -d $docroot);
+
+my @notfound;
+foreach my $dir ('docbook', $openjade, $dsssl)
+{
+ push(@notfound,$dir) unless -d "$docroot/$dir";
+}
+missing() if @notfound;
+
+my $arg = shift;
+renamefiles();
+
+
+chdir 'doc/src/sgml';
+
+$ENV{SGML_CATALOG_FILES} = "$docroot/$openjade/dsssl/catalog;" .
+ "$docroot/docbook/docbook.cat";
+
+my $cmd;
+
+# openjade exits below with a harmless non-zero status, so we
+# can't die on "failure"
+
+$cmd =
+"perl mk_feature_tables.pl YES " .
+ "../../../src/backend/catalog/sql_feature_packages.txt " .
+ "../../../src/backend/catalog/sql_features.txt " .
+ "> features-supported.sgml";
+system($cmd); die "features_supported" if $?;
+$cmd =
+"perl mk_feature_tables.pl NO " .
+ "\"../../../src/backend/catalog/sql_feature_packages.txt\" " .
+ "\"../../../src/backend/catalog/sql_features.txt\" " .
+ "> features-unsupported.sgml";
+system($cmd); die "features_unsupported" if $?;
+$cmd =
+"perl generate-errcodes-table.pl \"../../../src/backend/utils/errcodes.txt\" " .
+ "> errcodes-table.sgml";
+system($cmd); die "errcodes-table" if $?;
+
+print "Running first build...\n";
+$cmd =
+"\"$docroot/$openjade/bin/openjade\" -V html-index -wall " .
+ "-wno-unused-param -wno-empty -D . -c \"$docroot/$dsssl/catalog\" " .
+ "-d stylesheet.dsl -i output-html -t sgml postgres.sgml 2>&1 " .
+ "| findstr /V \"DTDDECL catalog entries are not supported\" ";
+system($cmd); # die "openjade" if $?;
+print "Running collateindex...\n";
+$cmd =
+"perl \"$docroot/$dsssl/bin/collateindex.pl\" -f -g -i bookindex " .
+ "-o bookindex.sgml HTML.index";
+system($cmd); die "collateindex" if $?;
+mkdir "html";
+print "Running second build...\n";
+$cmd =
+"\"$docroot/$openjade/bin/openjade\" -wall -wno-unused-param -wno-empty " .
+ "-D . -c \"$docroot/$dsssl/catalog\" -d stylesheet.dsl -t sgml " .
+ "-i output-html -i include-index postgres.sgml 2>&1 " .
+ "| findstr /V \"DTDDECL catalog entries are not supported\" ";
+
+system($cmd); # die "openjade" if $?;
+
+copy "stylesheet.css", "html/stylesheet.css";
+
+print "Docs build complete.\n";
+
+exit;
+
+########################################################
+
+sub renamefiles
+{
+ # Rename ISO entity files
+ my $savedir = getcwd();
+ chdir "$docroot/docbook";
+ foreach my $f (glob('ISO*'))
+ {
+ next if $f =~ /\.gml$/i;
+ my $nf = $f;
+ $nf =~ s/ISO(.*)/ISO-$1.gml/;
+ move $f, $nf;
+ }
+ chdir $savedir;
+
+}
+
+sub missing
+{
+ print STDERR "could not find $docroot/$_\n" foreach (@notfound);
+ exit 1;
+}
+
+sub noversion
+{
+ print STDERR "Could not find version.sgml. ",
+ "Please run mkvcbuild.pl first!\n";
+ exit 1;
+}
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 09741f9e6d..a59bbe55da 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/clean.bat,v 1.18 2010/01/05 01:06:57 tgl Exp $
+REM src/tools/msvc/clean.bat
set DIST=0
if "%1"=="dist" set DIST=1
@@ -20,6 +20,7 @@ REM Delete files created with GenerateFiles() in Solution.pm
if exist src\include\pg_config.h del /q src\include\pg_config.h
if exist src\include\pg_config_os.h del /q src\include\pg_config_os.h
if %DIST%==1 if exist src\backend\parser\gram.h del /q src\backend\parser\gram.h
+if exist src\include\utils\errcodes.h del /q src\include\utils\errcodes.h
if exist src\include\utils\fmgroids.h del /q src\include\utils\fmgroids.h
if exist src\include\utils\probes.h del /q src\include\utils\probes.h
diff --git a/src/tools/msvc/config_default.pl b/src/tools/msvc/config_default.pl
index eea4a70fe7..971d740a9e 100644
--- a/src/tools/msvc/config_default.pl
+++ b/src/tools/msvc/config_default.pl
@@ -8,7 +8,7 @@ our $config = {
# float4byval=>1, # --disable-float4-byval, on by default
# float8byval=>0, # --disable-float8-byval, off by default
# blocksize => 8, # --with-blocksize, 8kB by default
- # wal_blocksize => 8, # --with-wal-blocksize, 8kb by default
+ # wal_blocksize => 8, # --with-wal-blocksize, 8kB by default
# wal_segsize => 16, # --with-wal-segsize, 16MB by default
ldap=>1, # --with-ldap
nls=>undef, # --enable-nls=<path>
diff --git a/src/tools/msvc/gendef.pl b/src/tools/msvc/gendef.pl
index 487012fc34..b8538dd79b 100644
--- a/src/tools/msvc/gendef.pl
+++ b/src/tools/msvc/gendef.pl
@@ -3,7 +3,7 @@ my @def;
#
# Script that generates a .DEF file for all objects in a directory
#
-# $PostgreSQL: pgsql/src/tools/msvc/gendef.pl,v 1.10 2010/04/09 13:05:58 mha Exp $
+# src/tools/msvc/gendef.pl
#
die "Usage: gendef.pl <modulepath> <platform>\n"
diff --git a/src/tools/msvc/install.bat b/src/tools/msvc/install.bat
index 043bc69158..8c5fb1dccb 100644
--- a/src/tools/msvc/install.bat
+++ b/src/tools/msvc/install.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/install.bat,v 1.3 2007/12/19 12:29:36 mha Exp $
+REM src/tools/msvc/install.bat
if NOT "%1"=="" GOTO RUN_INSTALL
diff --git a/src/tools/msvc/install.pl b/src/tools/msvc/install.pl
index 7e0c48e998..28563a930d 100755
--- a/src/tools/msvc/install.pl
+++ b/src/tools/msvc/install.pl
@@ -1,7 +1,7 @@
#
# Script that provides 'make install' functionality for msvc builds
#
-# $PostgreSQL: pgsql/src/tools/msvc/install.pl,v 1.7 2007/03/17 14:01:01 mha Exp $
+# src/tools/msvc/install.pl
#
use strict;
use warnings;
diff --git a/src/tools/msvc/mkvcbuild.pl b/src/tools/msvc/mkvcbuild.pl
index bdb1cc4d82..32861cbbd6 100644
--- a/src/tools/msvc/mkvcbuild.pl
+++ b/src/tools/msvc/mkvcbuild.pl
@@ -2,7 +2,7 @@
# Script that parses Unix style build environment and generates build files
# for building with Visual Studio.
#
-# $PostgreSQL: pgsql/src/tools/msvc/mkvcbuild.pl,v 1.19 2010/01/05 13:31:58 mha Exp $
+# src/tools/msvc/mkvcbuild.pl
#
use strict;
use warnings;
diff --git a/src/tools/msvc/pgbison.bat b/src/tools/msvc/pgbison.bat
index e22b853a01..e67b8fcf19 100755
--- a/src/tools/msvc/pgbison.bat
+++ b/src/tools/msvc/pgbison.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/pgbison.bat,v 1.10 2008/08/30 02:32:24 tgl Exp $
+REM src/tools/msvc/pgbison.bat
IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
@@ -17,7 +17,9 @@ goto nobison
if "%1" == "src\backend\parser\gram.y" call :generate %1 src\backend\parser\gram.c src\backend\parser\gram.h
if "%1" == "src\backend\bootstrap\bootparse.y" call :generate %1 src\backend\bootstrap\bootparse.c
+if "%1" == "src\backend\replication\repl_gram.y" call :generate %1 src\backend\replication\repl_gram.c
if "%1" == "src\pl\plpgsql\src\gram.y" call :generate %1 src\pl\plpgsql\src\pl_gram.c src\pl\plpgsql\src\pl_gram.h
+if "%1" == "src\test\isolation\specparse.y" call :generate %1 src\test\isolation\specparse.c
if "%1" == "src\interfaces\ecpg\preproc\preproc.y" call :generate %1 src\interfaces\ecpg\preproc\preproc.c src\interfaces\ecpg\preproc\preproc.h
if "%1" == "contrib\cube\cubeparse.y" call :generate %1 contrib\cube\cubeparse.c
if "%1" == "contrib\seg\segparse.y" call :generate %1 contrib\seg\segparse.c
diff --git a/src/tools/msvc/pgflex.bat b/src/tools/msvc/pgflex.bat
index 00c6757231..75f4eb9dfe 100755
--- a/src/tools/msvc/pgflex.bat
+++ b/src/tools/msvc/pgflex.bat
@@ -1,5 +1,8 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/pgflex.bat,v 1.6 2009/11/12 00:13:00 tgl Exp $
+REM src/tools/msvc/pgflex.bat
+
+REM silence flex bleatings about file path style
+SET CYGWIN=nodosfilewarning
IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
@@ -13,6 +16,8 @@ if errorlevel 1 goto noflex
if "%1" == "src\backend\parser\scan.l" call :generate %1 src\backend\parser\scan.c -CF
if "%1" == "src\backend\bootstrap\bootscanner.l" call :generate %1 src\backend\bootstrap\bootscanner.c
if "%1" == "src\backend\utils\misc\guc-file.l" call :generate %1 src\backend\utils\misc\guc-file.c
+if "%1" == "src\backend\replication\repl_scanner.l" call :generate %1 src\backend\replication\repl_scanner.c
+if "%1" == "src\test\isolation\specscanner.l" call :generate %1 src\test\isolation\specscanner.c
if "%1" == "src\interfaces\ecpg\preproc\pgc.l" call :generate %1 src\interfaces\ecpg\preproc\pgc.c
if "%1" == "src\bin\psql\psqlscan.l" call :generate %1 src\bin\psql\psqlscan.c
if "%1" == "contrib\cube\cubescan.l" call :generate %1 contrib\cube\cubescan.c
@@ -21,9 +26,19 @@ if "%1" == "contrib\seg\segscan.l" call :generate %1 contrib\seg\segscan.c
echo Unknown flex input: %1
exit 1
+REM For non-reentrant scanners we need to fix up the yywrap macro definition
+REM to keep the MS compiler happy.
+REM For reentrant scanners (like the core scanner) we do not
+REM need to (and must not) change the yywrap definition.
:generate
flex %3 -o%2 %1
-exit %errorlevel%
+if errorlevel 1 exit %errorlevel%
+perl -n -e "exit 1 if /^\%%option\s+reentrant/;" %1
+if errorlevel 1 exit 0
+perl -pi.bak -e "s/yywrap\(n\)/yywrap()/;" %2
+if errorlevel 1 exit %errorlevel%
+del %2.bak
+exit 0
:noflex
echo WARNING! flex install not found, attempting to build without
diff --git a/src/tools/msvc/vcregress.bat b/src/tools/msvc/vcregress.bat
index 56b6510d3d..a981d3a6aa 100644
--- a/src/tools/msvc/vcregress.bat
+++ b/src/tools/msvc/vcregress.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/vcregress.bat,v 1.15 2007/09/27 21:13:11 adunstan Exp $
+REM src/tools/msvc/vcregress.bat
REM all the logic for this now belongs in vcregress.pl. This file really
REM only exists so you don't have to type "perl vcregress.pl"
REM Resist any temptation to add any logic here.
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 4c0792242c..579ca52e02 100644
--- a/src/tools/msvc/vcregress.pl
+++ b/src/tools/msvc/vcregress.pl
@@ -1,7 +1,6 @@
-
# -*-perl-*- hey - emacs - this is a perl file
-# $PostgreSQL: pgsql/src/tools/msvc/vcregress.pl,v 1.15 2010/04/09 13:05:58 mha Exp $
+# src/tools/msvc/vcregress.pl
use strict;
@@ -14,7 +13,8 @@ my $startdir = getcwd();
chdir "../../.." if (-d "../../../src/tools/msvc");
-require 'src/tools/msvc/config.pl';
+require 'src/tools/msvc/config_default.pl';
+require 'src/tools/msvc/config.pl' if (-f 'src/tools/msvc/config.pl');
# buildenv.pl is for specifying the build environment settings
# it should contian lines like:
@@ -26,7 +26,7 @@ if ( -e "src/tools/msvc/buildenv.pl")
}
my $what = shift || "";
-if ($what =~ /^(check|installcheck|plcheck|contribcheck|ecpgcheck)$/i)
+if ($what =~ /^(check|installcheck|plcheck|contribcheck|ecpgcheck|isolationcheck)$/i)
{
$what = uc $what;
}
@@ -41,6 +41,7 @@ my $Config = -e "release/postgres/postgres.exe" ? "Release" : "Debug";
copy("$Config/refint/refint.dll","src/test/regress");
copy("$Config/autoinc/autoinc.dll","src/test/regress");
copy("$Config/regress/regress.dll","src/test/regress");
+copy("$Config/dummy_seclabel/dummy_seclabel.dll","src/test/regress");
$ENV{PATH} = "../../../$Config/libpq;../../$Config/libpq;$ENV{PATH}";
@@ -70,7 +71,8 @@ my %command = (
PLCHECK => \&plcheck,
INSTALLCHECK => \&installcheck,
ECPGCHECK => \&ecpgcheck,
- CONTRIBCHECK => \&contribcheck
+ CONTRIBCHECK => \&contribcheck,
+ ISOLATIONCHECK => \&isolationcheck,
);
my $proc = $command{$what};
@@ -88,7 +90,7 @@ sub installcheck
my @args = (
"../../../$Config/pg_regress/pg_regress","--dlpath=.",
"--psqldir=../../../$Config/psql","--schedule=${schedule}_schedule",
- "--multibyte=SQL_ASCII","--no-locale"
+ "--encoding=SQL_ASCII","--no-locale"
);
push(@args,$maxconn) if $maxconn;
system(@args);
@@ -101,7 +103,7 @@ sub check
my @args = (
"../../../$Config/pg_regress/pg_regress","--dlpath=.",
"--psqldir=../../../$Config/psql","--schedule=${schedule}_schedule",
- "--multibyte=SQL_ASCII","--no-locale",
+ "--encoding=SQL_ASCII","--no-locale",
"--temp-install=./tmp_check","--top-builddir=\"$topdir\""
);
push(@args,$maxconn) if $maxconn;
@@ -125,7 +127,7 @@ sub ecpgcheck
"--dbname=regress1,connectdb",
"--create-role=connectuser,connectdb",
"--schedule=${schedule}_schedule",
- "--multibyte=SQL_ASCII",
+ "--encoding=SQL_ASCII",
"--no-locale",
"--temp-install=./tmp_chk",
"--top-builddir=\"$topdir\""
@@ -136,6 +138,22 @@ sub ecpgcheck
exit $status if $status;
}
+sub isolationcheck
+{
+ chdir "../isolation";
+ copy("../../../$Config/isolationtester/isolationtester.exe",".");
+ my @args = (
+ "../../../$Config/pg_isolation_regress/pg_isolation_regress",
+ "--psqldir=../../../$Config/psql",
+ "--inputdir=.",
+ "--schedule=./isolation_schedule"
+ );
+ push(@args,$maxconn) if $maxconn;
+ system(@args);
+ my $status = $? >>8;
+ exit $status if $status;
+}
+
sub plcheck
{
chdir "../../pl";
@@ -146,14 +164,14 @@ sub plcheck
my $lang = $pl eq 'tcl' ? 'pltcl' : $pl;
next unless -d "../../$Config/$lang";
$lang = 'plpythonu' if $lang eq 'plpython';
- my @lang_args = ("--load-language=$lang");
+ my @lang_args = ("--load-extension=$lang");
chdir $pl;
my @tests = fetchTests();
if ($lang eq 'plperl')
{
# run both trusted and untrusted perl tests
- push(@lang_args, "--load-language=plperlu");
+ push(@lang_args, "--load-extension=plperlu");
# assume we're using this perl to built postgres
# test if we can run two interpreters in one backend, and if so
@@ -186,6 +204,7 @@ sub contribcheck
my $mstat = 0;
foreach my $module (glob("*"))
{
+ next if ($module eq 'sepgsql');
next if ($module eq 'xml2' && !$config->{xml});
next
unless -d "$module/sql"
@@ -226,6 +245,14 @@ sub fetchRegressOpts
# ignore anything that isn't an option staring with --
@opts = grep { $_ !~ /\$\(/ && $_ =~ /^--/ } split(/\s+/,$1);
}
+ if ($m =~ /^\s*ENCODING\s*=\s*(\S+)/m)
+ {
+ push @opts, "--encoding=$1";
+ }
+ if ($m =~ /^\s*NO_LOCALE\s*=\s*\S+/m)
+ {
+ push @opts, "--no-locale";
+ }
return @opts;
}
diff --git a/src/tools/pgcvslog b/src/tools/pgcvslog
deleted file mode 100755
index f2d01c62bd..0000000000
--- a/src/tools/pgcvslog
+++ /dev/null
@@ -1,293 +0,0 @@
-#!/bin/sh
-
-# $PostgreSQL: pgsql/src/tools/pgcvslog,v 1.40 2009/08/29 17:09:20 momjian Exp $
-
-# This utility is used to generate a compact list of changes
-# for each release, bjm 2000-02-22
-
-# Usage: pgcvslog [-d] [-h]
-# -d delete commits that include back branches
-# -h is HTML output
-# "-d" is useful for generating release notes for major releases
-
-# This program basically takes a cvs log, groups it by commit timestamp
-# and line number, then compares adjacent messages. If they have the same
-# commit message, they are assumed to be part of the same commit and
-# appear as one commit message with multiple file names
-
-# All branches:
-# cvs log -d'>1999-06-14 00:00:00 GMT' . > log
-#
-# HEAD:
-# cvs log -d'>2000-05-29 00:00:00 GMT' -b .
-#
-# Branch:
-# cvs log -d'>2000-05-29 00:00:00 GMT' -rREL8_0_STABLE .
-#
-# Date range
-# cvs log -d'2005-05-08<2005-05-29' -rREL8_0_STABLE .
-#
-# To find branch time, look for "branches:" tag in CVS commit logs
-# e.g. "branches: 1.398.4;" matches "REL8_0_STABLE: 1.398.0.4".
-
-HTML="N"
-DEL="N"
-if [ "X$1" = "X-h" ]
-then HTML="Y"
- shift
-fi
-
-if [ "X$1" = "X-d" ]
-then DEL="Y"
- shift
-fi
-
-if [ "X$1" = "X-h" ]
-then HTML="Y"
- shift
-fi
-
-if [ "$HTML" = "Y" -a "$DEL" = "Y" ]
-then echo "Cannot use -d and -h together" 1>&2
- exit 1
-fi
-
-cat "$@" |
-
-# protect HTML input if in HTML mode
-if [ "$HTML" = "Y" ]
-then sed -e 's/\&/\&amp;/g' \
- -e 's/</\&lt;/g' \
- -e 's/>/\&gt;/g' \
- -e 's/"/\&quot;/g'
-else cat
-fi |
-
-# mark each line with a datetime and line number, for sorting and merging
-# we are just pre-processing the file at this point
-# We don't print anything from the -- or == line and the date:
-
-awk ' BEGIN {html="'"$HTML"'"; lineno = 0;}
- # store working directory
- $0 ~ /^Working file:/ {workingfile = "/" $3}
-
- ($0 ~ /^====*$/ || $0 ~ /^----*$/) \
- {
- # print blank line to separate entries
- if (datetime != "")
- {
- if (html != "Y")
- printf ("%s| %10d|%s\n", datetime, lineno++, "");
- printf ("%s| %10d|", datetime, lineno++);
- if (html != "Y")
- printf ("%s\n", "---");
- else printf ("<HR>\n");
- }
- datetime="";
- }
-
- # if we have a saved datetime, print filename, date line, and committer
- datetime != "" && $1 != "branches:" {printf ("%s| %10d| %s\n", datetime, lineno++, $0);}
-
- $1 == "date:" \
- {
- # get entry date
- datetime=$2"-"$3
- if (workingfile != "")
- {
- printf ("%s| %10d|", datetime, lineno++);
- if (html != "Y")
- printf ("%s%s\n", workingfile, back_branch);
- else printf ("<SMALL><FONT COLOR=\"red\">%s%s</FONT></SMALL>\n", workingfile, back_branch);
-
- # output name of committer
- # remove semicolon from committers name
- gsub("/", "-", $2);
- gsub(";", "", $3);
- gsub(";", "", $5);
- printf ("%s| %10d|", datetime, lineno++);
- if (html != "Y")
- printf ("%78s\n", $5);
- else printf ("<DIV ALIGN=\"right\"><SMALL><FONT COLOR=\"teal\">%s</FONT> <FONT COLOR=\"green\">%s</FONT></SMALL></DIV>\n", $5, $2);
- }
- }
-
- # mark back branches
- $1 == "revision" \
- {
- # back branches have +2 periods in revision number
- if ($2 ~ /\..*\./)
- back_branch=" <branch>"
- else back_branch = ""
- }
-
- /* clear working file */
- $0 ~ /^====*$/ {workingfile=""}' |
-
-sort | cut -d'|' -f3 |
-
-# collect duplicate narratives
-# print file names as we get them, then print narrative when a new
-# narrative appears
-# have to save two narratives to compare them
-
-awk ' BEGIN { narr_slot = 0; oldnarr_slot=0; save_working = "";
- html="'"$HTML"'"}
- {
- # We have a filename, so we look at the previous
- # narrative to see if it is new narrative text.
- if ($0 ~ "^/")
- {
- # If there are a different number of narrative
- # lines, they cannot possibly be the same.
- if (narr_slot != oldnarr_slot)
- same = "N";
- else
- {
- same = "Y";
- for (i=1; i <= narr_slot; i++)
- {
- if (oldnarr[i] != narr[i])
- {
- same = "N";
- break;
- }
- }
- }
-
- # dump out the old narrative if it is new
- if (same == "N")
- {
- if (oldnarr_slot)
- for (i=1; i <= oldnarr_slot; i++)
- {
- print oldnarr[i];
- if (html == "Y" &&
- oldnarr[i] != "<HR>" &&
- oldnarr[i] !~ "^<DIV ")
- print "<BR>";
- }
-
- # save the current narrative
- for (i=1; i <= narr_slot; i++)
- oldnarr[i] = narr[i];
- oldnarr_slot = narr_slot;
- }
- narr_slot = 0;
-
- # dump out the previous filename
- print save_working;
-
- if (html == "Y")
- print "<BR>";
-
- # store the current filename for later printing
- save_working = $0;
- }
- else
- # we have a narrative line
- {
- # accumulate narrative
- narr[++narr_slot] = $0;
- }
- }
- END \
- {
- # If there are a different number of narrative
- # lines, they can not possibly be the same.
- if (narr_slot != oldnarr_slot)
- same = "N";
- else
- {
- same = "Y";
- for (i=1; i <= narr_slot; i++)
- {
- if (oldnarr[i] != narr[i])
- {
- same = "N";
- break;
- }
- }
- }
-
- # dump out the old narrative if it is new
- if (same == "N")
- {
- if (oldnarr_slot)
- for (i=1; i <= oldnarr_slot; i++)
- {
- print oldnarr[i];
- if (html == "Y" &&
- oldnarr[i] != "<HR>" &&
- oldnarr[i] !~ "^<DIV ")
- print "<BR>";
- }
- }
-
- # dump out the last filename
- print save_working;
-
- if (html == "Y")
- print "<BR>";
-
- # dump out the last narrative
- for (i=1; i <= narr_slot; i++)
- {
- print narr[i];
- if (html == "Y" &&
- narr[i] != "<HR>" &&
- narr[i] !~ "^<DIV ")
- print "<BR>";
- }
- }' |
-
-# add HTML wrapper
-if [ "$HTML" = "Y" ]
-then echo "<HTML>"
- echo "<HEAD>"
- echo "<TITLE>CVS</TITLE>"
- echo "</HEAD>"
- echo "<BODY>"
- cat
- echo "</BODY>"
- echo "</HTML>"
-else cat
-fi |
-
-# if requested, remove any commit that has the "<branch>" text
-if [ "$DEL" = "Y" ]
-then awk 'BEGIN \
- {
- slot = 0;
- }
-
- {
- # new commit?
- if ($0 ~ "^---$")
- {
- skip = "N";
- for (i=1; i <= slot; i++)
- if (commit[i] ~ "<branch>")
- skip = "Y";
- if (skip == "N")
- for (i=1; i <= slot; i++)
- print commit[i];
- slot = 0;
- }
-
- # accumulate commit
- commit[++slot] = $0;
- }
-
- END \
- {
- skip = "N";
- for (i=1; i <= slot; i++)
- if (commit[i] ~ "<branch>")
- skip = "Y";
- if (skip == "N")
- for (i=1; i <= slot; i++)
- print commit[i];
- }'
-else cat
-fi
diff --git a/src/tools/pginclude/README b/src/tools/pginclude/README
index dbe0a6ab0c..8d4131aed1 100644
--- a/src/tools/pginclude/README
+++ b/src/tools/pginclude/README
@@ -1,4 +1,4 @@
-$PostgreSQL: pgsql/src/tools/pginclude/README,v 1.10 2008/03/21 13:23:29 momjian Exp $
+src/tools/pginclude/README
pginclude
=========
diff --git a/src/tools/pginclude/cpluspluscheck b/src/tools/pginclude/cpluspluscheck
index f266fea24b..1f0fa47ba8 100644
--- a/src/tools/pginclude/cpluspluscheck
+++ b/src/tools/pginclude/cpluspluscheck
@@ -1,33 +1,34 @@
#!/bin/sh
-# Check all include files in or below the current directory for C++
-# compatibility. Typically, run this in PostgreSQL's src/include/ directory.
+# Check all exported PostgreSQL include files for C++ compatibility.
+# Run this from the top-level source directory after performing a build.
# No output if everything is OK, else compiler errors.
-set -e
-
me=`basename $0`
-trap 'rm -rf $tmp' 0 1 2 3 15
tmp=`mktemp -d /tmp/$me.XXXXXX`
-{
-echo ' extern "C" {'
-echo '#include "postgres.h"'
+trap 'rm -rf $tmp' 0 1 2 3 15
-# Omit port/, because it's platform specific, and c.h includes it anyway. Omit
-# regex/ and snowball/, because those files came from elsewhere, and they would
-# need extra work if someone cared to fix them. kwlist.h is not meant to be
-# included directly. rusagestub.h will be included by ./utils/pg_rusage.h if
-# necessary.
-for file in `find . \( -name port -prune -o -name regex -prune -o -name snowball -prune \) -o -name '*.h' -not -name kwlist.h -not -name rusagestub.h -print`; do
- f=`echo $file | sed 's,^\./,,'`
- echo "#include \"$f\""
+# Omit src/include/port/, because it's platform specific, and c.h includes
+# the relevant file anyway.
+# rusagestub.h is also platform-specific, and will be included by
+# utils/pg_rusage.h if necessary.
+# regex/regerrs.h is not meant to be included standalone.
+# parser/gram.h will be included by parser/gramparse.h.
+# parser/kwlist.h is not meant to be included standalone.
+
+for f in `find src/include src/interfaces/libpq/libpq-fe.h src/interfaces/libpq/libpq-events.h -name '*.h' -print | \
+ grep -v -e ^src/include/port/ \
+ -e ^src/include/rusagestub.h -e ^src/include/regex/regerrs.h \
+ -e ^src/include/parser/gram.h -e ^src/include/parser/kwlist.h`
+do
+ {
+ echo ' extern "C" {'
+ echo '#include "postgres.h"'
+ echo "#include \"$f\""
+ echo '};'
+ } >$tmp/test.cpp
+
+ ${CXX:-g++} -I . -I src/include -fsyntax-only -Wall -c $tmp/test.cpp
done
-
-echo '};'
-} >$tmp/test.cpp
-
-# -fno-operator-names omits the definition of bitand and bitor, which would
-# collide with varbit.h. Could be fixed, if one were so inclined.
-${CXX:-g++} -I. -fsyntax-only -fno-operator-names -Wall -c $tmp/test.cpp
diff --git a/src/tools/pginclude/pgcheckdefines b/src/tools/pginclude/pgcheckdefines
index 07ae7b5d67..2936caf2e0 100755
--- a/src/tools/pginclude/pgcheckdefines
+++ b/src/tools/pginclude/pgcheckdefines
@@ -17,7 +17,7 @@
# them. We try to process all .c files, even those not intended for the
# current platform, so there will be some phony failures.
#
-# $PostgreSQL: pgsql/src/tools/pginclude/pgcheckdefines,v 1.1 2006/07/15 03:27:42 tgl Exp $
+# src/tools/pginclude/pgcheckdefines
#
use Cwd;
diff --git a/src/tools/pginclude/pgcompinclude b/src/tools/pginclude/pgcompinclude
index 5b9564d490..13f49f1637 100755
--- a/src/tools/pginclude/pgcompinclude
+++ b/src/tools/pginclude/pgcompinclude
@@ -1,7 +1,7 @@
:
# report which #include files can not compile on their own
# takes -v option to display compile failure message and line numbers
-# $PostgreSQL: pgsql/src/tools/pginclude/pgcompinclude,v 1.8 2006/07/14 01:05:13 momjian Exp $
+# src/tools/pginclude/pgcompinclude
trap "rm -f /tmp/$$.c /tmp/$$.o /tmp/$$ /tmp/$$a" 0 1 2 3 15
find . \( -name CVS -a -prune \) -o -name '*.h' -type f -print | while read FILE
diff --git a/src/tools/pginclude/pgdefine b/src/tools/pginclude/pgdefine
index 52a775e163..0284307381 100755
--- a/src/tools/pginclude/pgdefine
+++ b/src/tools/pginclude/pgdefine
@@ -1,7 +1,7 @@
:
# create macro calls for all defines in the file
-# $PostgreSQL: pgsql/src/tools/pginclude/pgdefine,v 1.4 2006/07/13 16:39:20 momjian Exp $
+# src/tools/pginclude/pgdefine
trap "rm -f /tmp/$$" 0 1 2 3 15
for FILE
diff --git a/src/tools/pginclude/pgfixinclude b/src/tools/pginclude/pgfixinclude
index 3f081a4997..4b2d2bacee 100755
--- a/src/tools/pginclude/pgfixinclude
+++ b/src/tools/pginclude/pgfixinclude
@@ -1,6 +1,6 @@
:
# change #include's to <> or ""
-# $PostgreSQL: pgsql/src/tools/pginclude/pgfixinclude,v 1.6 2006/07/10 16:07:24 momjian Exp $
+# src/tools/pginclude/pgfixinclude
trap "rm -f /tmp/$$.c /tmp/$$.o /tmp/$$ /tmp/$$a /tmp/$$b" 0 1 2 3 15
find . \( -name CVS -a -prune \) -o -type f -name '*.[chyls]' -print |
diff --git a/src/tools/pginclude/pgrminclude b/src/tools/pginclude/pgrminclude
index 7944c9d735..a8ec10a486 100755
--- a/src/tools/pginclude/pgrminclude
+++ b/src/tools/pginclude/pgrminclude
@@ -1,10 +1,10 @@
:
# remove extra #include's
-# $PostgreSQL: pgsql/src/tools/pginclude/pgrminclude,v 1.16 2006/07/14 01:05:14 momjian Exp $
+# src/tools/pginclude/pgrminclude
trap "rm -f /tmp/$$.c /tmp/$$.o /tmp/$$ /tmp/$$a /tmp/$$b" 0 1 2 3 15
-find . \( -name CVS -a -prune \) -o -type f -name '*.[ch]' -print |
+find . \( -name CVS -a -prune \) -o -type f -name '*.[ch]' -print |
grep -v '\./postgres.h' |
grep -v '\./pg_config.h' |
grep -v '\./c.h' |
@@ -14,7 +14,7 @@ do
then IS_INCLUDE="Y"
else IS_INCLUDE="N"
fi
-
+
# loop through all includes
cat "$FILE" | grep "^#include" |
sed 's/^#include[ ]*[<"]\([^>"]*\).*$/\1/g' |
@@ -39,7 +39,7 @@ do
# remove defines from include files
if [ "$IS_INCLUDE" = "Y" ]
- then cat "$FILE" | grep -v "^#if" | grep -v "^#else" |
+ then cat "$FILE" | grep -v "^#if" | grep -v "^#else" |
grep -v "^#endif" | sed 's/->[a-zA-Z0-9_\.]*//g' >/tmp/$$a
else cat "$FILE" >/tmp/$$a
fi
diff --git a/src/tools/pgindent/README b/src/tools/pgindent/README
index 1cf0629d31..e81e85d15b 100644
--- a/src/tools/pgindent/README
+++ b/src/tools/pgindent/README
@@ -1,16 +1,16 @@
-$PostgreSQL: pgsql/src/tools/pgindent/README,v 1.42 2010/07/06 19:26:28 momjian Exp $
+src/tools/pgindent/README
pgindent
========
This can format all PostgreSQL *.c and *.h files, but excludes *.y, and
-*.l files.
+*.l files.
1) Change directory to the top of the build tree.
2) Download the typedef file from the buildfarm:
- wget -O src/tools/pgindent/typedefs.list http://www.pgbuildfarm.org/cgi-bin/typedefs.pl
+ wget -O src/tools/pgindent/typedefs.list http://buildfarm.postgresql.org/cgi-bin/typedefs.pl
3) Remove all derived files (pgindent has trouble with one of the flex macros):
@@ -23,12 +23,14 @@ This can format all PostgreSQL *.c and *.h files, but excludes *.y, and
xargs -n100 pgindent src/tools/pgindent/typedefs.list
5) Remove any files that generate errors and restore their original
- versions, e.g. ./src/backend/tsearch/wparser_def.c has problems
- because of a DECIMAL listed as a typedef.
+ versions.
6) Do a full test build:
run configure
+ # stop is only necessary if it's going to install in a location with an
+ # already running server
+ pg_ctl stop
gmake -C src install
gmake -C contrib install
gmake installcheck-world
@@ -36,8 +38,8 @@ This can format all PostgreSQL *.c and *.h files, but excludes *.y, and
---------------------------------------------------------------------------
-We have standardized on NetBSD's indent. We have fixed a few bugs which
-requre the NetBSD source to be patched with indent.bsd.patch patch. A
+We have standardized on NetBSD's indent. We have fixed a few bugs which
+requre the NetBSD source to be patched with indent.bsd.patch patch. A
fully patched version is available at ftp://ftp.postgresql.org/pub/dev.
GNU indent, version 2.2.6, has several problems, and is not recommended.
@@ -75,4 +77,3 @@ To use pgindent:
4) Save a list of typedefs by running:
src/tools/find_typedef /usr/local/pgsql/bin /usr/local/pgsql/lib > /tmp/pgtypedefs
-
diff --git a/src/tools/pgindent/indent.bsd.patch b/src/tools/pgindent/indent.bsd.patch
index 095b65123d..e10b9973f6 100644
--- a/src/tools/pgindent/indent.bsd.patch
+++ b/src/tools/pgindent/indent.bsd.patch
@@ -1,4 +1,4 @@
-$PostgreSQL: pgsql/src/tools/pgindent/indent.bsd.patch,v 1.8 2006/03/11 04:38:42 momjian Exp $
+src/tools/pgindent/indent.bsd.patch
This patch contains several fixes to NetBSD's indent and should be
applied before using pgindent.
diff --git a/src/tools/pgindent/pgcppindent b/src/tools/pgindent/pgcppindent
index e624efb0e4..59ddf4baca 100755
--- a/src/tools/pgindent/pgcppindent
+++ b/src/tools/pgindent/pgcppindent
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/pgindent/pgcppindent,v 1.2 2006/03/11 04:38:42 momjian Exp $
+# src/tools/pgindent/pgcppindent
trap "rm -f /tmp/$$ /tmp/$$a" 0 1 2 3 15
entab </dev/null >/dev/null
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index 67c9253c47..05f69ef1f3 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/pgindent/pgindent,v 1.102 2010/04/05 03:09:09 adunstan Exp $
+# src/tools/pgindent/pgindent
# Known bugs:
#
@@ -21,6 +21,11 @@ fi
TYPEDEFS="$1"
shift
+if [ -z "$INDENT" ]
+then
+ INDENT=indent
+fi
+
trap "rm -f /tmp/$$ /tmp/$$a" 0 1 2 3 15
entab </dev/null >/dev/null
if [ "$?" -ne 0 ]
@@ -29,17 +34,17 @@ then echo "Go to the src/tools/entab directory and do a 'make' and 'make install
echo "Then run $0 again."
exit 1
fi
-indent -? </dev/null >/dev/null 2>&1
+$INDENT -? </dev/null >/dev/null 2>&1
if [ "$?" -ne 1 ]
then echo "You do not appear to have 'indent' installed on your system." >&2
exit 1
fi
-indent -gnu </dev/null >/dev/null 2>&1
+$INDENT -gnu </dev/null >/dev/null 2>&1
if [ "$?" -eq 0 ]
then echo "You appear to have GNU indent rather than BSD indent." >&2
echo "See the pgindent/README file for a description of its problems." >&2
EXTRA_OPTS="-cdb -bli0 -npcs -cli4 -sc"
-else
+else
EXTRA_OPTS="-cli1"
fi
@@ -136,7 +141,7 @@ do
sed 's;^CATALOG(.*$;/*&*/;' >/tmp/$$a
# We get the list of typedef's from /src/tools/find_typedef
- indent -bad -bap -bc -bl -d0 -cdb -nce -nfc1 -di12 -i4 -l79 \
+ $INDENT -bad -bap -bc -bl -d0 -cdb -nce -nfc1 -di12 -i4 -l79 \
-lp -nip -npro -bbb $EXTRA_OPTS \
`egrep -v '^(FD_SET|date|interval|timestamp|ANY)$' "$TYPEDEFS" | sed -e '/^$/d' -e 's/.*/-T& /'` \
/tmp/$$a >/tmp/$$ 2>&1
@@ -193,7 +198,7 @@ do
# isn't needed for general use.
# awk '
# {
-# line3 = $0;
+# line3 = $0;
# if (skips > 0)
# skips--;
# if (line1 ~ / *{$/ &&
@@ -221,7 +226,7 @@ do
# Remove blank line between opening brace and block comment.
awk '
{
- line3 = $0;
+ line3 = $0;
if (skips > 0)
skips--;
if (line1 ~ / *{$/ &&
@@ -326,10 +331,10 @@ do
print line1;
}' |
-# Move prototype names to the same line as return type. Useful for ctags.
+# Move prototype names to the same line as return type. Useful for ctags.
# Indent should do this, but it does not. It formats prototypes just
# like real functions.
- awk ' BEGIN {paren_level = 0}
+ awk ' BEGIN {paren_level = 0}
{
if ($0 ~ /^[a-zA-Z_][a-zA-Z_0-9]*[^\(]*$/)
{
diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list
index 7b3787a66e..f2982cd7b3 100644
--- a/src/tools/pgindent/typedefs.list
+++ b/src/tools/pgindent/typedefs.list
@@ -1,6 +1,5 @@
ABITVEC
ACCESS_ALLOWED_ACE
-ACL
ACL_SIZE_INFORMATION
AES_KEY
AFFIX
@@ -28,20 +27,17 @@ AffixNodeData
AfterTriggerEvent
AfterTriggerEventChunk
AfterTriggerEventData
-AfterTriggerEventDataOneCtid
AfterTriggerEventList
AfterTriggerShared
AfterTriggerSharedData
AfterTriggers
AfterTriggersData
Agg
-AggClauseCounts
+AggClauseCosts
AggHashEntry
-AggHashEntryData
AggInfo
AggState
AggStatePerAgg
-AggStatePerAggData
AggStatePerGroup
AggStatePerGroupData
AggStrategy
@@ -49,9 +45,7 @@ Aggref
AggrefExprState
Alias
AllocBlock
-AllocBlockData
AllocChunk
-AllocChunkData
AllocPointer
AllocSet
AllocSetContext
@@ -61,6 +55,9 @@ AlterDatabaseSetStmt
AlterDatabaseStmt
AlterDefaultPrivilegesStmt
AlterDomainStmt
+AlterEnumStmt
+AlterExtensionContentsStmt
+AlterExtensionStmt
AlterFdwStmt
AlterForeignServerStmt
AlterFunctionStmt
@@ -99,6 +96,7 @@ ArrayConstIterState
ArrayExpr
ArrayExprIterState
ArrayExprState
+ArrayIterator
ArrayMapState
ArrayMetaState
ArrayParseState
@@ -117,7 +115,6 @@ AttributeOpts
AuthRequest
AutoVacOpts
AutoVacuumShmemStruct
-AutoVacuumSignal
AuxProcType
BF_KEY
BF_ctx
@@ -128,7 +125,6 @@ BIO
BIO_METHOD
BITVEC
BITVECP
-BLOB
BMS_Membership
BN_CTX
BOOL
@@ -145,7 +141,6 @@ BTPageStat
BTPageState
BTScanOpaque
BTScanOpaqueData
-BTScanPos
BTScanPosData
BTScanPosItem
BTSpool
@@ -157,7 +152,9 @@ BTWriteState
BYTE
Backend
BackendId
-BackslashQuoteType
+BackendParameters
+BaseBackupCmd
+BeginForeignScan_function
BgWriterRequest
BgWriterShmemStruct
BitmapAnd
@@ -184,7 +181,6 @@ BlowfishContext
BoolExpr
BoolExprState
BoolExprType
-BoolPtr
BoolTestType
BooleanTest
BpChar
@@ -193,7 +189,6 @@ BufFile
BufFlags
Buffer
BufferAccessStrategy
-BufferAccessStrategyData
BufferAccessStrategyType
BufferCachePagesContext
BufferCachePagesRec
@@ -204,13 +199,12 @@ BufferTag
BufferUsage
BuildAccumulator
BulkInsertState
-BulkInsertStateData
-ByteaOutputType
CACHESIGN
CAC_state
CAST_KEY
CFuncHashTabEntry
CHAR
+CHECKPOINT
CHKVAL
CIRCLE
CMPDAffix
@@ -219,7 +213,7 @@ COP
CRITICAL_SECTION
CState
CV
-CY
+C_block
CachedPlan
CachedPlanSource
CancelRequestPacket
@@ -242,12 +236,12 @@ CheckPointStmt
CheckpointStatsData
Chromosome
City
+ClientAuthentication_hook_type
ClientData
ClonePtr
ClosePortalStmt
ClosePtr
Clump
-Cluster
ClusterInfo
ClusterStmt
CmdType
@@ -259,11 +253,13 @@ CoerceToDomainState
CoerceToDomainValue
CoerceViaIO
CoerceViaIOState
-CoercionCodes
CoercionContext
CoercionForm
-CoercionMethod
CoercionPathType
+CollInfo
+CollateClause
+CollateExpr
+CollateStrength
ColumnCompareData
ColumnDef
ColumnIOData
@@ -280,6 +276,9 @@ CommentStmt
CommonTableExpr
CompareScalarsContext
CompositeTypeStmt
+CompressionAlgorithm
+CompressorState
+ConfigVariable
ConnStatusType
ConnType
Const
@@ -287,7 +286,6 @@ ConstrCheck
ConstrType
Constraint
ConstraintCategory
-ConstraintExclusionType
ConstraintInfo
ConstraintsSetStmt
ControlData
@@ -309,8 +307,10 @@ CreateCastStmt
CreateConversionStmt
CreateDomainStmt
CreateEnumStmt
+CreateExtensionStmt
CreateFdwStmt
CreateForeignServerStmt
+CreateForeignTableStmt
CreateFunctionStmt
CreateOpClassItem
CreateOpClassStmt
@@ -322,31 +322,27 @@ CreateSchemaStmtContext
CreateSeqStmt
CreateStmt
CreateStmtContext
-CreateStmtLikeOption
CreateTableSpaceStmt
CreateTrigStmt
CreateUserMappingStmt
CreatedbStmt
+CredHandle
CteItem
CteScan
CteScanState
CteState
CtlCommand
+CtxtHandle
CurrentOfExpr
CustomOutPtr
CycleCtr
-DATADIR
-DATE
DBState
DCHCacheEntry
-DCH_poz
DEADLOCK_INFO
-DECIMAL
DES_cblock
DES_key_schedule
DH
DIR
-DOUBLE
DR_copy
DR_intorel
DR_printtup
@@ -357,8 +353,6 @@ DataDumperPtr
DataPageDeleteStack
DateADT
Datum
-DatumArray
-DatumPtr
DatumTupleFields
DbInfo
DbInfoArr
@@ -418,22 +412,28 @@ Edge
EndBlobPtr
EndBlobsPtr
EndDataPtr
-EntryAccumulator
+EndForeignScan_function
+EnumItem
EolType
EquivalenceClass
EquivalenceMember
ErrorContextCallback
ErrorData
ExceptionLabelMap
+ExceptionMap
+ExecAuxRowMark
ExecRowMark
ExecScanAccessMtd
ExecScanRecheckMtd
ExecStatus
ExecStatusType
ExecuteStmt
+ExecutorCheckPerms_hook_type
ExecutorEnd_hook_type
+ExecutorFinish_hook_type
ExecutorRun_hook_type
ExecutorStart_hook_type
+ExplainForeignScan_function
ExplainFormat
ExplainOneQuery_hook_type
ExplainState
@@ -446,11 +446,13 @@ ExprDoneCond
ExprState
ExprStateEvalFunc
ExtensionBehavior
+ExtensionControlFile
+ExtensionInfo
+ExtensionVersionInfo
Extention
+FD_SET
FILE
FILETIME
-FIXED
-FLOAT
FSMAddress
FSMPage
FSMPageData
@@ -458,6 +460,8 @@ FState
FakeRelCacheEntry
FakeRelCacheEntryData
FdwInfo
+FdwPlan
+FdwRoutine
FetchDirection
FetchStmt
FieldNot
@@ -466,15 +470,21 @@ FieldSelectState
FieldStore
FieldStoreState
File
+FileFdwExecutionState
FileName
FileNameMap
FindSplitData
FixedParamState
FmgrBuiltin
+FmgrHookEventType
FmgrInfo
ForeignDataWrapper
+ForeignPath
+ForeignScan
+ForeignScanState
ForeignServer
ForeignServerInfo
+ForeignTable
ForkNumber
FormData_pg_aggregate
FormData_pg_am
@@ -486,16 +496,17 @@ FormData_pg_auth_members
FormData_pg_authid
FormData_pg_cast
FormData_pg_class
+FormData_pg_collation
FormData_pg_constraint
FormData_pg_conversion
FormData_pg_database
-FormData_pg_db_role_setting
FormData_pg_default_acl
FormData_pg_depend
-FormData_pg_description
FormData_pg_enum
+FormData_pg_extension
FormData_pg_foreign_data_wrapper
FormData_pg_foreign_server
+FormData_pg_foreign_table
FormData_pg_index
FormData_pg_inherits
FormData_pg_language
@@ -510,7 +521,6 @@ FormData_pg_proc
FormData_pg_rewrite
FormData_pg_sequence
FormData_pg_shdepend
-FormData_pg_shdescription
FormData_pg_statistic
FormData_pg_tablespace
FormData_pg_trigger
@@ -531,16 +541,17 @@ Form_pg_auth_members
Form_pg_authid
Form_pg_cast
Form_pg_class
+Form_pg_collation
Form_pg_constraint
Form_pg_conversion
Form_pg_database
-Form_pg_db_role_setting
Form_pg_default_acl
Form_pg_depend
-Form_pg_description
Form_pg_enum
+Form_pg_extension
Form_pg_foreign_data_wrapper
Form_pg_foreign_server
+Form_pg_foreign_table
Form_pg_index
Form_pg_inherits
Form_pg_language
@@ -555,7 +566,6 @@ Form_pg_proc
Form_pg_rewrite
Form_pg_sequence
Form_pg_shdepend
-Form_pg_shdescription
Form_pg_statistic
Form_pg_tablespace
Form_pg_trigger
@@ -577,7 +587,6 @@ FuncExpr
FuncExprState
FuncInfo
FuncWithArgs
-Function
FunctionCallInfo
FunctionCallInfoData
FunctionParameter
@@ -594,44 +603,45 @@ GISTInsertStack
GISTInsertState
GISTPageOpaque
GISTPageOpaqueData
+GISTPageSplitInfo
GISTSTATE
GISTScanOpaque
GISTScanOpaqueData
-GISTSearchStack
+GISTSearchHeapItem
+GISTSearchItem
+GISTSearchTreeItem
GISTTYPE
GIST_SPLITVEC
GV
Gene
GenericExprState
-GenericOptionFlags
GeqoPrivateData
GinBtree
GinBtreeData
GinBtreeStack
GinBuildState
GinChkVal
+GinEntryAccumulator
GinMetaPageData
+GinNullCategory
GinOptions
GinPageOpaque
GinPageOpaqueData
GinPostingTreeScan
GinScanEntry
-GinScanEntryData
GinScanKey
-GinScanKeyData
GinScanOpaque
GinScanOpaqueData
GinState
+GinStatsData
GinTupleCollector
GinVacuumState
GistBDItem
-GistBulkDeleteResult
GistEntryVector
GistNSN
GistSplitUnion
GistSplitVector
GlobalTransaction
-GlobalTransactionData
GrantObjectType
GrantRoleStmt
GrantStmt
@@ -641,15 +651,20 @@ GroupState
GroupVarInfo
GucAction
GucBoolAssignHook
+GucBoolCheckHook
GucContext
GucEnumAssignHook
+GucEnumCheckHook
GucIntAssignHook
+GucIntCheckHook
GucRealAssignHook
+GucRealCheckHook
GucShowHook
GucSource
GucStack
GucStackState
GucStringAssignHook
+GucStringCheckHook
HANDLE
HASHACTION
HASHBUCKET
@@ -658,6 +673,7 @@ HASHELEMENT
HASHHDR
HASHSEGMENT
HASH_SEQ_STATUS
+HE
HEntry
HIST_ENTRY
HKEY
@@ -679,9 +695,7 @@ HashCopyFunc
HashJoin
HashJoinState
HashJoinTable
-HashJoinTableData
HashJoinTuple
-HashJoinTupleData
HashMetaPage
HashMetaPageData
HashPageOpaque
@@ -697,8 +711,8 @@ HashValueFunc
HbaLine
HeadlineParsedText
HeadlineWordEntry
+HeapPosition
HeapScanDesc
-HeapScanDescData
HeapTuple
HeapTupleData
HeapTupleFields
@@ -708,18 +722,16 @@ HistControl
HotStandbyState
I32
INFIX
-INT
-INT32
+INTERFACE_INFO
IOFuncSelector
IPCompareMethod
ITEM
IV
IdentifierLookup
+IdentifySystemCmd
IncrementVarSublevelsUp_context
Index
IndexArrayKeyInfo
-IndexAttributeBitMap
-IndexAttributeBitMapData
IndexBuildCallback
IndexBuildResult
IndexBulkDeleteCallback
@@ -732,7 +744,6 @@ IndexPath
IndexRuntimeKeyInfo
IndexScan
IndexScanDesc
-IndexScanDescData
IndexScanState
IndexStmt
IndexTuple
@@ -744,18 +755,16 @@ IndxInfo
InfoItem
InhInfo
InhOption
-InhPaths
InhRelation
+InheritableSocket
InlineCodeBlock
InnerIndexscanInfo
InsertStmt
-InstrumentOption
Instrumentation
Int8TransTypeData
IntArray
InternalDefaultACL
InternalGrant
-InterpState
Interval
IntoClause
InvalidationChunk
@@ -768,11 +777,9 @@ IspellDict
Item
ItemId
ItemIdData
-ItemLength
-ItemOffset
ItemPointer
ItemPointerData
-ItemResult
+IterateForeignScan_function
JOBOBJECTINFOCLASS
JOBOBJECT_BASIC_LIMIT_INFORMATION
JOBOBJECT_BASIC_UI_RESTRICTIONS
@@ -784,10 +791,10 @@ JoinPath
JoinState
JoinType
JunkFilter
+KeyArray
KeySuffix
KeyWord
LARGE_INTEGER
-LCID
LDAP
LDAPMessage
LDAP_TIMEVAL
@@ -795,13 +802,14 @@ LINE
LOCALLOCK
LOCALLOCKOWNER
LOCALLOCKTAG
+LOCALPREDICATELOCK
LOCK
LOCKMASK
LOCKMETHODID
LOCKMODE
LOCKTAG
LONG
-LP
+LOOP
LPBYTE
LPCTSTR
LPCWSTR
@@ -819,7 +827,9 @@ LWLock
LWLockId
LWLockMode
LWLockPadded
+LabelProvider
LargeObjectDesc
+Latch
LexDescr
LexemeEntry
LexemeHashKey
@@ -842,7 +852,6 @@ LocalTransactionId
LocationIndex
LockAcquireResult
LockData
-LockInfo
LockInfoData
LockMethod
LockMethodData
@@ -853,11 +862,14 @@ LockStmt
LockTagType
LockTupleMode
LockingClause
+LogOpts
LogStmtLevel
LogicalTape
LogicalTapeSet
MAGIC
MBuf
+MINIDUMPWRITEDUMP
+MINIDUMP_TYPE
MJEvalResult
Material
MaterialPath
@@ -866,9 +878,11 @@ MdfdVec
MemoryContext
MemoryContextData
MemoryContextMethods
+MergeAppend
+MergeAppendPath
+MergeAppendState
MergeJoin
MergeJoinClause
-MergeJoinClauseData
MergeJoinState
MergePath
MergeScanSelCache
@@ -890,13 +904,13 @@ NODE
NUMCacheEntry
NUMDesc
NUMProc
-NUM_poz
NV
Name
NameData
NamedArgExpr
NamespaceInfo
NestLoop
+NestLoopParam
NestLoopState
NestPath
NewColumnValue
@@ -912,14 +926,14 @@ NullTest
NullTestState
NullTestType
Numeric
-NumericData
NumericDigit
NumericVar
-OM_uint32
OP
+OSInfo
OSSLDigest
OSVERSIONINFO
OVERLAPPED
+ObjectAccessType
ObjectAddress
ObjectAddressExtra
ObjectAddressStack
@@ -931,6 +945,7 @@ OffsetNumber
OffsetVarNodes_context
Oid
OidOptions
+OldSerXidControl
OldToNewMapping
OldToNewMappingData
OldTriggerInfo
@@ -954,12 +969,11 @@ OverrideStackEntry
PACE_HEADER
PACL
PATH
-PATTERN
PBOOL
+PCtxtHandle
PFN
PGAsyncStatusType
PGCALL2
-PGErrorVerbosity
PGEvent
PGEventConnDestroy
PGEventConnReset
@@ -983,17 +997,17 @@ PGP_Context
PGP_MPI
PGP_PubKey
PGP_S2K
+PGPing
PGQueryClass
PGRUsage
-PGSSTrackLevel
PGSemaphore
PGSemaphoreData
PGSetenvStatusType
PGShmemHeader
PGTransactionStatusType
PGVerbosity
+PG_Locale_Strategy
PG_Lock_Status
-PG_fini_t
PG_init_t
PGcancel
PGconn
@@ -1038,6 +1052,7 @@ PLpgSQL_stmt_execsql
PLpgSQL_stmt_exit
PLpgSQL_stmt_fetch
PLpgSQL_stmt_forc
+PLpgSQL_stmt_foreach_a
PLpgSQL_stmt_fori
PLpgSQL_stmt_forq
PLpgSQL_stmt_fors
@@ -1058,20 +1073,26 @@ PLwdatum
PLword
PLyDatumToOb
PLyDatumToObFunc
+PLyExceptionEntry
PLyObToDatum
PLyObToDatumFunc
PLyObToTuple
PLyPlanObject
PLyProcedure
+PLyProcedureEntry
PLyResultObject
+PLySubtransactionData
+PLySubtransactionObject
PLyTupleToOb
PLyTypeInfo
PLyTypeInput
PLyTypeOutput
+PMINIDUMP_CALLBACK_INFORMATION
+PMINIDUMP_EXCEPTION_INFORMATION
+PMINIDUMP_USER_STREAM_INFORMATION
PMSignalData
PMSignalReason
PMState
-POINT
POLYGON
PQArgBlock
PQEnvironmentOption
@@ -1081,7 +1102,10 @@ PQconninfoOption
PQnoticeProcessor
PQnoticeReceiver
PQprintOpt
-PROC
+PREDICATELOCK
+PREDICATELOCKTAG
+PREDICATELOCKTARGET
+PREDICATELOCKTARGETTAG
PROCESS_INFORMATION
PROCLOCK
PROCLOCKTAG
@@ -1094,7 +1118,6 @@ PSQL_ECHO_HIDDEN
PSQL_ERROR_ROLLBACK
PTOKEN_GROUPS
PTOKEN_USER
-PULONG
PVCPlaceHolderBehavior
PVOID
PX_Alias
@@ -1102,12 +1125,10 @@ PX_Cipher
PX_Combo
PX_HMAC
PX_MD
-PacketLen
Page
PageHeader
PageHeaderData
PageSplitRecord
-PageUpdateRecord
PagetableEntry
Pairs
ParallelSlot
@@ -1117,7 +1138,6 @@ ParamExternData
ParamFetchHook
ParamKind
ParamListInfo
-ParamListInfoData
ParamRef
ParseCallbackState
ParseParamRefHook
@@ -1156,6 +1176,7 @@ PgStat_MsgFuncpurge
PgStat_MsgFuncstat
PgStat_MsgHdr
PgStat_MsgInquiry
+PgStat_MsgRecoveryConflict
PgStat_MsgResetcounter
PgStat_MsgResetsharedcounter
PgStat_MsgResetsinglecounter
@@ -1179,6 +1200,7 @@ PipeProtoHeader
PlaceHolderInfo
PlaceHolderVar
Plan
+PlanForeignScan_function
PlanInvalItem
PlanRowMark
PlanState
@@ -1191,7 +1213,6 @@ Pointer
Pool
Port
Portal
-PortalData
PortalHashEnt
PortalStatus
PortalStrategy
@@ -1202,11 +1223,18 @@ PreParseColumnRefHook
PredClass
PredIterInfo
PredIterInfoData
+PredXactList
+PredXactListElement
+PredicateLockData
+PredicateLockTargetType
PrepareStmt
PreparedParamsData
PreparedStatement
PrintExtraTocPtr
PrintTocDataPtr
+PrintfArgType
+PrintfArgValue
+PrintfTarget
PrinttupAttrInfo
PrivGrantee
PrivTarget
@@ -1230,6 +1258,7 @@ PullFilterOps
PushFilter
PushFilterOps
PushFunction
+PyCodeObject
PyMethodDef
PyObject
PySequenceMethods
@@ -1256,8 +1285,7 @@ QueuePosition
RBNode
RBOrderControl
RBTree
-RBTreeIterator
-REPARSE_DATA_BUFFER
+REPARSE_JUNCTION_DATA_BUFFER
RIX
RI_CompareHashEntry
RI_CompareKey
@@ -1266,8 +1294,8 @@ RI_QueryHashEntry
RI_QueryKey
RSA
RTEKind
-RUHashEntry
-RUHashEntryData
+RWConflict
+RWConflictPoolHeader
RangeFunction
RangeQueryClause
RangeSubselect
@@ -1275,10 +1303,12 @@ RangeTblEntry
RangeTblRef
RangeVar
RawColumnDefault
+ReScanForeignScan_function
ReadBufPtr
ReadBufferMode
ReadBytePtr
ReadExtraTocPtr
+ReadFunc
ReassignOwnedStmt
RecordCacheEntry
RecordCompareData
@@ -1292,6 +1322,7 @@ Regis
RegisNode
ReindexStmt
RelFileNode
+RelFileNodeBackend
RelIdCacheEnt
RelInfo
RelInfoArr
@@ -1317,7 +1348,6 @@ ReopenPtr
ResTarget
ResolveNew_context
ResourceOwner
-ResourceOwnerData
ResourceReleaseCallback
ResourceReleaseCallbackItem
ResourceReleasePhase
@@ -1331,7 +1361,6 @@ ResultState
ReturnSetInfo
RewriteRule
RewriteState
-RewriteStateData
RmgrData
RmgrId
RoleStmtType
@@ -1349,7 +1378,11 @@ RunningTransactions
RunningTransactionsData
SC_HANDLE
SECURITY_ATTRIBUTES
+SECURITY_STATUS
SEG
+SERIALIZABLEXACT
+SERIALIZABLEXID
+SERIALIZABLEXIDTAG
SERVICE_STATUS
SERVICE_STATUS_HANDLE
SERVICE_TABLE_ENTRY
@@ -1359,15 +1392,14 @@ SHA256_CTX
SHA384_CTX
SHA512_CTX
SHM_QUEUE
-SHORT
-SID
SID_AND_ATTRIBUTES
SID_IDENTIFIER_AUTHORITY
SID_NAME_USE
SISeg
-SIZE
SMgrRelation
SMgrRelationData
+SOCKADDR
+SOCKET
SPELL
SPIPlanPtr
SPITupleTable
@@ -1376,14 +1408,13 @@ SPNode
SPNodeData
SQLFunctionCache
SQLFunctionCachePtr
+SQLFunctionParseInfoPtr
SSL
SSL_CTX
STARTUPINFO
STRLEN
SV
-SYSTEMTIME
SaOpControl
-SaveArchivePtr
ScalarArrayOpExpr
ScalarArrayOpExprState
ScalarItem
@@ -1396,21 +1427,24 @@ ScanKeyword
ScanState
ScanTypeControl
SchemaQuery
+SecBuffer
+SecBufferDesc
+SecLabelItem
+SecLabelStmt
SelectStmt
Selectivity
SeqScan
SeqScanState
SeqTable
SeqTableData
+SerCommitSeqNo
SetConstraintState
SetConstraintStateData
-SetConstraintTrigger
SetConstraintTriggerData
SetFunctionReturnMode
SetOp
SetOpCmd
SetOpHashEntry
-SetOpHashEntryData
SetOpState
SetOpStatePerGroup
SetOpStatePerGroupData
@@ -1435,6 +1469,7 @@ SimpleOidListCell
SimpleStringList
SimpleStringListCell
Size
+SlotNumber
SlruCtl
SlruCtlData
SlruErrorCause
@@ -1459,9 +1494,12 @@ SplitVar
SplitedPageLayout
StackElem
StandardChunkHeader
+StandbyHSFeedbackMessage
+StandbyReplyMessage
StartBlobPtr
StartBlobsPtr
StartDataPtr
+StartReplicationCmd
StartupPacket
StatEntry
StatMsgType
@@ -1484,7 +1522,6 @@ SubqueryScanState
SuffixChar
Syn
SysScanDesc
-SysScanDescData
SyscacheCallbackFunction
TAR_MEMBER
TBMIterateResult
@@ -1554,14 +1591,15 @@ TimeInterval
TimeIntervalData
TimeLineID
TimeOffset
+TimeStamp
TimeTzADT
+TimeZoneAbbrevTable
Timestamp
TimestampTz
TmFromChar
TmToChar
TocEntry
TokenAuxData
-TrackFunctionsLevel
TrackItem
TransInvalidationInfo
TransState
@@ -1587,7 +1625,6 @@ TupleHashEntry
TupleHashEntryData
TupleHashIterator
TupleHashTable
-TupleHashTableData
TupleTableSlot
Tuplesortstate
Tuplestorestate
@@ -1595,6 +1632,10 @@ TwoPhaseCallback
TwoPhaseFileHeader
TwoPhaseLockRecord
TwoPhasePgStatRecord
+TwoPhasePredicateLockRecord
+TwoPhasePredicateRecord
+TwoPhasePredicateRecordType
+TwoPhasePredicateXactRecord
TwoPhaseRecordOnDisk
TwoPhaseRmgrId
TwoPhaseStateData
@@ -1602,6 +1643,7 @@ TxidEpoch
TxidSnapshot
Type
TypeCacheEntry
+TypeCacheEnumData
TypeCast
TypeFuncClass
TypeInfo
@@ -1612,7 +1654,6 @@ UINT
ULARGE_INTEGER
ULONG
ULONG_PTR
-UUID
UV
Unique
UniquePath
@@ -1624,9 +1665,9 @@ UnresolvedTupData
UpdateStmt
UserAuth
UserMapping
+UserOpts
VacAttrStats
VacAttrStatsP
-VacuumOption
VacuumStmt
Value
ValuesScan
@@ -1648,18 +1689,23 @@ Vfd
ViewStmt
VirtualTransactionId
Vsrt
+WAITORTIMERCALLBACK
WAIT_ORDER
WCHAR
WIN32_FILE_ATTRIBUTE_DATA
-WIN32_FIND_DATA
WORD
WORKSTATE
+WSABUF
+WSADATA
+WSANETWORKEVENTS
+WSAPROTOCOL_INFO
WalDataMessageHeader
WalLevel
WalRcvData
WalRcvState
WalSnd
WalSndCtlData
+WalSndState
WindowAgg
WindowAggState
WindowClause
@@ -1672,7 +1718,6 @@ WindowObjectData
WindowStatePerAgg
WindowStatePerAggData
WindowStatePerFunc
-WindowStatePerFuncData
WithClause
WordEntry
WordEntryIN
@@ -1681,12 +1726,12 @@ WordEntryPosVector
WorkTableScan
WorkTableScanState
WorkerInfo
-WorkerInfoData
Working_State
WriteBufPtr
WriteBytePtr
WriteDataPtr
WriteExtraTocPtr
+WriteFunc
X509
X509_NAME
X509_NAME_ENTRY
@@ -1706,19 +1751,15 @@ XLogRecord
XLogwrtResult
XLogwrtRqst
XPVIV
-XPVMG
-XRV
XactCallback
XactCallbackItem
XactEvent
XidStatus
-XmlBinaryType
XmlExpr
XmlExprOp
XmlExprState
XmlOptionType
XmlSerialize
-XmlStandaloneType
YYLTYPE
YYSTYPE
YY_BUFFER_STATE
@@ -1729,9 +1770,12 @@ __CreateJobObject
__CreateRestrictedToken
__IsProcessInJob
__QueryInformationJobObject
+__RegisterWaitForSingleObject
__SetInformationJobObject
aclitem
+allocfunc
array_unnest_fctx
+assign_collations_context
attribute_used_context
autovac_table
av_relation
@@ -1739,37 +1783,39 @@ avl_dbase
avw_dbase
backslashResult
base_yy_extra_type
+basebackup_options
bitmapword
bits16
bits32
bits8
bool
-boolean
bt_incomplete_action
-byte
bytea
cached_re_str
-caddr_t
cashKEY
celt
-char
+cfp
check_network_data
+check_object_relabel_type
check_password_hook_type
check_ungrouped_columns_context
chkpass
chr
clock_t
-cmpEntriesData
+cmpEntriesArg
cmpfunc
codes_t
coercion
+collation_cache_entry
color
+config_var_value
contain_aggs_of_level_context
convert_testexpr_context
core_YYSTYPE
core_yy_extra_type
core_yyscan_t
cost_qual_eval_context
+count_agg_clauses_context
createdb_failure_params
crosstab_HashEnt
crosstab_cat_desc
@@ -1781,7 +1827,6 @@ deparse_namespace
destructor
dev_t
directory_fctx
-double
ds_state
eLogType
ean13
@@ -1798,19 +1843,18 @@ fix_join_expr_context
fix_scan_expr_context
fix_upper_expr_context
flatten_join_alias_vars_context
-float
float4
float4KEY
float8
float8KEY
fmNodePtr
-fmStringInfo
-formarray
-formfloat
+fmgr_hook_type
fpos_t
+freeaddrinfo_ptr_t
freefunc
fsec_t
func_ptr
+gbt_vsrt_arg
gbtree_ninfo
gbtree_vinfo
generate_series_fctx
@@ -1821,6 +1865,8 @@ get_attavgwidth_hook_type
get_index_stats_hook_type
get_relation_info_hook_type
get_relation_stats_hook_type
+getaddrinfo_ptr_t
+getnameinfo_ptr_t
gid_t
ginIncompleteSplit
ginxlogCreatePostingTree
@@ -1831,17 +1877,12 @@ ginxlogInsertListPage
ginxlogSplit
ginxlogUpdateMeta
ginxlogVacuumPage
-gistIncompleteInsert
-gistxlogInsertComplete
gistxlogPage
gistxlogPageDelete
gistxlogPageSplit
gistxlogPageUpdate
-gss_OID
+gseg_picksplit_item
gss_buffer_desc
-gss_cred_id_t
-gss_ctx_id_t
-gss_name_t
gzFile
hashfunc
hbaPort
@@ -1856,10 +1897,8 @@ inline_error_callback_arg
ino_t
inquiry
instr_time
-int
int16
int16KEY
-int16_t
int2
int2vector
int32
@@ -1875,6 +1914,7 @@ itemIdSort
itemIdSortData
jmp_buf
join_search_hook_type
+keyEntryData
key_t
krb5_auth_context
krb5_ccache
@@ -1882,11 +1922,13 @@ krb5_context
krb5_error
krb5_error_code
krb5_keytab
+krb5_pointer
krb5_principal
krb5_ticket
lclContext
lclTocEntry
line_t
+locale_t
locate_agg_of_level_context
locate_var_of_level_context
locate_var_of_relation_context
@@ -1907,7 +1949,6 @@ mblen_converter
mbverifier
md5_ctxt
metastring
-migratorContext
mix_data_t
mixedStruct
mode_t
@@ -1919,18 +1960,18 @@ mp_sign
mp_size
mp_word
mpz_t
+needs_fmgr_hook_type
nodeitem
normal_rand_fctx
ntile_context
numeric
objectType
+object_access_hook_type
off_t
oidKEY
oidvector
-optType
ossldata
pageCnvCtx
-pam_handle_t
parse_error_callback_arg
pcolor
pendingPosition
@@ -1944,6 +1985,8 @@ pg_encname
pg_gssinfo
pg_local_to_utf
pg_local_to_utf_combined
+pg_locale_t
+pg_node_tree
pg_on_exit_callback
pg_re_flags
pg_time_t
@@ -1966,13 +2009,19 @@ pgstattuple_type
pgthreadlock_t
pid_t
planner_hook_type
+plperl_array_info
plperl_call_data
+plperl_interp_desc
plperl_proc_desc
-plperl_proc_entry
+plperl_proc_key
+plperl_proc_ptr
plperl_query_desc
plperl_query_entry
plpgsql_HashEnt
+pltcl_interp_desc
pltcl_proc_desc
+pltcl_proc_key
+pltcl_proc_ptr
pltcl_query_desc
pqbool
pqsigfunc
@@ -1987,7 +2036,6 @@ printTextRule
priv_map
process_sublinks_context
promptStatus_t
-pthread_attr_t
pthread_key_t
pthread_mutex_t
pthread_once_t
@@ -2000,7 +2048,8 @@ radius_attribute
radius_packet
rangeTableEntry_used_context
rank_context
-rb_appendator
+rb_allocfunc
+rb_combiner
rb_comparator
rb_freefunc
reduce_outer_joins_state
@@ -2028,11 +2077,10 @@ replace_rte_variables_context
rewrite_event
rijndael_ctx
rm_detail_t
-s1byte
-s2byte
-s4byte
+role_auth_extra
save_buffer
sequence_magic
+setter
shmem_startup_hook_type
sig_atomic_t
sigjmp_buf
@@ -2042,10 +2090,8 @@ size_t
slock_t
smgrid
sql_error_callback_arg
-sqlda_t
sqlparseInfo
sqlparseState
-sqlvar_t
ss_lru_item_t
ss_scan_location_t
ss_scan_locations_t
@@ -2055,12 +2101,17 @@ stmtCacheEntry
substitute_actual_parameters_context
substitute_actual_srf_parameters_context
substitute_multiple_relids_context
+svtype
symbol
+tablespaceinfo
teReqs
teSection
+temp_tablespaces_extra
text
timeKEY
time_t
+timerCA
+timezone_extra
tlist_vinfo
transferMode
trgm
@@ -2071,20 +2122,19 @@ tsearch_readline_state
txid
tzEntry
u1byte
-u2byte
u4byte
u_char
u_int
uchr
uid_t
-uint
uint16
+uint16_t
uint32
uint32_t
uint64
uint8
uintptr_t
-unknown
+unlogged_relation_entry
uuid_rc_t
uuid_t
v_i_state
@@ -2093,11 +2143,13 @@ validate_string_relopt
varattrib_1b
varattrib_1b_e
varattrib_4b
-void
walrcv_connect_type
walrcv_disconnect_type
walrcv_receive_type
+walrcv_send_type
wchar_t
+win32_deadchild_waitinfo
+win32_pthread
wint_t
xl_btree_delete
xl_btree_delete_page
@@ -2109,9 +2161,7 @@ xl_btree_split
xl_btree_vacuum
xl_btreetid
xl_dbase_create_rec
-xl_dbase_create_rec_old
xl_dbase_drop_rec
-xl_dbase_drop_rec_old
xl_heap_clean
xl_heap_cleanup_info
xl_heap_delete
@@ -2128,6 +2178,7 @@ xl_invalid_page_key
xl_multixact_create
xl_parameter_change
xl_relmap_update
+xl_restore_point
xl_running_xacts
xl_seq_rec
xl_smgr_create
@@ -2154,7 +2205,9 @@ xmlXPathCompExprPtr
xmlXPathContextPtr
xmlXPathObjectPtr
xmltype
+xpath_workspace
xsltStylesheetPtr
+yy_parser
yy_size_t
yyscan_t
z_stream
diff --git a/src/tools/pgtest b/src/tools/pgtest
index 9a50bea446..c5356fced8 100755
--- a/src/tools/pgtest
+++ b/src/tools/pgtest
@@ -1,6 +1,6 @@
#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/pgtest,v 1.6 2006/03/11 04:38:41 momjian Exp $
+# src/tools/pgtest
# This runs a build/initdb/regression test suite
#
@@ -18,12 +18,12 @@ TMP="/tmp/$$"
[ "X$1" != "X-n" ] && PGCLEAN=clean
-(gmake $PGCLEAN check 2>&1; echo "$?" > $TMP/ret) |
+(gmake $PGCLEAN check 2>&1; echo "$?" > $TMP/ret) |
(tee $TMP/0; exit `cat $TMP/ret`) &&
cat $TMP/0 |
-# The following grep's have to be adjusted for your setup because
+# The following grep's have to be adjusted for your setup because
# certain warnings are acceptable.
-grep -i warning |
-grep -v setproctitle |
-grep -v find_rule |
+grep -i warning |
+grep -v setproctitle |
+grep -v find_rule |
grep -v yy_flex_realloc
diff --git a/src/tools/version_stamp.pl b/src/tools/version_stamp.pl
index aff2c289fd..ef945da2dd 100755
--- a/src/tools/version_stamp.pl
+++ b/src/tools/version_stamp.pl
@@ -3,9 +3,9 @@
#################################################################
# version_stamp.pl -- update version stamps throughout the source tree
#
-# Copyright (c) 2008-2010, PostgreSQL Global Development Group
+# Copyright (c) 2008-2011, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/version_stamp.pl,v 1.6 2010/02/17 04:19:41 tgl Exp $
+# src/tools/version_stamp.pl
#################################################################
#
@@ -23,7 +23,7 @@
# Major version is hard-wired into the script. We update it when we branch
# a new development version.
$major1 = 9;
-$major2 = 0;
+$major2 = 1;
# Validate argument and compute derived variables
$minor = shift;
diff --git a/src/tools/win32tzlist.pl b/src/tools/win32tzlist.pl
index 083cc08850..a5acee7cad 100755
--- a/src/tools/win32tzlist.pl
+++ b/src/tools/win32tzlist.pl
@@ -2,9 +2,9 @@
#
# win32tzlist.pl -- compare Windows timezone information
#
-# Copyright (c) 2008-2010, PostgreSQL Global Development Group
+# Copyright (c) 2008-2011, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/win32tzlist.pl,v 1.1 2010/04/15 11:00:45 mha Exp $
+# src/tools/win32tzlist.pl
#################################################################
#