mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	gistendscan() forgot to free so->giststate.
This oversight led to a massive memory leak --- upwards of 10KB per tuple --- during creation-time verification of an exclusion constraint based on a GIST index. In most other scenarios it'd just be a leak of 10KB that would be recovered at end of query, so not too significant; though perhaps the leak would be noticeable in a situation where a GIST index was being used in a nestloop inner indexscan. In any case, it's a real leak of long standing, so patch all supported branches. Per report from Harald Fuchs.
This commit is contained in:
		@@ -242,6 +242,7 @@ gistendscan(PG_FUNCTION_ARGS)
 | 
				
			|||||||
	GISTScanOpaque so = (GISTScanOpaque) scan->opaque;
 | 
						GISTScanOpaque so = (GISTScanOpaque) scan->opaque;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	freeGISTstate(so->giststate);
 | 
						freeGISTstate(so->giststate);
 | 
				
			||||||
 | 
						pfree(so->giststate);
 | 
				
			||||||
	MemoryContextDelete(so->queueCxt);
 | 
						MemoryContextDelete(so->queueCxt);
 | 
				
			||||||
	MemoryContextDelete(so->tempCxt);
 | 
						MemoryContextDelete(so->tempCxt);
 | 
				
			||||||
	pfree(so->tmpTreeItem);
 | 
						pfree(so->tmpTreeItem);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user