SET optimizer_switch = REPLACE(...) causes ER_WRONG_VALUE_FOR_VAR

Bug #912552 reported by Elena Stepanova
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MariaDB
Fix Released
High
Sergei Golubchik

Bug Description

The following statement

SET optimizer_switch = REPLACE( @@optimizer_switch, '=off', '=on' )

as well as many other similar constructions, fails with ER_WRONG_VALUE_FOR_VAR: 1231: Variable 'optimizer_switch' can't be set to the value of 'table_elimination=on'.

 bzr version-info
revision-id: <email address hidden>
date: 2012-01-05 00:02:57 +0100
build-date: 2012-01-06 03:01:39 +0400
revno: 3203
branch-nick: maria-5.5

In 5.2 and 5.3 it works all right.

It does not seem to be about the value, since this way it works:

SET @a = REPLACE( @@optimizer_switch, '=off', '=on' );
SET optimizer_switch = @a;

But not this way

SET @b = @@optimizer_switch;
SET optimizer_switch = REPLACE( @b, '=off', '=on' );

It also does not seem to be about the result of REPLACE being too long, since this one works:

SET optimizer_switch = REPLACE( @@optimizer_switch, '=on', '=off' )

REPLACE statements are a convenient way to set optimizer_switch to a needed value in tests, and keep it version-independent; otherwise, it's not an important problem in itself, but it might signify an underlying issue, either with the REPLACE function, or with the optimizer_switch, so I find it worrisome.

Test case:

SET @saved_switch = @@optimizer_switch;

 # This works
SET optimizer_switch = REPLACE( @@optimizer_switch, '=on', '=off' );

SET optimizer_switch = @saved_switch;

 # This doesn't
SET optimizer_switch = REPLACE( @@optimizer_switch, '=off', '=on' );

SET optimizer_switch = @saved_switch;

 # This works
SET @a = REPLACE( @@optimizer_switch, '=off', '=on' );
SET optimizer_switch = @a;

SET optimizer_switch = @saved_switch;

 # This doesn't

SET @b = @@optimizer_switch;
SET optimizer_switch = REPLACE( @b, '=off', '=on' );

Revision history for this message
Elena Stepanova (elenst) wrote :

This bug has also been filed in JIRA as MDEV-69

Revision history for this message
Elena Stepanova (elenst) wrote :

Assigning to Serg for proper distribution, as it's not clear who it belongs to, and as the JIRA one is currently assigned to Serg too.

Changed in maria:
assignee: nobody → serg (serg)
Elena Stepanova (elenst)
Changed in maria:
assignee: serg (serg) → Sergei (sergii)
Changed in maria:
status: New → Fix Committed
importance: Undecided → High
Revision history for this message
Elena Stepanova (elenst) wrote :

Fix released with 5.5.20.

Changed in maria:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.