Fixed connection parameters.

This commit is contained in:
Federico Di Gregorio 2005-06-13 04:25:09 +00:00
parent 7d2109f979
commit 0c56bc95df
3 changed files with 17 additions and 6 deletions

View File

@ -1,5 +1,8 @@
2005-06-13 Federico Di Gregorio <fog@initd.org> 2005-06-13 Federico Di Gregorio <fog@initd.org>
* psycopg/psycopgmodule.c (psyco_connect): changed the port keyword
parameter type to int (instead of string); this should fix #23.
* psycopg/cursor_type.c (_psyco_curs_execute): now checks for empty queries * psycopg/cursor_type.c (_psyco_curs_execute): now checks for empty queries
and raise a ProgrammingError if appropriate (closes: #24). and raise a ProgrammingError if appropriate (closes: #24).

4
NEWS
View File

@ -3,6 +3,10 @@ What's new in psycopg 2.0 beta 4
* No more segfaults when a UNICODE query can't be converted to the * No more segfaults when a UNICODE query can't be converted to the
backend encoding. backend encoding.
* No more segfaults on empty queries.
* psycopg2.connect() now takes an integer for the port keyword parameter.
What's new in psycopg 2.0 beta 3 What's new in psycopg 2.0 beta 3
-------------------------------- --------------------------------

View File

@ -98,26 +98,30 @@ psyco_connect(PyObject *self, PyObject *args, PyObject *keywds)
{ {
PyObject *conn, *factory = NULL; PyObject *conn, *factory = NULL;
int idsn=-1; int idsn=-1, iport=-1;
char *dsn=NULL, *database=NULL, *user=NULL, *password=NULL; char *dsn=NULL, *database=NULL, *user=NULL, *password=NULL;
char *host=NULL, *port=NULL, *sslmode=NULL; char *host=NULL, *sslmode=NULL;
char port[16];
static char *kwlist[] = {"dsn", "database", "host", "port", static char *kwlist[] = {"dsn", "database", "host", "port",
"user", "password", "sslmode", "user", "password", "sslmode",
"connection_factory", NULL}; "connection_factory", NULL};
if (!PyArg_ParseTupleAndKeywords(args, keywds, "|sssssssO", kwlist, if (!PyArg_ParseTupleAndKeywords(args, keywds, "|sssisssO", kwlist,
&dsn, &database, &host, &port, &dsn, &database, &host, &iport,
&user, &password, &sslmode, &factory)) { &user, &password, &sslmode, &factory)) {
return NULL; return NULL;
} }
if (iport > 0)
snprintf(port, 16, "%d", iport);
if (dsn == NULL) { if (dsn == NULL) {
int l = 36; /* len("dbname= user= password= host= port=\0") */ int l = 36; /* len("dbname= user= password= host= port=\0") */
if (database) l += strlen(database); if (database) l += strlen(database);
if (host) l += strlen(host); if (host) l += strlen(host);
if (port) l += strlen(port); if (iport > 0) l += strlen(port);
if (user) l += strlen(user); if (user) l += strlen(user);
if (password) l += strlen(password); if (password) l += strlen(password);
if (sslmode) l += strlen(sslmode); if (sslmode) l += strlen(sslmode);
@ -133,7 +137,7 @@ psyco_connect(PyObject *self, PyObject *args, PyObject *keywds)
idsn = _psyco_connect_fill_dsn(dsn, " dbname=", database, idsn); idsn = _psyco_connect_fill_dsn(dsn, " dbname=", database, idsn);
if (host) if (host)
idsn = _psyco_connect_fill_dsn(dsn, " host=", host, idsn); idsn = _psyco_connect_fill_dsn(dsn, " host=", host, idsn);
if (port) if (iport > 0)
idsn = _psyco_connect_fill_dsn(dsn, " port=", port, idsn); idsn = _psyco_connect_fill_dsn(dsn, " port=", port, idsn);
if (user) if (user)
idsn = _psyco_connect_fill_dsn(dsn, " user=", user, idsn); idsn = _psyco_connect_fill_dsn(dsn, " user=", user, idsn);