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.routerISNULL THEN return NEW; END IF; IF TG_OP = ''INSERT'' AND get_router_nexthop(NEW.router) ISNULL THEN
returnNEW; END IF; IF TG_OP = ''DELETE'' AND get_router_nexthop(OLD.router) ISNULL THEN return OLD; END IF;
IFTG_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
NOTNULLand 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@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749