Why doesn't this pgsql function compile?

Поиск
Список
Период
Сортировка
От Larry Rosenman
Тема Why doesn't this pgsql function compile?
Дата
Msg-id 20010615170950.A3303@lerami.lerctr.org
обсуждение исходный текст
Ответы Re: Why doesn't this pgsql function compile?  (Alex Pilosov <alex@pilosoft.com>)
Список 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.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


В списке pgsql-sql по дате отправления:

Предыдущее
От: Jeff Eckermann
Дата:
Сообщение: RE: search/replace in update
Следующее
От: Alex Pilosov
Дата:
Сообщение: Re: Why doesn't this pgsql function compile?