Skip to content

Commit 000de65

Browse files
jackye1995claude
andauthored
feat: update lance-namespace to 0.7.2 and align namespace declared table lifecycle (#6608)
This updates namespace behavior to match the latest declared-table semantics and bumps the namespace SDKs to 0.7.2. Key changes: - allow `create_table`, `insert_into_table`, and `merge_insert_into_table` to materialize declared-only tables - add `include_declared` filtering and `is_only_declared` describe behavior - propagate namespace table `properties` and `create_table` storage options through the impls and REST layer - remove the deprecated Java `createEmptyTable` shim --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent cb601fd commit 000de65

17 files changed

Lines changed: 2003 additions & 593 deletions

File tree

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ lance-linalg = { version = "=6.0.0-beta.3", path = "./rust/lance-linalg" }
6868
lance-namespace = { version = "=6.0.0-beta.3", path = "./rust/lance-namespace" }
6969
lance-namespace-impls = { version = "=6.0.0-beta.3", path = "./rust/lance-namespace-impls" }
7070
lance-namespace-datafusion = { version = "=6.0.0-beta.3", path = "./rust/lance-namespace-datafusion" }
71-
lance-namespace-reqwest-client = "0.6.1"
71+
lance-namespace-reqwest-client = "0.7.2"
7272
lance-tokenizer = { version = "=6.0.0-beta.3", path = "./rust/lance-tokenizer" }
7373
lance-table = { version = "=6.0.0-beta.3", path = "./rust/lance-table" }
7474
lance-test-macros = { version = "=6.0.0-beta.3", path = "./rust/lance-test-macros" }

java/lance-jni/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,12 @@
109109
<dependency>
110110
<groupId>org.lance</groupId>
111111
<artifactId>lance-namespace-core</artifactId>
112-
<version>0.6.1</version>
112+
<version>0.7.2</version>
113113
</dependency>
114114
<dependency>
115115
<groupId>org.lance</groupId>
116116
<artifactId>lance-namespace-apache-client</artifactId>
117-
<version>0.6.1</version>
117+
<version>0.7.2</version>
118118
</dependency>
119119
<dependency>
120120
<groupId>com.fasterxml.jackson.core</groupId>

java/src/test/java/org/lance/namespace/CustomNamespace.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
import org.lance.namespace.model.BatchDeleteTableVersionsRequest;
3030
import org.lance.namespace.model.BatchDeleteTableVersionsResponse;
3131
import org.lance.namespace.model.CountTableRowsRequest;
32-
import org.lance.namespace.model.CreateEmptyTableRequest;
33-
import org.lance.namespace.model.CreateEmptyTableResponse;
3432
import org.lance.namespace.model.CreateNamespaceRequest;
3533
import org.lance.namespace.model.CreateNamespaceResponse;
3634
import org.lance.namespace.model.CreateTableIndexRequest;
@@ -229,12 +227,6 @@ public DeclareTableResponse declareTable(DeclareTableRequest request) {
229227
return inner.declareTable(request);
230228
}
231229

232-
@Override
233-
@SuppressWarnings("deprecation")
234-
public CreateEmptyTableResponse createEmptyTable(CreateEmptyTableRequest request) {
235-
return inner.createEmptyTable(request);
236-
}
237-
238230
@Override
239231
public InsertIntoTableResponse insertIntoTable(
240232
InsertIntoTableRequest request, byte[] requestData) {

java/src/test/java/org/lance/namespace/DirectoryNamespaceTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,6 +1275,18 @@ void testDeclareTable() throws Exception {
12751275
DeclareTableResponse declareResp = namespaceClient.declareTable(declareReq);
12761276
assertNotNull(declareResp);
12771277
assertNotNull(declareResp.getLocation());
1278+
1279+
DescribeTableRequest descReq =
1280+
new DescribeTableRequest().id(Arrays.asList("workspace", "declared_table"));
1281+
DescribeTableResponse descResp = namespaceClient.describeTable(descReq);
1282+
assertNull(descResp.getIsOnlyDeclared());
1283+
1284+
DescribeTableRequest checkReq =
1285+
new DescribeTableRequest()
1286+
.id(Arrays.asList("workspace", "declared_table"))
1287+
.checkDeclared(true);
1288+
DescribeTableResponse checkResp = namespaceClient.describeTable(checkReq);
1289+
assertEquals(Boolean.TRUE, checkResp.getIsOnlyDeclared());
12781290
}
12791291

12801292
@Test

python/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[project]
22
name = "pylance"
33
dynamic = ["version"]
4-
dependencies = ["pyarrow>=14", "numpy>=1.22", "lance-namespace>=0.6.1"]
4+
dependencies = ["pyarrow>=14", "numpy>=1.22", "lance-namespace>=0.7.2,<8.0"]
55
description = "python wrapper for Lance columnar format"
66
authors = [{ name = "Lance Devs", email = "dev@lance.org" }]
77
license = { file = "LICENSE" }

python/python/tests/test_namespace_dir.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,16 @@ def test_declared_table_in_child_namespace(self, memory_ns_client):
626626
exists_req = TableExistsRequest(id=["test_ns", "declared_table"])
627627
memory_ns_client.table_exists(exists_req)
628628

629+
describe_req = DescribeTableRequest(id=["test_ns", "declared_table"])
630+
describe_resp = memory_ns_client.describe_table(describe_req)
631+
assert describe_resp.is_only_declared is None
632+
633+
describe_req = DescribeTableRequest(
634+
id=["test_ns", "declared_table"], check_declared=True
635+
)
636+
describe_resp = memory_ns_client.describe_table(describe_req)
637+
assert describe_resp.is_only_declared is True
638+
629639

630640
class TestDeeplyNestedNamespaces:
631641
"""Tests for deeply nested namespace hierarchies.
@@ -871,10 +881,6 @@ def _get_ops_metric(ns_client, metric_name: str) -> int:
871881
return metrics.get(metric_name, 0)
872882

873883

874-
@pytest.mark.skipif(
875-
sys.platform == "win32",
876-
reason="External manifest store has known issues on Windows",
877-
)
878884
@pytest.mark.parametrize("use_custom", [False, True], ids=["DirectoryNS", "CustomNS"])
879885
def test_external_manifest_store_invokes_namespace_apis(use_custom):
880886
"""Test that namespace APIs are invoked correctly for managed versioning.
@@ -1336,10 +1342,6 @@ def test_query_table_with_filter(self, temp_ns_client):
13361342
assert result_table.num_rows == 2 # Alice and Charlie
13371343

13381344

1339-
@pytest.mark.skipif(
1340-
sys.platform == "win32",
1341-
reason="Table version listing not supported on Windows",
1342-
)
13431345
class TestTableVersions:
13441346
"""Tests for table version operations."""
13451347

python/uv.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)