Uploaded image for project: 'MariaDB Connector/C'
  1. MariaDB Connector/C
  2. CONC-20

libmysqlclient incompatibility: uses MYSQL_TYPE_NEWDATE, not supported by MySQL Connector/C++

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Not a Bug
    • None
    • None
    • None
    • None
    • Reproduced on MacOS X and Debian GNU/Linux amd64
      Connecting to MySQL server

    Description

      Using bzr/launchpad snapshot revision 40, connecting to MySQL.

      Given the table:

      CREATE TABLE `oldfmpro` (
      ...
      `Filing_Date1` date DEFAULT NULL,
      ...
      `Prio_FF_Date1` date DEFAULT NULL,
      ...
      )

      and the view

      CREATE OR REPLACE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `natpha_ddl` AS
      select ..., if(((`oldfmpro`.`Prio_FF_Date1` + interval 30 month) is not null),(`oldfmpro`.`Prio_FF_Date1` + interval 30 month),(`oldfmpro`.`Filing_Date1` + interval 30 month)) AS `NATPHA` from `oldfmpro` where ((`oldfmpro`.`Filing_Num` is not null) and (`oldfmpro`.`Ctry_Short` = 'WO') and (`oldfmpro`.`IngJur` like '%ajt%') and (`oldfmpro`.`Filing_Date1` >= (curdate() + interval -(30) month))) order by if(((`oldfmpro`.`Prio_FF_Date1` + interval 30 month) is not null),(`oldfmpro`.`Prio_FF_Date1` + interval 30 month),(`oldfmpro`.`Filing_Date1` + interval 30 month));

      When calling mysql_fetch_field on "SELECT * FROM natpha_ddl", for column NATPHA, mariadb client library for C returns:

      {name = 0x285b2b8 "NATPHA", ... type = MYSQL_TYPE_NEWDATE, ...}

      Which breaks MySQL Connector/C++, which does not support this column type; it throws error:
      sql::InvalidArgumentException("allocate_buffer_for_field: invalid rbind data type");

      Background:
      LibreOffice, in its "master" (trunk) development, has swapped out libmysqlclient for the MariaDB client library for C, and for the time being uses it through MySQL Connector/C+. This breaks this scenario. We are using a bzr snapshot because version 1.0.0 has API incompatibilities with libmysqlclient, which are used by MySQL Connector/C+:

      • missing symbols mysql_library_init and mysql_library_end
      • missing parameter "cipher" to mysql_ssl_set

      Full table definition:

      CREATE TABLE `oldfmpro` (
      `Agent` varchar(254) DEFAULT NULL,
      `Ann_Fees1` date DEFAULT NULL,
      `Attention` varchar(254) DEFAULT NULL,
      `IngJur` char(3) DEFAULT NULL,
      `Client` varchar(254) DEFAULT NULL,
      `Client_Copy` varchar(254) DEFAULT NULL,
      `Comments` varchar(254) DEFAULT NULL,
      `Ctry_Short` varchar(254) DEFAULT NULL,
      `Prio_Ctry1` char(2) DEFAULT '',
      `Prio_Ctry2` char(2) DEFAULT '',
      `Prio_Ctry3` char(2) DEFAULT '',
      `Prio_Ctry4` char(2) DEFAULT '',
      `Prio_Ctry5` char(2) DEFAULT '',
      `Prio_Ctry6` char(2) DEFAULT '',
      `Exp_Date1` date DEFAULT NULL,
      `File_Code` varchar(254) DEFAULT NULL,
      `File_Num` varchar(254) DEFAULT NULL,
      `Filing_Num` varchar(254) DEFAULT NULL,
      `Filing_Date1` date DEFAULT NULL,
      `Grant_Num` varchar(254) DEFAULT NULL,
      `Grant_Date1` date DEFAULT NULL,
      `Inventor1` varchar(50) DEFAULT '',
      `Inventor2` varchar(50) DEFAULT '',
      `Inventor3` varchar(50) DEFAULT '',
      `Inventor4` varchar(50) DEFAULT NULL,
      `Inventor5` varchar(50) DEFAULT '',
      `Inventor6` varchar(50) DEFAULT '',
      `Inventor7` varchar(50) DEFAULT '',
      `Inventor8` varchar(50) DEFAULT '',
      `Inventor9` varchar(50) DEFAULT '',
      `Inventor10` varchar(50) DEFAULT '',
      `Keywords` varchar(254) DEFAULT NULL,
      `Our_Ref` varchar(254) DEFAULT NULL,
      `Owner1` varchar(254) NOT NULL DEFAULT '',
      `Owner2` varchar(254) DEFAULT NULL,
      `Owner3` varchar(100) DEFAULT '',
      `Owner4` varchar(100) DEFAULT '',
      `Owner5` varchar(100) DEFAULT '',
      `Owner6` varchar(100) DEFAULT '',
      `Owner7` varchar(100) DEFAULT '',
      `Owner8` varchar(100) DEFAULT '',
      `Owner9` varchar(100) DEFAULT '',
      `Owner10` varchar(100) DEFAULT '',
      `Prio_SN` varchar(254) DEFAULT NULL,
      `Prio_SN2` varchar(30) DEFAULT NULL,
      `Prio_SN3` varchar(30) DEFAULT NULL,
      `Prio_SN4` varchar(30) DEFAULT NULL,
      `Prio_SN5` varchar(30) DEFAULT NULL,
      `Prio_SN6` varchar(30) DEFAULT NULL,
      `Prio_SN7` varchar(30) DEFAULT NULL,
      `Prio_SN8` varchar(30) DEFAULT NULL,
      `Prio_FF_Date1` date DEFAULT NULL,
      `Prio_FF_Date2` date DEFAULT NULL,
      `Prio_FF_Date3` date DEFAULT NULL,
      `Prio_FF_Date4` date DEFAULT NULL,
      `Prio_FF_Date5` date DEFAULT NULL,
      `Prio_FF_Date6` date DEFAULT NULL,
      `Prio_FF_Date7` date DEFAULT NULL,
      `Prio_FF_Date8` date DEFAULT NULL,
      `Pub_Num` varchar(254) DEFAULT NULL,
      `Pub_Date1` date DEFAULT NULL,
      `Related_Files` varchar(254) DEFAULT NULL,
      `Summary` varchar(254) DEFAULT NULL,
      `Y_ref` varchar(254) DEFAULT NULL,
      `State_dep` varchar(254) DEFAULT NULL,
      `State_dep_num` varchar(254) DEFAULT NULL,
      `chg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `fmpro_id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
      `pay_ann_fee` char(1) NOT NULL DEFAULT 'Y',
      `assistant` varchar(7) DEFAULT NULL,
      `Prio_Ctry7` char(2) DEFAULT NULL,
      `Prio_Ctry8` char(2) DEFAULT NULL,
      `abandon` char(1) DEFAULT NULL,
      `chg_by` varchar(50) NOT NULL,
      PRIMARY KEY (`fmpro_id`)
      ) ENGINE=MyISAM AUTO_INCREMENT=4474 DEFAULT CHARSET=latin1

      Full view definition:

      CREATE OR REPLACE ALGORITHM=UNDEFINED DEFINER=`alex`@`%` SQL SECURITY DEFINER VIEW `natpha_ddl` AS select `oldfmpro`.`File_Num` AS `file_num`,`oldfmpro`.`Owner1` AS `Owner1`,`oldfmpro`.`Filing_Num` AS `filing_num`,`oldfmpro`.`Filing_Date1` AS `filing_date1`,`oldfmpro`.`Prio_FF_Date1` AS `Prio_FF_Date1`,if(((`oldfmpro`.`Prio_FF_Date1` + interval 30 month) is not null),(`oldfmpro`.`Prio_FF_Date1` + interval 30 month),(`oldfmpro`.`Filing_Date1` + interval 30 month)) AS `NATPHA` from `oldfmpro` where ((`oldfmpro`.`Filing_Num` is not null) and (`oldfmpro`.`Ctry_Short` = 'WO') and (`oldfmpro`.`IngJur` like '%ajt%') and (`oldfmpro`.`Filing_Date1` >= (curdate() + interval -(30) month))) order by if(((`oldfmpro`.`Prio_FF_Date1` + interval 30 month) is not null),(`oldfmpro`.`Prio_FF_Date1` + interval 30 month),(`oldfmpro`.`Filing_Date1` + interval 30 month));

      Attachments

        Activity

          People

            georg Georg Richter
            lmamane Lionel Elie Mamane
            Votes:
            0 Vote for this issue
            Watchers:
            2 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.