diff --git a/google/cloud/bigtable/value.cc b/google/cloud/bigtable/value.cc index 0fea5cada96c7..492b37d2a9e51 100644 --- a/google/cloud/bigtable/value.cc +++ b/google/cloud/bigtable/value.cc @@ -148,7 +148,7 @@ std::ostream& StreamHelper(std::ostream& os, // NOLINT(misc-no-recursion) return os << v.string_value(); case StreamMode::kAggregate: os << '"'; - EscapeQuotes(os, v.string_value()); + EscapeQuotes(os, AsString(v.string_value())); return os << '"'; } return os; // Unreachable, but quiets warning. diff --git a/google/cloud/bigtable/value_test.cc b/google/cloud/bigtable/value_test.cc index 7aeee5a66b5bc..84b6932067a1f 100644 --- a/google/cloud/bigtable/value_test.cc +++ b/google/cloud/bigtable/value_test.cc @@ -240,11 +240,29 @@ template >, - absl::Cord>::value>::type* = nullptr> + absl::Cord>::value>::type* = nullptr, + typename std::enable_if_t< + !std::is_same>::value, int> = 0> StatusOr MovedFromString(Value const&) { return T{""}; } +template () + .string_value()), + typename std::enable_if< + std::is_same>, + absl::Cord>::value>::type* = nullptr, + typename std::enable_if_t< + std::is_same>::value, int> = 0> +StatusOr MovedFromString(Value const& v) { + auto v2 = v.get(); + if (!v2.ok()) { + return v2.status(); + } + return T{v2->size(), std::string{""}}; +} + // NOTE: This test relies on unspecified behavior about the moved-from state // of std::string. Specifically, this test relies on the fact that "large" // strings, when moved-from, end up empty. And we use this fact to verify that