[ 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)