Skip to content

Commit d2b0706

Browse files
committed
fixes #149
1 parent 703673f commit d2b0706

File tree

4 files changed

+20
-9
lines changed

4 files changed

+20
-9
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Also I would like to know about needed examples or documentation stuff.
3535

3636
## Extensions in the latest SNAPSHOT version 0.9.4
3737

38+
* allow **Server** within multipart names to act as database link
3839
* revived Apache Software License, Version 2.0
3940
* support for **row constructors in conditions**
4041

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,23 @@
2424
import java.util.regex.*;
2525

2626
public final class Server implements MultiPartName {
27+
2728
public static final Pattern SERVER_PATTERN = Pattern.compile("\\[([^\\]]+?)(?:\\\\([^\\]]+))?\\]");
2829

2930
private String serverName;
3031
private String instanceName;
31-
32+
private String simpleName;
3233

3334
public Server(String serverAndInstanceName) {
3435
if (serverAndInstanceName != null) {
3536
final Matcher matcher = SERVER_PATTERN.matcher(serverAndInstanceName);
3637
if (!matcher.find()) {
37-
throw new IllegalArgumentException(String.format("%s is not a valid database reference", serverAndInstanceName));
38+
//throw new IllegalArgumentException(String.format("%s is not a valid database reference", serverAndInstanceName));
39+
simpleName = serverAndInstanceName;
40+
} else {
41+
setServerName(matcher.group(1));
42+
setInstanceName(matcher.group(2));
3843
}
39-
setServerName(matcher.group(1));
40-
setInstanceName(matcher.group(2));
4144
}
4245
}
4346

@@ -68,6 +71,8 @@ public String getFullyQualifiedName() {
6871
return String.format("[%s\\%s]", serverName, instanceName);
6972
} else if (serverName != null && !serverName.isEmpty()) {
7073
return String.format("[%s]", serverName);
74+
} else if (simpleName != null && !simpleName.isEmpty()) {
75+
return simpleName;
7176
} else {
7277
return "";
7378
}

src/test/java/net/sf/jsqlparser/schema/ServerTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ public void testServerNameParsing() throws Exception {
3232
final String fullServerName = String.format("[%s]", serverName);
3333
final Server server = new Server(fullServerName);
3434

35-
Assert.assertEquals(serverName, server.getServerName());
36-
Assert.assertEquals(fullServerName, server.toString());
35+
assertEquals(serverName, server.getServerName());
36+
assertEquals(fullServerName, server.toString());
3737
}
3838

3939
public void testServerNameAndInstanceParsing() throws Exception {
@@ -43,9 +43,9 @@ public void testServerNameAndInstanceParsing() throws Exception {
4343
final String fullServerName = String.format("[%s\\%s]", serverName, serverInstanceName);
4444
final Server server = new Server(fullServerName);
4545

46-
Assert.assertEquals(serverName, server.getServerName());
47-
Assert.assertEquals(serverInstanceName, server.getInstanceName());
48-
Assert.assertEquals(fullServerName, server.toString());
46+
assertEquals(serverName, server.getServerName());
47+
assertEquals(serverInstanceName, server.getInstanceName());
48+
assertEquals(fullServerName, server.toString());
4949

5050
}
5151
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ public void testMultiPartTableNameWithServerNameAndSchemaName() throws Exception
4545

4646
assertStatementCanBeDeparsedAs(select, statement);
4747
}
48+
49+
public void testMultiPartTableNameWithServerProblem() throws Exception {
50+
final String statement = "SELECT * FROM LINK_100.htsac.dbo.t_transfer_num a";
51+
assertSqlCanBeParsedAndDeparsed(statement);
52+
}
4853

4954
public void testMultiPartTableNameWithServerName() throws Exception {
5055
final String statement = "SELECT columnName FROM [server-name\\server-instance]...tableName";

0 commit comments

Comments
 (0)