1 For All Releases (major, minor, beta, RC)
4 * Release version number changes
6 o bump Win32 interface version numbers
7 - src/include/pg_config.h.win32 (string and integer versions)
8 - src/interfaces/libpq/libpq.rc.in
9 (pre-8.0 had just libpq.rc)
10 - src/port/win32ver.rc
11 o update doc/FAQ and doc/src/FAQ/FAQ.html
12 o copy FAQs from HEAD to top-most branch
13 o configure.in, and run autoconf or update configure (by packager)
16 o scan cvs logs, use pgcvslog and flags in comments
17 o update doc/src/sgml/release.sgml
18 o run spellchecker on result
20 o check if 'gmake HISTORY.html' works for <link>s
22 * Update timezone data to match latest zic database (see src/timezone/README)
25 Translations are kept in the project "pgtranslation" on PgFoundry.
26 1. Check out the messages module (of the right branch).
27 2. Check out the admin module.
28 3. Run "sh .../admin/cp-po .../messages .../pgsql
34 (in addition to the above)
36 * Bump library versions, if appropriate (see below)
37 o src/interfaces/*/Makefile
38 o src/interfaces/*/*/Makefile
39 o update ecpg regression expected files for new library number
42 o check that dashed items from the TODO list are complete
43 o remove dashed TODO items
44 o group items into categories
45 o select major features
46 o select incompatibilities
47 o add documenation for items
50 document all new features
51 update help output from inside the programs
52 doc/src/sgml/ref manual pages
53 convert any literal "<" and ">" characters, use tools/find_gt_lt
56 update config.guess and config.sub at the start of beta
57 update ports list in doc/src/sgml/installation.sgml
58 update platform-specific FAQ's, if needed
60 * Update inet/cidr data types with newest Bind patches
63 Creating Back-Branch Release Notes
64 ==================================
66 * Do 'cvs log' on each back-branch and run pgcvslog
68 * Edit and create SGML markup for the most recent branch
70 * Make copies of the SGML for each branch, then remove items
71 that do not apply based on cvs logs for that branch
73 * Copy the SGML for each branch into release.sgml in CVS HEAD
75 * Copy CVS HEAD release.sgml to each branch and trim off the top
76 part that doesn't apply for each branch
79 ---------------------------------------------------------------------------
81 Library Version Changes
82 =======================
87 The major version number should be updated whenever the source of the
88 library changes to make it binary incompatible. Such changes include,
89 but are not limited to:
91 1. Removing a public function or structure (or typedef, enum, ...)
93 2. Modifying a public functions arguments.
95 3. Removing a field from a public structure.
97 4. Adding a field to a public structure, unless steps have been
98 previously taken to shield users from such a change, for example by
99 such structures only ever being allocated/instantiated by a library
100 function which would give the new field a suitable default value.
102 Adding a new function should NOT force an increase in the major version
103 number. (Packagers will see the standard minor number update and install
104 the new library.) When the major version is increased all applications
105 which link to the library MUST be recompiled - this is not desirable. When
106 the major version is updated the minor version gets reset.
111 The minor version number should be updated whenever the functionality of
112 the library has changed, typically a change in source code between releases
113 would mean an increase in the minor version number so long as it does not
114 require a major version increase.
119 When modifying public functions arguments, steps should be taken to
120 maintain binary compatibility across minor PostgreSQL releases (e.g. the
121 7.2 series, the 7.3 series, the 7.4/8.0 series). Consider the following
124 void print_stuff(int arg1, int arg2)
126 printf("stuff: %d %d\n", arg1, arg2);
129 If we wanted to add a third argument:
131 void print_stuff(int arg1, int arg2, int arg3)
133 printf("stuff: %d %d %d\n", arg1, arg2, arg3);
136 Then doing it like this:
138 void print_stuff2(int arg1, int arg2, int arg3)
140 printf("stuff: %d %d %d\n", arg1, arg2, arg3);
143 void print_stuff(int arg1, int arg2)
145 print_stuff(arg1, arg2, 0);
148 would maintain binary compatibility. Obviously this would add a fair
149 bit of cruft if used extensively, but considering the changes between
150 minor versions would probably be worthwhile to avoid bumping library
151 major version. Naturally in the next major version print_stuff() would
152 assume the functionality and arguments of print_stuff2().