[ 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)