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

Implement EXTRA2_FIELD_DATA_TYPE_INFO in FRM

Details

    Description

      This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
      Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

      In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:

      • The MYSQL_TYPE_XXX replacement type code
      • Decimals
      • Length
      • Collation ID
      • Flags

      For example, INET6 will later write this information in the standard segment:

      • Type code = MYSQL_TYPE_STRING
      • Field length = 16
      • Collation ID = 63 (my_charset_bin)

      and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

      Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
      If a table does not have any columns with extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

      Let's use this format for every field:

      1. fieldnr, in net_write_length() format
      2. data type info length, in net_write_length() format
      3. data type info string, according to 2

      We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:

      • to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
      • to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings

      This will guarantee that the full cycle is tested:

      • writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
      • parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()

      Attachments

        Issue Links

          Activity

            bar Alexander Barkov created issue -
            bar Alexander Barkov made changes -
            Field Original Value New Value
            bar Alexander Barkov made changes -
            bar Alexander Barkov made changes -
            Description This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segments: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)
            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)
            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            bar Alexander Barkov made changes -
            Description This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)
            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)

            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            bar Alexander Barkov made changes -
            Description This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)

            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)

            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any columns with extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            bar Alexander Barkov made changes -
            Description This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)

            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any columns with extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings
            so the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            This task will implement a new frm segment EXTRA2_FIELD_DATA_TYPE_INFO.
            Pluggable data types will write their exact data type information in this segment: the data type name and all attributes.

            In the standard data type sergment, pluggable data types will still write basic things (like normal fields do) such as:
            - The MYSQL_TYPE_XXX replacement type code
            - Decimals
            - Length
            - Collation ID
            - Flags


            For example, INET6 will later write this information in the standard segment:
            - Type code = MYSQL_TYPE_STRING
            - Field length = 16
            - Collation ID = 63 (my_charset_bin)

            and additionally write "inet6" into the new segment EXTRA2_FIELD_DATA_TYPE_INFO.

            Only extended data types will write to EXTRA2_FIELD_DATA_TYPE_INFO.
            If a table does not have any columns with extended types, EXTRA2_FIELD_DATA_TYPE_INFO won't be written.

            Let's use this format for every field:

            1. fieldnr, in net_write_length() format
            2. data type info length, in net_write_length() format
            3. data type info string, according to 2

            We don't have extended data types yet, so this task will make sure the new functionality works using some DBUG_EXECUTE_IFs:
            - to force some built-in data types write EXTRA2_FIELD_DATA_TYPE_INFO
            - to print information about EXTRA2_FIELD_DATA_TYPE_INFO as warnings

            This will guarantee that the full cycle is tested:
            - writing EXTRA2_FIELD_DATA_TYPE_INFO in build_frm_image()
            - parsing EXTRA2_FIELD_DATA_TYPE_INFO in TABLE_SHARE::init_from_binary_frm_image()
            bar Alexander Barkov made changes -
            issue.field.resolutiondate 2019-07-11 19:18:50.0 2019-07-11 19:18:50.073
            bar Alexander Barkov made changes -
            Fix Version/s 10.5.0 [ 23709 ]
            Fix Version/s 10.5 [ 23123 ]
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 98172 ] MariaDB v4 [ 134041 ]

            People

              bar Alexander Barkov
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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