This patch to shell.c will "fix" the ctrl-c ... This is for an older version
of shell.c, so you may have to fiddle to apply the patch to the current
version. However, it does work (on Windows).
--- shell.c
+++ shell.c
@@ -794,20 +794,35 @@
if( bSep ){
fprintf(p->out, "%s", p->colSeparator);
}
}
-#ifdef SIGINT
+#if defined(SIGINT) || defined(_WIN32) || defined(WIN32)
/*
** This routine runs when the user presses Ctrl-C
*/
static void interrupt_handler(int NotUsed){
UNUSED_PARAMETER(NotUsed);
seenInterrupt++;
if( seenInterrupt>2 ) exit(1);
if( db ) sqlite3_interrupt(db);
}
+
+#if defined(_WIN32) || defined(WIN32)
+/*
+** Windows event handler
+*/
+BOOL WINAPI CtrlHandler(DWORD dwType){
+ switch( dwType ){
+ case CTRL_C_EVENT:
+ interrupt_handler(0);
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+#endif
#endif
/*
** This is the callback routine that the shell
** invokes for each row of a query result.
@@ -4384,10 +4399,12 @@
/* Make sure we have a valid signal handler early, before anything
** else is done.
*/
#ifdef SIGINT
signal(SIGINT, interrupt_handler);
+#elif defined(WIN32) || defined(_WIN32)
+ SetConsoleCtrlHandler(CtrlHandler, TRUE);
#endif
#ifdef SQLITE_SHELL_DBNAME_PROC
{
/* If the SQLITE_SHELL_DBNAME_PROC macro is defined, then it is the name
---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a
lot about anticipated traffic volume.
>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[email protected]] On Behalf Of David Raymond
>Sent: Monday, 18 September, 2017 09:32
>To: SQLite mailing list
>Subject: Re: [sqlite] Number of rows in answer set
>
>As far as a use case, something like this would be great for use in
>the CLI for example. Sometimes I'll run a query expecting a dozen
>results only to get page after page scrolling by. Having something
>akin to "select changes();" that returns an instant answer of how
>many were selected would be great, as opposed to re-running the whole
>query as a "select count(*) from (original query);" Or something like
>the .changes option that would show a final line of "selected:
>123,456 rows"
>
>Side note: The page after page of unexpected results scrolling by is
>why I'd love a ctrl-c event in the CLI that stops the current query
>but keeps the connection open. If I've attached a few databases and
>populated a handful of temp tables then it's a choice of getting some
>coffee while all the results scroll by, or killing it and spending
>the same time re-populating the temp tables. There's no way to just
>stop the query and keep the CLI open. (That I'm aware of anyway)
>_______________________________________________
>sqlite-users mailing list
>[email protected]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users