markhoerth opened a new issue, #10519: URL: https://github.com/apache/gravitino/issues/10519
Component: catalog-jdbc-postgresql Version: 1.2.1-SNAPSHOT Steps to reproduce: Create a PostgreSQL table with a NUMERIC column (no precision), register it in Gravitino via jdbc-postgresql catalog, attempt to load the table via REST API Expected: Table loads successfully, NUMERIC mapped to a default decimal type Actual: IllegalArgumentException: Decimal precision must be in range[1, 38]: precision: 0 Root cause: PostgreSqlTypeConverter.toGravitino() receives precision=0 from JDBC metadata for unconstrained NUMERIC columns. This gets passed to Types.DecimalType.of(0,...) which rejects it. Fix should map precision=0 to a sensible default (e.g. DECIMAL(38,18)) rather than throwing. Workaround: Explicitly cast all NUMERIC columns with precision in the CREATE TABLE / dbt model, e.g. amount::numeric(12,2) Stack trace: markh@Mark:~$ curl -s http://localhost:8090/api/metalakes/demo/catalogs/postgres_adp/schemas/public_marts/tables/dim_customers | python3 -m json.tool | head -30 { "code": 1001, "type": "IllegalArgumentException", "message": "Failed to operate table(s) [dim_customers] operation [LOAD] under schema [public_marts], reason [Decimal precision must be in range[1, 38]: precision: 0]", "stack": [ "java.lang.IllegalArgumentException: Decimal precision must be in range[1, 38]: precision: 0", "\tat com.google.common.base.Preconditions.checkArgument(Preconditions.java:191)", "\tat org.apache.gravitino.rel.types.Types$DecimalType.checkPrecisionScale(Types.java:282)", "\tat org.apache.gravitino.rel.types.Types$DecimalType.<init>(Types.java:276)", "\tat org.apache.gravitino.rel.types.Types$DecimalType.of(Types.java:269)", "\tat org.apache.gravitino.catalog.postgresql.converter.PostgreSqlTypeConverter.toGravitino(PostgreSqlTypeConverter.java:79)", "\tat org.apache.gravitino.catalog.postgresql.converter.PostgreSqlTypeConverter.toGravitino(PostgreSqlTypeConverter.java:29)", "\tat org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations.getBasicJdbcColumnInfo(JdbcTableOperations.java:706)", "\tat org.apache.gravitino.catalog.postgresql.operation.PostgreSqlTableOperations.getColumnBuilder(PostgreSqlTableOperations.java:147)", "\tat org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations.load(JdbcTableOperations.java:262)", "\tat org.apache.gravitino.catalog.jdbc.JdbcCatalogOperations.loadTable(JdbcCatalogOperations.java:354)", "\tat org.apache.gravitino.catalog.TableOperationDispatcher.lambda$internalLoadTable$20(TableOperationDispatcher.java:502)", "\tat org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.lambda$doWithTableOps$1(CatalogManager.java:153)", "\tat org.apache.gravitino.utils.IsolatedClassLoader.withClassLoader(IsolatedClassLoader.java:86)", "\tat org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.doWithTableOps(CatalogManager.java:148)", "\tat org.apache.gravitino.catalog.TableOperationDispatcher.lambda$internalLoadTable$21(TableOperationDispatcher.java:502)", "\tat org.apache.gravitino.catalog.OperationDispatcher.doWithCatalog(OperationDispatcher.java:97)", "\tat org.apache.gravitino.catalog.TableOperationDispatcher.internalLoadTable(TableOperationDispatcher.java:500)", "\tat org.apache.gravitino.catalog.TableOperationDispatcher.lambda$loadTable$3(TableOperationDispatcher.java:117)", "\tat org.apache.gravitino.lock.TreeLockUtils.doWithTreeLock(TreeLockUtils.java:49)", "\tat org.apache.gravitino.catalog.TableOperationDispatcher.loadTable(TableOperationDispatcher.java:117)", "\tat org.apache.gravitino.hook.TableHookDispatcher.loadTable(TableHookDispatcher.java:63)", "\tat org.apache.gravitino.catalog.TableNormalizeDispatcher.loadTable(TableNormalizeDispatcher.java:63)", "\tat org.apache.gravitino.listener.TableEventDispatcher.loadTable(TableEventDispatcher.java:99)", "\tat org.apache.gravitino.server.web.rest.TableOperations.lambda$loadTable$2(TableOperations.java:198)", -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
