[
https://issues.apache.org/jira/browse/HBASE-28549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Duo Zhang resolved HBASE-28549.
-------------------------------
Fix Version/s: 2.7.0
3.0.0-beta-2
2.6.1
2.5.9
Hadoop Flags: Reviewed
Resolution: Fixed
Pushed to branch-2.5+.
Thanks [~junegunn]!
> 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
> Assignee: Junegunn Choi
> Priority: Major
> Labels: pull-request-available
> Fix For: 2.7.0, 3.0.0-beta-2, 2.6.1, 2.5.9
>
>
> 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)