This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new e32370e3102 Add update converter test (#28218)
e32370e3102 is described below
commit e32370e3102f9864dd5ae1dba3ec094e12a45332
Author: niu niu <[email protected]>
AuthorDate: Tue Aug 22 16:53:43 2023 +0800
Add update converter test (#28218)
* Add update converter test
* Change test case
---
.../src/test/resources/converter/update.xml | 40 ++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/test/it/optimizer/src/test/resources/converter/update.xml
b/test/it/optimizer/src/test/resources/converter/update.xml
index d91fdd9054b..3588c00b9de 100644
--- a/test/it/optimizer/src/test/resources/converter/update.xml
+++ b/test/it/optimizer/src/test/resources/converter/update.xml
@@ -21,4 +21,44 @@
<test-cases sql-case-id="update_without_alias" expected-sql="UPDATE
`t_order` SET `status` = ? WHERE `order_id` = ? AND `user_id` = ?"
db-types="MySQL" sql-case-types="PLACEHOLDER" />
<test-cases sql-case-id="update_without_alias" expected-sql="UPDATE
"t_order" SET "status" = 'update' WHERE
"order_id" = 1 AND "user_id" = 1" db-types="PostgreSQL,
openGauss, Oracle" sql-case-types="LITERAL" />
<test-cases sql-case-id="update_without_alias" expected-sql="UPDATE
"t_order" SET "status" = ? WHERE "order_id" = ?
AND "user_id" = ?" db-types="PostgreSQL, openGauss, Oracle"
sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_alias" expected-sql="UPDATE `t_order`
AS `o` SET `o`.`status` = 'update' WHERE `o`.`order_id` = 1 AND `o`.`user_id` =
1" db-types="MySQL" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_alias" expected-sql="UPDATE `t_order`
AS `o` SET `o`.`status` = ? WHERE `o`.`order_id` = ? AND `o`.`user_id` = ?"
db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_alias" expected-sql="UPDATE
"t_order" AS "o" SET "o"."status" =
'update' WHERE "o"."order_id" = 1 AND
"o"."user_id" = 1" db-types="openGauss"
sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_alias" expected-sql="UPDATE
"t_order" AS "o" SET "o"."status" = ?
WHERE "o"."order_id" = ? AND
"o"."user_id" = ?" db-types="openGauss"
sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_unicode_escape_alias"
expected-sql="UPDATE "t_order" AS "u" SET
"status" = 'update' WHERE "u"."order_id" = 1 AND
"u"."user_id" = 1" db-types="PostgreSQL, openGauss"
sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_unicode_escape_alias"
expected-sql="UPDATE "t_order" AS "u" SET
"status" = ? WHERE "u"."order_id" = ? AND
"u"."user_id" = ?" db-types="PostgreSQL, openGauss"
sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_without_condition" expected-sql="UPDATE
`t_order` AS `o` SET `o`.`status` = 'finished'" db-types="MySQL" />
+ <test-cases sql-case-id="update_with_extra_keywords" expected-sql="UPDATE
`t_order` SET `status` = 'update' WHERE `order_id` = 1 AND `user_id` = 1"
db-types="MySQL" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_extra_keywords" expected-sql="UPDATE
`t_order` SET `status` = ? WHERE `order_id` = ? AND `user_id` = ?"
db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_special_character"
expected-sql="UPDATE `t_order` SET `status` = 'update' WHERE `order_id` = 1 AND
`user_id` = 1" db-types="MySQL" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_special_character"
expected-sql="UPDATE `t_order` SET `status` = ? WHERE `order_id` = ? AND
`user_id` = ?" db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_without_parameters" expected-sql="UPDATE
`t_order` SET `status` = 'update' WHERE `order_id` = 1000 AND `user_id` = 10"
db-types="MySQL" />
+ <test-cases sql-case-id="update_without_parameters" expected-sql="UPDATE
"t_order" SET "status" = 'update' WHERE
"order_id" = 1000 AND "user_id" = 10" db-types="PostgreSQL,
openGauss, Oracle" />
+ <test-cases sql-case-id="update_with_or" expected-sql="UPDATE `t_order`
SET `status` = 'update' WHERE (`order_id` = 1000 OR `order_id` = 0) AND
`user_id` = 10" db-types="MySQL" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_or" expected-sql="UPDATE `t_order`
SET `status` = 'update' WHERE (`order_id` = ? OR `order_id` = ?) AND `user_id`
= ?" db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_or" expected-sql="UPDATE
"t_order" SET "status" = 'update' WHERE
("order_id" = 1000 OR "order_id" = 0) AND
"user_id" = 10" db-types="PostgreSQL, openGauss, Oracle"
sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_or" expected-sql="UPDATE
"t_order" SET "status" = 'update' WHERE
("order_id" = ? OR "order_id" = ?) AND "user_id"
= ?" db-types="PostgreSQL, openGauss, Oracle" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_set_calculation" expected-sql="UPDATE
`t_order` SET `status` = `status` - 1 WHERE `order_id` = 2 AND `user_id` = 3"
db-types="MySQL" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_set_calculation" expected-sql="UPDATE
`t_order` SET `status` = `status` - ? WHERE `order_id` = ? AND `user_id` = ?"
db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_set_calculation" expected-sql="UPDATE
"t_order" SET "status" = "status" - 1 WHERE
"order_id" = 2 AND "user_id" = 3" db-types="PostgreSQL,
openGauss, Oracle" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_set_calculation" expected-sql="UPDATE
"t_order" SET "status" = "status" - ? WHERE
"order_id" = ? AND "user_id" = ?" db-types="PostgreSQL,
openGauss, Oracle" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_where_calculation"
expected-sql="UPDATE `t_order` SET `status` = 1 WHERE `order_id` = `order_id` -
2 AND `user_id` = 3" db-types="MySQL" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_where_calculation"
expected-sql="UPDATE `t_order` SET `status` = ? WHERE `order_id` = `order_id` -
? AND `user_id` = ?" db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_where_calculation"
expected-sql="UPDATE "t_order" SET "status" = 1 WHERE
"order_id" = "order_id" - 2 AND "user_id" = 3"
db-types="PostgreSQL, openGauss, Oracle" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_where_calculation"
expected-sql="UPDATE "t_order" SET "status" = ? WHERE
"order_id" = "order_id" - ? AND "user_id" = ?"
db-types="PostgreSQL, openGauss, Oracle" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_case_when" expected-sql="UPDATE
`stock_freeze_detail` SET `row_status` = CASE WHEN `id` = 3 THEN 2 WHEN `id` =
4 THEN 2 WHEN `id` = 10 THEN 2 ELSE 'NULL' END, `update_user` = CASE WHEN `id`
= 3 THEN 'll' WHEN `id` = 4 THEN 'll' WHEN `id` = 10 THEN 'll' ELSE 'NULL' END,
`update_time` = CASE WHEN `id` = 3 THEN '2020-08-10T17:15:25.979+0800' ELSE
'NULL' END WHERE `tenant_id` = 'jd'" db-types="MySQL" sql-case-types="LITERAL"
/>
+ <test-cases sql-case-id="update_with_case_when" expected-sql="UPDATE
`stock_freeze_detail` SET `row_status` = CASE WHEN `id` = ? THEN ? WHEN `id` =
? THEN ? WHEN `id` = ? THEN ? ELSE 'NULL' END, `update_user` = CASE WHEN `id` =
? THEN ? WHEN `id` = ? THEN ? WHEN `id` = ? THEN ? ELSE 'NULL' END,
`update_time` = CASE WHEN `id` = ? THEN ? ELSE 'NULL' END WHERE `tenant_id` =
?" db-types="MySQL" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_order_by_row_count"
expected-sql="UPDATE `t_order` SET `status` = 'update' WHERE `order_id` = 1 AND
`user_id` = 1 ORDER BY `order_id` LIMIT 10" db-types="MySQL"
sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_order_by_row_count"
expected-sql="UPDATE `t_order` SET `status` = ? WHERE `order_id` = ? AND
`user_id` = ? ORDER BY `order_id` LIMIT ?" db-types="MySQL"
sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_number" expected-sql="UPDATE
"t_order" SET "order_id" = 1 WHERE "user_id" = 1"
db-types="PostgreSQL,openGauss" sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_number" expected-sql="UPDATE
"t_order" SET "order_id" = ? WHERE "user_id" = ?"
db-types="PostgreSQL,openGauss" sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_set_null" expected-sql="UPDATE
"employees" SET "commission_pct" = NULL WHERE
"job_id" = 'SH_CLERK'" db-types="Oracle" />
+ <test-cases sql-case-id="update_with_set_subquery" expected-sql="UPDATE
"employees" "a" SET "department_id" = (SELECT
"department_id" FROM "departments" WHERE
"location_id" = '2100')" db-types="Oracle" />
+ <test-cases sql-case-id="update_with_multiple_set" expected-sql="UPDATE
"employees" SET "job_id" = 'SA_MAN', "salary" =
1000, "department_id" = 120 WHERE "last_name" = 'Douglas
Grant'" db-types="Oracle" />
+ <test-cases sql-case-id="update_with_force_index" expected-sql="UPDATE
`t_order` SET `status` = 'update' WHERE `order_id` = 1" db-types="MySQL"
sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_force_index" expected-sql="UPDATE
`t_order` SET `status` = ? WHERE `order_id` = ?" db-types="MySQL"
sql-case-types="PLACEHOLDER" />
+ <test-cases sql-case-id="update_with_subquery_using_interval"
expected-sql="UPDATE "employees" "a" SET "salary"
= (SELECT "salary" FROM "employees" WHERE
"last_name" = 'Chung') WHERE "last_name" = 'Chung'"
db-types="Oracle" />
+ <test-cases sql-case-id="update_with_translate_function"
expected-sql="UPDATE "translate_tab" SET "char_col" =
TRANSLATE("nchar_col" USING 'CHAR_CS')" db-types="Oracle" />
+ <test-cases sql-case-id="update_with_dot_column_name" expected-sql="UPDATE
"employees" SET "salary" = "salary" + 10 WHERE
"employee_id" BETWEEN ASYMMETRIC 1 AND 10" db-types="Oracle"
sql-case-types="LITERAL" />
+ <test-cases sql-case-id="update_with_dot_column_name" expected-sql="UPDATE
"employees" SET "salary" = "salary" + ? WHERE
"employee_id" BETWEEN ASYMMETRIC ? AND ?" db-types="Oracle"
sql-case-types="PLACEHOLDER" />
</sql-node-converter-test-cases>