diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 5b94442238..402f77bd7d 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1,5 +1,5 @@ @@ -892,6 +892,24 @@ The 3.0 protocol will normally be used when communicating with only protocol 2.0. (Protocol 1.0 is obsolete and not supported by libpq.) + + + +PQserverVersionPQserverVersion + + + Returns an integer representing the backend version. + +int PQserverVersion(const PGconn *conn); + +Applications may use this to determine the version of the database server they +are connected to. The number is formed by converting the major, minor, and +revision numbers into two digit numbers and appending them together. For +example, version 7.4.2 will be returned as 70402, and version 8.1 will be +returned as 80100 (leading zeroes are not shown). Zero is returned if the +connection is bad. + + diff --git a/src/interfaces/libpq/blibpqdll.def b/src/interfaces/libpq/blibpqdll.def index eb78e770f8..279d958675 100644 --- a/src/interfaces/libpq/blibpqdll.def +++ b/src/interfaces/libpq/blibpqdll.def @@ -113,6 +113,8 @@ EXPORTS _PQfformat @ 109 _PQexecPrepared @ 110 _PQsendQueryPrepared @ 111 + _PQdsplen @ 112 + _PQserverVersion @ 113 ; Aliases for MS compatible names PQconnectdb = _PQconnectdb @@ -226,3 +228,5 @@ EXPORTS PQfformat = _PQfformat PQexecPrepared = _PQexecPrepared PQsendQueryPrepared = _PQsendQueryPrepared + PQdsplen = _PQdsplen + PQserverVersion = _PQserverVersion diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index ef50381122..e4744854c5 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.278 2004/07/12 14:23:28 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.279 2004/08/11 18:06:01 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2872,6 +2872,16 @@ PQprotocolVersion(const PGconn *conn) return PG_PROTOCOL_MAJOR(conn->pversion); } +int +PQserverVersion(const PGconn *conn) +{ + if (!conn) + return 0; + if (conn->status == CONNECTION_BAD) + return 0; + return conn->sversion; +} + char * PQerrorMessage(const PGconn *conn) { diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h index 7a143888bb..fbd31d01bf 100644 --- a/src/interfaces/libpq/libpq-fe.h +++ b/src/interfaces/libpq/libpq-fe.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.104 2004/03/24 03:44:59 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.105 2004/08/11 18:06:01 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -248,6 +248,7 @@ extern PGTransactionStatusType PQtransactionStatus(const PGconn *conn); extern const char *PQparameterStatus(const PGconn *conn, const char *paramName); extern int PQprotocolVersion(const PGconn *conn); +extern int PQserverVersion(const PGconn *conn); extern char *PQerrorMessage(const PGconn *conn); extern int PQsocket(const PGconn *conn); extern int PQbackendPID(const PGconn *conn); diff --git a/src/interfaces/libpq/libpqddll.def b/src/interfaces/libpq/libpqddll.def index bd2460dffb..7a05da8117 100644 --- a/src/interfaces/libpq/libpqddll.def +++ b/src/interfaces/libpq/libpqddll.def @@ -1,115 +1,117 @@ -; DEF file for MS VC++ -LIBRARY LIBPQD -DESCRIPTION "PostgreSQL Client Library" -EXPORTS - PQconnectdb @ 1 - PQsetdbLogin @ 2 - PQconndefaults @ 3 - PQfinish @ 4 - PQreset @ 5 - PQrequestCancel @ 6 - PQdb @ 7 - PQuser @ 8 - PQpass @ 9 - PQhost @ 10 - PQport @ 11 - PQtty @ 12 - PQoptions @ 13 - PQstatus @ 14 - PQerrorMessage @ 15 - PQsocket @ 16 - PQbackendPID @ 17 - PQtrace @ 18 - PQuntrace @ 19 - PQsetNoticeProcessor @ 20 - PQexec @ 21 - PQnotifies @ 22 - PQsendQuery @ 23 - PQgetResult @ 24 - PQisBusy @ 25 - PQconsumeInput @ 26 - PQgetline @ 27 - PQputline @ 28 - PQgetlineAsync @ 29 - PQputnbytes @ 30 - PQendcopy @ 31 - PQfn @ 32 - PQresultStatus @ 33 - PQntuples @ 34 - PQnfields @ 35 - PQbinaryTuples @ 36 - PQfname @ 37 - PQfnumber @ 38 - PQftype @ 39 - PQfsize @ 40 - PQfmod @ 41 - PQcmdStatus @ 42 - PQoidStatus @ 43 - PQcmdTuples @ 44 - PQgetvalue @ 45 - PQgetlength @ 46 - PQgetisnull @ 47 - PQclear @ 48 - PQmakeEmptyPGresult @ 49 - PQprint @ 50 - PQdisplayTuples @ 51 - PQprintTuples @ 52 - lo_open @ 53 - lo_close @ 54 - lo_read @ 55 - lo_write @ 56 - lo_lseek @ 57 - lo_creat @ 58 - lo_tell @ 59 - lo_unlink @ 60 - lo_import @ 61 - lo_export @ 62 - pgresStatus @ 63 - PQmblen @ 64 - PQresultErrorMessage @ 65 - PQresStatus @ 66 - termPQExpBuffer @ 67 - appendPQExpBufferChar @ 68 - initPQExpBuffer @ 69 - resetPQExpBuffer @ 70 - PQoidValue @ 71 - PQclientEncoding @ 72 - PQenv2encoding @ 73 - appendBinaryPQExpBuffer @ 74 - appendPQExpBufferStr @ 75 - destroyPQExpBuffer @ 76 - createPQExpBuffer @ 77 - PQconninfoFree @ 78 - PQconnectPoll @ 79 - PQconnectStart @ 80 - PQflush @ 81 - PQisnonblocking @ 82 - PQresetPoll @ 83 - PQresetStart @ 84 - PQsetClientEncoding @ 85 - PQsetnonblocking @ 86 - PQfreeNotify @ 87 - PQescapeString @ 88 - PQescapeBytea @ 89 - printfPQExpBuffer @ 90 - appendPQExpBuffer @ 91 - pg_encoding_to_char @ 92 - pg_utf_mblen @ 93 - PQunescapeBytea @ 94 - PQfreemem @ 95 - PQtransactionStatus @ 96 - PQparameterStatus @ 97 - PQprotocolVersion @ 98 - PQsetErrorVerbosity @ 99 - PQsetNoticeReceiver @ 100 - PQexecParams @ 101 - PQsendQueryParams @ 102 - PQputCopyData @ 103 - PQputCopyEnd @ 104 - PQgetCopyData @ 105 - PQresultErrorField @ 106 - PQftable @ 107 - PQftablecol @ 108 - PQfformat @ 109 - PQexecPrepared @ 110 - PQsendQueryPrepared @ 111 +; DEF file for MS VC++ +LIBRARY LIBPQD +DESCRIPTION "PostgreSQL Client Library" +EXPORTS + PQconnectdb @ 1 + PQsetdbLogin @ 2 + PQconndefaults @ 3 + PQfinish @ 4 + PQreset @ 5 + PQrequestCancel @ 6 + PQdb @ 7 + PQuser @ 8 + PQpass @ 9 + PQhost @ 10 + PQport @ 11 + PQtty @ 12 + PQoptions @ 13 + PQstatus @ 14 + PQerrorMessage @ 15 + PQsocket @ 16 + PQbackendPID @ 17 + PQtrace @ 18 + PQuntrace @ 19 + PQsetNoticeProcessor @ 20 + PQexec @ 21 + PQnotifies @ 22 + PQsendQuery @ 23 + PQgetResult @ 24 + PQisBusy @ 25 + PQconsumeInput @ 26 + PQgetline @ 27 + PQputline @ 28 + PQgetlineAsync @ 29 + PQputnbytes @ 30 + PQendcopy @ 31 + PQfn @ 32 + PQresultStatus @ 33 + PQntuples @ 34 + PQnfields @ 35 + PQbinaryTuples @ 36 + PQfname @ 37 + PQfnumber @ 38 + PQftype @ 39 + PQfsize @ 40 + PQfmod @ 41 + PQcmdStatus @ 42 + PQoidStatus @ 43 + PQcmdTuples @ 44 + PQgetvalue @ 45 + PQgetlength @ 46 + PQgetisnull @ 47 + PQclear @ 48 + PQmakeEmptyPGresult @ 49 + PQprint @ 50 + PQdisplayTuples @ 51 + PQprintTuples @ 52 + lo_open @ 53 + lo_close @ 54 + lo_read @ 55 + lo_write @ 56 + lo_lseek @ 57 + lo_creat @ 58 + lo_tell @ 59 + lo_unlink @ 60 + lo_import @ 61 + lo_export @ 62 + pgresStatus @ 63 + PQmblen @ 64 + PQresultErrorMessage @ 65 + PQresStatus @ 66 + termPQExpBuffer @ 67 + appendPQExpBufferChar @ 68 + initPQExpBuffer @ 69 + resetPQExpBuffer @ 70 + PQoidValue @ 71 + PQclientEncoding @ 72 + PQenv2encoding @ 73 + appendBinaryPQExpBuffer @ 74 + appendPQExpBufferStr @ 75 + destroyPQExpBuffer @ 76 + createPQExpBuffer @ 77 + PQconninfoFree @ 78 + PQconnectPoll @ 79 + PQconnectStart @ 80 + PQflush @ 81 + PQisnonblocking @ 82 + PQresetPoll @ 83 + PQresetStart @ 84 + PQsetClientEncoding @ 85 + PQsetnonblocking @ 86 + PQfreeNotify @ 87 + PQescapeString @ 88 + PQescapeBytea @ 89 + printfPQExpBuffer @ 90 + appendPQExpBuffer @ 91 + pg_encoding_to_char @ 92 + pg_utf_mblen @ 93 + PQunescapeBytea @ 94 + PQfreemem @ 95 + PQtransactionStatus @ 96 + PQparameterStatus @ 97 + PQprotocolVersion @ 98 + PQsetErrorVerbosity @ 99 + PQsetNoticeReceiver @ 100 + PQexecParams @ 101 + PQsendQueryParams @ 102 + PQputCopyData @ 103 + PQputCopyEnd @ 104 + PQgetCopyData @ 105 + PQresultErrorField @ 106 + PQftable @ 107 + PQftablecol @ 108 + PQfformat @ 109 + PQexecPrepared @ 110 + PQsendQueryPrepared @ 111 + PQdsplen @ 112 + PQserverVersion @ 113 diff --git a/src/interfaces/libpq/libpqdll.def b/src/interfaces/libpq/libpqdll.def index 302d299266..2a667c8449 100644 --- a/src/interfaces/libpq/libpqdll.def +++ b/src/interfaces/libpq/libpqdll.def @@ -114,3 +114,4 @@ EXPORTS PQexecPrepared @ 110 PQsendQueryPrepared @ 111 PQdsplen @ 112 + PQserverVersion @ 113