From 99f289de49c8766ab4cf2feebcb864b0c426ce36 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 21 Sep 1999 19:58:01 +0000 Subject: [PATCH] Update TODO list. --- doc/TODO | 14 +- doc/TODO.detail/alpha | 2 +- doc/TODO.detail/arrays | 2 +- doc/TODO.detail/atttypmod | 56 ++++ doc/TODO.detail/cnfify | 14 +- doc/TODO.detail/default | 59 ++++ doc/TODO.detail/flock | 4 +- doc/TODO.detail/fsync | 2 +- doc/TODO.detail/function | 97 +++++++ doc/TODO.detail/inherit | 66 +++++ doc/TODO.detail/like | 49 ++++ doc/TODO.detail/limit | 52 ++-- doc/TODO.detail/logging | 2 +- doc/TODO.detail/memory | 10 +- doc/TODO.detail/nulls | 2 +- doc/TODO.detail/optimizer | 12 +- doc/TODO.detail/outer | 8 +- doc/TODO.detail/persistent | 2 +- doc/TODO.detail/pg_shadow | 2 +- doc/TODO.detail/primary | 552 ++++++++++++++++++++++++++++++++++++- doc/TODO.detail/tcl_arrays | 2 +- doc/TODO.detail/yacc | 2 +- 22 files changed, 945 insertions(+), 66 deletions(-) create mode 100644 doc/TODO.detail/atttypmod create mode 100644 doc/TODO.detail/default create mode 100644 doc/TODO.detail/function create mode 100644 doc/TODO.detail/inherit create mode 100644 doc/TODO.detail/like diff --git a/doc/TODO b/doc/TODO index 7754afd11e..f5c4b1f449 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,6 +1,6 @@ TODO list for PostgreSQL ======================== -Last updated: Sat Sep 18 16:37:37 EDT 1999 +Last updated: Tue Sep 21 15:54:14 EDT 1999 Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) @@ -39,6 +39,8 @@ PARSER INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail * CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails * CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction +* mismatched types in CREATE TABLE ... DEFAULT causes problems + (see TODO.detail/default) * SELECT ... UNION ... ORDER BY fails when sort expr not in result list * Be smarter about promoting types when UNION merges different data types * SELECT ... UNION ... GROUP BY fails if column types disagree @@ -128,6 +130,7 @@ INDEXES COMMANDS * ALTER TABLE ADD COLUMN to inherited table put column in wrong place + (see TODO.detail/inherit) * Add ALTER TABLE DROP/ALTER COLUMN feature * Allow CLUSTER on all tables at once, and improve CLUSTER * Generate error on CREATE OPERATOR of ~~, ~ and and ~* @@ -135,9 +138,9 @@ COMMANDS * Auto-destroy sequence on DROP of table with SERIAL(Ryan) * Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison * Allow INSERT/UPDATE of system-generated oid value for a row -* Allow ESCAPE '\' at the end of LIKE for ANSI compliance +* Allow ESCAPE '\' at the end of LIKE for ANSI compliance(see TODO.detail/like) * Rewrite the LIKE handling by rewriting the user string with the - supplied ESCAPE + supplied ESCAPE(see TODO.detail/like) * Move LIKE index optimization handling to the optimizer * Allow RULE recompilation * Support UNION/INTERSECT/EXCEPT in sub-selects @@ -181,7 +184,8 @@ MISC * Put sort files, large objects in their own directory * Do autocommit so always in a transaction block(?) * Show location of syntax error in query (see TODO.detail/yacc) -* Redesign the function call interface to handle NULLs better(Jan) +* Redesign the function call interface to handle NULLs better + (see TODO.detail/function) * Document/trigger/rule so changes to pg_shadow recreate pg_pwd (see TODO.detail/pg_shadow) * Missing optimizer selectivities for date, r-tree, etc. @@ -253,7 +257,7 @@ MISC allocation(see TODO.detail/memory) * fix memory leak in cache code when non-existant table is referenced * In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3 -* pass atttypmod through parser in more cases(Bruce) +* pass atttypmod through parser in more cases(see TODO.detail/atttypmod) * remove duplicate type in/out functions for disk and net * change VACUUM ANALYZE to use btree comparison functions, not <,=,> calls * Allow persistent backends(see TODO.detail/persistent) diff --git a/doc/TODO.detail/alpha b/doc/TODO.detail/alpha index 4c2a6d9978..cc69cf1524 100644 --- a/doc/TODO.detail/alpha +++ b/doc/TODO.detail/alpha @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Fri May 14 16:00:46 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA02173 for ; Fri, 14 May 1999 16:00:44 -0400 (EDT) -Received: from hub.org (hub.org [209.167.229.1]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id QAA02824 for ; Fri, 14 May 1999 16:00:45 -0400 (EDT) +Received: from hub.org (hub.org [209.167.229.1]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id QAA02824 for ; Fri, 14 May 1999 16:00:45 -0400 (EDT) Received: from hub.org (hub.org [209.167.229.1]) by hub.org (8.9.3/8.9.3) with ESMTP id PAA47798; Fri, 14 May 1999 15:57:54 -0400 (EDT) diff --git a/doc/TODO.detail/arrays b/doc/TODO.detail/arrays index 5b26694895..4600c5cc6f 100644 --- a/doc/TODO.detail/arrays +++ b/doc/TODO.detail/arrays @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Wed Nov 25 19:01:02 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA16399 for ; Wed, 25 Nov 1998 19:01:01 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id SAA05250 for ; Wed, 25 Nov 1998 18:53:12 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id SAA05250 for ; Wed, 25 Nov 1998 18:53:12 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.1/8.9.1) with SMTP id SAA17798; Wed, 25 Nov 1998 18:49:38 -0500 (EST) diff --git a/doc/TODO.detail/atttypmod b/doc/TODO.detail/atttypmod new file mode 100644 index 0000000000..1527139a3f --- /dev/null +++ b/doc/TODO.detail/atttypmod @@ -0,0 +1,56 @@ +From tgl@sss.pgh.pa.us Sun May 23 12:32:34 1999 +Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA23977 + for ; Sun, 23 May 1999 12:32:33 -0400 (EDT) +Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1]) + by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id MAA19926; + Sun, 23 May 1999 12:32:01 -0400 (EDT) +To: Bruce Momjian +cc: PostgreSQL-development +Subject: Re: [HACKERS] DEFAULT fixed +In-reply-to: Your message of Sat, 22 May 1999 21:12:19 -0400 (EDT) + <199905230112.VAA13489@candle.pha.pa.us> +Date: Sun, 23 May 1999 12:32:01 -0400 +Message-ID: <19923.927477121@sss.pgh.pa.us> +From: Tom Lane +Status: ROr + +Bruce Momjian writes: +>> It might be best to just bite the bullet and make the parser carry +>> around both the type's OID and typmod at all times. + +> I will try to add it, but I must not that there are some cases where I +> don't have access to the atttypmod of the result, so it may not be +> possible to do it in every case. Perhaps I should just leave this for +> post 6.5, because we don't have any other bug reports on it. + +After further thought, I think this may be a more difficult and subtle +issue than we've realized. In the current state of the system, there +are many places where you have a value that you can only know the type +OID for, not atttypmod --- specifically, any intermediate expression +result. Barring reworking the entire function-call mechanism to pass +atttypmod around, that's not going to be possible to change. + +The only context where you really know atttypmod is where you have +just fetched a value out of a table column or are about to store a +value into a table column. When storing, you need to be prepared to +coerce the given value to the right type if *either* type OID or +atttypmod is different --- but, in general, you don't know atttypmod +for the given value. (In the cases I know of, you can deduce it by +examining the value itself, but this requires type-specific knowledge.) + +So on the whole I think this is something that has to be dealt with +at the point of storing data into a tuple. Maybe we need a new +fundamental operation for types that pay attention to atttypmod: +"make this value match the typmod of the target column, which is +thus-and-so". Trying to attack the problem from the source side by +propagating typmod all around the parser is probably doomed to failure, +because there will be many contexts where there's no way to know it. + +Since you have a fix for the only symptom reported to date, I'm +inclined to agree that we should leave well enough alone for now; +there are other, bigger, problems that we need to address for 6.5. +But I think we'll have to come back to this issue later. + + regards, tom lane + diff --git a/doc/TODO.detail/cnfify b/doc/TODO.detail/cnfify index 75727d5f8d..023d63a657 100644 --- a/doc/TODO.detail/cnfify +++ b/doc/TODO.detail/cnfify @@ -364,7 +364,7 @@ From andreas.zeugswetter@telecom.at Mon Aug 31 06:31:13 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id GAA14231 for ; Mon, 31 Aug 1998 06:31:12 -0400 (EDT) -Received: from gandalf.telecom.at (gandalf.telecom.at [194.118.26.84]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id GAA21099 for ; Mon, 31 Aug 1998 06:23:41 -0400 (EDT) +Received: from gandalf.telecom.at (gandalf.telecom.at [194.118.26.84]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id GAA21099 for ; Mon, 31 Aug 1998 06:23:41 -0400 (EDT) Received: from zeugswettera.user.lan.at (zeugswettera.user.lan.at [10.4.123.227]) by gandalf.telecom.at (A.B.C.Delta4/8.8.8) with SMTP id MAA38132; Mon, 31 Aug 1998 12:22:07 +0200 Received: by zeugswettera.user.lan.at with Microsoft Mail id <01BDD4DA.C7F5B690@zeugswettera.user.lan.at>; Mon, 31 Aug 1998 12:27:55 +0200 @@ -864,7 +864,7 @@ From bga@mug.org Tue Sep 8 03:39:37 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id DAA06237 for ; Tue, 8 Sep 1998 03:39:36 -0400 (EDT) -Received: from bgalli.mug.org (bajor.mug.org [207.158.132.1]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id DAA03648 for ; Tue, 8 Sep 1998 03:38:52 -0400 (EDT) +Received: from bgalli.mug.org (bajor.mug.org [207.158.132.1]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id DAA03648 for ; Tue, 8 Sep 1998 03:38:52 -0400 (EDT) Received: from localhost (bga@localhost) by bgalli.mug.org (8.8.7/SCO5) with SMTP id DAA02895 for ; Tue, 8 Sep 1998 03:31:26 -0400 (EDT) Message-Id: <199809080731.DAA02895@bgalli.mug.org> X-Authentication-Warning: bgalli.mug.org: bga@localhost didn't use HELO protocol @@ -930,7 +930,7 @@ From owner-pgsql-general@hub.org Thu Oct 1 14:00:57 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA12443 for ; Thu, 1 Oct 1998 14:00:56 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA07930 for ; Thu, 1 Oct 1998 13:57:47 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA07930 for ; Thu, 1 Oct 1998 13:57:47 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id NAA26913; Thu, 1 Oct 1998 13:56:29 -0400 (EDT) @@ -1189,7 +1189,7 @@ From owner-pgsql-hackers@hub.org Fri Oct 2 19:28:09 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA23341 for ; Fri, 2 Oct 1998 19:28:08 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id SAA18003 for ; Fri, 2 Oct 1998 18:21:37 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id SAA18003 for ; Fri, 2 Oct 1998 18:21:37 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id SAA01250; Fri, 2 Oct 1998 18:08:02 -0400 (EDT) @@ -1249,7 +1249,7 @@ From owner-pgsql-hackers@hub.org Sat Oct 3 23:32:35 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id XAA06644 for ; Sat, 3 Oct 1998 23:31:13 -0400 (EDT) -Received: from hub.org (root@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id XAA26912 for ; Sat, 3 Oct 1998 23:14:01 -0400 (EDT) +Received: from hub.org (root@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id XAA26912 for ; Sat, 3 Oct 1998 23:14:01 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id WAA04407; Sat, 3 Oct 1998 22:07:05 -0400 (EDT) @@ -1337,7 +1337,7 @@ From taral@mail.utexas.edu Sat Oct 3 22:43:41 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA05961 for ; Sat, 3 Oct 1998 22:42:18 -0400 (EDT) -Received: from mail.utexas.edu (wb2-a.mail.utexas.edu [128.83.126.136]) by renoir.op.net (o1/$Revision: 1.3 $) with SMTP id WAA25111 for ; Sat, 3 Oct 1998 22:27:34 -0400 (EDT) +Received: from mail.utexas.edu (wb2-a.mail.utexas.edu [128.83.126.136]) by renoir.op.net (o1/$Revision: 1.4 $) with SMTP id WAA25111 for ; Sat, 3 Oct 1998 22:27:34 -0400 (EDT) Received: (qmail 25622 invoked by uid 0); 4 Oct 1998 02:26:21 -0000 Received: from dial-42-9.ots.utexas.edu (HELO taral) (128.83.111.217) by umbs-smtp-2 with SMTP; 4 Oct 1998 02:26:21 -0000 @@ -1387,7 +1387,7 @@ From daveh@insightdist.com Mon Nov 9 13:31:07 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA00997 for ; Mon, 9 Nov 1998 13:31:00 -0500 (EST) -Received: from u1.abs.net (root@u1.abs.net [207.114.0.131]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA26657 for ; Mon, 9 Nov 1998 13:10:14 -0500 (EST) +Received: from u1.abs.net (root@u1.abs.net [207.114.0.131]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA26657 for ; Mon, 9 Nov 1998 13:10:14 -0500 (EST) Received: from insightdist.com (nobody@localhost) by u1.abs.net (8.9.0/8.9.0) with UUCP id MAA17710 for maillist@candle.pha.pa.us; Mon, 9 Nov 1998 12:52:05 -0500 (EST) diff --git a/doc/TODO.detail/default b/doc/TODO.detail/default new file mode 100644 index 0000000000..41d6627ec4 --- /dev/null +++ b/doc/TODO.detail/default @@ -0,0 +1,59 @@ +From tgl@sss.pgh.pa.us Sun May 23 18:59:22 1999 +Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id SAA08491 + for ; Sun, 23 May 1999 18:59:21 -0400 (EDT) +Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1]) + by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id SAA27952; + Sun, 23 May 1999 18:58:53 -0400 (EDT) +To: Bruce Momjian +cc: PostgreSQL-development +Subject: Re: [HACKERS] DEFAULT fixed +In-reply-to: Your message of Sat, 22 May 1999 21:12:19 -0400 (EDT) + <199905230112.VAA13489@candle.pha.pa.us> +Date: Sun, 23 May 1999 18:58:52 -0400 +Message-ID: <27950.927500332@sss.pgh.pa.us> +From: Tom Lane +Status: ROr + +Actually, it's not as fixed as all that... + +create table foo1 (a char(5) default '', b int4); +insert into foo1 (b) values (334); +select * from foo1; +a | b +-----+--- + |334 +(1 row) + +Good, the basic case is fixed, but: + +create table foo2 (a char(5) default text '', b int4); +insert into foo2 (b) values (334); +select * from foo2; +a| b +-+-- + |16 +(1 row) + +Ooops. + +What you seem to have done is twiddle the handling of DEFAULT clauses +so that the value stored for the default expression is pre-coerced to the +column type. That's good as far as it goes, but it fails in cases where +the stored value has to be of a different type. + +My guess is that what *really* ought to happen here is that +transformInsertStmt should check the type of the value it's gotten from +the default clause and apply coerce_type if necessary. + +Unless someone can come up with a less artificial example than the one +above, I'm inclined to leave it alone for 6.5. This is the same code +area that will have to be redone to fix the INSERT ... SELECT problem +I was chasing earlier today: coercion of the values produced by SELECT +will have to wait until the tail end of transformInsertStmt, and we +might as well make wrong-type default constants get fixed in the same +place. So I'm not eager to write some throwaway code to patch a problem +that no one is likely to see in practice. What's your feeling about it? + + regards, tom lane + diff --git a/doc/TODO.detail/flock b/doc/TODO.detail/flock index 6a6255d183..c03f0821b8 100644 --- a/doc/TODO.detail/flock +++ b/doc/TODO.detail/flock @@ -118,7 +118,7 @@ From owner-pgsql-hackers@hub.org Sun Aug 30 13:01:10 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id NAA13785 for ; Sun, 30 Aug 1998 13:01:09 -0400 (EDT) -Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA29386 for ; Sun, 30 Aug 1998 12:58:24 -0400 (EDT) +Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA29386 for ; Sun, 30 Aug 1998 12:58:24 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id MAA11406; Sun, 30 Aug 1998 12:54:48 -0400 (EDT) Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Sun, 30 Aug 1998 12:52:22 +0000 (EDT) Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id MAA11310 for pgsql-hackers-outgoing; Sun, 30 Aug 1998 12:52:20 -0400 (EDT) @@ -278,7 +278,7 @@ From owner-pgsql-hackers@hub.org Mon Aug 31 11:31:19 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id LAA21195 for ; Mon, 31 Aug 1998 11:31:13 -0400 (EDT) -Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id LAA06827 for ; Mon, 31 Aug 1998 11:17:41 -0400 (EDT) +Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id LAA06827 for ; Mon, 31 Aug 1998 11:17:41 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id LAA24792; Mon, 31 Aug 1998 11:12:18 -0400 (EDT) Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Mon, 31 Aug 1998 11:10:31 +0000 (EDT) Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id LAA24742 for pgsql-hackers-outgoing; Mon, 31 Aug 1998 11:10:29 -0400 (EDT) diff --git a/doc/TODO.detail/fsync b/doc/TODO.detail/fsync index aaa8d83c7a..2b8293b683 100644 --- a/doc/TODO.detail/fsync +++ b/doc/TODO.detail/fsync @@ -2,7 +2,7 @@ From owner-pgsql-general@hub.org Fri Dec 18 06:31:23 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id GAA05554 for ; Fri, 18 Dec 1998 06:31:21 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id EAA21127 for ; Fri, 18 Dec 1998 04:46:38 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id EAA21127 for ; Fri, 18 Dec 1998 04:46:38 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.1/8.9.1) with SMTP id EAA01409; Fri, 18 Dec 1998 04:44:19 -0500 (EST) diff --git a/doc/TODO.detail/function b/doc/TODO.detail/function new file mode 100644 index 0000000000..7ed6fa7d54 --- /dev/null +++ b/doc/TODO.detail/function @@ -0,0 +1,97 @@ +From tgl@sss.pgh.pa.us Mon Jun 14 20:50:41 1999 +Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA19110 + for ; Mon, 14 Jun 1999 20:50:39 -0400 (EDT) +Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1]) + by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id UAA21506; + Mon, 14 Jun 1999 20:51:07 -0400 (EDT) +To: Bruce Momjian +cc: Roman.Hodek@informatik.uni-erlangen.de, olly@lfix.co.uk, + PostgreSQL-development +Subject: Cleaning up function interface (was Re: Patch for m68k architecture) +In-reply-to: Your message of Mon, 14 Jun 1999 17:53:25 -0400 (EDT) + <199906142153.RAA16276@candle.pha.pa.us> +Date: Mon, 14 Jun 1999 20:51:06 -0400 +Message-ID: <21504.929407866@sss.pgh.pa.us> +From: Tom Lane +Status: RO + +Bruce Momjian writes: +>> ANSI C says results are undefined if you call a function via pointer +>> and the pointer is declared to return another type than the function +>> actually returns. So m68k compilers conform to the standard here. + +> Yes, we admit that we break the standard with fmgr_ptr, because we +> return a variety of values depending on what function they call. It +> appears the egcs optimization on the powerpc or alpha cause a problem +> when optimization is -O2, but not -O. We may see more platforms with +> problems as optimizers get smarter. + +Seeing as how we also know that the function-call interface ought to be +redesigned to handle NULLs better, maybe we should just bite the bullet +and fix all of these problems at once by adopting a new standard +interface for everything that can be called via fmgr. It'd uglify the +code, no doubt, but I think we are starting to see an accumulation of +problems that justify doing something. + +Here is a straw-man proposal: + + Datum function (bool *resultnull, + Datum *args, + bool *argnull, + int nargs) + +args[i] is the i'th parameter, or undefined (perhaps always 0?) +when argnull[i] is true. The function is responsible for setting +*resultnull, and returns a Datum value if *resultnull is false. +Most standard functions could ignore nargs since they'd know what it +should be, but we ought to pass it for flexibility. + +A useful addition to this scheme would be for fmgr to preset *resultnull +to the OR of the input argnull[] array just before calling the function. +In the typical case where the function is "strict" (ie, result is NULL +if any input is NULL), this would save the function from having to look +at argnull[] at all; it'd just check *resultnull and immediately return +if true. + +As an example, int4 addition goes from + +int32 +int4pl(int32 arg1, int32 arg2) +{ + return arg1 + arg2; +} + +to + +Datum +int4pl (bool *resultnull, Datum *args, bool *argnull, int nargs) +{ + if (*resultnull) + return (Datum) 0; /* value doesn't really matter ... */ + /* we can ignore argnull and nargs */ + + return Int32GetDatum(DatumGetInt32(args[0]) + DatumGetInt32(args[1])); +} + +This is, of course, much uglier than the existing code, but we might be +able to improve matters with some well-chosen macros for the boilerplate +parts. What we actually end up writing might look something like + +Datum +int4pl (PG_FUNCTION_ARGS) +{ + PG_STRICT_FUNCTION( /* encapsulates null check */ + PG_ARG0_INT32; + PG_ARG1_INT32; + + PG_RESULT_INT32( arg0 + arg1 ); + ); +} + +where the macros expand to things like "int32 arg0 = DatumGetInt32(args[0])" +and "return Int32GetDatum( x )". It'd be worth a little thought to +try to set up a group of macros like that, I think. + + regards, tom lane + diff --git a/doc/TODO.detail/inherit b/doc/TODO.detail/inherit new file mode 100644 index 0000000000..c77ba11694 --- /dev/null +++ b/doc/TODO.detail/inherit @@ -0,0 +1,66 @@ +From owner-pgsql-hackers@hub.org Tue Jun 1 22:31:18 1999 +Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA09988 + for ; Tue, 1 Jun 1999 22:31:17 -0400 (EDT) +Received: from hub.org (hub.org [209.167.229.1]) by renoir.op.net (o1/$Revision: 1.1 $) with ESMTP id WAA18944 for ; Tue, 1 Jun 1999 22:08:09 -0400 (EDT) +Received: from hub.org (hub.org [209.167.229.1]) + by hub.org (8.9.3/8.9.3) with ESMTP id WAA75604; + Tue, 1 Jun 1999 22:01:31 -0400 (EDT) + (envelope-from owner-pgsql-hackers@hub.org) +Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 01 Jun 1999 22:01:11 +0000 (EDT) +Received: (from majordom@localhost) + by hub.org (8.9.3/8.9.3) id WAA75519 + for pgsql-hackers-outgoing; Tue, 1 Jun 1999 22:01:09 -0400 (EDT) + (envelope-from owner-pgsql-hackers@postgreSQL.org) +X-Authentication-Warning: hub.org: majordom set sender to owner-pgsql-hackers@postgreSQL.org using -f +Received: from localhost.localdomain (h246.ozemail2.ozemail.com.au [203.108.14.246]) + by hub.org (8.9.3/8.9.3) with ESMTP id WAA75452 + for ; Tue, 1 Jun 1999 22:00:50 -0400 (EDT) + (envelope-from chris.bitmead@bigfoot.com) +Received: from bigfoot.com (localhost [127.0.0.1]) + by localhost.localdomain (8.8.7/8.8.7) with ESMTP id KAA04059 + for ; Wed, 2 Jun 1999 10:50:11 +1000 +Message-ID: <37547FC3.40106A5E@bigfoot.com> +Date: Wed, 02 Jun 1999 10:50:11 +1000 +From: Chris Bitmead +X-Mailer: Mozilla 4.6 [en] (X11; I; Linux 2.2.6 i686) +X-Accept-Language: en +MIME-Version: 1.0 +To: pgsql-hackers@hub.org +Subject: Re: [HACKERS] ALTER TABLE ADD COLUMN +References: <199906011436.KAA23479@candle.pha.pa.us> +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit +Sender: owner-pgsql-hackers@postgreSQL.org +Precedence: bulk +Status: RO + +Bruce Momjian wrote: + +> Our TODO now has: +> +> * ALTER TABLE ADD COLUMN to inherited table put column in wrong place +> +> I don't think any of us understand the issues on this one. + +Let me guess at the problem. When you add a column, it doesn't change +all the records, therefore the column must be added at the end. This +means that the columns will not be in the same order as if you had +created them from scratch. + +There seem to be three solutions: +a) Go to a much more sophisticated schema system, with versions and +version numbers (fairly hard but desirable to fix other schema change +problems). Then insert the column in the position it is supposed to be +in. + +b) Fix the copy command to input and output the columns, not in the +order they are in, but in the order they would be in on re-creation. + +c) make the copy command take arguments specifying the field names, like +INSERT can do. + +I think it would be good if Postgres had all 3 features. Probably (b) is +the least work. + + diff --git a/doc/TODO.detail/like b/doc/TODO.detail/like new file mode 100644 index 0000000000..b8f0e8a9a0 --- /dev/null +++ b/doc/TODO.detail/like @@ -0,0 +1,49 @@ +From zalman@netcom.com Tue Mar 16 18:01:18 1999 +Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id SAA24313 + for ; Tue, 16 Mar 1999 18:01:17 -0500 (EST) +Received: from netcom15.netcom.com (zalman@netcom15.netcom.com [192.100.81.128]) by renoir.op.net (o1/$Revision: 1.1 $) with ESMTP id RAA15235 for ; Tue, 16 Mar 1999 17:56:56 -0500 (EST) +Received: (from zalman@localhost) + by netcom15.netcom.com (8.8.5-r-beta/8.8.5/(NETCOM v1.02)) id OAA28174; + Tue, 16 Mar 1999 14:55:33 -0800 (PST) +From: Zalman Stern +Message-Id: <199903162255.OAA28174@netcom15.netcom.com> +Subject: Re: [SQL] How match percent sign in SELECT using LIKE? +To: maillist@candle.pha.pa.us (Bruce Momjian) +Date: Tue, 16 Mar 1999 14:55:33 -0800 (PST) +Cc: zalman@netcom.com, herouth@oumail.openu.ac.il, pgsql-sql@postgreSQL.org +In-Reply-To: <199903162226.RAA20904@candle.pha.pa.us> from "Bruce Momjian" at Mar 16, 99 05:26:09 pm +X-Mailer: ELM [version 2.4 PL25] +MIME-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Status: ROr + +Bruce Momjian wrote: +> That is also an excellent idea. Just convert their escape to \ inside +> the parser. Of course, they still have to use \\ to get a \, as in any +> string. Great idea. + +You can even make it fully compliant if you want. (There are of course +backward compatibility problems. I'm not sure what the Postgres policy is +on this.) + +- If the escape character is backslash, do nothing. +- Otherwise, turn all backslashes in the string to double backslashes. +- If the escape character is not set, stop here. +- Turn all occurences of the escape character into a backslash except + where the escape character is doubled, where it should be made into a + single occurence. +(Optionally, if "\n" is just an 'n' character, you can handle double +occurences of the escape character by turning the first one into a +backslash.) + +Probably the best bet for PostgreSQL programmers is to always code Like +clauses with an ESCAPE '\' (or however its written). + +I really wish they'd chosen a character other than underscore for the +"match one" wildcard... Is there any standard practice for seperating words +in table names? + +-Z- + diff --git a/doc/TODO.detail/limit b/doc/TODO.detail/limit index 7be7abc890..5b8ecfe23d 100644 --- a/doc/TODO.detail/limit +++ b/doc/TODO.detail/limit @@ -301,7 +301,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 09:01:01 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id JAA24574 for ; Wed, 14 Oct 1998 09:01:00 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id HAA17762 for ; Wed, 14 Oct 1998 07:47:57 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id HAA17762 for ; Wed, 14 Oct 1998 07:47:57 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id HAA09214; Wed, 14 Oct 1998 07:04:59 -0400 (EDT) @@ -485,7 +485,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 11:02:04 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA25519 for ; Wed, 14 Oct 1998 11:02:02 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id JAA24583 for ; Wed, 14 Oct 1998 09:46:21 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id JAA24583 for ; Wed, 14 Oct 1998 09:46:21 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id IAA17022; Wed, 14 Oct 1998 08:59:20 -0400 (EDT) @@ -599,7 +599,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 11:02:00 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA25510 for ; Wed, 14 Oct 1998 11:01:59 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id KAA28854 for ; Wed, 14 Oct 1998 10:40:56 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id KAA28854 for ; Wed, 14 Oct 1998 10:40:56 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id KAA21542; Wed, 14 Oct 1998 10:03:45 -0400 (EDT) @@ -665,7 +665,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 11:01:52 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA25504 for ; Wed, 14 Oct 1998 11:01:51 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id KAA00198 for ; Wed, 14 Oct 1998 10:57:15 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id KAA00198 for ; Wed, 14 Oct 1998 10:57:15 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id KAA22877; Wed, 14 Oct 1998 10:19:47 -0400 (EDT) @@ -893,7 +893,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 13:55:58 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA29300 for ; Wed, 14 Oct 1998 13:55:56 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA14245 for ; Wed, 14 Oct 1998 13:49:19 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA14245 for ; Wed, 14 Oct 1998 13:49:19 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id NAA13110; Wed, 14 Oct 1998 13:25:55 -0400 (EDT) @@ -983,7 +983,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 13:55:59 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA29303 for ; Wed, 14 Oct 1998 13:55:58 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA13463 for ; Wed, 14 Oct 1998 13:39:05 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA13463 for ; Wed, 14 Oct 1998 13:39:05 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id NAA11655; Wed, 14 Oct 1998 13:13:32 -0400 (EDT) @@ -1119,7 +1119,7 @@ From wieck@sapserv.debis.de Wed Oct 14 13:55:53 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA29290 for ; Wed, 14 Oct 1998 13:55:51 -0400 (EDT) -Received: from dsh.de (firewall-user@neptun.sns-felb.debis.de [53.122.101.2]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA14370 for ; Wed, 14 Oct 1998 13:51:19 -0400 (EDT) +Received: from dsh.de (firewall-user@neptun.sns-felb.debis.de [53.122.101.2]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA14370 for ; Wed, 14 Oct 1998 13:51:19 -0400 (EDT) Received: by dsh.de; id TAA03418; Wed, 14 Oct 1998 19:50:18 +0200 (MET DST) Received: from dshmail.dsh.de(53.47.15.3) by neptun.dsh.de via smap (3.2) id xma003369; Wed, 14 Oct 98 19:49:51 +0200 @@ -1186,7 +1186,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 16:31:07 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA01119 for ; Wed, 14 Oct 1998 16:31:05 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id PAA22534 for ; Wed, 14 Oct 1998 15:29:50 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id PAA22534 for ; Wed, 14 Oct 1998 15:29:50 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id PAA26335; Wed, 14 Oct 1998 15:05:26 -0400 (EDT) @@ -1357,7 +1357,7 @@ From owner-pgsql-hackers@hub.org Wed Oct 14 17:31:23 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA01591 for ; Wed, 14 Oct 1998 17:31:21 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id RAA02744 for ; Wed, 14 Oct 1998 17:26:53 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id RAA02744 for ; Wed, 14 Oct 1998 17:26:53 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id RAA05601; Wed, 14 Oct 1998 17:03:21 -0400 (EDT) @@ -1492,7 +1492,7 @@ From owner-pgsql-hackers@hub.org Thu Oct 15 00:01:10 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id AAA06040 for ; Thu, 15 Oct 1998 00:01:04 -0400 (EDT) -Received: from hub.org (root@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id XAA29020 for ; Wed, 14 Oct 1998 23:57:58 -0400 (EDT) +Received: from hub.org (root@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id XAA29020 for ; Wed, 14 Oct 1998 23:57:58 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id WAA02215; Wed, 14 Oct 1998 22:39:07 -0400 (EDT) @@ -1570,7 +1570,7 @@ From owner-pgsql-hackers@hub.org Thu Oct 15 10:01:17 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA13960 for ; Thu, 15 Oct 1998 10:01:15 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id JAA20266 for ; Thu, 15 Oct 1998 09:12:21 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id JAA20266 for ; Thu, 15 Oct 1998 09:12:21 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id IAA26142; Thu, 15 Oct 1998 08:19:49 -0400 (EDT) @@ -1703,7 +1703,7 @@ From owner-pgsql-hackers@hub.org Thu Oct 15 14:32:34 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA19803 for ; Thu, 15 Oct 1998 14:32:31 -0400 (EDT) -Received: from hub.org (root@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA10847 for ; Thu, 15 Oct 1998 13:38:16 -0400 (EDT) +Received: from hub.org (root@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA10847 for ; Thu, 15 Oct 1998 13:38:16 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id MAA22772; Thu, 15 Oct 1998 12:07:20 -0400 (EDT) @@ -1982,7 +1982,7 @@ From Inoue@tpf.co.jp Thu Oct 15 20:31:01 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA26050 for ; Thu, 15 Oct 1998 20:31:00 -0400 (EDT) -Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id UAA12888 for ; Thu, 15 Oct 1998 20:10:03 -0400 (EDT) +Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id UAA12888 for ; Thu, 15 Oct 1998 20:10:03 -0400 (EDT) Received: from cadzone ([126.0.1.40]) by sd.tpf.co.jp (2.0 Build 2131 (Berkeley 8.8.4)/8.8.4) with SMTP id JAA02574; Fri, 16 Oct 1998 09:00:34 +0900 @@ -2061,7 +2061,7 @@ From owner-pgsql-hackers@hub.org Fri Oct 16 04:01:07 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id EAA02029 for ; Fri, 16 Oct 1998 04:01:04 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id DAA05509 for ; Fri, 16 Oct 1998 03:43:53 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id DAA05509 for ; Fri, 16 Oct 1998 03:43:53 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id CAA11278; Fri, 16 Oct 1998 02:00:01 -0400 (EDT) @@ -2304,7 +2304,7 @@ From Inoue@tpf.co.jp Fri Oct 16 03:31:02 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id DAA01767 for ; Fri, 16 Oct 1998 03:31:00 -0400 (EDT) -Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id DAA04551 for ; Fri, 16 Oct 1998 03:13:40 -0400 (EDT) +Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id DAA04551 for ; Fri, 16 Oct 1998 03:13:40 -0400 (EDT) Received: from cadzone ([126.0.1.40]) by sd.tpf.co.jp (2.0 Build 2131 (Berkeley 8.8.4)/8.8.4) with SMTP id QAA02680; Fri, 16 Oct 1998 16:04:09 +0900 @@ -2417,7 +2417,7 @@ From wieck@sapserv.debis.de Fri Oct 16 05:01:03 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id FAA02500 for ; Fri, 16 Oct 1998 05:01:02 -0400 (EDT) -Received: from dsh.de (firewall-user@neptun.sns-felb.debis.de [53.122.101.2]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id EAA06270 for ; Fri, 16 Oct 1998 04:13:59 -0400 (EDT) +Received: from dsh.de (firewall-user@neptun.sns-felb.debis.de [53.122.101.2]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id EAA06270 for ; Fri, 16 Oct 1998 04:13:59 -0400 (EDT) Received: by dsh.de; id KAA11635; Fri, 16 Oct 1998 10:12:45 +0200 (MET DST) Received: from dshmail.dsh.de(53.47.15.3) by neptun.dsh.de via smap (3.2) id xma011343; Fri, 16 Oct 98 10:12:15 +0200 @@ -2493,7 +2493,7 @@ From owner-pgsql-hackers@hub.org Fri Oct 16 12:02:27 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA13063 for ; Fri, 16 Oct 1998 12:02:23 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA18435 for ; Fri, 16 Oct 1998 12:01:46 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA18435 for ; Fri, 16 Oct 1998 12:01:46 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id LAA24469; Fri, 16 Oct 1998 11:28:54 -0400 (EDT) @@ -2702,7 +2702,7 @@ From oleg@sai.msu.su Sun Oct 18 14:01:49 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA01739 for ; Sun, 18 Oct 1998 14:01:48 -0400 (EDT) -Received: from ra.sai.msu.su (ra.sai.msu.su [158.250.29.2]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA23532 for ; Sun, 18 Oct 1998 13:51:14 -0400 (EDT) +Received: from ra.sai.msu.su (ra.sai.msu.su [158.250.29.2]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA23532 for ; Sun, 18 Oct 1998 13:51:14 -0400 (EDT) Received: from ra (ra [158.250.29.2]) by ra.sai.msu.su (8.9.1/8.9.1) with SMTP id UAA17832; Sun, 18 Oct 1998 20:45:25 +0300 (MSK) @@ -2773,7 +2773,7 @@ From owner-pgsql-hackers@hub.org Sun Oct 18 14:31:12 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA02288 for ; Sun, 18 Oct 1998 14:31:10 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id OAA24844 for ; Sun, 18 Oct 1998 14:15:35 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id OAA24844 for ; Sun, 18 Oct 1998 14:15:35 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id OAA26655; Sun, 18 Oct 1998 14:00:03 -0400 (EDT) @@ -2949,7 +2949,7 @@ From owner-pgsql-hackers@hub.org Sun Oct 18 19:08:47 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA00573 for ; Sun, 18 Oct 1998 19:08:46 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id QAA01305 for ; Sun, 18 Oct 1998 16:14:30 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id QAA01305 for ; Sun, 18 Oct 1998 16:14:30 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id PAA06110; Sun, 18 Oct 1998 15:55:20 -0400 (EDT) @@ -3045,7 +3045,7 @@ From owner-pgsql-hackers@hub.org Sun Oct 18 19:08:39 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA00557 for ; Sun, 18 Oct 1998 19:08:37 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id QAA03555 for ; Sun, 18 Oct 1998 16:56:03 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id QAA03555 for ; Sun, 18 Oct 1998 16:56:03 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id QAA10374; Sun, 18 Oct 1998 16:36:26 -0400 (EDT) @@ -3261,7 +3261,7 @@ From owner-pgsql-hackers@hub.org Mon Oct 19 07:31:10 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id HAA05591 for ; Mon, 19 Oct 1998 07:31:09 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id HAA13574 for ; Mon, 19 Oct 1998 07:12:57 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id HAA13574 for ; Mon, 19 Oct 1998 07:12:57 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id GAA13957; Mon, 19 Oct 1998 06:25:09 -0400 (EDT) @@ -3344,7 +3344,7 @@ From owner-pgsql-hackers@hub.org Tue Oct 20 06:01:49 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id GAA02483 for ; Tue, 20 Oct 1998 06:01:48 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id FAA07799 for ; Tue, 20 Oct 1998 05:51:19 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id FAA07799 for ; Tue, 20 Oct 1998 05:51:19 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id FAA00108; Tue, 20 Oct 1998 05:17:58 -0400 (EDT) @@ -3936,7 +3936,7 @@ From owner-pgsql-hackers@hub.org Thu Oct 22 11:33:41 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA01724 for ; Thu, 22 Oct 1998 11:33:31 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id LAA12702 for ; Thu, 22 Oct 1998 11:25:02 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id LAA12702 for ; Thu, 22 Oct 1998 11:25:02 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.9.1/8.8.8) with SMTP id KAA11023; Thu, 22 Oct 1998 10:22:13 -0400 (EDT) @@ -4089,7 +4089,7 @@ From wieck@sapserv.debis.de Thu Oct 22 11:01:05 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA21185 for ; Thu, 22 Oct 1998 11:01:00 -0400 (EDT) -Received: from dsh.de (firewall-user@neptun.sns-felb.debis.de [53.122.101.2]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id KAA09646 for ; Thu, 22 Oct 1998 10:44:36 -0400 (EDT) +Received: from dsh.de (firewall-user@neptun.sns-felb.debis.de [53.122.101.2]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id KAA09646 for ; Thu, 22 Oct 1998 10:44:36 -0400 (EDT) Received: by dsh.de; id QAA19394; Thu, 22 Oct 1998 16:43:42 +0200 (MET DST) Received: from dshmail.dsh.de(53.47.15.3) by neptun.dsh.de via smap (3.2) id xma017268; Thu, 22 Oct 98 16:39:44 +0200 @@ -4891,7 +4891,7 @@ From owner-pgsql-hackers@hub.org Thu Oct 22 13:12:34 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA01350 for ; Thu, 22 Oct 1998 13:12:29 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA17808 for ; Thu, 22 Oct 1998 12:35:22 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA17808 for ; Thu, 22 Oct 1998 12:35:22 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.9.1/8.8.8) with SMTP id KAA14887; Thu, 22 Oct 1998 10:49:09 -0400 (EDT) diff --git a/doc/TODO.detail/logging b/doc/TODO.detail/logging index e4f9b2246a..b450e72f5d 100644 --- a/doc/TODO.detail/logging +++ b/doc/TODO.detail/logging @@ -93,7 +93,7 @@ From owner-pgsql-hackers@hub.org Wed Dec 16 15:46:41 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA00521 for ; Wed, 16 Dec 1998 15:46:40 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id PAA08772 for ; Wed, 16 Dec 1998 15:10:01 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id PAA08772 for ; Wed, 16 Dec 1998 15:10:01 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.1/8.9.1) with SMTP id PAA01254; Wed, 16 Dec 1998 15:06:56 -0500 (EST) diff --git a/doc/TODO.detail/memory b/doc/TODO.detail/memory index c7199eaf69..afae0eb257 100644 --- a/doc/TODO.detail/memory +++ b/doc/TODO.detail/memory @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Thu Nov 26 08:31:13 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id IAA24423 for ; Thu, 26 Nov 1998 08:31:08 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id IAA04554 for ; Thu, 26 Nov 1998 08:04:30 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id IAA04554 for ; Thu, 26 Nov 1998 08:04:30 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.1/8.9.1) with SMTP id HAA03761; Thu, 26 Nov 1998 07:56:37 -0500 (EST) @@ -758,7 +758,7 @@ From owner-pgsql-hackers@hub.org Sat Mar 20 12:01:44 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA24855 for ; Sat, 20 Mar 1999 12:01:43 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id LAA11985 for ; Sat, 20 Mar 1999 11:58:48 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id LAA11985 for ; Sat, 20 Mar 1999 11:58:48 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id LAA12367; Sat, 20 Mar 1999 11:57:17 -0500 (EST) @@ -835,7 +835,7 @@ From tgl@sss.pgh.pa.us Sun Mar 21 16:01:46 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA00139 for ; Sun, 21 Mar 1999 16:01:45 -0500 (EST) -Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id PAA27737 for ; Sun, 21 Mar 1999 15:52:38 -0500 (EST) +Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id PAA27737 for ; Sun, 21 Mar 1999 15:52:38 -0500 (EST) Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id PAA14946; Sun, 21 Mar 1999 15:50:20 -0500 (EST) @@ -925,7 +925,7 @@ From owner-pgsql-hackers@hub.org Sun Mar 21 16:01:49 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA00149 for ; Sun, 21 Mar 1999 16:01:48 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id PAA27950 for ; Sun, 21 Mar 1999 15:56:07 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id PAA27950 for ; Sun, 21 Mar 1999 15:56:07 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id PAA39413; Sun, 21 Mar 1999 15:54:51 -0500 (EST) @@ -1031,7 +1031,7 @@ From owner-pgsql-hackers@hub.org Wed Mar 24 19:10:53 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA00906 for ; Wed, 24 Mar 1999 19:10:52 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA24258 for ; Wed, 24 Mar 1999 13:09:47 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA24258 for ; Wed, 24 Mar 1999 13:09:47 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id NAA60743; Wed, 24 Mar 1999 13:07:26 -0500 (EST) diff --git a/doc/TODO.detail/nulls b/doc/TODO.detail/nulls index 63c7b2a6a1..968f315b62 100644 --- a/doc/TODO.detail/nulls +++ b/doc/TODO.detail/nulls @@ -61,7 +61,7 @@ From owner-pgsql-general@hub.org Sun Oct 11 17:31:08 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA20043 for ; Sun, 11 Oct 1998 17:31:02 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id RAA03069 for ; Sun, 11 Oct 1998 17:10:34 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id RAA03069 for ; Sun, 11 Oct 1998 17:10:34 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id QAA10856; Sun, 11 Oct 1998 16:57:34 -0400 (EDT) diff --git a/doc/TODO.detail/optimizer b/doc/TODO.detail/optimizer index b24c22d0eb..1a93a88982 100644 --- a/doc/TODO.detail/optimizer +++ b/doc/TODO.detail/optimizer @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Mon Mar 22 18:43:41 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id SAA23978 for ; Mon, 22 Mar 1999 18:43:39 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id SAA06472 for ; Mon, 22 Mar 1999 18:36:44 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id SAA06472 for ; Mon, 22 Mar 1999 18:36:44 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id SAA92604; Mon, 22 Mar 1999 18:34:23 -0500 (EST) @@ -228,7 +228,7 @@ From owner-pgsql-hackers@hub.org Mon Mar 22 20:31:11 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA00802 for ; Mon, 22 Mar 1999 20:31:09 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id UAA13231 for ; Mon, 22 Mar 1999 20:15:20 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id UAA13231 for ; Mon, 22 Mar 1999 20:15:20 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id UAA01981; Mon, 22 Mar 1999 20:14:04 -0500 (EST) @@ -335,7 +335,7 @@ From owner-pgsql-hackers@hub.org Mon Mar 22 23:31:00 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id XAA03384 for ; Mon, 22 Mar 1999 23:30:58 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id XAA25586 for ; Mon, 22 Mar 1999 23:18:25 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id XAA25586 for ; Mon, 22 Mar 1999 23:18:25 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id XAA17955; Mon, 22 Mar 1999 23:17:24 -0500 (EST) @@ -725,7 +725,7 @@ From owner-pgsql-hackers@hub.org Tue Mar 23 12:31:05 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA17491 for ; Tue, 23 Mar 1999 12:31:04 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA08839 for ; Tue, 23 Mar 1999 12:08:14 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA08839 for ; Tue, 23 Mar 1999 12:08:14 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id MAA93649; Tue, 23 Mar 1999 12:04:57 -0500 (EST) @@ -881,7 +881,7 @@ From tgl@sss.pgh.pa.us Tue Mar 23 12:31:02 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA17484 for ; Tue, 23 Mar 1999 12:31:01 -0500 (EST) -Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA09042 for ; Tue, 23 Mar 1999 12:10:55 -0500 (EST) +Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA09042 for ; Tue, 23 Mar 1999 12:10:55 -0500 (EST) Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id MAA24474; Tue, 23 Mar 1999 12:09:52 -0500 (EST) @@ -927,7 +927,7 @@ From owner-pgsql-hackers@hub.org Tue Mar 23 12:31:03 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA17488 for ; Tue, 23 Mar 1999 12:31:02 -0500 (EST) -Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA09987 for ; Tue, 23 Mar 1999 12:21:34 -0500 (EST) +Received: from hub.org (majordom@hub.org [209.47.145.100]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA09987 for ; Tue, 23 Mar 1999 12:21:34 -0500 (EST) Received: from localhost (majordom@localhost) by hub.org (8.9.2/8.9.1) with SMTP id MAA95155; Tue, 23 Mar 1999 12:18:33 -0500 (EST) diff --git a/doc/TODO.detail/outer b/doc/TODO.detail/outer index a7b593ca88..70d310b105 100644 --- a/doc/TODO.detail/outer +++ b/doc/TODO.detail/outer @@ -2,7 +2,7 @@ From lockhart@alumni.caltech.edu Thu Jan 7 13:31:08 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA07771 for ; Thu, 7 Jan 1999 13:31:06 -0500 (EST) -Received: from golem.jpl.nasa.gov (IDENT:root@hectic-2.jpl.nasa.gov [128.149.68.204]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id NAA14597 for ; Thu, 7 Jan 1999 13:27:37 -0500 (EST) +Received: from golem.jpl.nasa.gov (IDENT:root@hectic-2.jpl.nasa.gov [128.149.68.204]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id NAA14597 for ; Thu, 7 Jan 1999 13:27:37 -0500 (EST) Received: from alumni.caltech.edu (localhost [127.0.0.1]) by golem.jpl.nasa.gov (8.8.5/8.8.5) with ESMTP id SAA13416; Thu, 7 Jan 1999 18:26:56 GMT @@ -71,7 +71,7 @@ From lockhart@alumni.caltech.edu Mon Feb 22 02:01:13 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id CAA22073 for ; Mon, 22 Feb 1999 02:01:12 -0500 (EST) -Received: from golem.jpl.nasa.gov (IDENT:root@hectic-2.jpl.nasa.gov [128.149.68.204]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id BAA26054 for ; Mon, 22 Feb 1999 01:57:00 -0500 (EST) +Received: from golem.jpl.nasa.gov (IDENT:root@hectic-2.jpl.nasa.gov [128.149.68.204]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id BAA26054 for ; Mon, 22 Feb 1999 01:57:00 -0500 (EST) Received: from alumni.caltech.edu (localhost [127.0.0.1]) by golem.jpl.nasa.gov (8.8.5/8.8.5) with ESMTP id GAA04715; Mon, 22 Feb 1999 06:56:36 GMT @@ -157,7 +157,7 @@ From lockhart@alumni.caltech.edu Mon Mar 1 13:01:08 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA21672 for ; Mon, 1 Mar 1999 13:01:06 -0500 (EST) -Received: from golem.jpl.nasa.gov (IDENT:root@hectic-2.jpl.nasa.gov [128.149.68.204]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id MAA12756 for ; Mon, 1 Mar 1999 12:14:16 -0500 (EST) +Received: from golem.jpl.nasa.gov (IDENT:root@hectic-2.jpl.nasa.gov [128.149.68.204]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id MAA12756 for ; Mon, 1 Mar 1999 12:14:16 -0500 (EST) Received: from alumni.caltech.edu (localhost [127.0.0.1]) by golem.jpl.nasa.gov (8.8.5/8.8.5) with ESMTP id RAA09406; Mon, 1 Mar 1999 17:10:49 GMT @@ -191,7 +191,7 @@ From lockhart@alumni.caltech.edu Mon Mar 8 21:55:02 1999 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA15978 for ; Mon, 8 Mar 1999 21:54:57 -0500 (EST) -Received: from golem.jpl.nasa.gov (IDENT:root@hectic-1.jpl.nasa.gov [128.149.68.203]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id VAA15837 for ; Mon, 8 Mar 1999 21:48:33 -0500 (EST) +Received: from golem.jpl.nasa.gov (IDENT:root@hectic-1.jpl.nasa.gov [128.149.68.203]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id VAA15837 for ; Mon, 8 Mar 1999 21:48:33 -0500 (EST) Received: from alumni.caltech.edu (localhost [127.0.0.1]) by golem.jpl.nasa.gov (8.8.5/8.8.5) with ESMTP id CAA06996; Tue, 9 Mar 1999 02:46:40 GMT diff --git a/doc/TODO.detail/persistent b/doc/TODO.detail/persistent index 806df3551b..0ea7b8b236 100644 --- a/doc/TODO.detail/persistent +++ b/doc/TODO.detail/persistent @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Mon May 11 11:31:09 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id LAA03006 for ; Mon, 11 May 1998 11:31:07 -0400 (EDT) -Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id LAA01663 for ; Mon, 11 May 1998 11:24:42 -0400 (EDT) +Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id LAA01663 for ; Mon, 11 May 1998 11:24:42 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id LAA21841; Mon, 11 May 1998 11:15:25 -0400 (EDT) Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Mon, 11 May 1998 11:15:12 +0000 (EDT) Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id LAA21683 for pgsql-hackers-outgoing; Mon, 11 May 1998 11:15:09 -0400 (EDT) diff --git a/doc/TODO.detail/pg_shadow b/doc/TODO.detail/pg_shadow index 961336993c..1804c5f680 100644 --- a/doc/TODO.detail/pg_shadow +++ b/doc/TODO.detail/pg_shadow @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Sun Aug 2 20:01:13 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id UAA15937 for ; Sun, 2 Aug 1998 20:01:11 -0400 (EDT) -Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id TAA01026 for ; Sun, 2 Aug 1998 19:33:53 -0400 (EDT) +Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id TAA01026 for ; Sun, 2 Aug 1998 19:33:53 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id TAA19878; Sun, 2 Aug 1998 19:30:59 -0400 (EDT) Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Sun, 02 Aug 1998 19:28:23 +0000 (EDT) Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id TAA19534 for pgsql-hackers-outgoing; Sun, 2 Aug 1998 19:28:22 -0400 (EDT) diff --git a/doc/TODO.detail/primary b/doc/TODO.detail/primary index 9492dbbbb8..ee01c0f7a2 100644 --- a/doc/TODO.detail/primary +++ b/doc/TODO.detail/primary @@ -2,7 +2,7 @@ From owner-pgsql-hackers@hub.org Fri Sep 4 00:47:06 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id AAA01047 for ; Fri, 4 Sep 1998 00:47:05 -0400 (EDT) -Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id XAA02044 for ; Thu, 3 Sep 1998 23:11:07 -0400 (EDT) +Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id XAA02044 for ; Thu, 3 Sep 1998 23:11:07 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id XAA27418; Thu, 3 Sep 1998 23:06:16 -0400 (EDT) Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Thu, 03 Sep 1998 23:04:11 +0000 (EDT) Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id XAA27185 for pgsql-hackers-outgoing; Thu, 3 Sep 1998 23:04:09 -0400 (EDT) @@ -84,7 +84,7 @@ From owner-pgsql-hackers@hub.org Sat Sep 5 02:01:13 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id CAA14437 for ; Sat, 5 Sep 1998 02:01:11 -0400 (EDT) -Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id BAA09928 for ; Sat, 5 Sep 1998 01:48:32 -0400 (EDT) +Received: from hub.org (hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id BAA09928 for ; Sat, 5 Sep 1998 01:48:32 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.7.5) with SMTP id BAA18282; Sat, 5 Sep 1998 01:43:16 -0400 (EDT) Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Sat, 05 Sep 1998 01:41:40 +0000 (EDT) Received: (from majordom@localhost) by hub.org (8.8.8/8.7.5) id BAA18241 for pgsql-hackers-outgoing; Sat, 5 Sep 1998 01:41:38 -0400 (EDT) @@ -157,3 +157,551 @@ valid attnum from pg_index->indkey -:( Vadim +From owner-pgsql-hackers@hub.org Tue Sep 21 05:31:11 1999 +Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id FAA07543 + for ; Tue, 21 Sep 1999 05:31:09 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id FAA19587 for ; Tue, 21 Sep 1999 05:12:03 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) + by hub.org (8.9.3/8.9.3) with ESMTP id EAA55119; + Tue, 21 Sep 1999 04:48:48 -0400 (EDT) + (envelope-from owner-pgsql-hackers@hub.org) +Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 21 Sep 1999 04:45:33 +0000 (EDT) +Received: (from majordom@localhost) + by hub.org (8.9.3/8.9.3) id EAA54532 + for pgsql-hackers-outgoing; Tue, 21 Sep 1999 04:44:35 -0400 (EDT) + (envelope-from owner-pgsql-hackers@postgreSQL.org) +Received: from orion.SAPserv.Hamburg.dsh.de (Tpolaris2.sapham.debis.de [53.2.131.8]) + by hub.org (8.9.3/8.9.3) with SMTP id EAA54496 + for ; Tue, 21 Sep 1999 04:44:13 -0400 (EDT) + (envelope-from wieck@debis.com) +Received: by orion.SAPserv.Hamburg.dsh.de + for pgsql-hackers@postgreSQL.org + id m11TLQP-0003kLC; Tue, 21 Sep 99 10:37 MET DST +Message-Id: +From: wieck@debis.com (Jan Wieck) +Subject: [HACKERS] Re: Referential Integrity In PostgreSQL +To: pgsql-hackers@postgreSQL.org (PostgreSQL HACKERS) +Date: Tue, 21 Sep 1999 10:37:21 +0200 (MET DST) +Reply-To: wieck@debis.com (Jan Wieck) +X-Mailer: ELM [version 2.4 PL25] +Content-Type: text +Sender: owner-pgsql-hackers@postgreSQL.org +Precedence: bulk +Status: RO + +> +> Hi , Jan +> +> my name is Max . + +Hi Max, + +> +> I have contributed to SPI interface , +> that with external Trigger try to make +> a referential integrity. +> +> If I can Help , in something , +> I'm here . +> + + You're welcome. + + I've CC'd the hackers list because we might get some ideas + from there too (and to surface once in a while - Bruce + already missed me). + + Currently I'm very busy for serious work so I don't find + enough spare time to start on such a big change to + PostgreSQL. But I'd like to give you an overview of what I + have in mind so far so you can decide if you're able to help. + + Referential integrity (RI) is based on constraints defined in + the schema of a database. There are some different types of + constraints: + + 1. Uniqueness constraints. + + 2. Foreign key constraints that ensure that a key value used + in an attribute exists in another relation. One + constraint must ensure you're unable to INSERT/UPDATE to + a value that doesn't exist, another one must prevent + DELETE on a referenced key item or that it is changed + during UPDATE. + + 3. Cascading deletes that let rows referring to a key follow + on DELETE silently. + + Even if not defined in the standard (AFAIK) there could be + others like letting references automatically follow on UPDATE + to a key value. + + All constraints can be enabled and/or default to be deferred. + That means, that the RI checks aren't performed when they are + triggerd. Instead, they're checked at transaction end or if + explicitly invoked by some special statement. This is really + important because someone must be able to setup cyclic RI + checks that could never be satisfied if the checks would be + performed immediately. The major problem on this is the + amount of data affected until the checks must be performed. + The number of statements executed, that trigger such deferred + constraints, shouldn't be limited. And one single + INSERT/UPDATE/DELETE could affect thousands of rows. + + Due to these problems I thought, it might not be such a good + idea to remember CTID's or the like to get back OLD/NEW rows + at the time the constraints are checked. Instead I planned to + misuse the rule system for it. Unfortunately, the rule system + has damned tricky problems itself when it comes to having-, + distinct and other clauses and extremely on aggregates and + subselects. These problems would have to get fixed first. So + it's a solution that cannot be implemented right now. + + Fallback to CTID remembering though. There are problems too + :-(. Let's enhance the trigger mechanism with a deferred + feature. First this requires two additional bool attributes + in the pg_trigger relation that tell if this trigger is + deferrable and if it is deferred by default. While at it we + should add another bool that tells if the trigger is enabled + (ALTER TRIGGER {ENABLE|DISABLE} trigger). + + Second we need an internal list of triggers, that are + currently DEFINED AS DEFERRED. Either because they default to + it, or the user explicitly asked to deferr it. + + Third we need an internal list of triggers that must be + invoked later because at the time an event occured where they + should have been triggered, they appeared in the other list + and their execution is delayed until transaction end or + explicit execution. This list must remember the OID of the + trigger to invoke (to identify the procedure and the + arguments), the relation that caused the trigger and the + CTID's of the OLD and NEW row. + + That last list could grow extremely! Think of a trigger + that's executing commands over SPI which in turn activate + deferred triggers. Since the order of trigger execution is + very important for RI, I can't see any chance to + simplify/condense this information. Thus it is 16 bytes at + least per deferred trigger call (2 OID's plus 2 CTID's). I + think one or more temp files would fit best for this. + + A last tricky point is if one of a bunch of deferred triggers + is explicitly called for execution. At this time, the entries + for it in the temp file(s) must get processed and marked + executed (maybe by overwriting the triggers OID with the + invalid OID) while other trigger events still have to get + recorded. + + Needless to say that reading thousands of those entries just + to find a few isn't good on performance. But better have this + special case slow that dealing with hundreds of temp files or + other overhead slowing down the usual case where ALL deferred + triggers get called at transaction end. + + Trigger invocation is simple now - fetch the OLD and NEW rows + by CTID and execute the trigger as done by the trigger + manager. Oh - well - vacuum shouldn't touch relations where + deferred triggers are outstanding. Might require some + special lock entry - Vadim? + + Did I miss something? + + +Jan + +-- + +#======================================================================# +# It's easier to get forgiveness for being wrong than for being right. # +# Let's break this rule - forgive me. # +#========================================= wieck@debis.com (Jan Wieck) # + +************ + + +From owner-pgsql-hackers@hub.org Tue Sep 21 08:31:03 1999 +Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id IAA09071 + for ; Tue, 21 Sep 1999 08:31:02 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id IAA25991 for ; Tue, 21 Sep 1999 08:04:59 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) + by hub.org (8.9.3/8.9.3) with ESMTP id HAA82019; + Tue, 21 Sep 1999 07:48:14 -0400 (EDT) + (envelope-from owner-pgsql-hackers@hub.org) +Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 21 Sep 1999 07:47:30 +0000 (EDT) +Received: (from majordom@localhost) + by hub.org (8.9.3/8.9.3) id HAA81906 + for pgsql-hackers-outgoing; Tue, 21 Sep 1999 07:46:38 -0400 (EDT) + (envelope-from owner-pgsql-hackers@postgreSQL.org) +Received: from orion.SAPserv.Hamburg.dsh.de (Tpolaris2.sapham.debis.de [53.2.131.8]) + by hub.org (8.9.3/8.9.3) with SMTP id HAA81888 + for ; Tue, 21 Sep 1999 07:46:26 -0400 (EDT) + (envelope-from wieck@debis.com) +Received: by orion.SAPserv.Hamburg.dsh.de + for hackers@postgreSQL.org + id m11TOGd-0003kwC; Tue, 21 Sep 99 13:39 MET DST +Message-Id: +From: wieck@debis.com (Jan Wieck) +Subject: Re: [HACKERS] Re: Referential Integrity In PostgreSQL +To: andreas.zeugswetter@telecom.at (Andreas Zeugswetter) +Date: Tue, 21 Sep 1999 13:39:27 +0200 (MET DST) +Cc: hackers@postgresql.org +Reply-To: wieck@debis.com (Jan Wieck) +In-Reply-To: <37E74EB9.44F9766E@telecom.at> from "Andreas Zeugswetter" at Sep 21, 99 11:24:09 am +X-Mailer: ELM [version 2.4 PL25] +Content-Type: text +Sender: owner-pgsql-hackers@postgresql.org +Precedence: bulk +Status: RO + +> +> > Oh - well - vacuum shouldn't touch relations where +> > deferred triggers are outstanding. Might require some +> > special lock entry - Vadim? +> +> All modified data will be in this same still open transaction. +> Therefore no relevant data can be removed by vacuum anyway. + + I expect this, but I really need to be sure that not even the + location of the tuple in the heap will change. I need to find + the tuples at the time the deferred triggers must be executed + via heap_fetch() by their CTID! + +> +> It is my understanding, that the RI check is performed on the newest +> available (committed) data (+ modified data from my own tx). +> E.g. a primary key that has been removed by another transaction after +> my begin work will lead to an RI violation if referenced as foreign key. + + Absolutely right. The function that will fire the deferred + triggers must switch to READ COMMITTED isolevel while doing + so. + + What I'm not sure about is which snapshot to use to get the + OLD tuples (outdated in this transaction by a previous + command). Vadim? + + +Jan + +-- + +#======================================================================# +# It's easier to get forgiveness for being wrong than for being right. # +# Let's break this rule - forgive me. # +#========================================= wieck@debis.com (Jan Wieck) # + + + +************ + + +From owner-pgsql-hackers@hub.org Tue Sep 21 10:45:40 1999 +Received: from hub.org (hub.org [216.126.84.1]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA10993 + for ; Tue, 21 Sep 1999 10:45:39 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) + by hub.org (8.9.3/8.9.3) with ESMTP id KAA22590; + Tue, 21 Sep 1999 10:36:16 -0400 (EDT) + (envelope-from owner-pgsql-hackers@hub.org) +Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 21 Sep 1999 10:35:37 +0000 (EDT) +Received: (from majordom@localhost) + by hub.org (8.9.3/8.9.3) id KAA22200 + for pgsql-hackers-outgoing; Tue, 21 Sep 1999 10:34:47 -0400 (EDT) + (envelope-from owner-pgsql-hackers@postgreSQL.org) +Received: from sunpine.krs.ru (SunPine.krs.ru [195.161.16.37]) + by hub.org (8.9.3/8.9.3) with ESMTP id KAA22048 + for ; Tue, 21 Sep 1999 10:33:38 -0400 (EDT) + (envelope-from vadim@krs.ru) +Received: from krs.ru (dune.krs.ru [195.161.16.38]) + by sunpine.krs.ru (8.8.8/8.8.8) with ESMTP id WAA27122; + Tue, 21 Sep 1999 22:33:22 +0800 (KRSS) +Message-ID: <37E79730.CC415030@krs.ru> +Date: Tue, 21 Sep 1999 22:33:20 +0800 +From: Vadim Mikheev +Organization: OJSC Rostelecom (Krasnoyarsk) +X-Mailer: Mozilla 4.5 [en] (X11; I; FreeBSD 3.0-RELEASE i386) +X-Accept-Language: ru, en +MIME-Version: 1.0 +To: Jan Wieck +CC: Andreas Zeugswetter , + hackers@postgreSQL.org +Subject: Re: [HACKERS] Re: Referential Integrity In PostgreSQL +References: +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit +Sender: owner-pgsql-hackers@postgreSQL.org +Precedence: bulk +Status: RO + +Jan Wieck wrote: +> +> > It is my understanding, that the RI check is performed on the newest +> > available (committed) data (+ modified data from my own tx). +> > E.g. a primary key that has been removed by another transaction after +> > my begin work will lead to an RI violation if referenced as foreign key. +> +> Absolutely right. The function that will fire the deferred +> triggers must switch to READ COMMITTED isolevel while doing + ^^^^^^^^^^^^^^ +> so. + +NO! +What if one transaction deleted PK, another one inserted FK +and now both performe RI check? Both transactions _must_ +use DIRTY READs to notice that RI violated by another +in-progress transaction and wait for concurrent transaction... + +BTW, using triggers to check _each_ modified tuple +(i.e. run Executor for each modified tuple) is bad for +performance. We could implement direct support for +standard RI constraints. + +Using rules (statement level triggers) for INSERT...SELECT, +UPDATE and DELETE queries would be nice! Actually, RI constraint +checks need in very simple queries (i.e. without distinct etc) +and the only we would have to do is + +> What I'm not sure about is which snapshot to use to get the +> OLD tuples (outdated in this transaction by a previous +> command). Vadim? + +1. Add CommandId to Snapshot. +2. Use Snapshot->CommandId instead of global CurrentScanCommandId. +3. Use Snapshots with different CommandId-s to get OLD/NEW + versions. + +But I agreed that the size of parsetrees may be big and for +COPY...FROM/INSERTs we should remember IDs of modified +tuples. Well. Please remember that I implement WAL right +now, already have 1000 lines of code and hope to run first +tests after writing additional ~200 lines -:) +We could read modified tuple IDs from WAL... + +Vadim + +************ + + +From owner-pgsql-hackers@hub.org Tue Sep 21 11:18:19 1999 +Received: from hub.org (hub.org [216.126.84.1]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA11537 + for ; Tue, 21 Sep 1999 11:18:18 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) + by hub.org (8.9.3/8.9.3) with ESMTP id LAA27395; + Tue, 21 Sep 1999 11:04:42 -0400 (EDT) + (envelope-from owner-pgsql-hackers@hub.org) +Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 21 Sep 1999 11:03:56 +0000 (EDT) +Received: (from majordom@localhost) + by hub.org (8.9.3/8.9.3) id LAA27106 + for pgsql-hackers-outgoing; Tue, 21 Sep 1999 11:02:50 -0400 (EDT) + (envelope-from owner-pgsql-hackers@postgreSQL.org) +Received: from orion.SAPserv.Hamburg.dsh.de (Tpolaris2.sapham.debis.de [53.2.131.8]) + by hub.org (8.9.3/8.9.3) with SMTP id LAA27041 + for ; Tue, 21 Sep 1999 11:02:34 -0400 (EDT) + (envelope-from wieck@debis.com) +Received: by orion.SAPserv.Hamburg.dsh.de + for hackers@postgreSQL.org + id m11TRKP-0003kLC; Tue, 21 Sep 99 16:55 MET DST +Message-Id: +From: wieck@debis.com (Jan Wieck) +Subject: Re: [HACKERS] Re: Referential Integrity In PostgreSQL +To: vadim@krs.ru (Vadim Mikheev) +Date: Tue, 21 Sep 1999 16:55:33 +0200 (MET DST) +Cc: wieck@debis.com, andreas.zeugswetter@telecom.at, hackers@postgreSQL.org +Reply-To: wieck@debis.com (Jan Wieck) +In-Reply-To: <37E79730.CC415030@krs.ru> from "Vadim Mikheev" at Sep 21, 99 10:33:20 pm +X-Mailer: ELM [version 2.4 PL25] +Content-Type: text +Sender: owner-pgsql-hackers@postgreSQL.org +Precedence: bulk +Status: RO + +> +> Jan Wieck wrote: +> > +> > > It is my understanding, that the RI check is performed on the newest +> > > available (committed) data (+ modified data from my own tx). +> > > E.g. a primary key that has been removed by another transaction after +> > > my begin work will lead to an RI violation if referenced as foreign key. +> > +> > Absolutely right. The function that will fire the deferred +> > triggers must switch to READ COMMITTED isolevel while doing +> ^^^^^^^^^^^^^^ +> > so. +> +> NO! +> What if one transaction deleted PK, another one inserted FK +> and now both performe RI check? Both transactions _must_ +> use DIRTY READs to notice that RI violated by another +> in-progress transaction and wait for concurrent transaction... + + Oh - I see - yes. + +> +> BTW, using triggers to check _each_ modified tuple +> (i.e. run Executor for each modified tuple) is bad for +> performance. We could implement direct support for +> standard RI constraints. + + As I want to implement it, there would be not much difference + between a regular trigger invocation and a deferred one. If + that causes a performance problem, I think we should speed up + the trigger call mechanism in general instead of not using + triggers. + +> +> Using rules (statement level triggers) for INSERT...SELECT, +> UPDATE and DELETE queries would be nice! Actually, RI constraint +> checks need in very simple queries (i.e. without distinct etc) +> and the only we would have to do is +> +> > What I'm not sure about is which snapshot to use to get the +> > OLD tuples (outdated in this transaction by a previous +> > command). Vadim? +> +> 1. Add CommandId to Snapshot. +> 2. Use Snapshot->CommandId instead of global CurrentScanCommandId. +> 3. Use Snapshots with different CommandId-s to get OLD/NEW +> versions. +> +> But I agreed that the size of parsetrees may be big and for +> COPY...FROM/INSERTs we should remember IDs of modified +> tuples. Well. Please remember that I implement WAL right +> now, already have 1000 lines of code and hope to run first +> tests after writing additional ~200 lines -:) +> We could read modified tuple IDs from WAL... + + Not only on COPY. One regular INSERT/UPDATE/DELETE statement + can actually fire thousands of trigger calls right now. These + triggers normally use SPI to execute their own queries. If + such a trigger now uses a query that in turn causes a + deferred constraint, we might have to save thousands of + deferred querytrees - impossible mission. + + That's IMHO a clear drawback against using rules for + deferrable RI. + + What I'm currently doing is clearly encapsulated in some + functions in commands/trigger.c (except for some additional + attributes in pg_trigger). If it later turns out that we can + combine the information required into WAL, I think we have + time enough to do so and shouldn't really care if v6.6 + doesn't have it already combined. + + +Jan + +-- + +#======================================================================# +# It's easier to get forgiveness for being wrong than for being right. # +# Let's break this rule - forgive me. # +#========================================= wieck@debis.com (Jan Wieck) # + + + +************ + + +From owner-pgsql-hackers@hub.org Tue Sep 21 15:30:29 1999 +Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) + by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA14590 + for ; Tue, 21 Sep 1999 15:30:28 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id PAA09192 for ; Tue, 21 Sep 1999 15:06:09 -0400 (EDT) +Received: from hub.org (hub.org [216.126.84.1]) + by hub.org (8.9.3/8.9.3) with ESMTP id OAA73126; + Tue, 21 Sep 1999 14:56:15 -0400 (EDT) + (envelope-from owner-pgsql-hackers@hub.org) +Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 21 Sep 1999 14:54:47 +0000 (EDT) +Received: (from majordom@localhost) + by hub.org (8.9.3/8.9.3) id OAA72607 + for pgsql-hackers-outgoing; Tue, 21 Sep 1999 14:53:51 -0400 (EDT) + (envelope-from owner-pgsql-hackers@postgreSQL.org) +Received: from orion.SAPserv.Hamburg.dsh.de (Tpolaris2.sapham.debis.de [53.2.131.8]) + by hub.org (8.9.3/8.9.3) with SMTP id OAA72516 + for ; Tue, 21 Sep 1999 14:52:56 -0400 (EDT) + (envelope-from wieck@debis.com) +Received: by orion.SAPserv.Hamburg.dsh.de + for pgsql-hackers@postgreSQL.org + id m11TUvX-0003kLC; Tue, 21 Sep 99 20:46 MET DST +Message-Id: +From: wieck@debis.com (Jan Wieck) +Subject: [HACKERS] RI question +To: pgsql-hackers@postgreSQL.org (PostgreSQL HACKERS) +Date: Tue, 21 Sep 1999 20:46:06 +0200 (MET DST) +Reply-To: wieck@debis.com (Jan Wieck) +X-Mailer: ELM [version 2.4 PL25] +Content-Type: text +Sender: owner-pgsql-hackers@postgreSQL.org +Precedence: bulk +Status: RO + +Uh oh, + + I think deferred RI constraints must only fire the actions + that remain after all commands during the entire transaction + are condensed to the total minimum required to get that + state, because deferred RI must only check what VISIBLY + happened during the transaction. + + Thinking on the tuple level, a sequence of + INSERT,UPDATE,UPDATE must fire only one INSERT trigger, but + with the values of the last UPDATE. An UPDATE,DELETE sequence + is in fact a DELETE of the original tuple and an + INSERT,UPDATE,DELETE sequence is nothing. + + That means that the recording mechnism of the trigger events + must be very smart on UPDATE and DELETE events, looking at + the x_min of the old tuple if that resulted from the current + transaction. If so, follow the events backward, disable + previous ones and change the new event into what it really + has to be. + + But some problems remain unsolvable by this: + + - PK has an ON DELETE CASCADE for FK + - BEGIN + - DELETE PK + - INSERT same PK + - COMMIT. + + This really shouldn't invoke the cascading delete, because at + COMMIT the PK still is there. Same for a constraint that + forbids deletion of a PK while referenced by FK. Therefore + the deferred event recorder must check on INSERT any previous + DELETES for the same relation if the key does match and drop + both deferred triggers if so. Therefore it needs to know + which attributes build the PK of that relation + (_pkey guaranteed?). + + Well, I think that's finally the death of RI over rules. The + code managing those rules during CREATE/ALTER TABLE would + become totally unmaintainable. And (sorry Vadim) it's the + death of SLT for this too because this event tracking must be + done on the tuple level. + + It complicated the trigger approach too, but IMHO not too + bad. Anyway, some co-developer(s) doing the parser- and + utility-statement stuff (SET CONSTRAINTS ... etc.) would be + great. + + Volunteers? + + +Jan + +-- + +#======================================================================# +# It's easier to get forgiveness for being wrong than for being right. # +# Let's break this rule - forgive me. # +#========================================= wieck@debis.com (Jan Wieck) # + + + +************ + + diff --git a/doc/TODO.detail/tcl_arrays b/doc/TODO.detail/tcl_arrays index 25f5da5bac..5075f398b3 100644 --- a/doc/TODO.detail/tcl_arrays +++ b/doc/TODO.detail/tcl_arrays @@ -2,7 +2,7 @@ From owner-pgsql-patches@hub.org Wed Oct 14 17:31:26 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA01594 for ; Wed, 14 Oct 1998 17:31:24 -0400 (EDT) -Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.3 $) with ESMTP id RAA01745 for ; Wed, 14 Oct 1998 17:12:28 -0400 (EDT) +Received: from hub.org (majordom@hub.org [209.47.148.200]) by renoir.op.net (o1/$Revision: 1.4 $) with ESMTP id RAA01745 for ; Wed, 14 Oct 1998 17:12:28 -0400 (EDT) Received: from localhost (majordom@localhost) by hub.org (8.8.8/8.8.8) with SMTP id RAA06607; Wed, 14 Oct 1998 17:10:43 -0400 (EDT) diff --git a/doc/TODO.detail/yacc b/doc/TODO.detail/yacc index aa3e5a352e..66c3821381 100644 --- a/doc/TODO.detail/yacc +++ b/doc/TODO.detail/yacc @@ -2,7 +2,7 @@ From selkovjr@mcs.anl.gov Sat Jul 25 05:31:05 1998 Received: from renoir.op.net (root@renoir.op.net [209.152.193.4]) by candle.pha.pa.us (8.8.5/8.8.5) with ESMTP id FAA16564 for ; Sat, 25 Jul 1998 05:31:03 -0400 (EDT) -Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) by renoir.op.net (o1/$Revision: 1.2 $) with SMTP id FAA01775 for ; Sat, 25 Jul 1998 05:28:22 -0400 (EDT) +Received: from antares.mcs.anl.gov (mcs.anl.gov [140.221.9.6]) by renoir.op.net (o1/$Revision: 1.3 $) with SMTP id FAA01775 for ; Sat, 25 Jul 1998 05:28:22 -0400 (EDT) Received: from mcs.anl.gov (wit.mcs.anl.gov [140.221.5.148]) by antares.mcs.anl.gov (8.6.10/8.6.10) with ESMTP id EAA28698 for ; Sat, 25 Jul 1998 04:27:05 -0500 Sender: selkovjr@mcs.anl.gov