ctidnulltest.sql
application/x-unknown-content-type-sql_auto_file
Filename: ctidnulltest.sql
Type: application/x-unknown-content-type-sql_auto_file
Part: 1
Message:
Re: [SQL] MAX() of 0 records.
CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS
'/usr/local/pgsql/lib/plpgsql.so' LANGUAGE 'C';
CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
HANDLER plpgsql_call_handler
LANCOMPILER 'PL/pgSQL';
CREATE TABLE entry(
entry_id INT4 PRIMARY KEY
);
CREATE TABLE entry_stats
(
entry_id INT4 NOT NULL REFERENCES entry ON DELETE CASCADE,
entry_minprice INT4 NOT NULL DEFAULT 0
);
CREATE FUNCTION init_entry_stats_func() RETURNS OPAQUE AS '
DECLARE
BEGIN
INSERT INTO entry_stats VALUES (NEW.entry_id,0);
RETURN NULL;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER init_entry_stats AFTER INSERT ON entry
FOR EACH ROW EXECUTE PROCEDURE init_entry_stats_func(entry_id);
INSERT INTO entry VALUES (1);
CREATE TABLE item(
item_id INT4 PRIMARY KEY,
item_entry_id INT4 NOT NULL REFERENCES entry ON DELETE NO ACTION,
item_price INT4 NOT NULL,
item_live bool NOT NULL DEFAULT 'n'
);
CREATE FUNCTION setentrystats ()
RETURNS OPAQUE AS '
DECLARE
BEGIN
IF TG_OP=''INSERT'' THEN
UPDATE entry_stats
SET entry_minprice=min(item_price)
FROM item where item_entry_id=NEW.item_entry_id AND item_live=''t'';
END IF;
RETURN NULL;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER updateentryprices AFTER INSERT ON item
FOR EACH ROW EXECUTE PROCEDURE setentrystats();
INSERT INTO item VALUES (1,1,12,'f');
/* Change this last line to "INSERT INTO item VALUES (1,1,12,'t');" and no error is generated */