Testing Views

Started by Andy Chambersalmost 11 years ago2 messagesgeneral
Jump to latest
#1Andy Chambers
achambers.home@gmail.com

Hello All,

I have a problem for which a view seems like a nice solution. Basically we
want to see all records in some table that are older than 5 days and
haven't yet gone through further processing.

This particular view is probably simple enough that it doesn't require unit
tests but I wonder how people test complex views that depend on the current
date or time. I found a thread on the hackers list [1]http://postgresql.nabble.com/overriding-current-timestamp-td5507701.html that talked about
stubbing pg_catalog.now() but was wondering if any TDD minded developers
had invented anything better since then.

One option I thought of was to just not use views that depend on the
current date or time and instead create a set returning function that takes
the time as a parameter. Would such a function have similar performance
characteristics to an equivalent view?

Cheers,
Andy

[1]: http://postgresql.nabble.com/overriding-current-timestamp-td5507701.html
http://postgresql.nabble.com/overriding-current-timestamp-td5507701.html

#2Gavin Flower
GavinFlower@archidevsys.co.nz
In reply to: Andy Chambers (#1)
Re: Testing Views

On 20/05/15 19:47, Andy Chambers wrote:

Hello All,

I have a problem for which a view seems like a nice solution.
Basically we want to see all records in some table that are older than
5 days and haven't yet gone through further processing.

This particular view is probably simple enough that it doesn't require
unit tests but I wonder how people test complex views that depend on
the current date or time. I found a thread on the hackers list [1]
that talked about stubbing pg_catalog.now() but was wondering if any
TDD minded developers had invented anything better since then.

One option I thought of was to just not use views that depend on the
current date or time and instead create a set returning function that
takes the time as a parameter. Would such a function have similar
performance characteristics to an equivalent view?

Cheers,
Andy

[1]:
http://postgresql.nabble.com/overriding-current-timestamp-td5507701.html

How about using a 'Time Machine'?

Run the database in a VM and change the date/time. You can take a clone
of the VM, and recreate it multiple times from a known state.

A technique we used to test for Y2K problems, except in those days we
did have Virtual Machines like we have now!

Cheers,
Gavin

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general