-
Notifications
You must be signed in to change notification settings - Fork 24
/
Changes
257 lines (222 loc) · 12.9 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
Revision history for PostgreSQL extension semver.
0.40.0 2024-07-20T20:35:03Z
- Updated the installation configuration to install the SQL and
documentation files into `semver` subdirectories.
- Changed the tests to use `CREATE EXTENSION` instead of loading the
SQL source file directory. The latter was required for Postgres 9.0
and lower, which have not been supported since v0.20.0 back in 2018.
- Fixed a bug that rejected pre-releases starting with a zero but
eventually include a dash, e.g., `1.2.3-02-3`. Thanks to Dylan
Bourque for the pull request (#70)!
- ***** WARNING: This release breaks compatibility with previous versions! ******
Fixed a bug in the scanning of pre-releases that start with a zero.
It now properly scans the rest of the pre-release string. As a result,
existing semvers with pre-releases the start with a zero may have been
incorrectly interpreted as valid. Any versions returned by this query
will need the leading 0 removed from the pre-release before upgrading:
`SELECT version FROM pkg WHERE get_semver_prerelease(version) ~ '^0\[0-9]+($|\+)'`
Discovered while debugging unexpected test failures in #70.
0.32.1 2023-08-01T23:20:31Z
- Fixed compilation issue on Postgres 16.
0.32.0 2022-10-23T21:53:54Z
- Add support for binary input (receive) and output (send) functions.
Thanks to Anna Clemens for the pull request (#61)!
0.31.2 2021-09-28T02:03:35Z
- Add an overflow check and properly compare the max size of INT32
rather than INT. Thanks to Felix Lechner for the report and Tom Lane
for the C lesson (#58).
0.31.1 2021-04-27T00:10:07Z
- Updated the C code to pass the correct number of arguments to
`hashint2()`. Thanks to Andrew Gierth for the spot.
- Fixed an error in processing the prerelease where it could sometimes
incorrectly report throw an error saying "prerelease numbers can't
start with 0" for prereleases with no such leading zero.
0.31.0 2020-10-17T22:30:00Z
- Added a workaround for an LLVM bitcode compile error. Thanks to
@mark-s-a for the report (#40).
- Removed `--load-language` from the options for running the tests,
as it has not been needed since 9.1, we support 9.2 and higher,
and it has been removed from Postgres 13.
- Fixed an a collation error on Postgres 12 and higher. Thanks to
Andrew for Marc Munro for the report and to Andrew Gierth for the
fix (pgxn/pgxn-manager#67).
- Prerelease parts are no longer compared compared case-insensitively,
but in ASCII sort order, as required by the spec. This is a breaking
change in the sense that `1.0.0-rc1` will now be considered greater than
`1.0.0-RC1`, rather than equivalent, but they're both still valid. See
https://github.com/semver/semver/issues/176 for the relevant
discussion. Thanks to Andrew Gierth for the spot!
0.30.0 2020-05-16T19:28:36Z
- ***** WARNING: This release breaks compatibility with previous versions! ******
Previous versions of the semver extension incorrectly allowed some
invalid prerelease and build metadata values. Details below, but *BEFORE
YOU UPGRADE* we strongly recommend that you check for and repair any
invalid semvers. You can find them using the official [SemVer regular
expression](https://regex101.com/r/vkijKf/1/) like so:
SELECT name, version FROM packages
WHERE version::text !~ '^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$';
If no rows are returned, you should be good to go. If there are results,
here are Examples of invalid semantic versions and how they should be
repaired.
1.0.0-02799 -> 1.0.0-2799
1.0.0-0.02 -> 1.0.0-0.2
1.0.0-.20 -> 1.0.0-0.20
1.0.0+0+20 -> 1.0.0+0-20 or 1.0.0+0.20
1.0.0+.af -> 1.0.0+0.af or 1.0.0+af
And now, back to your regularly-scheduled changes.
- Fixed an error formatting prerelease parts for semvers longer than
32 bytes. Thanks to @Nemo157 for the report and suggested fix (#48).
- Removed code that converted dashes to dots in prerelease parts. It
had been doing so on the assumption that dashes were invalid in SemVer
1.0 and 2.0 prerelease parts, but that does not turn out to be the case.
Thanks to @Nemo157 for the report (#46).
- Fixed the parsing of prerelease and metadata parts to allow leading
zeros for parts with non-numeric characters, e.g., `1.0.0-alpha.0a`, and
to disallow parts with leading zeros and only numeric characters, e.g.,
`1.0.0-02799`. Thanks to @Nemo157 for the bug report, and to Joseph
Donahue for the SemVer spec expertise (#45).
- The metadata part may no longer contain plus signs other than the one
used to start the metadata part.
- The prerelease and metadata parts may no longer start with a dot.
0.22.0 2020-04-02T14:13:55Z
- Fixed `get_semver_prerelease()` so that it returns only the
prerelease without any build metadata. For example, for
`1.0.0-1.2+1.02`, it will now return `1.2`, not `1.2+1.02`. Thanks
to Artur Troian for the report (#41) and fix (#42)!
0.21.0 2020-03-21T21:56:20Z
- Fixed build metadata part to allow leading zeros. In other words,
`1.0.0-1.02` is not a legitimate semver, because it has a leading zero
in a numeric part of the prerelease version. `1.0.0-1.2+1.02`, however,
is valid, because the leading zero numeric expression is in the build
metadata part, which does not evaluate as numeric, and so is allowed.
This fix allows source code hashes, for example, to be used in build
metadata. Thanks to Artur Troian for the report (#38) and fix (#39)!
0.20.3 2018-11-10T19:32:26Z
- Fixed test failure on Postgres 11 due to a renamed column that this
extension doesn't even use for testing.
0.20.2 2018-10-19T02:05:11Z
- Fix Makefile bug that installed the version script with the release
version instead of the extension version. Thanks again to
@ninjaslikecheese for the report (#33).
0.20.1 2018-10-18T00:30:04Z
- Properly incremented version to v0.20.0 in the spec file and docs.
Thanks to @ninjaslikecheese for the report (#32).
0.20.0 2018-10-17T12:59:22Z
- Fixed file name in the v0.17.0 upgrade script.
- Added the semverrange type.
- Increased the minimum required version of PostgreSQL to 9.2 for range
type support.
- Fixed the `Makefile` so it properly installs `semver.sql`. Thanks to
Matej Marušák for the report (Issue #31).
0.17.0 2017-05-07T07:15:25Z
- Fixed potential memory leak in is_semver function. Thanks to
Arun Tejasvi Chaganty (Issue #29).
0.16.0 2016-12-04T00:51:19Z
- Added `get_semver_*` accessor functions to retrieve the individual
parts of a semver, thanks to Geoff Montee (PR #27).
0.15.0 2016-10-28T03:38:59Z
- Fixed incorrect parsing of semver build metadata.
- Fixed text foratting of build metadata-only semver values.
- Implemented pre-release precedence scheme as per semantic versioning
2.0.0 section 11. Thanks to Sergey Kozlov for the report (Issue #23).
- Added Xavier Caron and Tom Davis as maintainers.
0.14.0 2016-08-11T05:38:27Z
- Updated the extension version in `semver.control` to 0.13.0, which
evidently I forgot to do for that release. Thanks to Stanislav Lorenc
for the report (Issue #21).
0.13.0 2016-07-30T21:06:15Z
- Fixed bug where a dash (-) was disallowed within the metadata part of
a semver. Thanks to @TerraTech for the report (Issue #19) and Tom
Davis for the fix (PR #20).
0.12.0 2016-06-11T06:00:19Z
- Fixed bug where some items described in the SemVer 2.0.0 Spec, section
10, were not properly recognized as semvers. Thanks to Xavier Caron
for the fix (with tests!) (PR #17).
0.11.0 2016-05-23T20:29:49Z
- Added `is_semver()`, thanks to a pull request from Xavier Caron
(PR #14).
- Fixed bug where version parts with non-leading 0 were considered
invalid. Thanks to @JeremySTX for the report (Issue #15) and Tom Davis
for the fix (PR #16).
0.10.0 2016-05-12T00:28:03Z
- Updated extension to support Semantic Versioning 2.0.0, thanks to Tom
Davis (PR #13).
- Improved error output to mark specific bad character, where possible,
thanks to Tom Davis.
- BREAKING CHANGE: `semver()` and cast constructors no longer support
the semver 1.0.0-beta format format "X.Y.Zpre" (that is, without the
dash), since it's not compatible with the semver 2.0.0 spec. Use
`to_semver()` to convert it to X.Y.Z-pre", or specify "X.Y.Z-pre"
directly.
0.5.0 2014-12-06T00:29:17Z
- Fixed issue where the release file could be listed twice when
installing, which causes an installation failure on some versions of
PostgreSQL.
- Fixed a typo in the README: `make installcheck` should be run *after*
`make install`.
- Fixed an issue where the installer would read the distribution version
rather than the extension version. The latter is requierd to tell
PostgreSQL the correct version number (since the distribution version
is quite different from the extension version).
- Added `LICENSE` file to simplify packaging, thanks to Richard Marko,
who is packaging semver for Fedora.
0.4.0 2013-06-12T06:48:33Z
- Updated the `Makefile` to reflect the recommended patterns from
pgsql-hackers. Thanks to Cédric Villemain for the details.
- Changed the Makefile to read the distribution name and version from
META.json.
- Fixed the Makefile to allow `PG_CONFIG=/path/to/pg_config` to actually
work.
- Fixed an off-by-one bug in the parser that could add garbage
characters to the end of certain semvers with patch versions. Thanks
to Andrew "RhodiumToad" Gierth for pointing out the bug.
- Add a macro to fetch a semver from C function arguments, and cast to
`semver*` rather than `void*`. Suggested by Andrew "RhodiumToad"
Gierth.
- Removed unnecessary calls to `PG_FREE_IF_COPY()`. Only really needed
for toastable values, and semvers are not toastable.
0.3.0 2012-11-20T19:04:30Z
- Updated the parser to support an optional dash before the prerelease
version, and the formatter to always emit a dash for the prerelease
version. This brings it in line with the final semver 1.0.0
specification. Thanks to Pieter van de Bruggen for making it happen.
0.2.4 2012-11-02T22:32:30Z
- Fixed a memory allocation bug that could cause semvers to be displayed
with missing or garbage characters. Thanks to Andrew "RhodiumToad"
Gierth for help tracking down and fixing the issue.
0.2.3 2011-11-11T06:55:10Z
- Fixed the `Makefile` so that the documentation file should properly be
found and installed by `PGXS`.
0.2.2 2011-05-12T19:01:41
- Tweaked MultiMarkdown table layout in the docuemntation so that the
header row is always processed as a header row, rather than a `pre`
block.
- Simplified the `CREATE EXTENSION` support in the `Makefile`.
0.2.1 2011-04-20T20:37:05
- Fixed the metadata file to reflect that the "pair" extension is not
included in the semver distribution.
- Added abstract and doc file to the `provides` section of `META.json`.
- Removed the `NO_PGXS` stuff from `Makefile`, as the PostgreSQL core
team does not recommend its use outside of the core contrib
extensions.
- Added PostgreSQL 9.1 `CREATE EXTENSION` support, including migration
from an unpackaged install via `CREATE EXTENSION semver FROM
unpackaged`.
- Renamed `doc/semver.md` to `doc/semver.mdd`, so that PGXN will parse
it as MultiMarkdown. This will allow the tables to be properly
formatted.
- Removed documentation that semver is implemented as a domain. It
hasn't been since 0.2.0.
- Removed Unicode characters `psql` output in the documentation.
0.2.0 2011-02-05T19:32:49
- Converted to a native type implemented in C by Sam Vilain. While David
was at lunch, no less.
- As a consequence, `USING` is no longer required in an `ORDER BY`
clause to get proper semver sort ordering.
- Added casts from nuermic types.
- Renamed `clean_semver()` to `to_semver()`.
0.1.0 2010-10-07 18:31:43
- Initial version.
- Implementation in pure PL/pgSQL.
- Included in [PGXN Manager](https://github.com/theory/pgxn-manager).
- Not otherwise released.