WL#3952: Add @@optimizer_switch variable
Affects: Server-6.0
—
Status: Complete
Add @@optimizer_switch variable that will allow to turn off individual optimizations.
1. Rationale
============
We need the ability to turn off individual optimizations. This is necessary
for easier testing and meaningful comparative benchmarks.
2. Solution description
=======================
We'll introduce a new session/global variable, named
@@optimizer_switch
The value of the variable is a comma-separated list of optimizations that
are turned off. The underlying structure is a set (bitmap). Elements of the
list will be named after this pattern:
no_{optimization-name}
In scope of this WL entry we will implement switch-off functionality for two
optimizations: semi-join (WL#2980) and materialization (WL#1110).
3. System variable checklist answers
====================================
- Purpose
A set of disabled optimizations.
- Name
- System variable name: @@optimizer_switch
- Name for the script "configure": none (not settable)
- Name for the configuration file: none (not settable)
- Name for the command-line option: none (not settable)
- Allowed values
- Type: Comma-separated list of mnemonic names.
Currently only two names are possible:
"no_materialization"
"no_semijoin"
- Range of proper values: {not a range}
- Default value: {empty string}
- Scope: both session and global
- Read-only or dynamic in each scope: Dynamic
- Dependencies: none
- Relation to stored programs: it is a "dynamic variable"
- Relation to replication: No auto-replication.
Follow the approach used in @@sql_mode.
Copyright (c) 2000, 2025, Oracle Corporation and/or its affiliates. All rights reserved.