Files
mayfly-go/server/internal/db/dbm/sqlparser/mysql/mysql_test.go

123 lines
2.5 KiB
Go

package mysql
import (
"mayfly-go/internal/db/dbm/sqlparser/sqlstmt"
"testing"
)
func TestParserSimpleSelect(t *testing.T) {
parser := new(MysqlParser)
// sql := "select sum(t.age), t.`id` tid, t1.id2, t1.* from T_DB t left join t_db_ins as t1 on t.id = t1.id2 where t.id = 1 AND t1.status=0 and t.id2='9' and t.name in ('name2', 'name3') order by t.id desc limit 0, 100"
sql := "SELECT t.* FROM `t_sys_resource` t WHERE t.`id` > 0"
stmts, err := parser.Parse(sql)
if err != nil {
t.Fatal(err)
}
t.Log(stmts)
}
func TestParserUnionSelect(t *testing.T) {
parser := new(MysqlParser)
sql := "(select sum(t.age), t.id tid, t1.id2, t1.* from T_DB t join t_db_ins as t1 on t.id = t1.id2 where t.id = 1 AND t1.status=0 and t.id2='9' and t.name in ('name2', 'name3') order by t.id desc limit 0, 100) union all (select * from t_db2) limit 10"
stmts, err := parser.Parse(sql)
if err != nil {
t.Fatal(err)
}
t.Log(stmts)
}
func TestParserSingleUpdate(t *testing.T) {
parser := new(MysqlParser)
sql := `UPDATE t_sys_msg t
SET
t.recipient_id = 13,
t.creator = 'admin4'
WHERE
t.id = 1;`
stmts, err := parser.Parse(sql)
if err != nil {
t.Fatal(err)
}
t.Log(stmts)
}
func TestParserInsert(t *testing.T) {
parser := new(MysqlParser)
sql := `INSERT INTO
mayfly_go.t_sys_msg (
type,
msg,
recipient_id,
creator_id,
create_time,
is_deleted
)
VALUES
(1, 'hahaha', 2, 1, '2024-08-26 15:36:27', 0);`
stmts, err := parser.Parse(sql)
if err != nil {
t.Fatal(err)
}
t.Log(stmts)
}
func TestParserSql(t *testing.T) {
parser := new(MysqlParser)
// sql := `INSERT INTO
// mayfly_go.t_sys_msg (
// type,
// msg,
// recipient_id,
// creator_id,
// create_time,
// is_deleted
// )
// VALUES
// (1, 'hahaha', 2, 1, '2024-08-26 15:36:27', 0);`
sql := `UPDATE t_sys_msg
SET
recipient_id = 13,
creator = 'admin4'
WHERE
id = 1;`
stmts, err := parser.Parse(sql)
if err != nil {
t.Fatal(err)
}
switch stmt := stmts[0].(type) {
case *sqlstmt.InsertStmt:
t.Log("insert")
t.Log(stmt.TableName.Identifier.Value)
case *sqlstmt.UpdateStmt:
t.Log("update")
case *sqlstmt.DeleteStmt:
t.Log("delete")
case *sqlstmt.SelectStmt:
t.Log("select")
default:
t.Log("other")
}
t.Log(stmts)
}
func TestParserDelete(t *testing.T) {
parser := new(MysqlParser)
sql := `DELETE FROM t_sys_log
WHERE
id IN (59);`
stmts, err := parser.Parse(sql)
if err != nil {
t.Fatal(err)
}
t.Log(stmts)
}