Hi
I pulled the latest HEAD today and found some more -Wmaybe-uninitialized
warnings.
```
[1/6] Compiling C object
src/interfaces/ecpg/test/pg_regress_ecpg.p/.._.._.._test_regress_pg_regress.c.o
../src/test/regress/pg_regress.c: In function ‘results_differ’:
../src/test/regress/pg_regress.c:1577:17: warning: ‘startpos’ may be used
uninitialized in this function [-Wmaybe-uninitialized]
1577 | fseek(difffile, startpos, SEEK_SET);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2/6] Compiling C object
src/test/isolation/pg_isolation_regress.p/.._regress_pg_regress.c.o
../src/test/regress/pg_regress.c: In function ‘results_differ’:
../src/test/regress/pg_regress.c:1577:17: warning: ‘startpos’ may be used
uninitialized in this function [-Wmaybe-uninitialized]
1577 | fseek(difffile, startpos, SEEK_SET);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[3/6] Compiling C object src/test/regress/pg_regress.p/pg_regress.c.o
../src/test/regress/pg_regress.c: In function ‘results_differ’:
../src/test/regress/pg_regress.c:1577:17: warning: ‘startpos’ may be used
uninitialized in this function [-Wmaybe-uninitialized]
1577 | fseek(difffile, startpos, SEEK_SET);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
Here is the updated v2 patch addressing them.
Regards,
Imran Zaheer
On Thu, Apr 2, 2026 at 2:49 PM Imran Zaheer <[email protected]> wrote:
> Hi
>
> When building postgresql with CFLAGS="-Og" gcc emits
> '-Wmaybe-uninitialized' warnings at few places. The variables are
> initialized on all execution paths but the compiler was not able to
> prove it with the additional optimization flag enabled. The patch
> initializes the variables with NULL to silence the warnings. No
> functional change intended.
>
> ```
> [646/2085] Compiling C object
> src/backend/postgres_lib.a.p/commands_copyfromparse.c.o
> ../src/backend/commands/copyfromparse.c: In function ‘CopyFromTextOneRow’:
> ../src/backend/commands/copyfromparse.c:995:39: warning:
> ‘field_strings’ may be used uninitialized in this function
> [-Wmaybe-uninitialized]
> 995 | string = field_strings[fieldno++];
> | ^
> ../src/backend/commands/copyfromparse.c:961:21: note: ‘field_strings’
> was declared here
> 961 | char **field_strings;
> | ^~~~~~~~~~~~~
> ../src/backend/commands/copyfromparse.c: In function ‘CopyFromCSVOneRow’:
> ../src/backend/commands/copyfromparse.c:995:39: warning:
> ‘field_strings’ may be used uninitialized in this function
> [-Wmaybe-uninitialized]
> 995 | string = field_strings[fieldno++];
> | ^
> ../src/backend/commands/copyfromparse.c:961:21: note: ‘field_strings’
> was declared here
> 961 | char **field_strings;
> | ^~~~~~~~~~~~~
> [889/2085] Compiling C object
> src/backend/postgres_lib.a.p/partitioning_partbounds.c.o
> ../src/backend/partitioning/partbounds.c: In function
> ‘check_partition_bounds_for_split_range’:
> ../src/backend/partitioning/partbounds.c:5452:57: warning: ‘datum’ may
> be used uninitialized in this function [-Wmaybe-uninitialized]
> 5452 |
> parser_errposition(pstate, exprLocation((Node *) datum)));
> |
> ```
> gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
>
>
> Regards
> Imran Zaheer
>
From 2c8cdbfbc8cde6476b65a95ffb63d1b7252f7e8c Mon Sep 17 00:00:00 2001
From: Imran Zaheer <[email protected]>
Date: Fri, 3 Apr 2026 19:07:31 +0500
Subject: [PATCH v2] Silence -Wmaybe-uninitialized warnings
When building with CFLAGS="-Og", GCC was emitting -Wmaybe-uninitialized
warnings at some places.
Initialize variables to silence the warnings.
---
src/backend/commands/copyfromparse.c | 2 +-
src/backend/partitioning/partbounds.c | 2 +-
src/test/regress/pg_regress.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c
index 65fd5a0ab4f..cb2aac54a34 100644
--- a/src/backend/commands/copyfromparse.c
+++ b/src/backend/commands/copyfromparse.c
@@ -958,7 +958,7 @@ CopyFromTextLikeOneRow(CopyFromState cstate, ExprContext *econtext,
FmgrInfo *in_functions = cstate->in_functions;
Oid *typioparams = cstate->typioparams;
ExprState **defexprs = cstate->defexprs;
- char **field_strings;
+ char **field_strings = NULL;
ListCell *cur;
int fldct;
int fieldno;
diff --git a/src/backend/partitioning/partbounds.c b/src/backend/partitioning/partbounds.c
index f867d1b75a5..3e608d6f217 100644
--- a/src/backend/partitioning/partbounds.c
+++ b/src/backend/partitioning/partbounds.c
@@ -5375,7 +5375,7 @@ check_partition_bounds_for_split_range(Relation parent,
if (first || last)
{
PartitionBoundSpec *split_spec = get_partition_bound_spec(splitPartOid);
- PartitionRangeDatum *datum;
+ PartitionRangeDatum *datum = NULL;
if (first)
{
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 9a918156437..467bd79068c 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -1425,7 +1425,7 @@ results_differ(const char *testname, const char *resultsfile, const char *defaul
int best_line_count;
int i;
int l;
- long startpos;
+ long startpos = 0;
const char *platform_expectfile;
/*
--
2.34.1