Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.4.6
-
None
-
None
Description
I've seen a user who created table with column names containing double quotes and while code generation, we quite spectacularly failed:
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)
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.
Attachments
Attachments
Issue Links
- relates to
-
SQOOP-3021 ClassWriter fails if a column name contains a backslash character
- Closed
- links to