Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tUgsb-001xXu-32 for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jan 2025 06:46:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tUgsa-005p3t-FX for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jan 2025 06:46:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tUgsZ-005p1h-GZ for pgsql-hackers@lists.postgresql.org; Mon, 06 Jan 2025 06:46:23 +0000 Received: from mgamail.intel.com ([192.198.163.7]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tUgsV-0006mA-0q for pgsql-hackers@postgresql.org; Mon, 06 Jan 2025 06:46:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1736145979; x=1767681979; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=N4Ich4ZqNxUUnsX7dJHzOilqBGzPFvDc4aECLw6p7CQ=; b=Sy5lci6i/4OZYFxKs0re38N0oURj6gB1SV9YlK8eCTG/u/FzI7ZHxVs0 +EaSgU4Ob4+G0llpkyFKVaH5eAxBDlgklyxgRskTN1KwKMUGghi5gtQ/O CVDq41/Hy82i090WK2FbXIi9I+Y08EDBBVPj5gLI2uOLuYHvAgZHBlBMD uaXUAft+lFAAK/AhvTmkfOiwgxF2CXpBkNz+dFHj01kKH5ct7NVfwLk8R SEQSphozoYnd/moB+MYpvNt4xlfOXeFHMIAZkf1X6ROFl+gh1lkWdirwH VC6RZ7U8Qa+KzZH5y16/mXuVIl5YPvEMU+/P3o/WASRR1LZs3fyYxS9tR A==; X-CSE-ConnectionGUID: 5bvVxhihQnG2gxfv2ngFzw== X-CSE-MsgGUID: 97d8b+F7QlyxiwzwtVxOqQ== X-IronPort-AV: E=McAfee;i="6700,10204,11306"; a="61662668" X-IronPort-AV: E=Sophos;i="6.12,292,1728975600"; d="scan'208";a="61662668" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jan 2025 22:46:15 -0800 X-CSE-ConnectionGUID: IZqhCOvNQ3O/ZnZwdfUIbQ== X-CSE-MsgGUID: QwB+G5rFRPeh3dVSrUZOCQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,224,1728975600"; d="scan'208";a="125639039" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmviesa002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 05 Jan 2025 22:46:15 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44; Sun, 5 Jan 2025 22:46:15 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44 via Frontend Transport; Sun, 5 Jan 2025 22:46:15 -0800 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.42) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Sun, 5 Jan 2025 22:46:14 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k0mBZCG4Lv7gNMQL0LpgZpA1S0OYTQ+Cyvo2ScLMBBiZQyCOxaw3zTD0IUVS49mkr5GB3grqo45a1sXSDGA5NnsDkOJ/3rzdyIAG+vu2uY1dhgE40WuDh9Hg4DMpcm+bRmTFYFvU1+cAP4JWTbK3hLy6GTMLtgEFrbW3295KxIJ+2WCSiOMpV8BNgcGPWy8NlvOnhF/tFXsmL789FobtM5KusR5+IXT4pyOfgzmyNhJbc+bOPWfdsRjpBMjuY5dfRRLkXXFXEgpEfOxdKmBqZ5vMzJhKD61yhOAyKxRTInUu9FdB2yZFRGbDHpOhYbymYextgI+r+4jorvf6XalaIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=l6UZpUly9UEPCrhlr5MW1AIYh5Ufb/Fd4hoEY7qE+aI=; b=ja9jg/E2HT3DlaKNVqX/uv/MFLP3b/985Gf2+865FqOGF25u7B8+6q8xyHxIEXeOP6hnPRNFOwVsAtJxX6qQOrvXa1dydh1Wm/+yOs84hAM3TQWgL++ZQ3N4g5N+m1ZwH05sp5z28tH6JmWBlpc2kRR2ExmIUd/0/JjXuOoB0w9gOYAi8lOjqOf7YS+qDrDeUK4W/+sWZaCqHpkRaYRbYtJZULLZQWMa1eOEDcxxefROSWChnk3ZluoDuA3BjwglL5AGde7wRTebwHVOLEayGYKtLBQrXebgl37Bt431AzN6HX7m02Xk4gvfh29Sw8c/IYvftOPwua68dvOILzV2yQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from PH7PR11MB5796.namprd11.prod.outlook.com (2603:10b6:510:13b::13) by DS0PR11MB8668.namprd11.prod.outlook.com (2603:10b6:8:1b6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8314.13; Mon, 6 Jan 2025 06:46:09 +0000 Received: from PH7PR11MB5796.namprd11.prod.outlook.com ([fe80::3df7:b9c0:960:78fa]) by PH7PR11MB5796.namprd11.prod.outlook.com ([fe80::3df7:b9c0:960:78fa%5]) with mapi id 15.20.8314.015; Mon, 6 Jan 2025 06:46:09 +0000 Message-ID: Date: Mon, 6 Jan 2025 14:46:03 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [RFC] Lock-free XLog Reservation from WAL To: wenhui qiu , Yura Sokolov CC: "pgsql-hackers@postgresql.org" References: <421eede5-0ecf-421f-9b56-f05d4f51e099@postgrespro.ru> Content-Language: en-US From: "Zhou, Zhiguo" In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SGBP274CA0018.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b0::30) To PH7PR11MB5796.namprd11.prod.outlook.com (2603:10b6:510:13b::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR11MB5796:EE_|DS0PR11MB8668:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a79bda9-2257-4b45-5419-08dd2e1dcd5e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UGpEUnd5WXZrT1AzcU1pcExhRVVQbHNXbnhZd21aL3NTSFVvN1JEZkE4djBT?= =?utf-8?B?T2tCbzRMWG9VUGRRbGJZK1Y5UnBCVHZWeWpLMHlaUWcrcVdObzQvVlJnT25Q?= =?utf-8?B?Z3l1MWVYOXQ4U2xkUDFsK2czL1BDQXZqUG42Z3FNVlJoNWROendicjNWMitJ?= =?utf-8?B?UFlKODNlTmhtTjFaNFMvWWZhczFSdWhhWmp0dWJUVDBJTjVIWkRLVFFuOG90?= =?utf-8?B?dG8rWVplSjRRU3hGZXVsY3pZM2cxTnJtTkQrTlRuTlV2N0JCZWhkTHVHdUNk?= =?utf-8?B?NVhIamFNSnp6R014MS9oV0k3SmxEbS9zMkxGYUFqSlNTK3lNazV3d0lSYXNk?= =?utf-8?B?WGlublc4UkdybjdXc2NzQldDOHlLQXZjeFI0RlkwbHpJcFVQekxWNk1DZlMw?= =?utf-8?B?WnBrM0w1NXptRjNqWERtZ1pWVjVFd3dXZDRYUkFYMVExeE1VVlYrTk1GUGZJ?= =?utf-8?B?UkFpQ21xNmhMOG1uQlczck8vWlNIY1hMS0xBcmFjSWl2SUpSUTZVRXZOTm41?= =?utf-8?B?ajdlMnoxczhmZTVpam1maEd0TUdEWFlvejVZVlJRc05NU0lKcHAvWjZhbWpt?= =?utf-8?B?bmJmejJ6UEhxclFnL1ZRekJWeUxxWWg3dkJGSGhjWS9tSUx6dDVvcytReHlY?= =?utf-8?B?emc5ZnBOVmdOSjZKRWdpellPL2Nsb1BpRnhWMzZzN2RXWFFPc3piY1VjUStW?= =?utf-8?B?YjFsMXNTTjVhbmdGa0JFUmcrMU1wSzd5VGRFZHdOS1o4d0taVGFGVjJTdTdS?= =?utf-8?B?SjllMjBsVkhSSXNTa2ZNWXlRK1RlRkovN1pOR1NaQ1dJM3BKR2swOTBzS1FN?= =?utf-8?B?UVN3Y1FCTzJmeU54eE1TR2JobHo0Qm5vSVZlWjhIMXpGZGQwWVZGcUxCWTBv?= =?utf-8?B?bE5lUVB1Zmc4SVhSTnlZYWw1N0pINjJLcFltby9nZHJkZVNRdUtQNjVxMTZz?= =?utf-8?B?NndQK21MUDJ3YTBqUStWRTg1Q015TjY0dWRHdVBoa0twN0pkcGIvUUluc21I?= =?utf-8?B?K3RZb0t5RzBWelo0QVdGTkREM2x3QTBHdGtnSzVRSkxFOVJSd0ZKa2h2bVdB?= =?utf-8?B?VWJsd2xQZnRpUlc2VURreldGS3FTM3poU3JMMVFXeWxGei9Ma1o1dHJqc0cv?= =?utf-8?B?Z3N4d3k0SWR5VkpEb2IySUFUUDNlSnExemRKd1p3QS9CekE4VDhHeklxazI1?= =?utf-8?B?NGR3SnBxbnZRRE1kKzd5ekNsdmwySklHYTBhK01GZnFUL1pXNlk1UDZUZTlM?= =?utf-8?B?QUwxN3JSeCtvVklRbG54R0h5L1VPQVNOUXpPaitEc0J3K2hNZytJMXNYTHRC?= =?utf-8?B?VEpHUHJJVzg1My9zTTcvbGlxOHhoSFJqM1U2azBEeE5hKzlLcGZhbG9SZ0Qv?= =?utf-8?B?eUdIcC9ySitVS3hUeERkclh3OFhmbjQyOHRKWDRtc08xOGdvN1Q4S3BkbFk5?= =?utf-8?B?TFR2NWJzWXhoQzQ1NE94TVJSSGZWaFlDeXBPeW9YY1N1QXovSzFuUGxDZ2c1?= =?utf-8?B?ZVVMa3lYZUxPV24ydGRGdEhjSEo0NHNrTTRLYkhROWNsaHJKZ3BSaWF1SG5R?= =?utf-8?B?MWRWZnB6OWJvWU9YWW4rNk91V1NrdHVueWtvRDg0NU1jcGtYbithejgzU3Jv?= =?utf-8?B?NGFzM1NrUEEwdlRCUlZhTVVHeFh5UDMvMFFjd25wSytTeW5RYmRCSWEzc2h0?= =?utf-8?B?RjdzRFpsT3hiVDBmUTFxVDZVL1JRRlV6VU03VXFEc1VRVmh6Y0lhRUhSMUVX?= =?utf-8?B?MGkwSlZieGhGM0ZpSjU5bk5QbjUrL3d3RW9QWXYza2dmRXgzRHQ4eTNTM1A4?= =?utf-8?B?ZnRkRUFvMUlvRldHNkVlUT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5796.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N2tKd0tCVXZWYU1nTHRtMGljM25pclNrTlNKV1VjZUdpNEoybVNaRStRV2ty?= =?utf-8?B?Q2JDNmdJVml6VHJEcEVhRHpTWkdlWkN2c0VwZzNEQWkvRFdZN01HaXRyNXc3?= =?utf-8?B?ZzMxQ1k0ZDVJQmJXWWtXdnZNT0R5cWpFaGZPV1pKRURPcVJIYVZzQlhsWFVQ?= =?utf-8?B?b1E4MUJNR0JRTlAyM1RlYmJ2Z1ZQajhNUisvMmZTSVVaaVBCQ3lxZ0dsK3A3?= =?utf-8?B?a3FzUDVFQkxNTTNSSmMrQ1RBOVRsemZOUFpMbDdSWG1BcDRlWGhXNnBXcnlH?= =?utf-8?B?YmdNd2NubkcrLzE1Um0zUXIzZmxvbi9QN2p6VTVGZmtNaUcwbjBNSHZORjJH?= =?utf-8?B?MGcwTXJDRnQ2N1hyRHJCMXBGSjBUeTVYZWZTa1U3bWhXZjkvV01sWHd6R1JE?= =?utf-8?B?QUovTm4yNGdwRE8wK0FGNmpQZElEbURjcWc1ZEo0TnFFVWpRVGJHRHVyZ1Fl?= =?utf-8?B?TkZKSHFKOE5UN3NCTnBUSGRKYmhvbTdJYllPTkVNODRNUFRaLzVzUVJJYkdk?= =?utf-8?B?bFVqT0JzeWNudSthek9QeGRoKzJXbUE1MHZHdng4dGdIckN3eGN4eVJlVU9L?= =?utf-8?B?NlFmVldtcElOdENEVGFHZG1aUVhCcHdyYkVhNkJ0VGVZL05GVjhHOGRmL3BZ?= =?utf-8?B?V2xZRkg0T1g1M0dzTTYvN0wrLzlMWHVHdnhiVzRCWkhkSFB3SVl2OWtxa1FJ?= =?utf-8?B?VlBFZVF5KzFWUFJuZlkrV09Vc0pvUUdiUGhnV2kxbTF3UFBrbHFiYUFYTHlI?= =?utf-8?B?TTREelZ2VitRZkc5TFVpb0pYYnlDNy8wUlBxQkFmaS9UOGhkWE9UMEFRcE85?= =?utf-8?B?Q0ViK2FnTnVkeUl3SjByV0ExYVArWWw3ZW9nSTB0UGxZakhtSWZndlBtdEhQ?= =?utf-8?B?NktvcGZsTlVZV25uUzYwdUVzL3lzbENHam9RWVZNbGZoZzFyaGxybUJ0TitO?= =?utf-8?B?aUpLL1o2RXh3S2thQlltbkJIQ2wwV2JqS2JhM2JSR09yOTBud1lzUnBHVHJv?= =?utf-8?B?SGsxYzg1ZUhFa3lGWWdTdUZ0YVk1dGtLdXlpRy9yelNxNFRuSVdubGcvU25s?= =?utf-8?B?T01IYldYVWZSS0p0aGUyakNJZFNSUkJkWmVTZE4ydEhzM01td25jalBGUE54?= =?utf-8?B?NGtVUXlxeE95K056aXNxeGpNejJiSGJxQTh5dC9LcTBGMXoxN1NMQmg4d0N6?= =?utf-8?B?cDRBY2NobTV3UlpTZGt0THA2QjBRc2s1SEh0Ukd2YVpncUdJM1M0RlJKMFh1?= =?utf-8?B?NEtldHpzQzNSR1lPOEZkNCtwRXQ5YVJwZlZ4STZTOVc1dUpzdnVjL2RucTQz?= =?utf-8?B?SnA2SFdvSkxWbmJtMzlRMlNxc1hIYmxQcTFhd0dVQTg5ZUl4cXBKalZFaGNK?= =?utf-8?B?Y0xRWWZuNmVsYnloaXk0OXREQzVxK1JRZHlqV0plUkRZTTNGRmJoS2lvdVJO?= =?utf-8?B?YVJyaW9uSDFkTUFieURiWDIxOEZKdStzZDBHSlVGWFR2WHJzZmZJN0JxMnlq?= =?utf-8?B?cnUvSmUyM3hyUWNjQVlwZnpnRll3bjdscy85L2hZNHVOcFYrQXo4ZUNPQkZB?= =?utf-8?B?bjREMDJtZXhydE52SjNOZ3VIYjhhOW52em9BY08yNHVnaGRsT0lLbmRQaFIv?= =?utf-8?B?Nzgwcko5WlJJMDRDOGV2SnFiaEZOQ3Zwbk4vQVMydUlkaG1yT2MrY3JmQlNZ?= =?utf-8?B?WEp0WDBDNk40eTJZdGI0WTJvYm5wdkhGKzFtTmpSN09EQVpmWnljYm0vTVJn?= =?utf-8?B?Z1c1QlUwL1dPZWgwY1dGOWU4TXI2dEFrNzhKS2dKVVJzaVk3bnFPSUtxcFpN?= =?utf-8?B?TEZFZnR4a0NRK2NiSm5naEIxcS90ZXkyR1ZTbi9oNzczVUk0aVpIdmx3RVJk?= =?utf-8?B?cS9pRHliS0VPdVlIQS9kZTl4S2F3SjNmUGdsb2UrTk5VS2ZiQXdaMjFXUG9O?= =?utf-8?B?VXEwTjNlbXZFTk42KzJYWkJPckRrSlFaUnY0RUJESnRiZHB5YWd4VVlmN2RW?= =?utf-8?B?ZUxPbGhjS2pNMDBOWEUyRzAwY2Z4K1N2OVVtU1h5QUhNQjZWd08rVmxSeENR?= =?utf-8?B?K2VET3dZaUNGRU9SYk5IQ1FzMkw3N0lRdU1tcy9ZK2dLMjVJWnFjaW5uSmJR?= =?utf-8?Q?afHEs8HqHls+WxrL7gic1nb88?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3a79bda9-2257-4b45-5419-08dd2e1dcd5e X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5796.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2025 06:46:09.3933 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HBpLo0b4+y1vky6Z0sXbXQu+rzGbk7jDkLFzqzMYuK57mIy51cBni0Nwz9HdO8D1DZdFtwONoPtYjzIYkEr9eg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB8668 X-OriginatorOrg: intel.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi Yura and Wenhui, Thanks for kindly reviewing this work! On 1/3/2025 9:01 PM, wenhui qiu wrote: > Hi >     Thank you for your path,NUM_XLOGINSERT_LOCKS increase to 128,I > think it will be challenged,do we make it guc ? > I noticed there have been some discussions (for example, [1] and its responses) about making NUM_XLOGINSERT_LOCKS a GUC, which seems to be a controversial proposal. Given that, we may first focus on the lock-free XLog reservation implementation, and leave the increase of NUM_XLOGINSERT_LOCKS for a future patch, where we would provide more quantitative evidence for the various implementations. WDYT? > On Fri, 3 Jan 2025 at 20:36, Yura Sokolov > wrote: > > Good day, Zhiguo. > > Idea looks great. > > Minor issue: > - you didn't remove use of `insertpos_lck` from `ReserveXLogSwitch`. > > I initially thought it became un-synchronized against > `ReserveXLogInsertLocation`, but looking closer I found it is > synchronized with `WALInsertLockAcquireExclusive`. > Since there are no other `insertpos_lck` usages after your patch, I > don't see why it should exists and be used in `ReserveXLogSwitch`. > > Still I'd prefer to see CAS loop in this place to be consistent with > other non-locking access. And it will allow to get rid of > `WALInsertLockAcquireExclusive`, (though probably it is not a big > issue). > Exactly, it should be safe to remove `insertpos_lck`. And I agree with you on getting rid of `WALInsertLockAcquireExclusive` with CAS loop which should significantly reduce the synchronization cost here especially when we intend to increase NUM_XLOGINSERT_LOCKS. I will try it in the next version of patch. > Major issue: > - `SetPrevRecPtr` and `GetPrevRecPtr` do non-atomic write/read with on > platforms where MAXALIGN != 8 or without native 64 load/store. Branch > with 'memcpy` is rather obvious, but even pointer de-referencing on > "lucky case" is not safe either. > > I have no idea how to fix it at the moment. > Indeed, non-atomic write/read operations can lead to safety issues in some situations. My initial thought is to define a bit near the prev-link to flag the completion of the update. In this way, we could allow non-atomic or even discontinuous write/read operations on the prev-link, while simultaneously guaranteeing its atomicity through atomic operations (as well as memory barriers) on the flag bit. What do you think of this as a viable solution? > Readability issue: > - It would be good to add `Assert(ptr >= upto)` into `GetXLogBuffer`. > I had hard time to recognize `upto` is strictly not in the future. > - Certainly, final version have to have fixed and improved comments. > Many patch's ideas are strictly non-obvious. I had hard time to > recognize patch is not a piece of ... (excuse me for the swear > sentence). Thanks for the suggestion and patience. It's really more readable after inserting the assertion, I will fix it and improve other comments in the following patches. > Indeed, patch is much better than it looks on first sight. > I came with alternative idea yesterday, but looking closer to your > patch > today I see it is superior to mine (if atomic access will be fixed). > > ---- > > regards, > Yura Sokolov aka funny-falcon > > Regards, Zhiguo [1] https://www.postgresql.org/message-id/2266698.1704854297%40sss.pgh.pa.us