static bool pfs_show_status()

in storage/perfschema/ha_perfschema.cc [155:1359]


static bool pfs_show_status(handlerton *, THD *thd, stat_print_fn *print,
                            enum ha_stat_type stat) {
  DBUG_TRACE;

  /*
    Note about naming conventions:
    - Internal buffers exposed as a table in the performance schema are named
    after the table, as in 'events_waits_current'
    - Internal buffers not exposed by a table are named with parenthesis,
    as in '(pfs_mutex_class)'.
  */
  if (stat != HA_ENGINE_STATUS) {
    return false;
  }

  size_t total_memory = 0;

  for (int i = 0; /* empty */; i++) {
    const char *name;
    size_t size;

    switch (i) {
      case 0:
        name = "events_waits_current.size";
        size = sizeof(PFS_events_waits);
        break;
      case 1:
        name = "events_waits_current.count";
        size = WAIT_STACK_SIZE * global_thread_container.get_row_count();
        break;
      case 2:
        name = "events_waits_history.size";
        size = sizeof(PFS_events_waits);
        break;
      case 3:
        name = "events_waits_history.count";
        size = events_waits_history_per_thread *
               global_thread_container.get_row_count();
        break;
      case 4:
        name = "events_waits_history.memory";
        size = events_waits_history_per_thread *
               global_thread_container.get_row_count() *
               sizeof(PFS_events_waits);
        total_memory += size;
        break;
      case 5:
        name = "events_waits_history_long.size";
        size = sizeof(PFS_events_waits);
        break;
      case 6:
        name = "events_waits_history_long.count";
        size = events_waits_history_long_size;
        break;
      case 7:
        name = "events_waits_history_long.memory";
        size = events_waits_history_long_size * sizeof(PFS_events_waits);
        total_memory += size;
        break;
      case 8:
        name = "(pfs_mutex_class).size";
        size = sizeof(PFS_mutex_class);
        break;
      case 9:
        name = "(pfs_mutex_class).count";
        size = mutex_class_max;
        break;
      case 10:
        name = "(pfs_mutex_class).memory";
        size = mutex_class_max * sizeof(PFS_mutex_class);
        total_memory += size;
        break;
      case 11:
        name = "(pfs_rwlock_class).size";
        size = sizeof(PFS_rwlock_class);
        break;
      case 12:
        name = "(pfs_rwlock_class).count";
        size = rwlock_class_max;
        break;
      case 13:
        name = "(pfs_rwlock_class).memory";
        size = rwlock_class_max * sizeof(PFS_rwlock_class);
        total_memory += size;
        break;
      case 14:
        name = "(pfs_cond_class).size";
        size = sizeof(PFS_cond_class);
        break;
      case 15:
        name = "(pfs_cond_class).count";
        size = cond_class_max;
        break;
      case 16:
        name = "(pfs_cond_class).memory";
        size = cond_class_max * sizeof(PFS_cond_class);
        total_memory += size;
        break;
      case 17:
        name = "(pfs_thread_class).size";
        size = sizeof(PFS_thread_class);
        break;
      case 18:
        name = "(pfs_thread_class).count";
        size = thread_class_max;
        break;
      case 19:
        name = "(pfs_thread_class).memory";
        size = thread_class_max * sizeof(PFS_thread_class);
        total_memory += size;
        break;
      case 20:
        name = "(pfs_file_class).size";
        size = sizeof(PFS_file_class);
        break;
      case 21:
        name = "(pfs_file_class).count";
        size = file_class_max;
        break;
      case 22:
        name = "(pfs_file_class).memory";
        size = file_class_max * sizeof(PFS_file_class);
        total_memory += size;
        break;
      case 23:
        name = "mutex_instances.size";
        size = global_mutex_container.get_row_size();
        break;
      case 24:
        name = "mutex_instances.count";
        size = global_mutex_container.get_row_count();
        break;
      case 25:
        name = "mutex_instances.memory";
        size = global_mutex_container.get_memory();
        total_memory += size;
        break;
      case 26:
        name = "rwlock_instances.size";
        size = global_rwlock_container.get_row_size();
        break;
      case 27:
        name = "rwlock_instances.count";
        size = global_rwlock_container.get_row_count();
        break;
      case 28:
        name = "rwlock_instances.memory";
        size = global_rwlock_container.get_memory();
        total_memory += size;
        break;
      case 29:
        name = "cond_instances.size";
        size = global_cond_container.get_row_size();
        break;
      case 30:
        name = "cond_instances.count";
        size = global_cond_container.get_row_count();
        break;
      case 31:
        name = "cond_instances.memory";
        size = global_cond_container.get_memory();
        total_memory += size;
        break;
      case 32:
        name = "threads.size";
        size = global_thread_container.get_row_size();
        break;
      case 33:
        name = "threads.count";
        size = global_thread_container.get_row_count();
        break;
      case 34:
        name = "threads.memory";
        size = global_thread_container.get_memory();
        total_memory += size;
        break;
      case 35:
        name = "file_instances.size";
        size = global_file_container.get_row_size();
        break;
      case 36:
        name = "file_instances.count";
        size = global_file_container.get_row_count();
        break;
      case 37:
        name = "file_instances.memory";
        size = global_file_container.get_memory();
        total_memory += size;
        break;
      case 38:
        name = "(pfs_file_handle).size";
        size = sizeof(PFS_file *);
        break;
      case 39:
        name = "(pfs_file_handle).count";
        size = file_handle_max;
        break;
      case 40:
        name = "(pfs_file_handle).memory";
        size = file_handle_max * sizeof(PFS_file *);
        total_memory += size;
        break;
      case 41:
        name = "events_waits_summary_by_thread_by_event_name.size";
        size = sizeof(PFS_single_stat);
        break;
      case 42:
        name = "events_waits_summary_by_thread_by_event_name.count";
        size = global_thread_container.get_row_count() * wait_class_max;
        break;
      case 43:
        name = "events_waits_summary_by_thread_by_event_name.memory";
        size = global_thread_container.get_row_count() * wait_class_max *
               sizeof(PFS_single_stat);
        total_memory += size;
        break;
      case 44:
        name = "(pfs_table_share).size";
        size = global_table_share_container.get_row_size();
        break;
      case 45:
        name = "(pfs_table_share).count";
        size = global_table_share_container.get_row_count();
        break;
      case 46:
        name = "(pfs_table_share).memory";
        size = global_table_share_container.get_memory();
        total_memory += size;
        break;
      case 47:
        name = "(pfs_table).size";
        size = global_table_container.get_row_size();
        break;
      case 48:
        name = "(pfs_table).count";
        size = global_table_container.get_row_count();
        break;
      case 49:
        name = "(pfs_table).memory";
        size = global_table_container.get_memory();
        total_memory += size;
        break;
      case 50:
        name = "setup_actors.size";
        size = global_setup_actor_container.get_row_size();
        break;
      case 51:
        name = "setup_actors.count";
        size = global_setup_actor_container.get_row_count();
        break;
      case 52:
        name = "setup_actors.memory";
        size = global_setup_actor_container.get_memory();
        total_memory += size;
        break;
      case 53:
        name = "setup_objects.size";
        size = global_setup_object_container.get_row_size();
        break;
      case 54:
        name = "setup_objects.count";
        size = global_setup_object_container.get_row_count();
        break;
      case 55:
        name = "setup_objects.memory";
        size = global_setup_object_container.get_memory();
        total_memory += size;
        break;
      case 56:
        name = "(pfs_account).size";
        size = global_account_container.get_row_size();
        break;
      case 57:
        name = "(pfs_account).count";
        size = global_account_container.get_row_count();
        break;
      case 58:
        name = "(pfs_account).memory";
        size = global_account_container.get_memory();
        total_memory += size;
        break;
      case 59:
        name = "events_waits_summary_by_account_by_event_name.size";
        size = sizeof(PFS_single_stat);
        break;
      case 60:
        name = "events_waits_summary_by_account_by_event_name.count";
        size = global_account_container.get_row_count() * wait_class_max;
        break;
      case 61:
        name = "events_waits_summary_by_account_by_event_name.memory";
        size = global_account_container.get_row_count() * wait_class_max *
               sizeof(PFS_single_stat);
        total_memory += size;
        break;
      case 62:
        name = "events_waits_summary_by_user_by_event_name.size";
        size = sizeof(PFS_single_stat);
        break;
      case 63:
        name = "events_waits_summary_by_user_by_event_name.count";
        size = global_user_container.get_row_count() * wait_class_max;
        break;
      case 64:
        name = "events_waits_summary_by_user_by_event_name.memory";
        size = global_user_container.get_row_count() * wait_class_max *
               sizeof(PFS_single_stat);
        total_memory += size;
        break;
      case 65:
        name = "events_waits_summary_by_host_by_event_name.size";
        size = sizeof(PFS_single_stat);
        break;
      case 66:
        name = "events_waits_summary_by_host_by_event_name.count";
        size = global_host_container.get_row_count() * wait_class_max;
        break;
      case 67:
        name = "events_waits_summary_by_host_by_event_name.memory";
        size = global_host_container.get_row_count() * wait_class_max *
               sizeof(PFS_single_stat);
        total_memory += size;
        break;
      case 68:
        name = "(pfs_user).size";
        size = global_user_container.get_row_size();
        break;
      case 69:
        name = "(pfs_user).count";
        size = global_user_container.get_row_count();
        break;
      case 70:
        name = "(pfs_user).memory";
        size = global_user_container.get_memory();
        total_memory += size;
        break;
      case 71:
        name = "(pfs_host).size";
        size = global_host_container.get_row_size();
        break;
      case 72:
        name = "(pfs_host).count";
        size = global_host_container.get_row_count();
        break;
      case 73:
        name = "(pfs_host).memory";
        size = global_host_container.get_memory();
        total_memory += size;
        break;
      case 74:
        name = "(pfs_stage_class).size";
        size = sizeof(PFS_stage_class);
        break;
      case 75:
        name = "(pfs_stage_class).count";
        size = stage_class_max;
        break;
      case 76:
        name = "(pfs_stage_class).memory";
        size = stage_class_max * sizeof(PFS_stage_class);
        total_memory += size;
        break;
      case 77:
        name = "events_stages_history.size";
        size = sizeof(PFS_events_stages);
        break;
      case 78:
        name = "events_stages_history.count";
        size = events_stages_history_per_thread *
               global_thread_container.get_row_count();
        break;
      case 79:
        name = "events_stages_history.memory";
        size = events_stages_history_per_thread *
               global_thread_container.get_row_count() *
               sizeof(PFS_events_stages);
        total_memory += size;
        break;
      case 80:
        name = "events_stages_history_long.size";
        size = sizeof(PFS_events_stages);
        break;
      case 81:
        name = "events_stages_history_long.count";
        size = events_stages_history_long_size;
        break;
      case 82:
        name = "events_stages_history_long.memory";
        size = events_stages_history_long_size * sizeof(PFS_events_stages);
        total_memory += size;
        break;
      case 83:
        name = "events_stages_summary_by_thread_by_event_name.size";
        size = sizeof(PFS_stage_stat);
        break;
      case 84:
        name = "events_stages_summary_by_thread_by_event_name.count";
        size = global_thread_container.get_row_count() * stage_class_max;
        break;
      case 85:
        name = "events_stages_summary_by_thread_by_event_name.memory";
        size = global_thread_container.get_row_count() * stage_class_max *
               sizeof(PFS_stage_stat);
        total_memory += size;
        break;
      case 86:
        name = "events_stages_summary_global_by_event_name.size";
        size = sizeof(PFS_stage_stat);
        break;
      case 87:
        name = "events_stages_summary_global_by_event_name.count";
        size = stage_class_max;
        break;
      case 88:
        name = "events_stages_summary_global_by_event_name.memory";
        size = stage_class_max * sizeof(PFS_stage_stat);
        total_memory += size;
        break;
      case 89:
        name = "events_stages_summary_by_account_by_event_name.size";
        size = sizeof(PFS_stage_stat);
        break;
      case 90:
        name = "events_stages_summary_by_account_by_event_name.count";
        size = global_account_container.get_row_count() * stage_class_max;
        break;
      case 91:
        name = "events_stages_summary_by_account_by_event_name.memory";
        size = global_account_container.get_row_count() * stage_class_max *
               sizeof(PFS_stage_stat);
        total_memory += size;
        break;
      case 92:
        name = "events_stages_summary_by_user_by_event_name.size";
        size = sizeof(PFS_stage_stat);
        break;
      case 93:
        name = "events_stages_summary_by_user_by_event_name.count";
        size = global_user_container.get_row_count() * stage_class_max;
        break;
      case 94:
        name = "events_stages_summary_by_user_by_event_name.memory";
        size = global_user_container.get_row_count() * stage_class_max *
               sizeof(PFS_stage_stat);
        total_memory += size;
        break;
      case 95:
        name = "events_stages_summary_by_host_by_event_name.size";
        size = sizeof(PFS_stage_stat);
        break;
      case 96:
        name = "events_stages_summary_by_host_by_event_name.count";
        size = global_host_container.get_row_count() * stage_class_max;
        break;
      case 97:
        name = "events_stages_summary_by_host_by_event_name.memory";
        size = global_host_container.get_row_count() * stage_class_max *
               sizeof(PFS_stage_stat);
        total_memory += size;
        break;
      case 98:
        name = "(pfs_statement_class).size";
        size = sizeof(PFS_statement_class);
        break;
      case 99:
        name = "(pfs_statement_class).count";
        size = statement_class_max;
        break;
      case 100:
        name = "(pfs_statement_class).memory";
        size = statement_class_max * sizeof(PFS_statement_class);
        total_memory += size;
        break;
      case 101:
        name = "events_statements_history.size";
        size = sizeof(PFS_events_statements);
        break;
      case 102:
        name = "events_statements_history.count";
        size = events_statements_history_per_thread *
               global_thread_container.get_row_count();
        break;
      case 103:
        name = "events_statements_history.memory";
        size = events_statements_history_per_thread *
               global_thread_container.get_row_count() *
               sizeof(PFS_events_statements);
        total_memory += size;
        break;
      case 104:
        name = "events_statements_history_long.size";
        size = sizeof(PFS_events_statements);
        break;
      case 105:
        name = "events_statements_history_long.count";
        size = events_statements_history_long_size;
        break;
      case 106:
        name = "events_statements_history_long.memory";
        size = events_statements_history_long_size *
               (sizeof(PFS_events_statements));
        total_memory += size;
        break;
      case 107:
        name = "events_statements_summary_by_thread_by_event_name.size";
        size = sizeof(PFS_statement_stat);
        break;
      case 108:
        name = "events_statements_summary_by_thread_by_event_name.count";
        size = global_thread_container.get_row_count() * statement_class_max;
        break;
      case 109:
        name = "events_statements_summary_by_thread_by_event_name.memory";
        size = global_thread_container.get_row_count() * statement_class_max *
               sizeof(PFS_statement_stat);
        total_memory += size;
        break;
      case 110:
        name = "events_statements_summary_global_by_event_name.size";
        size = sizeof(PFS_statement_stat);
        break;
      case 111:
        name = "events_statements_summary_global_by_event_name.count";
        size = statement_class_max;
        break;
      case 112:
        name = "events_statements_summary_global_by_event_name.memory";
        size = statement_class_max * sizeof(PFS_statement_stat);
        total_memory += size;
        break;
      case 113:
        name = "events_statements_summary_by_account_by_event_name.size";
        size = sizeof(PFS_statement_stat);
        break;
      case 114:
        name = "events_statements_summary_by_account_by_event_name.count";
        size = global_account_container.get_row_count() * statement_class_max;
        break;
      case 115:
        name = "events_statements_summary_by_account_by_event_name.memory";
        size = global_account_container.get_row_count() * statement_class_max *
               sizeof(PFS_statement_stat);
        total_memory += size;
        break;
      case 116:
        name = "events_statements_summary_by_user_by_event_name.size";
        size = sizeof(PFS_statement_stat);
        break;
      case 117:
        name = "events_statements_summary_by_user_by_event_name.count";
        size = global_user_container.get_row_count() * statement_class_max;
        break;
      case 118:
        name = "events_statements_summary_by_user_by_event_name.memory";
        size = global_user_container.get_row_count() * statement_class_max *
               sizeof(PFS_statement_stat);
        total_memory += size;
        break;
      case 119:
        name = "events_statements_summary_by_host_by_event_name.size";
        size = sizeof(PFS_statement_stat);
        break;
      case 120:
        name = "events_statements_summary_by_host_by_event_name.count";
        size = global_host_container.get_row_count() * statement_class_max;
        break;
      case 121:
        name = "events_statements_summary_by_host_by_event_name.memory";
        size = global_host_container.get_row_count() * statement_class_max *
               sizeof(PFS_statement_stat);
        total_memory += size;
        break;
      case 122:
        name = "events_statements_current.size";
        size = sizeof(PFS_events_statements);
        break;
      case 123:
        name = "events_statements_current.count";
        size = global_thread_container.get_row_count() * statement_stack_max;
        break;
      case 124:
        name = "events_statements_current.memory";
        size = global_thread_container.get_row_count() * statement_stack_max *
               sizeof(PFS_events_statements);
        total_memory += size;
        break;
      case 125:
        name = "(pfs_socket_class).size";
        size = sizeof(PFS_socket_class);
        break;
      case 126:
        name = "(pfs_socket_class).count";
        size = socket_class_max;
        break;
      case 127:
        name = "(pfs_socket_class).memory";
        size = socket_class_max * sizeof(PFS_socket_class);
        total_memory += size;
        break;
      case 128:
        name = "socket_instances.size";
        size = global_socket_container.get_row_size();
        break;
      case 129:
        name = "socket_instances.count";
        size = global_socket_container.get_row_count();
        break;
      case 130:
        name = "socket_instances.memory";
        size = global_socket_container.get_memory();
        total_memory += size;
        break;
      case 131:
        name = "events_statements_summary_by_digest.size";
        size = sizeof(PFS_statements_digest_stat);
        break;
      case 132:
        name = "events_statements_summary_by_digest.count";
        size = digest_max;
        break;
      case 133:
        name = "events_statements_summary_by_digest.memory";
        size = digest_max * (sizeof(PFS_statements_digest_stat));
        total_memory += size;
        break;
      case 134:
        name = "events_statements_summary_by_program.size";
        size = global_program_container.get_row_size();
        break;
      case 135:
        name = "events_statements_summary_by_program.count";
        size = global_program_container.get_row_count();
        break;
      case 136:
        name = "events_statements_summary_by_program.memory";
        size = global_program_container.get_memory();
        total_memory += size;
        break;
      case 137:
        name = "session_connect_attrs.size";
        size = global_thread_container.get_row_count();
        break;
      case 138:
        name = "session_connect_attrs.count";
        size = session_connect_attrs_size_per_thread;
        break;
      case 139:
        name = "session_connect_attrs.memory";
        size = global_thread_container.get_row_count() *
               session_connect_attrs_size_per_thread;
        total_memory += size;
        break;
      case 140:
        name = "prepared_statements_instances.size";
        size = global_prepared_stmt_container.get_row_size();
        break;
      case 141:
        name = "prepared_statements_instances.count";
        size = global_prepared_stmt_container.get_row_count();
        break;
      case 142:
        name = "prepared_statements_instances.memory";
        size = global_prepared_stmt_container.get_memory();
        total_memory += size;
        break;
      case 143:
        name = "(account_hash).count";
        size = account_hash.count;
        break;
      case 144:
        name = "(account_hash).size";
        size = account_hash.size;
        break;
      case 145:
        name = "(digest_hash).count";
        size = digest_hash.count;
        break;
      case 146:
        name = "(digest_hash).size";
        size = digest_hash.size;
        break;
      case 147:
        name = "(filename_hash).count";
        size = filename_hash.count;
        break;
      case 148:
        name = "(filename_hash).size";
        size = filename_hash.size;
        break;
      case 149:
        name = "(host_hash).count";
        size = host_hash.count;
        break;
      case 150:
        name = "(host_hash).size";
        size = host_hash.size;
        break;
      case 151:
        name = "(setup_actor_hash).count";
        size = setup_actor_hash.count;
        break;
      case 152:
        name = "(setup_actor_hash).size";
        size = setup_actor_hash.size;
        break;
      case 153:
        name = "(setup_object_hash).count";
        size = setup_object_hash.count;
        break;
      case 154:
        name = "(setup_object_hash).size";
        size = setup_object_hash.size;
        break;
      case 155:
        name = "(table_share_hash).count";
        size = table_share_hash.count;
        break;
      case 156:
        name = "(table_share_hash).size";
        size = table_share_hash.size;
        break;
      case 157:
        name = "(user_hash).count";
        size = user_hash.count;
        break;
      case 158:
        name = "(user_hash).size";
        size = user_hash.size;
        break;
      case 159:
        name = "(program_hash).count";
        size = program_hash.count;
        break;
      case 160:
        name = "(program_hash).size";
        size = program_hash.size;
        break;
      case 161:
        /*
          This is not a performance_schema buffer,
          the data is maintained in the server,
          in hostname_cache.
          Print the size only, there are:
          - no host_cache.count
          - no host_cache.memory
        */
        name = "host_cache.size";
        size = sizeof(Host_entry);
        break;
      case 162:
        name = "(pfs_memory_class).row_size";
        size = sizeof(PFS_memory_class);
        break;
      case 163:
        name = "(pfs_memory_class).row_count";
        size = memory_class_max;
        break;
      case 164:
        name = "(pfs_memory_class).memory";
        size = memory_class_max * sizeof(PFS_memory_class);
        total_memory += size;
        break;
      case 165:
        name = "memory_summary_by_thread_by_event_name.row_size";
        size = sizeof(PFS_memory_safe_stat);
        break;
      case 166:
        name = "memory_summary_by_thread_by_event_name.row_count";
        size = global_thread_container.get_row_count() * memory_class_max;
        break;
      case 167:
        name = "memory_summary_by_thread_by_event_name.memory";
        size = global_thread_container.get_row_count() * memory_class_max *
               sizeof(PFS_memory_safe_stat);
        total_memory += size;
        break;
      case 168:
        name = "memory_summary_global_by_event_name.row_size";
        size = sizeof(PFS_memory_shared_stat);
        break;
      case 169:
        name = "memory_summary_global_by_event_name.row_count";
        size = memory_class_max;
        break;
      case 170:
        name = "memory_summary_global_by_event_name.memory";
        size = memory_class_max * sizeof(PFS_memory_shared_stat);
        total_memory += size;
        break;
      case 171:
        name = "memory_summary_by_account_by_event_name.row_size";
        size = sizeof(PFS_memory_shared_stat);
        break;
      case 172:
        name = "memory_summary_by_account_by_event_name.row_count";
        size = global_account_container.get_row_count() * memory_class_max;
        break;
      case 173:
        name = "memory_summary_by_account_by_event_name.memory";
        size = global_account_container.get_row_count() * memory_class_max *
               sizeof(PFS_memory_shared_stat);
        total_memory += size;
        break;
      case 174:
        name = "memory_summary_by_user_by_event_name.row_size";
        size = sizeof(PFS_memory_shared_stat);
        break;
      case 175:
        name = "memory_summary_by_user_by_event_name.row_count";
        size = global_user_container.get_row_count() * memory_class_max;
        break;
      case 176:
        name = "memory_summary_by_user_by_event_name.memory";
        size = global_user_container.get_row_count() * memory_class_max *
               sizeof(PFS_memory_shared_stat);
        total_memory += size;
        break;
      case 177:
        name = "memory_summary_by_host_by_event_name.row_size";
        size = sizeof(PFS_memory_shared_stat);
        break;
      case 178:
        name = "memory_summary_by_host_by_event_name.row_count";
        size = global_host_container.get_row_count() * memory_class_max;
        break;
      case 179:
        name = "memory_summary_by_host_by_event_name.memory";
        size = global_host_container.get_row_count() * memory_class_max *
               sizeof(PFS_memory_shared_stat);
        total_memory += size;
        break;
      case 180:
        name = "metadata_locks.row_size";
        size = global_mdl_container.get_row_size();
        break;
      case 181:
        name = "metadata_locks.row_count";
        size = global_mdl_container.get_row_count();
        break;
      case 182:
        name = "metadata_locks.memory";
        size = global_mdl_container.get_memory();
        total_memory += size;
        break;
      case 183:
        name = "events_transactions_history.size";
        size = sizeof(PFS_events_transactions);
        break;
      case 184:
        name = "events_transactions_history.count";
        size = events_transactions_history_per_thread *
               global_thread_container.get_row_count();
        break;
      case 185:
        name = "events_transactions_history.memory";
        size = events_transactions_history_per_thread *
               global_thread_container.get_row_count() *
               sizeof(PFS_events_transactions);
        total_memory += size;
        break;
      case 186:
        name = "events_transactions_history_long.size";
        size = sizeof(PFS_events_transactions);
        break;
      case 187:
        name = "events_transactions_history_long.count";
        size = events_transactions_history_long_size;
        break;
      case 188:
        name = "events_transactions_history_long.memory";
        size = events_transactions_history_long_size *
               sizeof(PFS_events_transactions);
        total_memory += size;
        break;
      case 189:
        name = "events_transactions_summary_by_thread_by_event_name.size";
        size = sizeof(PFS_transaction_stat);
        break;
      case 190:
        name = "events_transactions_summary_by_thread_by_event_name.count";
        size = global_thread_container.get_row_count() * transaction_class_max;
        break;
      case 191:
        name = "events_transactions_summary_by_thread_by_event_name.memory";
        size = global_thread_container.get_row_count() * transaction_class_max *
               sizeof(PFS_transaction_stat);
        total_memory += size;
        break;
      case 192:
        name = "events_transactions_summary_by_account_by_event_name.size";
        size = sizeof(PFS_transaction_stat);
        break;
      case 193:
        name = "events_transactions_summary_by_account_by_event_name.count";
        size = global_account_container.get_row_count() * transaction_class_max;
        break;
      case 194:
        name = "events_transactions_summary_by_account_by_event_name.memory";
        size = global_account_container.get_row_count() *
               transaction_class_max * sizeof(PFS_transaction_stat);
        total_memory += size;
        break;
      case 195:
        name = "events_transactions_summary_by_user_by_event_name.size";
        size = sizeof(PFS_transaction_stat);
        break;
      case 196:
        name = "events_transactions_summary_by_user_by_event_name.count";
        size = global_user_container.get_row_count() * transaction_class_max;
        break;
      case 197:
        name = "events_transactions_summary_by_user_by_event_name.memory";
        size = global_user_container.get_row_count() * transaction_class_max *
               sizeof(PFS_transaction_stat);
        total_memory += size;
        break;
      case 198:
        name = "events_transactions_summary_by_host_by_event_name.size";
        size = sizeof(PFS_transaction_stat);
        break;
      case 199:
        name = "events_transactions_summary_by_host_by_event_name.count";
        size = global_host_container.get_row_count() * transaction_class_max;
        break;
      case 200:
        name = "events_transactions_summary_by_host_by_event_name.memory";
        size = global_host_container.get_row_count() * transaction_class_max *
               sizeof(PFS_transaction_stat);
        total_memory += size;
        break;
      case 201:
        name = "table_lock_waits_summary_by_table.size";
        size = global_table_share_lock_container.get_row_size();
        break;
      case 202:
        name = "table_lock_waits_summary_by_table.count";
        size = global_table_share_lock_container.get_row_count();
        break;
      case 203:
        name = "table_lock_waits_summary_by_table.memory";
        size = global_table_share_lock_container.get_memory();
        total_memory += size;
        break;
      case 204:
        name = "table_io_waits_summary_by_index_usage.size";
        size = global_table_share_index_container.get_row_size();
        break;
      case 205:
        name = "table_io_waits_summary_by_index_usage.count";
        size = global_table_share_index_container.get_row_count();
        break;
      case 206:
        name = "table_io_waits_summary_by_index_usage.memory";
        size = global_table_share_index_container.get_memory();
        total_memory += size;
        break;
      case 207:
        name = "(history_long_statements_digest_token_array).count";
        size = events_statements_history_long_size;
        break;
      case 208:
        name = "(history_long_statements_digest_token_array).size";
        size = pfs_max_digest_length;
        break;
      case 209:
        name = "(history_long_statements_digest_token_array).memory";
        size = events_statements_history_long_size * pfs_max_digest_length;
        total_memory += size;
        break;
      case 210:
        name = "(history_statements_digest_token_array).count";
        size = global_thread_container.get_row_count() *
               events_statements_history_per_thread;
        break;
      case 211:
        name = "(history_statements_digest_token_array).size";
        size = pfs_max_digest_length;
        break;
      case 212:
        name = "(history_statements_digest_token_array).memory";
        size = global_thread_container.get_row_count() *
               events_statements_history_per_thread * pfs_max_digest_length;
        total_memory += size;
        break;
      case 213:
        name = "(current_statements_digest_token_array).count";
        size = global_thread_container.get_row_count() * statement_stack_max;
        break;
      case 214:
        name = "(current_statements_digest_token_array).size";
        size = pfs_max_digest_length;
        break;
      case 215:
        name = "(current_statements_digest_token_array).memory";
        size = global_thread_container.get_row_count() * statement_stack_max *
               pfs_max_digest_length;
        total_memory += size;
        break;
      case 216:
        name = "(history_long_statements_text_array).count";
        size = events_statements_history_long_size;
        break;
      case 217:
        name = "(history_long_statements_text_array).size";
        size = pfs_max_sqltext;
        break;
      case 218:
        name = "(history_long_statements_text_array).memory";
        size = events_statements_history_long_size * pfs_max_sqltext;
        total_memory += size;
        break;
      case 219:
        name = "(history_statements_text_array).count";
        size = global_thread_container.get_row_count() *
               events_statements_history_per_thread;
        break;
      case 220:
        name = "(history_statements_text_array).size";
        size = pfs_max_sqltext;
        break;
      case 221:
        name = "(history_statements_text_array).memory";
        size = global_thread_container.get_row_count() *
               events_statements_history_per_thread * pfs_max_sqltext;
        total_memory += size;
        break;
      case 222:
        name = "(current_statements_text_array).count";
        size = global_thread_container.get_row_count() * statement_stack_max;
        break;
      case 223:
        name = "(current_statements_text_array).size";
        size = pfs_max_sqltext;
        break;
      case 224:
        name = "(current_statements_text_array).memory";
        size = global_thread_container.get_row_count() * statement_stack_max *
               pfs_max_sqltext;
        total_memory += size;
        break;
      case 225:
        name = "(statements_digest_token_array).count";
        size = digest_max;
        break;
      case 226:
        name = "(statements_digest_token_array).size";
        size = pfs_max_digest_length;
        break;
      case 227:
        name = "(statements_digest_token_array).memory";
        size = digest_max * pfs_max_digest_length;
        total_memory += size;
        break;
      case 228:
        name = "events_errors_summary_by_thread_by_error.size";
        size = size_of_session_error_stat_buffer();
        break;
      case 229:
        name = "events_errors_summary_by_thread_by_error.count";
        size = global_thread_container.get_row_count() * error_class_max;
        break;
      case 230:
        name = "events_errors_summary_by_thread_by_error.memory";
        size = global_thread_container.get_row_count() * error_class_max *
               size_of_session_error_stat_buffer();
        total_memory += size;
        break;
      case 231:
        name = "events_errors_summary_by_account_by_error.size";
        size = size_of_session_error_stat_buffer();
        break;
      case 232:
        name = "events_errors_summary_by_account_by_error.count";
        size = global_account_container.get_row_count() * error_class_max;
        break;
      case 233:
        name = "events_errors_summary_by_account_by_error.memory";
        size = global_account_container.get_row_count() * error_class_max *
               size_of_session_error_stat_buffer();
        total_memory += size;
        break;
      case 234:
        name = "events_errors_summary_by_user_by_error.size";
        size = size_of_session_error_stat_buffer();
        break;
      case 235:
        name = "events_errors_summary_by_user_by_error.count";
        size = global_user_container.get_row_count() * error_class_max;
        break;
      case 236:
        name = "events_errors_summary_by_user_by_error.memory";
        size = global_user_container.get_row_count() * error_class_max *
               size_of_session_error_stat_buffer();
        total_memory += size;
        break;
      case 237:
        name = "events_errors_summary_by_host_by_error.size";
        size = size_of_session_error_stat_buffer();
        break;
      case 238:
        name = "events_errors_summary_by_host_by_error.count";
        size = global_host_container.get_row_count() * error_class_max;
        break;
      case 239:
        name = "events_errors_summary_by_host_by_error.memory";
        size = global_host_container.get_row_count() * error_class_max *
               size_of_session_error_stat_buffer();
        total_memory += size;
        break;
      case 240:
        name = "events_errors_summary_global_by_error.size";
        size = size_of_global_error_stat_buffer();
        break;
      case 241:
        name = "events_errors_summary_global_by_error.count";
        size = error_class_max;
        break;
      case 242:
        name = "events_errors_summary_global_by_error.memory";
        size = size_of_global_error_stat_buffer() * error_class_max;
        total_memory += size;
        break;
      case 243:
        name = "(pfs_buffer_scalable_container).count";
        size = builtin_memory_scalable_buffer.m_stat.m_alloc_count -
               builtin_memory_scalable_buffer.m_stat.m_free_count;
        break;
      case 244:
        name = "(pfs_buffer_scalable_container).memory";
        size = builtin_memory_scalable_buffer.m_stat.m_alloc_size -
               builtin_memory_scalable_buffer.m_stat.m_free_size;
        total_memory += size;
        break;
      case 245:
        name = "(max_global_server_errors).count";
        size = max_global_server_errors;
        break;
      case 246:
        name = "(max_session_server_errors).count";
        size = max_session_server_errors;
        break;
      case 247:
        name = "(pfs_meter_class).size";
        size = sizeof(PFS_meter_class);
        break;
      case 248:
        name = "(pfs_meter_class).count";
        size = meter_class_max;
        break;
      case 249:
        name = "(pfs_meter_class).memory";
        size = meter_class_max * sizeof(PFS_meter_class);
        total_memory += size;
        break;
      case 250:
        name = "(pfs_metric_class).size";
        size = sizeof(PFS_metric_class);
        break;
      case 251:
        name = "(pfs_metric_class).count";
        size = metric_class_max;
        break;
      case 252:
        name = "(pfs_metric_class).memory";
        size = metric_class_max * sizeof(PFS_metric_class);
        total_memory += size;
        break;
      case 253:
        name = "(pfs_logger_class).size";
        size = sizeof(PFS_logger_class);
        break;
      case 254:
        name = "(pfs_logger_class).count";
        size = logger_class_max;
        break;
      case 255:
        name = "(pfs_logger_class).memory";
        size = logger_class_max * sizeof(PFS_logger_class);
        total_memory += size;
        break;

      /*
        This case must be last,
        for aggregation in total_memory.
      */
      case 256:
        name = "performance_schema.memory";
        size = total_memory;
        break;
      default:
        goto end;
        break;
    }

    char buf[1024];
    const uint buflen = (uint)(longlong10_to_str(size, buf, 10) - buf);
    if (print(thd, PERFORMANCE_SCHEMA_str.str, PERFORMANCE_SCHEMA_str.length,
              name, strlen(name), buf, buflen)) {
      return true;
    }
  }

end:
  return false;
}