SET optimizer_switch = REPLACE(...) causes ER_WRONG_VALUE_FOR_VAR

Bug #912552 reported by Elena Stepanova on 2012-01-05
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' );

Elena Stepanova (elenst) wrote :

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

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) on 2012-01-12
Changed in maria:
assignee: serg (serg) → Sergei (sergii)
Changed in maria:
status: New → Fix Committed
importance: Undecided → High
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  Edit
Everyone can see this information.

Other bug subscribers