Fix for compiler warning triggered in WinGetFuncArgInPartition()
Hello,
This is a minor change that avoids a "maybe uninitialized" warning that
I've been seeing since:
25a30bbd423 Add IGNORE NULLS/RESPECT NULLS option to Window functions.
src/backend/postgres_lib.a.p/executor_nodeWindowAgg.c.o../src/backend/executor/nodeWindowAgg.c:
In function
‘WinGetFuncArgInPartition’:../src/backend/executor/nodeWindowAgg.c:3809:33:
warning:‘notnull_relpos’ may be used uninitialized
[-Wmaybe-uninitialized] 3809 | } while (notnull_offset <
notnull_relpos); |
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../src/backend/executor/nodeWindowAgg.c:3723:33:
note: ‘notnull_relpos’was declared here 3723 | int
notnull_relpos; | ^~~~~~~~~~~~~~
To calm the compiler's nerves this patch moves the initialization of
notnull_relpos to later in the function.
best.
-greg
Attachments:
v1-0001-Minor-fix-to-avoid-maybe-uninitialized-warning-re.patchapplication/octet-streamDownload
From 13a1f8155343fa809d0303466f20682cc32e7d47 Mon Sep 17 00:00:00 2001
From: Greg Burd <greg@burd.me>
Date: Thu, 9 Oct 2025 09:48:35 -0400
Subject: [PATCH v1] Minor fix to avoid maybe-uninitialized warning related to
notnull_relpos
This moves the initialization of notnull_relpos to after the block that
the seems to be overlooked by the compiler and just before the value is
used in the do/while test. The code appears safe as is, this change
removes the ambiguity that confuses the compiler triggering the "maybe
unitialized" warning.
---
src/backend/executor/nodeWindowAgg.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c
index 0698aae37a7..f3f2ac7bc3c 100644
--- a/src/backend/executor/nodeWindowAgg.c
+++ b/src/backend/executor/nodeWindowAgg.c
@@ -3731,7 +3731,6 @@ WinGetFuncArgInPartition(WindowObject winobj, int argno,
{
null_treatment = true;
notnull_offset = 0;
- notnull_relpos = abs(relpos);
forward = relpos > 0 ? 1 : -1;
}
@@ -3771,6 +3770,7 @@ WinGetFuncArgInPartition(WindowObject winobj, int argno,
return datum;
}
+ notnull_relpos = abs(relpos);
myisout = false;
datum = 0;
--
2.49.0
On Thu, Oct 09, 2025 at 10:21:23AM -0400, Greg Burd wrote:
‘WinGetFuncArgInPartition’:../src/backend/executor/nodeWindowAgg.c:3809:33:
warning:‘notnull_relpos’ may be used uninitialized
[-Wmaybe-uninitialized] 3809 | } while (notnull_offset <
notnull_relpos); |
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../src/backend/executor/nodeWindowAgg.c:3723:33:
note: ‘notnull_relpos’was declared here 3723 | int
notnull_relpos; | ^~~~~~~~~~~~~~
Just curious, what compiler/version is this? I skimmed the buildfarm a bit
but didn't find any such warnings.
--
nathan
On Thu, Oct 09, 2025 at 09:41:15AM -0500, Nathan Bossart wrote:
On Thu, Oct 09, 2025 at 10:21:23AM -0400, Greg Burd wrote:
‘WinGetFuncArgInPartition’:../src/backend/executor/nodeWindowAgg.c:3809:33:
warning:‘notnull_relpos’ may be used uninitialized
[-Wmaybe-uninitialized] 3809 | } while (notnull_offset <
notnull_relpos); |
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../src/backend/executor/nodeWindowAgg.c:3723:33:
note: ‘notnull_relpos’was declared here 3723 | int
notnull_relpos; | ^~~~~~~~~~~~~~Just curious, what compiler/version is this? I skimmed the buildfarm a bit
but didn't find any such warnings.
Looks like Tom just fixed this: https://postgr.es/c/71540dc
--
nathan
On Oct 9 2025, at 10:45 am, Nathan Bossart <nathandbossart@gmail.com> wrote:
On Thu, Oct 09, 2025 at 09:41:15AM -0500, Nathan Bossart wrote:
On Thu, Oct 09, 2025 at 10:21:23AM -0400, Greg Burd wrote:
‘WinGetFuncArgInPartition’:../src/backend/executor/nodeWindowAgg.c:3809:33:
warning:‘notnull_relpos’ may be used uninitialized
[-Wmaybe-uninitialized] 3809 | } while (notnull_offset <
notnull_relpos); |
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../src/backend/executor/nodeWindowAgg.c:3723:33:
note: ‘notnull_relpos’was declared here 3723 | intnotnull_relpos; | ^~~~~~~~~~~~~~
Just curious, what compiler/version is this? I skimmed the buildfarm
a bit
but didn't find any such warnings.Looks like Tom just fixed this: https://postgr.es/c/71540dc
Scooped! Thanks Tom. :)
regards.
-greg
Show quoted text
--
nathan
Greg Burd <greg@burd.me> writes:
To calm the compiler's nerves this patch moves the initialization of
notnull_relpos to later in the function.
I was seeing the same warning for "forward" in the buildfarm,
so I moved all of these initializations down. Otherwise,
looks like we independently invented the same fix ...
regards, tom lane
Nathan Bossart <nathandbossart@gmail.com> writes:
Just curious, what compiler/version is this? I skimmed the buildfarm a bit
but didn't find any such warnings.
My warning-scraping script found
arowana | 2025-10-07 04:51:16 | nodeWindowAgg.c:3723:8: warning: 'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
arowana | 2025-10-07 04:51:16 | nodeWindowAgg.c:3790:8: warning: 'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
buri | 2025-10-05 21:30:13 | nodeWindowAgg.c:3723:8: warning: 'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
buri | 2025-10-05 21:30:13 | nodeWindowAgg.c:3790:8: warning: 'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
dhole | 2025-10-05 07:34:51 | nodeWindowAgg.c:3723:8: warning: 'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
dhole | 2025-10-05 07:34:51 | nodeWindowAgg.c:3790:8: warning: 'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
rhinoceros | 2025-10-09 11:10:27 | nodeWindowAgg.c:3724:8: warning: 'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
rhinoceros | 2025-10-09 11:10:27 | nodeWindowAgg.c:3809:2: warning: 'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
shelduck | 2025-10-09 12:14:10 | nodeWindowAgg.c:3724:6: warning: 'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
shelduck | 2025-10-09 12:14:10 | nodeWindowAgg.c:3809:2: warning: 'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
These all seem to be RHEL7 derivatives running gcc 4.8.something.
Since Greg saw it only for notnull_relpos, I'm guessing he's
running something else.
regards, tom lane
On Oct 9 2025, at 11:28 am, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Nathan Bossart <nathandbossart@gmail.com> writes:
Just curious, what compiler/version is this? I skimmed the buildfarm
a bit
but didn't find any such warnings.My warning-scraping script found
arowana | 2025-10-07 04:51:16 | nodeWindowAgg.c:3723:8: warning:
'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
arowana | 2025-10-07 04:51:16 | nodeWindowAgg.c:3790:8: warning:
'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
buri | 2025-10-05 21:30:13 | nodeWindowAgg.c:3723:8: warning:
'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
buri | 2025-10-05 21:30:13 | nodeWindowAgg.c:3790:8: warning:
'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
dhole | 2025-10-05 07:34:51 | nodeWindowAgg.c:3723:8: warning:
'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
dhole | 2025-10-05 07:34:51 | nodeWindowAgg.c:3790:8: warning:
'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
rhinoceros | 2025-10-09 11:10:27 | nodeWindowAgg.c:3724:8: warning:
'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
rhinoceros | 2025-10-09 11:10:27 | nodeWindowAgg.c:3809:2: warning:
'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
shelduck | 2025-10-09 12:14:10 | nodeWindowAgg.c:3724:6: warning:
'forward' may be used uninitialized in this function [-Wmaybe-uninitialized]
shelduck | 2025-10-09 12:14:10 | nodeWindowAgg.c:3809:2: warning:
'notnull_relpos' may be used uninitialized in this function [-Wmaybe-uninitialized]These all seem to be RHEL7 derivatives running gcc 4.8.something.
Since Greg saw it only for notnull_relpos, I'm guessing he's
running something else.
GCC 14.2.1 on Fedora 42. I wonder why I didn't see the warning for
'forward' too.
regards, tom lane
best.
-greg