Re: PATCH: Postgresql Patch

Guillaume Cottenceau <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Stipe Tolj <st 'at' tolj.org> writes:

> Hillel, can you please revise and update the patch?

AFAIK, the attached patch should work with all versions of pg (at
least since 7.3).


-- 
Guillaume Cottenceau, MNC Mobile News Channel SA, an Alcatel-Lucent Company
Av. de la Gare 10, 1003 Lausanne, Switzerland - direct +41 21 317 50 36
postgresql-oid-is-not-by-default-since-81.patch (text/x-patch, 2.5 KB)
Index: gw/dlr_pgsql.c
===================================================================
RCS file: /home/cvs/gateway/gw/dlr_pgsql.c,v
retrieving revision 1.11
diff -u -r1.11 dlr_pgsql.c
--- gw/dlr_pgsql.c	9 Jan 2008 20:06:56 -0000	1.11
+++ gw/dlr_pgsql.c	23 Jun 2008 15:57:10 -0000
@@ -220,7 +220,7 @@
     Octstr *sql;
 
     debug("dlr.pgsql", 0, "removing DLR from database");
-    sql = octstr_format("DELETE FROM %s WHERE oid = (SELECT oid FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1);",
+    sql = octstr_format("DELETE FROM %s WHERE ctid = (SELECT ctid 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));
@@ -236,7 +236,7 @@
     Octstr *sql;
 
     debug("dlr.pgsql", 0, "updating DLR status in database");
-    sql = octstr_format("UPDATE %s SET %s=%d WHERE oid = (SELECT oid FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1);",
+    sql = octstr_format("UPDATE %s SET %s=%d WHERE ctid = (SELECT ctid 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),
Index: gw/dlr_sdb.c
===================================================================
RCS file: /home/cvs/gateway/gw/dlr_sdb.c,v
retrieving revision 1.14
diff -u -r1.14 dlr_sdb.c
--- gw/dlr_sdb.c	9 Jan 2008 20:06:57 -0000	1.14
+++ gw/dlr_sdb.c	23 Jun 2008 15:57:10 -0000
@@ -281,12 +281,9 @@
         /*
          * Postgres doesn't support limiting delete/update queries,
          * thus we need to use a select subquery.
-         * - notice that for uniqueness use of `oid', postgres suggests
-         * to do vacuum regularly, even if it's virtually impossible
-         * to hit duplicates since oid's are given in a row
          */
-        sql = octstr_format("DELETE FROM %s WHERE oid = \
-                            (SELECT oid FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1)",
+        sql = octstr_format("DELETE FROM %s WHERE ctid = \
+                            (SELECT ctid 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),
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.