mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Dump foreign keys on partitioned tables
The patch that ended up as commit 3de241dba86f ("Foreign keys on
partitioned tables") lacked pg_dump tests, so the pg_dump code that was
there to support it inadvertently stopped working when in later
development I modified the backend code not to emit pg_trigger rows for
the partitioned table itself.
Bug analysis and code fix is by Michaël.  I (Álvaro) added the test.
Reported-by: amul sul <sulamul@gmail.com>
Co-authored-by: Michaël Paquier <michael@paquier.xyz>
Co-authored-by: Álvaro Herrera <alvherre@alvh.no-ip.org>
Discussion: https://postgr.es/m/CAAJ_b94n=UsNVhgs97vCaWEZAMe-tGDRVuZ73oePQH=eaJKGSA@mail.gmail.com
			
			
This commit is contained in:
		
							parent
							
								
									42f70cd9c3
								
							
						
					
					
						commit
						93ad00c968
					
				| @ -7140,7 +7140,12 @@ getConstraints(Archive *fout, TableInfo tblinfo[], int numTables) | ||||
| 	{ | ||||
| 		TableInfo  *tbinfo = &tblinfo[i]; | ||||
| 
 | ||||
| 		if (!tbinfo->hastriggers || | ||||
| 		/*
 | ||||
| 		 * For partitioned tables, foreign keys have no triggers so they | ||||
| 		 * must be included anyway in case some foreign keys are defined. | ||||
| 		 */ | ||||
| 		if ((!tbinfo->hastriggers && | ||||
| 			 tbinfo->relkind != RELKIND_PARTITIONED_TABLE) || | ||||
| 			!(tbinfo->dobj.dump & DUMP_COMPONENT_DEFINITION)) | ||||
| 			continue; | ||||
| 
 | ||||
|  | ||||
| @ -631,6 +631,25 @@ my %tests = ( | ||||
| 		}, | ||||
| 	}, | ||||
| 
 | ||||
| 	'ALTER TABLE (partitioned) ADD CONSTRAINT ... FOREIGN KEY' => { | ||||
| 		create_order => 4, | ||||
| 		create_sql   => 'CREATE TABLE dump_test.test_table_fk ( | ||||
| 							col1 int references dump_test.test_table) | ||||
| 							PARTITION BY RANGE (col1); | ||||
| 							CREATE TABLE dump_test.test_table_fk_1 | ||||
| 							PARTITION OF dump_test.test_table_fk | ||||
| 							FOR VALUES FROM (0) TO (10);', | ||||
| 		regexp => qr/ | ||||
| 			\QADD CONSTRAINT test_table_fk_col1_fkey FOREIGN KEY (col1) REFERENCES dump_test.test_table\E | ||||
| 			/xm, | ||||
| 		like => { | ||||
| 			%full_runs, %dump_test_schema_runs, section_post_data => 1, | ||||
| 		}, | ||||
| 		unlike => { | ||||
| 			exclude_dump_test_schema => 1, | ||||
| 		}, | ||||
| 	}, | ||||
| 
 | ||||
| 	'ALTER TABLE ONLY test_table ALTER COLUMN col1 SET STATISTICS 90' => { | ||||
| 		create_order => 93, | ||||
| 		create_sql => | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user