{"record":{"id":"bb7cc609383a136e","repo":"apache/seatunnel","slug":"the-timestamp-tz-column-type-timestamp-tz-i-bb7cc6","errorCode":null,"errorMessage":"The timestamp_tz column {} type timestamp_tz({}) is out of range, which exceeds the maximum scale of {}, it will be converted to timestamp_tz({})","messagePattern":"The timestamp_tz column (.+?) type timestamp_tz\\((.+?)\\) is out of range, which exceeds the maximum scale of (.+?), it will be converted to timestamp_tz\\((.+?)\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/xugu/XuguTypeConverter.java","lineNumber":392,"sourceCode":"                                        + \"it will be converted to timestamp({})\",\n                                column.getName(),\n                                column.getScale(),\n                                MAX_TIMESTAMP_SCALE,\n                                timestampScale);\n                    }\n                    builder.columnType(String.format(\"TIMESTAMP(%s)\", timestampScale));\n                    builder.scale(timestampScale);\n                }\n                builder.dataType(XUGU_TIMESTAMP);\n                break;\n            case TIMESTAMP_TZ:\n                if (column.getScale() == null || column.getScale() <= 0) {\n                    builder.columnType(XUGU_TIMESTAMP_WITH_TIME_ZONE);\n                } else {\n                    int timestampTzScale = column.getScale();\n                    if (column.getScale() > MAX_TIMESTAMP_SCALE) {\n                        timestampTzScale = MAX_TIMESTAMP_SCALE;\n                        log.warn(\n                                \"The timestamp_tz column {} type timestamp_tz({}) is out of\"\n                                        + \" range, which exceeds the maximum scale of {}, \"\n                                        + \"it will be converted to timestamp_tz({})\",\n                                column.getName(),\n                                column.getScale(),\n                                MAX_TIMESTAMP_SCALE,\n                                timestampTzScale);\n                    }\n                    builder.columnType(\n                            String.format(\"TIMESTAMP(%s) WITH TIME ZONE\", timestampTzScale));\n                    builder.scale(timestampTzScale);\n                }\n                builder.dataType(XUGU_TIMESTAMP_WITH_TIME_ZONE);\n                break;\n            default:\n                throw CommonError.convertToConnectorTypeError(\n                        DatabaseIdentifier.XUGU,\n                        column.getDataType().getSqlType().name(),","sourceCodeStart":374,"sourceCodeEnd":410,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/xugu/XuguTypeConverter.java#L374-L410","documentation":"Warning from XuguTypeConverter.reconvert when a TIMESTAMP WITH TIME ZONE column's scale exceeds XuGu's MAX_TIMESTAMP_SCALE for XUGU_TIMESTAMP_WITH_TIME_ZONE. The scale is clamped to the maximum; conversion continues and only this warning is emitted.","triggerScenarios":"Catalog sink write to XuGu of a timestamp_tz column with scale > MAX_TIMESTAMP_SCALE, e.g. timestamptz(9) from PostgreSQL.","commonSituations":"Syncing PostgreSQL timestamptz or other tz-aware high-precision timestamps into XuGu; auto table creation deriving scale from the source dialect.","solutions":["Cast the source column to a lower-precision timestamptz (e.g. TIMESTAMPTZ(3)) before the sink.","Accept the automatic scale clamp and validate the rounded values.","Pre-create the XuGu target column with an allowed scale."],"exampleFix":"// before: timestamptz(9)\n// after\nSQL: CAST(tz_col AS TIMESTAMPTZ(6)) AS tz_col","handlingStrategy":"validation","validationCode":"if (col.getSqlType() == SqlType.TIMESTAMP_WITH_TIME_ZONE && col.getColumnScale() > MAX_TIMESTAMP_SCALE) {\n    col = col.copy().setColumnScale(MAX_TIMESTAMP_SCALE).build();\n}","typeGuard":"boolean withinTzTimestampScale(ColumnType c) { return c.getScale() == null || c.getScale() <= MAX_TIMESTAMP_SCALE; }","tryCatchPattern":null,"preventionTips":["Normalize timestamptz precision when reading from PostgreSQL/MySQL","Pre-create XuGu columns with explicit in-range scales","Monitor logs during auto table creation"],"tags":["jdbc","xugu","type-conversion","timezone","precision-loss"],"backgroundTag":"value-out-of-range","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}