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

yuxia pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss-rust.git


The following commit(s) were added to refs/heads/main by this push:
     new 30206ef  chore: rename BucketView to BucketRecords (#370)
30206ef is described below

commit 30206ef4e5ae5fc4b404cf911f5712fc64c610a8
Author: Anton Borisov <[email protected]>
AuthorDate: Tue Feb 24 03:51:11 2026 +0000

    chore: rename BucketView to BucketRecords (#370)
---
 bindings/cpp/include/fluss.hpp               | 26 +++++++++++++-------------
 bindings/cpp/src/lib.rs                      |  2 +-
 bindings/cpp/src/table.cpp                   | 20 ++++++++++----------
 bindings/cpp/test/test_log_table.cpp         |  8 ++++----
 website/docs/user-guide/cpp/api-reference.md |  8 ++++----
 5 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/bindings/cpp/include/fluss.hpp b/bindings/cpp/include/fluss.hpp
index 9a62828..6b56ba2 100644
--- a/bindings/cpp/include/fluss.hpp
+++ b/bindings/cpp/include/fluss.hpp
@@ -705,14 +705,14 @@ struct ScanRecord {
     RowView row;
 };
 
-/// A view into a subset of scan results for a single bucket.
+/// A bundle of scan records belonging to a single bucket.
 ///
-/// BucketView is a value type — it shares ownership of the underlying scan 
data
+/// BucketRecords is a value type — it shares ownership of the underlying scan 
data
 /// via reference counting, so it can safely outlive the ScanRecords that 
produced it.
-class BucketView {
+class BucketRecords {
    public:
-    BucketView(std::shared_ptr<const detail::ScanData> data, TableBucket 
bucket, size_t bucket_idx,
-               size_t count)
+    BucketRecords(std::shared_ptr<const detail::ScanData> data, TableBucket 
bucket,
+                  size_t bucket_idx, size_t count)
         : data_(std::move(data)),
           bucket_(std::move(bucket)),
           bucket_idx_(bucket_idx),
@@ -738,9 +738,9 @@ class BucketView {
         bool operator!=(const Iterator& other) const { return idx_ != 
other.idx_; }
 
        private:
-        friend class BucketView;
-        Iterator(const BucketView* owner, size_t idx) : owner_(owner), 
idx_(idx) {}
-        const BucketView* owner_;
+        friend class BucketRecords;
+        Iterator(const BucketRecords* owner, size_t idx) : owner_(owner), 
idx_(idx) {}
+        const BucketRecords* owner_;
         size_t idx_;
     };
 
@@ -774,16 +774,16 @@ class ScanRecords {
     /// List of distinct buckets that have records.
     std::vector<TableBucket> Buckets() const;
 
-    /// Get a view of records for a specific bucket.
+    /// Get records for a specific bucket.
     ///
-    /// Returns an empty BucketView if the bucket is not present (matches 
Rust/Java).
+    /// Returns an empty BucketRecords if the bucket is not present (matches 
Rust/Java).
     /// Note: O(B) linear scan. For iteration over all buckets, prefer 
BucketAt(idx).
-    BucketView Records(const TableBucket& bucket) const;
+    BucketRecords Records(const TableBucket& bucket) const;
 
-    /// Get a view of records by bucket index (0-based). O(1).
+    /// Get records by bucket index (0-based). O(1).
     ///
     /// Throws std::out_of_range if idx >= BucketCount().
-    BucketView BucketAt(size_t idx) const;
+    BucketRecords BucketAt(size_t idx) const;
 
     /// Flat iterator over all records across all buckets (matches Java 
Iterable<ScanRecord>).
     class Iterator {
diff --git a/bindings/cpp/src/lib.rs b/bindings/cpp/src/lib.rs
index fad98cf..5a1b3db 100644
--- a/bindings/cpp/src/lib.rs
+++ b/bindings/cpp/src/lib.rs
@@ -2061,7 +2061,7 @@ impl ScanResultInner {
         self.columns.len()
     }
 
-    // Field accessors — C++ validates bounds in BucketView/RecordAt, 
validate() checks field.
+    // Field accessors — C++ validates bounds in BucketRecords/RecordAt, 
validate() checks field.
     fn sv_is_null(&self, bucket: usize, rec: usize, field: usize) -> 
Result<bool, String> {
         row_reader::is_null(self.resolve(bucket, rec).row(), &self.columns, 
field)
     }
diff --git a/bindings/cpp/src/table.cpp b/bindings/cpp/src/table.cpp
index 73035bb..b0b7029 100644
--- a/bindings/cpp/src/table.cpp
+++ b/bindings/cpp/src/table.cpp
@@ -334,21 +334,21 @@ std::vector<TableBucket> ScanRecords::Buckets() const {
     return result;
 }
 
-BucketView ScanRecords::Records(const TableBucket& bucket) const {
+BucketRecords ScanRecords::Records(const TableBucket& bucket) const {
     if (!data_) {
-        return BucketView({}, bucket, 0, 0);
+        return BucketRecords({}, bucket, 0, 0);
     }
     const auto& infos = data_->raw->sv_bucket_infos();
     for (size_t i = 0; i < infos.size(); ++i) {
         TableBucket tb = to_table_bucket(infos[i]);
         if (tb == bucket) {
-            return BucketView(data_, std::move(tb), i, infos[i].record_count);
+            return BucketRecords(data_, std::move(tb), i, 
infos[i].record_count);
         }
     }
-    return BucketView({}, bucket, 0, 0);
+    return BucketRecords({}, bucket, 0, 0);
 }
 
-BucketView ScanRecords::BucketAt(size_t idx) const {
+BucketRecords ScanRecords::BucketAt(size_t idx) const {
     if (!data_) {
         throw std::logic_error("ScanRecords: not available (moved-from or 
null)");
     }
@@ -357,12 +357,12 @@ BucketView ScanRecords::BucketAt(size_t idx) const {
         throw std::out_of_range("ScanRecords::BucketAt: index " + 
std::to_string(idx) +
                                 " out of range (" + 
std::to_string(infos.size()) + " buckets)");
     }
-    return BucketView(data_, to_table_bucket(infos[idx]), idx, 
infos[idx].record_count);
+    return BucketRecords(data_, to_table_bucket(infos[idx]), idx, 
infos[idx].record_count);
 }
 
-ScanRecord BucketView::operator[](size_t idx) const {
+ScanRecord BucketRecords::operator[](size_t idx) const {
     if (idx >= count_) {
-        throw std::out_of_range("BucketView: index " + std::to_string(idx) + " 
out of range (" +
+        throw std::out_of_range("BucketRecords: index " + std::to_string(idx) 
+ " out of range (" +
                                 std::to_string(count_) + " records)");
     }
     return ScanRecord{data_->raw->sv_offset(bucket_idx_, idx),
@@ -371,7 +371,7 @@ ScanRecord BucketView::operator[](size_t idx) const {
                       RowView(data_, bucket_idx_, idx)};
 }
 
-ScanRecord BucketView::Iterator::operator*() const { return 
owner_->operator[](idx_); }
+ScanRecord BucketRecords::Iterator::operator*() const { return 
owner_->operator[](idx_); }
 
 // ============================================================================
 // LookupResult — backed by opaque Rust LookupResultInner
@@ -1146,7 +1146,7 @@ Result LogScanner::Poll(int64_t timeout_ms, ScanRecords& 
out) {
 
     // Wrap raw pointer in ScanData immediately so it's never leaked on 
exception.
     auto data = std::make_shared<detail::ScanData>(result_box.into_raw(), 
detail::ColumnMap{});
-    // Build column map eagerly — shared by all RowViews/BucketViews.
+    // Build column map eagerly — shared by all RowViews/BucketRecords.
     auto col_count = data->raw->sv_column_count();
     for (size_t i = 0; i < col_count; ++i) {
         auto name = data->raw->sv_column_name(i);
diff --git a/bindings/cpp/test/test_log_table.cpp 
b/bindings/cpp/test/test_log_table.cpp
index 47ab6f2..7d316fa 100644
--- a/bindings/cpp/test/test_log_table.cpp
+++ b/bindings/cpp/test/test_log_table.cpp
@@ -119,7 +119,7 @@ TEST_F(LogTableTest, AppendRecordBatchAndScan) {
         {1, "a1"}, {2, "a2"}, {3, "a3"}, {4, "a4"}, {5, "a5"}, {6, "a6"}};
     EXPECT_EQ(records, expected);
 
-    // Verify per-bucket iteration via BucketView
+    // Verify per-bucket iteration via BucketRecords
     {
         fluss::Table bucket_table;
         ASSERT_OK(conn.GetTable(table_path, bucket_table));
@@ -140,11 +140,11 @@ TEST_F(LogTableTest, AppendRecordBatchAndScan) {
 
             // Iterate by bucket
             for (size_t b = 0; b < scan_records.BucketCount(); ++b) {
-                auto bucket_view = scan_records.BucketAt(b);
-                if (!bucket_view.Empty()) {
+                auto bkt_records = scan_records.BucketAt(b);
+                if (!bkt_records.Empty()) {
                     buckets_with_data++;
                 }
-                for (auto rec : bucket_view) {
+                for (auto rec : bkt_records) {
                     bucket_records.emplace_back(rec.row.GetInt32(0),
                                                 
std::string(rec.row.GetString(1)));
                 }
diff --git a/website/docs/user-guide/cpp/api-reference.md 
b/website/docs/user-guide/cpp/api-reference.md
index c18778b..30d89a9 100644
--- a/website/docs/user-guide/cpp/api-reference.md
+++ b/website/docs/user-guide/cpp/api-reference.md
@@ -282,12 +282,12 @@ for (const auto& rec : records) {
 
|-----------------------------------------------------------------|-----------------------------------------------------------------------|
 | `BucketCount() -> size_t`                                       | Number of 
distinct buckets                                            |
 | `Buckets() -> std::vector<TableBucket>`                         | List of 
distinct buckets                                              |
-| `Records(const TableBucket& bucket) -> BucketView`              | Records 
for a specific bucket (empty view if bucket not present)      |
-| `BucketAt(size_t idx) -> BucketView`                            | Records by 
bucket index (0-based, O(1))                               |
+| `Records(const TableBucket& bucket) -> BucketRecords`              | Records 
for a specific bucket (empty if bucket not present)           |
+| `BucketAt(size_t idx) -> BucketRecords`                            | Records 
by bucket index (0-based, O(1))                               |
 
-## `BucketView`
+## `BucketRecords`
 
-A view of records within a single bucket. Obtained from 
`ScanRecords::Records()` or `ScanRecords::BucketAt()`. `BucketView` is a value 
type — it shares ownership of the underlying scan data via reference counting, 
so it can safely outlive the `ScanRecords` that produced it.
+A bundle of scan records belonging to a single bucket. Obtained from 
`ScanRecords::Records()` or `ScanRecords::BucketAt()`. `BucketRecords` is a 
value type — it shares ownership of the underlying scan data via reference 
counting, so it can safely outlive the `ScanRecords` that produced it.
 
 | Method                                         |  Description                
               |
 
|------------------------------------------------|--------------------------------------------|

Reply via email to