Skip to content

Commit

Permalink
[KYUUBI apache#6526] Kyuubi BeeLine wrongly process JDBC URL that con…
Browse files Browse the repository at this point in the history
…tains `--`

# 🔍 Description
## Issue References 🔗

This pull request fixes apache#6522

## Describe Your Solution 🔧

Remove comments in dispatch commands only execute command

## Types of changes 🔖

- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Test Plan 🧪

#### Behavior Without This Pull Request ⚰️

#### Behavior With This Pull Request 🎉

#### Related Unit Tests

---

# Checklist 📝

- [ ] This patch was not authored or co-authored using [Generative Tooling](https://www.apache.org/legal/generative-tooling.html)

**Be nice. Be informative.**

Closes apache#6526 from zcx513566/issues_6522.

Closes apache#6526

3dfd943 [axiangzheng] [Bug] Use kyuubi beeline connect kyuubi server error if url contains '--' string
6677497 [axiangzheng] [Bug] Use kyuubi beeline connect kyuubi server error if url contains '--' string

Authored-by: axiangzheng <axiangzheng@tencent.com>
Signed-off-by: Cheng Pan <chengpan@apache.org>
  • Loading branch information
axiangzheng authored and pan3793 committed Jul 8, 2024
1 parent 80f7496 commit e26b57a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ protected void processOption(String arg, ListIterator iter) throws ParseExceptio
if (!commands.isEmpty()) {
for (String command : commands) {
debug(loc("executing-command", command));
if (!dispatch(command)) {
if (!removeCommentsDispatch(command)) {
code++;
}
}
Expand Down Expand Up @@ -282,9 +282,8 @@ int runInit() {
return executionResult;
}

// see HIVE-15820: comment at the head of beeline -e
@Override
boolean dispatch(String line) {
// see HIVE-15820: comment at the head of beeline -e only dispatch commands
boolean removeCommentsDispatch(String line) {
return super.dispatch(isPythonMode() ? line : HiveStringUtils.removeComments(line));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,14 @@ public void testKyuubiBeeLinePythonMode() {

@Test
public void testKyuubiBeelineComment() {
String[] url = new String[] {""};
KyuubiBeeLine interceptedKyuubiBeeLine =
new KyuubiBeeLine() {
@Override
boolean dispatch(String line) {
if (line != null && line.startsWith("!connect")) {
LOG.info("Return true for command: {} to pretend connection is established.", line);
url[0] = line;
return true;
}
return super.dispatch(line);
Expand All @@ -122,19 +124,27 @@ public boolean sql(String line, boolean entireLineAsCommand) {
interceptedKyuubiBeeLine.initArgs(
new String[] {"-u", "dummy_url", "-e", "--comment show database;"});
assertEquals(0, cmd[0].length());
assertEquals("!connect dummy_url '' '' ", url[0]);

// Beeline#exit must be false to execute sql
interceptedKyuubiBeeLine.setExit(false);
interceptedKyuubiBeeLine.initArgs(
new String[] {"-u", "dummy_url", "-e", "--comment\n show database;"});
assertEquals("show database;", cmd[0]);
assertEquals("!connect dummy_url '' '' ", url[0]);

interceptedKyuubiBeeLine.setExit(false);
interceptedKyuubiBeeLine.initArgs(
new String[] {
"-u", "dummy_url", "-e", "--comment line 1 \n --comment line 2 \n show database;"
});
assertEquals("show database;", cmd[0]);

interceptedKyuubiBeeLine.setExit(false);
interceptedKyuubiBeeLine.initArgs(
new String[] {"-u", "dummy--url", "-e", "--comment\n show database;"});
assertEquals("show database;", cmd[0]);
assertEquals("!connect dummy--url '' '' ", url[0]);
}

static class BufferPrintStream extends PrintStream {
Expand Down

0 comments on commit e26b57a

Please sign in to comment.