You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by ad...@apache.org on 2019/12/02 18:16:54 UTC
[kudu] branch master updated: tools: support for changing column
comment
This is an automated email from the ASF dual-hosted git repository.
adar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push:
new d8a8ac7 tools: support for changing column comment
d8a8ac7 is described below
commit d8a8ac7aca0af3a62fc87209e8b3a6677b4f953c
Author: helifu <hz...@corp.netease.com>
AuthorDate: Mon Dec 2 13:28:53 2019 +0800
tools: support for changing column comment
Change-Id: I8bfc7f5b1c4f89d01d2f5145b648d15d90f95dfb
Reviewed-on: http://gerrit.cloudera.org:8080/14814
Tested-by: Kudu Jenkins
Reviewed-by: Adar Dembo <ad...@cloudera.com>
---
src/kudu/tools/kudu-tool-test.cc | 37 +++++++++++++++++++++++++++++++++----
src/kudu/tools/tool_action_table.cc | 23 +++++++++++++++++++++++
2 files changed, 56 insertions(+), 4 deletions(-)
diff --git a/src/kudu/tools/kudu-tool-test.cc b/src/kudu/tools/kudu-tool-test.cc
index 5a77955..49f9d50 100644
--- a/src/kudu/tools/kudu-tool-test.cc
+++ b/src/kudu/tools/kudu-tool-test.cc
@@ -1111,14 +1111,26 @@ TEST_F(ToolTest, TestModeHelp) {
}
{
const vector<string> kTableModeRegexes = {
+ "add_range_partition.*Add a range partition for table",
+ "column_remove_default.*Remove write_default value for a column",
+ "column_set_block_size.*Set block size for a column",
+ "column_set_compression.*Set compression type for a column",
+ "column_set_default.*Set write_default value for a column",
+ "column_set_encoding.*Set encoding type for a column",
+ "column_set_comment.*Set comment for a column",
+ "copy.*Copy table data to another table",
+ "create.*Create a new table",
+ "delete_column.*Delete a column",
"delete.*Delete a table",
- "rename_table.*Rename a table",
- "rename_column.*Rename a column",
+ "describe.*Describe a table",
+ "drop_range_partition.*Drop a range partition of table",
+ "get_extra_configs.*Get the extra configuration properties for a table",
"list.*List tables",
+ "locate_row.*Locate which tablet a row belongs to",
+ "rename_column.*Rename a column",
+ "rename_table.*Rename a table",
"scan.*Scan rows from a table",
- "copy.*Copy table data to another table",
"set_extra_config.*Change a extra configuration value on a table",
- "get_extra_configs.*Get the extra configuration properties for a table",
"statistics.*Get table statistics"
};
NO_FATALS(RunTestHelp("table", kTableModeRegexes));
@@ -3443,6 +3455,23 @@ TEST_F(ToolTest, TestAlterColumn) {
// Test invalid block_size.
NO_FATALS(check_bad_input("column_set_block_size", "0", "Invalid block size:"));
+
+ // Alter comment for a column.
+ const auto alter_comment = [&] (size_t idx) {
+ ObjectIdGenerator generator;
+ const string comment = generator.Next();
+ ASSERT_EQ(table->schema().Column(idx).comment(), "");
+ NO_FATALS(RunActionStdoutNone(Substitute("table column_set_comment $0 $1 $2 $3",
+ master_addr,
+ kTableName,
+ table->schema().Column(idx).name(),
+ comment)));
+ ASSERT_OK(client->OpenTable(kTableName, &table));
+ ASSERT_EQ(table->schema().Column(idx).comment(), comment);
+ };
+ for (int i = 0; i < table->schema().num_columns(); ++i) {
+ NO_FATALS(alter_comment(i));
+ }
}
TEST_F(ToolTest, TestColumnSetDefault) {
diff --git a/src/kudu/tools/tool_action_table.cc b/src/kudu/tools/tool_action_table.cc
index b68e079..aaa6d70 100644
--- a/src/kudu/tools/tool_action_table.cc
+++ b/src/kudu/tools/tool_action_table.cc
@@ -178,6 +178,7 @@ const char* const kDefaultValueArg = "default_value";
const char* const kCompressionTypeArg = "compression_type";
const char* const kEncodingTypeArg = "encoding_type";
const char* const kBlockSizeArg = "block_size";
+const char* const kColumnCommentArg = "column_comment";
const char* const kCreateTableJSONArg = "create_table_json";
enum PartitionAction {
@@ -839,6 +840,18 @@ Status ColumnSetBlockSize(const RunnerContext& context) {
return alterer->Alter();
}
+Status ColumnSetComment(const RunnerContext& context) {
+ const string& table_name = FindOrDie(context.required_args, kTableNameArg);
+ const string& column_name = FindOrDie(context.required_args, kColumnNameArg);
+ const string& column_comment = FindOrDie(context.required_args, kColumnCommentArg);
+
+ client::sp::shared_ptr<KuduClient> client;
+ RETURN_NOT_OK(CreateKuduClient(context, &client));
+ unique_ptr<KuduTableAlterer> alterer(client->NewTableAlterer(table_name));
+ alterer->AlterColumn(column_name)->Comment(column_comment);
+ return alterer->Alter();
+}
+
Status DeleteColumn(const RunnerContext& context) {
const string& table_name = FindOrDie(context.required_args, kTableNameArg);
const string& column_name = FindOrDie(context.required_args, kColumnNameArg);
@@ -1320,6 +1333,15 @@ unique_ptr<Mode> BuildTableMode() {
.AddRequiredParameter({ kBlockSizeArg, "Block size of the column" })
.Build();
+ unique_ptr<Action> column_set_comment =
+ ActionBuilder("column_set_comment", &ColumnSetComment)
+ .Description("Set comment for a column")
+ .AddRequiredParameter({ kMasterAddressesArg, kMasterAddressesArgDesc })
+ .AddRequiredParameter({ kTableNameArg, "Name of the table to alter" })
+ .AddRequiredParameter({ kColumnNameArg, "Name of the table column to alter" })
+ .AddRequiredParameter({ kColumnCommentArg, "Comment of the column" })
+ .Build();
+
unique_ptr<Action> delete_column =
ActionBuilder("delete_column", &DeleteColumn)
.Description("Delete a column")
@@ -1365,6 +1387,7 @@ unique_ptr<Mode> BuildTableMode() {
.AddAction(std::move(column_set_compression))
.AddAction(std::move(column_set_default))
.AddAction(std::move(column_set_encoding))
+ .AddAction(std::move(column_set_comment))
.AddAction(std::move(copy_table))
.AddAction(std::move(create_table))
.AddAction(std::move(delete_column))