pgsql: Fix null-pointer-deref crash while doing COPY IN with check cons
От | Tom Lane |
---|---|
Тема | pgsql: Fix null-pointer-deref crash while doing COPY IN with check cons |
Дата | |
Msg-id | E1YNDH2-0007QS-17@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix null-pointer-deref crash while doing COPY IN with check constraints. In commit bf7ca15875988a88e97302e012d7c4808bef3ea9 I introduced an assumption that an RTE referenced by a whole-row Var must have a valid eref field. This is false for RTEs constructed by DoCopy, and there are other places taking similar shortcuts. Perhaps we should make all those places go through addRangeTableEntryForRelation or its siblings instead of having ad-hoc logic, but the most reliable fix seems to be to make the new code in ExecEvalWholeRowVar cope if there's no eref. We can reasonably assume that there's no need to insert column aliases if no aliases were provided. Add a regression test case covering this, and also verifying that a sane column name is in fact available in this situation. Although the known case only crashes in 9.4 and HEAD, it seems prudent to back-patch the code change to 9.2, since all the ingredients for a similar failure exist in the variant patch applied to 9.3 and 9.2. Per report from Jean-Pierre Pelletier. Branch ------ REL9_3_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/4662ba5a23db39b695050afbcc5ff65ccd285179 Modified Files -------------- src/backend/executor/execQual.c | 7 +++++-- src/test/regress/expected/copy2.out | 35 +++++++++++++++++++++++++++++++++++ src/test/regress/sql/copy2.sql | 19 +++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-)
В списке pgsql-committers по дате отправления: