From 6746f1f0c41e7fa5d74063de49fb3057e29fb987 Mon Sep 17 00:00:00 2001 From: ChangRui-Ryan Date: Fri, 15 Aug 2025 15:02:06 +0800 Subject: [PATCH 1/4] tiflash: MySQL compatibility about decimal insert through jdbc --- develop/dev-guide-sample-application-java-jdbc.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/develop/dev-guide-sample-application-java-jdbc.md b/develop/dev-guide-sample-application-java-jdbc.md index 31e6d04777e7..acc76a26c96d 100644 --- a/develop/dev-guide-sample-application-java-jdbc.md +++ b/develop/dev-guide-sample-application-java-jdbc.md @@ -280,6 +280,10 @@ Java 驱动程序提供对数据库的底层访问,但要求开发者: - 减少管理连接和事务的[模板代码](https://en.wikipedia.org/wiki/Boilerplate_code) - 使用数据对象代替大量 SQL 语句来操作数据 +### MySQL 兼容性 + +当写入decimal类型的数据时,如果小数位数超过字段定义的小数位数,无论超过多少,MySQL都会truncate并插入成功。在TiDB的v8.1.2及之前版本中,如果小数位数超过字段定义的小数位数但未超过72位,同样会truncate并插入成功;而如果小数位数超过72位,写入会失败并报错。在TiDB的v8.1.3及之后版本中,则和MySQL一样,无论小数位数超过多少,都会truncate并插入成功。 + ## 下一步 - 关于 MySQL Connector/J 的更多使用方法,可以参考 [MySQL Connector/J 官方文档](https://dev.mysql.com/doc/connector-j/en/)。 From de5d378a7274067422f9a52c4a9306c720e63395 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Wed, 27 Aug 2025 22:04:12 +0800 Subject: [PATCH 2/4] Update develop/dev-guide-sample-application-java-jdbc.md --- develop/dev-guide-sample-application-java-jdbc.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/develop/dev-guide-sample-application-java-jdbc.md b/develop/dev-guide-sample-application-java-jdbc.md index acc76a26c96d..38606c617af2 100644 --- a/develop/dev-guide-sample-application-java-jdbc.md +++ b/develop/dev-guide-sample-application-java-jdbc.md @@ -282,7 +282,11 @@ Java 驱动程序提供对数据库的底层访问,但要求开发者: ### MySQL 兼容性 -当写入decimal类型的数据时,如果小数位数超过字段定义的小数位数,无论超过多少,MySQL都会truncate并插入成功。在TiDB的v8.1.2及之前版本中,如果小数位数超过字段定义的小数位数但未超过72位,同样会truncate并插入成功;而如果小数位数超过72位,写入会失败并报错。在TiDB的v8.1.3及之后版本中,则和MySQL一样,无论小数位数超过多少,都会truncate并插入成功。 +当写入 DECIMAL 类型的数据时,如果小数位数超过字段定义的小数位数,无论超过多少,MySQL 都会执行 `TRUNCATE` 并插入成功。 + +在 TiDB v8.1.2 及之前版本中,如果小数位数超过字段定义的小数位数但未超过 72 位,同样会执行 `TRUNCATE` 并插入成功;而如果小数位数超过 72 位,写入会失败并报错 + +从 TiDB v8.1.3 开始,TiDB 的行为和 MySQL 抱持一致,即无论小数位数超过多少,都会执行 `TRUNCATE` 并插入成功。 ## 下一步 From 6d95a624ef1ce608114a6007c84ec158aae65065 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 28 Aug 2025 08:57:58 +0800 Subject: [PATCH 3/4] Apply suggestions from code review --- develop/dev-guide-sample-application-java-jdbc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/develop/dev-guide-sample-application-java-jdbc.md b/develop/dev-guide-sample-application-java-jdbc.md index 38606c617af2..0e22db3f887c 100644 --- a/develop/dev-guide-sample-application-java-jdbc.md +++ b/develop/dev-guide-sample-application-java-jdbc.md @@ -284,9 +284,9 @@ Java 驱动程序提供对数据库的底层访问,但要求开发者: 当写入 DECIMAL 类型的数据时,如果小数位数超过字段定义的小数位数,无论超过多少,MySQL 都会执行 `TRUNCATE` 并插入成功。 -在 TiDB v8.1.2 及之前版本中,如果小数位数超过字段定义的小数位数但未超过 72 位,同样会执行 `TRUNCATE` 并插入成功;而如果小数位数超过 72 位,写入会失败并报错 +在 TiDB v8.1.2 及之前版本中,如果小数位数超过字段定义的小数位数但未超过 72 位,同样会执行 `TRUNCATE` 并插入成功。而如果小数位数超过 72 位,写入会失败并报错。 -从 TiDB v8.1.3 开始,TiDB 的行为和 MySQL 抱持一致,即无论小数位数超过多少,都会执行 `TRUNCATE` 并插入成功。 +从 TiDB v8.1.3 开始,TiDB 的行为和 MySQL 保持一致,即无论小数位数超过多少,都会执行 `TRUNCATE` 并插入成功。 ## 下一步 From 6a827e444b41c0dab2a81837f7fd7db8213aceb8 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 29 Aug 2025 09:09:53 +0800 Subject: [PATCH 4/4] Update develop/dev-guide-sample-application-java-jdbc.md --- develop/dev-guide-sample-application-java-jdbc.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/develop/dev-guide-sample-application-java-jdbc.md b/develop/dev-guide-sample-application-java-jdbc.md index 0e22db3f887c..735134271df9 100644 --- a/develop/dev-guide-sample-application-java-jdbc.md +++ b/develop/dev-guide-sample-application-java-jdbc.md @@ -284,7 +284,10 @@ Java 驱动程序提供对数据库的底层访问,但要求开发者: 当写入 DECIMAL 类型的数据时,如果小数位数超过字段定义的小数位数,无论超过多少,MySQL 都会执行 `TRUNCATE` 并插入成功。 -在 TiDB v8.1.2 及之前版本中,如果小数位数超过字段定义的小数位数但未超过 72 位,同样会执行 `TRUNCATE` 并插入成功。而如果小数位数超过 72 位,写入会失败并报错。 +在 TiDB v8.1.2 及之前版本中: + +- 如果小数位数超过字段定义的小数位数但未超过 72 位,同样会执行 `TRUNCATE` 并插入成功。 +- 如果小数位数超过 72 位,写入会失败并报错。 从 TiDB v8.1.3 开始,TiDB 的行为和 MySQL 保持一致,即无论小数位数超过多少,都会执行 `TRUNCATE` 并插入成功。