diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-03-05 01:53:59 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-03-05 01:53:59 +0000 |
commit | 44611f6e6d2cd11ac2c6dc1f41c13a98ec633f08 (patch) | |
tree | a6386e8e5b42fba514d25f786c6b1a5e4e93764a /src/interfaces/libpq/fe-exec.c | |
parent | d91acf840136f751898378c0ff41d317e993d1a6 (diff) | |
download | postgresql-44611f6e6d2cd11ac2c6dc1f41c13a98ec633f08.tar.gz postgresql-44611f6e6d2cd11ac2c6dc1f41c13a98ec633f08.zip |
libpq's query to get the OIDs of large-object support functions was not
schema-safe. Make it so, and improve the internal support for knowledge
of server version.
Diffstat (limited to 'src/interfaces/libpq/fe-exec.c')
-rw-r--r-- | src/interfaces/libpq/fe-exec.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index eae1b764abb..d2ad75bb23b 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.156 2003/12/28 17:29:41 tgl Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.157 2004/03/05 01:53:59 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -609,12 +609,28 @@ pqSaveParameterStatus(PGconn *conn, const char *name, const char *value) /* * Special hacks: remember client_encoding as a numeric value, and - * remember at least the first few bytes of server version. + * convert server version to a numeric form as well. */ if (strcmp(name, "client_encoding") == 0) conn->client_encoding = pg_char_to_encoding(value); - if (strcmp(name, "server_version") == 0) - StrNCpy(conn->sversion, value, sizeof(conn->sversion)); + else if (strcmp(name, "server_version") == 0) + { + int cnt; + int vmaj, + vmin, + vrev; + + cnt = sscanf(value, "%d.%d.%d", &vmaj, &vmin, &vrev); + + if (cnt < 2) + conn->sversion = 0; /* unknown */ + else + { + if (cnt == 2) + vrev = 0; + conn->sversion = (100 * vmaj + vmin) * 100 + vrev; + } + } } |