From: | Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com> |
---|---|
To: | Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp> |
Subject: | Re: pgsql_fdw, FDW for PostgreSQL server |
Date: | 2011-10-30 01:22:23 |
Message-ID: | CAEZqfEdKyWqsc9Ms5Le4fcKuPWoNEbQCV5HP+VPEs9edUAbu1A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2011/10/29 Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com>:
> I have a doubt here, on sharing connection for each server. What if
> there are simultaneous scan on the same plan? Say,
>
> -> Nested Loop
> -> Foreign Scan to table T1 on server A
> -> Foreign Scan to table T2 on server A
>
> Okay, you are thinking about Foreign Join, so example above is too
> simple. But it is always possible to execute such a query if foreign
> scan nodes are separated far, isn't it? As far as I see from your
> explanation, scan T1 and scan T2 share the same connection. Now join
> node scans one row from left (T1) while asking rows from right (T2)
> without fetching all the rows from left. If T2 requests to server A,
> the connection's result (of T1) is discarded. Am I understand
> correctly?
I think that sharing a connection doesn't cause any problem.
In cursor mode, using multiple cursors concurrently through one connection
is OK. In SELECT mode, pgsql_fdw executes SELECT statement with
PQexecParams and retrieves whole result *inside* the first Iterate call for
an outer tuple. So libpq connection is already available when another scan
needs to call Iterate function.
--
Shigeru Hanada
From | Date | Subject | |
---|---|---|---|
Next Message | Shigeru Hanada | 2011-10-30 02:34:06 | Re: pgsql_fdw, FDW for PostgreSQL server |
Previous Message | Robert Haas | 2011-10-30 00:04:09 | Re: [v9.2] make_greater_string() does not return a string in some cases |