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

Reuse new I_S table definition helper classes for InnoDB

    Details

      Description

      The patch for MDEV-19772 earlier introduced a number of helper classes to define INFORMATION_SCHEMA tables, and changed definitions in /sql and /plugins.
      This task is to make INFORMATION_SCHEMA definitions in /storage/innobase use these new classes.

      So for example this table definition:

      static ST_FIELD_INFO    innodb_lock_waits_fields_info[] =
      {
      #define IDX_REQUESTING_TRX_ID   0
              {STRUCT_FLD(field_name,         "requesting_trx_id"),
               STRUCT_FLD(field_length,       TRX_ID_MAX_LEN + 1),
               STRUCT_FLD(field_type,         MYSQL_TYPE_STRING),
               STRUCT_FLD(value,              0),
               STRUCT_FLD(field_flags,        0),
               STRUCT_FLD(old_name,           ""),
               STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
       
      #define IDX_REQUESTED_LOCK_ID   1
              {STRUCT_FLD(field_name,         "requested_lock_id"),
               STRUCT_FLD(field_length,       TRX_I_S_LOCK_ID_MAX_LEN + 1),
               STRUCT_FLD(field_type,         MYSQL_TYPE_STRING),
               STRUCT_FLD(value,              0),
               STRUCT_FLD(field_flags,        0),
               STRUCT_FLD(old_name,           ""),
               STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
       
      #define IDX_BLOCKING_TRX_ID     2
              {STRUCT_FLD(field_name,         "blocking_trx_id"),
               STRUCT_FLD(field_length,       TRX_ID_MAX_LEN + 1),
               STRUCT_FLD(field_type,         MYSQL_TYPE_STRING),
               STRUCT_FLD(value,              0),
               STRUCT_FLD(field_flags,        0),
               STRUCT_FLD(old_name,           ""),
               STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
       
      #define IDX_BLOCKING_LOCK_ID    3
              {STRUCT_FLD(field_name,         "blocking_lock_id"),
               STRUCT_FLD(field_length,       TRX_I_S_LOCK_ID_MAX_LEN + 1),
               STRUCT_FLD(field_type,         MYSQL_TYPE_STRING),
               STRUCT_FLD(value,              0),
               STRUCT_FLD(field_flags,        0),
               STRUCT_FLD(old_name,           ""),
               STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
       
              END_OF_ST_FIELD_INFO
      };
      

      will turn into:

      namespace Show {
      /* Fields of the dynamic table INFORMATION_SCHEMA.innodb_lock_waits */
      static ST_FIELD_INFO    innodb_lock_waits_fields_info[] =
      {
      #define IDX_REQUESTING_TRX_ID   0
        Column("requesting_trx_id", Varchar(TRX_ID_MAX_LEN + 1),          NOT_NULL),
       
      #define IDX_REQUESTED_LOCK_ID   1
        Column("requested_lock_id", Varchar(TRX_I_S_LOCK_ID_MAX_LEN + 1), NOT_NULL),
       
      #define IDX_BLOCKING_TRX_ID     2
        Column("blocking_trx_id",   Varchar(TRX_ID_MAX_LEN + 1),          NOT_NULL),
       
      #define IDX_BLOCKING_LOCK_ID    3
        Column("blocking_lock_id",  Varchar(TRX_I_S_LOCK_ID_MAX_LEN + 1), NOT_NULL),
        CEnd()
      };
      } // namespace Show
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                bar Alexander Barkov
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: