From 764b887ccc26cb61df80a90249eab1bdf036c1c1 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Mon, 30 Mar 2026 10:54:03 -0700 Subject: [PATCH] A better cutoff for VARCHAR -> TEXT for MySQL. In this brave new world of multiple character sets, we need to be more conservative. --- src/main/java/com/samskivert/depot/impl/MySQLBuilder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/samskivert/depot/impl/MySQLBuilder.java b/src/main/java/com/samskivert/depot/impl/MySQLBuilder.java index 07d35c0..a8c2248 100644 --- a/src/main/java/com/samskivert/depot/impl/MySQLBuilder.java +++ b/src/main/java/com/samskivert/depot/impl/MySQLBuilder.java @@ -288,7 +288,9 @@ public class MySQLBuilder return "DOUBLE"; } public String getStringType (int length) { - return (length < (1 << 15)) ? "VARCHAR(" + length + ")" : "TEXT"; + // MySQL VARCHAR max is floor(65535/max_char_bytes); for utf8mb4 that's 16383. + // Use 16383 as the threshold to be safe with any character set. + return (length <= 16383) ? "VARCHAR(" + length + ")" : "TEXT"; } public String getDateType (int length) { return "DATE";