This commit is contained in:
Lunny Xiao 2020-03-08 14:34:43 +08:00
parent 7495ca7297
commit 2d194e4b63
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
5 changed files with 29 additions and 32 deletions

View File

@ -3,38 +3,9 @@ package dialects
import (
"testing"
"xorm.io/xorm/schemas"
"github.com/stretchr/testify/assert"
)
func TestQuoteFilter_Do(t *testing.T) {
f := QuoteFilter{schemas.Quoter{'[', ']', schemas.AlwaysReserve}}
var kases = []struct {
source string
expected string
}{
{
"SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ?",
"SELECT [COLUMN_NAME] FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_SCHEMA] = ? AND [TABLE_NAME] = ? AND [COLUMN_NAME] = ?",
},
{
"SELECT 'abc```test```''', `a` FROM b",
"SELECT 'abc```test```''', [a] FROM b",
},
{
"UPDATE table SET `a` = ~ `a`, `b`='abc`'",
"UPDATE table SET [a] = ~ [a], [b]='abc`'",
},
}
for _, kase := range kases {
t.Run(kase.source, func(t *testing.T) {
assert.EqualValues(t, kase.expected, f.Do(kase.source))
})
}
}
func TestSeqFilter(t *testing.T) {
var kases = map[string]string{
"SELECT * FROM TABLE1 WHERE a=? AND b=?": "SELECT * FROM TABLE1 WHERE a=$1 AND b=$2",

View File

@ -525,7 +525,7 @@ func (db *mssql) ForUpdateSQL(query string) string {
}
func (db *mssql) Filters() []Filter {
return []Filter{ /*&QuoteFilter{db.Quoter()}*/ }
return []Filter{}
}
type odbcDriver struct {

View File

@ -793,7 +793,6 @@ func (db *oracle) GetIndexes(ctx context.Context, tableName string) (map[string]
func (db *oracle) Filters() []Filter {
return []Filter{
/*&QuoteFilter{db.Quoter()},*/
&SeqFilter{Prefix: ":", Start: 1},
}
}

View File

@ -1231,7 +1231,7 @@ func (db *postgres) GetIndexes(ctx context.Context, tableName string) (map[strin
}
func (db *postgres) Filters() []Filter {
return []Filter{ /*&QuoteFilter{db.Quoter()}, */ &SeqFilter{Prefix: "$", Start: 1}}
return []Filter{&SeqFilter{Prefix: "$", Start: 1}}
}
type pqDriver struct {

View File

@ -146,3 +146,30 @@ func TestTrim(t *testing.T) {
assert.EqualValues(t, dst, Quoter{'[', ']', AlwaysReserve}.Trim(src))
}
}
func TestReplace(t *testing.T) {
q := Quoter{'[', ']', AlwaysReserve}
var kases = []struct {
source string
expected string
}{
{
"SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ?",
"SELECT [COLUMN_NAME] FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_SCHEMA] = ? AND [TABLE_NAME] = ? AND [COLUMN_NAME] = ?",
},
{
"SELECT 'abc```test```''', `a` FROM b",
"SELECT 'abc```test```''', [a] FROM b",
},
{
"UPDATE table SET `a` = ~ `a`, `b`='abc`'",
"UPDATE table SET [a] = ~ [a], [b]='abc`'",
},
}
for _, kase := range kases {
t.Run(kase.source, func(t *testing.T) {
assert.EqualValues(t, kase.expected, q.Replace(kase.source))
})
}
}