Junegunn Choi created HBASE-28549:
-------------------------------------
Summary: Make shell commands support column qualifiers with colons
Key: HBASE-28549
URL: https://issues.apache.org/jira/browse/HBASE-28549
Project: HBase
Issue Type: Bug
Components: shell
Reporter: Junegunn Choi
Revisiting abandonded HBASE-13788.
h2. Problem
Shell commands do not support column qualifiers with colons (which are actually
quite common in practice) because the part after the first colon is always
treated as a converter expression.
This can be too restrictive because:
# Converters are only used for {{get}} and {{scan}} commands. They are not
supported anyway for other mutating commands such as {{put}}, {{delete}},
{{incr}}, etc.
# Converter expression should follow a specific pattern. It should either be a
method name of the {{Bytes}} class, or should be in {{c(CLASS).METHOD}} format.
We ignore the part after the first colon even if it does not follow the pattern.
h2. Suggested solution
I suggest applying two approaches to make the commands support column
qualifiers with colons.
# Do not interpret column qualifiers when using commands that don't support
converters.
# If the part after the first colon does not follow the pattern, treat it as a
part of the column qualifier
h2. Counterargument
Depending on how you see it, this makes the commands inconsistent in how they
handle column qualifiers. For example, a user may want to use the same column
expression throughout the commands.
{code}
create 't1', 'cf'
col = 'cf:cq:toLong'
# Expecting incr command to automatically ignore :toLong part
incr 't1', 'r1', col, 1
get 't1', 'r1', COLUMNS => [col]
{code}
However, if we see the converter as an option that is supported by only a few
commands, passing it to a command that doesn't support it can be considered to
be a user error. {{help 'put'}} or {{help 'delete'}} don't mention anything
about converters.
h2. Alternative solution
An alternative solution would be to add a global switch that disables the
converter interpretation altogether.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)