diff --git a/java/lance-namespace-apache-client/api/openapi.yaml b/java/lance-namespace-apache-client/api/openapi.yaml index 0be97375..e4165795 100644 --- a/java/lance-namespace-apache-client/api/openapi.yaml +++ b/java/lance-namespace-apache-client/api/openapi.yaml @@ -8383,6 +8383,7 @@ components: RefreshMaterializedViewRequest: example: src_version: 0 + source_task_size: 5 cluster: cluster identity: api_key: api_key @@ -8393,7 +8394,7 @@ components: - id max_rows_per_fragment: 6 intra_applier_concurrency: 5 - output_limit: 5 + output_limit: 2 concurrency: 1 properties: identity: @@ -8419,6 +8420,12 @@ components: description: Optional intra-applier concurrency override nullable: true type: integer + source_task_size: + description: | + Optional number of source row ids per work item during expansion. + Bounds per-actor memory for chunker materialized views. + nullable: true + type: integer cluster: description: Optional cluster name (operational override) nullable: true diff --git a/java/lance-namespace-apache-client/docs/RefreshMaterializedViewRequest.md b/java/lance-namespace-apache-client/docs/RefreshMaterializedViewRequest.md index 94cd4d3d..e93fca4a 100644 --- a/java/lance-namespace-apache-client/docs/RefreshMaterializedViewRequest.md +++ b/java/lance-namespace-apache-client/docs/RefreshMaterializedViewRequest.md @@ -13,6 +13,7 @@ |**maxRowsPerFragment** | **Integer** | Optional maximum rows per fragment | [optional] | |**concurrency** | **Integer** | Optional concurrency override | [optional] | |**intraApplierConcurrency** | **Integer** | Optional intra-applier concurrency override | [optional] | +|**sourceTaskSize** | **Integer** | Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. | [optional] | |**cluster** | **String** | Optional cluster name (operational override) | [optional] | |**outputLimit** | **Integer** | Post-trim cap on view row count after expansion. Valid only for chunker materialized views; returns 400 if set on other kinds. | [optional] | |**manifest** | **String** | Optional inline JSON-serialized GenevaManifest. Operational override for this refresh only; does not mutate the view's snapshotted manifest. When omitted, the manifest stored in the view's metadata is used. | [optional] | diff --git a/java/lance-namespace-apache-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java b/java/lance-namespace-apache-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java index a59df920..eed2131e 100644 --- a/java/lance-namespace-apache-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java +++ b/java/lance-namespace-apache-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java @@ -35,6 +35,7 @@ RefreshMaterializedViewRequest.JSON_PROPERTY_MAX_ROWS_PER_FRAGMENT, RefreshMaterializedViewRequest.JSON_PROPERTY_CONCURRENCY, RefreshMaterializedViewRequest.JSON_PROPERTY_INTRA_APPLIER_CONCURRENCY, + RefreshMaterializedViewRequest.JSON_PROPERTY_SOURCE_TASK_SIZE, RefreshMaterializedViewRequest.JSON_PROPERTY_CLUSTER, RefreshMaterializedViewRequest.JSON_PROPERTY_OUTPUT_LIMIT, RefreshMaterializedViewRequest.JSON_PROPERTY_MANIFEST @@ -69,6 +70,11 @@ public class RefreshMaterializedViewRequest { @javax.annotation.Nullable private JsonNullable intraApplierConcurrency = JsonNullable.undefined(); + public static final String JSON_PROPERTY_SOURCE_TASK_SIZE = "source_task_size"; + + @javax.annotation.Nullable + private JsonNullable sourceTaskSize = JsonNullable.undefined(); + public static final String JSON_PROPERTY_CLUSTER = "cluster"; @javax.annotation.Nullable @@ -275,6 +281,40 @@ public void setIntraApplierConcurrency( this.intraApplierConcurrency = JsonNullable.of(intraApplierConcurrency); } + public RefreshMaterializedViewRequest sourceTaskSize( + @javax.annotation.Nullable Integer sourceTaskSize) { + this.sourceTaskSize = JsonNullable.of(sourceTaskSize); + + return this; + } + + /** + * Optional number of source row ids per work item during expansion. Bounds per-actor memory for + * chunker materialized views. + * + * @return sourceTaskSize + */ + @javax.annotation.Nullable + @JsonIgnore + public Integer getSourceTaskSize() { + return sourceTaskSize.orElse(null); + } + + @JsonProperty(JSON_PROPERTY_SOURCE_TASK_SIZE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public JsonNullable getSourceTaskSize_JsonNullable() { + return sourceTaskSize; + } + + @JsonProperty(JSON_PROPERTY_SOURCE_TASK_SIZE) + public void setSourceTaskSize_JsonNullable(JsonNullable sourceTaskSize) { + this.sourceTaskSize = sourceTaskSize; + } + + public void setSourceTaskSize(@javax.annotation.Nullable Integer sourceTaskSize) { + this.sourceTaskSize = JsonNullable.of(sourceTaskSize); + } + public RefreshMaterializedViewRequest cluster(@javax.annotation.Nullable String cluster) { this.cluster = JsonNullable.of(cluster); @@ -393,6 +433,7 @@ && equalsNullable( && equalsNullable(this.concurrency, refreshMaterializedViewRequest.concurrency) && equalsNullable( this.intraApplierConcurrency, refreshMaterializedViewRequest.intraApplierConcurrency) + && equalsNullable(this.sourceTaskSize, refreshMaterializedViewRequest.sourceTaskSize) && equalsNullable(this.cluster, refreshMaterializedViewRequest.cluster) && equalsNullable(this.outputLimit, refreshMaterializedViewRequest.outputLimit) && equalsNullable(this.manifest, refreshMaterializedViewRequest.manifest); @@ -416,6 +457,7 @@ public int hashCode() { hashCodeNullable(maxRowsPerFragment), hashCodeNullable(concurrency), hashCodeNullable(intraApplierConcurrency), + hashCodeNullable(sourceTaskSize), hashCodeNullable(cluster), hashCodeNullable(outputLimit), hashCodeNullable(manifest)); @@ -440,6 +482,7 @@ public String toString() { sb.append(" intraApplierConcurrency: ") .append(toIndentedString(intraApplierConcurrency)) .append("\n"); + sb.append(" sourceTaskSize: ").append(toIndentedString(sourceTaskSize)).append("\n"); sb.append(" cluster: ").append(toIndentedString(cluster)).append("\n"); sb.append(" outputLimit: ").append(toIndentedString(outputLimit)).append("\n"); sb.append(" manifest: ").append(toIndentedString(manifest)).append("\n"); @@ -579,6 +622,22 @@ public String toUrlQueryString(String prefix) { } } + // add `source_task_size` to the URL query string + if (getSourceTaskSize() != null) { + try { + joiner.add( + String.format( + "%ssource_task_size%s=%s", + prefix, + suffix, + URLEncoder.encode(String.valueOf(getSourceTaskSize()), "UTF-8") + .replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + // add `cluster` to the URL query string if (getCluster() != null) { try { diff --git a/java/lance-namespace-async-client/api/openapi.yaml b/java/lance-namespace-async-client/api/openapi.yaml index 0be97375..e4165795 100644 --- a/java/lance-namespace-async-client/api/openapi.yaml +++ b/java/lance-namespace-async-client/api/openapi.yaml @@ -8383,6 +8383,7 @@ components: RefreshMaterializedViewRequest: example: src_version: 0 + source_task_size: 5 cluster: cluster identity: api_key: api_key @@ -8393,7 +8394,7 @@ components: - id max_rows_per_fragment: 6 intra_applier_concurrency: 5 - output_limit: 5 + output_limit: 2 concurrency: 1 properties: identity: @@ -8419,6 +8420,12 @@ components: description: Optional intra-applier concurrency override nullable: true type: integer + source_task_size: + description: | + Optional number of source row ids per work item during expansion. + Bounds per-actor memory for chunker materialized views. + nullable: true + type: integer cluster: description: Optional cluster name (operational override) nullable: true diff --git a/java/lance-namespace-async-client/docs/RefreshMaterializedViewRequest.md b/java/lance-namespace-async-client/docs/RefreshMaterializedViewRequest.md index 94cd4d3d..e93fca4a 100644 --- a/java/lance-namespace-async-client/docs/RefreshMaterializedViewRequest.md +++ b/java/lance-namespace-async-client/docs/RefreshMaterializedViewRequest.md @@ -13,6 +13,7 @@ |**maxRowsPerFragment** | **Integer** | Optional maximum rows per fragment | [optional] | |**concurrency** | **Integer** | Optional concurrency override | [optional] | |**intraApplierConcurrency** | **Integer** | Optional intra-applier concurrency override | [optional] | +|**sourceTaskSize** | **Integer** | Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. | [optional] | |**cluster** | **String** | Optional cluster name (operational override) | [optional] | |**outputLimit** | **Integer** | Post-trim cap on view row count after expansion. Valid only for chunker materialized views; returns 400 if set on other kinds. | [optional] | |**manifest** | **String** | Optional inline JSON-serialized GenevaManifest. Operational override for this refresh only; does not mutate the view's snapshotted manifest. When omitted, the manifest stored in the view's metadata is used. | [optional] | diff --git a/java/lance-namespace-async-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java b/java/lance-namespace-async-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java index c0dfdd90..16d5c9d4 100644 --- a/java/lance-namespace-async-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java +++ b/java/lance-namespace-async-client/src/main/java/org/lance/namespace/model/RefreshMaterializedViewRequest.java @@ -35,6 +35,7 @@ RefreshMaterializedViewRequest.JSON_PROPERTY_MAX_ROWS_PER_FRAGMENT, RefreshMaterializedViewRequest.JSON_PROPERTY_CONCURRENCY, RefreshMaterializedViewRequest.JSON_PROPERTY_INTRA_APPLIER_CONCURRENCY, + RefreshMaterializedViewRequest.JSON_PROPERTY_SOURCE_TASK_SIZE, RefreshMaterializedViewRequest.JSON_PROPERTY_CLUSTER, RefreshMaterializedViewRequest.JSON_PROPERTY_OUTPUT_LIMIT, RefreshMaterializedViewRequest.JSON_PROPERTY_MANIFEST @@ -61,6 +62,9 @@ public class RefreshMaterializedViewRequest { public static final String JSON_PROPERTY_INTRA_APPLIER_CONCURRENCY = "intra_applier_concurrency"; private JsonNullable intraApplierConcurrency = JsonNullable.undefined(); + public static final String JSON_PROPERTY_SOURCE_TASK_SIZE = "source_task_size"; + private JsonNullable sourceTaskSize = JsonNullable.undefined(); + public static final String JSON_PROPERTY_CLUSTER = "cluster"; private JsonNullable cluster = JsonNullable.undefined(); @@ -255,6 +259,39 @@ public void setIntraApplierConcurrency( this.intraApplierConcurrency = JsonNullable.of(intraApplierConcurrency); } + public RefreshMaterializedViewRequest sourceTaskSize( + @javax.annotation.Nullable Integer sourceTaskSize) { + this.sourceTaskSize = JsonNullable.of(sourceTaskSize); + return this; + } + + /** + * Optional number of source row ids per work item during expansion. Bounds per-actor memory for + * chunker materialized views. + * + * @return sourceTaskSize + */ + @javax.annotation.Nullable + @JsonIgnore + public Integer getSourceTaskSize() { + return sourceTaskSize.orElse(null); + } + + @JsonProperty(JSON_PROPERTY_SOURCE_TASK_SIZE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public JsonNullable getSourceTaskSize_JsonNullable() { + return sourceTaskSize; + } + + @JsonProperty(JSON_PROPERTY_SOURCE_TASK_SIZE) + public void setSourceTaskSize_JsonNullable(JsonNullable sourceTaskSize) { + this.sourceTaskSize = sourceTaskSize; + } + + public void setSourceTaskSize(@javax.annotation.Nullable Integer sourceTaskSize) { + this.sourceTaskSize = JsonNullable.of(sourceTaskSize); + } + public RefreshMaterializedViewRequest cluster(@javax.annotation.Nullable String cluster) { this.cluster = JsonNullable.of(cluster); return this; @@ -371,6 +408,7 @@ && equalsNullable( && equalsNullable(this.concurrency, refreshMaterializedViewRequest.concurrency) && equalsNullable( this.intraApplierConcurrency, refreshMaterializedViewRequest.intraApplierConcurrency) + && equalsNullable(this.sourceTaskSize, refreshMaterializedViewRequest.sourceTaskSize) && equalsNullable(this.cluster, refreshMaterializedViewRequest.cluster) && equalsNullable(this.outputLimit, refreshMaterializedViewRequest.outputLimit) && equalsNullable(this.manifest, refreshMaterializedViewRequest.manifest); @@ -394,6 +432,7 @@ public int hashCode() { hashCodeNullable(maxRowsPerFragment), hashCodeNullable(concurrency), hashCodeNullable(intraApplierConcurrency), + hashCodeNullable(sourceTaskSize), hashCodeNullable(cluster), hashCodeNullable(outputLimit), hashCodeNullable(manifest)); @@ -418,6 +457,7 @@ public String toString() { sb.append(" intraApplierConcurrency: ") .append(toIndentedString(intraApplierConcurrency)) .append("\n"); + sb.append(" sourceTaskSize: ").append(toIndentedString(sourceTaskSize)).append("\n"); sb.append(" cluster: ").append(toIndentedString(cluster)).append("\n"); sb.append(" outputLimit: ").append(toIndentedString(outputLimit)).append("\n"); sb.append(" manifest: ").append(toIndentedString(manifest)).append("\n"); @@ -523,6 +563,14 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getIntraApplierConcurrency())))); } + // add `source_task_size` to the URL query string + if (getSourceTaskSize() != null) { + joiner.add( + String.format( + "%ssource_task_size%s=%s", + prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getSourceTaskSize())))); + } + // add `cluster` to the URL query string if (getCluster() != null) { joiner.add( diff --git a/java/lance-namespace-springboot-server/src/main/java/org/lance/namespace/server/springboot/model/RefreshMaterializedViewRequest.java b/java/lance-namespace-springboot-server/src/main/java/org/lance/namespace/server/springboot/model/RefreshMaterializedViewRequest.java index b0b82127..378381b9 100644 --- a/java/lance-namespace-springboot-server/src/main/java/org/lance/namespace/server/springboot/model/RefreshMaterializedViewRequest.java +++ b/java/lance-namespace-springboot-server/src/main/java/org/lance/namespace/server/springboot/model/RefreshMaterializedViewRequest.java @@ -42,6 +42,8 @@ public class RefreshMaterializedViewRequest { private Integer intraApplierConcurrency = null; + private Integer sourceTaskSize = null; + private String cluster = null; private Integer outputLimit = null; @@ -192,6 +194,31 @@ public void setIntraApplierConcurrency(Integer intraApplierConcurrency) { this.intraApplierConcurrency = intraApplierConcurrency; } + public RefreshMaterializedViewRequest sourceTaskSize(Integer sourceTaskSize) { + this.sourceTaskSize = sourceTaskSize; + return this; + } + + /** + * Optional number of source row ids per work item during expansion. Bounds per-actor memory for + * chunker materialized views. + * + * @return sourceTaskSize + */ + @Schema( + name = "source_task_size", + description = + "Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. ", + requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("source_task_size") + public Integer getSourceTaskSize() { + return sourceTaskSize; + } + + public void setSourceTaskSize(Integer sourceTaskSize) { + this.sourceTaskSize = sourceTaskSize; + } + public RefreshMaterializedViewRequest cluster(String cluster) { this.cluster = cluster; return this; @@ -284,6 +311,7 @@ public boolean equals(Object o) { && Objects.equals(this.concurrency, refreshMaterializedViewRequest.concurrency) && Objects.equals( this.intraApplierConcurrency, refreshMaterializedViewRequest.intraApplierConcurrency) + && Objects.equals(this.sourceTaskSize, refreshMaterializedViewRequest.sourceTaskSize) && Objects.equals(this.cluster, refreshMaterializedViewRequest.cluster) && Objects.equals(this.outputLimit, refreshMaterializedViewRequest.outputLimit) && Objects.equals(this.manifest, refreshMaterializedViewRequest.manifest); @@ -298,6 +326,7 @@ public int hashCode() { maxRowsPerFragment, concurrency, intraApplierConcurrency, + sourceTaskSize, cluster, outputLimit, manifest); @@ -315,6 +344,7 @@ public String toString() { sb.append(" intraApplierConcurrency: ") .append(toIndentedString(intraApplierConcurrency)) .append("\n"); + sb.append(" sourceTaskSize: ").append(toIndentedString(sourceTaskSize)).append("\n"); sb.append(" cluster: ").append(toIndentedString(cluster)).append("\n"); sb.append(" outputLimit: ").append(toIndentedString(outputLimit)).append("\n"); sb.append(" manifest: ").append(toIndentedString(manifest)).append("\n"); diff --git a/rust/lance-namespace-reqwest-client/docs/RefreshMaterializedViewRequest.md b/rust/lance-namespace-reqwest-client/docs/RefreshMaterializedViewRequest.md index c5d0e92f..b3084e65 100644 --- a/rust/lance-namespace-reqwest-client/docs/RefreshMaterializedViewRequest.md +++ b/rust/lance-namespace-reqwest-client/docs/RefreshMaterializedViewRequest.md @@ -10,7 +10,7 @@ Name | Type | Description | Notes **max_rows_per_fragment** | Option<**i32**> | Optional maximum rows per fragment | [optional] **concurrency** | Option<**i32**> | Optional concurrency override | [optional] **intra_applier_concurrency** | Option<**i32**> | Optional intra-applier concurrency override | [optional] -**source_task_size** | Option<**i32**> | Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. | [optional] +**source_task_size** | Option<**i32**> | Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. | [optional] **cluster** | Option<**String**> | Optional cluster name (operational override) | [optional] **output_limit** | Option<**i32**> | Post-trim cap on view row count after expansion. Valid only for chunker materialized views; returns 400 if set on other kinds. | [optional] **manifest** | Option<**String**> | Optional inline JSON-serialized GenevaManifest. Operational override for this refresh only; does not mutate the view's snapshotted manifest. When omitted, the manifest stored in the view's metadata is used. | [optional] diff --git a/rust/lance-namespace-reqwest-client/src/models/refresh_materialized_view_request.rs b/rust/lance-namespace-reqwest-client/src/models/refresh_materialized_view_request.rs index b7f7edca..89fb6f6f 100644 --- a/rust/lance-namespace-reqwest-client/src/models/refresh_materialized_view_request.rs +++ b/rust/lance-namespace-reqwest-client/src/models/refresh_materialized_view_request.rs @@ -30,7 +30,7 @@ pub struct RefreshMaterializedViewRequest { /// Optional intra-applier concurrency override #[serde(rename = "intra_applier_concurrency", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] pub intra_applier_concurrency: Option>, - /// Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. + /// Optional number of source row ids per work item during expansion. Bounds per-actor memory for chunker materialized views. #[serde(rename = "source_task_size", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] pub source_task_size: Option>, /// Optional cluster name (operational override)