mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Stop reading uninitialized memory in heap_inplace_lock().
Stop computing a never-used value.  This removes the read; the read had
no functional implications.  Back-patch to v12, like commit
a07e03fd8f.
Reported by Alexander Lakhin.
Discussion: https://postgr.es/m/6c92f59b-f5bc-e58c-9bdd-d1f21c17c786@gmail.com
			
			
This commit is contained in:
		@@ -6229,10 +6229,9 @@ heap_inplace_lock(Relation relation,
 | 
			
		||||
			LockTupleMode lockmode = LockTupleNoKeyExclusive;
 | 
			
		||||
			MultiXactStatus mxact_status = MultiXactStatusNoKeyUpdate;
 | 
			
		||||
			int			remain;
 | 
			
		||||
			bool		current_is_member;
 | 
			
		||||
 | 
			
		||||
			if (DoesMultiXactIdConflict((MultiXactId) xwait, infomask,
 | 
			
		||||
										lockmode, ¤t_is_member))
 | 
			
		||||
										lockmode, NULL))
 | 
			
		||||
			{
 | 
			
		||||
				LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
 | 
			
		||||
				ret = false;
 | 
			
		||||
 
 | 
			
		||||
@@ -63,6 +63,30 @@ step addk2: ALTER TABLE intra_grant_inplace ADD PRIMARY KEY (c); <waiting ...>
 | 
			
		||||
step r3: ROLLBACK;
 | 
			
		||||
step addk2: <... completed>
 | 
			
		||||
 | 
			
		||||
starting permutation: b3 sfnku3 keyshr5 addk2 r3
 | 
			
		||||
step b3: BEGIN ISOLATION LEVEL READ COMMITTED;
 | 
			
		||||
step sfnku3: 
 | 
			
		||||
	SELECT relhasindex FROM pg_class
 | 
			
		||||
	WHERE oid = 'intra_grant_inplace'::regclass FOR NO KEY UPDATE;
 | 
			
		||||
 | 
			
		||||
relhasindex
 | 
			
		||||
-----------
 | 
			
		||||
f          
 | 
			
		||||
(1 row)
 | 
			
		||||
 | 
			
		||||
step keyshr5: 
 | 
			
		||||
	SELECT relhasindex FROM pg_class
 | 
			
		||||
	WHERE oid = 'intra_grant_inplace'::regclass FOR KEY SHARE;
 | 
			
		||||
 | 
			
		||||
relhasindex
 | 
			
		||||
-----------
 | 
			
		||||
f          
 | 
			
		||||
(1 row)
 | 
			
		||||
 | 
			
		||||
step addk2: ALTER TABLE intra_grant_inplace ADD PRIMARY KEY (c); <waiting ...>
 | 
			
		||||
step r3: ROLLBACK;
 | 
			
		||||
step addk2: <... completed>
 | 
			
		||||
 | 
			
		||||
starting permutation: b2 sfnku2 addk2 c2
 | 
			
		||||
step b2: BEGIN;
 | 
			
		||||
step sfnku2: 
 | 
			
		||||
 
 | 
			
		||||
@@ -96,6 +96,14 @@ permutation
 | 
			
		||||
	addk2(r3)
 | 
			
		||||
	r3
 | 
			
		||||
 | 
			
		||||
# reproduce bug in DoesMultiXactIdConflict() call
 | 
			
		||||
permutation
 | 
			
		||||
	b3
 | 
			
		||||
	sfnku3
 | 
			
		||||
	keyshr5
 | 
			
		||||
	addk2(r3)
 | 
			
		||||
	r3
 | 
			
		||||
 | 
			
		||||
# same-xact rowmark
 | 
			
		||||
permutation
 | 
			
		||||
	b2
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user