Re: [GENERAL] Querying libpq compile time options
От | Bruce Momjian |
---|---|
Тема | Re: [GENERAL] Querying libpq compile time options |
Дата | |
Msg-id | 200605171612.k4HGClt27757@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: [GENERAL] Querying libpq compile time options (Martijn van Oosterhout <kleptog@svana.org>) |
Ответы |
Re: [GENERAL] Querying libpq compile time options
(Tom Lane <tgl@sss.pgh.pa.us>)
|
Список | pgsql-hackers |
Martijn van Oosterhout wrote: -- Start of PGP signed section. > On Fri, May 12, 2006 at 08:38:07PM -0400, Bruce Momjian wrote: > > Is this like detecting of libpq is SSL-enabled? I see PQgetssl(). Do > > we need to add a libpq function to return true/false for threading? > > Slony requires a threaded libpq, so it could do the test to prevent > > wrong configurations. It would be nice to enabled threading by default, > > but it is like SSL in that not all operating systems support it. > > PQgetssl() doesn't tell you if SSL is supported, it tells you if the > *current connection* is using OpenSSL, which is similar but not the > same. > > There is AFAIK no way to tell if SSL support is compiled in. Part of > the patch I posted for GnuTLS support answered this question also > (PQgettlsinfo()). I thought about this. Attached is a patch you can use to popen("pg_config") and then look for the thread flag to configure. One idea would be to add this sample to our libpq documentation. The problem with the example is popen() overhead, pg_config not in $PATH, or pg_config's version not matching libpq's version. A more comprehensive idea would be to embed the configure string in libpq, like we do for pg_config, and allow that to be returned to the caller so they can do a strstr() to see if a certain flag was used. Having per-configure flag functions, like for threading, seems like it could be a mess because there is a lot more application programmers might care about in addition to threading, like SSL, multi-byte, etc. -- Bruce Momjian http://candle.pha.pa.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + /* * This function queries pg_config to check for specific * configure flags used to build PostgreSQL. It can be * easily modified to return true/false to the caller. * This example tests thread safety. */ #include <stdio.h> #include <string.h> #define PG_CONFIG_CMD "pg_config --configure" /* * pg_config's output should fit in one string because we don't want * the search string to split across reads. */ #define POPEN_READ 8192 int main(int argc, char *argv[]) { FILE *p; char str[POPEN_READ]; if ((p = popen(PG_CONFIG_CMD, "r")) == NULL || fgets(str, POPEN_READ, p) == NULL) { fprintf(stderr, "Cannot run \"%s\", perhaps incorrect $PATH", PG_CONFIG_CMD); if (p) pclose(p); exit(2); } pclose(p); if (strstr(str, "--enable-thread-safety") != NULL) { puts("threading enabled"); return 0; } else { puts("threading not enabled"); return 1; } }
В списке pgsql-hackers по дате отправления:
Предыдущее
От: Tom LaneДата:
Сообщение: Re: Foreign key column reference ordering and information_schema