You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "ramtin (JIRA)" <ji...@apache.org> on 2015/02/09 19:55:35 UTC

[jira] [Created] (MAPREDUCE-6246) DBOutputFormat.java appending extra semicolon to query which is incompatible with DB2

ramtin created MAPREDUCE-6246:
---------------------------------

             Summary: DBOutputFormat.java appending extra semicolon to query which is incompatible with DB2
                 Key: MAPREDUCE-6246
                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-6246
             Project: Hadoop Map/Reduce
          Issue Type: Bug
          Components: mrv1, mrv2
    Affects Versions: 2.4.1
         Environment: OS: RHEL 5.x, RHEL 6.x, SLES 11.x
Platform: xSeries, pSeries
Browser: Firefox, IE
Security Settings: No Security, Flat file, LDAP, PAM
File System: HDFS, GPFS FPO
            Reporter: ramtin
            Assignee: ramtin


In DBOutputFormat class there is constructQuery method that generates "INSERT INTO" statement with semicolon(;) at the end.

Semicolon is ANSI SQL-92 standard character for a statement terminator but this feature is disabled(OFF) as a default settings in IBM DB2.

Although by using -t we can turn it ON for db2. (http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0010410.html?cp=SSEPGG_9.7.0%2F3-6-2-0-2). But there are some products that already built on top of this default setting (OFF) so by turning ON this feature make them error prone.

I changed the current DBOutputFormat class by checking the product name from connection object to see if it is DB2 then generates "INSERT INTO" command without semicolon(;). 

This technique is already used in DBInputFormat class for generating different "SELECT" statements for Oracle and MySQL databases.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)