You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hawq.apache.org by "Lisa Owen (JIRA)" <ji...@apache.org> on 2017/04/18 20:17:41 UTC

[jira] [Created] (HAWQ-1434) pxf jdbc plugin - case problems with mysql on linux

Lisa Owen created HAWQ-1434:
-------------------------------

             Summary: pxf jdbc plugin - case problems with mysql on linux
                 Key: HAWQ-1434
                 URL: https://issues.apache.org/jira/browse/HAWQ-1434
             Project: Apache HAWQ
          Issue Type: Bug
          Components: PXF
            Reporter: Lisa Owen
            Assignee: Ed Espino


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.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)