Re: SQL:2011 application time

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Paul Jungwirth <pj(at)illuminatedcomputing(dot)com>
Cc: Peter Eisentraut <peter(at)eisentraut(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: SQL:2011 application time
Date: 2024-03-19 09:01:02
Message-ID: CACJufxHuzsn_9V+KpONTY-1pb92uVZxesqF50ZS-eSS2qKSr-Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Mar 19, 2024 at 6:49 AM Paul Jungwirth
<pj(at)illuminatedcomputing(dot)com> wrote:
>
> Rebased to 846311051e.
>

Hi, I just found out some minor issues.

+ * types matching the PERIOD element. periodprocoid is a GiST support
function to
+ * aggregate multiple PERIOD element values into a single value
+ * (whose return type need not match its inputs,
+ * e.g. many ranges can be aggregated into a multirange).
* And aggedperiodoperoid is also a ContainedBy operator,
- * but one whose rhs is anymultirange.
+ * but one whose rhs matches the type returned by aggedperiodoperoid.
* That way foreign keys can compare fkattr <@ range_agg(pkattr).
*/
void
-FindFKPeriodOpers(Oid opclass,
- Oid *periodoperoid,
- Oid *aggedperiodoperoid)
+FindFKPeriodOpersAndProcs(Oid opclass,
+ Oid *periodoperoid,
+ Oid *aggedperiodoperoid,
+ Oid *periodprocoid)

I think, aggedperiodoperoid is more descriptive than periodprocoid, in
0005, you don't need to rename it.
aslo do we need to squash v29 0001 to 0005 together?

--- a/doc/src/sgml/ref/create_table.sgml
+++ b/doc/src/sgml/ref/create_table.sgml
@@ -1167,7 +1167,8 @@ WITH ( MODULUS <replaceable
class="parameter">numeric_literal</replaceable>, REM
column(s) of some row of the referenced table. If the <replaceable
class="parameter">refcolumn</replaceable> list is omitted, the
primary key of the <replaceable class="parameter">reftable</replaceable>
- is used. Otherwise, the <replaceable
class="parameter">refcolumn</replaceable>
+ is used (omitting any part declared with <literal>WITHOUT
OVERLAPS</literal>).
+ Otherwise, the <replaceable class="parameter">refcolumn</replaceable>
list must refer to the columns of a non-deferrable unique or primary key
constraint or be the columns of a non-partial unique index.
</para>
I think this does not express that
foreign key is PERIOD, then the last column of refcolumn must specify PERIOD?

+ <para>
+ If the last column is marked with <literal>PERIOD</literal>,
+ it is treated in a special way.
+ While the non-<literal>PERIOD</literal> columns are compared for equality
+ (and there must be at least one of them),
+ the <literal>PERIOD</literal> column is not.
+ Instead the constraint is considered satisfied
+ if the referenced table has matching records
+ (based on the non-<literal>PERIOD</literal> parts of the key)
+ whose combined <literal>PERIOD</literal> values completely cover
+ the referencing record's.
+ In other words, the reference must have a referent for its
entire duration.
+ This column must be a column with a range type.
+ In addition the referenced table must have a primary key
+ or unique constraint declared with <literal>WITHOUT PORTION</literal>.
+ </para>
you forgot to change <literal>WITHOUT PORTION</literal> to
<literal>WITHOUT OVERLAPS</literal>

Oid pf_eq_oprs[RI_MAX_NUMKEYS]; /* equality operators (PK = FK) */
Oid pp_eq_oprs[RI_MAX_NUMKEYS]; /* equality operators (PK = PK) */
Oid ff_eq_oprs[RI_MAX_NUMKEYS]; /* equality operators (FK = FK) */
in struct RI_ConstraintInfo, these comments need to be updated?

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Daniel Gustafsson 2024-03-19 09:05:46 Re: documentation structure
Previous Message Fabrice Chapuis 2024-03-19 08:58:20 hot updates and fillfactor