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

sql_mode=ORACLE: BLOB(65535) should not translate to LONGBLOB

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.3, 10.4, 10.5
    • Fix Version/s: 10.3.18, 10.4.8
    • Component/s: Data types
    • Labels:
      None

      Description

      Oracle database has the following syntax for the BLOB data type:

      { BLOB | BINARY LARGE OBJECT } [ ( length [{K |M |G }] ) ]
      

      The default BLOB length is two gigabytes (2,147,483,647).

      To satisfy the default length of 2Gb, when running with sql_mode=ORACLE, MariaDB translates:

      CREATE TABLE t1 (a BLOB);
      

      to

      CREATE TABLE t1 (a LONGBLOB);
      

      But it also translates:

      CREATE TABLE t1 (a BLOB(65535));
      

      to

      CREATE TABLE t1 (a LONGBLOB);
      

      The latter looks wrong. When explicit length is specified, it should try to preserve the BLOB data type, corresponding to MYSQL_TYPE_BLOB (which uses 2 bytes per length).

      This script demonstrates the problem:

      SET sql_mode=ORACLE;
      CREATE OR REPLACE TABLE t1 (a BLOB(65535));
      SHOW CREATE TABLE t1;
      

      +-------+---------------------------------------------------+
      | Table | Create Table                                      |
      +-------+---------------------------------------------------+
      | t1    | CREATE TABLE "t1" (
        "a" longblob DEFAULT NULL
      ) |
      +-------+---------------------------------------------------+
      

      The expected output in the last script (with sql_mode=ORACLE) should be:

      +-------+---------------------------------------------------+
      | Table | Create Table                                      |
      +-------+---------------------------------------------------+
      | t1    | CREATE TABLE "t1" (
        "a" blob(65535) DEFAULT NULL
      ) |
      +-------+---------------------------------------------------+
      

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: