- Notifications
You must be signed in to change notification settings - Fork67
Closed
Labels
Description
При использовании партиционирования на таблице-потомке записи в выборке дублируются.
CREATE OR REPLACEFUNCTIONinheritance_with_pathman() RETURNS SETOFtextAS $$BEGINCREATETABLErecords( idSERIALPRIMARY KEY,timeTIMESTAMPTZNOT NULL, statetext );CREATETABLErecords_open() INHERITS (records);CREATETABLErecords_archive() INHERITS (records); PERFORM create_range_partitions('public.records_archive','time', now(),'1 day'::INTERVAL,1);INSERT INTO records_archive(time, state)VALUES(now(),'archived'); RETURN NEXT (selectcount(*)FROM records_archive); RETURN NEXT (selectcount(*)FROM records);END $$ LANGUAGE'plpgsql';
select inheritance_with_pathman(); inheritance_with_pathman----------------------------------------12
Однако, если использовать только наследование, без партиционирования, то все нормально.
CREATE OR REPLACEFUNCTIONinheritance_without_patman() RETURNS SETOFtextAS $$BEGINCREATETABLErecords( idSERIALPRIMARY KEY,timeTIMESTAMPTZNOT NULL, statetext );CREATETABLErecords_open() INHERITS (records);CREATETABLErecords_archive() INHERITS (records);CREATETABLErecords_archive_old() INHERITS (records_archive);INSERT INTO records_archive_old(time, state)VALUES(now(),'archived'); RETURN NEXT (selectcount(*)FROM records_archive); RETURN NEXT (selectcount(*)FROM records);END $$ LANGUAGE'plpgsql';
select inheritance_without_patman(); inheritance_without_patman----------------------------------------11
Environment
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition --------------------+----------+--------------+----------------+------------+-----------------+-------------- plpgsql | 10 | 11 | f | 1.0 | | pgcrypto | 16388 | 2200 | t | 1.2 | | pg_stat_statements | 16388 | 2200 | t | 1.3 | | pg_pathman | 16388 | 2200 | f | 1.4 | {355267,355278} | {"",""} uuid-ossp | 16388 | 2200 | t | 1.0 | | PostgreSQL 9.5.10 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406, 64-bitget_pathman_lib_version ------------------------- 10409