Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-2398

LP:912552 - SET optimizer_switch = REPLACE(...) causes ER_WRONG_VALUE_FOR_VAR

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • None
    • None
    • None

    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;

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

      SET optimizer_switch = @saved_switch;

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

      SET optimizer_switch = @saved_switch;

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

      SET optimizer_switch = @saved_switch;

      1. This doesn't

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

      Attachments

        Activity

          People

            serg Sergei Golubchik
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.