1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * catversion.h |
4 | * "Catalog version number" for PostgreSQL. |
5 | * |
6 | * The catalog version number is used to flag incompatible changes in |
7 | * the PostgreSQL system catalogs. Whenever anyone changes the format of |
8 | * a system catalog relation, or adds, deletes, or modifies standard |
9 | * catalog entries in such a way that an updated backend wouldn't work |
10 | * with an old database (or vice versa), the catalog version number |
11 | * should be changed. The version number stored in pg_control by initdb |
12 | * is checked against the version number compiled into the backend at |
13 | * startup time, so that a backend can refuse to run in an incompatible |
14 | * database. |
15 | * |
16 | * The point of this feature is to provide a finer grain of compatibility |
17 | * checking than is possible from looking at the major version number |
18 | * stored in PG_VERSION. It shouldn't matter to end users, but during |
19 | * development cycles we usually make quite a few incompatible changes |
20 | * to the contents of the system catalogs, and we don't want to bump the |
21 | * major version number for each one. What we can do instead is bump |
22 | * this internal version number. This should save some grief for |
23 | * developers who might otherwise waste time tracking down "bugs" that |
24 | * are really just code-vs-database incompatibilities. |
25 | * |
26 | * The rule for developers is: if you commit a change that requires |
27 | * an initdb, you should update the catalog version number (as well as |
28 | * notifying the pghackers mailing list, which has been the informal |
29 | * practice for a long time). |
30 | * |
31 | * The catalog version number is placed here since modifying files in |
32 | * include/catalog is the most common kind of initdb-forcing change. |
33 | * But it could be used to protect any kind of incompatible change in |
34 | * database contents or layout, such as altering tuple headers. |
35 | * |
36 | * |
37 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
38 | * Portions Copyright (c) 1994, Regents of the University of California |
39 | * |
40 | * src/include/catalog/catversion.h |
41 | * |
42 | *------------------------------------------------------------------------- |
43 | */ |
44 | #ifndef CATVERSION_H |
45 | #define CATVERSION_H |
46 | |
47 | /* |
48 | * We could use anything we wanted for version numbers, but I recommend |
49 | * following the "YYYYMMDDN" style often used for DNS zone serial numbers. |
50 | * YYYYMMDD are the date of the change, and N is the number of the change |
51 | * on that day. (Hopefully we'll never commit ten independent sets of |
52 | * catalog changes on the same day...) |
53 | */ |
54 | |
55 | /* yyyymmddN */ |
56 | #define CATALOG_VERSION_NO 201909212 |
57 | |
58 | #endif |
59 | |