From: | Eric Radman <ericshane(at)eradman(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Global Variables? |
Date: | 2011-10-11 14:06:50 |
Message-ID: | 20111011140650.GA22580@SDF.ORG |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
When writing unit tests it's sometimes useful to stub functions such as
the current date and time
-- define mock functions
CREATE OR REPLACE FUNCTION _now() RETURNS timestamp with time zone AS $$
BEGIN RETURN '2011-10-10 10:00'; END;
$$ LANGUAGE plpgsql;
-- define tables "accounts"
CREATE TABLE accounts (username varchar, expiration timestamp);
-- populate with sample data
COPY accounts FROM '/home/eradman/sample_accounts.txt';
-- define view "expired_accounts"
CREATE OR REPLACE VIEW expired_accounts AS SELECT * FROM accounts WHERE expiration < _now();
-- test views
SELECT assert(0, (SELECT count(*) FROM expired_accounts)::integer);
Is it possible to declare a global variable that can be referenced from
the user-defined function _now()? I'm looking for a means of abstraction
that allows me to avoid issuing CREATE OR REPLACE FUNCTION ... before
each assert()
current_time := '2012-01-01'::timestamp
SELECT assert(5, (SELECT count(*) FROM expired_accounts)::integer);
--
Eric Radman | http://eradman.com
From | Date | Subject | |
---|---|---|---|
Next Message | Alban Hertroys | 2011-10-11 14:26:47 | Re: Global Variables? |
Previous Message | Tom Lane | 2011-10-11 13:41:45 | Re: Should casting to integer produce same result as trunc() |