You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Andres de la Peña (Jira)" <ji...@apache.org> on 2021/07/28 16:38:00 UTC

[jira] [Commented] (CASSANDRA-16818) Fix usage instructions about sstabledump -k and -x options

    [ https://issues.apache.org/jira/browse/CASSANDRA-16818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17388883#comment-17388883 ] 

Andres de la Peña commented on CASSANDRA-16818:
-----------------------------------------------

[This patch|https://github.com/apache/cassandra/compare/cassandra-4.0...adelapena:16818-4.0-instuctions-only] changes the description of the options adds extends the error message in this way:
{code:java}
$ /sstabledump -k 1 <sstable_path>
You must supply exactly one sstable, which should be before the -k/-x options so it's not interpreted as a partition key.
usage: sstabledump <sstable file path> <options>

Dump contents of given SSTable to standard output in JSON format.
 -d         CQL row per line internal representation
 -e         enumerate partition keys only
 -k <arg>   List of included partition keys
 -l         Output json lines, by partition
 -t         Print raw timestamps instead of iso8601 date strings
 -x <arg>   List of excluded partition keys
{code}
[This alternative patch|https://github.com/apache/cassandra/compare/cassandra-4.0...adelapena:16818-4.0-repeated-options] makes the options to accept a single argument but allows to repeat them, so the following commands are accepted:
{code:java}
$ sstablepartitions -k 1 <sstable_path>
$ sstablepartitions <sstable_path> -k 1
$ sstablepartitions -k 1 -k 2 -k 3 <sstable_path>
$ sstablepartitions <sstable_path> -k 1 -k 2 -k 3
{code}
However, some previously accepted commands will be rejected:
{code:java}
$ sstabledump <sstable_path> -k 1 2
You must supply exactly one sstable
usage: sstabledump <sstable file path> <options>

Dump contents of given SSTable to standard output in JSON format.
 -d         CQL row per line internal representation
 -e         enumerate partition keys only
 -k <arg>   Included partition key, can be used multiple times
 -l         Output json lines, by partition
 -t         Print raw timestamps instead of iso8601 date strings
 -x <arg>   Excluded partition key, can be used multiple times
{code}
Both patches include some minor improvements in {{SSTableExportTest}}, and the one changing the options includes some other minor test changes due to the way commons-cli changes help formatting.

> Fix usage instructions about sstabledump -k and -x options
> ----------------------------------------------------------
>
>                 Key: CASSANDRA-16818
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16818
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tool/sstable
>            Reporter: Andres de la Peña
>            Assignee: Andres de la Peña
>            Priority: Normal
>
> The options {{-k}} and {{-x}} of {{sstabledump}} admit multiple arguments, so users can include or exclude multiple partitions. The intended usage is, for example:
> {code:java}
> $ sstablepartitions <sstable_path> -k 1
> $ sstablepartitions <sstable_path> -k 1 2 3
> {code}
> However, the following command will fail:
> {code:java}
> $ sstablepartitions -k 1 <sstable_path>
> You must supply exactly one sstable
> usage: sstabledump <sstable file path> <options>
> Dump contents of given SSTable to standard output in JSON format.
>  -d         CQL row per line internal representation
>  -e         enumerate partition keys only
>  -k <arg>   Partition key
>  -t         Print raw timestamps instead of iso8601 date strings
>  -x <arg>   Excluded partition key
> {code}
> This command fails because the sstable path is considered a fourth partition key, and the mandatory argument for the sstable path is missed. While I think this behaviour is correct, it can be a bit confusing for users, especially when the information about usage describes both {{-k}} and {{-x}} as single-argument.
> I think that at least we should fix the description of the options to indicate that there could be multiple included/excluded keys, and probably improve the message about the missing sstable path when those options are used.
> Alternatively we could modify the options to have a single argument and allow to repeat them, so we could accept things like:
> {code:java}
> $ sstablepartitions -k 1 <sstable_path>
> $ sstablepartitions -k 1 -k 2 -k 3 <sstable_path>
> $ sstablepartitions <sstable_path> -k 1 -k 2 -k 3
> {code}
> The main downside of the latter approach is that the change in the syntax of the command might cause compatibility issues. Also we would need to upgrade {{commons-cli}} to at least 1.2 due to CLI-137.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org