mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	> > There is a bug in check_foreign_key of refint.c which is bundled with
> > the standard distribution. It occurs when a trigger calling this > > function recursively fires another trigger which calls the same > > function. The calling check_foreign_key loses its plan informantion and > > when it tries to use it the backend closes its channel. You can check it > > with the sql script I am attaching below. > > The solution to this is to do a find_plan again before executing it at > > line 483 of refint.c. > > Therefore two more lines should be added before line 483: Anand Surelia
This commit is contained in:
		
							parent
							
								
									b7ed6f8512
								
							
						
					
					
						commit
						3abf496b8e
					
				| @ -480,6 +480,8 @@ check_foreign_key() | ||||
| 
 | ||||
| 		relname = args[0]; | ||||
| 
 | ||||
| 		sprintf(ident, "%s$%u", trigger->tgname, rel->rd_id); | ||||
| 		plan = find_plan(ident, &FPlans, &nFPlans); | ||||
| 		ret = SPI_execp(plan->splan[r], kvals, NULL, tcount); | ||||
| 		/* we have no NULLs - so we pass   ^^^^  here */ | ||||
| 
 | ||||
|  | ||||
| @ -281,13 +281,13 @@ catalogs. | ||||
| <variablelist> | ||||
| <varlistentry> | ||||
| <term> | ||||
| rules and views | ||||
| rules | ||||
| <listitem> | ||||
| <para> | ||||
| <application>pg_dump</application>  | ||||
| does not understand user-defined rules and views and | ||||
| does not understand user-defined rules and | ||||
| will fail to dump them properly.  (This is due to the fact that | ||||
| rules are stored as plans in the catalogs and not textually). | ||||
| rules are stored as plans in the catalogs and not textually.) | ||||
| 
 | ||||
| <varlistentry> | ||||
| <term> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user