From 1a1a884798bfb591dae42e84d6a1a02b546296ff Mon Sep 17 00:00:00 2001 From: Istvan Toth Date: Thu, 25 Mar 2021 10:25:57 +0100 Subject: [PATCH] PHOENIX-6357 Change all command line tools to use the fixed commons-cli constructor note that this also removes the partial double doublequote workaround, as it is no longer needed --- .../phoenix/end2end/CsvBulkLoadToolIT.java | 8 ++--- .../mapreduce/AbstractBulkLoadTool.java | 34 ++----------------- .../phoenix/mapreduce/OrphanViewTool.java | 4 +-- .../phoenix/mapreduce/PhoenixTTLTool.java | 4 +-- .../mapreduce/index/IndexScrutinyTool.java | 4 +-- .../phoenix/mapreduce/index/IndexTool.java | 2 +- .../mapreduce/index/IndexUpgradeTool.java | 4 +-- .../schema/stats/UpdateStatisticsTool.java | 4 +-- .../util/MergeViewIndexIdSequencesTool.java | 4 +-- .../apache/phoenix/util/PhoenixRuntime.java | 4 +-- .../java/org/apache/phoenix/pherf/Pherf.java | 4 +-- .../phoenix/schema/SchemaExtractionTool.java | 4 +-- 12 files changed, 26 insertions(+), 54 deletions(-) diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java index 54d481f435f..cef658f82df 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java @@ -206,8 +206,8 @@ public void testImportWithTabsAndEmptyQuotes() throws Exception { "--input", "/tmp/input8.csv", "--table", "table8", "--zookeeper", zkQuorum, - "-q", "\"\"", - "-e", "\"\"", + "-q", "", + "-e", "", "--delimiter", "\\t" }); assertEquals(0, exitCode); @@ -701,7 +701,7 @@ public void testImportWithUpperCaseSchemaNameAndLowerCaseTableName() throws Exce csvBulkLoadTool.getConf().set(DATE_FORMAT_ATTRIB,"yyyy/MM/dd"); int exitCode = csvBulkLoadTool.run(new String[] { "--input", "/tmp/input1.csv", - "--table", "\"\"t\"\"", + "--table", "\"t\"", "--schema", "S", "--zookeeper", zkQuorum}); assertEquals(0, exitCode); @@ -736,7 +736,7 @@ public void testImportWithLowerCaseSchemaNameAndUpperCaseTableName() throws Exce int exitCode = csvBulkLoadTool.run(new String[] { "--input", "/tmp/input1.csv", "--table", "T", - "--schema", "\"\"s\"\"", + "--schema", "\"s\"", "--zookeeper", zkQuorum}); assertEquals(0, exitCode); ResultSet rs = stmt.executeQuery("SELECT id, name, t FROM \"s\".T ORDER BY id"); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/AbstractBulkLoadTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/AbstractBulkLoadTool.java index d4582b642ec..bb1a343fa6f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/AbstractBulkLoadTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/AbstractBulkLoadTool.java @@ -29,11 +29,11 @@ import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; @@ -123,7 +123,7 @@ protected CommandLine parseOptions(String[] args) { Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); @@ -178,40 +178,12 @@ public int run(String[] args) throws Exception { return loadData(conf, cmdLine); } - /** - * Check schema or table name that start with two double quotes i.e ""t"" -> true - */ - private boolean isStartWithTwoDoubleQuotes (String name) { - boolean start = false; - boolean end = false; - if (name != null && name.length() > 1) { - int length = name.length(); - start = name.substring(0,2).equals("\"\""); - end = name.substring(length-2, length).equals("\"\""); - if (start && !end) { - throw new IllegalArgumentException("Invalid table/schema name " + name + - ". Please check if name end with two double quotes."); - } - } - return start; - } - private int loadData(Configuration conf, CommandLine cmdLine) throws Exception { String tableName = cmdLine.getOptionValue(TABLE_NAME_OPT.getOpt()); String schemaName = cmdLine.getOptionValue(SCHEMA_NAME_OPT.getOpt()); String indexTableName = cmdLine.getOptionValue(INDEX_TABLE_NAME_OPT.getOpt()); - boolean quotedTableName = isStartWithTwoDoubleQuotes(tableName); - if (quotedTableName) { - // Commons-cli cannot parse full quoted argument i.e "t" (CLI-275). - // if \"\"t\"\" passed, then both pairs of quoted are left intact as ""t"". - // So remove one pair of quote from tablename ""t"" -> "t". - tableName = tableName.substring(1, tableName.length() - 1); - } - boolean quotedSchemaName = isStartWithTwoDoubleQuotes(schemaName); - if (quotedSchemaName) { - schemaName = schemaName.substring(1,schemaName.length() - 1); - } + String qualifiedTableName = SchemaUtil.getQualifiedTableName(schemaName, tableName); String qualifiedIndexTableName = null; if (indexTableName != null){ diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/OrphanViewTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/OrphanViewTool.java index d53f884d9e0..ce5c25ae308 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/OrphanViewTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/OrphanViewTool.java @@ -49,11 +49,11 @@ import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; @@ -194,7 +194,7 @@ private void parseOptions(String[] args) throws Exception { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/PhoenixTTLTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/PhoenixTTLTool.java index 1960d6de12b..0f432640b0d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/PhoenixTTLTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/PhoenixTTLTool.java @@ -19,10 +19,10 @@ import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; @@ -173,7 +173,7 @@ public int getBatchSize() { public CommandLine parseOptions(String[] args) { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java index ffdf60cf76e..d1cf5196cdb 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java @@ -26,11 +26,11 @@ import com.google.inject.Inject; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; @@ -170,7 +170,7 @@ private Options getOptions() { private CommandLine parseOptions(String[] args) { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java index ae689a08378..dab52a08d1c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java @@ -352,7 +352,7 @@ public CommandLine parseOptions(String[] args) { final Options options = getOptions(); - CommandLineParser parser = new DefaultParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexUpgradeTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexUpgradeTool.java index 7cd963d0db6..337cbd9e33d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexUpgradeTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexUpgradeTool.java @@ -21,11 +21,11 @@ import com.google.common.base.Strings; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.hbase.HConstants; @@ -225,7 +225,7 @@ public CommandLine parseOptions(String[] args) { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java index 763d9139ac6..4256d445392 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java @@ -20,11 +20,11 @@ import org.antlr.runtime.CharStream; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.HBaseConfiguration; @@ -263,7 +263,7 @@ CommandLine parseOptions(String[] args) { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/MergeViewIndexIdSequencesTool.java b/phoenix-core/src/main/java/org/apache/phoenix/util/MergeViewIndexIdSequencesTool.java index 8512e0edeee..b2c93a7cd44 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/MergeViewIndexIdSequencesTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/MergeViewIndexIdSequencesTool.java @@ -19,11 +19,11 @@ import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.hbase.HBaseConfiguration; @@ -55,7 +55,7 @@ private void parseOptions(String[] args) throws Exception { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java index e47bece5112..f07dd29be21 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java @@ -46,11 +46,11 @@ import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.commons.lang.StringEscapeUtils; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HConstants; @@ -702,7 +702,7 @@ public static ExecutionCommand parseArgs(String[] args) { options.addOption(localIndexUpgradeOption); options.addOption(binaryEncodingOption); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args); diff --git a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/Pherf.java b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/Pherf.java index c042689b0fd..0b6af66bf4e 100644 --- a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/Pherf.java +++ b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/Pherf.java @@ -28,10 +28,10 @@ import org.apache.phoenix.thirdparty.com.google.common.collect.Lists; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.phoenix.pherf.PherfConstants.CompareType; import org.apache.phoenix.pherf.PherfConstants.GeneratePhoenixStats; import org.apache.phoenix.pherf.configuration.DataModel; @@ -129,7 +129,7 @@ public class Pherf { WorkloadExecutor workloadExecutor; public Pherf(String[] args) throws Exception { - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine command = null; HelpFormatter hf = new HelpFormatter(); diff --git a/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaExtractionTool.java b/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaExtractionTool.java index 8301507edce..60a910e065e 100644 --- a/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaExtractionTool.java +++ b/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaExtractionTool.java @@ -19,11 +19,11 @@ import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.phoenix.thirdparty.org.apache.commons.cli.CommandLineParser; +import org.apache.phoenix.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.phoenix.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Option; import org.apache.phoenix.thirdparty.org.apache.commons.cli.Options; import org.apache.phoenix.thirdparty.org.apache.commons.cli.ParseException; -import org.apache.phoenix.thirdparty.org.apache.commons.cli.PosixParser; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; @@ -83,7 +83,7 @@ private void populateToolAttributes(String[] args) { private CommandLine parseOptions(String[] args) { final Options options = getOptions(); - CommandLineParser parser = new PosixParser(); + CommandLineParser parser = new DefaultParser(false, false); CommandLine cmdLine = null; try { cmdLine = parser.parse(options, args);