| From: | "Imai, Yoshikazu" <imai(dot)yoshikazu(at)jp(dot)fujitsu(dot)com> | 
|---|---|
| To: | 'David Rowley' <david(dot)rowley(at)2ndquadrant(dot)com>, Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> | 
| Cc: | Amit Langote <amitlangote09(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | RE: speeding up planning with partitions | 
| Date: | 2019-01-11 06:10:00 | 
| Message-ID: | 0F97FA9ABBDBE54F91744A9B37151A51257EAE@g01jpexmbkw24 | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Hi David,
On Thu, Jan 10, 2019 at 4:02 PM, David Rowley wrote:
> 3. I wonder if there's a better way to handle what
> build_dummy_partition_rel() does. I see the child's relid to the
> parent's relid and makes up a fake AppendRelInfo and puts it in the
> parent's slot.  What's going to happen when the parent is not the
> top-level parent? It'll already have a AppendRelInfo set.
... 
> 
> select * from parent p1 inner join parent p2 on p1.a=p2.a where p1.id < 10;
I think there is a mistake in the select SQL.
"p1.id < 10" doesn't prune any partition because tables are partitioned by
column "a" in your definition. Isn't it?
> Does that not mean that the if (parent->top_parent_relids) will always
> be false in build_dummy_partition_rel() and it'll only ever get
> rtekind == RTE_RELATION?
At least, I checked if (parent->top_parent_relids) can be true if I execute
below SQL.
select * from parent p1 inner join parent p2 on p1.a=p2.a where p1.id < 15;
I couldn't check other points you mentioned, but I also think
build_dummy_partition_rel() needs more consideration because I felt it has
complicated logic when I was checking around here.
Amit,
I also realized there are some mistakes in the comments around this function.
+ * build_dummy_partition_rel
+ *		Build a RelOptInfo and AppendRelInfo for a pruned partition 
s/and AppendRelInfo/and an AppendRelInfo/
+	 * Now we'll need a (no-op) AppendRelInfo for parent, because we're
+	 * setting the dummy partition's relid to be same as the parent's.
s/a \(no-op\) AppendRelInfo/an \(no-op\) AppendRelInfo/
--
Yoshikazu Imai
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Masahiko Sawada | 2019-01-11 06:13:27 | Re: New vacuum option to do only freezing | 
| Previous Message | Chapman Flack | 2019-01-11 05:19:34 | Re: doc: where best to add ~ 400 words to the manual? |