mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Add interrupt checks to contrib/pg_prewarm.
Currently the extension's pg_prewarm() function didn't check interrupts once it started "warming" data. Since individual calls can take a long while it's important for them to be interruptible. Backpatch to 9.4 where pg_prewarm was introduced.
This commit is contained in:
		@@ -159,6 +159,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
 | 
				
			|||||||
		 */
 | 
							 */
 | 
				
			||||||
		for (block = first_block; block <= last_block; ++block)
 | 
							for (block = first_block; block <= last_block; ++block)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								CHECK_FOR_INTERRUPTS();
 | 
				
			||||||
			PrefetchBuffer(rel, forkNumber, block);
 | 
								PrefetchBuffer(rel, forkNumber, block);
 | 
				
			||||||
			++blocks_done;
 | 
								++blocks_done;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -177,6 +178,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
 | 
				
			|||||||
		 */
 | 
							 */
 | 
				
			||||||
		for (block = first_block; block <= last_block; ++block)
 | 
							for (block = first_block; block <= last_block; ++block)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								CHECK_FOR_INTERRUPTS();
 | 
				
			||||||
			smgrread(rel->rd_smgr, forkNumber, block, blockbuffer);
 | 
								smgrread(rel->rd_smgr, forkNumber, block, blockbuffer);
 | 
				
			||||||
			++blocks_done;
 | 
								++blocks_done;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -190,6 +192,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			Buffer		buf;
 | 
								Buffer		buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								CHECK_FOR_INTERRUPTS();
 | 
				
			||||||
			buf = ReadBufferExtended(rel, forkNumber, block, RBM_NORMAL, NULL);
 | 
								buf = ReadBufferExtended(rel, forkNumber, block, RBM_NORMAL, NULL);
 | 
				
			||||||
			ReleaseBuffer(buf);
 | 
								ReleaseBuffer(buf);
 | 
				
			||||||
			++blocks_done;
 | 
								++blocks_done;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user