Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion client
Submodule client updated 119 files
Original file line number Diff line number Diff line change
Expand Up @@ -136,13 +136,16 @@ private static List<OffsetString> split(DialectType dialectType, SqlCommentProce
if (bufferStr.trim().length() != 0) {
// if buffer is not empty, there will be some errors in syntax
log.info("sql processor's buffer is not empty, there may be some errors. buffer={}", bufferStr);
int lastSqlOffset;
if (sqls.size() == 0) {
sqls.add(new OffsetString(0, bufferStr));
int index = sql.indexOf(bufferStr.trim(), 0);
lastSqlOffset = index == -1 ? 0 : index;
} else {
sqls.add(new OffsetString(
sqls.get(sqls.size() - 1).getOffset() + sqls.get(sqls.size() - 1).getStr().length(),
bufferStr));
int from = sqls.get(sqls.size() - 1).getOffset() + sqls.get(sqls.size() - 1).getStr().length();
int index = sql.indexOf(bufferStr.trim(), from);
lastSqlOffset = index == -1 ? from : index;
}
sqls.add(new OffsetString(lastSqlOffset, bufferStr));
}
return sqls;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,16 @@ private List<OffsetString> splitByCommentProcessor(String sqlScript) {
List<OffsetString> sqls = processor.split(buffer, sqlScript);
String bufferStr = buffer.toString();
if (bufferStr.trim().length() != 0) {
int lastSqlOffset;
if (sqls.size() == 0) {
sqls.add(new OffsetString(0, bufferStr));
int index = sqlScript.indexOf(bufferStr.trim(), 0);
lastSqlOffset = index == -1 ? 0 : index;
} else {
sqls.add(new OffsetString(
sqls.get(sqls.size() - 1).getOffset() + sqls.get(sqls.size() - 1).getStr().length(),
bufferStr));
int from = sqls.get(sqls.size() - 1).getOffset() + sqls.get(sqls.size() - 1).getStr().length();
int index = sqlScript.indexOf(bufferStr.trim(), from);
lastSqlOffset = index == -1 ? from : index;
}
sqls.add(new OffsetString(lastSqlOffset, bufferStr));
}
return sqls;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,14 @@
*/
package com.oceanbase.odc.service.common;

import java.util.List;

import org.junit.Assert;
import org.junit.Test;

import com.oceanbase.odc.common.util.StringUtils;
import com.oceanbase.odc.core.shared.constant.DialectType;
import com.oceanbase.odc.core.sql.split.OffsetString;
import com.oceanbase.odc.core.sql.split.SqlCommentProcessor;
import com.oceanbase.odc.service.common.util.SqlUtils;

Expand Down Expand Up @@ -65,4 +68,35 @@ public void replaceTemporaryTableName_WithOracleUserPrefix() {

}

@Test
public void lastSqlHasNoDelimiter_MySQL_OffsetIsCorrect() {
String sql = "\n\n\nselect 1 from dual";
List<OffsetString> offsetStrings = SqlUtils.splitWithOffset(DialectType.MYSQL, sql, ";");
Assert.assertEquals(1, offsetStrings.size());
Assert.assertEquals(3, offsetStrings.get(0).getOffset());
}

@Test
public void lastSqlHasNoDelimiterMultiSqls_MySQL_OffsetIsCorrect() {
String sql = "\n\n\nselect 1 from dual; \nselect 1 from dual";
List<OffsetString> offsetStrings = SqlUtils.splitWithOffset(DialectType.MYSQL, sql, ";");
Assert.assertEquals(2, offsetStrings.size());
Assert.assertEquals(24, offsetStrings.get(1).getOffset());
}

@Test
public void lastSqlHasNoDelimiter_Oracle_OffsetIsCorrect() {
String sql = "\n\n\nCREATE TABLE TEST(A VARCHAR(20))";
List<OffsetString> offsetStrings = SqlUtils.splitWithOffset(DialectType.ORACLE, sql, ";");
Assert.assertEquals(1, offsetStrings.size());
Assert.assertEquals(3, offsetStrings.get(0).getOffset());
}

@Test
public void lastSqlHasNoDelimiterMultiSqls_Oracle_OffsetIsCorrect() {
String sql = "\n\n\nCREATE TABLE TEST(A VARCHAR(20)); \nCREATE TABLE TEST(A VARCHAR(20))";
List<OffsetString> offsetStrings = SqlUtils.splitWithOffset(DialectType.ORACLE, sql, ";");
Assert.assertEquals(2, offsetStrings.size());
Assert.assertEquals(39, offsetStrings.get(1).getOffset());
}
}