0001-Use-libc-version-as-a-collation-version-on-glibc-sys.patch
text/x-patch
Filename: 0001-Use-libc-version-as-a-collation-version-on-glibc-sys.patch
Type: text/x-patch
Part: 0
Message:
Re: Collation versioning
Patch
Format: format-patch
Series: patch 0001
Subject: Use libc version as a collation version on glibc systems.
| File | + | − |
|---|---|---|
| src/backend/utils/adt/pg_locale.c | 12 | 2 |
From 79ec43cd69e82867f479e4df7e87789f89525826 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 4 Oct 2019 00:03:04 +1300
Subject: [PATCH 1/2] Use libc version as a collation version on glibc systems.
Using glibc's version number to detect potential collation definition
changes is not 100% reliable, but it's better than nothing.
Author: Thomas Munro
Reviewed-by: Peter Eisentraut
Discussion: https://postgr.es/m/4b76c6d4-ae5e-0dc6-7d0d-b5c796a07e34%402ndquadrant.com
---
src/backend/utils/adt/pg_locale.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index b2f08ead45..694ff7626e 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -70,6 +70,10 @@
#include <unicode/ucnv.h>
#endif
+#ifdef __GLIBC__
+#include <gnu/libc-version.h>
+#endif
+
#ifdef WIN32
/*
* This Windows file defines StrNCpy. We don't need it here, so we undefine
@@ -1518,7 +1522,7 @@ pg_newlocale_from_collation(Oid collid)
char *
get_collation_actual_version(char collprovider, const char *collcollate)
{
- char *collversion;
+ char *collversion = NULL;
#ifdef USE_ICU
if (collprovider == COLLPROVIDER_ICU)
@@ -1542,7 +1546,13 @@ get_collation_actual_version(char collprovider, const char *collcollate)
}
else
#endif
- collversion = NULL;
+ if (collprovider == COLLPROVIDER_LIBC)
+ {
+#if defined(__GLIBC__)
+ /* Use the glibc version because we don't have anything better. */
+ collversion = pstrdup(gnu_get_libc_version());
+#endif
+ }
return collversion;
}
--
2.20.1