Files
postgresql/src/test/regress/expected/expressions.out
Peter Eisentraut 540612fa46 Add more tests for EXTRACT of date type
EXTRACT of date type is implemented as a wrapper around EXTRACT of
timestamp, so the code is already tested there.  But the externally
visible behavior of EXTRACT on date is not recorded anywhere.  Since
there is some discussion about reimplementing or refactoring some of
this, add some more explicit tests of EXTRACT on date, similar in
structure to existing EXTRACT tests on other data types.

Discussion: https://www.postgresql.org/message-id/flat/42b73d2d-da12-ba9f-570a-420e0cce19d9@phystech.edu
2020-09-10 14:52:36 +02:00

161 lines
3.8 KiB
Plaintext

--
-- expression evaluation tests that don't fit into a more specific file
--
--
-- Tests for SQLVAlueFunction
--
-- current_date (always matches because of transactional behaviour)
SELECT date(now())::text = current_date::text;
?column?
----------
t
(1 row)
-- current_time / localtime
SELECT now()::timetz::text = current_time::text;
?column?
----------
t
(1 row)
SELECT now()::timetz(4)::text = current_time(4)::text;
?column?
----------
t
(1 row)
SELECT now()::time::text = localtime::text;
?column?
----------
t
(1 row)
SELECT now()::time(3)::text = localtime(3)::text;
?column?
----------
t
(1 row)
-- current_timestamp / localtimestamp (always matches because of transactional behaviour)
SELECT current_timestamp = NOW();
?column?
----------
t
(1 row)
-- precision
SELECT length(current_timestamp::text) >= length(current_timestamp(0)::text);
?column?
----------
t
(1 row)
-- localtimestamp
SELECT now()::timestamp::text = localtimestamp::text;
?column?
----------
t
(1 row)
-- current_role/user/user is tested in rolnames.sql
-- current database / catalog
SELECT current_catalog = current_database();
?column?
----------
t
(1 row)
-- current_schema
SELECT current_schema;
current_schema
----------------
public
(1 row)
SET search_path = 'notme';
SELECT current_schema;
current_schema
----------------
(1 row)
SET search_path = 'pg_catalog';
SELECT current_schema;
current_schema
----------------
pg_catalog
(1 row)
RESET search_path;
--
-- Tests for BETWEEN
--
explain (costs off)
select count(*) from date_tbl
where f1 between '1997-01-01' and '1998-01-01';
QUERY PLAN
-----------------------------------------------------------------------------
Aggregate
-> Seq Scan on date_tbl
Filter: ((f1 >= '01-01-1997'::date) AND (f1 <= '01-01-1998'::date))
(3 rows)
select count(*) from date_tbl
where f1 between '1997-01-01' and '1998-01-01';
count
-------
3
(1 row)
explain (costs off)
select count(*) from date_tbl
where f1 not between '1997-01-01' and '1998-01-01';
QUERY PLAN
--------------------------------------------------------------------------
Aggregate
-> Seq Scan on date_tbl
Filter: ((f1 < '01-01-1997'::date) OR (f1 > '01-01-1998'::date))
(3 rows)
select count(*) from date_tbl
where f1 not between '1997-01-01' and '1998-01-01';
count
-------
13
(1 row)
explain (costs off)
select count(*) from date_tbl
where f1 between symmetric '1997-01-01' and '1998-01-01';
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------
Aggregate
-> Seq Scan on date_tbl
Filter: (((f1 >= '01-01-1997'::date) AND (f1 <= '01-01-1998'::date)) OR ((f1 >= '01-01-1998'::date) AND (f1 <= '01-01-1997'::date)))
(3 rows)
select count(*) from date_tbl
where f1 between symmetric '1997-01-01' and '1998-01-01';
count
-------
3
(1 row)
explain (costs off)
select count(*) from date_tbl
where f1 not between symmetric '1997-01-01' and '1998-01-01';
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------
Aggregate
-> Seq Scan on date_tbl
Filter: (((f1 < '01-01-1997'::date) OR (f1 > '01-01-1998'::date)) AND ((f1 < '01-01-1998'::date) OR (f1 > '01-01-1997'::date)))
(3 rows)
select count(*) from date_tbl
where f1 not between symmetric '1997-01-01' and '1998-01-01';
count
-------
13
(1 row)