Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

Started by Michael Paquieralmost 3 years ago121 messages
Jump to latest
#1Michael Paquier
michael@paquier.xyz

Hi all,

$Subject says it all. Based on an analysis of the code, I can note
the following when it comes to the removal of 1.0.1:
- A lot of code related to channel binding is now simplified as
X509_get_signature_nid() always exists, mostly around its CFLAGS.
- This removes the comments related to 1.0.1e introduced by 74242c2.

Then for 1.0.2, the following flags can be gone:
HAVE_ASN1_STRING_GET0_DATA
HAVE_BIO_GET_DATA
HAVE_BIO_METH_NEW
HAVE_HMAC_CTX_FREE
HAVE_HMAC_CTX_NEW

It would be nice to remove CRYPTO_lock(), but from what I can see the
function still exists in LibreSSL, meaning that libpq locking wouldn't
be thread-safe if these function's paths are removed.

Another related question is how much do we care about builds with
LibreSSL with MSVC? This patch sets takes the simple path of assuming
that this has never been really tested, and if you look at the MSVC
scripts on HEAD we rely on a version number from OpenSSL, which is not
something LibreSSL copes nicely with already, as documented in
configure.ac.

OpenSSL 1.0.2 has been EOLd at the end of 2019, and 1.0.1 had its last
minor release in September 2019, so with Postgres 17 targetted in
September/October 2024, we would be five years behind that.

Last comes the buildfarm, and I suspect that a few animals are
building with 1.0.2. Among what I have spotted:
- wobbegong and vulpes, on Fedora 27, though I could not find
references about the version used there.
- bonito, on Fedora 29.
- SUSE 12 SP{4,5} have 1.0.2 as their newer version.
- butterflyfish may not like that, if I recall correctly, as it should
have 1.0.2.

So, it seems to me that 1.0.1 would be a rather silent move for the
buildfarm, and 1.0.2 could lead to some noise. Note as well that
1.1.0 support has been stopped by upstream at the same time as 1.0.1,
with a last minor release in September 2019, though that feels like a
huge jump at this stage. On a code basis, removing 1.0.1 leads to the
most cleanup. The removal of 1.0.2 would be nice, but the tweaks
needed for LibreSSL make it less appealing.

Attached are two patches to remove support for 1.0.1 and 1.0.2 for
now, kept separated for clarity, to be considered as something to do
at the beginning of the v17 cycle. 0001 is in a rather good shape
seen from here.

Now, for 0002 and the removal of 1.0.2, I am seeing two things once
OPENSSL_API_COMPAT is bumped from 0x10002000L to 0x10100000L:
- be-secure-openssl.c requires an extra openssl/bn.h, which is not a
big deal, from what I get.
- Much more interesting: OpenSSL_add_all_algorithms() has two macros
that get removed, see include/openssl/evp.h:
# ifdef OPENSSL_LOAD_CONF
# define OpenSSL_add_all_algorithms() \
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
| OPENSSL_INIT_ADD_ALL_DIGESTS \
| OPENSSL_INIT_LOAD_CONFIG, NULL)
# else
# define OpenSSL_add_all_algorithms() \
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
| OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
# endif

The part where I am not quite sure of what to do is about
OPENSSL_LOAD_CONF. We could call directly OPENSSL_init_crypto() and
add OPENSSL_INIT_LOAD_CONFIG if building with OPENSSL_LOAD_CONF, but
it feels a bit ugly to copy-paste this code from OpenSSL itself.
Note that patch 0002 still has OPENSSL_API_COMPAT at 0x10002000L.
OPENSSL_init_crypto() looks to be in LibreSSL, and it is new in
OpenSSL 1.1.0, so switching the minimum to OpenSSL 1.1.0 should not
require a new cflags on this one.

Thoughts?
--
Michael

Attachments:

v1-0001-Remove-support-for-OpenSSL-1.0.1.patchtext/x-diff; charset=us-asciiDownload+38-102
v1-0002-Remove-support-for-OpenSSL-1.0.2.patchtext/x-diff; charset=us-asciiDownload+27-137
#2Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#1)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 24 May 2023, at 10:22, Michael Paquier <michael@paquier.xyz> wrote:

The removal of 1.0.2 would be nice, but the tweaks
needed for LibreSSL make it less appealing.

1.0.2 is also an LTS version available commercially for premium support
customers of OpenSSL (1.1.1 will become an LTS version as well), with 1.0.2zh
slated for release next week. This raises the likelyhood of Postgres
installations using 1.0.2 in production still, and for some time to come.

--
Daniel Gustafsson

#3Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#2)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Wed, May 24, 2023 at 11:36:56AM +0200, Daniel Gustafsson wrote:

1.0.2 is also an LTS version available commercially for premium support
customers of OpenSSL (1.1.1 will become an LTS version as well), with 1.0.2zh
slated for release next week. This raises the likelyhood of Postgres
installations using 1.0.2 in production still, and for some time to come.

Good point. Indeed, that makes it pretty clear that not dropping
1.0.2 would be the best option for the time being, so 0001 would be
enough.

I am wondering if we should worry about having a buildfarm member that
could test these binaries, though, in case they have compatibility
issues.. But it would be harder to debug without the code at hand, as
well.
--
Michael

#4Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#3)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 24 May 2023, at 11:52, Michael Paquier <michael@paquier.xyz> wrote:

On Wed, May 24, 2023 at 11:36:56AM +0200, Daniel Gustafsson wrote:

1.0.2 is also an LTS version available commercially for premium support
customers of OpenSSL (1.1.1 will become an LTS version as well), with 1.0.2zh
slated for release next week. This raises the likelyhood of Postgres
installations using 1.0.2 in production still, and for some time to come.

Good point. Indeed, that makes it pretty clear that not dropping
1.0.2 would be the best option for the time being, so 0001 would be
enough.

I think thats the right move re 1.0.2 support. 1.0.2 is also the version in
RHEL7 which is in ELS until 2026.

When we moved the goalposts to 1.0.1 (commit 7b283d0e1d1) we referred to RHEL6
using 1.0.1, and RHEL6 goes out of ELS in late June 2024 seems possible to drop
1.0.1 support during v17. I haven't studied the patch yet but I'll have a look
at it.

I am wondering if we should worry about having a buildfarm member that
could test these binaries, though, in case they have compatibility
issues.. But it would be harder to debug without the code at hand, as
well.

It would be nice it the OpenSSL project could grant us an LTS license for a
buildfarm animal to ensure compatibility but I have no idea how realistic that
is (or how much the LTS version of 1.0.2 has diverged from the last available
public 1.0.2 version).

--
Daniel Gustafsson

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Daniel Gustafsson (#4)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

Daniel Gustafsson <daniel@yesql.se> writes:

It would be nice it the OpenSSL project could grant us an LTS license for a
buildfarm animal to ensure compatibility but I have no idea how realistic that
is (or how much the LTS version of 1.0.2 has diverged from the last available
public 1.0.2 version).

Surely the answer must be "not much". The entire point of an LTS
version is to not have to change dusty calling applications.

We had definitely better have some animals still using 1.0.2, but
I don't see much reason to think that the last public release
wouldn't be good enough.

regards, tom lane

#6Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#4)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Wed, May 24, 2023 at 01:03:04PM +0200, Daniel Gustafsson wrote:

When we moved the goalposts to 1.0.1 (commit 7b283d0e1d1) we referred to RHEL6
using 1.0.1, and RHEL6 goes out of ELS in late June 2024 seems possible to drop
1.0.1 support during v17. I haven't studied the patch yet but I'll have a look
at it.

Great, thanks for the help.
--
Michael

#7Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#6)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 25 May 2023, at 00:18, Michael Paquier <michael@paquier.xyz> wrote:

On Wed, May 24, 2023 at 01:03:04PM +0200, Daniel Gustafsson wrote:

When we moved the goalposts to 1.0.1 (commit 7b283d0e1d1) we referred to RHEL6
using 1.0.1, and RHEL6 goes out of ELS in late June 2024 seems possible to drop
1.0.1 support during v17. I haven't studied the patch yet but I'll have a look
at it.

Patch looks to be in pretty good shape, just a few minor comments:

-#ifdef HAVE_BE_TLS_GET_CERTIFICATE_HASH
+#ifdef USE_OPENSSL
Since this is only calling the pgtls abstraction API and not directly into the
SSL implementation we should use USE_SSL here instead. Same for the
corresponding hunks in the frontend code.

+	 * Note that if we don't support channel binding if we're not using SSL at
+	 * all, we would not have advertised the PLUS variant in the first place.
Seems like a word fell off when merging these sentences.  This should probably
be "..support channel binding, or if we're no.." or something similar.
-#if defined(USE_OPENSSL) && (defined(HAVE_X509_GET_SIGNATURE_NID) || defined(HAVE_X509_GET_SIGNATURE_INFO))
-#define HAVE_PGTLS_GET_PEER_CERTIFICATE_HASH
+#ifdef USE_OPENSSL
 extern char *pgtls_get_peer_certificate_hash(PGconn *conn, size_t *len);
 #endif
No need for any guard at all now is there?  All supported SSL implementations
have it, and I doubt we'd accept a new one that doesn't (or which can't
implement the function and error out).
-  # Functions introduced in OpenSSL 1.0.2. LibreSSL does not have
-  # SSL_CTX_set_cert_cb().
-  AC_CHECK_FUNCS([X509_get_signature_nid SSL_CTX_set_cert_cb])
+  # LibreSSL does not have SSL_CTX_set_cert_cb().
+  AC_CHECK_FUNCS([SSL_CTX_set_cert_cb])
The comment about when the function was introduced is still interesting and
should remain IMHO.

The changes to the Windows buildsystem worry me a bit, but they don't move the
goalposts in either direction wrt to LibreSSL on Windows so for the purpose of
this patch we don't need to do more. Longer term we should either make
LibreSSL work on Windows builds, or explicitly not support it on Windows.

--
Daniel Gustafsson

#8Daniel Gustafsson
daniel@yesql.se
In reply to: Tom Lane (#5)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 24 May 2023, at 16:15, Tom Lane <tgl@sss.pgh.pa.us> wrote:

We had definitely better have some animals still using 1.0.2, but
I don't see much reason to think that the last public release
wouldn't be good enough.

There are still RHEL7 animals like chub who use 1.0.2 so I'm not worried. We
might want to consider displaying the OpenSSL version number during configure
(meson already does it) in all branches to make it easier to figure out which
versions we have coverage for?

--
Daniel Gustafsson

#9Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#8)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Thu, May 25, 2023 at 10:27:02AM +0200, Daniel Gustafsson wrote:

There are still RHEL7 animals like chub who use 1.0.2 so I'm not worried. We
might want to consider displaying the OpenSSL version number during configure
(meson already does it) in all branches to make it easier to figure out which
versions we have coverage for?

+1.
--
Michael
#10Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#7)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Thu, May 25, 2023 at 10:16:27AM +0200, Daniel Gustafsson wrote:

-#ifdef HAVE_BE_TLS_GET_CERTIFICATE_HASH
+#ifdef USE_OPENSSL
Since this is only calling the pgtls abstraction API and not directly into the
SSL implementation we should use USE_SSL here instead. Same for the
corresponding hunks in the frontend code.

Makes sense, done.

+	 * Note that if we don't support channel binding if we're not using SSL at
+	 * all, we would not have advertised the PLUS variant in the first place.
Seems like a word fell off when merging these sentences.  This should probably
be "..support channel binding, or if we're no.." or something similar.

Indeed, something has been eaten when merging these lines.

-#if defined(USE_OPENSSL) && (defined(HAVE_X509_GET_SIGNATURE_NID) || defined(HAVE_X509_GET_SIGNATURE_INFO))
-#define HAVE_PGTLS_GET_PEER_CERTIFICATE_HASH
+#ifdef USE_OPENSSL
extern char *pgtls_get_peer_certificate_hash(PGconn *conn, size_t *len);
#endif
No need for any guard at all now is there?  All supported SSL implementations
have it, and I doubt we'd accept a new one that doesn't (or which can't
implement the function and error out).

Yup. It looks that you are right. A build without SSL is not
complaining once removed in libpq-int.h or libpq-be.h.

-  # Functions introduced in OpenSSL 1.0.2. LibreSSL does not have
-  # SSL_CTX_set_cert_cb().
-  AC_CHECK_FUNCS([X509_get_signature_nid SSL_CTX_set_cert_cb])
+  # LibreSSL does not have SSL_CTX_set_cert_cb().
+  AC_CHECK_FUNCS([SSL_CTX_set_cert_cb])
The comment about when the function was introduced is still interesting and
should remain IMHO.

Okay. Kept as well in meson.build.

The changes to the Windows buildsystem worry me a bit, but they don't move the
goalposts in either direction wrt to LibreSSL on Windows so for the purpose of
this patch we don't need to do more. Longer term we should either make
LibreSSL work on Windows builds, or explicitly not support it on Windows.

Yes, I was wondering what to do about that in the long term. With the
argument that the MSVC scripts may be gone over meson, it is not
really appealing to dig into that.

Something that was missing in 0001 is the bump of OPENSSL_API_COMPAT
in meson.build. This was in 0002.

Please find attached an updated patch only for the removal of 1.0.1.
Thanks for the review.
--
Michael

Attachments:

v2-0001-Remove-support-for-OpenSSL-1.0.1.patchtext/x-diff; charset=us-asciiDownload+37-104
#11Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#10)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 26 May 2023, at 04:08, Michael Paquier <michael@paquier.xyz> wrote:
On Thu, May 25, 2023 at 10:16:27AM +0200, Daniel Gustafsson wrote:

The changes to the Windows buildsystem worry me a bit, but they don't move the
goalposts in either direction wrt to LibreSSL on Windows so for the purpose of
this patch we don't need to do more. Longer term we should either make
LibreSSL work on Windows builds, or explicitly not support it on Windows.

Yes, I was wondering what to do about that in the long term. With the
argument that the MSVC scripts may be gone over meson, it is not
really appealing to dig into that.

Yeah, let's revisit this during the v17 cycle when the future of these scripts
will become clearer.

Something that was missing in 0001 is the bump of OPENSSL_API_COMPAT
in meson.build. This was in 0002.

Please find attached an updated patch only for the removal of 1.0.1.
Thanks for the review.

LGTM.

--
Daniel Gustafsson

#12Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Michael Paquier (#10)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Thu, May 25, 2023 at 7:09 PM Michael Paquier <michael@paquier.xyz> wrote:

Please find attached an updated patch only for the removal of 1.0.1.
Thanks for the review.

Nice! Sorry about the new complications with LibreSSL. :(

-  # Functions introduced in OpenSSL 1.0.2. LibreSSL does not have
+  # Function introduced in OpenSSL 1.0.2. LibreSSL does not have
# SSL_CTX_set_cert_cb().
-  AC_CHECK_FUNCS([X509_get_signature_nid SSL_CTX_set_cert_cb])
+  AC_CHECK_FUNCS([SSL_CTX_set_cert_cb])

Can X509_get_signature_nid be moved to the required section up above?
As it is now, anyone configuring with -Dssl=auto can still pick up a
1.0.1 build, which Meson accepts, and then the build fails downstream.
If we require the function instead, Meson will ignore 1.0.1 (or, for
-Dssl=openssl, complain before we compile).

t/001_ssltests.pl has a reference to 1.0.1 that can probably be
entirely deleted:

# ... (Nor for OpenSSL
# 1.0.1, but that's old enough that accommodating it isn't worth the cost.)

Thanks,
--Jacob

#13Michael Paquier
michael@paquier.xyz
In reply to: Jacob Champion (#12)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Fri, May 26, 2023 at 09:10:17AM -0700, Jacob Champion wrote:

Can X509_get_signature_nid be moved to the required section up above?
As it is now, anyone configuring with -Dssl=auto can still pick up a
1.0.1 build, which Meson accepts, and then the build fails downstream.
If we require the function instead, Meson will ignore 1.0.1 (or, for
-Dssl=openssl, complain before we compile).

Yes, I was wondering a bit if something more should be marked as
required, but just saw more value in removing all references to this
function. Making the build fail straight when setting up things is OK
by me, but I am not convinced that X509_get_signature_nid() would be
the right choice for the job, as it is an OpenSSL artifact originally,
AFAIK.

The same problem exists with OpenSSL 1.0.0 on HEAD when building with
meson? CRYPTO_new_ex_data() and SSL_new() exist there.

t/001_ssltests.pl has a reference to 1.0.1 that can probably be
entirely deleted:

# ... (Nor for OpenSSL
# 1.0.1, but that's old enough that accommodating it isn't worth the cost.)

Not touching that is intentional. It sounded useful to me as an
historic reference for LibreSSL ;)
--
Michael

#14Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#13)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 27 May 2023, at 04:02, Michael Paquier <michael@paquier.xyz> wrote:

Making the build fail straight when setting up things is OK
by me, but I am not convinced that X509_get_signature_nid() would be
the right choice for the job, as it is an OpenSSL artifact originally,
AFAIK.

I think we should avoid the is-defined-in dance and just pull out the version
numbers for comparisons. While it's true that LibreSSL doesn't play well with
OpenSSL versions, they do define their own which can be checked for to
distinguish the libraries.

--
Daniel Gustafsson

#15Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#14)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Fri, Jun 02, 2023 at 10:35:43AM +0200, Daniel Gustafsson wrote:

I think we should avoid the is-defined-in dance and just pull out the version
numbers for comparisons. While it's true that LibreSSL doesn't play well with
OpenSSL versions, they do define their own which can be checked for to
distinguish the libraries.

Agreed. How about tackling that in a separate patch? At this stage,
I would like to not care about ./configure and do it only with meson,
but there is value in reporting the version number in ./configure to
see the version coverage in the buildfarm.
--
Michael

#16Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#15)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 2 Jun 2023, at 23:21, Michael Paquier <michael@paquier.xyz> wrote:

On Fri, Jun 02, 2023 at 10:35:43AM +0200, Daniel Gustafsson wrote:

I think we should avoid the is-defined-in dance and just pull out the version
numbers for comparisons. While it's true that LibreSSL doesn't play well with
OpenSSL versions, they do define their own which can be checked for to
distinguish the libraries.

Agreed. How about tackling that in a separate patch?

Absolutely, let's keep these goalposts in place and deal with that separately.

--
Daniel Gustafsson

#17Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#16)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Fri, Jun 02, 2023 at 11:23:19PM +0200, Daniel Gustafsson wrote:

Absolutely, let's keep these goalposts in place and deal with that separately.

I have not gone back to this part yet, though I plan to do so. As we
are at the beginning of the development cycle, I have applied the
patch to remove support for 1.0.1 for now on HEAD. Let's see what the
buildfarm tells.
--
Michael

#18Thomas Munro
thomas.munro@gmail.com
In reply to: Michael Paquier (#17)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On Mon, Jul 3, 2023 at 4:26 PM Michael Paquier <michael@paquier.xyz> wrote:

I have not gone back to this part yet, though I plan to do so. As we
are at the beginning of the development cycle, I have applied the
patch to remove support for 1.0.1 for now on HEAD. Let's see what the
buildfarm tells.

curculio (OpenBSD 5.9) is failing with "undefined reference to
`X509_get_signature_nid'", but that's OK, Mikael already supplied a
modern OpenBSD system to replace it (schnauzer, which is green) and he
was planning to shut curculio down (see Direct I/O thread where that
came up because its GCC 4.2 compiler doesn't understand our stack
alignment directives; it will also break comprehensively when I push
the nearby all-supported-computers-have-locale_t patch from the
check_strxfrm_bug thread).

#19Daniel Gustafsson
daniel@yesql.se
In reply to: Thomas Munro (#18)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 3 Jul 2023, at 20:40, Thomas Munro <thomas.munro@gmail.com> wrote:

On Mon, Jul 3, 2023 at 4:26 PM Michael Paquier <michael@paquier.xyz> wrote:

I have not gone back to this part yet, though I plan to do so. As we
are at the beginning of the development cycle, I have applied the
patch to remove support for 1.0.1 for now on HEAD. Let's see what the
buildfarm tells.

curculio (OpenBSD 5.9) is failing with "undefined reference to
`X509_get_signature_nid'", but that's OK, Mikael already supplied a
modern OpenBSD system to replace it

Thanks for the report! OpenBSD 5.9 was released in 2016 and is thus well over
5 years EOL, so I agree that it doesn't warrant a code change from us to
support this.

--
Daniel Gustafsson

#20Mikael Kjellström
mikael.kjellstrom@mksoft.nu
In reply to: Daniel Gustafsson (#19)
Re: Cutting support for OpenSSL 1.0.1 and 1.0.2 in 17~?

On 2023-07-03 20:53, Daniel Gustafsson wrote:

curculio (OpenBSD 5.9) is failing with "undefined reference to
`X509_get_signature_nid'", but that's OK, Mikael already supplied a
modern OpenBSD system to replace it

Thanks for the report! OpenBSD 5.9 was released in 2016 and is thus well over
5 years EOL, so I agree that it doesn't warrant a code change from us to
support this.

I have retired curculio now. So it will stop reporting in from now on.

/Mikael

#21Michael Paquier
michael@paquier.xyz
In reply to: Mikael Kjellström (#20)
#22Michael Paquier
michael@paquier.xyz
In reply to: Thomas Munro (#18)
#23Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#22)
#24Julien Rouhaud
rjuju123@gmail.com
In reply to: Michael Paquier (#23)
#25Michael Paquier
michael@paquier.xyz
In reply to: Julien Rouhaud (#24)
#26Thomas Munro
thomas.munro@gmail.com
In reply to: Daniel Gustafsson (#4)
#27Daniel Gustafsson
daniel@yesql.se
In reply to: Thomas Munro (#26)
#28Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#27)
#29Thomas Munro
thomas.munro@gmail.com
In reply to: Michael Paquier (#28)
#30Thomas Munro
thomas.munro@gmail.com
In reply to: Daniel Gustafsson (#27)
#31Tom Lane
tgl@sss.pgh.pa.us
In reply to: Thomas Munro (#30)
#32Thomas Munro
thomas.munro@gmail.com
In reply to: Tom Lane (#31)
#33Daniel Gustafsson
daniel@yesql.se
In reply to: Thomas Munro (#32)
#34Daniel Gustafsson
daniel@yesql.se
In reply to: Daniel Gustafsson (#33)
#35Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Daniel Gustafsson (#33)
#36Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jacob Champion (#35)
#37Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Tom Lane (#36)
#38Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jacob Champion (#37)
#39Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Tom Lane (#38)
#40Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jacob Champion (#39)
#41Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Tom Lane (#40)
#42Daniel Gustafsson
daniel@yesql.se
In reply to: Tom Lane (#38)
#43Daniel Gustafsson
daniel@yesql.se
In reply to: Tom Lane (#36)
#44Andrew Dunstan
andrew@dunslane.net
In reply to: Daniel Gustafsson (#43)
#45Tom Lane
tgl@sss.pgh.pa.us
In reply to: Daniel Gustafsson (#42)
#46Daniel Gustafsson
daniel@yesql.se
In reply to: Andrew Dunstan (#44)
#47Daniel Gustafsson
daniel@yesql.se
In reply to: Tom Lane (#45)
#48Peter Eisentraut
peter_e@gmx.net
In reply to: Thomas Munro (#32)
#49Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#38)
#50Thomas Munro
thomas.munro@gmail.com
In reply to: Peter Eisentraut (#48)
#51Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#48)
#52Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#49)
#53Daniel Gustafsson
daniel@yesql.se
In reply to: Thomas Munro (#50)
#54Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Daniel Gustafsson (#47)
#55Michael Paquier
michael@paquier.xyz
In reply to: Jacob Champion (#54)
#56Mikael Kjellström
mikael.kjellstrom@mksoft.nu
In reply to: Michael Paquier (#55)
#57Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Michael Paquier (#55)
#58Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#55)
#59Daniel Gustafsson
daniel@yesql.se
In reply to: Jacob Champion (#57)
#60Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Daniel Gustafsson (#58)
#61Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#58)
#62Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#61)
#63Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Daniel Gustafsson (#62)
#64Daniel Gustafsson
daniel@yesql.se
In reply to: Jacob Champion (#60)
#65Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Daniel Gustafsson (#64)
#66Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#62)
#67Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#66)
#68Tom Lane
tgl@sss.pgh.pa.us
In reply to: Daniel Gustafsson (#67)
#69Daniel Gustafsson
daniel@yesql.se
In reply to: Tom Lane (#68)
#70Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#69)
#71Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#70)
#72Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#69)
#73Jacob Champion
jacob.champion@enterprisedb.com
In reply to: Peter Eisentraut (#72)
#74Michael Paquier
michael@paquier.xyz
In reply to: Peter Eisentraut (#72)
#75Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#72)
#76Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#75)
#77Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#76)
#78Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#77)
#79Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#78)
#80Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#79)
#81Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#80)
#82Michael Paquier
michael@paquier.xyz
In reply to: Peter Eisentraut (#80)
#83Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#82)
#84Peter Eisentraut
peter_e@gmx.net
In reply to: Michael Paquier (#82)
#85Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#84)
#86Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#85)
#87Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#86)
#88Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#87)
#89Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#88)
#90Daniel Gustafsson
daniel@yesql.se
In reply to: Daniel Gustafsson (#89)
#91Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#90)
#92Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#91)
#93Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#92)
#94Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#93)
#95Daniel Gustafsson
daniel@yesql.se
In reply to: Tom Lane (#94)
#96Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#92)
#97Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#96)
#98Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#97)
#99Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#97)
#100Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#99)
#101Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#100)
#102Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#101)
#103Joe Conway
mail@joeconway.com
In reply to: Daniel Gustafsson (#102)
#104Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Joe Conway (#103)
#105Tom Lane
tgl@sss.pgh.pa.us
In reply to: Joe Conway (#103)
#106Joe Conway
mail@joeconway.com
In reply to: Tom Lane (#105)
#107Daniel Gustafsson
daniel@yesql.se
In reply to: Joe Conway (#106)
#108Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#107)
#109Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#107)
#110Joe Conway
mail@joeconway.com
In reply to: Peter Eisentraut (#109)
#111Michael Paquier
michael@paquier.xyz
In reply to: Joe Conway (#110)
#112Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#111)
#113Michael Paquier
michael@paquier.xyz
In reply to: Daniel Gustafsson (#112)
#114Daniel Gustafsson
daniel@yesql.se
In reply to: Michael Paquier (#113)
#115Daniel Gustafsson
daniel@yesql.se
In reply to: Daniel Gustafsson (#114)
#116Peter Eisentraut
peter_e@gmx.net
In reply to: Daniel Gustafsson (#115)
#117Daniel Gustafsson
daniel@yesql.se
In reply to: Peter Eisentraut (#116)
#118Robins Tharakan
tharakan@gmail.com
In reply to: Daniel Gustafsson (#43)
#119Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robins Tharakan (#118)
#120Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#119)
#121Robins Tharakan
tharakan@gmail.com
In reply to: Michael Paquier (#120)