Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 42 additions & 38 deletions fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
Original file line number Diff line number Diff line change
Expand Up @@ -1086,10 +1086,10 @@ public static double getHotValueThreshold() {
// if it is setStmt, we needn't collect session origin value
public boolean isSingleSetVar = false;

@VarAttrDef.VarAttr(name = EXPAND_RUNTIME_FILTER_BY_INNER_JION)
@VarAttrDef.VarAttr(name = EXPAND_RUNTIME_FILTER_BY_INNER_JION, needForward = true)
public boolean expandRuntimeFilterByInnerJoin = true;

@VarAttrDef.VarAttr(name = ENABLE_DECOUPLED_RUNTIME_FILTER,
@VarAttrDef.VarAttr(name = ENABLE_DECOUPLED_RUNTIME_FILTER, needForward = true,
description = "Enable decoupled runtime filter: allow RF producer and predicate source "
+ "to be on different join nodes")
public boolean enableDecoupledRuntimeFilter = true;
Expand Down Expand Up @@ -1181,7 +1181,7 @@ public static double getHotValueThreshold() {
+ "FileScanNode uses FileScannerV2 for supported query scans. Enabled by default.")
public boolean enableFileScannerV2 = true;

@VarAttrDef.VarAttr(name = LOCAL_EXCHANGE_FREE_BLOCKS_LIMIT)
@VarAttrDef.VarAttr(name = LOCAL_EXCHANGE_FREE_BLOCKS_LIMIT, needForward = true)
public int localExchangeFreeBlocksLimit = 4;

@VarAttrDef.VarAttr(name = MIN_SCANNERS_CONCURRENCY, needForward = true,
Expand Down Expand Up @@ -1388,7 +1388,7 @@ public void checkQuerySlotCount(String slotCnt) {
setter = "setLcTimeNames")
public String lcTimeNames = "en_US";

@VarAttrDef.VarAttr(name = PARALLEL_EXCHANGE_INSTANCE_NUM)
@VarAttrDef.VarAttr(name = PARALLEL_EXCHANGE_INSTANCE_NUM, needForward = true)
public int exchangeInstanceParallel = 256;

@VarAttrDef.VarAttr(name = SQL_SAFE_UPDATES)
Expand Down Expand Up @@ -1421,16 +1421,16 @@ public void checkQuerySlotCount(String slotCnt) {
+ "Range [1MB, 512MB]. Default 8MB.")
public long preferredBlockSizeBytes = 8388608L; // 8MB

@VarAttrDef.VarAttr(name = DISABLE_STREAMING_PREAGGREGATIONS, fuzzy = true)
@VarAttrDef.VarAttr(name = DISABLE_STREAMING_PREAGGREGATIONS, needForward = true, fuzzy = true)
public boolean disableStreamPreaggregations = false;

@VarAttrDef.VarAttr(name = ENABLE_DISTINCT_STREAMING_AGGREGATION, fuzzy = true)
@VarAttrDef.VarAttr(name = ENABLE_DISTINCT_STREAMING_AGGREGATION, needForward = true, fuzzy = true)
public boolean enableDistinctStreamingAggregation = true;

@VarAttrDef.VarAttr(name = ENABLE_STREAMING_AGG_HASH_JOIN_FORCE_PASSTHROUGH, fuzzy = true)
public boolean enableStreamingAggHashJoinForcePassthrough = true;

@VarAttrDef.VarAttr(name = ENABLE_LOCAL_EXCHANGE_BEFORE_AGG, fuzzy = true)
@VarAttrDef.VarAttr(name = ENABLE_LOCAL_EXCHANGE_BEFORE_AGG, needForward = true, fuzzy = true)
public boolean enableLocalExchangeBeforeAgg = true;

@VarAttrDef.VarAttr(name = ENABLE_LOCAL_EXCHANGE_BEFORE_STREAMING_AGG, fuzzy = true)
Expand All @@ -1439,13 +1439,14 @@ public void checkQuerySlotCount(String slotCnt) {
@VarAttrDef.VarAttr(name = ENABLE_DISTINCT_STREAMING_AGG_FORCE_PASSTHROUGH, fuzzy = true)
public boolean enableDistinctStreamingAggForcePassthrough = true;

@VarAttrDef.VarAttr(name = ENABLE_BROADCAST_JOIN_FORCE_PASSTHROUGH, fuzzy = true)
@VarAttrDef.VarAttr(name = ENABLE_BROADCAST_JOIN_FORCE_PASSTHROUGH, needForward = true, fuzzy = true)
public boolean enableBroadcastJoinForcePassthrough = false;

@VarAttrDef.VarAttr(name = DISABLE_COLOCATE_PLAN)
@VarAttrDef.VarAttr(name = DISABLE_COLOCATE_PLAN, needForward = true)
public boolean disableColocatePlan = false;

@VarAttrDef.VarAttr(name = ENABLE_BUCKET_SHUFFLE_JOIN, varType = VariableAnnotation.EXPERIMENTAL_ONLINE)
@VarAttrDef.VarAttr(name = ENABLE_BUCKET_SHUFFLE_JOIN,
needForward = true, varType = VariableAnnotation.EXPERIMENTAL_ONLINE)
public boolean enableBucketShuffleJoin = true;

/**
Expand Down Expand Up @@ -1578,7 +1579,7 @@ public boolean isEnableDynamicPartitionDropProtection() {
)
public boolean skipPrunePredicate = false;

@VarAttrDef.VarAttr(name = ENABLE_SQL_CACHE, fuzzy = true)
@VarAttrDef.VarAttr(name = ENABLE_SQL_CACHE, needForward = true, fuzzy = true)
public boolean enableSqlCache = true;

@VarAttrDef.VarAttr(name = ENABLE_HIVE_SQL_CACHE, fuzzy = false)
Expand Down Expand Up @@ -1774,14 +1775,14 @@ public boolean isEnableDynamicPartitionDropProtection() {
@VarAttrDef.VarAttr(name = ENABLE_LOCAL_MERGE_SORT)
private boolean enableLocalMergeSort = true;

@VarAttrDef.VarAttr(name = ENABLE_SHARED_EXCHANGE_SINK_BUFFER, fuzzy = true)
@VarAttrDef.VarAttr(name = ENABLE_SHARED_EXCHANGE_SINK_BUFFER, needForward = true, fuzzy = true)
private boolean enableSharedExchangeSinkBuffer = true;

@VarAttrDef.VarAttr(name = ENABLE_AGG_STATE, fuzzy = false, varType = VariableAnnotation.EXPERIMENTAL,
needForward = true)
public boolean enableAggState = false;

@VarAttrDef.VarAttr(name = ENABLE_PARALLEL_OUTFILE)
@VarAttrDef.VarAttr(name = ENABLE_PARALLEL_OUTFILE, needForward = true)
public boolean enableParallelOutfile = false;

@VarAttrDef.VarAttr(name = CPU_RESOURCE_LIMIT)
Expand All @@ -1793,7 +1794,7 @@ public boolean isEnableDynamicPartitionDropProtection() {
@VarAttrDef.VarAttr(name = TRIM_TAILING_SPACES_FOR_EXTERNAL_TABLE_QUERY, needForward = true)
public boolean trimTailingSpacesForExternalTableQuery = false;

@VarAttrDef.VarAttr(name = PARALLEL_PREPARE_THRESHOLD, fuzzy = true)
@VarAttrDef.VarAttr(name = PARALLEL_PREPARE_THRESHOLD, needForward = true, fuzzy = true)
public int parallelPrepareThreshold = 32;

@VarAttrDef.VarAttr(name = READ_HIVE_JSON_IN_ONE_COLUMN,
Expand All @@ -1805,7 +1806,7 @@ public boolean isEnableDynamicPartitionDropProtection() {
+ "be string.")
private boolean readHiveJsonInOneColumn = false;

@VarAttrDef.VarAttr(name = ENABLE_COST_BASED_JOIN_REORDER)
@VarAttrDef.VarAttr(name = ENABLE_COST_BASED_JOIN_REORDER, needForward = true)
private boolean enableJoinReorderBasedCost = false;

@VarAttrDef.VarAttr(name = ENABLE_FOLD_CONSTANT_BY_BE, fuzzy = true)
Expand Down Expand Up @@ -1988,10 +1989,10 @@ public void setCboNetWeight(double cboNetWeight) {
@VarAttrDef.VarAttr(name = CBO_NET_WEIGHT)
private double cboNetWeight = 1.5;

@VarAttrDef.VarAttr(name = DISABLE_JOIN_REORDER)
@VarAttrDef.VarAttr(name = DISABLE_JOIN_REORDER, needForward = true)
private boolean disableJoinReorder = false;

@VarAttrDef.VarAttr(name = MAX_JOIN_NUMBER_OF_REORDER)
@VarAttrDef.VarAttr(name = MAX_JOIN_NUMBER_OF_REORDER, needForward = true)
private int maxJoinNumberOfReorder = 63;

@VarAttrDef.VarAttr(name = ENABLE_BUSHY_TREE, needForward = true)
Expand All @@ -2013,10 +2014,10 @@ public void setMaxJoinNumberOfReorder(int maxJoinNumberOfReorder) {
this.maxJoinNumberOfReorder = maxJoinNumberOfReorder;
}

@VarAttrDef.VarAttr(name = MAX_JOIN_NUMBER_BUSHY_TREE)
@VarAttrDef.VarAttr(name = MAX_JOIN_NUMBER_BUSHY_TREE, needForward = true)
private int maxJoinNumBushyTree = 9;

@VarAttrDef.VarAttr(name = ENABLE_PARTITION_TOPN)
@VarAttrDef.VarAttr(name = ENABLE_PARTITION_TOPN, needForward = true)
private boolean enablePartitionTopN = true;

@VarAttrDef.VarAttr(name = PARTITION_TOPN_MAX_PARTITIONS, needForward = true, description = "This threshold "
Expand All @@ -2031,7 +2032,7 @@ public void setMaxJoinNumberOfReorder(int maxJoinNumberOfReorder) {
+ " can be passed transparently.")
private int partitionTopNPerPartitionRows = 1000;

@VarAttrDef.VarAttr(name = GLOBAL_PARTITION_TOPN_THRESHOLD)
@VarAttrDef.VarAttr(name = GLOBAL_PARTITION_TOPN_THRESHOLD, needForward = true)
private double globalPartitionTopNThreshold = 100;

// Forwarded to the BE as a query option and read by the MySQL result writer: when it is false
Expand Down Expand Up @@ -2064,7 +2065,7 @@ public void setMaxJoinNumberOfReorder(int maxJoinNumberOfReorder) {
)
public int decimalOverflowScale = 6;

@VarAttrDef.VarAttr(name = ENABLE_DPHYP_OPTIMIZER)
@VarAttrDef.VarAttr(name = ENABLE_DPHYP_OPTIMIZER, needForward = true)
public boolean enableDPHypOptimizer = false;

@VarAttrDef.VarAttr(name = SHORT_CIRCUIT_EVALUATION, fuzzy = true, description = "Whether to enable short-circuit "
Expand Down Expand Up @@ -2199,7 +2200,7 @@ public boolean isEnableHboNonStrictMatchingMode() {
@VarAttrDef.VarAttr(name = ENABLE_DPHYP_TRACE, needForward = true)
public boolean enableDpHypTrace = false;

@VarAttrDef.VarAttr(name = BROADCAST_RIGHT_TABLE_SCALE_FACTOR)
@VarAttrDef.VarAttr(name = BROADCAST_RIGHT_TABLE_SCALE_FACTOR, needForward = true)
private double broadcastRightTableScaleFactor = 0.0;

@VarAttrDef.VarAttr(name = LEFT_SEMI_OR_ANTI_PROBE_FACTOR)
Expand Down Expand Up @@ -2259,7 +2260,7 @@ public boolean isEnableHboNonStrictMatchingMode() {
description = "Set whether to push down LIMIT into SegmentIterator.")
public boolean enableSegmentLimitPushdown = true;

@VarAttrDef.VarAttr(name = ENABLE_LOCAL_EXCHANGE, fuzzy = false, flag = VarAttrDef.INVISIBLE,
@VarAttrDef.VarAttr(name = ENABLE_LOCAL_EXCHANGE, needForward = true, fuzzy = false, flag = VarAttrDef.INVISIBLE,
varType = VariableAnnotation.DEPRECATED)
public boolean enableLocalExchange = true;

Expand Down Expand Up @@ -2324,7 +2325,7 @@ public boolean isEnableHboNonStrictMatchingMode() {
@VarAttrDef.VarAttr(name = NEREIDS_TIMEOUT_SECOND, needForward = true)
public int nereidsTimeoutSecond = 30;

@VarAttrDef.VarAttr(name = ENABLE_PUSH_DOWN_NO_GROUP_AGG)
@VarAttrDef.VarAttr(name = ENABLE_PUSH_DOWN_NO_GROUP_AGG, needForward = true)
public boolean enablePushDownNoGroupAgg = true;

/**
Expand Down Expand Up @@ -2359,9 +2360,9 @@ public boolean isEnableHboNonStrictMatchingMode() {
description = "Replaced by topn_lazy_materialization_threshold. The two-stage read optimization "
+ "is disabled when topn_lazy_materialization_threshold = -1.")
public boolean enableTwoPhaseReadOpt = true;
@VarAttrDef.VarAttr(name = TOPN_OPT_LIMIT_THRESHOLD)
@VarAttrDef.VarAttr(name = TOPN_OPT_LIMIT_THRESHOLD, needForward = true)
public long topnOptLimitThreshold = 1024;
@VarAttrDef.VarAttr(name = TOPN_FILTER_RATIO)
@VarAttrDef.VarAttr(name = TOPN_FILTER_RATIO, needForward = true)
public double topnFilterRatio = 0.5;
@VarAttrDef.VarAttr(name = ENABLE_SNAPSHOT_POINT_QUERY)
public boolean enableSnapshotPointQuery = true;
Expand Down Expand Up @@ -2474,7 +2475,7 @@ public boolean isEnableHboNonStrictMatchingMode() {
public int memoMaxGroupExpressionSize = 10000;

// 2600 is an empirical value proven favorable for TPC-DS tests
@VarAttrDef.VarAttr(name = DPHYPER_LIMIT)
@VarAttrDef.VarAttr(name = DPHYPER_LIMIT, needForward = true)
public int dphyperLimit = 2600;

@VarAttrDef.VarAttr(name = "eager_aggregation_mode", needForward = true,
Expand Down Expand Up @@ -2728,16 +2729,17 @@ public void checkSplitQueueCapacity(String value) throws Exception {
needForward = false)
public int externalTableAnalyzePartNum = -1;

@VarAttrDef.VarAttr(name = INLINE_CTE_REFERENCED_THRESHOLD)
@VarAttrDef.VarAttr(name = INLINE_CTE_REFERENCED_THRESHOLD, needForward = true)
public int inlineCTEReferencedThreshold = 1;

@VarAttrDef.VarAttr(name = ENABLE_CTE_MATERIALIZE)
@VarAttrDef.VarAttr(name = ENABLE_CTE_MATERIALIZE, needForward = true)
public boolean enableCTEMaterialize = true;

@VarAttrDef.VarAttr(name = ENABLE_ORDERED_SCAN_RANGE_LOCATIONS)
public boolean enableOrderedScanRangeLocations = false;

@VarAttrDef.VarAttr(name = CTE_INLINE_MODE, description = "CTE inline mode. <0: disable; =0: only inline when CTE "
@VarAttrDef.VarAttr(name = CTE_INLINE_MODE,
needForward = true, description = "CTE inline mode. <0: disable; =0: only inline when CTE "
+ "body contains UNION ALL "
+ "and consumer filters can eliminate some union branches; "
+ ">=1: both materialized and inlined alternatives are added to Memo for CBO.")
Expand Down Expand Up @@ -2863,7 +2865,7 @@ public void checkSplitQueueCapacity(String value) throws Exception {
flag = VarAttrDef.GLOBAL)
public String autoAnalyzeEndTime = "23:59:59";

@VarAttrDef.VarAttr(name = IGNORE_RUNTIME_FILTER_IDS,
@VarAttrDef.VarAttr(name = IGNORE_RUNTIME_FILTER_IDS, needForward = true,
description = "the runtime filter id in IGNORE_RUNTIME_FILTER_IDS list will not be generated")

public String ignoreRuntimeFilterIds = "";
Expand Down Expand Up @@ -2988,7 +2990,7 @@ public void checkSplitQueueCapacity(String value) throws Exception {
description = "When processing both \\n and \\r\\n as CSV line separators, should \\r be retained?")
public boolean keepCarriageReturn = false;

@VarAttrDef.VarAttr(name = EXCHANGE_MULTI_BLOCKS_BYTE_SIZE,
@VarAttrDef.VarAttr(name = EXCHANGE_MULTI_BLOCKS_BYTE_SIZE, needForward = true,
description = "Enable exchange to send multiple blocks in one RPC. Default is 256KB. A negative"
+ " value disables multi-block exchange.")
public int exchangeMultiBlocksByteSize = 256 * 1024;
Expand Down Expand Up @@ -3085,7 +3087,8 @@ public void setSkewRewriteAggBucketNum(int num) {
checker = "checkMultiDistinctStrategy")
public int multiDistinctStrategy = 0;

@VarAttrDef.VarAttr(name = AGG_PHASE, description = "Controls the execution phase strategy for aggregate queries. "
@VarAttrDef.VarAttr(name = AGG_PHASE,
needForward = true, description = "Controls the execution phase strategy for aggregate queries. "
+ "The default value is 0,"
+ "which means the system automatically selects the optimal execution phase. Setting this value"
+ "between 1 and 4 forces the use of phases 1 to 4 for aggregate calculations.",
Expand Down Expand Up @@ -3339,7 +3342,7 @@ public void setDetailShapePlanNodes(String detailShapePlanNodes) {
needForward = true, fuzzy = true)
public boolean enableReserveMemory = true;

@VarAttrDef.VarAttr(name = SPILL_MIN_REVOCABLE_MEM, fuzzy = true)
@VarAttrDef.VarAttr(name = SPILL_MIN_REVOCABLE_MEM, needForward = true, fuzzy = true)
public long spillMinRevocableMem = 4 * 1024 * 1024;

@VarAttrDef.VarAttr(name = SPILL_BUFFER_SIZE_BYTES, fuzzy = true, needForward = true,
Expand All @@ -3348,10 +3351,10 @@ public void setDetailShapePlanNodes(String detailShapePlanNodes) {
+ "Default is 8MB.")
public long spillBufferSizeBytes = 8L * 1024L * 1024L;

@VarAttrDef.VarAttr(name = SPILL_AGGREGATION_PARTITION_COUNT, fuzzy = true)
@VarAttrDef.VarAttr(name = SPILL_AGGREGATION_PARTITION_COUNT, needForward = true, fuzzy = true)
public int spillAggregationPartitionCount = 4;

@VarAttrDef.VarAttr(name = LOW_MEMORY_MODE_BUFFER_LIMIT, fuzzy = false)
@VarAttrDef.VarAttr(name = LOW_MEMORY_MODE_BUFFER_LIMIT, needForward = true, fuzzy = false)
public long lowMemoryModeBufferLimit = 33554432;

// The memory limit of streaming agg when spilling is enabled. It is applied on top of the
Expand All @@ -3361,7 +3364,7 @@ public void setDetailShapePlanNodes(String detailShapePlanNodes) {
@VarAttrDef.VarAttr(name = SPILL_STREAMING_AGG_MEM_LIMIT, needForward = true, fuzzy = false)
public long spillStreamingAggMemLimit = 268435456; //256MB

@VarAttrDef.VarAttr(name = SPILL_HASH_JOIN_PARTITION_COUNT, fuzzy = true)
@VarAttrDef.VarAttr(name = SPILL_HASH_JOIN_PARTITION_COUNT, needForward = true, fuzzy = true)
public int spillHashJoinPartitionCount = 4;

@VarAttrDef.VarAttr(name = SPILL_REPARTITION_MAX_DEPTH, fuzzy = true, needForward = true,
Expand Down Expand Up @@ -3522,7 +3525,8 @@ public void setDetailShapePlanNodes(String detailShapePlanNodes) {
description = "Whether to prefer UDF over builtin functions")
public boolean preferUdfOverBuiltin = false;

@VarAttrDef.VarAttr(name = SKEW_REWRITE_JOIN_SALT_EXPLODE_FACTOR, description = "ExplodeFactor: The expansion "
@VarAttrDef.VarAttr(name = SKEW_REWRITE_JOIN_SALT_EXPLODE_FACTOR,
needForward = true, description = "ExplodeFactor: The expansion "
+ "factor for join skew optimization. "
+ "For specified skewed values, it generates random values between 0 and ExplodeFactor-1 "
+ "on the skewed side, while replicating the expanded side into ExplodeFactor copies,"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -493,4 +493,52 @@ public void testHyperscanFallbackPropagatesToBackends() throws Exception {

Assertions.assertFalse(variable.toThrift().isEnableHyperscanFallback());
}

@Test
public void testForwardPlanAndExecutionKnobs() {
// A statement a non-master FE forwards (INSERT INTO ... SELECT, CTAS, ...) is
// planned by the master in a fresh ConnectContext that is seeded from the
// master's globals plus what getForwardVariables() sends. Every knob that
// changes the plan shape or the executor's behaviour must travel, otherwise a
// session-level SET is silently lost on the follower path and the master may
// run a different plan than the same statement run on the master directly.
String[] knobs = {
SessionVariable.AGG_PHASE, SessionVariable.BROADCAST_RIGHT_TABLE_SCALE_FACTOR,
SessionVariable.CTE_INLINE_MODE,
SessionVariable.DISABLE_COLOCATE_PLAN, SessionVariable.DISABLE_JOIN_REORDER,
SessionVariable.DISABLE_STREAMING_PREAGGREGATIONS, SessionVariable.DPHYPER_LIMIT,
SessionVariable.ENABLE_BROADCAST_JOIN_FORCE_PASSTHROUGH,
SessionVariable.ENABLE_BUCKET_SHUFFLE_JOIN, SessionVariable.ENABLE_COST_BASED_JOIN_REORDER,
SessionVariable.ENABLE_CTE_MATERIALIZE, SessionVariable.ENABLE_DECOUPLED_RUNTIME_FILTER,
SessionVariable.ENABLE_DISTINCT_STREAMING_AGGREGATION,
SessionVariable.ENABLE_DPHYP_OPTIMIZER, SessionVariable.ENABLE_LOCAL_EXCHANGE,
SessionVariable.ENABLE_LOCAL_EXCHANGE_BEFORE_AGG, SessionVariable.ENABLE_PARALLEL_OUTFILE,
SessionVariable.ENABLE_PARTITION_TOPN, SessionVariable.ENABLE_PUSH_DOWN_NO_GROUP_AGG,
SessionVariable.ENABLE_SHARED_EXCHANGE_SINK_BUFFER, SessionVariable.ENABLE_SQL_CACHE,
SessionVariable.EXCHANGE_MULTI_BLOCKS_BYTE_SIZE,
SessionVariable.EXPAND_RUNTIME_FILTER_BY_INNER_JION,
SessionVariable.GLOBAL_PARTITION_TOPN_THRESHOLD, SessionVariable.IGNORE_RUNTIME_FILTER_IDS,
SessionVariable.INLINE_CTE_REFERENCED_THRESHOLD,
SessionVariable.LOCAL_EXCHANGE_FREE_BLOCKS_LIMIT,
SessionVariable.LOW_MEMORY_MODE_BUFFER_LIMIT, SessionVariable.MAX_JOIN_NUMBER_BUSHY_TREE,
SessionVariable.MAX_JOIN_NUMBER_OF_REORDER, SessionVariable.PARALLEL_EXCHANGE_INSTANCE_NUM,
SessionVariable.PARALLEL_PREPARE_THRESHOLD,
SessionVariable.SKEW_REWRITE_JOIN_SALT_EXPLODE_FACTOR,
SessionVariable.SPILL_AGGREGATION_PARTITION_COUNT,
SessionVariable.SPILL_HASH_JOIN_PARTITION_COUNT, SessionVariable.SPILL_MIN_REVOCABLE_MEM,
SessionVariable.TOPN_FILTER_RATIO, SessionVariable.TOPN_OPT_LIMIT_THRESHOLD
};
SessionVariable follower = new SessionVariable();
follower.setDisableJoinReorder(true);
Map<String, String> vars = follower.getForwardVariables();
for (String knob : knobs) {
Assertions.assertTrue(vars.containsKey(knob), knob + " must be forwarded to the master");
}
Assertions.assertEquals("true", vars.get(SessionVariable.DISABLE_JOIN_REORDER));

SessionVariable master = new SessionVariable();
Assertions.assertFalse(master.isDisableJoinReorder());
master.setForwardedSessionVariables(vars);
Assertions.assertTrue(master.isDisableJoinReorder());
}
}
Loading