Skip to content

Commit a8ffe64

Browse files
merge Master
2 parents 6953d8b + 15ff843 commit a8ffe64

4 files changed

Lines changed: 50 additions & 8 deletions

File tree

build.gradle

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212
}
1313

1414
group = 'com.github.jsqlparser'
15-
version = '4.5-SNAPSHOT'
15+
version = '4.6-SNAPSHOT'
1616
description = 'JSQLParser library'
1717
java.sourceCompatibility = JavaVersion.VERSION_1_8
1818

@@ -42,11 +42,8 @@ dependencies {
4242
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.+'
4343

4444
// https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter
45-
testImplementation 'org.mockito:mockito-junit-jupiter:4.5.1'
46-
47-
implementation 'net.java.dev.javacc:javacc:7.0.11'
48-
49-
testImplementation "org.junit.jupiter:junit-jupiter-params:5.+"
45+
testImplementation 'org.mockito:mockito-junit-jupiter:4.+'
46+
testImplementation 'org.junit.jupiter:junit-jupiter-params:+'
5047

5148
// enforce latest version of JavaCC
5249
javacc 'net.java.dev.javacc:javacc:7.0.12'

src/main/java/net/sf/jsqlparser/schema/Table.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,25 @@ public void setSchemaName(String schemaName) {
103103
}
104104

105105
public String getName() {
106-
return getIndex(NAME_IDX);
106+
String name = getIndex(NAME_IDX);
107+
if (name!=null && name.contains("@")) {
108+
int pos = name.lastIndexOf('@');
109+
if (pos>0) {
110+
name = name.substring(0, pos );
111+
}
112+
}
113+
return name;
114+
}
115+
116+
public String getDBLinkName() {
117+
String name = getIndex(NAME_IDX);
118+
if (name!=null && name.contains("@")) {
119+
int pos = name.lastIndexOf('@');
120+
if (pos>0 && name.length()>1) {
121+
name = name.substring(pos+1);
122+
}
123+
}
124+
return name;
107125
}
108126

109127
public Table withName(String name) {
@@ -241,4 +259,8 @@ public Table withSqlServerHints(SQLServerHints sqlServerHints) {
241259
this.setSqlServerHints(sqlServerHints);
242260
return this;
243261
}
262+
263+
public List<String> getNameParts() {
264+
return partItems;
265+
}
244266
}

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3738,7 +3738,8 @@ Expression ComparisonItem() :
37383738
LOOKAHEAD(3) retval=AnyComparisonExpression()
37393739
| LOOKAHEAD(ValueListExpression()) retval=ValueListExpression()
37403740
| LOOKAHEAD(3) retval=SimpleExpression()
3741-
| retval=RowConstructor()
3741+
| LOOKAHEAD(3) retval=RowConstructor()
3742+
| retval=PrimaryExpression()
37423743
)
37433744

37443745
{

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import static org.assertj.core.api.Assertions.assertThat;
4747
import static org.junit.jupiter.api.Assertions.assertEquals;
4848
import static org.junit.jupiter.api.Assertions.assertFalse;
49+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
4950
import static org.junit.jupiter.api.Assertions.assertNotNull;
5051
import static org.junit.jupiter.api.Assertions.assertNull;
5152
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -5240,4 +5241,25 @@ public void testNamedWindowDefinitionIssue1581_2() throws JSQLParserException {
52405241
public void testTimestamptzDateTimeLiteral() throws JSQLParserException {
52415242
assertSqlCanBeParsedAndDeparsed("SELECT * FROM table WHERE x >= TIMESTAMPTZ '2021-07-05 00:00:00+00'");
52425243
}
5244+
5245+
5246+
@Test
5247+
public void testFunctionComplexExpressionParametersIssue1644() throws JSQLParserException {
5248+
assertSqlCanBeParsedAndDeparsed("SELECT test(1=1, 'a', 'b')", true);
5249+
assertSqlCanBeParsedAndDeparsed("SELECT if(instr('avc','a')=0, 'avc', 'aaa')", true);
5250+
}
5251+
5252+
@Test
5253+
public void testOracleDBLink() throws JSQLParserException {
5254+
String sqlStr = "SELECT * from tablename@dblink";
5255+
assertSqlCanBeParsedAndDeparsed(sqlStr, true);
5256+
5257+
Select select = (Select) CCJSqlParserUtil.parse(sqlStr);
5258+
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
5259+
Table table = (Table) plainSelect.getFromItem();
5260+
5261+
assertNotEquals("tablename@dblink", table.getName());
5262+
assertEquals("tablename", table.getName());
5263+
assertEquals("dblink", table.getDBLinkName());
5264+
}
52435265
}

0 commit comments

Comments
 (0)