Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-15820

comment at the head of beeline -e

    XMLWordPrintableJSON

Details

    Description

      $ 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

      Attachments

        1. HIVE-15820.patch
          2 kB
          muxin

        Issue Links

          Activity

            People

              robbiezhang Robbie Zhang
              muxin muxin
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 10m
                  1h 10m