blob: 2c9e6290c4608cc4e238cc75a7b33653f080d9e8 [file]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
syntax = "proto3";
package datafusion_java;
option java_package = "org.apache.datafusion.protobuf";
option java_multiple_files = true;
// Options used to construct a SessionContext. All fields are optional —
// unset fields leave DataFusion's default behavior in place.
//
// `options` is a free-form escape hatch matching DataFusion's
// `ConfigOptions::set(key, value)` API: any `datafusion.*` config key
// can be set as a string. Entries are applied AFTER the typed fields
// above (so an explicit `options` entry overrides a typed setter for
// the same knob) and IN INSERTION ORDER (so for keys whose setters
// have side effects on other keys -- e.g.
// `datafusion.optimizer.enable_dynamic_filter_pushdown` rewrites the
// specific `enable_*_dynamic_filter_pushdown` flags -- the caller's
// last write wins deterministically).
//
// `repeated ConfigOption` is used instead of `map<string,string>`
// because protobuf maps decode into `HashMap` on the Rust side, whose
// iteration order is randomized and would otherwise break the
// last-write-wins contract for overlapping keys.
//
// Unknown keys or unparseable values surface as a RuntimeException at
// SessionContext construction.
message SessionOptions {
optional uint64 batch_size = 1;
optional uint64 target_partitions = 2;
optional bool collect_statistics = 3;
optional bool information_schema = 4;
optional MemoryLimit memory_limit = 5;
optional string temp_directory = 6;
repeated ConfigOption options = 7;
}
message ConfigOption {
string key = 1;
string value = 2;
}
message MemoryLimit {
uint64 max_memory_bytes = 1;
double memory_fraction = 2;
}