mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Fix failure when a shared tidbitmap has only one page.
Commit 98e6e89040a0534ca26914c66cae9dd49ef62ad9 made inadequate provision for the case of a single-page shared tidbitmap. It allocate space for a shared PagetableEntry, but failed to initialize it. Report by Thomas Munro. Patch by Dilip Kumar, with some comment changes by me. Discussion: http://postgr.es/m/CAEepm=19Cmnfbi-j2Bw-a6yGPeHE1OVhKvvKz9bRBTJGKfGHMA@mail.gmail.com
This commit is contained in:
		
							parent
							
								
									28b0478755
								
							
						
					
					
						commit
						4c3b59abf4
					
				@ -866,12 +866,14 @@ tbm_prepare_shared_iterate(TIDBitmap *tbm)
 | 
			
		||||
		else if (tbm->status == TBM_ONE_PAGE)
 | 
			
		||||
		{
 | 
			
		||||
			/*
 | 
			
		||||
			 * In one page mode allocate the space for one pagetable entry and
 | 
			
		||||
			 * directly store its index i.e. 0 in page array
 | 
			
		||||
			 * In one page mode allocate the space for one pagetable entry,
 | 
			
		||||
			 * initialize it, and directly store its index (i.e. 0) in the
 | 
			
		||||
			 * page array.
 | 
			
		||||
			 */
 | 
			
		||||
			tbm->dsapagetable = dsa_allocate(tbm->dsa, sizeof(PTEntryArray) +
 | 
			
		||||
											 sizeof(PagetableEntry));
 | 
			
		||||
			ptbase = dsa_get_address(tbm->dsa, tbm->dsapagetable);
 | 
			
		||||
			memcpy(ptbase->ptentry, &tbm->entry1, sizeof(PagetableEntry));
 | 
			
		||||
			ptpages->index[0] = 0;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user