Re: [HACKERS] Proposal for async support in libpq

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: tgl(at)sss(dot)pgh(dot)pa(dot)us (Tom Lane)
Cc: hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] Proposal for async support in libpq
Date: 1998-04-17 20:26:22
Message-ID: 199804172026.QAA29465@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

>
> Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> writes:
> > This all looks good. Another thing we really need it to be able to
> > cancel queries. This would be a big win, and looks like it could fit
> > into the scheme here.
>
> I thought about proposing a PQcancelAsync that would cancel the active
> query-in-progress. But that would require support on the backend side,
> and I am far from competent to make it happen. (libpq is simple enough
> that I'm not afraid to rewrite it, but making major mods to the backend
> is another story. I just got here this week...)
>
> If anyone who does know what they're doing is willing to make the
> necessary backend mods, I'm all for it. The libpq side would be
> easy enough.
>
> How would such cancellation interact with transactions, btw? Would
> you expect it to roll back only the current command, or abort the
> whole transaction? We'd also have to consider corner cases, like
> when the backend has already finished the query by the time it gets
> the cancel request.

It is pretty easy, just an elog(ERROR) would do it. The issue is
allowing the backend to see the request. We can put some checks in
tcop/postgres.c as it moves from module to module, and something in the
executor to check for the cancel, and do an elog(ERROR). It would be
nice if it arrived as out-of-band data, so we could check for input
quickly without having to actually process it if it is not a cancel
notification.

The out-of-band data will send a SIGURG signal to the backend, and we
can set a global variable, and check the variable at various places.

To do all this, we need to be able to send a query, and not have it
block, and it seems you are giving us this capability.

You supply the indication to the backend, and I will see that the
backend processes it properly.

--
Bruce Momjian | 830 Blythe Avenue
maillist(at)candle(dot)pha(dot)pa(dot)us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 1998-04-17 20:47:45 Re: [HACKERS] Proposal for async support in libpq
Previous Message Tom Lane 1998-04-17 19:51:17 Re: [HACKERS] Proposal for async support in libpq