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