sqoop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SQOOP-3061) Sqoop --options-file failed with error "Malformed option in options file" even though the query is correct
Date Wed, 15 Feb 2017 08:35:41 GMT

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

ASF subversion and git services commented on SQOOP-3061:
--------------------------------------------------------

Commit 24d08185c502e416265f1fa78300347ad02a4e1f in sqoop's branch refs/heads/trunk from [~maugli]
[ https://git-wip-us.apache.org/repos/asf?p=sqoop.git;h=24d0818 ]

SQOOP-3061: Improve query validation in connection with --options-file
thus correct options/queries like "--query SELECT * FROM test WHERE a = 'b'"
will not fail with "Malformed option in options file" error message

(Eric Lin via Attila Szabo)


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

Mime
View raw message