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]

Reply via email to