branch: externals/pq commit e9e199879686662182f17e66848d89cb508b65a5 Author: Andreas Seltenreich <andreas+...@ansel.ydns.eu> Commit: Andreas Seltenreich <andreas+...@ansel.ydns.eu>
Handle booleans and fix some NULL handling. --- pq.c | 9 ++++++++- test.el | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pq.c b/pq.c index 40f7158dee..fb3a12be4f 100644 --- a/pq.c +++ b/pq.c @@ -92,13 +92,20 @@ Fpq_connectdb (emacs_env *env, int nargs, emacs_value args[], void *data) static emacs_value pq_getvalue_internal(emacs_env *env, PGresult *res, int row, int column) { + if (PQgetisnull(res, row, column)) + return Qnil; + char *result = PQgetvalue(res, row, column); + if (!result) + return Qnil; switch(PQftype(res, column)) { + case BOOLOID: + return ('t' == *result) ? Qt : Qnil; case INT2OID: case INT4OID: case OIDOID: - return env->make_integer(env, atol(result)); + return env->make_integer(env, atol(result)); case INT8OID: case FLOAT4OID: case FLOAT8OID: diff --git a/test.el b/test.el index 80fc0dab58..cf7e92e6e9 100644 --- a/test.el +++ b/test.el @@ -14,7 +14,7 @@ ;; "'mo''oo\"oo'" (pq:escapeIdentifier con "moo'oo\"oo") ;; "\"moo'oo\"\"oo\"" +(pq:query con "select true, false, NULL, version()") (setq con (pq:connectdb)) -(pq:query con "select version()") (setq con nil) (garbage-collect)