This is an automated email from the ASF dual-hosted git repository.
ozankabak pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new e6b9f527d3 ctrl+c termination (#8739)
e6b9f527d3 is described below
commit e6b9f527d3a1823887b32a8d3dfca85ea21b204c
Author: Berkay Şahin <[email protected]>
AuthorDate: Thu Jan 4 09:18:04 2024 +0300
ctrl+c termination (#8739)
---
datafusion-cli/Cargo.lock | 10 ++++++++++
datafusion-cli/Cargo.toml | 2 +-
datafusion-cli/src/exec.rs | 13 ++++++++++---
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/datafusion-cli/Cargo.lock b/datafusion-cli/Cargo.lock
index e85e8b1a9e..252b00ca0a 100644
--- a/datafusion-cli/Cargo.lock
+++ b/datafusion-cli/Cargo.lock
@@ -3060,6 +3060,15 @@ dependencies = [
"digest",
]
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "siphasher"
version = "0.3.11"
@@ -3371,6 +3380,7 @@ dependencies = [
"num_cpus",
"parking_lot",
"pin-project-lite",
+ "signal-hook-registry",
"socket2",
"tokio-macros",
"windows-sys 0.48.0",
diff --git a/datafusion-cli/Cargo.toml b/datafusion-cli/Cargo.toml
index e1ddba4cad..eab7c8e0d1 100644
--- a/datafusion-cli/Cargo.toml
+++ b/datafusion-cli/Cargo.toml
@@ -45,7 +45,7 @@ parking_lot = { version = "0.12" }
parquet = { version = "49.0.0", default-features = false }
regex = "1.8"
rustyline = "11.0"
-tokio = { version = "1.24", features = ["macros", "rt", "rt-multi-thread",
"sync", "parking_lot"] }
+tokio = { version = "1.24", features = ["macros", "rt", "rt-multi-thread",
"sync", "parking_lot", "signal"] }
url = "2.2"
[dev-dependencies]
diff --git a/datafusion-cli/src/exec.rs b/datafusion-cli/src/exec.rs
index ba9aa2e69a..2320a8c314 100644
--- a/datafusion-cli/src/exec.rs
+++ b/datafusion-cli/src/exec.rs
@@ -45,6 +45,7 @@ use datafusion::sql::{parser::DFParser,
sqlparser::dialect::dialect_from_str};
use object_store::ObjectStore;
use rustyline::error::ReadlineError;
use rustyline::Editor;
+use tokio::signal;
use url::Url;
/// run and execute SQL statements and commands, against a context with the
given print options
@@ -165,9 +166,15 @@ pub async fn exec_from_repl(
}
Ok(line) => {
rl.add_history_entry(line.trim_end())?;
- match exec_and_print(ctx, print_options, line).await {
- Ok(_) => {}
- Err(err) => eprintln!("{err}"),
+ tokio::select! {
+ res = exec_and_print(ctx, print_options, line) => match
res {
+ Ok(_) => {}
+ Err(err) => eprintln!("{err}"),
+ },
+ _ = signal::ctrl_c() => {
+ println!("^C");
+ continue
+ },
}
// dialect might have changed
rl.helper_mut().unwrap().set_dialect(