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 1vSoqy-006EDT-2W for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Dec 2025 03:57:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vSoqw-002dQP-33 for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Dec 2025 03:57:31 +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 1vSoqw-002dQH-26 for pgsql-hackers@lists.postgresql.org; Tue, 09 Dec 2025 03:57:30 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vSoqu-003y7b-2Z for pgsql-hackers@lists.postgresql.org; Tue, 09 Dec 2025 03:57:30 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-640860f97b5so6676774a12.2 for ; Mon, 08 Dec 2025 19:57:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765252647; x=1765857447; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mN/0Lg/1FI7Q/mUx/sk8E3zq1ugBIOMfIeKOnqR2zUg=; b=nQwQ+uHtrjSPpfrH9dGBwXdK0EbvCi0Uktex98Rbapj7pa9tKSrg2esFBPyOoPnXxs v7iFrTumhob+Vp+UqXjtscXBRXWc4/nqQKdlZ6iKMFR73cs89Fjss3a/EKWgNeaO1zaE kqdFoI3jD/ku1iTZyxQ4RZOMbBcq/CtoHE9Ef5hEYlNhZGCMZ6JlWpAh/wd2NwiCvcZe j188Qkaj5W+XTRI3KwzQNbOpJwXKKh1PeuVXAanClxI02dyBxa3KbyPEUPs4+4LNlObK sFK6ZWEO8OE2vmGZ8V0ZpoGrn8qTxpWYjUK9nupFdREUCsm0BRoFUnX2oFR0tgxpVTPz gkkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765252647; x=1765857447; h=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=mN/0Lg/1FI7Q/mUx/sk8E3zq1ugBIOMfIeKOnqR2zUg=; b=UMr4m0Oo6bUFRR9Fc+W4jC34z+P+a6cny1151PLc1h6R61jZUJv1LEvy74YOFfK2VB tHG33NNrxttqPBzSXHacO06c9/qG06v5ows5uduFWD67h1mmObrXB383n9jMd2JsmRSj AVuYgmo+4eIpXY7PPtN8ZOUBYQQSDGQxFmTfhfR1aZkcgqxwgiyMzmN2INYdbLgnUOKW E5ZV2A7TUn32WVsP9CaKoJfgew6k5BMrQJvkjsqcFMFtiiht3fpurXi71i9lDcOpFnA0 HMexoaKYBy3NpVnW/rqvSLif+n7nrkMxovmDJpcuw/slk4FH8GSyylEOYBSEIU9MfOYL Gf3Q== X-Forwarded-Encrypted: i=1; AJvYcCXpoW17o8a2N9aeaR3Xg6Ez9EyQXPifUOTZVKpzwITZyhTr24qahRTSK62203icppZrIlE4vJ8l+wYgNbT2@lists.postgresql.org X-Gm-Message-State: AOJu0Yy829rHtY5+PGaJ8qdAN11Gej0ICdJZ4/eSeelDtygLjtoRZLw1 UqKDcVfSOPhxBsaUBr00CmduY4VHK/3P2rQ36l6N9A2TXF/7Zfk7uZCcjUnMw14msY4gLreZLGy 0IAqi7tbkRgSLTyPHQykF7W/i2Cg4MuA= X-Gm-Gg: ASbGncswHcT+K6p9lvlCp5Bdhge6E9O6UISQjRscBZTTmd7unUven62CzwIGZ8RJXy7 r8CYBMnlRlj84EqwKO60c1ACrL5oa/8F3XHgQDgCrTAuIA1vfV7RYLfyjagxzytWNcqBnbHU90c WwF7ClcGhdCVILN/J2Rdk6yObtq8t7mTMWeUL1Xdh6vua3ZjJZaKaM9AZFvMalFTqW7yQawRrCk bdP7oN+gy6xgHjX0O97iXULWCOa/HEeRsjkXUVJbOQStk1fNnosDOY9CUnkhHY6rydGbgc= X-Google-Smtp-Source: AGHT+IHZULLM5huDxz3wK2FBgK4lCIna3U7cbm31z/OY5Nvy/ikqwO1wnjyXZRmrHy6Zv2jTC+UGhwAH+haaEt2UgQA= X-Received: by 2002:a05:6402:50ca:b0:647:54ba:6c42 with SMTP id 4fb4d7f45d1cf-6491a3cc935mr7949096a12.4.1765252646390; Mon, 08 Dec 2025 19:57:26 -0800 (PST) MIME-Version: 1.0 References: <4FEEC2B8-D9CF-4BD0-AA7E-44CE3E27ADD8@gmail.com> <5EC13E39-B41E-464A-B382-0ACEB18A15BB@gmail.com> In-Reply-To: From: Sami Imseih Date: Mon, 8 Dec 2025 21:57:15 -0600 X-Gm-Features: AQt7F2onlNGjQ5B6DdYF06aA6gMAquCJ58DUXgjy0yWbCcf_Z_ir02MTqEqgzZc Message-ID: Subject: Re: [Proposal] Adding callback support for custom statistics kinds To: Chao Li Cc: Michael Paquier , PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > + if (kind_info->from_serialized_extra_stats) > + { > + if (!kind_info->from_serialized_extra_stats(&key, header, fpin)) > + { > + elog(WARNING, "could not read extra stats for entry %u/%u/%" PRIu64, > + key.kind, key.dboid, key.objid); > + goto error; > + } > + } > ``` > > When deserialize failed, it goes to error. In the error clause, it calls pgstat_reset_after_failure(), so do we want to give extensions a chance to do some reset operations? If yes, then we can add a reset_after_failure() callback. The way v5 is dealing with a deserialize failure is that when it goes to error, the pgstat_reset_after_failure() will reset the stats for all kinds, since pgstat_drop_all_entries() is called during that call. So there is nothing for an extension to have to do on its own. The extension will then clean-up resources at the end when all the kinds are iterated over and kind_info->end_extra_stats(STATS_READ) is called for each kind. Let me know if I'm still missing something? -- Sami Imseih Amazon Web Services (AWS)