This is an automated email from the ASF dual-hosted git repository.
menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 38ea308a309 Refactor PostgreSQLVendorError (#20664)
38ea308a309 is described below
commit 38ea308a30975a44ff277ade5ef16b8de67c7e29
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Aug 31 07:54:10 2022 +0800
Refactor PostgreSQLVendorError (#20664)
---
.../transaction/InTransactionException.java | 6 -----
.../exception/InvalidPasswordException.java | 8 +++---
.../PostgreSQLProtocolViolationException.java | 10 +++++---
.../exception/PrivilegeNotGrantedException.java | 10 +++++---
.../exception/UnknownUsernameException.java | 8 +++---
.../mapper/PostgreSQLDialectExceptionMapper.java | 30 ++++++++++++----------
.../message/ServerErrorMessageBuilder.java | 9 ++++---
.../postgresql/sqlstate/PostgreSQLState.java | 2 ++
.../postgresql/vendor/PostgreSQLVendorError.java | 18 +++++++++----
.../PostgreSQLDialectExceptionMapperTest.java | 14 +++++-----
.../message/ServerErrorMessageBuilderTest.java | 6 ++---
.../exception/sql/ShardingSphereSQLException.java | 5 ++--
.../util/exception/sql/sqlstate/XOpenSQLState.java | 2 ++
.../transaction/TransactionBackendHandler.java | 4 +--
.../OpenGaussAuthenticationHandler.java | 2 +-
15 files changed, 77 insertions(+), 57 deletions(-)
diff --git
a/shardingsphere-dialect-exception/shardingsphere-dialect-exception-core/src/main/java/org/apache/shardingsphere/dialect/exception/transaction/InTransactionException.java
b/shardingsphere-dialect-exception/shardingsphere-dialect-exception-core/src/main/java/org/apache/shardingsphere/dialect/exception/transaction/InTransactionException.java
index 0a7cfe34584..fb02f2990e5 100644
---
a/shardingsphere-dialect-exception/shardingsphere-dialect-exception-core/src/main/java/org/apache/shardingsphere/dialect/exception/transaction/InTransactionException.java
+++
b/shardingsphere-dialect-exception/shardingsphere-dialect-exception-core/src/main/java/org/apache/shardingsphere/dialect/exception/transaction/InTransactionException.java
@@ -17,18 +17,12 @@
package org.apache.shardingsphere.dialect.exception.transaction;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.dialect.exception.SQLDialectException;
/**
* In transaction exception.
*/
-@RequiredArgsConstructor
-@Getter
public final class InTransactionException extends SQLDialectException {
private static final long serialVersionUID = 8125852172126111520L;
-
- private final String message;
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/InvalidPasswordException.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/InvalidPasswordException.java
index 60f177dc993..7246b14b6ca 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/InvalidPasswordException.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/InvalidPasswordException.java
@@ -17,16 +17,18 @@
package org.apache.shardingsphere.dialect.postgresql.exception;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.dialect.exception.SQLDialectException;
/**
* Invalid password exception.
*/
+@RequiredArgsConstructor
+@Getter
public final class InvalidPasswordException extends SQLDialectException {
private static final long serialVersionUID = -2266893048070563644L;
- public InvalidPasswordException(final String username) {
- super("password authentication failed for user \"%s\"", username);
- }
+ private final String username;
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PostgreSQLProtocolViolationException.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PostgreSQLProtocolViolationException.java
index c78d36dc5a0..cdb018fe807 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PostgreSQLProtocolViolationException.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PostgreSQLProtocolViolationException.java
@@ -17,16 +17,20 @@
package org.apache.shardingsphere.dialect.postgresql.exception;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.dialect.exception.SQLDialectException;
/**
* PostgreSQL protocol violation exception.
*/
+@RequiredArgsConstructor
+@Getter
public final class PostgreSQLProtocolViolationException extends
SQLDialectException {
private static final long serialVersionUID = 6784109729740919997L;
- public PostgreSQLProtocolViolationException(final String
expectedMessageType, final String actualMessageType) {
- super("expected %s response, got message type %s",
expectedMessageType, actualMessageType);
- }
+ private final String expectedMessageType;
+
+ private final String actualMessageType;
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PrivilegeNotGrantedException.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PrivilegeNotGrantedException.java
index 6db8c041ac8..b541b36ca91 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PrivilegeNotGrantedException.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/PrivilegeNotGrantedException.java
@@ -17,16 +17,20 @@
package org.apache.shardingsphere.dialect.postgresql.exception;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.dialect.exception.SQLDialectException;
/**
* Privilege not granted exception.
*/
+@RequiredArgsConstructor
+@Getter
public final class PrivilegeNotGrantedException extends SQLDialectException {
private static final long serialVersionUID = 8410672833723209253L;
- public PrivilegeNotGrantedException(final String username, final String
databaseName) {
- super("Access denied for user '%s' to database '%s'", username,
databaseName);
- }
+ private final String username;
+
+ private final String databaseName;
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/UnknownUsernameException.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/UnknownUsernameException.java
index 53c35c0a3c5..acaad5b4a01 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/UnknownUsernameException.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/exception/UnknownUsernameException.java
@@ -17,16 +17,18 @@
package org.apache.shardingsphere.dialect.postgresql.exception;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.dialect.exception.SQLDialectException;
/**
* Unknown username exception.
*/
+@RequiredArgsConstructor
+@Getter
public final class UnknownUsernameException extends SQLDialectException {
private static final long serialVersionUID = -2895258747747089622L;
- public UnknownUsernameException(final String username) {
- super("unknown username: %s", username);
- }
+ private final String username;
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapper.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapper.java
index d93431a73d0..d902119d466 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapper.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapper.java
@@ -45,40 +45,42 @@ public final class PostgreSQLDialectExceptionMapper
implements SQLDialectExcepti
@Override
public SQLException convert(final SQLDialectException sqlDialectException)
{
if (sqlDialectException instanceof UnknownDatabaseException) {
- return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.INVALID_CATALOG_NAME,
-
String.format(PostgreSQLVendorError.INVALID_CATALOG_NAME.getReason(),
((UnknownDatabaseException) sqlDialectException).getDatabaseName())));
+ return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.INVALID_CATALOG_NAME, ((UnknownDatabaseException)
sqlDialectException).getDatabaseName()));
}
if (sqlDialectException instanceof UnknownUsernameException) {
- return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.INVALID_AUTHORIZATION_SPECIFICATION,
sqlDialectException.getMessage()));
+ return new PSQLException(ServerErrorMessageBuilder.build(
+ "FATAL",
PostgreSQLVendorError.INVALID_AUTHORIZATION_SPECIFICATION,
((UnknownUsernameException) sqlDialectException).getUsername()));
}
if (sqlDialectException instanceof InvalidPasswordException) {
- return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.INVALID_PASSWORD, sqlDialectException.getMessage()));
+ return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.INVALID_PASSWORD, ((InvalidPasswordException)
sqlDialectException).getUsername()));
}
if (sqlDialectException instanceof PrivilegeNotGrantedException) {
- return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.PRIVILEGE_NOT_GRANTED, sqlDialectException.getMessage()));
+ PrivilegeNotGrantedException cause =
(PrivilegeNotGrantedException) sqlDialectException;
+ return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.PRIVILEGE_NOT_GRANTED, cause.getUsername(),
cause.getDatabaseName()));
}
if (sqlDialectException instanceof DatabaseCreateExistsException) {
- return new
PSQLException(PostgreSQLVendorError.DUPLICATE_DATABASE.getReason(), null);
+ return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.DUPLICATE_DATABASE, ((DatabaseCreateExistsException)
sqlDialectException).getDatabaseName()));
}
if (sqlDialectException instanceof InTransactionException) {
- return new PSQLException(sqlDialectException.getMessage(),
PSQLState.TRANSACTION_STATE_INVALID);
+ return new PSQLException(ServerErrorMessageBuilder.build("ERROR",
PostgreSQLVendorError.TRANSACTION_STATE_INVALID));
}
if (sqlDialectException instanceof
InsertColumnsAndValuesMismatchedException) {
- return new PSQLException(sqlDialectException.getMessage(),
PSQLState.SYNTAX_ERROR);
+ return new PSQLException(ServerErrorMessageBuilder.build("ERROR",
+ PostgreSQLVendorError.WRONG_VALUE_COUNT_ON_ROW,
((InsertColumnsAndValuesMismatchedException)
sqlDialectException).getMismatchedRowNumber()));
}
if (sqlDialectException instanceof InvalidParameterValueException) {
- InvalidParameterValueException invalidParameterValueException =
(InvalidParameterValueException) sqlDialectException;
- String message = String.format("invalid value for parameter
\"%s\": \"%s\"", invalidParameterValueException.getParameterName(),
invalidParameterValueException.getParameterValue());
- return new PSQLException(message,
PSQLState.INVALID_PARAMETER_VALUE);
+ InvalidParameterValueException cause =
(InvalidParameterValueException) sqlDialectException;
+ return new PSQLException(ServerErrorMessageBuilder.build("ERROR",
PostgreSQLVendorError.INVALID_PARAMETER_VALUE, cause.getParameterName(),
cause.getParameterValue()));
}
if (sqlDialectException instanceof TooManyConnectionsException) {
- return new
PSQLException(PostgreSQLVendorError.DATA_SOURCE_REJECTED_CONNECTION_ATTEMPT.getReason(),
null);
+ return new PSQLException(ServerErrorMessageBuilder.build("ERROR",
PostgreSQLVendorError.DATA_SOURCE_REJECTED_CONNECTION_ATTEMPT));
}
if (sqlDialectException instanceof
InvalidAuthorizationSpecificationException) {
- return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.INVALID_AUTHORIZATION_SPECIFICATION,
sqlDialectException.getMessage()));
+ return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.NO_USERNAME));
}
if (sqlDialectException instanceof
PostgreSQLProtocolViolationException) {
- return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.PROTOCOL_VIOLATION, sqlDialectException.getMessage()));
+ PostgreSQLProtocolViolationException cause =
(PostgreSQLProtocolViolationException) sqlDialectException;
+ return new PSQLException(ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.PROTOCOL_VIOLATION, cause.getExpectedMessageType(),
cause.getActualMessageType()));
}
return new PSQLException(sqlDialectException.getMessage(),
PSQLState.UNEXPECTED_ERROR);
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilder.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilder.java
index b3a3f4b79f4..abfa9da5f5f 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilder.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilder.java
@@ -30,14 +30,15 @@ public final class ServerErrorMessageBuilder {
/**
* Build server error message.
- *
+ *
* @param severity severity
* @param vendorError vendor error
- * @param reason reason
+ * @param reasonArguments reason arguments
* @return server error message
*/
- public static ServerErrorMessage build(final String severity, final
VendorError vendorError, final String reason) {
- return new ServerErrorMessage(String.join("\0",
buildSeverity(severity), buildNewSeverity(severity),
buildSQLState(vendorError), buildReason(reason)));
+ public static ServerErrorMessage build(final String severity, final
VendorError vendorError, final Object... reasonArguments) {
+ return new ServerErrorMessage(
+ String.join("\0", buildSeverity(severity),
buildNewSeverity(severity), buildSQLState(vendorError),
buildReason(String.format(vendorError.getReason(), reasonArguments))));
}
private static String buildSeverity(final String severity) {
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/sqlstate/PostgreSQLState.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/sqlstate/PostgreSQLState.java
index 8c8e6845c08..b65b58b70a1 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/sqlstate/PostgreSQLState.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/sqlstate/PostgreSQLState.java
@@ -30,6 +30,8 @@ public enum PostgreSQLState implements SQLState {
PROTOCOL_VIOLATION("08P01"),
+ SYNTAX_ERROR("42601"),
+
DUPLICATE_DATABASE("42P04"),
INVALID_PASSWORD("28P01"),
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/vendor/PostgreSQLVendorError.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/vendor/PostgreSQLVendorError.java
index 6d360c711fc..28201937431 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/vendor/PostgreSQLVendorError.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/main/java/org/apache/shardingsphere/dialect/postgresql/vendor/PostgreSQLVendorError.java
@@ -35,23 +35,31 @@ public enum PostgreSQLVendorError implements VendorError {
SUCCESSFUL_COMPLETION(XOpenSQLState.SUCCESSFUL_COMPLETION,
"successful_completion"),
- PRIVILEGE_NOT_GRANTED(XOpenSQLState.PRIVILEGE_NOT_GRANTED,
"privilege_not_granted"),
+ PRIVILEGE_NOT_GRANTED(XOpenSQLState.PRIVILEGE_NOT_GRANTED, "Access denied
for user '%s' to database '%s'"),
- PROTOCOL_VIOLATION(PostgreSQLState.PROTOCOL_VIOLATION,
"protocol_violation"),
+ PROTOCOL_VIOLATION(PostgreSQLState.PROTOCOL_VIOLATION, "expected %s
response, got message type %s"),
FEATURE_NOT_SUPPORTED(XOpenSQLState.FEATURE_NOT_SUPPORTED,
"feature_not_supported"),
DUPLICATE_DATABASE(PostgreSQLState.DUPLICATE_DATABASE, "Database '%s'
already exists"),
-
INVALID_AUTHORIZATION_SPECIFICATION(XOpenSQLState.INVALID_AUTHORIZATION_SPECIFICATION,
"invalid_authorization_specification"),
+
INVALID_AUTHORIZATION_SPECIFICATION(XOpenSQLState.INVALID_AUTHORIZATION_SPECIFICATION,
"unknown username: %s"),
- INVALID_PASSWORD(PostgreSQLState.INVALID_PASSWORD, "invalid_password"),
+ NO_USERNAME(XOpenSQLState.INVALID_AUTHORIZATION_SPECIFICATION, "no
PostgreSQL user name specified in startup packet"),
+
+ INVALID_PASSWORD(PostgreSQLState.INVALID_PASSWORD, "password
authentication failed for user \"%s\""),
INVALID_CATALOG_NAME(XOpenSQLState.INVALID_CATALOG_NAME, "database \"%s\"
does not exist"),
UNDEFINED_COLUMN(PostgreSQLState.UNDEFINED_COLUMN, "undefined_column"),
-
DATA_SOURCE_REJECTED_CONNECTION_ATTEMPT(XOpenSQLState.DATA_SOURCE_REJECTED_CONNECTION_ATTEMPT,
"sqlserver_rejected_establishment_of_sqlconnection"),
+
DATA_SOURCE_REJECTED_CONNECTION_ATTEMPT(XOpenSQLState.DATA_SOURCE_REJECTED_CONNECTION_ATTEMPT,
"server rejected establishment of sql connection"),
+
+ TRANSACTION_STATE_INVALID(XOpenSQLState.INVALID_TRANSACTION_STATE, "There
is already a transaction in progress"),
+
+ WRONG_VALUE_COUNT_ON_ROW(PostgreSQLState.SYNTAX_ERROR, "Column count
doesn't match value count at row %d"),
+
+ INVALID_PARAMETER_VALUE(XOpenSQLState.INVALID_PARAMETER_VALUE, "invalid
value for parameter \"%s\": \"%s\""),
SYSTEM_ERROR(PostgreSQLState.SYSTEM_ERROR, "system_error");
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapperTest.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapperTest.java
index 48ff1f15acf..90088855ad5 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapperTest.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/mapper/PostgreSQLDialectExceptionMapperTest.java
@@ -37,20 +37,20 @@ public final class PostgreSQLDialectExceptionMapperTest {
private Collection<Object[]> getConvertParameters() {
return Arrays.asList(new Object[][]{
- {DatabaseCreateExistsException.class, null},
- {InTransactionException.class,
PSQLState.TRANSACTION_STATE_INVALID},
- {InsertColumnsAndValuesMismatchedException.class,
PSQLState.SYNTAX_ERROR},
- {InvalidParameterValueException.class,
PSQLState.INVALID_PARAMETER_VALUE},
- {TooManyConnectionsException.class, null},
+ {DatabaseCreateExistsException.class, "42P04"},
+ {InTransactionException.class,
PSQLState.TRANSACTION_STATE_INVALID.getState()},
+ {InsertColumnsAndValuesMismatchedException.class,
PSQLState.SYNTAX_ERROR.getState()},
+ {InvalidParameterValueException.class,
PSQLState.INVALID_PARAMETER_VALUE.getState()},
+ {TooManyConnectionsException.class,
PSQLState.CONNECTION_REJECTED.getState()},
});
}
@Test
@SuppressWarnings("unchecked")
public void convert() {
- PostgreSQLDialectExceptionMapper postgreSQLDialect = new
PostgreSQLDialectExceptionMapper();
+ PostgreSQLDialectExceptionMapper dialectExceptionMapper = new
PostgreSQLDialectExceptionMapper();
for (Object[] item : getConvertParameters()) {
-
assertThat(postgreSQLDialect.convert(mock((Class<SQLDialectException>)
item[0])).getSQLState(), is(item[1] == null ? null : ((PSQLState)
item[1]).getState()));
+
assertThat(dialectExceptionMapper.convert(mock((Class<SQLDialectException>)
item[0])).getSQLState(), is(null == item[1] ? null : item[1]));
}
}
}
diff --git
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilderTest.java
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilderTest.java
index f9284feaeb7..22d98f0a101 100644
---
a/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilderTest.java
+++
b/shardingsphere-dialect-exception/shardingsphere-postgresql-dialect-exception/src/test/java/org/apache/shardingsphere/dialect/postgresql/message/ServerErrorMessageBuilderTest.java
@@ -28,9 +28,9 @@ public final class ServerErrorMessageBuilderTest {
@Test
public void assertToServerErrorMessage() {
- ServerErrorMessage actual = ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.SYSTEM_ERROR, "foo_reason");
+ ServerErrorMessage actual = ServerErrorMessageBuilder.build("FATAL",
PostgreSQLVendorError.PRIVILEGE_NOT_GRANTED, "foo_user", "foo_db");
Assert.assertThat(actual.getSeverity(), is("FATAL"));
- Assert.assertThat(actual.getSQLState(),
is(PostgreSQLVendorError.SYSTEM_ERROR.getSqlState().getValue()));
- Assert.assertThat(actual.getMessage(), is("foo_reason"));
+ Assert.assertThat(actual.getSQLState(),
is(PostgreSQLVendorError.PRIVILEGE_NOT_GRANTED.getSqlState().getValue()));
+ Assert.assertThat(actual.getMessage(), is("Access denied for user
'foo_user' to database 'foo_db'"));
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/ShardingSphereSQLException.java
b/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/ShardingSphereSQLException.java
index 8db1d216401..cf4c5660e7a 100644
---
a/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/ShardingSphereSQLException.java
+++
b/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/ShardingSphereSQLException.java
@@ -35,12 +35,11 @@ public abstract class ShardingSphereSQLException extends
ShardingSphereInsideExc
private final String reason;
- public ShardingSphereSQLException(final SQLState sqlState, final int
vendorCode, final String reason, final String... messageArguments) {
+ public ShardingSphereSQLException(final SQLState sqlState, final int
vendorCode, final String reason, final Object... messageArguments) {
this(sqlState.getValue(), vendorCode, reason, messageArguments);
}
- @SuppressWarnings("ConfusingArgumentToVarargsMethod")
- public ShardingSphereSQLException(final String sqlState, final int
vendorCode, final String reason, final String... messageArguments) {
+ public ShardingSphereSQLException(final String sqlState, final int
vendorCode, final String reason, final Object... messageArguments) {
this.sqlState = sqlState;
this.vendorCode = vendorCode;
this.reason = null == reason ? null : String.format(reason,
messageArguments);
diff --git
a/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/sqlstate/XOpenSQLState.java
b/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/sqlstate/XOpenSQLState.java
index 1d05bb1d18e..dc7315e2889 100644
---
a/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/sqlstate/XOpenSQLState.java
+++
b/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/sql/sqlstate/XOpenSQLState.java
@@ -41,6 +41,8 @@ public enum XOpenSQLState implements SQLState {
MISMATCH_INSERT_VALUES_AND_COLUMNS("21S01"),
+ INVALID_PARAMETER_VALUE("22023"),
+
INVALID_TRANSACTION_STATE("25000"),
INVALID_AUTHORIZATION_SPECIFICATION("28000"),
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
index 65020e0e082..7c4dbd56bbc 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
@@ -85,7 +85,7 @@ public final class TransactionBackendHandler implements
ProxyBackendHandler {
if (connectionSession.getDatabaseType() instanceof
MySQLDatabaseType) {
return transactionManager.commit().compose(unused ->
transactionManager.begin());
} else if (connectionSession.getDatabaseType() instanceof
PostgreSQLDatabaseType || connectionSession.getDatabaseType() instanceof
OpenGaussDatabaseType) {
- return Future.failedFuture(new
InTransactionException("There is already a transaction in progress."));
+ return Future.failedFuture(new
InTransactionException());
}
}
return transactionManager.begin();
@@ -140,7 +140,7 @@ public final class TransactionBackendHandler implements
ProxyBackendHandler {
if (connectionSession.getDatabaseType() instanceof
MySQLDatabaseType) {
backendTransactionManager.commit();
} else if (connectionSession.getDatabaseType() instanceof
PostgreSQLDatabaseType || connectionSession.getDatabaseType() instanceof
OpenGaussDatabaseType) {
- throw new InTransactionException("There is already a
transaction in progress.");
+ throw new InTransactionException();
}
}
backendTransactionManager.begin();
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandler.java
index 1429439901f..16840c94201 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandler.java
@@ -72,7 +72,7 @@ public final class OpenGaussAuthenticationHandler {
* @param passwordMessagePacket password message packet
*/
public static void loginWithSCRAMSha256Password(final String username,
final String databaseName, final String salt, final String nonce, final int
serverIteration,
- final
PostgreSQLPasswordMessagePacket passwordMessagePacket) {
+ final
PostgreSQLPasswordMessagePacket passwordMessagePacket) {
String clientDigest = passwordMessagePacket.getDigest();
Grantee grantee = new Grantee(username, "%");
if (!Strings.isNullOrEmpty(databaseName) &&
!ProxyContext.getInstance().databaseExists(databaseName)) {