Tempfile : KO on PG10
Closed this issue · 2 comments
Krysztophe commented
15:32 $ pgstat -p10003 -s tempfile
--- size --- --- count ---
pgstat: pgstats: query failed: ERROR: set-returning functions are not allowed in CASE
LINE 1: ...'/'||ls.sub AS dir, CASE gs.i WHEN 1 THEN '' ELSE pg_ls_dir(...
^
HINT: You might be able to move the set-returning function into a LATERAL FROM item.
pgstat: pgstats: query was: SELECT unnest(regexp_matches(agg.tmpfile, 'pgsql_tmp([0-9]*)')) AS pid, SUM((pg_stat_file(agg.dir||'/'||agg.tmpfile)).size), count(*) FROM (SELECT ls.oid, ls.spcname, ls.dir||'/'||ls.sub AS dir, CASE gs.i WHEN 1 THEN '' ELSE pg_ls_dir(dir||'/'||ls.sub) END AS tmpfile FROM (SELECT sr.oid, sr.spcname, 'pg_tblspc/'||sr.oid||'/'||sr.spc_root AS dir, pg_ls_dir('pg_tblspc/'||sr.oid||'/'||sr.spc_root) AS sub FROM (SELECT spc.oid, spc.spcname, pg_ls_dir('pg_tblspc/'||spc.oid) AS spc_root, trim(trailing E'
' FROM pg_read_file('PG_VERSION')) as v FROM (SELECT oid, spcname FROM pg_tablespace WHERE spcname !~ '^pg_') AS spc ) sr WHERE sr.spc_root ~ ('^PG_'||sr.v) UNION ALL SELECT 0, 'pg_default', 'base' AS dir, 'pgsql_tmp' AS sub FROM pg_ls_dir('base') AS l WHERE l='pgsql_tmp' ) AS ls, (SELECT generate_series(1,2) AS i) AS gs WHERE ls.sub = 'pgsql_tmp') agg GROUP BY 1
Works fine on 9.6
gleu commented
This patch should fix this issue. (at least, it works for me :) )
Krysztophe commented
Works for me too, thanks!