diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java index 92355d90fe..fd7d18d1bc 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java @@ -129,6 +129,8 @@ public class SQLServerConnection implements ISQLServerConnection, java.io.Serial private Boolean isAzureDW = null; + private String schema = null; + static class CityHash128Key implements java.io.Serializable { /** @@ -5121,12 +5123,27 @@ public void setNetworkTimeout(Executor executor, int timeout) throws SQLExceptio loggerExternal.exiting(getClassNameLogging(), "setNetworkTimeout"); } + /** + * + * @return If setSchema was used it'll use the value passed into setSchema or else it'll get the schema from Server. + * @throws SQLException + */ @Override public String getSchema() throws SQLException { loggerExternal.entering(getClassNameLogging(), "getSchema"); checkClosed(); + String schema = this.schema; + if (schema == null || schema.isBlank()) { + schema = getSchemaFromServer(); + } + + loggerExternal.exiting(getClassNameLogging(), "getSchema"); + return schema; + } + + private String getSchemaFromServer() throws SQLException { SQLServerStatement stmt = null; SQLServerResultSet resultSet = null; @@ -5155,8 +5172,6 @@ public String getSchema() throws SQLException { stmt.close(); } } - - loggerExternal.exiting(getClassNameLogging(), "getSchema"); return null; } @@ -5164,8 +5179,7 @@ public String getSchema() throws SQLException { public void setSchema(String schema) throws SQLException { loggerExternal.entering(getClassNameLogging(), "setSchema", schema); checkClosed(); - addWarning(SQLServerException.getErrString("R_setSchemaWarning")); - + this.schema = schema; loggerExternal.exiting(getClassNameLogging(), "setSchema"); } diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java index 7f30ca791e..fed5ece7b6 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerResource.java @@ -261,7 +261,6 @@ protected Object[][] getContents() { {"R_integratedAuthenticationFailed", "Integrated authentication failed."}, {"R_permissionDenied", "Security violation. Permission to target \"{0}\" denied."}, {"R_getSchemaError", "Error getting default schema name."}, - {"R_setSchemaWarning", "Warning: setSchema is a no-op in this driver version."}, {"R_updateCountOutofRange", "The update count value is out of range."}, {"R_limitOffsetNotSupported", "OFFSET clause in limit escape sequence is not supported."}, {"R_limitEscapeSyntaxError", "Error in limit escape syntax. Failed to parse query."},