ZEPPELIN-215: Fix a case where the cursor is close after the end of the buffer

This commit is contained in:
tzolov 2015-08-12 15:28:58 +02:00
parent d2393d6ec8
commit 91ce7f432e
2 changed files with 6 additions and 5 deletions

View file

@ -83,7 +83,8 @@ public class SqlCompleter extends StringsCompleter {
if (isBlank(argument)) {
int argumentsCount = argumentList.getArguments().length;
if (argumentsCount <= 0 || sqlDelimiter.isDelimiterChar(buffer, buffer.length() - 1)) {
if (argumentsCount <= 0 || ((buffer.length() + 2) < cursor)
|| sqlDelimiter.isDelimiterChar(buffer, cursor - 2)) {
return -1;
}
argument = argumentList.getArguments()[argumentsCount - 1];

View file

@ -64,8 +64,8 @@ public class SqlCompleterTest extends BasicJDBCTestCaseAdapter {
@Test
public void testEdges() {
String buffer = " ORDER ";
tester.buffer(buffer).from(0).to(7).expect(newHashSet("ORDER ")).test();
tester.buffer(buffer).from(8).to(15).expect(EMPTY).test();
tester.buffer(buffer).from(0).to(8).expect(newHashSet("ORDER ")).test();
tester.buffer(buffer).from(9).to(15).expect(EMPTY).test();
}
@Test
@ -97,8 +97,8 @@ public class SqlCompleterTest extends BasicJDBCTestCaseAdapter {
public void testDotDelimiter() {
String buffer = " order.select ";
tester.buffer(buffer).from(4).to(7).expect(newHashSet("order ")).test();
tester.buffer(buffer).from(8).to(14).expect(newHashSet("select ")).test();
tester.buffer(buffer).from(15).to(17).expect(EMPTY).test();
tester.buffer(buffer).from(8).to(15).expect(newHashSet("select ")).test();
tester.buffer(buffer).from(16).to(17).expect(EMPTY).test();
}
@Test