mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Assert that pre/post-fix updated tuples are on the same page during replay.
If they were not 'oldtup.t_data' would be dereferenced while set to NULL in case of a full page image for block 0. Do so primarily to silence coverity; but also to make sure this prerequisite isn't changed without adapting the replay routine as that would appear to work in many cases. Andres Freund
This commit is contained in:
		@@ -8115,11 +8115,13 @@ newsame:;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (xlrec->flags & XLOG_HEAP_PREFIX_FROM_OLD)
 | 
						if (xlrec->flags & XLOG_HEAP_PREFIX_FROM_OLD)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							Assert(samepage);
 | 
				
			||||||
		memcpy(&prefixlen, recdata, sizeof(uint16));
 | 
							memcpy(&prefixlen, recdata, sizeof(uint16));
 | 
				
			||||||
		recdata += sizeof(uint16);
 | 
							recdata += sizeof(uint16);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (xlrec->flags & XLOG_HEAP_SUFFIX_FROM_OLD)
 | 
						if (xlrec->flags & XLOG_HEAP_SUFFIX_FROM_OLD)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							Assert(samepage);
 | 
				
			||||||
		memcpy(&suffixlen, recdata, sizeof(uint16));
 | 
							memcpy(&suffixlen, recdata, sizeof(uint16));
 | 
				
			||||||
		recdata += sizeof(uint16);
 | 
							recdata += sizeof(uint16);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user