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

Optimizer trace produces invalid JSON by placing BIT constant into it

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11
    • 10.4, 10.5, 10.6
    • Data types, Optimizer
    • None

    Description

      SET optimizer_trace= 'enabled=on';
       
      CREATE TABLE t (col_bit BIT) ENGINE=MyISAM;
      INSERT INTO t VALUES (1);
       
      SELECT * FROM t t1 WHERE EXISTS ( SELECT * FROM t t2 WHERE t2.col_bit <= t1.col_bit );
       
      select json_valid(trace), json_compact(trace) from information_schema.optimizer_trace;
       
      # Cleanup
      DROP TABLE t;
      

      10.5 b8f4b984

      SELECT * FROM t t1 WHERE EXISTS ( SELECT * FROM t t2 WHERE t2.col_bit <= t1.col_bit );
      col_bit
       
      select json_valid(trace), json_compact(trace) from information_schema.optimizer_trace;
      json_valid(trace)	json_compact(trace)
      0	NULL
      Warnings:
      Warning	4036	Character disallowed in JSON in argument 1 to function 'json_compact' at position 2451
      

      The problematic part of the trace is

                {
                  "condition_on_constant_tables": "<in_optimizer>(1,exists(/* select#2 */ select 1 from t t2 where t2.col_bit <= ^A limit 1))",
                  "evaluated": "false",
                  "cause": "expensive cond"
                },
                {
                  "attaching_conditions_to_tables": {
                    "original_condition": "<in_optimizer>(1,exists(/* select#2 */ select 1 from t t2 where t2.col_bit <= ^A limit 1))",
                    "attached_conditions_computation": [],
                    "attached_conditions_summary": []
                  }
                },
                {
                  "join_optimization": {
                    "select_id": 2,
                    "steps": [
                      {
                        "condition_processing": {
                          "condition": "WHERE",
                          "original_condition": "t2.col_bit <= ^A",
                          "steps": [
                            {
                              "transformation": "equality_propagation",
                              "resulting_condition": "t2.col_bit <= ^A"
                            },
                            {
                              "transformation": "constant_propagation",
                              "resulting_condition": "t2.col_bit <= ^A"
                            },
                            {
                              "transformation": "trivial_condition_removal",
                              "resulting_condition": "t2.col_bit <= ^A"
                            }
      

      where ^A represent the problematic symbols.

       

      Attachments

        Activity

          People

            psergei Sergei Petrunia
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

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