blob: fe04dd7485ce0b5a33d4c81bdad29a5f30ca00c7 [file] [log] [blame]
-- Test deparsing of window functions
set client_min_messages = 'WARNING';
drop schema if exists window_views cascade;
create schema window_views;
set search_path=window_views;
CREATE TABLE testtab (a int4, b int4);
reset client_min_messages;
create view v1 as
select avg(a) over (partition by b)
from testtab;
select pg_get_viewdef('v1');
pg_get_viewdef
-------------------------------------------------------------
SELECT avg(testtab.a) OVER (PARTITION BY testtab.b) AS avg+
FROM testtab;
(1 row)
create view v2 as
select avg(a) over (order by b)
from testtab;
select pg_get_viewdef('v2');
pg_get_viewdef
---------------------------------------------------------
SELECT avg(testtab.a) OVER (ORDER BY testtab.b) AS avg+
FROM testtab;
(1 row)
create view v3 as
select avg(a) over (partition by a order by b)
from testtab;
select pg_get_viewdef('v3');
pg_get_viewdef
--------------------------------------------------------------------------------
SELECT avg(testtab.a) OVER (PARTITION BY testtab.a ORDER BY testtab.b) AS avg+
FROM testtab;
(1 row)
create view v4 as
select avg(a) over (w)
from testtab window w as ();
select pg_get_viewdef('v4');
pg_get_viewdef
--------------------------------------
SELECT avg(testtab.a) OVER w AS avg+
FROM testtab +
WINDOW w AS ();
(1 row)
create view v5 as
select avg(a) over (w order by b)
from testtab window w as (partition by a);
select pg_get_viewdef('v5');
pg_get_viewdef
-----------------------------------------------------------
SELECT avg(testtab.a) OVER (w ORDER BY testtab.b) AS avg+
FROM testtab +
WINDOW w AS (PARTITION BY testtab.a);
(1 row)
create view v6 as
select avg(a) over (w order by a)
from testtab window w as ();
select pg_get_viewdef('v6');
pg_get_viewdef
-----------------------------------------------------------
SELECT avg(testtab.a) OVER (w ORDER BY testtab.a) AS avg+
FROM testtab +
WINDOW w AS ();
(1 row)
create view v7 as
select avg(a) over (w)
from testtab window w as (order by a);
select pg_get_viewdef('v7');
pg_get_viewdef
--------------------------------------
SELECT avg(testtab.a) OVER w AS avg+
FROM testtab +
WINDOW w AS (ORDER BY testtab.a);
(1 row)
create view v8 as
select avg(a) over (w)
from testtab window w as (order by a rows between unbounded preceding and unbounded following);
select pg_get_viewdef('v8');
pg_get_viewdef
----------------------------------------------------------------------------------------------
SELECT avg(testtab.a) OVER w AS avg +
FROM testtab +
WINDOW w AS (ORDER BY testtab.a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING);
(1 row)
create view v9 as
select avg(a) over (w)
from testtab window w as (order by a rows between 1 preceding and 1 following);
select pg_get_viewdef('v9');
pg_get_viewdef
------------------------------------------------------------------------------
SELECT avg(testtab.a) OVER w AS avg +
FROM testtab +
WINDOW w AS (ORDER BY testtab.a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING);
(1 row)
create view v10 as
select avg(a) over (w rows between 1 preceding and 1 following)
from testtab window w as (order by a);
select pg_get_viewdef('v10');
pg_get_viewdef
---------------------------------------------------------------------------------
SELECT avg(testtab.a) OVER (w ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS avg+
FROM testtab +
WINDOW w AS (ORDER BY testtab.a);
(1 row)
-- Check that COUNT(*) is dumped with the star intact.
create view v_star as
select count(*) over (partition by a)
from testtab;
select pg_get_viewdef('v_star');
pg_get_viewdef
---------------------------------------------------------
SELECT count(*) OVER (PARTITION BY testtab.a) AS count+
FROM testtab;
(1 row)