Skip to content

Commit 037bba8

Browse files
authored
fix: add managed_versioning to declare_table and fix create_table_version response (#306)
1 parent 8b5dc52 commit 037bba8

21 files changed

Lines changed: 220 additions & 19 deletions

File tree

docs/src/client/operations/models/CreateTableVersionResponse.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Response for creating a table version
99
| Name | Type | Description | Notes |
1010
|------------ | ------------- | ------------- | -------------|
1111
|**transactionId** | **String** | Optional transaction identifier | [optional] |
12+
|**version** | [**TableVersion**](TableVersion.md) | | [optional] |
1213

1314

1415

docs/src/client/operations/models/DeclareTableResponse.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Response for declaring a table.
1212
|**location** | **String** | | [optional] |
1313
|**storageOptions** | **Map<String, String>** | Configuration options to be used to access storage. The available options depend on the type of storage in use. These will be passed directly to Lance to initialize storage access. | [optional] |
1414
|**properties** | **Map<String, String>** | If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. | [optional] |
15+
|**managedVersioning** | **Boolean** | When true, the caller should use namespace table version operations (CreateTableVersion, DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions) to manage table versions instead of relying on Lance's native version management. | [optional] |
1516

1617

1718

docs/src/rest.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3229,6 +3229,12 @@ components:
32293229
example: { "owner": "Ralph", "created_at": "1452120468" }
32303230
default: {}
32313231
nullable: true
3232+
managed_versioning:
3233+
type: boolean
3234+
description: |
3235+
When true, the caller should use namespace table version operations
3236+
(CreateTableVersion, DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions)
3237+
to manage table versions instead of relying on Lance's native version management.
32323238
32333239
TableExistsRequest:
32343240
type: object
@@ -3933,6 +3939,8 @@ components:
39333939
transaction_id:
39343940
type: string
39353941
description: Optional transaction identifier
3942+
version:
3943+
$ref: "#/components/schemas/TableVersion"
39363944

39373945
DescribeTableVersionRequest:
39383946
type: object

java/lance-namespace-apache-client/api/openapi.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4547,6 +4547,7 @@ components:
45474547
properties:
45484548
owner: Ralph
45494549
created_at: "1452120468"
4550+
managed_versioning: true
45504551
storage_options:
45514552
key: storage_options
45524553
properties:
@@ -4572,6 +4573,12 @@ components:
45724573
owner: Ralph
45734574
created_at: "1452120468"
45744575
nullable: true
4576+
managed_versioning:
4577+
description: |
4578+
When true, the caller should use namespace table version operations
4579+
(CreateTableVersion, DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions)
4580+
to manage table versions instead of relying on Lance's native version management.
4581+
type: boolean
45754582
TableExistsRequest:
45764583
example:
45774584
identity:
@@ -5785,10 +5792,20 @@ components:
57855792
description: Response for creating a table version
57865793
example:
57875794
transaction_id: transaction_id
5795+
version:
5796+
metadata:
5797+
key: metadata
5798+
manifest_path: manifest_path
5799+
manifest_size: 0
5800+
e_tag: e_tag
5801+
version: 0
5802+
timestamp: 2000-01-23T04:56:07.000+00:00
57885803
properties:
57895804
transaction_id:
57905805
description: Optional transaction identifier
57915806
type: string
5807+
version:
5808+
$ref: '#/components/schemas/TableVersion'
57925809
DescribeTableVersionRequest:
57935810
description: Request to describe a specific table version
57945811
example:

java/lance-namespace-apache-client/docs/CreateTableVersionResponse.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Response for creating a table version
99
| Name | Type | Description | Notes |
1010
|------------ | ------------- | ------------- | -------------|
1111
|**transactionId** | **String** | Optional transaction identifier | [optional] |
12+
|**version** | [**TableVersion**](TableVersion.md) | | [optional] |
1213

1314

1415

java/lance-namespace-apache-client/docs/DeclareTableResponse.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Response for declaring a table.
1212
|**location** | **String** | | [optional] |
1313
|**storageOptions** | **Map<String, String>** | Configuration options to be used to access storage. The available options depend on the type of storage in use. These will be passed directly to Lance to initialize storage access. | [optional] |
1414
|**properties** | **Map<String, String>** | If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. | [optional] |
15+
|**managedVersioning** | **Boolean** | When true, the caller should use namespace table version operations (CreateTableVersion, DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions) to manage table versions instead of relying on Lance's native version management. | [optional] |
1516

1617

1718

java/lance-namespace-apache-client/src/main/java/org/lance/namespace/model/CreateTableVersionResponse.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,20 @@
2323
import java.util.StringJoiner;
2424

2525
/** Response for creating a table version */
26-
@JsonPropertyOrder({CreateTableVersionResponse.JSON_PROPERTY_TRANSACTION_ID})
26+
@JsonPropertyOrder({
27+
CreateTableVersionResponse.JSON_PROPERTY_TRANSACTION_ID,
28+
CreateTableVersionResponse.JSON_PROPERTY_VERSION
29+
})
2730
@javax.annotation.Generated(
2831
value = "org.openapitools.codegen.languages.JavaClientCodegen",
2932
comments = "Generator version: 7.12.0")
3033
public class CreateTableVersionResponse {
3134
public static final String JSON_PROPERTY_TRANSACTION_ID = "transaction_id";
3235
@javax.annotation.Nullable private String transactionId;
3336

37+
public static final String JSON_PROPERTY_VERSION = "version";
38+
@javax.annotation.Nullable private TableVersion version;
39+
3440
public CreateTableVersionResponse() {}
3541

3642
public CreateTableVersionResponse transactionId(@javax.annotation.Nullable String transactionId) {
@@ -57,6 +63,30 @@ public void setTransactionId(@javax.annotation.Nullable String transactionId) {
5763
this.transactionId = transactionId;
5864
}
5965

66+
public CreateTableVersionResponse version(@javax.annotation.Nullable TableVersion version) {
67+
68+
this.version = version;
69+
return this;
70+
}
71+
72+
/**
73+
* Get version
74+
*
75+
* @return version
76+
*/
77+
@javax.annotation.Nullable
78+
@JsonProperty(JSON_PROPERTY_VERSION)
79+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
80+
public TableVersion getVersion() {
81+
return version;
82+
}
83+
84+
@JsonProperty(JSON_PROPERTY_VERSION)
85+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
86+
public void setVersion(@javax.annotation.Nullable TableVersion version) {
87+
this.version = version;
88+
}
89+
6090
@Override
6191
public boolean equals(Object o) {
6292
if (this == o) {
@@ -66,19 +96,21 @@ public boolean equals(Object o) {
6696
return false;
6797
}
6898
CreateTableVersionResponse createTableVersionResponse = (CreateTableVersionResponse) o;
69-
return Objects.equals(this.transactionId, createTableVersionResponse.transactionId);
99+
return Objects.equals(this.transactionId, createTableVersionResponse.transactionId)
100+
&& Objects.equals(this.version, createTableVersionResponse.version);
70101
}
71102

72103
@Override
73104
public int hashCode() {
74-
return Objects.hash(transactionId);
105+
return Objects.hash(transactionId, version);
75106
}
76107

77108
@Override
78109
public String toString() {
79110
StringBuilder sb = new StringBuilder();
80111
sb.append("class CreateTableVersionResponse {\n");
81112
sb.append(" transactionId: ").append(toIndentedString(transactionId)).append("\n");
113+
sb.append(" version: ").append(toIndentedString(version)).append("\n");
82114
sb.append("}");
83115
return sb.toString();
84116
}
@@ -141,6 +173,11 @@ public String toUrlQueryString(String prefix) {
141173
}
142174
}
143175

176+
// add `version` to the URL query string
177+
if (getVersion() != null) {
178+
joiner.add(getVersion().toUrlQueryString(prefix + "version" + suffix));
179+
}
180+
144181
return joiner.toString();
145182
}
146183
}

java/lance-namespace-apache-client/src/main/java/org/lance/namespace/model/DeclareTableResponse.java

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
DeclareTableResponse.JSON_PROPERTY_TRANSACTION_ID,
3030
DeclareTableResponse.JSON_PROPERTY_LOCATION,
3131
DeclareTableResponse.JSON_PROPERTY_STORAGE_OPTIONS,
32-
DeclareTableResponse.JSON_PROPERTY_PROPERTIES
32+
DeclareTableResponse.JSON_PROPERTY_PROPERTIES,
33+
DeclareTableResponse.JSON_PROPERTY_MANAGED_VERSIONING
3334
})
3435
@javax.annotation.Generated(
3536
value = "org.openapitools.codegen.languages.JavaClientCodegen",
@@ -47,6 +48,9 @@ public class DeclareTableResponse {
4748
public static final String JSON_PROPERTY_PROPERTIES = "properties";
4849
@javax.annotation.Nullable private Map<String, String> properties = new HashMap<>();
4950

51+
public static final String JSON_PROPERTY_MANAGED_VERSIONING = "managed_versioning";
52+
@javax.annotation.Nullable private Boolean managedVersioning;
53+
5054
public DeclareTableResponse() {}
5155

5256
public DeclareTableResponse transactionId(@javax.annotation.Nullable String transactionId) {
@@ -165,6 +169,33 @@ public void setProperties(@javax.annotation.Nullable Map<String, String> propert
165169
this.properties = properties;
166170
}
167171

172+
public DeclareTableResponse managedVersioning(
173+
@javax.annotation.Nullable Boolean managedVersioning) {
174+
175+
this.managedVersioning = managedVersioning;
176+
return this;
177+
}
178+
179+
/**
180+
* When true, the caller should use namespace table version operations (CreateTableVersion,
181+
* DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions) to manage table versions
182+
* instead of relying on Lance&#39;s native version management.
183+
*
184+
* @return managedVersioning
185+
*/
186+
@javax.annotation.Nullable
187+
@JsonProperty(JSON_PROPERTY_MANAGED_VERSIONING)
188+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
189+
public Boolean getManagedVersioning() {
190+
return managedVersioning;
191+
}
192+
193+
@JsonProperty(JSON_PROPERTY_MANAGED_VERSIONING)
194+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
195+
public void setManagedVersioning(@javax.annotation.Nullable Boolean managedVersioning) {
196+
this.managedVersioning = managedVersioning;
197+
}
198+
168199
@Override
169200
public boolean equals(Object o) {
170201
if (this == o) {
@@ -177,12 +208,13 @@ public boolean equals(Object o) {
177208
return Objects.equals(this.transactionId, declareTableResponse.transactionId)
178209
&& Objects.equals(this.location, declareTableResponse.location)
179210
&& Objects.equals(this.storageOptions, declareTableResponse.storageOptions)
180-
&& Objects.equals(this.properties, declareTableResponse.properties);
211+
&& Objects.equals(this.properties, declareTableResponse.properties)
212+
&& Objects.equals(this.managedVersioning, declareTableResponse.managedVersioning);
181213
}
182214

183215
@Override
184216
public int hashCode() {
185-
return Objects.hash(transactionId, location, storageOptions, properties);
217+
return Objects.hash(transactionId, location, storageOptions, properties, managedVersioning);
186218
}
187219

188220
@Override
@@ -193,6 +225,7 @@ public String toString() {
193225
sb.append(" location: ").append(toIndentedString(location)).append("\n");
194226
sb.append(" storageOptions: ").append(toIndentedString(storageOptions)).append("\n");
195227
sb.append(" properties: ").append(toIndentedString(properties)).append("\n");
228+
sb.append(" managedVersioning: ").append(toIndentedString(managedVersioning)).append("\n");
196229
sb.append("}");
197230
return sb.toString();
198231
}
@@ -315,6 +348,22 @@ public String toUrlQueryString(String prefix) {
315348
}
316349
}
317350

351+
// add `managed_versioning` to the URL query string
352+
if (getManagedVersioning() != null) {
353+
try {
354+
joiner.add(
355+
String.format(
356+
"%smanaged_versioning%s=%s",
357+
prefix,
358+
suffix,
359+
URLEncoder.encode(String.valueOf(getManagedVersioning()), "UTF-8")
360+
.replaceAll("\\+", "%20")));
361+
} catch (UnsupportedEncodingException e) {
362+
// Should never happen, UTF-8 is always supported
363+
throw new RuntimeException(e);
364+
}
365+
}
366+
318367
return joiner.toString();
319368
}
320369
}

java/lance-namespace-springboot-server/src/main/java/org/lance/namespace/server/springboot/api/TableApi.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2216,7 +2216,8 @@ default ResponseEntity<CreateTableVersionResponse> createTableVersion(
22162216
request -> {
22172217
for (MediaType mediaType : MediaType.parseMediaTypes(request.getHeader("Accept"))) {
22182218
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
2219-
String exampleString = "{ \"transaction_id\" : \"transaction_id\" }";
2219+
String exampleString =
2220+
"{ \"transaction_id\" : \"transaction_id\", \"version\" : { \"metadata\" : { \"key\" : \"metadata\" }, \"manifest_path\" : \"manifest_path\", \"manifest_size\" : 0, \"e_tag\" : \"e_tag\", \"version\" : 0, \"timestamp\" : \"2000-01-23T04:56:07.000+00:00\" } }";
22202221
ApiUtil.setExampleResponse(request, "application/json", exampleString);
22212222
break;
22222223
}
@@ -2409,7 +2410,7 @@ default ResponseEntity<DeclareTableResponse> declareTable(
24092410
for (MediaType mediaType : MediaType.parseMediaTypes(request.getHeader("Accept"))) {
24102411
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
24112412
String exampleString =
2412-
"{ \"transaction_id\" : \"transaction_id\", \"location\" : \"location\", \"properties\" : { \"owner\" : \"Ralph\", \"created_at\" : \"1452120468\" }, \"storage_options\" : { \"key\" : \"storage_options\" } }";
2413+
"{ \"transaction_id\" : \"transaction_id\", \"location\" : \"location\", \"properties\" : { \"owner\" : \"Ralph\", \"created_at\" : \"1452120468\" }, \"managed_versioning\" : true, \"storage_options\" : { \"key\" : \"storage_options\" } }";
24132414
ApiUtil.setExampleResponse(request, "application/json", exampleString);
24142415
break;
24152416
}

java/lance-namespace-springboot-server/src/main/java/org/lance/namespace/server/springboot/model/CreateTableVersionResponse.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.fasterxml.jackson.annotation.JsonProperty;
1717
import io.swagger.v3.oas.annotations.media.Schema;
1818
import jakarta.annotation.Generated;
19+
import jakarta.validation.Valid;
1920
import jakarta.validation.constraints.*;
2021

2122
import java.util.*;
@@ -30,6 +31,8 @@ public class CreateTableVersionResponse {
3031

3132
private String transactionId;
3233

34+
private TableVersion version;
35+
3336
public CreateTableVersionResponse transactionId(String transactionId) {
3437
this.transactionId = transactionId;
3538
return this;
@@ -53,6 +56,27 @@ public void setTransactionId(String transactionId) {
5356
this.transactionId = transactionId;
5457
}
5558

59+
public CreateTableVersionResponse version(TableVersion version) {
60+
this.version = version;
61+
return this;
62+
}
63+
64+
/**
65+
* Get version
66+
*
67+
* @return version
68+
*/
69+
@Valid
70+
@Schema(name = "version", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
71+
@JsonProperty("version")
72+
public TableVersion getVersion() {
73+
return version;
74+
}
75+
76+
public void setVersion(TableVersion version) {
77+
this.version = version;
78+
}
79+
5680
@Override
5781
public boolean equals(Object o) {
5882
if (this == o) {
@@ -62,19 +86,21 @@ public boolean equals(Object o) {
6286
return false;
6387
}
6488
CreateTableVersionResponse createTableVersionResponse = (CreateTableVersionResponse) o;
65-
return Objects.equals(this.transactionId, createTableVersionResponse.transactionId);
89+
return Objects.equals(this.transactionId, createTableVersionResponse.transactionId)
90+
&& Objects.equals(this.version, createTableVersionResponse.version);
6691
}
6792

6893
@Override
6994
public int hashCode() {
70-
return Objects.hash(transactionId);
95+
return Objects.hash(transactionId, version);
7196
}
7297

7398
@Override
7499
public String toString() {
75100
StringBuilder sb = new StringBuilder();
76101
sb.append("class CreateTableVersionResponse {\n");
77102
sb.append(" transactionId: ").append(toIndentedString(transactionId)).append("\n");
103+
sb.append(" version: ").append(toIndentedString(version)).append("\n");
78104
sb.append("}");
79105
return sb.toString();
80106
}

0 commit comments

Comments
 (0)