pgsql: Improve the manual's discussion of partitioning.

Started by Nonameabout 18 years ago3 messages
#1Noname
tgl@postgresql.org

Log Message:
-----------
Improve the manual's discussion of partitioning. Recommend using a
trigger instead of a rule to redirect insertions, use NEW.* notation
where appropriate, some other updates and adjustments. David Fetter
and Tom Lane

Modified Files:
--------------
pgsql/doc/src/sgml:
ddl.sgml (r1.77 -> r1.78)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ddl.sgml?r1=1.77&r2=1.78)

#2ITAGAKI Takahiro
itagaki.takahiro@oss.ntt.co.jp
In reply to: Noname (#1)
Re: [COMMITTERS] pgsql: Improve the manual's discussion of partitioning.

tgl@postgresql.org (Tom Lane) wrote:

Log Message:
-----------
Improve the manual's discussion of partitioning. Recommend using a
trigger instead of a rule to redirect insertions, use NEW.* notation
where appropriate, some other updates and adjustments. David Fetter
and Tom Lane

I have a fix (1) and two comments (2 and 3) in the documentation.

1. "IF (logdate)" should be "IF (NEW.logdate)" in the trigger function.
INSERT fails without "NEW." before logdate.
=# INSERT INTO measurement VALUES(1, DATE '2007-12-03', 0, 0);
ERROR: column "logdate" does not exist

2. What is the purpose of "2. Next we create one partition ..." ?
We will recreate tables in "3. We must add non-overlapping table
constraints...". Is the chapter 2 useless? When users copy-and-paste
the codes in the topic, they run into errors at the chapter 3.

3. Is it worth reversing the order of checking date in the trigger function?
I think the newer partions are more often inserted in this case.
If we check the newer partion first, we can skip the remaining checks.
This is one of the advantage of by-trigger partitioning than by-rule.

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: ITAGAKI Takahiro (#2)
Re: [COMMITTERS] pgsql: Improve the manual's discussion of partitioning.

ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp> writes:

I have a fix (1) and two comments (2 and 3) in the documentation.

1. "IF (logdate)" should be "IF (NEW.logdate)" in the trigger function.
INSERT fails without "NEW." before logdate.

How embarrassing ... I tested the other parts of the example, but not that.

2. What is the purpose of "2. Next we create one partition ..." ?
We will recreate tables in "3. We must add non-overlapping table
constraints...". Is the chapter 2 useless? When users copy-and-paste
the codes in the topic, they run into errors at the chapter 3.

It's trying to describe things a step at a time. If we collapsed these
two parts together I think it might be too complex. We could change
the wording a bit, or change the step-3 stuff to ALTER TABLE ADD
CONSTRAINT.

3. Is it worth reversing the order of checking date in the trigger function?
I think the newer partions are more often inserted in this case.

That might be good in a real case, but I think it would just complicate
the example ...

regards, tom lane