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

ANALYZE TABLE prints EITS statistics collected while it has not done it

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.3(EOL), 10.4(EOL), 10.5, 10.6
    • 10.5, 10.6
    • Optimizer

    Description

      ANALYZE TABLE code ignores any (or some?) errors it gets from updating stats tables.

      As a result, One may get Engine-independent statistics collected message, while statistics has not been updated.

      Example: a read-only setting prevents a non-root user from updating the stats, while the message is printed that stats were updated: (a question whether one should be allowed to update EITS stats when read_only=1 is a separate question):

      create user test@localhost;
      grant CREATE, DROP, INSERT, SELECT on *.* to test@localhost;
       
      create table t1 (a int);
      insert into t1 values (1),(2),(3);
      set global read_only=1;
      # This will produce nothing
      select * from mysql.column_stats;
      select * from mysql.table_stats;
       
      connect (con1,localhost,test,,test);
      connection con1;
      # This will show "Engine-independent statistics collected"
      analyze table t1 persistent for all;
       
      # But we can see that EITS stats were NOT collected:
      select * from mysql.column_stats;
      select * from mysql.table_stats;
       
      disconnect con1;
      connection default;
      set global read_only=0;
      drop table t1;
      

      prints on current 10.6:

      create user test@localhost;
      grant CREATE, DROP, INSERT, SELECT on *.* to test@localhost;
      create table t1 (a int);
      insert into t1 values (1),(2),(3);
      set global read_only=1;
      select * from mysql.column_stats;
      db_name table_name      column_name     min_value       max_value       nulls_ratio     avg_length      avg_frequency   hist_size       hist_type       histogram
      select * from mysql.table_stats;
      db_name table_name      cardinality
      connect  con1,localhost,test,,test;
      connection con1;
      analyze table t1 persistent for all;
      Table   Op      Msg_type        Msg_text
      test.t1 analyze status  Engine-independent statistics collected
      test.t1 analyze status  OK
      select * from mysql.column_stats;
      db_name table_name      column_name     min_value       max_value       nulls_ratio     avg_length      avg_frequency   hist_size       hist_type       histogram
      select * from mysql.table_stats;
      db_name table_name      cardinality
      disconnect con1;
      connection default;
      set global read_only=0;
      drop table t1;
      

      Attachments

        Activity

          People

            psergei Sergei Petrunia
            psergei Sergei Petrunia
            Votes:
            1 Vote for this issue
            Watchers:
            3 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.