aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/libpq/fe-exec.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 828f18e1110..5a7c0254dd3 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -982,14 +982,31 @@ pqSaveParameterStatus(PGconn *conn, const char *name, const char *value)
cnt = sscanf(value, "%d.%d.%d", &vmaj, &vmin, &vrev);
- if (cnt < 2)
- conn->sversion = 0; /* unknown */
- else
+ if (cnt == 3)
{
- if (cnt == 2)
- vrev = 0;
+ /* old style, e.g. 9.6.1 */
conn->sversion = (100 * vmaj + vmin) * 100 + vrev;
}
+ else if (cnt == 2)
+ {
+ if (vmaj >= 10)
+ {
+ /* new style, e.g. 10.1 */
+ conn->sversion = 100 * 100 * vmaj + vmin;
+ }
+ else
+ {
+ /* old style without minor version, e.g. 9.6devel */
+ conn->sversion = (100 * vmaj + vmin) * 100;
+ }
+ }
+ else if (cnt == 1)
+ {
+ /* new style without minor version, e.g. 10devel */
+ conn->sversion = 100 * 100 * vmaj;
+ }
+ else
+ conn->sversion = 0; /* unknown */
}
}