diff --git a/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/mapper/PostgreSQLDialectExceptionMapper.java b/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/mapper/PostgreSQLDialectExceptionMapper.java index 38470611c6472..a4287db32b8a1 100644 --- a/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/mapper/PostgreSQLDialectExceptionMapper.java +++ b/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/mapper/PostgreSQLDialectExceptionMapper.java @@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.exception.dialect.exception.data.InvalidParameterValueException; import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.DatabaseCreateExistsException; import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException; +import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.table.NoSuchTableException; import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.table.TableExistsException; import org.apache.shardingsphere.infra.exception.dialect.exception.transaction.InTransactionException; import org.apache.shardingsphere.infra.exception.dialect.mapper.SQLDialectExceptionMapper; @@ -56,6 +57,10 @@ public SQLException convert(final SQLDialectException sqlDialectException) { if (sqlDialectException instanceof DatabaseCreateExistsException) { return new PostgreSQLException(new ServerErrorMessage(FATAL_SEVERITY, PostgreSQLVendorError.DUPLICATE_DATABASE, ((DatabaseCreateExistsException) sqlDialectException).getDatabaseName())); } + if (sqlDialectException instanceof NoSuchTableException) { + NoSuchTableException cause = (NoSuchTableException) sqlDialectException; + return new PostgreSQLException(new ServerErrorMessage(FATAL_SEVERITY, PostgreSQLVendorError.NO_SUCH_TABLE, cause.getTableName())); + } if (sqlDialectException instanceof TableExistsException) { return new PostgreSQLException(new ServerErrorMessage(ERROR_SEVERITY, PostgreSQLVendorError.DUPLICATE_TABLE, ((TableExistsException) sqlDialectException).getTableName())); } diff --git a/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/sqlstate/PostgreSQLState.java b/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/sqlstate/PostgreSQLState.java index edc3c5aebbc19..1f561817df022 100644 --- a/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/sqlstate/PostgreSQLState.java +++ b/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/sqlstate/PostgreSQLState.java @@ -29,20 +29,13 @@ public enum PostgreSQLState implements SQLState { PROTOCOL_VIOLATION("08P01"), - SYNTAX_ERROR("42601"), - DUPLICATE_DATABASE("42P04"), - DUPLICATE_TABLE("42P07"), - INVALID_PASSWORD("28P01"), - UNDEFINED_COLUMN("42703"), - + UNDEFINED_TABLE("42P01"), SYSTEM_ERROR("58000"), - UNEXPECTED_ERROR("99999"); - private final String value; } diff --git a/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/vendor/PostgreSQLVendorError.java b/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/vendor/PostgreSQLVendorError.java index ae8ab5f23da13..002bc453e3178 100644 --- a/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/vendor/PostgreSQLVendorError.java +++ b/infra/exception/dialect/type/postgresql/src/main/java/org/apache/shardingsphere/infra/exception/postgresql/vendor/PostgreSQLVendorError.java @@ -48,9 +48,8 @@ public enum PostgreSQLVendorError implements VendorError { INVALID_AUTHORIZATION_SPECIFICATION(XOpenSQLState.INVALID_AUTHORIZATION_SPECIFICATION, "unknown username: %s"), NO_USERNAME(XOpenSQLState.INVALID_AUTHORIZATION_SPECIFICATION, "no PostgreSQL user name specified in startup packet"), - + NO_SUCH_TABLE(PostgreSQLState.UNDEFINED_TABLE, "Table '%s' doesn't exist"), 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, "Column \"%s\" of table \"%s\" does not exist"),