v12-0005-fixup-Add-UPDATE-DELETE-FOR-PORTION-OF.patch.nocfbot
text/plain
Filename: v12-0005-fixup-Add-UPDATE-DELETE-FOR-PORTION-OF.patch.nocfbot
Type: text/plain
Part: 1
Message:
Re: SQL:2011 application time
From 49932adb8e626036b8d8edf26ed1465f39db82bd Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Wed, 12 Jul 2023 10:16:53 +0200
Subject: [PATCH v12] fixup! Add UPDATE/DELETE FOR PORTION OF
---
doc/src/sgml/ref/delete.sgml | 2 ++
doc/src/sgml/ref/update.sgml | 2 ++
src/backend/parser/analyze.c | 5 +++--
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/ref/delete.sgml b/doc/src/sgml/ref/delete.sgml
index 868cf0d1f9..aec593239b 100644
--- a/doc/src/sgml/ref/delete.sgml
+++ b/doc/src/sgml/ref/delete.sgml
@@ -55,6 +55,7 @@ <title>Description</title>
circumstances.
</para>
+ <!-- FIXME
<para>
If the table has a <link linkend="ddl-periods-application-periods">temporal
primary key</link>, you may supply a
@@ -63,6 +64,7 @@ <title>Description</title>
the <literal>FOR PORTION OF</literal> bounds, then new rows spanning the "cut
off" duration will be inserted to preserve the old values.
</para>
+ -->
<para>
The optional <literal>RETURNING</literal> clause causes <command>DELETE</command>
diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml
index f2042e0b25..62e9e0e1f0 100644
--- a/doc/src/sgml/ref/update.sgml
+++ b/doc/src/sgml/ref/update.sgml
@@ -52,6 +52,7 @@ <title>Description</title>
circumstances.
</para>
+ <!-- FIXME
<para>
If the table has a <link linkend="ddl-periods-application-periods">temporal
primary key</link>, you may supply a
@@ -61,6 +62,7 @@ <title>Description</title>
within the bounds, and new rows spanning the "cut off" duration will be
inserted to preserve the old values.
</para>
+ -->
<para>
The optional <literal>RETURNING</literal> clause causes <command>UPDATE</command>
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 0b2109d1bb..c6d2b7e1d1 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -1247,6 +1247,7 @@ transformForPortionOfClause(ParseState *pstate,
char *range_name = forPortionOf->range_name;
char *range_type_name = NULL;
int range_attno = InvalidAttrNumber;
+ Form_pg_attribute attr;
ForPortionOfExpr *result;
List *targetList;
Node *target_start, *target_end;
@@ -1264,7 +1265,7 @@ transformForPortionOfClause(ParseState *pstate,
range_name,
RelationGetRelationName(targetrel)),
parser_errposition(pstate, forPortionOf->range_name_location)));
- Form_pg_attribute attr = TupleDescAttr(targetrel->rd_att, range_attno - 1);
+ attr = TupleDescAttr(targetrel->rd_att, range_attno - 1);
// TODO: check attr->attisdropped (?),
// and figure out concurrency issues with that in general.
// It should work the same as updating any other column.
@@ -1317,12 +1318,12 @@ transformForPortionOfClause(ParseState *pstate,
* Now make sure we update the start/end time of the record.
* For a range col (r) this is `r = r * targetRange`.
*/
- targetList = NIL;
Expr *rangeSetExpr = (Expr *) makeSimpleA_Expr(AEXPR_OP, "*",
(Node *) copyObject(rangeVar), (Node *) fc,
forPortionOf->range_name_location);
TargetEntry *tle;
+ targetList = NIL;
rangeSetExpr = (Expr *) transformExpr(pstate, (Node *) rangeSetExpr, EXPR_KIND_UPDATE_PORTION);
tle = makeTargetEntry(rangeSetExpr,
range_attno,
--
2.41.0