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

Histogram field in mysql.column_stats is too short, JSON histograms get corrupt

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: N/A
    • Fix Version/s: 10.7.1
    • Component/s: Optimizer
    • Labels:
      None

      Description

      mysql.column_stats.histogram field is a standard BLOB. A few long values will overfill it easily, the JSON will get truncated and become invalid.

      create or replace table t (a varchar(8192));
      insert into t values
        (repeat('A',8192)),
        (repeat('B',8192)),
        (repeat('C',8192)),
        (repeat('D',8192)),
        (repeat('E',8192)),
        (repeat('F',8192)),
        (repeat('G',8192)),
        (repeat('H',8192)),
        ('I');
       
      set histogram_type= JSON_HB;
      analyze table t persistent for all;
      select * from t where a = 'foo';
       
      # Cleanup
      drop table t;
      

      preview-10.7-MDEV-26519-json-histograms da8bb4b4

      MariaDB [test]> select * from t where a = 'foo';
      ERROR 4183 (HY000): Failed to parse histogram: Root JSON element must be a JSON object at offset 0.
      

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                Created:
                Updated:
                Resolved:

                  Git Integration