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:56:34 UTC

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

     [ https://issues.apache.org/jira/browse/MAPREDUCE-6246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

ramtin updated MAPREDUCE-6246:
------------------------------
    Description: 
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.

  was:
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.


> 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
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> 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)