mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +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:
22
contrib/basic_archive/sql/basic_archive.sql
Normal file
22
contrib/basic_archive/sql/basic_archive.sql
Normal file
@ -0,0 +1,22 @@
|
||||
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;
|
Reference in New Issue
Block a user