62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
|
package sharding
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/uole/sqlparser"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestFormat(t *testing.T) {
|
||
|
t.Log(fmt.Sprintf("%.2f%%", 0.5851888*100))
|
||
|
}
|
||
|
|
||
|
func TestSharding_Query(t *testing.T) {
|
||
|
//sql := "SELECT COUNT(*) FROM aaa"
|
||
|
sql := "SELECT uid,SUM(IF(direction='inbound',1,0)) AS inbound_times,SUM(IF(direction='inbound',IF(answer_duration>0,1,0),0)) AS inbound_answer_times,SUM(IF(direction='outbound',1,0)) AS outbound_times,SUM(IF(direction='outbound',IF(answer_duration>0,1,0),0)) AS outbound_answer_times FROM `cdr_logs` WHERE ((`domain` = 'test.cc.echo.me' OR `domain` = 'default') AND `name` <> '') AND (`create_stamp` BETWEEN 1712505600 AND 1712505608) AND `name` IN ('a','b','c') GROUP BY `uid` having uid != '' ORDER BY create_stamp DESC LIMIT 15"
|
||
|
stmt, err := sqlparser.Parse(sql)
|
||
|
if err != nil {
|
||
|
t.Error(err)
|
||
|
return
|
||
|
}
|
||
|
selectStmt, ok := stmt.(*sqlparser.Select)
|
||
|
if !ok {
|
||
|
t.Error("not select stmt")
|
||
|
return
|
||
|
}
|
||
|
buf := sqlparser.NewTrackedBuffer(nil)
|
||
|
sqlparser.NewTableIdent("test").Format(buf)
|
||
|
buf.Reset()
|
||
|
selectStmt.Format(buf)
|
||
|
t.Log("SQL")
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("SELECT")
|
||
|
selectStmt.SelectExprs.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("FROM")
|
||
|
selectStmt.From.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("WHERE")
|
||
|
selectStmt.Where.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("ORDER BY")
|
||
|
selectStmt.OrderBy.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("GROUP BY")
|
||
|
selectStmt.GroupBy.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("LIMIT")
|
||
|
selectStmt.Limit.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
t.Log("Having")
|
||
|
selectStmt.Having.Format(buf)
|
||
|
t.Log(buf.String())
|
||
|
buf.Reset()
|
||
|
}
|