pgsql/create_tables.pgsql
branchv0.6.x
changeset 512 821d3ffaaaca
parent 511 0244f1344b04
child 514 d863a44a6353
equal deleted inserted replaced
511:0244f1344b04 512:821d3ffaaaca
   574                AND address = localpart
   574                AND address = localpart
   575             LOOP
   575             LOOP
   576                 RETURN NEXT record;
   576                 RETURN NEXT record;
   577             END LOOP;
   577             END LOOP;
   578         IF NOT FOUND THEN
   578         IF NOT FOUND THEN
       
   579             -- First, we have to check existing mailboxes and
       
   580             -- return identity if one exists
   579             FOR record IN
   581             FOR record IN
   580                 SELECT recipient, destination
   582                 SELECT recipient, recipient as destination
   581                   FROM catchall
   583                   FROM users
   582                  WHERE gid = did
   584                  WHERE gid = did
       
   585                    AND local_part = localpart
       
   586                 UNION SELECT recipient, recipient as destination
       
   587                   FROM relocated
       
   588                  WHERE gid = did
       
   589                    AND address = localpart
   583                 LOOP
   590                 LOOP
   584                     RETURN NEXT record;
   591                     RETURN NEXT record;
   585                 END LOOP;
   592                 END LOOP;
       
   593             -- Only now can we think about catchalls...
       
   594             IF NOT FOUND THEN
       
   595                 FOR record IN
       
   596                     SELECT recipient, destination
       
   597                       FROM catchall
       
   598                     WHERE gid = did
       
   599                     LOOP
       
   600                         RETURN NEXT record;
       
   601                     END LOOP;
       
   602             END IF;
   586         END IF;
   603         END IF;
   587         RETURN;
   604         RETURN;
   588     END;
   605     END;
   589 $$ LANGUAGE plpgsql STABLE
   606 $$ LANGUAGE plpgsql STABLE
   590 RETURNS NULL ON NULL INPUT
   607 RETURNS NULL ON NULL INPUT