add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
select version();
create schema schemaone;
create schema schematwo;

CREATE FUNCTION schemaone.get_pg_stat_activity() RETURNS SETOF pg_stat_activity
LANGUAGE sql SECURITY DEFINER
AS $$ SELECT * FROM pg_catalog.pg_stat_activity; $$;
version
PostgreSQL 14.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit
SELECT 1
CREATE SCHEMA
CREATE SCHEMA
CREATE FUNCTION
--version 10-12
CREATE VIEW schematwo.pg_stat_activity AS
SELECT *
--FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event, state, backend_xid, backend_xmin, query, backend_type, "query (2)", "backend_type (2)");
FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event, state, backend_xid, backend_xmin, query, backend_type)--, "query (2)", "backend_type (2)");
ERROR:  column "query" specified more than once
--version 13
CREATE VIEW schematwo.pg_stat_activity AS
SELECT *
FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event, state, backend_xid, backend_xmin, query, backend_type, "backend_type (2)");
ERROR:  column "backend_type" specified more than once
--version 14-16
CREATE VIEW schematwo.pg_stat_activity AS
SELECT *
FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event, state, backend_xid, backend_xmin, query, backend_type, "query (2)", "backend_type (2)");
CREATE VIEW
select p.ordinal_position,
p.column_name as source_column,
v.column_name as your_alias,
p.column_name=v.column_name as is_equal,
case when v.column_name=p.column_name then 0
when v.column_name=lead(p.column_name,1)over() then 1
when v.column_name=lead(p.column_name,2)over() then 2
else 0 end as name_shifted_by
from ( select p.ordinal_position,
p.column_name
from information_schema.columns p
where table_schema='pg_catalog'
and table_name='pg_stat_activity'
order by p.ordinal_position) p
join ( select v.ordinal_position,
v.column_name
from information_schema.columns v
where table_schema='schematwo'
and table_name='pg_stat_activity'
order by v.ordinal_position) v
on p.ordinal_position=v.ordinal_position;
ordinal_position source_column your_alias is_equal name_shifted_by
1 datid datid t 0
2 datname datname t 0
3 pid pid t 0
4 leader_pid usesysid f 1
5 usesysid usename f 1
6 usename application_name f 1
7 application_name client_addr f 1
8 client_addr client_hostname f 1
9 client_hostname client_port f 1
10 client_port backend_start f 1
11 backend_start xact_start f 1
12 xact_start query_start f 1
13 query_start state_change f 1
14 state_change wait_event_type f 1
15 wait_event_type wait_event f 1
16 wait_event state f 1
17 state backend_xid f 1
18 backend_xid backend_xmin f 1
19 backend_xmin query f 2
20 query_id backend_type f 2
21 query query (2) f 0
22 backend_type backend_type (2) f 0
SELECT 22
CREATE VIEW schematwo.pg_stat_activity2 AS
SELECT
get_pg_stat_activity.datid,
get_pg_stat_activity.datname,
get_pg_stat_activity.pid,
get_pg_stat_activity.usesysid,
get_pg_stat_activity.usename,
get_pg_stat_activity.application_name,
get_pg_stat_activity.client_addr,
get_pg_stat_activity.client_hostname,
get_pg_stat_activity.client_port,
get_pg_stat_activity.backend_start,
get_pg_stat_activity.xact_start,
get_pg_stat_activity.query_start,
get_pg_stat_activity.state_change,
get_pg_stat_activity.wait_event_type,
get_pg_stat_activity.wait_event,
get_pg_stat_activity.state,
get_pg_stat_activity.backend_xid,
get_pg_stat_activity.backend_xmin,
get_pg_stat_activity.query,
get_pg_stat_activity.backend_type
FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(datid, datname, pid, leader_pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event, state, backend_xid, backend_xmin, query_id, query, backend_type);
CREATE VIEW
CREATE VIEW schematwo.pg_stat_activity3 AS
SELECT
get_pg_stat_activity.datid,
get_pg_stat_activity.datname,
get_pg_stat_activity.pid,
get_pg_stat_activity.usesysid,
get_pg_stat_activity.usename,
get_pg_stat_activity.application_name,
get_pg_stat_activity.client_addr,
get_pg_stat_activity.client_hostname,
get_pg_stat_activity.client_port,
get_pg_stat_activity.backend_start,
get_pg_stat_activity.xact_start,
get_pg_stat_activity.query_start,
get_pg_stat_activity.state_change,
get_pg_stat_activity.wait_event_type,
get_pg_stat_activity.wait_event,
get_pg_stat_activity.state,
get_pg_stat_activity.backend_xid,
get_pg_stat_activity.backend_xmin,
get_pg_stat_activity.query,
get_pg_stat_activity.backend_type
FROM schemaone.get_pg_stat_activity() get_pg_stat_activity;
CREATE VIEW
CREATE VIEW schematwo.pg_stat_activity4 AS
SELECT * FROM schemaone.get_pg_stat_activity() get_pg_stat_activity(datid, datname, pid, leader_pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event, state, backend_xid, backend_xmin, query_id, query, backend_type);
CREATE VIEW
CREATE VIEW schematwo.pg_stat_activity5 AS
SELECT * FROM schemaone.get_pg_stat_activity();
CREATE VIEW