samuelcolvin commented on issue #11979:
URL: https://github.com/apache/datafusion/issues/11979#issuecomment-2292143867

   > I like the idea to have a cli frontend that is query engine agnostic 
(datafusion, duckdb), table agnostic (iceberg, delta), file agnostic (parquet, 
lance), and even more.
   
   Surely this should just be a CLI that speaks arrow flight SQL? I've tried to 
persuade ClickHouse to adopt arrow flight SQL to get around their woeful Python 
client.
   
   That sounds interesting, but I agree with @alamb that that's a different 
question.
   
   ---
   
   I like the broad idea here, while I like `datafusion-cli`, it definitely 
feels incomplete.
   
   Where I disagree (I think) with @alamb is around what it lacks — my main 
problem with `datafusion-cli` is the "UI" — all the small parts of the best 
CLIs which make the difference:
   * syntax highlighting (like duckdb)
   * good multiline vs single line support (like pgcli)
   * good error summaries e.g. point are the part of the statement that's wrong 
(like ipython)
   * pretty tables (like duckdb or rich, not "ugly" ascii dashes)
   * convienient CSV and JSON export (like duckdb) — maybe datafusion-cli 
already does this, I haven't tried
   * convient way to display rows as "details" when they're too long to show as 
tables (like clickhouse-cli)
   * proper terminal interface for horizontal scrolling (I think rich/textual 
has good support for this)
   * good introspection shortchuts (like pgcli) - e.g. `\d` or `\dt`
   * support for running multiple queries from a file (like psql I think)
   * (minor) good support for timing queries, on by default
   * JSON query support, I guess since Rust has a poor story when it comes to 
dynamic linking, just bundling `datafusion-functions-json` would be good enough
   
   There's one more thing that I've wanted from a database CLI many times and 
nothing (AFAIK) supports:
   * Plotting right from the CLI - I guess the obvious solution is terminal 
ploting [like this](https://github.com/JuliaPlots/UnicodePlots.jl), you could 
could also imagine a plot command opening a plot in a webbrowser for easier 
interaction
   
   Anyway, that's my wish list, as you might guess I've thought about this a 
fair bit!
   
   ---
   
   One last thing I'll say — virtually all of the above features would be 
independent of the query engine being used, so there is a good argument to 
build one great CLI user experience (or let someone else build it) and make it 
pluggable into any query engine that speaks Arrow Flight SQL, whether that be 
over a network, or just as an API within a single binary or between dynamically 
linked libaries.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to