postgres.git / summary / log / commit / refs
commit 9f90b1d08d796a925808b24f77f624a0ff682c77
Author: Peter Eisentraut <peter@eisentraut.org>
Date: Wed Oct 09 19:17:47 2019 +0000
First released in: master (reverted before release)
Reverted by: 50518ec296ae (in 13.0)
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 2a076a3dfd1..fcdbaae37b9 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
@@ -1499,7 +1503,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)
@@ -1523,7 +1527,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;
}
[parent: b8e19b932a99]