diff options
Diffstat (limited to 'src/pgsql.c')
-rw-r--r-- | src/pgsql.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/pgsql.c b/src/pgsql.c index 2422551..759795e 100644 --- a/src/pgsql.c +++ b/src/pgsql.c @@ -64,17 +64,20 @@ s_pgsql_connect (SCM parmlist, const char *func_name) pgconn = PQsetdbLogin(hostname, port, NULL, NULL, dbname, user, pass); if (PQstatus(pgconn) == CONNECTION_BAD) { - SCM args; + SCM args, pmsg; free(hostname); free(port); free(user); free(pass); - - args = scm_list_2(scm_makfrom0str("Cannot connect to the database"), - scm_makfrom0str(PQerrorMessage(pgconn))); + + pmsg = scm_makfrom0str(PQerrorMessage(pgconn)); + args = scm_list_1(scm_makfrom0str("Cannot connect to the database")); PQfinish(pgconn); - scm_throw(gsql_error, args); + scm_error(gamma_sql_error, func_name, + "~A", + args, + scm_list_2(SCM_BOOL_F, pmsg)); } smob = sql_connect_create("pgsql"); @@ -130,8 +133,10 @@ s_pgsql_query(struct sql_connect *conn, const char *query) res = PQexec(pgconn, query); if (!res) - scm_throw(gsql_error, - scm_list_2(scm_makfrom0str("Error executing PostgreSQL query"), + scm_error(gamma_sql_error, "sql-query", + "~A", + scm_list_1(scm_makfrom0str("Error executing PostgreSQL query")), + scm_list_2(SCM_BOOL_F, scm_makfrom0str(PQerrorMessage(pgconn)))); stat = PQresultStatus(res); @@ -147,8 +152,11 @@ s_pgsql_query(struct sql_connect *conn, const char *query) PQclear(res); break; default: - scm_throw(gsql_error, scm_list_2(scm_makfrom0str("PostgreSQL error"), - scm_makfrom0str(PQresStatus(stat)))); + scm_error(gamma_sql_error, "sql-query", + "~A", + scm_list_1(scm_makfrom0str("PostgreSQL error")), + scm_list_2(scm_from_uint(stat), + scm_from_locale_string(PQresStatus(stat)))); } return cell; |