aboutsummaryrefslogtreecommitdiff
path: root/icing/query/advanced_query_parser/pending-value.cc
diff options
context:
space:
mode:
Diffstat (limited to 'icing/query/advanced_query_parser/pending-value.cc')
-rw-r--r--icing/query/advanced_query_parser/pending-value.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/icing/query/advanced_query_parser/pending-value.cc b/icing/query/advanced_query_parser/pending-value.cc
index 306812d..903e12f 100644
--- a/icing/query/advanced_query_parser/pending-value.cc
+++ b/icing/query/advanced_query_parser/pending-value.cc
@@ -24,14 +24,19 @@ libtextclassifier3::Status PendingValue::ParseInt() {
} else if (data_type_ != DataType::kText) {
return absl_ports::InvalidArgumentError("Cannot parse value as LONG");
}
+ if (query_term_.is_prefix_val) {
+ return absl_ports::InvalidArgumentError(absl_ports::StrCat(
+ "Cannot use prefix operator '*' with numeric value: ",
+ query_term_.term));
+ }
char* value_end;
- long_val_ = std::strtoll(string_vals_.at(0).c_str(), &value_end, /*base=*/10);
- if (value_end != string_vals_.at(0).c_str() + string_vals_.at(0).length()) {
+ long_val_ = std::strtoll(query_term_.term.c_str(), &value_end, /*base=*/10);
+ if (value_end != query_term_.term.c_str() + query_term_.term.length()) {
return absl_ports::InvalidArgumentError(absl_ports::StrCat(
- "Unable to parse \"", string_vals_.at(0), "\" as number."));
+ "Unable to parse \"", query_term_.term, "\" as number."));
}
data_type_ = DataType::kLong;
- string_vals_.clear();
+ query_term_ = {"", false};
return libtextclassifier3::Status::OK;
}