postgresql/contrib/basic_archive/sql/basic_archive.sql
Robert Haas 5ef1eefd76 Allow archiving via loadable modules.
Running a shell command for each file to be archived has a lot of
overhead and may not offer as much error checking as you want, or the
exact semantics that you want. So, offer the option to call a loadable
module for each file to be archived, rather than running a shell command.

Also, add a 'basic_archive' contrib module as an example implementation
that archives to a local directory.

Nathan Bossart, with a little bit of kibitzing by me.

Discussion: http://postgr.es/m/20220202224433.GA1036711@nathanxps13
2022-02-03 14:05:02 -05:00

23 lines
435 B
SQL

CREATE TABLE test (a INT);
SELECT 1 FROM pg_switch_wal();
DO $$
DECLARE
archived bool;
loops int := 0;
BEGIN
LOOP
archived := count(*) > 0 FROM pg_ls_dir('.', false, false) a
WHERE a ~ '^[0-9A-F]{24}$';
IF archived OR loops > 120 * 10 THEN EXIT; END IF;
PERFORM pg_sleep(0.1);
loops := loops + 1;
END LOOP;
END
$$;
SELECT count(*) > 0 FROM pg_ls_dir('.', false, false) a
WHERE a ~ '^[0-9A-F]{24}$';
DROP TABLE test;