mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
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
This commit is contained in:
29
contrib/basic_archive/expected/basic_archive.out
Normal file
29
contrib/basic_archive/expected/basic_archive.out
Normal file
@ -0,0 +1,29 @@
|
||||
CREATE TABLE test (a INT);
|
||||
SELECT 1 FROM pg_switch_wal();
|
||||
?column?
|
||||
----------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
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}$';
|
||||
?column?
|
||||
----------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
DROP TABLE test;
|
Reference in New Issue
Block a user