Skip to content

Commit

Permalink
Merge pull request #351 from shin1103/fix/numeric-precision-error
Browse files Browse the repository at this point in the history
Add getDataLength for numeric without precision
  • Loading branch information
dmikurube authored Oct 31, 2024
2 parents 99d8603 + 4a240b0 commit 1a04c53
Showing 1 changed file with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
public class PostgreSQLOutputConnection
extends JdbcOutputConnection
{
private static final int MIN_NUMERIC_PRECISION = 1;
private static final int MAX_NUMERIC_PRECISION = 1000;

public PostgreSQLOutputConnection(Connection connection, String schemaName, String roleName)
Expand Down Expand Up @@ -263,9 +264,13 @@ protected String buildColumnTypeName(JdbcColumn c)
}
break;
case "NUMERIC": // only "NUMERIC" because PostgreSQL JDBC driver will return also "NUMERIC" for the type name of decimal.
if (c.getDataLength() > MAX_NUMERIC_PRECISION) {
// getDataLength for numeric without precision will return 131089 .
// but cannot create column of numeric(131089) .
if (c.getDataLength() > MAX_NUMERIC_PRECISION || c.getDataLength() < MIN_NUMERIC_PRECISION) {
// getDataLength for numeric without precision will return 0 or 131089 .
// but cannot create column of numeric(0) and numeric(131089) .
// before PostgreSQL JDBC driver 42.2.23, return 131089. from 42.2.23 return 0.
// release note: https://jdbc.postgresql.org/changelogs/2021-07-06-42.2.23-release/
// issue: https://github.com/pgjdbc/pgjdbc/issues/2188
// pull request: https://github.com/pgjdbc/pgjdbc/pull/2189
return "NUMERIC";
}
break;
Expand Down

0 comments on commit 1a04c53

Please sign in to comment.