From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Souvik Bhattacherjee <kivuosb(at)gmail(dot)com> |
Cc: | Michel Pelletier <pelletier(dot)michel(at)gmail(dot)com>, "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Method to pass data between queries in a multi-statement transaction |
Date: | 2019-04-18 21:34:10 |
Message-ID: | CAKFQuwb9aCB1KyXdZV3Y9aaOexpr8eQMwkTvFjo4F7OQJ+zRjw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Thu, Apr 18, 2019 at 9:03 AM Souvik Bhattacherjee <kivuosb(at)gmail(dot)com>
wrote:
> Thanks Michel.
>
> However this only works if a is an unique attribute in the table that
> would help us to identify tuples that participated in the join. Consider
> the following join:
>
> insert into table3 (id, level, empname, salary)
> (select t0.cid, t0.level, t1.empname, t2.salary from table0 t0, table1
> t1, table2 t2 where t0.cid = t1.cid and t1.pid = t2.pid);
>
> Now if I want to delete those tuples from table2 that satisfied the join
> condition, I need to execute the join again with additional attributes.
>
Or just add pid to table3...
> Also note that based on query plan, i.e. whether table0 and table1 were
> joined first followed by table1 and table2, we have to execute one
> additional join to get the tuples in table2 that satisfied the join
> condition (t1.pid = t2.pid).
>
???
> Getting that information while the query is executed may not be difficult.
> There are other use cases in my application that require me to transfer the
> data from one query to the next within a transaction.
>
There may be some that benefit to some degree but its likely that you can
write the application and queries in such a way to avoid a hard requirement.
Thus, what I'm looking for here is way to store the information and then
> pass that information to the next query efficiently.
>
For example, is it possible to define a struct of my choice, private to the
> current transaction, that would store the data and then pass it around to
> the next query in the transaction without having to materialize that struct
> (or deal with concurrency issues as in the hash table approach mentioned
> earlier) .
>
How much development and maintenance effort are you willing to spend here
to gain what is likely to amount to only a bit of efficiency? Many things
are possible if you are going to modify the server code but why add grief?
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Gavin Flower | 2019-04-18 22:58:10 | Re: Multicolumn index for single-column queries? |
Previous Message | Ravi Krishna | 2019-04-18 19:12:43 | Re: SQL query |