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

ALTER TABLE looses the connection string

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.0.10
    • Fix Version/s: 10.0.11
    • Component/s: None
    • Labels:

      Description

      After creating a table with a connection string, if ALTER TABLE is used, the connection string is lost. For instance:

      CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC tabname='lite' CONNECTION='Driver=SQLite3 ODBC Driver;Database=test.sqlite3;NoWCHAR=yes' CHARSET=utf8 DATA_CHARSET=utf8;
      
      SHOW CREATE TABLE t1;
      CREATE TABLE `t1` (
        `ID` int(9) DEFAULT NULL,
        `nom` varchar(12) NOT NULL,
        `nais` datetime DEFAULT NULL,
        `rem` varchar(32) DEFAULT NULL
      ) ENGINE=CONNECT DEFAULT CHARSET=utf8 CONNECTION='Driver=SQLite3 ODBC Driver;Database=test.sqlite3;NoWCHAR=yes' `TABLE_TYPE`='ODBC' `TABNAME`='lite' `DATA_CHARSET`='utf8'
      

      Now if I do:

      ALTER TABLE t1 MODIFY COLUMN nom VARCHAR(13) NOT NULL;
      SHOW CREATE TABLE t1;
      CREATE TABLE `t1` (
        `ID` int(9) DEFAULT NULL,
        `nom` varchar(13) NOT NULL,
        `nais` datetime DEFAULT NULL,
        `rem` varchar(32) DEFAULT NULL
      ) ENGINE=CONNECT DEFAULT CHARSET=utf8 `TABLE_TYPE`='ODBC' `TABNAME`='lite' `DATA_CHARSET`='utf8';
      

      This has not been reported before CONNECT was implemented because the only other engine using connection string was FEDERATED(X) that does not support ALTER TABLE.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            bertrandop Olivier Bertrand added a comment - - edited

            Note that is is possible to keep, modify or add the connection string in ALTER TABLE by specifying it explicitly:

            ALTER TABLE t1 MODIFY COLUMN nom VARCHAR(13) NOT NULL,
            CONNECTION='Driver=SQLite3 ODBC Driver;Database=test.sqlite3;NoWCHAR=yes';
            

            This works and the connection string is kept. However, this is just a temporary bypass.

            Show
            bertrandop Olivier Bertrand added a comment - - edited Note that is is possible to keep, modify or add the connection string in ALTER TABLE by specifying it explicitly: ALTER TABLE t1 MODIFY COLUMN nom VARCHAR (13) NOT NULL, CONNECTION='Driver=SQLite3 ODBC Driver;Database=test.sqlite3;NoWCHAR=yes'; This works and the connection string is kept. However, this is just a temporary bypass.

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                bertrandop Olivier Bertrand
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 1 hour, 30 minutes
                  1h 30m