Skip to content

Commit 66e8b48

Browse files
committed
more refactoring
1 parent 61fbb0b commit 66e8b48

File tree

2 files changed

+196
-190
lines changed

2 files changed

+196
-190
lines changed

enginetest/queries/function_queries.go

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,4 +1028,200 @@ var FunctionQueryTests = []QueryTest{
10281028
Query: `SELECT SUBSTR(SUBSTRING('0123456789ABCDEF', 1, 10), -4)`,
10291029
Expected: []sql.Row{{"6789"}},
10301030
},
1031+
1032+
// Math Function Tests
1033+
{
1034+
Query: `SELECT FLOOR(15728640/1024/1030)`,
1035+
Expected: []sql.Row{
1036+
{"14"},
1037+
},
1038+
},
1039+
{
1040+
Query: `SELECT ROUND(15728640/1024/1030)`,
1041+
Expected: []sql.Row{
1042+
{"15"},
1043+
},
1044+
},
1045+
{
1046+
Query: `SELECT ROUND(15.00, 1)`,
1047+
Expected: []sql.Row{
1048+
{"15.0"},
1049+
},
1050+
},
1051+
{
1052+
Query: `SELECT round(15, 1)`,
1053+
Expected: []sql.Row{
1054+
{int8(15)},
1055+
},
1056+
},
1057+
{
1058+
Query: "SELECT POW(2,3) FROM dual",
1059+
Expected: []sql.Row{{float64(8)}},
1060+
},
1061+
1062+
// JSON Function Tests
1063+
{
1064+
Query: `SELECT JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c": 4 }','{ "a": 5, "d": 6 }')`,
1065+
Expected: []sql.Row{
1066+
{types.MustJSON(`{"a": [1, 3, 5], "b": 2, "c": 4, "d": 6}`)},
1067+
},
1068+
},
1069+
{
1070+
Query: `SELECT JSON_MERGE_PRESERVE(val1, val2)
1071+
FROM (values
1072+
row('{ "a": 1, "b": 2 }','null'),
1073+
row('{ "a": 1, "b": 2 }','"row one"'),
1074+
row('{ "a": 3, "c": 4 }','4'),
1075+
row('{ "a": 5, "d": 6 }','[true, true]'),
1076+
row('{ "a": 5, "d": 6 }','{ "a": 3, "e": 2 }'))
1077+
test (val1, val2)`,
1078+
Expected: []sql.Row{
1079+
{types.MustJSON(`[{ "a": 1, "b": 2 }, null]`)},
1080+
{types.MustJSON(`[{ "a": 1, "b": 2 }, "row one"]`)},
1081+
{types.MustJSON(`[{ "a": 3, "c": 4 }, 4]`)},
1082+
{types.MustJSON(`[{ "a": 5, "d": 6 }, true, true]`)},
1083+
{types.MustJSON(`{ "a": [5, 3], "d": 6, "e": 2}`)},
1084+
},
1085+
},
1086+
{
1087+
Query: `SELECT JSON_ARRAY()`,
1088+
Expected: []sql.Row{
1089+
{types.MustJSON(`[]`)},
1090+
},
1091+
},
1092+
{
1093+
Query: `SELECT JSON_ARRAY('{"b": 2, "a": [1, 8], "c": null}', null, 4, '[true, false]', "do")`,
1094+
Expected: []sql.Row{
1095+
{types.MustJSON(`["{\"b\": 2, \"a\": [1, 8], \"c\": null}", null, 4, "[true, false]", "do"]`)},
1096+
},
1097+
},
1098+
{
1099+
Query: `SELECT JSON_ARRAY(1, 'say, "hi"', JSON_OBJECT("abc", 22))`,
1100+
Expected: []sql.Row{
1101+
{types.MustJSON(`[1, "say, \"hi\"", {"abc": 22}]`)},
1102+
},
1103+
},
1104+
{
1105+
Query: `SELECT JSON_ARRAY(JSON_OBJECT("a", JSON_ARRAY(1,2)), JSON_OBJECT("b", 22))`,
1106+
Expected: []sql.Row{
1107+
{types.MustJSON(`[{"a": [1, 2]}, {"b": 22}]`)},
1108+
},
1109+
},
1110+
{
1111+
Query: `SELECT JSON_ARRAY(pk, c1, c2, c3) FROM jsontable`,
1112+
Expected: []sql.Row{
1113+
{types.MustJSON(`[1, "one", 1.0, {"a": 2}]`)},
1114+
{types.MustJSON(`[2, "two", 1.5, {"b": 2}]`)},
1115+
{types.MustJSON(`[3, "three", 2.0, {"c": 2}]`)},
1116+
{types.MustJSON(`[4, "four", 2.5, {"d": 2}]`)},
1117+
},
1118+
},
1119+
{
1120+
Query: `SELECT JSON_ARRAY(JSON_OBJECT("id", pk, "name", c1), c2, c3) FROM jsontable`,
1121+
Expected: []sql.Row{
1122+
{types.MustJSON(`[{"id": 1, "name": "one"}, 1.0, {"a": 2}]`)},
1123+
{types.MustJSON(`[{"id": 2, "name": "two"}, 1.5, {"b": 2}]`)},
1124+
{types.MustJSON(`[{"id": 3, "name": "three"}, 2.0, {"c": 2}]`)},
1125+
{types.MustJSON(`[{"id": 4, "name": "four"}, 2.5, {"d": 2}]`)},
1126+
},
1127+
},
1128+
{
1129+
Query: `SELECT JSON_KEYS(c3) FROM jsontable`,
1130+
Expected: []sql.Row{
1131+
{types.MustJSON(`["a"]`)},
1132+
{types.MustJSON(`["b"]`)},
1133+
{types.MustJSON(`["c"]`)},
1134+
{types.MustJSON(`["d"]`)},
1135+
},
1136+
},
1137+
{
1138+
Query: `SELECT JSON_OVERLAPS(c3, '{"a": 2, "d": 2}') FROM jsontable`,
1139+
Expected: []sql.Row{
1140+
{true},
1141+
{false},
1142+
{false},
1143+
{true},
1144+
},
1145+
},
1146+
{
1147+
Query: `SELECT JSON_MERGE(c3, '{"a": 1}') FROM jsontable`,
1148+
Expected: []sql.Row{
1149+
{types.MustJSON(`{"a": [2, 1]}`)},
1150+
{types.MustJSON(`{"a": 1, "b": 2}`)},
1151+
{types.MustJSON(`{"a": 1, "c": 2}`)},
1152+
{types.MustJSON(`{"a": 1, "d": 2}`)},
1153+
},
1154+
},
1155+
{
1156+
Query: `SELECT JSON_MERGE_PRESERVE(c3, '{"a": 1}') FROM jsontable`,
1157+
Expected: []sql.Row{
1158+
{types.MustJSON(`{"a": [2, 1]}`)},
1159+
{types.MustJSON(`{"a": 1, "b": 2}`)},
1160+
{types.MustJSON(`{"a": 1, "c": 2}`)},
1161+
{types.MustJSON(`{"a": 1, "d": 2}`)},
1162+
},
1163+
},
1164+
{
1165+
Query: `SELECT JSON_MERGE_PATCH(c3, '{"a": 1}') FROM jsontable`,
1166+
Expected: []sql.Row{
1167+
{types.MustJSON(`{"a": 1}`)},
1168+
{types.MustJSON(`{"a": 1, "b": 2}`)},
1169+
{types.MustJSON(`{"a": 1, "c": 2}`)},
1170+
{types.MustJSON(`{"a": 1, "d": 2}`)},
1171+
},
1172+
},
1173+
{
1174+
Query: `SELECT CONCAT(JSON_OBJECT('aa', JSON_OBJECT('bb', 123, 'y', 456), 'z', JSON_OBJECT('cc', 321, 'x', 654)), "")`,
1175+
Expected: []sql.Row{
1176+
{`{"z": {"x": 654, "cc": 321}, "aa": {"y": 456, "bb": 123}}`},
1177+
},
1178+
},
1179+
{
1180+
Query: `SELECT CONCAT(JSON_ARRAY(JSON_OBJECT('aa', 123, 'z', 456), JSON_OBJECT('BB', 321, 'Y', 654)), "")`,
1181+
Expected: []sql.Row{
1182+
{`[{"z": 456, "aa": 123}, {"Y": 654, "BB": 321}]`},
1183+
},
1184+
},
1185+
1186+
// Conversion Function Tests
1187+
{
1188+
Query: "SELECT CAST(-3 AS UNSIGNED) FROM mytable",
1189+
Expected: []sql.Row{
1190+
{uint64(18446744073709551613)},
1191+
{uint64(18446744073709551613)},
1192+
{uint64(18446744073709551613)},
1193+
},
1194+
},
1195+
{
1196+
Query: "SELECT CAST(-3 AS DOUBLE) FROM dual",
1197+
Expected: []sql.Row{{-3.0}},
1198+
},
1199+
{
1200+
Query: `SELECT CONVERT("-3.9876", FLOAT) FROM dual`,
1201+
Expected: []sql.Row{{float32(-3.9876)}},
1202+
},
1203+
{
1204+
Query: "SELECT CAST(10.56789 as CHAR(3));",
1205+
Expected: []sql.Row{{"10."}},
1206+
},
1207+
{
1208+
Query: "SELECT CAST(10.56789 as CHAR(30));",
1209+
Expected: []sql.Row{{"10.56789"}},
1210+
},
1211+
{
1212+
Query: "SELECT CAST('abcdef' as BINARY(10));",
1213+
Expected: []sql.Row{{[]byte("abcdef\x00\x00\x00\x00")}},
1214+
},
1215+
{
1216+
Query: `SELECT CONVERT(10.12345, DECIMAL(4,2))`,
1217+
Expected: []sql.Row{{"10.12"}},
1218+
},
1219+
{
1220+
Query: `SELECT CONVERT(1234567893.1234567893, DECIMAL(20,10))`,
1221+
Expected: []sql.Row{{"1234567893.1234567893"}},
1222+
},
1223+
{
1224+
Query: `SELECT CONVERT(10, DECIMAL(4,2))`,
1225+
Expected: []sql.Row{{"10.00"}},
1226+
},
10311227
}

0 commit comments

Comments
 (0)