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: | Raw Message | Whole Thread | 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 |