| From: | "Magnus Hagander" <mha(at)sollentuna(dot)net> |
|---|---|
| To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Merlin Moncure" <merlin(dot)moncure(at)rcsonline(dot)com> |
| Cc: | <pgsql-hackers(at)postgresql(dot)org>, <pgsql-performance(at)postgresql(dot)org> |
| Subject: | Re: [HACKERS] insert performance for win32 |
| Date: | 2005-11-04 18:30:32 |
| Message-ID: | 6BCB9D8A16AC4241919521715F4D8BCE92E7F7@algol.sollentuna.se |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers pgsql-performance |
> >> AFAICS it is appropriate to move the sigsetjmp and
> >> setup_cancel_handler calls in front of the per-line loop inside
> >> MainLoop --- can anyone see a reason not to?
>
> > hm. mainloop is re-entrant, right? That means each \i
> would reset the
> > handler...what is downside to keeping global flag?
>
> Ah, right, and in fact I'd missed the comment at line 325
> pointing out that we're relying on the sigsetjmp to be
> re-executed every time through. That could be improved on,
> likely, but not right before a release.
>
> Does the flag need to be global? I'm thinking
>
> void
> setup_cancel_handler(void)
> {
> + static bool done = false;
> +
> + if (!done)
> SetConsoleCtrlHandler(consoleHandler, TRUE);
> + done = true;
> }
>
Seems like a simple enough solution, don't see why it shouldn't work. As
long as psql is single-threaded, which it is...
(Actually, that code seems to re-set done=true on every call which seems
unnecessary - but that might be optimised away, I guess)
//Magnus
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2005-11-04 18:37:32 | Re: insert performance for win32 |
| Previous Message | Merlin Moncure | 2005-11-04 18:26:52 | Re: insert performance for win32 |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Qingqing Zhou | 2005-11-04 18:30:34 | Re: insert performance for win32 |
| Previous Message | Bruce Momjian | 2005-11-04 18:21:07 | Re: [HACKERS] insert performance for win32 |