Skip to content

Commit

Permalink
Add "native_expression.max_array_size_in_reduce" session property.
Browse files Browse the repository at this point in the history
  • Loading branch information
spershin committed Oct 16, 2024
1 parent 86ae524 commit 7518ddf
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 1 deletion.
8 changes: 8 additions & 0 deletions presto-docs/src/main/sphinx/presto_cpp/features.rst
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,14 @@ Native Execution only. Enable row number spilling on native engine.

Native Execution only. Enable simplified path in expression evaluation.

``native_expression.max_array_size_in_reduce``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* **Type:** ``integer``
* **Default value:** ``100000``

Native Execution only. Reduce() function will throw an error if encountered an array of size greater than this.

``native_spill_compression_codec``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ public final class SystemSessionProperties

// TODO: Native execution related session properties that are temporarily put here. They will be relocated in the future.
public static final String NATIVE_SIMPLIFIED_EXPRESSION_EVALUATION_ENABLED = "native_simplified_expression_evaluation_enabled";
public static final String NATIVE_EXPRESSION_MAX_ARRAY_SIZE_IN_REDUCE = "native_expression.max_array_size_in_reduce";
public static final String NATIVE_AGGREGATION_SPILL_ALL = "native_aggregation_spill_all";
public static final String NATIVE_MAX_SPILL_LEVEL = "native_max_spill_level";
public static final String NATIVE_MAX_SPILL_FILE_SIZE = "native_max_spill_file_size";
Expand Down Expand Up @@ -1648,6 +1649,11 @@ public SystemSessionProperties(
"Native Execution only. Enable simplified path in expression evaluation",
false,
false),
integerProperty(
NATIVE_EXPRESSION_MAX_ARRAY_SIZE_IN_REDUCE,
"Native Execution only. Reduce() function will throw an error if encountered an array of size greater than this.",
100000,
false),
booleanProperty(
NATIVE_AGGREGATION_SPILL_ALL,
"Native Execution only. If true and spilling has been triggered during the input " +
Expand Down
8 changes: 8 additions & 0 deletions presto-native-execution/presto_cpp/main/SessionProperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,14 @@ SessionProperties::SessionProperties() {
QueryConfig::kExprEvalSimplified,
boolToString(c.exprEvalSimplified()));

addSessionProperty(
kExprMaxArraySizeInReduce,
"Reduce() function will throw an error if encountered an array of size greater than this.",
BIGINT(),
false,
QueryConfig::kExprMaxArraySizeInReduce,
std::to_string(c.exprMaxArraySizeInReduce()));

addSessionProperty(
kMaxPartialAggregationMemory,
"The max partial aggregation memory when data reduction is not optimal.",
Expand Down
5 changes: 5 additions & 0 deletions presto-native-execution/presto_cpp/main/SessionProperties.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ class SessionProperties {
static constexpr const char* kExprEvalSimplified =
"native_simplified_expression_evaluation_enabled";

/// Reduce() function will throw an error if encountered an array of size
/// greater than this.
static constexpr const char* kExprMaxArraySizeInReduce =
"native_expression.max_array_size_in_reduce";

/// The maximum memory used by partial aggregation when data reduction is not
/// optimal.
static constexpr const char* kMaxPartialAggregationMemory =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ TEST_F(QueryContextManagerTest, nativeSessionProperties) {
{"native_debug_disable_expression_with_memoization", "true"},
{"native_debug_disable_expression_with_lazy_inputs", "true"},
{"native_selective_nimble_reader_enabled", "true"},
{"aggregation_spill_all", "true"}}};
{"aggregation_spill_all", "true"},
{"native_expression.max_array_size_in_reduce", 99999}}};
auto queryCtx = taskManager_->getQueryContextManager()->findOrCreateQueryCtx(
taskId, session);
EXPECT_EQ(queryCtx->queryConfig().maxSpillLevel(), 2);
Expand All @@ -70,6 +71,7 @@ TEST_F(QueryContextManagerTest, nativeSessionProperties) {
EXPECT_TRUE(queryCtx->queryConfig().debugDisableExpressionsWithLazyInputs());
EXPECT_TRUE(queryCtx->queryConfig().selectiveNimbleReaderEnabled());
EXPECT_EQ(queryCtx->queryConfig().spillWriteBufferSize(), 1024);
EXPECT_EQ(queryCtx->queryConfig().exprMaxArraySizeInReduce(), 99999);
}

TEST_F(QueryContextManagerTest, defaultSessionProperties) {
Expand Down

0 comments on commit 7518ddf

Please sign in to comment.