{"record":{"id":"8f81d63eafc2ee65","repo":"apache/seatunnel","slug":"the-timestamp-tz-column-type-timestamp-tz-i","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/snowflake/SnowflakeTypeConverter.java","lineNumber":341,"sourceCode":"                builder.dataType(SNOWFLAKE_TIME);\n                break;\n            case TIMESTAMP:\n                if (column.getScale() != null && column.getScale() > 9) {\n                    log.warn(\n                            \"The timestamp column {} type timestamp({}) is out of range, \"\n                                    + \"which exceeds the maximum scale of {}, \"\n                                    + \"it will be converted to timestamp({})\",\n                            column.getName(),\n                            column.getScale(),\n                            9,\n                            9);\n                }\n                builder.columnType(SNOWFLAKE_TIMESTAMP_NTZ);\n                builder.dataType(SNOWFLAKE_TIMESTAMP_NTZ);\n                break;\n            case TIMESTAMP_TZ:\n                if (column.getScale() != null && column.getScale() > 9) {\n                    log.warn(\n                            \"The timestamp_tz column {} type timestamp_tz({}) is out of range, \"\n                                    + \"which exceeds the maximum scale of {}, \"\n                                    + \"it will be converted to timestamp_tz({})\",\n                            column.getName(),\n                            column.getScale(),\n                            9,\n                            9);\n                }\n                builder.columnType(SNOWFLAKE_TIMESTAMP_TZ);\n                builder.dataType(SNOWFLAKE_TIMESTAMP_TZ);\n                break;\n            default:\n                throw CommonError.convertToSeaTunnelTypeError(\n                        DatabaseIdentifier.SNOWFLAKE,\n                        column.getDataType().getSqlType().toString(),\n                        column.getName());\n        }\n        return builder.build();","sourceCodeStart":323,"sourceCodeEnd":359,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/snowflake/SnowflakeTypeConverter.java#L323-L359","documentation":"When converting a TIMESTAMP_TZ (with time zone) column for Snowflake, its scale exceeds 9, Snowflake's maximum. SeaTunnel logs this warning and maps the column to TIMESTAMP_TZ at scale 9, so fractional seconds beyond nanoseconds are lost.","triggerScenarios":"reconvert() handles a Column with sqlType TIMESTAMP_TZ and column.getScale() > 9, e.g. timestamptz(12) source definitions.","commonSituations":"Sources (e.g. PostgreSQL timestamptz variants with over-declared scale) synced to Snowflake; hand-written schema files specifying scale above 9.","solutions":["Set the source timestamptz scale to <= 9.","Pre-create the Snowflake table with TIMESTAMP_TZ(9) and cast values upstream.","Accept the warning if nanosecond precision is enough.","Preserve full precision by mapping the column as STRING."],"exampleFix":"// before\nnew Column with sqlType=TIMESTAMP_TZ, scale=12\n// after\nnew Column with sqlType=TIMESTAMP_TZ, scale=9","handlingStrategy":"validation","validationCode":"if (column.getScale() != null && column.getScale() > 9) {\n    log.warn(\"TIMESTAMP_TZ column {} scale {} will be truncated to 9 for Snowflake\",\n        column.getName(), column.getScale());\n}","typeGuard":"boolean fitsSnowflakeTzScale(Column c) {\n    return c.getScale() == null || c.getScale() <= 9;\n}","tryCatchPattern":null,"preventionTips":["Keep timestamptz scale <= 9 at the source","Cast to timestamp(9) upstream if finer precision exists","Preserve verbatim values as STRING when precision loss is unacceptable"],"tags":["jdbc","snowflake","timestamp-scale","timezone","type-conversion"],"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"}