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

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


The following commit(s) were added to refs/heads/main by this push:
     new 2b8f908c fix(table): enable global index by default (#587)
2b8f908c is described below

commit 2b8f908c5ff604a78daac1dce7b95f5204379c57
Author: XiaoHongbo <[email protected]>
AuthorDate: Wed Jul 22 22:46:39 2026 +0800

    fix(table): enable global index by default (#587)
---
 crates/paimon/src/spec/core_options.rs             | 13 ++++++++++-
 .../src/table/btree_global_index_build_builder.rs  | 27 ++++++++++++++++++++++
 docs/src/sql.md                                    |  2 +-
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/crates/paimon/src/spec/core_options.rs 
b/crates/paimon/src/spec/core_options.rs
index dd545f19..43230ebf 100644
--- a/crates/paimon/src/spec/core_options.rs
+++ b/crates/paimon/src/spec/core_options.rs
@@ -540,7 +540,7 @@ impl<'a> CoreOptions<'a> {
         self.options
             .get(GLOBAL_INDEX_ENABLED_OPTION)
             .map(|value| value.eq_ignore_ascii_case("true"))
-            .unwrap_or(false)
+            .unwrap_or(true)
     }
 
     pub fn global_index_search_mode(&self) -> 
crate::Result<GlobalIndexSearchMode> {
@@ -1360,6 +1360,17 @@ mod tests {
         }
     }
 
+    #[test]
+    fn test_global_index_enabled_defaults_and_overrides() {
+        assert!(CoreOptions::new(&HashMap::new()).global_index_enabled());
+
+        for (raw, expected) in [("true", true), ("false", false)] {
+            let options =
+                HashMap::from([(GLOBAL_INDEX_ENABLED_OPTION.to_string(), 
raw.to_string())]);
+            assert_eq!(CoreOptions::new(&options).global_index_enabled(), 
expected);
+        }
+    }
+
     #[test]
     fn test_global_index_search_mode_rejects_invalid_value() {
         let options = HashMap::from([(
diff --git a/crates/paimon/src/table/btree_global_index_build_builder.rs 
b/crates/paimon/src/table/btree_global_index_build_builder.rs
index 0b759b1d..90b9891a 100644
--- a/crates/paimon/src/table/btree_global_index_build_builder.rs
+++ b/crates/paimon/src/table/btree_global_index_build_builder.rs
@@ -1240,6 +1240,33 @@ mod tests {
         .unwrap()
         .unwrap();
         assert_eq!(row_ranges, vec![RowRange::new(0, 0), RowRange::new(2, 2)]);
+
+        // Reopen the same table without an explicit global-index override and
+        // verify that the regular scan path still uses the committed index.
+        let mut options = table.schema().options().clone();
+        assert_eq!(
+            options.remove("global-index.enabled"),
+            Some("true".to_string())
+        );
+        let scan_table = Table::new(
+            table.file_io().clone(),
+            table.identifier().clone(),
+            table.location().to_string(),
+            table.schema().copy_with_replaced_options(options),
+            None,
+        );
+        let predicate = PredicateBuilder::new(scan_table.schema().fields())
+            .equal("name", crate::spec::Datum::String("alice".to_string()))
+            .unwrap();
+        let mut read_builder = scan_table.new_read_builder();
+        read_builder.with_filter(predicate);
+        let plan = read_builder.new_scan().plan().await.unwrap();
+
+        assert_eq!(plan.splits().len(), 1);
+        assert_eq!(
+            plan.splits()[0].row_ranges(),
+            Some(&[RowRange::new(0, 0), RowRange::new(2, 2)][..])
+        );
     }
 
     #[tokio::test]
diff --git a/docs/src/sql.md b/docs/src/sql.md
index ac810727..fd95b396 100644
--- a/docs/src/sql.md
+++ b/docs/src/sql.md
@@ -1923,7 +1923,7 @@ deletion vectors enabled.
 |---|---:|---|
 | `row-tracking.enabled` | `false` | Enables stable row ids required by global 
index files. |
 | `data-evolution.enabled` | `false` | Enables row-id-aware table evolution 
and partial-column writes. |
-| `global-index.enabled` | `false` | Enables global index metadata and 
global-index-aware reads. |
+| `global-index.enabled` | `true` | Enables global index metadata and 
global-index-aware reads. |
 | `global-index.row-count-per-shard` | `100000` | Maximum row count per vector 
global-index shard. |
 | `sorted-index.records-per-range` | `100000` | Maximum row count per BTree 
range. |
 | `btree-index.fallback-scan-max-size` | `256mb` | Maximum total size of 
selected BTree global-index files for fallback scans used by range/between and 
suffix/contains/complex LIKE predicates; `0` disables BTree fallback index 
scans. |

Reply via email to