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.96) (envelope-from ) id 1w9gzf-001efT-39 for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 10:15:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9gzc-007lvl-1R for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 10:15:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9gzc-007lvd-0T for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 10:15:40 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9gza-00000000sjB-0Kwv for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 10:15:40 +0000 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-5a2967e5de4so5046041e87.3 for ; Mon, 06 Apr 2026 03:15:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775470536; cv=none; d=google.com; s=arc-20240605; b=hb2/vFN7SSarRFmgoMmQW4q1tKOqdRNbhn6aJxSevCOMx6oPVtUOHNKWPmw1sTQ5Av rzlNjY3ww7zL33on59kdQqyDLPyJpiaJWvFAYT9aSUzSpJfO6PS0aJf1+5cJrYdpUb27 vWChIHYlI6fgFIU0qsAdgz5hIUfbG5u/LzpU8NCFqKvWKJjxcOsfnLREK0mfrYFizhFg Sq9rNZ0A4JfPl5ts+vQIrpQKBdivIdqBtB3hKHRo5jBPbYJjR0KU691mNhfBb80PpJLK aUcRIXgaPrffpFbHYvwvBu7zFmCqjRVucdmnSBQY90rcJz03OZMiaMWA31ND0lphASXn 1DPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=5flkw1KnrOg3nufPI4sdsEqe+BaFJrWx/pEwNdpVDXA=; fh=2/J4YxRWMVUxXPDtcjNQElN7iAKSjqRGCmY48Ehl/Jc=; b=K3AVESJ5TxhwK7jWTB8CdlEhlXx453rOUsERmqor5Fp/Oq02iu3Z+mk6hERKxm7uIF fJApn8XxVGPzLsBIOG6Xr1OYsOwdDmtJm/5wbPVJDUxvA7myjiW+fatIw9zTFd+hnmCE Tua1qGryS5vKMGWSqeG6LYYSVvhR1kO5zCCUBNnh53/EMhtU/3IyUj4rC5kocaz41Z1d G4QBwtqZPuEbtgXNKp1da5T38QiS85aR+xXMCO3EQsboo0eFDPhXsWcnadtkbxHMLsAW EWWy5Ex/osrmjBjHB1evAS+it54ZgHV4wFpxgi+zI95GDkyiDGUq1MLSxqhHVXHTu0DR g39w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775470536; x=1776075336; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=5flkw1KnrOg3nufPI4sdsEqe+BaFJrWx/pEwNdpVDXA=; b=iv5Txzkil9ekuv794Y4KDGBqWOXwnVvsKHz7KnsEvt9jcrc8Voibwbu1/niKfzrub9 EU5IHZCAlvMlB32o+Aw3X2WWylaAP5RBVwIontwRLWo08wMKH5+m2qRorzZtTU/fLkJx H0C6PY19h6oUk3If0fOtoBrPYdeINWn36u0DzKKAg28D2IB6Qf/0m2nnkpRhiE4S+3EV axvbo+0Kd44HV4hSvry1jubGIelFvef//PfH+Y3Kqtss8uh/PiiVA/Orcnq5Xw3QXHTZ RRPrmJr0yWcR9vyR5t4HgF9bALjP+ZVnqeunDVZKRnwOxXXqRGPNO/mi2mziTELUSx4I Gxog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775470536; x=1776075336; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5flkw1KnrOg3nufPI4sdsEqe+BaFJrWx/pEwNdpVDXA=; b=XNyVGz9aCc42L6Bwd/Ms7P/hj0WJOzk2BzstAE9zZcaO78/N1tvJFdhEf8u643IV6P PytSj4EAIlw994JSlZIfA8P2mzW5T5+zZnI3EphS/7SArizde1SaCIs9fHEC80l1WNlw G5NCOEyFbC8+JcLTdncATG35nkCo844x0zJjfEkUwP/AAYQm+ewxh3F4l3IVWZzTrgHz nBCJlVre+1WmS1PWQ9DKWIez1BE6C7MNwaRwArajaI//jpzSnSM9wTAcIbqE8HGpiboQ /mXO5U0aVU2/Uo+NHVSXPtyy1tBwJSkotnntmpbxngufUkx6KlaGJ7IdcaEt9148h8bd /TvA== X-Forwarded-Encrypted: i=1; AJvYcCVfHHWuUPHdMeVezWRpDnY60AMb1tbIHf7tZX/Ckj/CP7FxEn2/8aRxQCvR2AUm9k4XXlsLwzPau1/s6Cln@lists.postgresql.org X-Gm-Message-State: AOJu0YyLDbuc0LDHlH8pWfe9+Ti/YiTrpveZJacAmTgLanWdy5ZiyJ68 Mow0OSCUnO4LWT5LWQUUftbrAbI2wwsXfs7bcIjKckBK/ikhSlc490kLTaERh5+mHrRhQD2m9pT tyBJD9ZiIBRBY+GERtD4Pdt16C68FGg0= X-Gm-Gg: AeBDietUY/aAiquKgbzPtmhQwc4kNM4bQlSGurqLWu/cFQeyRS34ezZftQZR1+0ig31 AQE+ztUmklimeA4aqGlW+GMneXLM9m+xVyi9eeLZRgT5pGRYcW6QiEzJC1cA2FElwQhMbbnm/yh SI5aR6EdekBuF9lxXvYoamYWfsBnJVHY6AKBD3N4MHDExXjr67VNFY8HqPloDP0uMTfrqrrxjQC htZEJsv1IiGCuit2ujOEydD3s2KA000TFpGxs93pf59Qd7n/IZbmxwcOne1EpUxEhWPR0yWAfyY UeG2Ru9NRqRpPG7EUSe5b+3DiMN2coXIlYasdTg4fKOT3IQ5YFNrVpGoDbfErCaBqt2mdw== X-Received: by 2002:a05:6512:159f:b0:59e:6296:80ef with SMTP id 2adb3069b0e04-5a337515c84mr3631634e87.0.1775470535854; Mon, 06 Apr 2026 03:15:35 -0700 (PDT) MIME-Version: 1.0 References: <202604051852.qfdnfvemfkd2@alvherre.pgsql> <202604052035.il2hp2wze6pz@alvherre.pgsql> In-Reply-To: <202604052035.il2hp2wze6pz@alvherre.pgsql> From: Mihail Nikalayeu Date: Mon, 6 Apr 2026 12:14:57 +0200 X-Gm-Features: AQROBzBkh49wAFLX0DFv3bAhZ_uTV_6djnqUkbFiQ-9ZZRAxVLyYSyGZJa4WBHE Message-ID: Subject: Re: Adding REPACK [concurrently] To: Alvaro Herrera Cc: Antonin Houska , Srinath Reddy Sadipiralla , Amit Kapila , Matthias van de Meent , Pg Hackers , Robert Treat Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hello! On Sun, Apr 5, 2026 at 10:41=E2=80=AFPM Alvaro Herrera wrote: > So here's a v55 version of the base REPACK patches that I'm feeling > comfortable calling very close to committable. Some comments for v55. repack.c:2725 if (!VARATT_IS_EXTERNAL(varlen)) continue; I think it should be VARATT_IS_EXTERNAL_INDIRECT - the same as in pgrepack:= 244. Also, after natt_ext--; I think it worth to add Assert(natt_ext >=3D 0); or Assert(natt_ext =3D=3D 0); but in another place. Or exit early with for (int i =3D 0; i < desc->natts && natt_ext > 0; i++) ---------------------------- repack.c:2587 table_tuple_insert(rel, slot, GetCurrentCommandId(true), HEAP_INSERT_NO_LOGICAL, NULL); More idiomatic to use TABLE_INSERT_NO_LOGICAL instead. ---------------------------- repack.c:2696 ExecForceStoreHeapTuple(tup, slot, false); AFAIU there is a memory leak here. Memory allocated above (for tuple) is not freed in any way, because shouldFree =3D=3D false. Also, ExecClearTuple (tts_virtual_clear for virtual tuples) requires TTS_SHOULDFREE to be set to free anything. ------------------------- grab ShareUpdateExclusiveLock (jsut like VACUUM typo in "just" -------------------------- "If the identity index is not set due to replica identity being, PK" Missing "FULL" after "being"? ------------------------- Commit message: "intial copy" -> "initial copy" "backed performing REPACK" -> "backend performing REPACK" Best regards, Mikhail.