This is an automated email from the ASF dual-hosted git repository.

alexey 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 ed5d5a11e KUDU-2671 update 
Add{ExclusiveUpper,Lower}BoundPartitionKeyRaw
ed5d5a11e is described below

commit ed5d5a11e54211c46560e3136bece6532e6d3b72
Author: Alexey Serbin <ale...@apache.org>
AuthorDate: Mon Jun 20 12:00:17 2022 -0700

    KUDU-2671 update Add{ExclusiveUpper,Lower}BoundPartitionKeyRaw
    
    Since we don't allow for variable number of hash dimensions in
    range-specific hash schemas for a table, this patch updates the code
    in KuduScanner::AddExclusiveUpperBoundPartitionKeyRaw() and
    KuduScanner::AddLowerBoundPartitionKeyRaw() to enable using them
    for tables having custom hash schemas per range.
    
    This is a follow-up to 6998193e69eeda497f912d1d806470c95b591ad4.
    
    Change-Id: I1323e494733c9c082dedc12d941811f4175dbeab
    Reviewed-on: http://gerrit.cloudera.org:8080/18640
    Reviewed-by: Mahesh Reddy <mre...@cloudera.com>
    Tested-by: Kudu Jenkins
    Reviewed-by: Abhishek Chennaka <achenn...@cloudera.com>
    Reviewed-by: Attila Bukor <abu...@apache.org>
---
 src/kudu/client/client.cc | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/src/kudu/client/client.cc b/src/kudu/client/client.cc
index 7d11315f4..1e9c75a50 100644
--- a/src/kudu/client/client.cc
+++ b/src/kudu/client/client.cc
@@ -1783,30 +1783,33 @@ Status KuduScanner::AddExclusiveUpperBoundRaw(const 
Slice& key) {
 }
 
 Status KuduScanner::AddLowerBoundPartitionKeyRaw(const Slice& partition_key) {
-  // TODO(aserbin): use move semantics to pass PartitionKey arguments
-  if (const auto& table = GetKuduTable();
-      table->data_->partition_schema_.HasCustomHashSchemas()) {
-    return Status::InvalidArgument(Substitute(
-        "$0: cannot use AddLowerBoundPartitionKeyRaw() because "
-        "the table has custom per-range hash schemas", table->name()));
-  }
+  // The number of hash dimensions in all hash schemas of a table is an
+  // invariant and checked throughout the code. With that, the table-wide hash
+  // schema is used as a proxy to find the number of hash dimensions to 
separate
+  // the hash-related prefix from the rest of the encoded partition key in the
+  // code below.
+  //
+  // TODO(KUDU-2671) update this code if allowing for different number of
+  //                 dimensions in range-specific hash schemas
   const auto& hash_schema = GetKuduTable()->partition_schema().hash_schema();
-  auto pkey = Partition::StringToPartitionKey(partition_key.ToString(),
-                                              hash_schema.size());
-  return data_->mutable_configuration()->AddLowerBoundPartitionKeyRaw(pkey);
+  return data_->mutable_configuration()->AddLowerBoundPartitionKeyRaw(
+      Partition::StringToPartitionKey(partition_key.ToString(),
+                                      hash_schema.size()));
 }
 
 Status KuduScanner::AddExclusiveUpperBoundPartitionKeyRaw(const Slice& 
partition_key) {
-  if (const auto& table = GetKuduTable();
-      table->data_->partition_schema_.HasCustomHashSchemas()) {
-    return Status::InvalidArgument(Substitute(
-        "$0: cannot use AddExclusiveUpperBoundPartitionKeyRaw() because "
-        "the table has custom per-range hash schemas", table->name()));
-  }
+  // The number of hash dimensions in all hash schemas of a table is an
+  // invariant and checked throughout the code. With that, the table-wide hash
+  // schema is used as a proxy to find the number of hash dimensions to 
separate
+  // the hash-related prefix from the rest of the encoded partition key in the
+  // code below.
+  //
+  // TODO(KUDU-2671) update this code if allowing for different number of
+  //                 dimensions in range-specific hash schemas
   const auto& hash_schema = GetKuduTable()->partition_schema().hash_schema();
-  auto pkey = Partition::StringToPartitionKey(partition_key.ToString(),
-                                              hash_schema.size());
-  return data_->mutable_configuration()->AddUpperBoundPartitionKeyRaw(pkey);
+  return data_->mutable_configuration()->AddUpperBoundPartitionKeyRaw(
+      Partition::StringToPartitionKey(partition_key.ToString(),
+                                      hash_schema.size()));
 }
 
 Status KuduScanner::SetCacheBlocks(bool cache_blocks) {

Reply via email to