Uploaded image for project: 'Apache HAWQ'
  1. Apache HAWQ
  2. HAWQ-1434

pxf jdbc plugin - case problems with mysql on linux

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.3.0.0-incubating
    • PXF
    • None

    Description

      i was trying out the pxf jdbc plug-in and ran into a problem. mysql on linux is case sensitive, and the jdbc plug-in appears to change the case of dbname.tablename in LOCATION URI to uppercase. if the db/table were created with lowercase names, the query fails.

      to reproduce:

      login to mysql as root user and create 2 databases:

      $ mysql --user=root mysql -p

      create database mtestdb1;
      create database CAPDB1;
      grant all on mtestdb1.* to 'hawquser1'@'localhost' identified by 'hawquser1';
      grant all on CAPDB1.* to 'hawquser1'@'localhost' identified by 'hawquser1';

      log in to mysql as hawquser1 and create some tables:

      mysql -h localhost -u hawquser1 -p

      use mtestdb1;
      create table mysql_table1( id int );
      insert into mysql_table1 values (1);
      insert into mysql_table1 values (2);
      insert into mysql_table1 values (3);
      use CAPDB1;
      create table CAPTABLE( id int );
      insert into CAPTABLE values (1);
      insert into CAPTABLE values (2);
      insert into CAPTABLE values (3);

      create pxf external tables using jdbc plug-in and try to select from them:

      psql -d testdb

      CREATE EXTERNAL TABLE pxf_jdbc_mysql_table1(id int)
      LOCATION ('pxf://c6401.ambari.apache.org:51200/mtestdb1.mysql_table1?PROFILE=JDBC&JDBC_DRIVER=com.mysql.jdbc.Driver&DB_URL=jdbc:mysql://localhost:3306/mtestdb1&USER=hawquser1&PASS=hawquser1')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      select * from pxf_jdbc_mysql_table1;
      ERROR: remote component error (500) from '192.168.64.101:51200': type Exception report message SELECT command denied to user 'hawquser1'@'localhost' for table 'MYSQL_TABLE1' description The server encountered an internal error that prevented it from fulfilling this request. exception java.io.IOException: SELECT command denied to user 'hawquser1'@'localhost' for table 'MYSQL_TABLE1' (libchurl.c:897) (seg5 c6401.ambari.apache.org:40000 pid=635675) (dispatcher.c:1801)
      DETAIL: External table pxf_jdbc_mysql_table1

      CREATE EXTERNAL TABLE pxf_jdbc_mysql_caps(id int)
      LOCATION ('pxf://c6401.ambari.apache.org:51200/CAPDB1.CAPTABLE?PROFILE=JDBC&JDBC_DRIVER=com.mysql.jdbc.Driver&DB_URL=jdbc:mysql://localhost:3306/CAPDB1&USER=hawquser1&PASS=hawquser1')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      select * from pxf_jdbc_mysql_caps;
      id


      1
      2
      3
      (3 rows)

      CREATE EXTERNAL TABLE pxf_jdbc_mysql_caps2(id int)
      LOCATION ('pxf://c6401.ambari.apache.org:51200/capdb1.captable?PROFILE=JDBC&JDBC_DRIVER=com.mysql.jdbc.Driver&DB_URL=jdbc:mysql://localhost:3306/CAPDB1&USER=hawquser1&PASS=hawquser1')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      CREATE EXTERNAL TABLE
      testdb=# select * from pxf_jdbc_mysql_caps2;
      id


      1
      2
      3
      (3 rows)

      in this case, the jdbc plugin changes lowercase capdb1.captable to uppercase, the case the table was originally created in in mysql, and the query works.

      Attachments

        Issue Links

          Activity

            People

              espino Ed Espino
              lisakowen Lisa Owen
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: