From: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
---|---|
To: | PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org> |
Cc: | Amit Langote <amitlangote09(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com> |
Subject: | Use of uninitialized variables in ExecFindPartition() for parent partition without leaves (HEAD only) |
Date: | 2017-11-30 00:07:06 |
Message-ID: | CAB7nPqQ3mwkdMoPY-ocgTpPnjd8TKOadMxdTtMLvEzF8480Zfg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi all,
Since commit 4e5fe9ad (committer Robert Haas and author Amit Langote),
coverity has been complaining that the new code of ExecFindPartition()
may use a set of values and isnull values which never get initialized.
This is a state which can be easily reached with the following SQLs of
a parent partition with no children:
create table parent_tab (a int) partition by list ((a+0));
insert into parent_tab values (1);
The mistake is visibly that FormPartitionKeyDatum() should be called
even for a root partition, initializing the fields of isnull and
values on the way. That's actually what happens in execMain.c's
ExecFindPartition() if you look at REL_10_STABLE. So the answer would
be to move a bit down the quick exit code. Attached is a patch.
Amit, that's your code. What do you think?
Thanks,
--
Michael
Attachment | Content-Type | Size |
---|---|---|
exec-partition-quickexit.patch | application/octet-stream | 922 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Petr Jelinek | 2017-11-30 00:30:49 | Re: [HACKERS] Issues with logical replication |
Previous Message | Andres Freund | 2017-11-29 23:47:57 | Re: [HACKERS] Issues with logical replication |