You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sqoop.apache.org by "Szabolcs Vasas (JIRA)" <ji...@apache.org> on 2016/10/06 14:45:20 UTC

[jira] [Assigned] (SQOOP-3021) ClassWriter fails if a column name contains a backslash character

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

Szabolcs Vasas reassigned SQOOP-3021:
-------------------------------------

    Assignee: Szabolcs Vasas  (was: Jarek Jarcec Cecho)

> ClassWriter fails if a column name contains a backslash character
> -----------------------------------------------------------------
>
>                 Key: SQOOP-3021
>                 URL: https://issues.apache.org/jira/browse/SQOOP-3021
>             Project: Sqoop
>          Issue Type: Bug
>    Affects Versions: 1.4.6
>            Reporter: Szabolcs Vasas
>            Assignee: Szabolcs Vasas
>             Fix For: 1.4.7
>
>
> I've seen a user who created table with column names containing double quotes and while code generation, we quite spectacularly failed:
> {code}
> 16/03/02 12:14:13 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/lib/hadoop-mapreduce
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:325: error: ')' expected
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                             ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:325: error: not a statement
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                   ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:325: error: ';' expected
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                     ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:325: error: not a statement
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                            ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:325: error: ';' expected
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                                    ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:332: error: ')' expected
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                             ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:332: error: not a statement
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                   ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:332: error: ';' expected
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                     ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:332: error: not a statement
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                            ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:332: error: ';' expected
>     __sqoop$field_map.put(""tellmewhy"", this._tellmewhy_);
>                                                    ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:340: error: ')' expected
>     else    if (""tellmewhy"".equals(__fieldName)) {
>                   ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:340: error: ';' expected
>     else    if (""tellmewhy"".equals(__fieldName)) {
>                         ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:340: error: ';' expected
>     else    if (""tellmewhy"".equals(__fieldName)) {
>                                               ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:343: error: 'else' without 'if'
>     else    if ("'single'".equals(__fieldName)) {
>     ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:355: error: ')' expected
>     else    if (""tellmewhy"".equals(__fieldName)) {
>                   ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:355: error: ';' expected
>     else    if (""tellmewhy"".equals(__fieldName)) {
>                         ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:355: error: ';' expected
>     else    if (""tellmewhy"".equals(__fieldName)) {
>                                               ^
> /tmp/sqoop-root/compile/60f084d5441147b848b007d2a18b504d/bofa.java:359: error: 'else' without 'if'
>     else    if ("'single'".equals(__fieldName)) {
>     ^
> 18 errors
> 16/03/02 12:14:14 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Error returned by javac
>   at org.apache.sqoop.orm.CompilationManager.compile(CompilationManager.java:217)
>   at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:108)
>   at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:488)
>   at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:615)
>   at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
>   at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
>   at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
>   at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
>   at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
> {code}
> I've looked into it and the problem is that we've started preserving raw column names inside the generated class, but we did not escape properly the case when the column name contain double quotes.



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