Обсуждение: dblink without running the full query remotely?

Поиск
Список
Период
Сортировка

dblink without running the full query remotely?

От
Wells Oliver
Дата:
Per the documentation -- dblink fetches the entire remote query result before returning any of it to the local system -- I am guessing the answer is no, but I wondered if there was some way to do something like this:

create view myview as;
select * from dblink(
    'server',
    'select id from sometable')
cols(id bigint);


And then

select * from myview where id = 123;

Where that remote sometable might have a bajillion rows and the local where would be passed to it otherwise it's days and days for all rows to be returned and then filtered.

--

Re: dblink without running the full query remotely?

От
Tom Lane
Дата:
Wells Oliver <wells.oliver@gmail.com> writes:
> Per the documentation -- *dblink fetches the entire remote query result
> before returning any of it to the local system* -- I am guessing the answer
> is no, but I wondered if there was some way to do something like this:
> ...
> Where that remote sometable might have a bajillion rows and the local where
> would be passed to it

No, and it's unlikely anyone would ever put effort into making dblink
do that, because the newer foreign table (FDW) code *does* handle that
sort of thing.  dblink still has its uses, but it's pretty much at a
dead end developmentally.  Take a look at postgres_fdw.

            regards, tom lane



Re: dblink without running the full query remotely?

От
Wells Oliver
Дата:
Thanks, this it exactly.

Correlated, is there a way to define a fdw user mapping for a role versus for every single individual user in a database?


On Fri, Aug 25, 2023 at 2:16 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Wells Oliver <wells.oliver@gmail.com> writes:
> Per the documentation -- *dblink fetches the entire remote query result
> before returning any of it to the local system* -- I am guessing the answer
> is no, but I wondered if there was some way to do something like this:
> ...
> Where that remote sometable might have a bajillion rows and the local where
> would be passed to it

No, and it's unlikely anyone would ever put effort into making dblink
do that, because the newer foreign table (FDW) code *does* handle that
sort of thing.  dblink still has its uses, but it's pretty much at a
dead end developmentally.  Take a look at postgres_fdw.

                        regards, tom lane


--

Re: dblink without running the full query remotely?

От
M Sarwar
Дата:
Probably this is neither possible in Oracle nor in Postgres.
If you are willing to take a complex route, Postgres will allow you to point to PUBLIC  schema where you will need to export the objects at least once for each schema from the source environment.
I hope that I am not slipping any thing.
Thanks,
Sarwar


From: Wells Oliver <wells.oliver@gmail.com>
Sent: Friday, August 25, 2023 6:12 PM
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-admin <pgsql-admin@postgresql.org>
Subject: Re: dblink without running the full query remotely?
 
Thanks, this it exactly.

Correlated, is there a way to define a fdw user mapping for a role versus for every single individual user in a database?


On Fri, Aug 25, 2023 at 2:16 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Wells Oliver <wells.oliver@gmail.com> writes:
> Per the documentation -- *dblink fetches the entire remote query result
> before returning any of it to the local system* -- I am guessing the answer
> is no, but I wondered if there was some way to do something like this:
> ...
> Where that remote sometable might have a bajillion rows and the local where
> would be passed to it

No, and it's unlikely anyone would ever put effort into making dblink
do that, because the newer foreign table (FDW) code *does* handle that
sort of thing.  dblink still has its uses, but it's pretty much at a
dead end developmentally.  Take a look at postgres_fdw.

                        regards, tom lane


--