| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package vrtxsql
- import "testing"
- // 列名与聚合函数同名 (count) — 关键字冲突回归。
- func TestCountColumnName(t *testing.T) {
- db := openTestDB(t)
- if _, err := db.Exec("CREATE TABLE t (id BIGINT PRIMARY KEY, `count` BIGINT, last_seen BIGINT)"); err != nil {
- t.Fatal(err)
- }
- if _, err := db.Exec("INSERT INTO t (id, count, last_seen) VALUES (1, 5, 100), (2, 9, 200), (3, 7, 300)"); err != nil {
- t.Fatal(err)
- }
- // ORDER BY count (GORM 实触发形态: SELECT * ... ORDER BY count DESC, last_seen DESC)
- rows2, err := db.Query("SELECT id FROM t ORDER BY count DESC, last_seen DESC LIMIT 100")
- if err != nil {
- t.Fatalf("ORDER BY count: %v", err)
- }
- defer rows2.Close()
- var ids []int64
- for rows2.Next() {
- var id int64
- if err := rows2.Scan(&id); err != nil {
- t.Fatal(err)
- }
- ids = append(ids, id)
- }
- if len(ids) != 3 || ids[0] != 2 || ids[1] != 3 || ids[2] != 1 {
- t.Fatalf("排序结果 %v", ids)
- }
- // WHERE 里用 count
- var n int64
- if err := db.QueryRow("SELECT COUNT(*) FROM t WHERE count > 6").Scan(&n); err != nil {
- t.Fatalf("WHERE count: %v", err)
- }
- if n != 2 {
- t.Fatalf("count>6 应 2 行, 实际 %d", n)
- }
- // 聚合 COUNT(*) 不受影响
- if err := db.QueryRow("SELECT COUNT(*) FROM t").Scan(&n); err != nil || n != 3 {
- t.Fatalf("COUNT(*) 异常: %v %d", err, n)
- }
- // UPDATE/DELETE 用 count 列
- if _, err := db.Exec("UPDATE t SET count = 99 WHERE id = 1"); err != nil {
- t.Fatalf("UPDATE count: %v", err)
- }
- if _, err := db.Exec("DELETE FROM t WHERE count = 7"); err != nil {
- t.Fatalf("DELETE count: %v", err)
- }
- }
|