Presto C++ Session Properties

Session Properties

The following are the native session properties for C++ based Presto.

driver_cpu_time_slice_limit_ms

  • Type: integer

  • Default value: 1000

Native Execution only. Defines the maximum CPU time in milliseconds that a driver thread is permitted to run before it must yield to other threads,facilitating fair CPU usage across multiple threads.

A positive value enforces this limit, ensuring threads do not monopolize CPU resources.

Negative values are considered invalid and are treated as a request to use the system default setting, which is 1000 ms in this case.

Note: Setting the property to 0 allows a thread to run indefinitely without yielding, which is not recommended in a shared environment as it can lead to resource contention.

legacy_timestamp

  • Type: boolean

  • Default value: true

Native Execution only. Use legacy TIME and TIMESTAMP semantics.

native_aggregation_spill_memory_threshold

  • Type: integer

  • Default value: 0

Native Execution only. Specifies the maximum memory in bytes that a final aggregation operation can utilize before it starts spilling to disk. If set to 0, there is no limit, allowing the aggregation to consume unlimited memory resources, which may impact system performance.

native_debug_validate_output_from_operators

  • Type: boolean

  • Default value: false

If set to true, then during the execution of tasks, the output vectors of every operator are validated for consistency. It can help identify issues where a malformed vector causes failures or crashes, facilitating the debugging of operator output issues.

Note: This is an expensive check and should only be used for debugging purposes.

native_debug_disable_expression_with_peeling

  • Type: boolean

  • Default value: false

If set to true, disables the optimization in expression evaluation to peel common dictionary layer from inputs.

This should only be used for debugging purposes.

native_debug_disable_common_sub_expressions

  • Type: boolean

  • Default value: false

If set to true, disables the optimization in expression evaluation to reuse cached results for common sub-expressions.

This should only be used for debugging purposes.

native_debug_disable_expression_with_memoization

  • Type: boolean

  • Default value: false

If set to true, disables the optimization in expression evaluation to reuse cached results between subsequent input batches that are dictionary encoded and have the same alphabet(underlying flat vector).

This should only be used for debugging purposes.

native_debug_disable_expression_with_lazy_inputs

  • Type: boolean

  • Default value: false

If set to true, disables the optimization in expression evaluation to delay loading of lazy inputs unless required.

This should only be used for debugging purposes.

native_selective_nimble_reader_enabled

  • Type: boolean

  • Default value: false

Temporary flag to control whether selective Nimble reader should be used in this query or not.

native_join_spill_enabled

  • Type: boolean

  • Default value: true

Native Execution only. Enable join spilling on native engine.

native_join_spill_memory_threshold

  • Type: integer

  • Default value: 0

Native Execution only. Specifies the maximum memory, in bytes, that a hash join operation can use before starting to spill to disk. A value of 0 indicates no limit, permitting the join operation to use unlimited memory resources, which might affect overall system performance.

native_join_spiller_partition_bits

  • Type: integer

  • Default value: 2

Native Execution only. Specifies the number of bits (N) used to calculate the spilling partition number for hash join and RowNumber operations. The partition number is determined as 2 raised to the power of N, defining how data is partitioned during the spill process.

native_max_spill_file_size

  • Type: integer

  • Default value: 0

Specifies the maximum allowed spill file size in bytes. If set to 0, there is no limit on the spill file size, allowing spill files to grow as large as necessary based on available disk space. Use native_max_spill_file_size to manage disk space usage during operations that require spilling to disk.

native_max_spill_level

  • Type: integer

  • Default value: 4

Native Execution only. The maximum allowed spilling level for hash join build. 0 is the initial spilling level, -1 means unlimited.

native_order_by_spill_memory_threshold

  • Type: integer

  • Default value: 0

Native Execution only. Specifies the maximum memory, in bytes, that the ORDER BY operation can utilize before starting to spill data to disk. If set to 0, there is no limit on memory usage, potentially leading to large memory allocations for sorting operations. Use this threshold to manage memory usage more efficiently during ORDER BY operations.

native_row_number_spill_enabled

  • Type: boolean

  • Default value: true

Native Execution only. Enable row number spilling on native engine.

native_simplified_expression_evaluation_enabled

  • Type: boolean

  • Default value: false

Native Execution only. Enable simplified path in expression evaluation.

native_expression_max_array_size_in_reduce

  • Type: integer

  • Default value: 100000

Native Execution only. The reduce function will throw an error if it encounters an array of size greater than this value.

native_spill_compression_codec

  • Type: varchar

  • Default value: none

Native Execution only. Specifies the compression CODEC used to compress spilled data. Supported compression CODECs are: ZLIB, SNAPPY, LZO, ZSTD, LZ4, and GZIP. Setting this property to none disables compression.

native_spill_file_create_config

  • Type: varchar

  • Default value: ""

Native Execution only. Specifies the configuration parameters used to create spill files. These parameters are provided to the underlying file system, allowing for customizable spill file creation based on the requirements of the environment. The format and options of these parameters are determined by the capabilities of the underlying file system and may include settings such as file location, size limits, and file system-specific optimizations.

native_spill_write_buffer_size

  • Type: bigint

  • Default value: 1048576

Native Execution only. The maximum size in bytes to buffer the serialized spill data before writing to disk for IO efficiency. If set to 0, buffering is disabled.

native_topn_row_number_spill_enabled

  • Type: boolean

  • Default value: true

Native Execution only. Enable topN row number spilling on native engine.

native_window_spill_enabled

  • Type: boolean

  • Default value: true

Native Execution only. Enable window spilling on native engine.

native_writer_spill_enabled

  • Type: boolean

  • Default value: true

Native Execution only. Enable writer spilling on native engine.

native_writer_flush_threshold_bytes

  • Type: bigint

  • Default value: 100663296

Minimum memory footprint size required to reclaim memory from a file writer by flushing its buffered data to disk. Default is 96MB.

native_max_output_buffer_size

  • Type: bigint

  • Default value: 33554432

The maximum size in bytes for the task’s buffered output. The buffer is shared among all drivers. Default is 32MB.

native_max_page_partitioning_buffer_size

  • Type: bigint

  • Default value: 33554432

The maximum bytes to buffer per PartitionedOutput operator to avoid creating tiny SerializedPages. For PartitionedOutputNode::Kind::kPartitioned, PartitionedOutput operator would buffer up to that number of bytes / number of destinations for each destination before producing a SerializedPage. Default is 32MB.

native_max_local_exchange_partition_count

  • Type: bigint

  • Default value: 4294967296

Maximum number of partitions created by a local exchange. Affects concurrency for pipelines containing LocalPartitionNode.