Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oll5k-0005o5-BI for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Oct 2022 06:01:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oll5j-0006YU-6C for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Oct 2022 06:01:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oll5i-0006YI-OJ for pgsql-hackers@lists.postgresql.org; Fri, 21 Oct 2022 06:01:10 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oll5e-00086p-M2 for pgsql-hackers@postgresql.org; Fri, 21 Oct 2022 06:01:09 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id BF57F5C00A8; Fri, 21 Oct 2022 02:01:04 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Fri, 21 Oct 2022 02:01:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paquier.xyz; h= cc:cc:content-type:date:date:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to; s=fm3; t=1666332064; x=1666418464; bh=qkm+7R5twJ 8fhk4nwAa0l69dkzGLKgDUwZclfcOiJ9Q=; b=DUmE5PvArewaCr9E2yCy2pz+T2 lh8FzvVdWSDLT6i1s4oozNkck2KhtggzSz6irlfd9zO6wdbRyJjaIIHjX81FPo+v mG1muPWoP/I0dVp6wYljjUtPeFwQGcgopmxaLw02Oy5tP/aMLB7kMrwAWbgbXOHV EaMylt9wi7UdfJuOvHpqdMffp2DECgUYOgRcNQAzWllaCXnUcAz1+Di89pj4hBEm +Y2Xo3gp4KXb3Pg7qS8rlSgHbxsXN5G7hdVAvYqWMUuQaFHZHAWxzcNkP+4JmvFg pUf8Q57xFyhNd2M/2tk1AuL9SbIf1q9zjkmKwrzkbg0XpC3rHvLTqbC8i2YQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1666332064; x=1666418464; bh=qkm+7R5twJ8fhk4nwAa0l69dkzGL KgDUwZclfcOiJ9Q=; b=dpihC4aDtSgapyb0jGaq5mXaZTV88E42mEsxZdeEykiV +VHb8gDpE+07QRpRtr105HtNimQu4u3zayNRBmnNzLiFvROda1OKpHehBE9ZBQcM Zt5zlIavl2BrvNebeUxQQgOF2qLEBbAKMDmYMx1j2HTZ1gNkpfj0YnwUffTq8P4N IYupW6//Ob8GwNuluV9JV+y8sSHrEPsvkoGNoRq2JN7+UBP76BvRXp7eEk2hRVQh 3y/MNmLncCXTw636H0oi4+ST39eJZJdEaKwhAZE8JZSVbFiK+zdRPie4/rC0vnzI 92YCZy5mEO41MN03hlO1Iwdgy1+eM2xANXSFKouScQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeeljedguddtgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enfghrlhcuvffnffculdejtddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreer tddtvdenucfhrhhomhepofhitghhrggvlhcurfgrqhhuihgvrhcuoehmihgthhgrvghlse hprghquhhivghrrdighiiiqeenucggtffrrghtthgvrhhnpeetleeifedufffhhfdtteel geeggeffhfekueevteeigfduudevudetgfegiedvjeenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmihgthhgrvghlsehprghquhhivghrrdig hiii X-ME-Proxy: Feedback-ID: i0fe9450f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 21 Oct 2022 02:01:00 -0400 (EDT) Date: Fri, 21 Oct 2022 15:00:56 +0900 From: Michael Paquier To: Tom Lane Cc: Robert Haas , Maxim Orlov , Thomas Munro , Dilip Kumar , Amit Kapila , Andres Freund , Heikki Linnakangas , pgsql-hackers Subject: Re: making relfilenodes 56 bits Message-ID: References: <339122.1664476784@sss.pgh.pa.us> <506293.1664501018@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="ozkl3bf3qPxYEr1X" Content-Disposition: inline In-Reply-To: <506293.1664501018@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --ozkl3bf3qPxYEr1X Content-Type: multipart/mixed; boundary="eu8/0rNyq1nZNHJa" Content-Disposition: inline --eu8/0rNyq1nZNHJa Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Sep 29, 2022 at 09:23:38PM -0400, Tom Lane wrote: > Hmmm ... I'd tend to do SELECT COUNT(*) FROM. But can't we provide > any actual checks on the sanity of the output? I realize that the > output's far from static, but still ... Honestly, checking all the fields is not that exciting, but the maximum I can think of that would be portable enough is something like the attached. No arithmetic operators for xid limits things a bit, but at least that's something. Thoughts? -- Michael --eu8/0rNyq1nZNHJa Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="controldata-regression-2.patch" Content-Transfer-Encoding: quoted-printable diff --git a/src/test/regress/expected/misc_functions.out b/src/test/regres= s/expected/misc_functions.out index 9f106c2a10..38987e2afc 100644 --- a/src/test/regress/expected/misc_functions.out +++ b/src/test/regress/expected/misc_functions.out @@ -594,3 +594,89 @@ SELECT * FROM tenk1 a JOIN my_gen_series(1,10) g ON a.= unique1 =3D g; Index Cond: (unique1 =3D g.g) (4 rows) =20 +-- +-- Test functions for control data +-- +\x +SELECT checkpoint_lsn > '0/0'::pg_lsn AS checkpoint_lsn, + redo_lsn > '0/0'::pg_lsn AS redo_lsn, + redo_wal_file IS NOT NULL AS redo_wal_file, + timeline_id > 0 AS timeline_id, + prev_timeline_id > 0 AS prev_timeline_id, + next_xid IS NOT NULL AS next_xid, + next_oid > 0 AS next_oid, + next_multixact_id !=3D '0'::xid AS next_multixact_id, + next_multi_offset IS NOT NULL AS next_multi_offset, + oldest_xid !=3D '0'::xid AS oldest_xid, + oldest_xid_dbid > 0 AS oldest_xid_dbid, + oldest_active_xid !=3D '0'::xid AS oldest_active_xid, + oldest_multi_xid !=3D '0'::xid AS oldest_multi_xid, + oldest_multi_dbid > 0 AS oldest_multi_dbid, + oldest_commit_ts_xid IS NOT NULL AS oldest_commit_ts_xid, + newest_commit_ts_xid IS NOT NULL AS newest_commit_ts_xid + FROM pg_control_checkpoint(); +-[ RECORD 1 ]--------+-- +checkpoint_lsn | t +redo_lsn | t +redo_wal_file | t +timeline_id | t +prev_timeline_id | t +next_xid | t +next_oid | t +next_multixact_id | t +next_multi_offset | t +oldest_xid | t +oldest_xid_dbid | t +oldest_active_xid | t +oldest_multi_xid | t +oldest_multi_dbid | t +oldest_commit_ts_xid | t +newest_commit_ts_xid | t + +SELECT max_data_alignment > 0 AS max_data_alignment, + database_block_size > 0 AS database_block_size, + blocks_per_segment > 0 AS blocks_per_segment, + wal_block_size > 0 AS wal_block_size, + max_identifier_length > 0 AS max_identifier_length, + max_index_columns > 0 AS max_index_columns, + max_toast_chunk_size > 0 AS max_toast_chunk_size, + large_object_chunk_size > 0 AS large_object_chunk_size, + float8_pass_by_value IS NOT NULL AS float8_pass_by_value, + data_page_checksum_version >=3D 0 AS data_page_checksum_version + FROM pg_control_init(); +-[ RECORD 1 ]--------------+-- +max_data_alignment | t +database_block_size | t +blocks_per_segment | t +wal_block_size | t +max_identifier_length | t +max_index_columns | t +max_toast_chunk_size | t +large_object_chunk_size | t +float8_pass_by_value | t +data_page_checksum_version | t + +SELECT min_recovery_end_lsn >=3D '0/0'::pg_lsn AS min_recovery_end_lsn, + min_recovery_end_timeline >=3D 0 AS min_recovery_end_timeline, + backup_start_lsn >=3D '0/0'::pg_lsn AS backup_start_lsn, + backup_end_lsn >=3D '0/0'::pg_lsn AS backup_end_lsn, + end_of_backup_record_required IS NOT NULL AS end_of_backup_record_requ= ired + FROM pg_control_recovery(); +-[ RECORD 1 ]-----------------+-- +min_recovery_end_lsn | t +min_recovery_end_timeline | t +backup_start_lsn | t +backup_end_lsn | t +end_of_backup_record_required | t + +SELECT pg_control_version > 0 AS pg_control_version, + catalog_version_no > 0 AS catalog_version_no, + system_identifier >=3D 0 AS system_identifier, + pg_control_last_modified <=3D now() AS pg_control_last_modified + FROM pg_control_system(); +-[ RECORD 1 ]------------+-- +pg_control_version | t +catalog_version_no | t +system_identifier | t +pg_control_last_modified | t + diff --git a/src/test/regress/sql/misc_functions.sql b/src/test/regress/sql= /misc_functions.sql index 639e9b352c..986e07c3a5 100644 --- a/src/test/regress/sql/misc_functions.sql +++ b/src/test/regress/sql/misc_functions.sql @@ -223,3 +223,47 @@ SELECT * FROM tenk1 a JOIN my_gen_series(1,1000) g ON = a.unique1 =3D g; =20 EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN my_gen_series(1,10) g ON a.unique1 =3D g; + +-- +-- Test functions for control data +-- +\x +SELECT checkpoint_lsn > '0/0'::pg_lsn AS checkpoint_lsn, + redo_lsn > '0/0'::pg_lsn AS redo_lsn, + redo_wal_file IS NOT NULL AS redo_wal_file, + timeline_id > 0 AS timeline_id, + prev_timeline_id > 0 AS prev_timeline_id, + next_xid IS NOT NULL AS next_xid, + next_oid > 0 AS next_oid, + next_multixact_id !=3D '0'::xid AS next_multixact_id, + next_multi_offset IS NOT NULL AS next_multi_offset, + oldest_xid !=3D '0'::xid AS oldest_xid, + oldest_xid_dbid > 0 AS oldest_xid_dbid, + oldest_active_xid !=3D '0'::xid AS oldest_active_xid, + oldest_multi_xid !=3D '0'::xid AS oldest_multi_xid, + oldest_multi_dbid > 0 AS oldest_multi_dbid, + oldest_commit_ts_xid IS NOT NULL AS oldest_commit_ts_xid, + newest_commit_ts_xid IS NOT NULL AS newest_commit_ts_xid + FROM pg_control_checkpoint(); +SELECT max_data_alignment > 0 AS max_data_alignment, + database_block_size > 0 AS database_block_size, + blocks_per_segment > 0 AS blocks_per_segment, + wal_block_size > 0 AS wal_block_size, + max_identifier_length > 0 AS max_identifier_length, + max_index_columns > 0 AS max_index_columns, + max_toast_chunk_size > 0 AS max_toast_chunk_size, + large_object_chunk_size > 0 AS large_object_chunk_size, + float8_pass_by_value IS NOT NULL AS float8_pass_by_value, + data_page_checksum_version >=3D 0 AS data_page_checksum_version + FROM pg_control_init(); +SELECT min_recovery_end_lsn >=3D '0/0'::pg_lsn AS min_recovery_end_lsn, + min_recovery_end_timeline >=3D 0 AS min_recovery_end_timeline, + backup_start_lsn >=3D '0/0'::pg_lsn AS backup_start_lsn, + backup_end_lsn >=3D '0/0'::pg_lsn AS backup_end_lsn, + end_of_backup_record_required IS NOT NULL AS end_of_backup_record_requ= ired + FROM pg_control_recovery(); +SELECT pg_control_version > 0 AS pg_control_version, + catalog_version_no > 0 AS catalog_version_no, + system_identifier >=3D 0 AS system_identifier, + pg_control_last_modified <=3D now() AS pg_control_last_modified + FROM pg_control_system(); --eu8/0rNyq1nZNHJa-- --ozkl3bf3qPxYEr1X Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEG72nH6vTowiyblFKnvQgOdbyQH0FAmNSNZgACgkQnvQgOdby QH1eFg/6A8BujTuZqlMuhZFIaMwiuNY6AMzMHv2TSOGblUxno866E/8h597J771x V9deq2s31RIsBhLcC9vaHOVCFha5RmkTGkSPz3L/CHOUpke8WgcjF/dyTLnRbbke /+SfgFy6hcXsY+panuLWl6PQyiW2ajf00SQ3Xx6egY1vpoRt8dewyhKiZoACQJTu hQzNbKbd/Pu3soymOPKsjYqOVRcs34FK6fmvkAQ4MTpmfWMOqf+XqM24dg7yd0Hy vyrlsx3y4Z+3qIEIH+5iiMfUtReZuS3TkOwjEkS1wnoroxBcS+SNH3G3jzZED/Oa 9TfSNbA1GPARCJeroBMBvViNdIocQNX4NtZUwAvpcTmA6VhHAkg2An77/mEjnbV3 jq+bAshcvIv9TqyjnaQTLxKj1HT8b2JLnPBcE1a+XiwLnxdxrhdpTRgisNK8WQgl FNyQE6K5ld6Nuv+g3iSBsv1BpPd6NSkq/7ZjqC7YBEHbj3qhDaRSlEmq9p9PZAZ/ GNNvTL0esnSOltUgd92CQJ3but0qgg01h2I9einDyYvFJy1jo/0HW2orOBNeHLrW lmUy0npUVDvBROJWbGA/Sm+ZLRTzg9hZOGjltMbrUQVgdasJMCmfhgkYyANJ2VtN MHX6j+mjE+vEdWNTG2O6APtivW8jNB7h1px80oPPLkQQmBIXfew= =nC5h -----END PGP SIGNATURE----- --ozkl3bf3qPxYEr1X--