Revert caching of destination interpolation
Since 'destination' comes from the table in the query, it cannot be cached
across queries! Doh!
--- a/pgsql/create_tables-dovecot-1.2.x.pgsql Sun Apr 15 15:30:16 2012 +0000
+++ b/pgsql/create_tables-dovecot-1.2.x.pgsql Sun Apr 15 17:36:26 2012 +0200
@@ -631,12 +631,11 @@
record recipient_destination;
catchall_cursor refcursor;
recipient varchar(320) := localpart || '@' || the_domain;
- idestination varchar(320) :=
- _interpolate_destination(destination, localpart, the_domain);
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain);
BEGIN
FOR record IN
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM alias
WHERE gid = did
AND address = localpart
@@ -654,7 +653,8 @@
-- or relocated entry and return the identity mapping if that is
-- the case
OPEN catchall_cursor FOR
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM catchall
WHERE gid = did;
FETCH NEXT FROM catchall_cursor INTO recordc;
--- a/pgsql/create_tables.pgsql Sun Apr 15 15:30:16 2012 +0000
+++ b/pgsql/create_tables.pgsql Sun Apr 15 17:36:26 2012 +0200
@@ -609,12 +609,11 @@
record recipient_destination;
catchall_cursor refcursor;
recipient varchar(320) := localpart || '@' || the_domain;
- idestination varchar(320) :=
- _interpolate_destination(destination, localpart, the_domain);
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain);
BEGIN
FOR record IN
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM alias
WHERE gid = did
AND address = localpart
@@ -632,7 +631,8 @@
-- or relocated entry and return the identity mapping if that is
-- the case
OPEN catchall_cursor FOR
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM catchall
WHERE gid = did;
FETCH NEXT FROM catchall_cursor INTO recordc;
--- a/pgsql/update_tables_0.5.x-0.6-dovecot-1.2.x.pgsql Sun Apr 15 15:30:16 2012 +0000
+++ b/pgsql/update_tables_0.5.x-0.6-dovecot-1.2.x.pgsql Sun Apr 15 17:36:26 2012 +0200
@@ -551,12 +551,11 @@
record recipient_destination;
catchall_cursor refcursor;
recipient varchar(320) := localpart || '@' || the_domain;
- idestination varchar(320) :=
- _interpolate_destination(destination, localpart, the_domain);
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain);
BEGIN
FOR record IN
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM alias
WHERE gid = did
AND address = localpart
@@ -574,7 +573,8 @@
-- or relocated entry and return the identity mapping if that is
-- the case
OPEN catchall_cursor FOR
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM catchall
WHERE gid = did;
FETCH NEXT FROM catchall_cursor INTO recordc;
--- a/pgsql/update_tables_0.5.x-0.6.pgsql Sun Apr 15 15:30:16 2012 +0000
+++ b/pgsql/update_tables_0.5.x-0.6.pgsql Sun Apr 15 17:36:26 2012 +0200
@@ -530,12 +530,11 @@
record recipient_destination;
catchall_cursor refcursor;
recipient varchar(320) := localpart || '@' || the_domain;
- idestination varchar(320) :=
- _interpolate_destination(destination, localpart, the_domain);
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain);
BEGIN
FOR record IN
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM alias
WHERE gid = did
AND address = localpart
@@ -553,7 +552,8 @@
-- or relocated entry and return the identity mapping if that is
-- the case
OPEN catchall_cursor FOR
- SELECT recipient, idestination
+ SELECT recipient,
+ _interpolate_destination(destination, localpart, the_domain)
FROM catchall
WHERE gid = did;
FETCH NEXT FROM catchall_cursor INTO recordc;