Re: SQL:2011 application time
| От | jian he |
|---|---|
| Тема | Re: SQL:2011 application time |
| Дата | |
| Msg-id | CACJufxHuzsn_9V+KpONTY-1pb92uVZxesqF50ZS-eSS2qKSr-Q@mail.gmail.com обсуждение исходный текст |
| Ответ на | SQL:2011 application time (Paul A Jungwirth <pj@illuminatedcomputing.com>) |
| Список | pgsql-hackers |
On Tue, Mar 19, 2024 at 6:49 AM Paul Jungwirth
<pj@illuminatedcomputing.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?
В списке pgsql-hackers по дате отправления: