| From: | Larry Rosenman <ler(at)lerctr(dot)org> | 
|---|---|
| To: | PostgreSQL SQL List <pgsql-sql(at)postgresql(dot)org> | 
| Subject: | Why doesn't this pgsql function compile? | 
| Date: | 2001-06-15 22:09:50 | 
| Message-ID: | 20010615170950.A3303@lerami.lerctr.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-sql | 
When this PLpgsql function gets called on the trigger
it fails compilation on the last line. 
What am I doing wrong?
DROP TRIGGER netblock_bgp ON networks;
DROP FUNCTION networks_trigger_router();
CREATE FUNCTION networks_trigger_router()
RETURNS opaque
AS 'BEGIN
    IF TG_OP = ''DELETE'' AND OLD.router ISNULL 
    THEN return OLD;
    END IF;
    IF TG_OP = ''INSERT'' AND NEW.router ISNULL
    THEN return NEW;
    END IF;
    IF TG_OP = ''INSERT'' AND get_router_nexthop(NEW.router) ISNULL
    THEN return NEW;
    END IF;
    IF TG_OP = ''DELETE'' AND get_router_nexthop(OLD.router) ISNULL
    THEN return OLD;
    END IF;
    IF TG_OP = ''INSERT'' 
    THEN add_ip_route(host(network(NEW.netblock)),
                      host(netmask(NEW.netblock)),
                      get_router_ethernet(NEW.router),
                      get_router_nexthop(NEW.router),
                      get_router_nexthop_user(NEW.router),
                      get_router_nexthop_password(NEW.router),
                      get_router_nexthop_enpass(NEW,router));
         return NEW;
    END IF;
    IF TG_OP = ''DELETE''
    THEN del_ip_route(host(network(OLD.netblock)),
                      host(netmask(OLD.netblock)),
                      get_router_ethernet(OLD.router),
                      get_router_nexthop(OLD.router),
                      get_router_nexthop_user(OLD.router),
                      get_router_nexthop_password(OLD.router),
                      get_router_nexthop_enpass(OLD,router));
         return OLD;
    -- TG_OP must be UPDATE to get here....
    IF OLD.router NOTNULL and get_router_nexthop(OLD.router) NOTNULL
       AND NEW.router NOTNULL and OLD.router != NEW.router 
    THEN del_ip_route(host(network(OLD.netblock)),
                      host(netmask(OLD.netblock)),
                      get_router_ethernet(OLD.router),
                      get_router_nexthop(OLD.router),
                      get_router_nexthop_user(OLD.router),
                      get_router_nexthop_password(OLD.router),
                      get_router_nexthop_enpass(OLD,router));
     END IF; 
     IF NEW.router NOTNULL and get_router_nexthop(NEW.router) NOTNULL
     THEN add_ip_route(host(network(NEW.netblock)),
                      host(netmask(NEW.netblock)),
                      get_router_ethernet(NEW.router),
                      get_router_nexthop(NEW.router),
                      get_router_nexthop_user(NEW.router),
                      get_router_nexthop_password(NEW.router),
                      get_router_nexthop_enpass(NEW,router));
     END IF;
     return NEW;
    END;'
LANGUAGE 'plpgsql';
CREATE TRIGGER netblock_bgp
BEFORE UPDATE OR INSERT OR DELETE
ON networks
FOR EACH ROW
EXECUTE PROCEDURE networks_trigger_router();
-- 
Larry Rosenman                     http://www.lerctr.org/~ler
Phone: +1 972-414-9812                 E-Mail: ler(at)lerctr(dot)org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alex Pilosov | 2001-06-15 22:27:03 | Re: Why doesn't this pgsql function compile? | 
| Previous Message | Hugh Mandeville | 2001-06-15 21:48:22 | Re: binary data |