> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:pgsql-hackers- > [EMAIL PROTECTED] On Behalf Of Magnus Hagander > Sent: Friday, November 04, 2005 10:31 AM > To: Tom Lane; Merlin Moncure > Cc: pgsql-hackers@postgresql.org; pgsql-performance@postgresql.org > Subject: Re: [HACKERS] [PERFORM] insert performance for win32 > > > >> 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
How about: 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 > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faq ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster