KUDU-1938 Add VARCHAR to tooling and helpers pt 7
VARCHAR support was missing from some tools and helpers, adding them
here.
Change-Id: I84257c71528dafdf9c01c0d3cdda44a626ed7f67
Reviewed-on: http://gerrit.cloudera.org:8080/14831
Tested-by: Kudu Jenkins
Reviewed-by: Adar Dembo <adar@cloudera.com>
diff --git a/src/kudu/common/row.h b/src/kudu/common/row.h
index 846ba02..3ffffcd 100644
--- a/src/kudu/common/row.h
+++ b/src/kudu/common/row.h
@@ -618,6 +618,16 @@
AddSlice(str);
}
+ void AddVarchar(const Slice &slice) {
+ CheckNextType(VARCHAR);
+ AddSlice(slice);
+ }
+
+ void AddVarchar(const std::string &str) {
+ CheckNextType(VARCHAR);
+ AddSlice(str);
+ }
+
void AddInt8(int8_t val) {
CheckNextType(INT8);
*reinterpret_cast<int8_t *>(&buf_[byte_idx_]) = val;
diff --git a/src/kudu/tools/tool_action_perf.cc b/src/kudu/tools/tool_action_perf.cc
index 9b83122..5ccd814 100644
--- a/src/kudu/tools/tool_action_perf.cc
+++ b/src/kudu/tools/tool_action_perf.cc
@@ -175,11 +175,11 @@
#include <string>
#include <thread>
#include <unordered_map>
+#include <utility>
#include <vector>
#include <boost/optional/optional.hpp>
#include <gflags/gflags.h>
-#include <gflags/gflags_declare.h>
#include <glog/logging.h>
#include "kudu/client/client.h"
@@ -499,6 +499,12 @@
RETURN_NOT_OK(row->SetStringNoCopy(idx, fixed_string));
}
break;
+ case VARCHAR:
+ if (fixed_string.empty()) {
+ RETURN_NOT_OK(row->SetVarchar(idx, gen->Next<string>()));
+ } else {
+ RETURN_NOT_OK(row->SetStringNoCopy(idx, fixed_string));
+ }
default:
return Status::InvalidArgument("unknown data type");
}
diff --git a/src/kudu/tools/tool_action_table.cc b/src/kudu/tools/tool_action_table.cc
index aaa6d70..54a1650 100644
--- a/src/kudu/tools/tool_action_table.cc
+++ b/src/kudu/tools/tool_action_table.cc
@@ -29,8 +29,8 @@
#include <boost/algorithm/string/predicate.hpp>
#include <boost/optional/optional.hpp>
#include <gflags/gflags.h>
-#include <gflags/gflags_declare.h>
#include <glog/logging.h>
+#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/status.h>
#include <google/protobuf/stubs/stringpiece.h>
#include <google/protobuf/util/json_util.h>
@@ -287,7 +287,8 @@
break;
}
case KuduColumnSchema::BINARY:
- case KuduColumnSchema::STRING: {
+ case KuduColumnSchema::STRING:
+ case KuduColumnSchema::VARCHAR: {
string value;
RETURN_NOT_OK_PREPEND(
reader.ExtractString(values[i], /*field=*/nullptr, &value),
@@ -586,6 +587,13 @@
RETURN_NOT_OK(range_bound_partial_row->SetString(col_name, value));
break;
}
+ case KuduColumnSchema::VARCHAR: {
+ string value;
+ RETURN_NOT_OK_PREPEND(
+ reader.ExtractString(values[i], /*field=*/nullptr, &value),
+ error_msg);
+ RETURN_NOT_OK(range_bound_partial_row->SetVarchar(col_name, value));
+ }
case KuduColumnSchema::BOOL:
case KuduColumnSchema::FLOAT:
case KuduColumnSchema::DOUBLE:
@@ -714,7 +722,8 @@
break;
}
case KuduColumnSchema::DataType::BINARY:
- case KuduColumnSchema::DataType::STRING: {
+ case KuduColumnSchema::DataType::STRING:
+ case KuduColumnSchema::DataType::VARCHAR: {
string str_value;
RETURN_NOT_OK_PREPEND(
reader.ExtractString(values[0], /*field=*/nullptr, &str_value), msg);
@@ -891,6 +900,7 @@
string joined = JoinMapped(values, [&](const string& v) {
auto data_type = range_columns[i++].second;
if (data_type == KuduColumnSchema::STRING ||
+ data_type == KuduColumnSchema::VARCHAR ||
data_type == KuduColumnSchema::BINARY) {
return "\"" + v + "\"";
}
@@ -996,6 +1006,7 @@
string default_v;
if (column.column_type() == "STRING" ||
column.column_type() == "BINARY" ||
+ column.column_type() == "VARCHAR" ||
column.column_type() == "DECIMAL") {
default_v = "[\"" + column.default_value() + "\"]";
} else {