Hi Ilia Evdokimov, While it's true that no arithmetic or logical operations are performed on queryid after the assignment, the overflow technically occurs at the point of assignment itself. For example, entry->key.queryid holds the value 12747288675711951805 as a uint64, but after assigning it to queryid (which is an int64), it becomes -5699455397997599811 due to overflow.
This conversion is intentional - most likely to match the bigint type of the queryid column in pg_stat_statements. However, without an explicit comment, this can be misleading. A beginner reading this might misinterpret it as an unintentional overflow or bug and raise unnecessary concerns. Therefore, it’s worth adding a brief comment clarifying the intent behind this assignment. Thanks & Regards, Shaik Mohammad Mujeeb Member Technical Staff Zoho Corp ---- On Fri, 16 May 2025 15:12:41 +0530 Ilia Evdokimov <ilya.evdoki...@tantorlabs.com> wrote --- On 15.05.2025 10:08, Shaik Mohammad Mujeeb wrote: I don't think the comment is necessary here. There are no arithmetic or logical operations performed on it. It is only passed as a Datum. -- Best regards, Ilia Evdokimov, Tantor Labs LLC. Hi Developers, In pg_stat_statements.c, the function pg_stat_statements_internal() declares the queryid variable as int64, but assigns it a value of type uint64. At first glance, this might appear to be an overflow issue. However, I think this is intentional - the queryid is cast to int64 to match the bigint type of the queryid column in the pg_stat_statements view. Please find the attached patch, which adds a clarifying comment to make the rationale explicit and avoid potential confusion for future readers. Thanks and Regards, Shaik Mohammad Mujeeb Member Technical Staff Zoho Corp