File tree Expand file tree Collapse file tree 4 files changed +20
-9
lines changed
main/java/net/sf/jsqlparser/schema
test/java/net/sf/jsqlparser Expand file tree Collapse file tree 4 files changed +20
-9
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 2424import java .util .regex .*;
2525
2626public 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 }
Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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" ;
You can’t perform that action at this time.
0 commit comments