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 1wJoCc-000Jzk-2S for pgsql-hackers@arkaria.postgresql.org; Mon, 04 May 2026 07:58:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wJoCa-0068OH-1I for pgsql-hackers@arkaria.postgresql.org; Mon, 04 May 2026 07:58:52 +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.96) (envelope-from ) id 1wJoCa-0068O9-0L for pgsql-hackers@lists.postgresql.org; Mon, 04 May 2026 07:58:52 +0000 Received: from mail-qk1-x72e.google.com ([2607:f8b0:4864:20::72e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wJoCX-0000000077H-3QuQ for pgsql-hackers@postgresql.org; Mon, 04 May 2026 07:58:51 +0000 Received: by mail-qk1-x72e.google.com with SMTP id af79cd13be357-8cb5c9ba82bso585621585a.2 for ; Mon, 04 May 2026 00:58:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777881529; cv=none; d=google.com; s=arc-20240605; b=DKwqNGyRjtesKSo63ayvIr8N8F/nmS+Pueqjq0RiHsxtjoqveTvYtccqbceBZth5bp VQQeZ0z2QHmzTafnUzDBCo64SihTyxb2mBIXIfovnewM7ks/54SyUZDrK2duopYdHQw3 2yodsee+1v7LUXG/4FYIfwag2uJlPkBDjhpIKsWwpDWaN3jvQsSDvc5xejU3hROSLg5w vlfGHA3PTikGgv5Jznt42vbdAiOv6mFzM7uw/Kmbar0BvzZXSCTYb/zIS+Y+E3MfJwi9 6cq7xFVgK8YbBwy1Wn3SOae9nEzP3lQzC1t+68kFKkvuhfw8Ajf+83+ABn38jPTLye1D E9EA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=hCt1KZUzSL8n7+Z2hijiCN7/84EeJI/eUfWX9Vdi9PM=; fh=FIa6CnAOcDlblDMIqVQXhn30ONA1aoHzZ0tfczHgg8I=; b=gBckC5gHIrueX1InjrpMc/ojKfaZ+WMZMM+JP7rbiXz7J2h/Sjbp7j/i4izN4TfsbN 5XGyRlSlXjETl9T+SFs+Ga1/Gq+RFkJQOscCaiFQWDjoEiaV5wieZ0JvG5XxmWx306sK u9+Zf6ICgXCt+96U0SWV210tFI1yK5Pos8nRuSZokR1tPyUDf/2zy3fMdca/mBFm/Nuw EAWAjB0SiuKwUKUbWB9qu6pU0eJmZj0yEtxkBDnWfVzLtBfbfVufUNdNN+2dqUojLamp 76+honuBQ7Tyi+XnTqmmuh6dqy4vUphahZU1JsamWqA8NM2cYfya+09kF56KEQm/LDPB PjaQ==; darn=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=1777881529; x=1778486329; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=hCt1KZUzSL8n7+Z2hijiCN7/84EeJI/eUfWX9Vdi9PM=; b=PHN4qMNFCkojIlLSAqqMPeSmlNJLljTd/4CyXeznaFVw7Vijl45aPwhNQeQ942ZUlq zLmzbj+w3CeQUL6VlyY4BERwx2yK/1JN24LMStkaAE6kCoeUBi5tw23fudKgw5SOL+ff bRmmSAKTqP3DS0v0c/2WitfQYqi+00SsZCdgS4Epbdv0QSrJWy8JcdlaiihsjUPAPhm3 mlgaqxSyTpqPt0uZtHeNP1wC009byKeJKAIHju2FO+vsqSKuE1+HAAL54aoRxP1X8yTL Qb2zt73ec/4sG1yEZqZRx0LIDBavl5r0MtIo7rvibBwqx1zvEwX/dqIGcYKekXc0N7vJ ogaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777881529; x=1778486329; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hCt1KZUzSL8n7+Z2hijiCN7/84EeJI/eUfWX9Vdi9PM=; b=NwqPM4TljjNNZbMGYrc7dItDFNEmJ8HTw7UDGBFAtH4NFf6bISkTu1zC+uqN7OjwUB eMa3lGWeTosdTvsKfTwxD0IkxOnON64K5ANH3R2dCcoblmGkc3/B3edpMsr4wOQQ/f2F Gg0IjuE0n7IvbeVcey6XfJOVJBSHnnw11aEfhXUuvcGIHkvZoWkFboeiiulRbJ+QYcHl n/eLSxvsgitgD3I+0tfUgKIipTMuYbQ0Mdb9zpDDDC91K4+7GSkEsiln/PcapEa3DyD8 2nyS9ndKtkVX1coAuDH9MqlIZKxX7zlciO0AdESlk+jlOnEulJq0WIjjWP28L94qVunR SBcg== X-Gm-Message-State: AOJu0YzRXkl5iLYFn5O9g9uOsANvOFW+qPp+dmbboS9Kx7VyxuVzIbc6 qXLdqI6FZwOqLUVA0Pv3oTiDL/DERiNNxBLe/6uvD1sPpyBurNRr4bwFzdtM48xmnLGG4X9BeE8 vm2dsAZe+UX8yEs0j5K9fHRFD4HF+9TsP6nk= X-Gm-Gg: AeBDieve9iRKPzkSq0KHpsGoH7fz/9v2YL22n8kbX0lhBnNON79hgrbGprHgqd8pjeS 13i000Ot/4aYxEa9wdcijWl950k/RyZ6xWlKnm0ZoMbNyxoEXoS/l9/hu88ERuHSW1UPIPe8MBr hJGReHLsaUnzv0aizQj5WjCX9I2vd+8VPIVtgl0XLbvXV+2phLoUAPNqHeB3nu/Kd82a5DFrNpB ag7c/MWsYDsPFr3dDxnVP9vVQYsTbr06BPUkOMp4a5H7wGypdo1AAuo+dKug7loiQdavdoE5jEd gIm0TwkM1tCT/0KbFBpVR96Xi8flCPN7vCqO5PGxiWdK X-Received: by 2002:a05:620a:4481:b0:8cd:8ee1:2eec with SMTP id af79cd13be357-8fd12f8698dmr1278732485a.0.1777881528876; Mon, 04 May 2026 00:58:48 -0700 (PDT) MIME-Version: 1.0 From: Shinya Kato Date: Mon, 4 May 2026 16:58:12 +0900 X-Gm-Features: AVHnY4Lo4G4BV4SaVqZ3Fknw026awhkipC7KmBPVWmbUPQ5geOz5P7n1-0jYMoU Message-ID: Subject: Call EndCopyFrom() after initial table sync in logical replication To: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000fba3300650f94ce4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fba3300650f94ce4 Content-Type: text/plain; charset="UTF-8" Hi hackers, While reading the logical replication initial table sync code, I noticed that copy_table() calls BeginCopyFrom() and CopyFrom() but never calls the matching EndCopyFrom(). EndCopyFrom() calls pgstat_progress_end_command(), which resets st_progress_command to PROGRESS_COMMAND_INVALID. Without that call, the backend status entry continues to report an active COPY operation while the tablesync worker proceeds to WAL catchup. As a result, pg_stat_progress_copy shows a stale entry for the entire WAL catchup phase. Attached patch adds EndCopyFrom(cstate) immediately after CopyFrom(cstate) returns. -- Best regards, Shinya Kato NTT OSS Center --000000000000fba3300650f94ce4 Content-Type: application/octet-stream; name="v1-0001-Call-EndCopyFrom-during-initial-table-sync-in-log.patch" Content-Disposition: attachment; filename="v1-0001-Call-EndCopyFrom-during-initial-table-sync-in-log.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moqwlvot0 RnJvbSAxNGY1MjM2MDFhNDRmODE2ODMzZGQ1ZTRlMGYyMzI2ZWRmNTMzMjc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGlueWEgS2F0byA8c2hpbnlhMTEua2F0b0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjEgQXByIDIwMjYgMTA6Mjk6MDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx XSBDYWxsIEVuZENvcHlGcm9tKCkgZHVyaW5nIGluaXRpYWwgdGFibGUgc3luYyBpbiBsb2dpY2Fs CiByZXBsaWNhdGlvbgoKUHJldmlvdXNseSwgY29weV90YWJsZSgpIGNhbGxlZCBCZWdpbkNvcHlG cm9tKCkgYW5kIENvcHlGcm9tKCkgYnV0Cm9taXR0ZWQgdGhlIG1hdGNoaW5nIEVuZENvcHlGcm9t KCkgY2FsbC4gIFdpdGhvdXQgaXQsIHRoZSBiYWNrZW5kCnN0YXR1cyBlbnRyeSBjb250aW51ZWQg dG8gcmVwb3J0IGFuIGFjdGl2ZSBDT1BZIG9wZXJhdGlvbiB3aGlsZSB0aGUKdGFibGVzeW5jIHdv cmtlciBwcm9jZWVkZWQgdG8gV0FMIGNhdGNodXAsIGNhdXNpbmcgcGdfc3RhdF9wcm9ncmVzc19j b3B5CnRvIHNob3cgYSBzdGFsZSBlbnRyeSBmb3IgdGhlIGVudGlyZSBXQUwgY2F0Y2h1cCBwaGFz ZSwgd2hpY2ggY2FuIGJlCnNpZ25pZmljYW50IGZvciBsYXJnZSB0YWJsZXMuCgpUaGlzIGNvbW1p dCBhZGRzIHRoZSBtaXNzaW5nIEVuZENvcHlGcm9tKCkgY2FsbCwgd2hpY2ggaW52b2tlcwpwZ3N0 YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKSB0byByZXNldCBzdF9wcm9ncmVzc19jb21tYW5kIHRv ClBST0dSRVNTX0NPTU1BTkRfSU5WQUxJRCBhcyBzb29uIGFzIHRoZSBDT1BZIHBoYXNlIGNvbXBs ZXRlcy4KCkF1dGhvcjogU2hpbnlhIEthdG8gPHNoaW55YTExLmthdG9AZ21haWwuY29tPgpSZXZp ZXdlZC1ieToKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8KLS0tCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYwppbmRleCBlYjcxODExNDI5Ny4uYTA0Yjg0ZWJjMWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTIxMCw2ICsxMjEwLDcgQEAgY29weV90 YWJsZShSZWxhdGlvbiByZWwpCiAKIAkvKiBEbyB0aGUgY29weSAqLwogCSh2b2lkKSBDb3B5RnJv bShjc3RhdGUpOworCUVuZENvcHlGcm9tKGNzdGF0ZSk7CiAKIAlsb2dpY2FscmVwX3JlbF9jbG9z ZShyZWxtYXBlbnRyeSwgTm9Mb2NrKTsKIH0KLS0gCjIuNDcuMwoK --000000000000fba3300650f94ce4--