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

Fix error message as promised in upstream Bug #69336

    Details

      Description

      In MariaDB 10.2+ we still get weird and useless error messages like this:

      ...
          -> , `h_29` tinyint unsigned null
          -> , `h_3` tinyint unsigned null
          -> , `h_30` tinyint unsigned null
          -> , `h_31` tinyint unsigned null
          -> , `h_4` tinyint unsigned null
          -> , `h_5` tinyint unsigned null
          -> , `h_6` tinyint unsigned null
          -> , `h_7` tinyint unsigned null
          -> , `h_8` tinyint unsigned null
          -> , `h_9` tinyint unsigned null
          -> , primary key (element_id, daytime)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=dynamic;
      ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
      MariaDB [test]> select version();
      +----------------+
      | version()      |
      +----------------+
      | 10.3.9-MariaDB |
      +----------------+
      1 row in set (0.000 sec)
      

      Test is taken from upstream https://bugs.mysql.com/bug.php?id=77398 (https://bugs.mysql.com/file.php?id=26301&bug_id=77398).

      That " BLOB prefix of 0 bytes" statement is just wrong, and message otherwise does not help to find what column starts to cause the problem.

      There is a statement in https://bugs.mysql.com/bug.php?id=69336 that error message is fixed and made useful since 5.7.5. This does NOT seem to be the case neither in 5.7.22, nor in 8.0.12:

      ...
          -> , `h_6` tinyint unsigned null
          -> , `h_7` tinyint unsigned null
          -> , `h_8` tinyint unsigned null
          -> , `h_9` tinyint unsigned null
      , primary key (element_id, daytime)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=    -> , primary key (element_id, daytime)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=dynamic;
      ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
      mysql> select version();
      +-----------+
      | version() |
      +-----------+
      | 8.0.12    |
      +-----------+
      1 row in set (0,00 sec)
      

      We need this fixed in 10.2+, to help users change their schema to meet expected limitations .

      See MDEV-13111 also on impact of innodb_strict_mode on this.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                kevg Eugene Kosov
                Reporter:
                valerii Valerii Kravchuk
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: