From: | Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com> |
---|---|
To: | jian he <jian(dot)universality(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com> |
Subject: | Re: SQL:2011 application time |
Date: | 2023-11-19 05:32:52 |
Message-ID: | CA+renyW31toKyQUx0UZSuwJsjutdt17qJeweWTgiE8R+fPXarg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Nov 6, 2023 at 11:07 PM jian he <jian(dot)universality(at)gmail(dot)com> wrote:
> + </para>
> + In a temporal foreign key, the delete/update will use
> + <literal>FOR PORTION OF</literal> semantics to constrain the
> + effect to the bounds being deleted/updated in the referenced row.
> + </para>
>
> The first "para" should be <para> ?
Thanks, fixed (in v18)!
> There are many warnings after #define WRITE_READ_PARSE_PLAN_TREES
> see: http://cfbot.cputube.org/highlights/all.html#4308
> Does that mean oue new change in gram.y is somehow wrong?
Fixed (in read+out node funcs).
> sgml/html/sql-update.html:
> "range_or_period_name
> The range column or period to use when performing a temporal update.
> This must match the range or period used in the table's temporal
> primary key."
>
> Is the second sentence unnecessary? since no primary can still do "for
> portion of update".
You're right, this dates back to an older version of the patch. Removed.
> sgml/html/sql-update.html:
> "start_time
> The earliest time (inclusive) to change in a temporal update. This
> must be a value matching the base type of the range or period from
> range_or_period_name. It may also be the special value MINVALUE to
> indicate an update whose beginning is unbounded."
>
> probably something like the following:
> "lower_bound"
> The lower bound (inclusive) to change in an overlap update. This must
> be a value matching the base type of the range or period from
> range_or_period_name. It may also be the special value UNBOUNDED to
> indicate an update whose beginning is unbounded."
>
> Obviously the "start_time" reference also needs to change, and the
> sql-delete.html reference also needs to change.
See below re UNBOUNDED....
> UPDATE for_portion_of_test FOR PORTION OF valid_at FROM NULL TO
> "unbounded" SET name = 'NULL to NULL';
> should fail, but not. double quoted unbounded is a column reference, I assume.
>
> That's why I am confused with the function transformForPortionOfBound.
> "if (nodeTag(n) == T_ColumnRef)" part.
You're right, using a ColumnDef was probably not good here, and
treating `"UNBOUNDED"` (with quotes from the user) as a keyword is no
good. I couldn't find a way to make this work without reduce/reduce
conflicts, so I just took it out. It was syntactic sugar for `FROM/TO
NULL` and not part of the standard, so it's not too important. Also I
see that UNBOUNDED causes difficult problems already with window
functions (comments in gram.y). I hope I can find a way to make this
work eventually, but it can go for now.
> in create_table.sgml. you also need to add WITHOUT OVERLAPS related
> info into <varlistentry id="sql-createtable-parms-unique">
You're right, fixed (though Peter's patch then changed this same spot).
Thanks,
--
Paul ~{:-)
pj(at)illuminatedcomputing(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Andrey M. Borodin | 2023-11-19 07:09:18 | Re: SLRU optimization - configurable buffer pool and partitioning the SLRU lock |
Previous Message | Paul A Jungwirth | 2023-11-19 05:24:09 | Re: SQL:2011 application time |