Why doesn't this pgsql function compile?

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

Responses

Browse pgsql-sql by date

  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