[
https://issues.apache.org/jira/browse/SQOOP-2864?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15180423#comment-15180423
]
ASF subversion and git services commented on SQOOP-2864:
--------------------------------------------------------
Commit 152fe93002253b8b3e433d4193ad1e9d1c1591ba in sqoop's branch
refs/heads/trunk from [~venkatnrangan]
[ https://git-wip-us.apache.org/repos/asf?p=sqoop.git;h=152fe93 ]
SQOOP-2864: ClassWriter chokes on column names containing double quotes
(Jarek Jarcec Cecho via Venkat Ranganathan)
> ClassWriter chokes on column names containing double quotes
> -----------------------------------------------------------
>
> Key: SQOOP-2864
> URL: https://issues.apache.org/jira/browse/SQOOP-2864
> Project: Sqoop
> Issue Type: Bug
> Affects Versions: 1.4.6
> Reporter: Jarek Jarcec Cecho
> Assignee: Jarek Jarcec Cecho
> Fix For: 1.4.7
>
> Attachments: SQOOP-2864.patch
>
>
> 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)