On Thu, Apr 18, 2019 at 9:03 AM Souvik Bhattacherjee <kivu...@gmail.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.

Reply via email to