mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
- Move most of the I/O in both libpq and the backend to a set
of common routines in pqcomprim.c (pq communication primitives).
Not all adapted to it yet, but it's a start.
- Rewritten some of those routines, to write/read bigger chunks of
data, precomputing stuff in buffers instead of sending out byte
by byte.
- As a consequence, I need to know the endianness of the machine.
Currently I rely on getting it from machine/endian.h, but this
may not be available everywhere? (Who the hell thought it was
a good idea to pass integers to the backend the other way around
than the normal network byte order? *argl*)
- Libpq looks in the environment for magic variables, and upon
establishing a connection to the backend, sends it queries
of the form "SET var_name TO 'var_value'". This needs a change
in the backend parser (Mr. Parser, are you there? :)
- Currently it looks for two Env-Vars, namely PG_DATEFORMAT
and PG_FLOATFORMAT. What else makes sense? PG_TIMEFORMAT?
PG_TIMEZONE?
From: "Martin J. Laubach" <mjl@wwx.vip.at>
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.24 1997/03/12 21:23:09 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.25 1997/03/18 20:15:39 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -100,6 +100,16 @@ static PQconninfoOption PQconninfoOptions[] = {
|
||||
NULL, NULL, 0 }
|
||||
};
|
||||
|
||||
struct EnvironmentOptions
|
||||
{
|
||||
const char *envName, *pgName;
|
||||
} EnvironmentOptions[] =
|
||||
{
|
||||
{ "PG_DATEFORMAT", "pg_dateformat" },
|
||||
{ "PG_FLOATFORMAT", "pg_floatformat" },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
/* ----------------
|
||||
* PQconnectdb
|
||||
*
|
||||
@@ -514,6 +524,24 @@ connectDB(PGconn *conn)
|
||||
|
||||
conn->port = port;
|
||||
|
||||
{
|
||||
struct EnvironmentOptions *eo;
|
||||
char setQuery[80]; /* mjl: size okay? XXX */
|
||||
|
||||
for(eo = EnvironmentOptions; eo->envName; eo++)
|
||||
{
|
||||
const char *val;
|
||||
|
||||
if(val = getenv(eo->envName))
|
||||
{
|
||||
PGresult *res;
|
||||
|
||||
sprintf(setQuery, "SET %s TO \".60%s\"", eo->pgName, val);
|
||||
res = PQexec(conn, setQuery);
|
||||
PQclear(res); /* Don't care? */
|
||||
}
|
||||
}
|
||||
}
|
||||
return CONNECTION_OK;
|
||||
|
||||
connect_errReturn:
|
||||
|
||||
Reference in New Issue
Block a user