{"record":{"id":"b17dbabf1dd08975","repo":"apache/seatunnel","slug":"the-timestamp-column-type-timestamp-is-out-b17dba","errorCode":null,"errorMessage":"The timestamp column {} type timestamp({}) is out of range, which exceeds the maximum scale of {}, it will be converted to timestamp({})","messagePattern":"The timestamp column (.+?) type timestamp\\((.+?)\\) is out of range, which exceeds the maximum scale of (.+?), it will be converted to timestamp\\((.+?)\\)","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":327,"sourceCode":"                builder.dataType(SNOWFLAKE_GEOMETRY);\n                break;\n            case TIME:\n                if (column.getScale() != null && column.getScale() > 9) {\n                    log.warn(\n                            \"The timestamp column {} type time({}) is out of range, \"\n                                    + \"which exceeds the maximum scale of {}, \"\n                                    + \"it will be converted to time({})\",\n                            column.getName(),\n                            column.getScale(),\n                            9,\n                            9);\n                }\n                builder.columnType(SNOWFLAKE_TIME);\n                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(),","sourceCodeStart":309,"sourceCodeEnd":345,"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#L309-L345","documentation":"When converting a TIMESTAMP (no time zone) column for Snowflake, its scale exceeds 9, the maximum Snowflake supports. SeaTunnel logs this warning and maps the column to TIMESTAMP_NTZ at scale 9, truncating any finer fractional-second precision.","triggerScenarios":"reconvert() handles a Column with sqlType TIMESTAMP and column.getScale() > 9, e.g. timestamp(12) from a source that allows more than nanosecond precision.","commonSituations":"Syncing from engines with picosecond/nanosecond+ timestamps or schema definitions that over-declare scale into Snowflake targets.","solutions":["Cap the source timestamp scale at 9.","Pre-create the Snowflake table with TIMESTAMP_NTZ(9) and round values in the pipeline.","Accept the warning if nanosecond precision suffices.","Use STRING mapping if the extra digits must be preserved verbatim."],"exampleFix":"// before\nnew Column with sqlType=TIMESTAMP, scale=12\n// after\nnew Column with sqlType=TIMESTAMP, scale=9","handlingStrategy":"validation","validationCode":"if (column.getScale() != null && column.getScale() > 9) {\n    log.warn(\"TIMESTAMP column {} scale {} will be truncated to 9 for Snowflake\",\n        column.getName(), column.getScale());\n}","typeGuard":"boolean fitsSnowflakeTimestampScale(Column c) {\n    return c.getScale() == null || c.getScale() <= 9;\n}","tryCatchPattern":null,"preventionTips":["Declare timestamps with scale <= 9","Normalize source timestamp precision before sync","Pre-create Snowflake TIMESTAMP_NTZ(9) columns for full control"],"tags":["jdbc","snowflake","timestamp-scale","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"}