[ 
https://issues.apache.org/jira/browse/SQOOP-3061?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15867460#comment-15867460
 ] 

Attila Szabo commented on SQOOP-3061:
-------------------------------------

Hey [~ericlin],

Thanks for your contribution, and let me congratulate for your very first Sqoop 
commit.
We hope you enjoyed working with our community and that we could expect more 
contributions from you in the future!

Thanks,
[~maugli]

> Sqoop --options-file failed with error "Malformed option in options file" 
> even though the query is correct
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: SQOOP-3061
>                 URL: https://issues.apache.org/jira/browse/SQOOP-3061
>             Project: Sqoop
>          Issue Type: Bug
>    Affects Versions: 1.4.6
>            Reporter: Eric Lin
>            Assignee: Eric Lin
>            Priority: Minor
>              Labels: patch
>         Attachments: SQOOP-3061.2.patch, SQOOP-3061.3.patch, 
> SQOOP-3061.4.patch, SQOOP-3061.5.patch, SQOOP-3061.patch
>
>
> if you have the following in the options file:
> --query
> SELECT * FROM test WHERE a = 'b'
> and then run 
> {code}
> sqoop --options-file <file-path>
> {code}
> it will fail with the following error:
> {code}
> 16/11/22 16:08:59 ERROR sqoop.Sqoop: Error while expanding arguments
> java.lang.Exception: Malformed option in options 
> file(/tmp/sqoop_runner_from_stdin_1112_12354__sqoop_options_file): SELECT * 
> FROM test WHERE a = 'b'
> at 
> org.apache.sqoop.util.OptionsFileUtil.removeQuoteCharactersIfNecessary(OptionsFileUtil.java:170)
> at 
> org.apache.sqoop.util.OptionsFileUtil.removeQuotesEncolosingOption(OptionsFileUtil.java:136)
> at 
> org.apache.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:90)
> at 
> com.cloudera.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:33)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:199)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
> at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
> Malformed option in options 
> file(/tmp/sqoop_runner_from_stdin_1112_12354__sqoop_options_file): SELECT * 
> FROM test WHERE a = 'b'
> {code}
> This is caused by function 
> org.apache.sqoop.util.OptionsFileUtil.removeQuoteCharactersIfNecessary only 
> checks for starting and ending quotes and will fail if the query does not 
> start with a quote but ends with a quote, like the example query above.
> {code}
>   private static String removeQuoteCharactersIfNecessary(String fileName,
>       String option, char quote) throws Exception {
>     boolean startingQuote = (option.charAt(0) == quote);
>     boolean endingQuote = (option.charAt(option.length() - 1) == quote);
>     if (startingQuote && endingQuote) {
>       if (option.length() == 1) {
>         throw new Exception("Malformed option in options file("
>             + fileName + "): " + option);
>       }
>       return option.substring(1, option.length() - 1);
>     }
>     if (startingQuote || endingQuote) {
>        throw new Exception("Malformed option in options file("
>            + fileName + "): " + option);
>     }
>     return option;
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to