hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vihang Karajgaonkar (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (HIVE-15820) comment at the head of beeline -e
Date Wed, 01 Mar 2017 01:55:45 GMT

     [ https://issues.apache.org/jira/browse/HIVE-15820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Vihang Karajgaonkar reassigned HIVE-15820:
------------------------------------------

    Assignee: muxin  (was: Vihang Karajgaonkar)

> comment at the head of beeline -e
> ---------------------------------
>
>                 Key: HIVE-15820
>                 URL: https://issues.apache.org/jira/browse/HIVE-15820
>             Project: Hive
>          Issue Type: Bug
>          Components: Beeline
>    Affects Versions: 1.2.1, 2.1.1
>            Reporter: muxin
>            Assignee: muxin
>              Labels: patch
>         Attachments: HIVE-15820.patch
>
>
> $ beeline -u jdbc:hive2://localhost:10000 -n test -e "
> > --asdfasdfasdfasdf
> > select * from test_table;
> > "
> expected result of the above command should be all rows of test_table(same as run in
beeline interactive mode),but it does not output anything.
> the cause is that -e option will read commands as one string, and in method dispatch(String
line) it calls function isComment(String line) in the first, which using
>  'lineTrimmed.startsWith("#") || lineTrimmed.startsWith("--")' 
> to regard commands as a comment.
> two ways can be considered to fix this problem:
> 1. in method initArgs(String[] args), split command by '\n' into command list before
dispatch when cl.getOptionValues('e') != null
> 2. in method dispatch(String line), remove comments using this:
> static String removeComments(String line) {
>     if (line == null || line.isEmpty()) {
>         return line;
>     }
>     StringBuilder builder = new StringBuilder();
>     int escape = -1;
>     for (int index = 0; index < line.length(); index++) {
>         if (index < line.length() - 1 && line.charAt(index) == line.charAt(index
+ 1)) {
>             if (escape == -1 && line.charAt(index) == '-') {
>                 //find \n as the end of comment
>                 index = line.indexOf('\n',index+1);
>                 //there is no sql after this comment,so just break out
>                 if (-1==index){
>                     break;
>                 }
>             }
>         }
>         char letter = line.charAt(index);
>         if (letter == escape) {
>             escape = -1; // Turn escape off.
>         } else if (escape == -1 && (letter == '\'' || letter == '"')) {
>             escape = letter; // Turn escape on.
>         }
>         builder.append(letter);
>     }
>     return builder.toString();
>   }
> the second way can be a general solution to remove all comments start with '--'  in a
sql



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

Mime
View raw message