2006-11-24 18:03:50 +01:00
|
|
|
For All Releases (major, minor, beta, RC)
|
|
|
|
================
|
|
|
|
|
|
|
|
* Release version number changes
|
2008-06-10 20:08:48 +02:00
|
|
|
o run src/tools/version_stamp.pl, then run autoconf
|
2007-12-13 03:02:20 +01:00
|
|
|
(by packager) (beta)
|
2004-12-16 23:11:06 +01:00
|
|
|
|
2000-11-24 19:28:20 +01:00
|
|
|
* Release notes
|
2010-09-26 01:31:26 +02:00
|
|
|
o run git log and, if useful, src/tools/git_changelog
|
2004-12-16 23:11:06 +01:00
|
|
|
o update doc/src/sgml/release.sgml
|
|
|
|
o run spellchecker on result
|
2006-11-24 18:03:50 +01:00
|
|
|
o add SGML markup
|
|
|
|
|
2010-04-15 13:00:45 +02:00
|
|
|
* Update timezone data to match latest zic database and new
|
|
|
|
Windows releases, if any (see src/timezone/README)
|
2006-11-24 18:03:50 +01:00
|
|
|
|
|
|
|
* Translation updates
|
2012-09-23 04:14:38 +02:00
|
|
|
1. Check out the messages repository (of the right branch) from
|
|
|
|
<http://git.postgresql.org/git/pgtranslation/messages.git>.
|
|
|
|
2. Check out the admin repository from
|
|
|
|
<http://git.postgresql.org/git/pgtranslation/admin.git>.
|
|
|
|
3. From babel.postgresql.org, download the "qualified list"
|
2009-10-20 20:22:19 +02:00
|
|
|
for the respective branch.
|
2012-09-23 04:14:38 +02:00
|
|
|
4. Run ".../admin/cp-po -L qualified-list-xxx.txt -g .../messages .../postgresql".
|
|
|
|
This creates a commit in the postgresql repository.
|
|
|
|
5. Tag the messages: git tag RELx_y_z
|
|
|
|
6. Push everything.
|
2006-11-24 18:03:50 +01:00
|
|
|
|
|
|
|
|
|
|
|
For Major Releases
|
|
|
|
==================
|
|
|
|
(in addition to the above)
|
|
|
|
|
|
|
|
* Release notes
|
2010-09-26 01:31:26 +02:00
|
|
|
o use git log or src/tools/git_changelog to find the relevant commits
|
2015-08-08 23:33:55 +02:00
|
|
|
o new features and options
|
|
|
|
o major performance improvements
|
|
|
|
o bug fixes for serious or common bugs
|
2015-08-09 04:36:06 +02:00
|
|
|
o incompatibilities and significant user-visible changes
|
2015-08-08 23:33:55 +02:00
|
|
|
o major source code changes
|
2009-05-04 10:08:47 +02:00
|
|
|
o check completion of items that have been marked as completed at
|
|
|
|
http://wiki.postgresql.org/wiki/Todo
|
|
|
|
o remove completed TODO items
|
2004-12-16 23:11:06 +01:00
|
|
|
o group items into categories
|
|
|
|
o select major features
|
|
|
|
o select incompatibilities
|
2008-02-13 22:09:24 +01:00
|
|
|
o add documentation for items
|
2000-11-24 19:28:20 +01:00
|
|
|
|
|
|
|
* Documentation
|
2008-02-13 19:30:21 +01:00
|
|
|
o document all new features
|
|
|
|
o update help output from inside the programs
|
|
|
|
o doc/src/sgml/ref manual pages
|
2009-12-09 18:03:30 +01:00
|
|
|
o update the sizes specified for installation requirements
|
|
|
|
(doc/src/sgml/installation.sgml, section "install-requirements")
|
|
|
|
o update the shared memory size requirement table
|
|
|
|
(doc/src/sgml/runtime.sgml, section "shared-memory-parameters")
|
2000-11-24 19:28:20 +01:00
|
|
|
|
|
|
|
* Ports
|
2008-02-13 19:30:21 +01:00
|
|
|
o update config.guess and config.sub at the start of beta
|
2009-04-09 23:35:33 +02:00
|
|
|
(from http://savannah.gnu.org/projects/config)
|
2008-02-13 19:30:21 +01:00
|
|
|
o update ports list in doc/src/sgml/installation.sgml
|
|
|
|
o update platform-specific FAQ's, if needed
|
2000-11-24 19:28:20 +01:00
|
|
|
|
2005-02-02 17:58:52 +01:00
|
|
|
* Update inet/cidr data types with newest Bind patches
|
|
|
|
|
2002-12-14 20:45:46 +01:00
|
|
|
|
2008-06-10 20:08:48 +02:00
|
|
|
Starting a New Development Cycle
|
|
|
|
================================
|
|
|
|
|
2010-09-21 06:25:07 +02:00
|
|
|
* Create a branch in git for maintenance of the previous release
|
2012-06-14 04:11:06 +02:00
|
|
|
o on master branch, do:
|
|
|
|
git pull # be sure you have the latest "master"
|
|
|
|
git push origin master:refs/heads/"new-branch-name"
|
|
|
|
for example,
|
|
|
|
git push origin master:refs/heads/REL9_2_STABLE
|
2008-06-10 20:08:48 +02:00
|
|
|
|
|
|
|
* Increment the major version number in src/tools/version_stamp.pl
|
|
|
|
|
|
|
|
* Run "src/tools/version_stamp.pl devel", then run autoconf
|
|
|
|
|
2013-04-11 18:27:02 +02:00
|
|
|
* Add version tag to src/tools/git_changelog
|
|
|
|
|
2013-06-14 20:53:23 +02:00
|
|
|
* Bump minor library versions, major if appropriate (see below)
|
|
|
|
o Look for SO_MINOR_VERSION and MINOR_VERSION macros in
|
|
|
|
src/interfaces/ecpg/compatlib/Makefile
|
|
|
|
src/interfaces/ecpg/ecpglib/Makefile
|
|
|
|
src/interfaces/ecpg/pgtypeslib/Makefile
|
|
|
|
src/interfaces/ecpg/preproc/Makefile
|
|
|
|
src/interfaces/libpq/Makefile
|
|
|
|
src/tools/msvc/Mkvcbuild.pm
|
|
|
|
|
2008-06-10 20:08:48 +02:00
|
|
|
|
2007-09-12 05:21:20 +02:00
|
|
|
Creating Back-Branch Release Notes
|
|
|
|
==================================
|
2007-09-12 21:27:16 +02:00
|
|
|
|
2013-11-10 15:20:52 +01:00
|
|
|
* Run src/tools/git_changelog to generate a list of relevant commits.
|
2013-10-08 15:48:29 +02:00
|
|
|
You can also run 'git log' in each branch. Be sure to use the --since
|
|
|
|
branch tag and not the release date, as commits could have been done
|
|
|
|
between branch stamping and the release date.
|
2007-09-12 05:21:20 +02:00
|
|
|
|
2010-09-21 06:25:07 +02:00
|
|
|
* On the git master branch, edit and create SGML markup for the most recent
|
2013-10-08 16:29:43 +02:00
|
|
|
branch in that branch's release-N.N.sgml file. Minor release notes
|
|
|
|
should include more small change details because testing is limited.
|
2007-09-12 05:21:20 +02:00
|
|
|
|
2009-05-02 22:28:17 +02:00
|
|
|
* Copy this into older branches' release-N.N.sgml files, then remove
|
2013-11-10 15:20:52 +01:00
|
|
|
items that do not apply based on commit logs for that branch.
|
2013-10-08 15:48:29 +02:00
|
|
|
|
2013-11-10 15:20:52 +01:00
|
|
|
* Add any older branch commits not in the newest branch. This can be
|
2013-10-08 15:48:29 +02:00
|
|
|
accomplished by diff'ing the newest and older branch commit logs and
|
|
|
|
looking for lines that only appear in the older branch, e.g.:
|
|
|
|
|
|
|
|
diff commit-N.N.log commit-O.O.log | grep '^>'
|
|
|
|
|
|
|
|
* Copy the appropriate release-N.N.sgml files into each back branch SGML
|
|
|
|
directory.
|
2007-09-12 05:21:20 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2002-12-14 20:45:46 +01:00
|
|
|
---------------------------------------------------------------------------
|
|
|
|
|
2003-07-23 06:08:44 +02:00
|
|
|
Library Version Changes
|
|
|
|
=======================
|
|
|
|
|
|
|
|
Major Version
|
|
|
|
=============
|
2002-12-14 20:45:46 +01:00
|
|
|
|
|
|
|
The major version number should be updated whenever the source of the
|
|
|
|
library changes to make it binary incompatible. Such changes include,
|
|
|
|
but are not limited to:
|
|
|
|
|
|
|
|
1. Removing a public function or structure (or typedef, enum, ...)
|
|
|
|
|
|
|
|
2. Modifying a public functions arguments.
|
|
|
|
|
|
|
|
3. Removing a field from a public structure.
|
|
|
|
|
2003-01-11 05:58:44 +01:00
|
|
|
4. Adding a field to a public structure, unless steps have been
|
2002-12-14 20:45:46 +01:00
|
|
|
previously taken to shield users from such a change, for example by
|
|
|
|
such structures only ever being allocated/instantiated by a library
|
|
|
|
function which would give the new field a suitable default value.
|
|
|
|
|
2007-09-29 14:19:16 +02:00
|
|
|
Adding a new function should NOT force an increase in the major version
|
|
|
|
number. (Packagers will see the standard minor number update and install
|
|
|
|
the new library.) When the major version is increased all applications
|
|
|
|
which link to the library MUST be recompiled - this is not desirable. When
|
2002-12-14 20:45:46 +01:00
|
|
|
the major version is updated the minor version gets reset.
|
|
|
|
|
|
|
|
Minor Version
|
|
|
|
=============
|
|
|
|
|
2007-09-29 14:19:16 +02:00
|
|
|
The minor version number should be updated whenever the functionality of
|
|
|
|
the library has changed, typically a change in source code between releases
|
|
|
|
would mean an increase in the minor version number so long as it does not
|
|
|
|
require a major version increase.
|
2002-12-14 20:45:46 +01:00
|
|
|
|
2008-02-13 22:09:24 +01:00
|
|
|
Given that we make at least minor changes to our libraries in every major
|
|
|
|
PostgreSQL version, we always bump all minor library version numbers at the
|
|
|
|
start of each development cycle as a matter of policy.
|
|
|
|
|
2002-12-14 20:45:46 +01:00
|
|
|
Minimizing Changes
|
|
|
|
==================
|
|
|
|
|
|
|
|
When modifying public functions arguments, steps should be taken to
|
|
|
|
maintain binary compatibility across minor PostgreSQL releases (e.g. the
|
|
|
|
7.2 series, the 7.3 series, the 7.4/8.0 series). Consider the following
|
|
|
|
function:
|
|
|
|
|
|
|
|
void print_stuff(int arg1, int arg2)
|
|
|
|
{
|
|
|
|
printf("stuff: %d %d\n", arg1, arg2);
|
|
|
|
}
|
|
|
|
|
|
|
|
If we wanted to add a third argument:
|
2010-11-23 21:27:50 +01:00
|
|
|
|
2002-12-14 20:45:46 +01:00
|
|
|
void print_stuff(int arg1, int arg2, int arg3)
|
|
|
|
{
|
|
|
|
printf("stuff: %d %d %d\n", arg1, arg2, arg3);
|
|
|
|
}
|
|
|
|
|
|
|
|
Then doing it like this:
|
|
|
|
|
|
|
|
void print_stuff2(int arg1, int arg2, int arg3)
|
|
|
|
{
|
|
|
|
printf("stuff: %d %d %d\n", arg1, arg2, arg3);
|
|
|
|
}
|
|
|
|
|
|
|
|
void print_stuff(int arg1, int arg2)
|
|
|
|
{
|
2012-09-23 21:28:44 +02:00
|
|
|
print_stuff2(arg1, arg2, 0);
|
2002-12-14 20:45:46 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
would maintain binary compatibility. Obviously this would add a fair
|
|
|
|
bit of cruft if used extensively, but considering the changes between
|
|
|
|
minor versions would probably be worthwhile to avoid bumping library
|
|
|
|
major version. Naturally in the next major version print_stuff() would
|
|
|
|
assume the functionality and arguments of print_stuff2().
|
|
|
|
|
|
|
|
|
|
|
|
Lee Kindness
|