Re: [v9.3] writable foreign tables
От | Daniel Farina |
---|---|
Тема | Re: [v9.3] writable foreign tables |
Дата | |
Msg-id | CAAZKuFbSKeiTnoTA89WNbugPfbvV6wawZG+7Wm=NTEX9wA+ZoQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [v9.3] writable foreign tables (Daniel Farina <daniel@heroku.com>) |
Ответы |
Re: [v9.3] writable foreign tables
|
Список | pgsql-hackers |
On Fri, Feb 1, 2013 at 2:22 AM, Daniel Farina <daniel@heroku.com> wrote: > On Tue, Jan 29, 2013 at 1:19 AM, Kohei KaiGai <kaigai@kaigai.gr.jp> wrote: >> I noticed the v10 patch cannot be applied on the latest master branch >> cleanly. The attached ones were rebased. > > Anyway, I'm looking at the first patch, which applies neatly. Thanks. Hello, My review is incomplete, but to the benefit of pipelining I wanted to ask a couple of things and submit some changes for your consideration while continuing to look at this. So far, I've been trying to understand in very close detail how your changes affect non-FDW related paths first, before delving into the actual writable FDW functionality. There's not that much in this category, but there's one thing that gave me pause: the fact that the target list (by convention, tlist) has to be pushed down from planmain.c/query_planner all the way to a fdwroutine->GetForeignRelWidth callsite in plancat.c/get_relation_info (so even in the end, it is just pushed down -- never inspected or modified). In relative terms, it's a significant widening of currently fairly short parameter lists in these procedures: add_base_rels_to_query(PlannerInfo *root, List *tlist, Node *jtnode) build_simple_rel(PlannerInfo *root, int relid, List *tlist, RelOptKind reloptkind) get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, List *tlist, RelOptInfo *rel) In the case of all the other parameters except tlist, each is more intimately related with the inner workings and mechanisms of the procedure. I wonder if there's a nice way that can train the reader's eye that the tlist is simply pushed down rather than actively managed at each level. However, I can't immediately produce a way to both achieve that that doesn't seem overwrought. Perhaps a comment will suffice. Related to this, I found that make_modifytable grew a dependency on PlannerInfo *root, and it seemed like a bunch of the arguments are functionally related to that, so the attached patch that should be able to be applied to yours tries to utilize that as often as possible. The weirdest thing in there is how make_modifytable has been taught to call SS_assign_special_param, which has a side effect on the PlannerInfo, but there exist exactly zero cases where one *doesn't* want to do that prior to the (exactly two) call sites to make_modifytable, so I pushed it in. The second weirdest thing is pushing in the handling of rowMarks (e.g. SELECT FOR UPDATE et al) Let me know as to your thoughts, otherwise I'll keep moving on... -- fdr
Вложения
В списке pgsql-hackers по дате отправления: