mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
This makes it possible to store lwlocks as part of some other data structure in the main shared memory segment, or in a dynamic shared memory segment. There is still a main LWLock array and this patch does not move anything out of it, but it provides necessary infrastructure for doing that in the future. This change is likely to increase the size of LWLockPadded on some platforms, especially 32-bit platforms where it was previously only 16 bytes. Patch by me. Review by Andres Freund and KaiGai Kohei.
pgindent ======== This can format all PostgreSQL *.c and *.h files, but excludes *.y, and *.l files. 1) Install pg_bsd_indent (see below for details). 2) Install entab (src/tools/entab/). 3) Change directory to the top of the build tree. 4) Remove all derived files (pgindent has trouble with one of the flex macros): gmake maintainer-clean Or: git clean -fdx 5) Download the typedef file from the buildfarm: wget -O src/tools/pgindent/typedefs.list http://buildfarm.postgresql.org/cgi-bin/typedefs.pl 6) Run pgindent: src/tools/pgindent/pgindent 7) Remove any files that generate errors and restore their original versions. 8) Indent the Perl code: ( find . -name \*.pl -o -name \*.pm find . -type f -exec file {} \; | egrep -i ':.*perl[0-9]*\>' | cut -d: -f1 ) | sort -u | xargs perltidy --profile=src/tools/pgindent/perltidyrc 9) 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 pg_ctl start gmake installcheck-world 10) Remove Perl backup files after testing --------------------------------------------------------------------------- BSD indent ---------- We have standardized on NetBSD's indent, and renamed it pg_bsd_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. These bugs become pretty major when you are doing >500k lines of code. If you don't believe me, take a directory and make a copy. Run pgindent on the copy using GNU indent, and do a diff -r. You will see what I mean. GNU indent does some things better, but mangles too. For details, see: http://archives.postgresql.org/pgsql-hackers/2003-10/msg00374.php http://archives.postgresql.org/pgsql-hackers/2011-04/msg01436.php --------------------------------------------------------------------------- Notes about excluded files -------------------------- src/include/storage/s_lock.h is excluded because it contains assembly code that pgindent tends to mess up. src/include/snowball/libstemmer/ and src/backend/snowball/libstemmer/ are excluded because those files are imported from an external project, not maintained locally, and are machine-generated anyway. src/interfaces/ecpg/test/expected/ is excluded to avoid breaking the ecpg regression tests. Several *.h files are included in regression output so should not be changed. --------------------------------------------------------------------------- Obsolete typedef list creation instructions ------------------------------------------- To use pgindent: 1) Build the source tree with _debug_ symbols and all possible configure options 2) Install to /usr/local/pgsql 3) Install all contrib modules 4) Save a list of typedefs by running: src/tools/find_typedef /usr/local/pgsql/bin /usr/local/pgsql/lib > /tmp/pgtypedefs