[
https://issues.apache.org/jira/browse/CASSANDRA-19985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18105493#comment-18105493
]
Arvind Kandpal commented on CASSANDRA-19985:
--------------------------------------------
Hi [~bschoeni] ,
Thanks for the detailed review, I've addressed all of these:
* OutputMode enum is now used consistently throughout (replaced the leftover
string comparisons)
* Both CSV and JSON printers now use the formatted_names parameter directly
instead of stashing self._colnames — dropped the implicit ordering dependency
* Removed the dead row_count_offset param (also caught a call-site bug this
introduced — one caller was still passing the old positional arg, which
would've broken paging)
* JSON now emits full float precision (float_precision=None), confirmed with a
high-precision double round-tripping correctly
* CSV nulls are now empty fields, matching COPY TO's default. Kept CSV's
display precision unchanged so it doesn't regress
* Documented the duplicate-column JSON limitation, both inline and in cqlsh.adoc
Also found and fixed one more while testing: an invalid mode set via cqlshrc
was throwing a raw traceback instead of failing cleanly like the CLI flag does
— fixed that too.
Added 3 new unit tests covering CSV nulls, JSON precision, and duplicate
columns, all passing along with the full existing suite (47/47). Also ran
everything manually against a live node — paging, empty results, CAS ops,
SOURCE inheritance, cqlshrc vs CLI validation — all checked out fine.
Pushed the update, let me know if anything's still off.
> Enhance CQLSH to support machine-readable output formatting
> -----------------------------------------------------------
>
> Key: CASSANDRA-19985
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19985
> Project: Apache Cassandra
> Issue Type: New Feature
> Components: CQL/Interpreter
> Reporter: Brad Schoening
> Assignee: Arvind Kandpal
> Priority: Normal
> Attachments: json_formatters_example.py, test_json_formatting.py
>
> Time Spent: 1h 50m
> Remaining Estimate: 0h
>
> Existing CQLSH output formatting provides tabular formatting using grid-like
> separators and text alignment which is designed for user readability.
> When CQL is run for non-interactive tasks as part of a pipeline this
> formatting complicates the machine processing of the output. As an example,
> [Sqlite|https://www.sqlite.org/cli.html] has a command line flag -mode to
> switch between tablular, csv, and several other supported formats.
> This enhancement will provide a new mode argument which will initially offer
> tabular and csv output formats. Tabular will remain the default so there will
> be no change for existing users. In the future, other modes such as json and
> insert could be added.
> {noformat}
> --mode={tabular, csv}
> Specify an output display format. The default is tabular.
> {noformat}
> The existing Copy To can be used for exporting to CSV, but it doesn't allow
> for query criteria and thus isn't a general solution for this issue.
> In cqlshmain.py, the EXPAND CQLSH option which uses print_formatted_result()
> for result output is an example of alternative formatting.
> Paging will have to be properly managed. A good formatter should handle a
> stream of rows rather than requiring the entire list in memory, especially
> for large SELECT * queries.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]