Hi,
attached patch adds again 'LIMIT 1' to dlr_pgsql because after Stipe's fix
for #190 we will delete and update to much row in postgresql.
Comments/votes please!
P.S. IMO: this should go into 1.4.1
--
Thanks,
Alex
Index: gw/dlr_pgsql.c
===================================================================
RCS file: /home/cvs/gateway/gw/dlr_pgsql.c,v
retrieving revision 1.4
diff -a -u -p -r1.4 dlr_pgsql.c
--- gw/dlr_pgsql.c 11 Feb 2005 15:35:48 -0000 1.4
+++ gw/dlr_pgsql.c 16 Feb 2005 18:45:06 -0000
@@ -163,7 +163,7 @@ static struct dlr_entry* dlr_pgsql_get(c
Octstr *sql;
List *result, *row;
- sql = octstr_format("SELECT %s, %s, %s, %s, %s, %s FROM %s WHERE %s='%s' AND %s='%s';",
+ sql = octstr_format("SELECT %s, %s, %s, %s, %s, %s FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1;",
octstr_get_cstr(fields->field_mask), octstr_get_cstr(fields->field_serv),
octstr_get_cstr(fields->field_url), octstr_get_cstr(fields->field_src),
octstr_get_cstr(fields->field_dst), octstr_get_cstr(fields->field_boxc),
@@ -215,8 +215,9 @@ static void dlr_pgsql_remove(const Octst
Octstr *sql;
debug("dlr.pgsql", 0, "removing DLR from database");
- sql = octstr_format("DELETE FROM %s WHERE %s='%s' AND %s='%s';",
- octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_smsc),
+ sql = octstr_format("DELETE FROM %s WHERE oid = (SELECT oid FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1);",
+ octstr_get_cstr(fields->table), octstr_get_cstr(fields->table),
+ octstr_get_cstr(fields->field_smsc),
octstr_get_cstr(smsc), octstr_get_cstr(fields->field_ts), octstr_get_cstr(ts));
@@ -229,9 +230,10 @@ static void dlr_pgsql_update(const Octst
Octstr *sql;
debug("dlr.pgsql", 0, "updating DLR status in database");
- sql = octstr_format("UPDATE %s SET %s=%d WHERE %s='%s' AND %s='%s';",
+ sql = octstr_format("UPDATE %s SET %s=%d WHERE oid = (SELECT oid FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1);",
octstr_get_cstr(fields->table),
octstr_get_cstr(fields->field_status), status,
+ octstr_get_cstr(fields->table),
octstr_get_cstr(fields->field_smsc), octstr_get_cstr(smsc),
octstr_get_cstr(fields->field_ts), octstr_get_cstr(ts));
pgsql_update(sql);