Skip to content
This repository was archived by the owner on Sep 7, 2021. It is now read-only.
This repository is currently being migrated. It's locked while the migration is in progress.

Commit 21cac06

Browse files
committed
add set quote policies methods for engine
1 parent 5540f30 commit 21cac06

16 files changed

+158
-197
lines changed

.drone.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ steps:
4848
- go get -u github.com/wadey/gocovmerge
4949
- "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
5050
- "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
51+
- "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -col_quote=reserved -coverprofile=coverage1-3.txt -covermode=atomic"
52+
- "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -col_quote=reserved -cache=true -coverprofile=coverage1-4.txt -covermode=atomic"
5153
when:
5254
event:
5355
- push
@@ -59,6 +61,8 @@ steps:
5961
commands:
6062
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
6163
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
64+
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -col_quote=reserved -coverprofile=coverage2-3.txt -covermode=atomic"
65+
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -col_quote=reserved -cache=true -coverprofile=coverage2-4.txt -covermode=atomic"
6266
when:
6367
event:
6468
- push
@@ -70,6 +74,8 @@ steps:
7074
commands:
7175
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
7276
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
77+
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -col_quote=reserved -coverprofile=coverage2.1-3.txt -covermode=atomic"
78+
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -col_quote=reserved -cache=true -coverprofile=coverage2.1-4.txt -covermode=atomic"
7379
when:
7480
event:
7581
- push
@@ -81,6 +87,8 @@ steps:
8187
commands:
8288
- "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
8389
- "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
90+
- "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -col_quote=reserved -coverprofile=coverage3-3.txt -covermode=atomic"
91+
- "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -col_quote=reserved -cache=true -coverprofile=coverage3-4.txt -covermode=atomic"
8492
when:
8593
event:
8694
- push
@@ -92,6 +100,8 @@ steps:
92100
commands:
93101
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
94102
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
103+
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -col_quote=reserved -coverprofile=coverage4-3.txt -covermode=atomic"
104+
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -col_quote=reserved -cache=true -coverprofile=coverage4-4.txt -covermode=atomic"
95105
when:
96106
event:
97107
- push
@@ -103,6 +113,8 @@ steps:
103113
commands:
104114
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
105115
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
116+
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -col_quote=reserved -schema=xorm -coverprofile=coverage5-3.txt -covermode=atomic"
117+
- "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -col_quote=reserved -schema=xorm -cache=true -coverprofile=coverage5-4.txt -covermode=atomic"
106118
when:
107119
event:
108120
- push
@@ -114,6 +126,8 @@ steps:
114126
commands:
115127
- "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic"
116128
- "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic"
129+
- "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -col_quote=reserved -coverprofile=coverage6-3.txt -covermode=atomic"
130+
- "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -col_quote=reserved -cache=true -coverprofile=coverage6-4.txt -covermode=atomic"
117131
when:
118132
event:
119133
- push
@@ -125,7 +139,17 @@ steps:
125139
commands:
126140
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic"
127141
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic"
128-
- gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt
142+
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -col_quote=reserved -ignore_select_update=true -coverprofile=coverage7-3.txt -covermode=atomic"
143+
- "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -col_quote=reserved -ignore_select_update=true -cache=true -coverprofile=coverage7-4.txt -covermode=atomic"
144+
- >
145+
gocovmerge coverage1-1.txt coverage1-2.txt coverage1-3.txt coverage1-4.txt
146+
coverage2-1.txt coverage2-2.txt coverage2-3.txt coverage2-4.txt
147+
coverage2.1-1.txt coverage2.1-2.txt coverage2.1-3.txt coverage2.1-4.txt
148+
coverage3-1.txt coverage3-2.txt coverage3-3.txt coverage3-4.txt
149+
coverage4-1.txt coverage4-2.txt coverage4-3.txt coverage4-4.txt
150+
coverage5-1.txt coverage5-2.txt coverage5-3.txt coverage5-4.txt
151+
coverage6-1.txt coverage6-2.txt coverage6-3.txt coverage6-4.txt
152+
coverage7-1.txt coverage7-2.txt coverage7-3.txt coverage7-4.txt > coverage.txt
129153
when:
130154
event:
131155
- push

dialect_mssql.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ func (db *mssql) ForUpdateSql(query string) string {
533533
}
534534

535535
func (db *mssql) Filters() []core.Filter {
536-
return []core.Filter{&core.IdFilter{}, &core.QuoteFilter{}}
536+
return []core.Filter{&core.QuoteFilter{}}
537537
}
538538

539539
type odbcDriver struct {

dialect_mysql.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ func (db *mysql) CreateTableSql(table *core.Table, tableName, storeEngine, chars
560560
}
561561

562562
func (db *mysql) Filters() []core.Filter {
563-
return []core.Filter{&core.IdFilter{}}
563+
return []core.Filter{}
564564
}
565565

566566
type mymysqlDriver struct {

dialect_oracle.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,7 @@ func (db *oracle) GetIndexes(tableName string) (map[string]*core.Index, error) {
847847
}
848848

849849
func (db *oracle) Filters() []core.Filter {
850-
return []core.Filter{&core.QuoteFilter{}, &core.SeqFilter{Prefix: ":", Start: 1}, &core.IdFilter{}}
850+
return []core.Filter{&core.QuoteFilter{}, &core.SeqFilter{Prefix: ":", Start: 1}}
851851
}
852852

853853
type goracleDriver struct {

dialect_postgres.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1160,7 +1160,7 @@ func (db *postgres) GetIndexes(tableName string) (map[string]*core.Index, error)
11601160
}
11611161

11621162
func (db *postgres) Filters() []core.Filter {
1163-
return []core.Filter{&core.IdFilter{}, &core.QuoteFilter{}, &core.SeqFilter{Prefix: "$", Start: 1}}
1163+
return []core.Filter{&core.QuoteFilter{}, &core.SeqFilter{Prefix: "$", Start: 1}}
11641164
}
11651165

11661166
type pqDriver struct {

dialect_sqlite3.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ func (db *sqlite3) GetIndexes(tableName string) (map[string]*core.Index, error)
477477
}
478478

479479
func (db *sqlite3) Filters() []core.Filter {
480-
return []core.Filter{&core.IdFilter{}}
480+
return []core.Filter{}
481481
}
482482

483483
type sqlite3Driver struct {

engine_quote.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ type QuotePolicy int
1717

1818
// All QuotePolicies
1919
const (
20-
QuoteAddAlways QuotePolicy = iota
21-
QuoteNoAdd
22-
QuoteAddReserved
20+
QuotePolicyAlways QuotePolicy = iota
21+
QuotePolicyNone
22+
QuotePolicyReserved
2323
)
2424

2525
// Quoter represents an object has Quote method
@@ -56,7 +56,7 @@ func (q *quoter) IsReserved(value string) bool {
5656
}
5757

5858
func (q *quoter) needQuote(value string) bool {
59-
return q.quotePolicy == QuoteAddAlways || (q.quotePolicy == QuoteAddReserved && q.IsReserved(value))
59+
return q.quotePolicy == QuotePolicyAlways || (q.quotePolicy == QuotePolicyReserved && q.IsReserved(value))
6060
}
6161

6262
func (q *quoter) WriteTo(w *builder.BytesWriter, name string) error {
@@ -134,8 +134,8 @@ func (engine *Engine) SetColumnQuotePolicy(policy QuotePolicy) {
134134
// quoteTo quotes string and writes into the buffer
135135
func quoteTo(quoter Quoter, buf *strings.Builder, value string) {
136136
left, right := quoter.Quotes()
137-
if (quoter.QuotePolicy() == QuoteAddAlways) ||
138-
(quoter.QuotePolicy() == QuoteAddReserved && quoter.IsReserved(value)) {
137+
if (quoter.QuotePolicy() == QuotePolicyAlways) ||
138+
(quoter.QuotePolicy() == QuotePolicyReserved && quoter.IsReserved(value)) {
139139
realQuoteTo(left, right, buf, value)
140140
return
141141
}

engine_quote_test.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ func TestChangeQuotePolicy(t *testing.T) {
2727
Name string
2828
}
2929

30-
testEngine.SetColumnQuotePolicy(QuoteNoAdd)
30+
testEngine.SetColumnQuotePolicy(QuotePolicyNone)
31+
defer func() {
32+
testEngine.SetColumnQuotePolicy(colQuotePolicy)
33+
}()
34+
3135
assertSync(t, new(ChangeQuotePolicy))
3236

3337
var obj1 = ChangeQuotePolicy{
@@ -63,7 +67,11 @@ func TestChangeQuotePolicy2(t *testing.T) {
6367
Index int
6468
}
6569

66-
testEngine.SetColumnQuotePolicy(QuoteAddReserved)
70+
testEngine.SetColumnQuotePolicy(QuotePolicyReserved)
71+
defer func() {
72+
testEngine.SetColumnQuotePolicy(colQuotePolicy)
73+
}()
74+
6775
assertSync(t, new(ChangeQuotePolicy2))
6876

6977
var obj1 = ChangeQuotePolicy2{

session_cond_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99
"fmt"
1010
"testing"
1111

12-
"xorm.io/builder"
1312
"github.com/stretchr/testify/assert"
13+
"xorm.io/builder"
1414
)
1515

1616
func TestBuilder(t *testing.T) {
@@ -122,7 +122,8 @@ func TestIn(t *testing.T) {
122122
assert.NoError(t, err)
123123
assert.EqualValues(t, 3, cnt)
124124

125-
department := "`" + testEngine.GetColumnMapper().Obj2Table("Departname") + "`"
125+
department := testEngine.Quote(colMapper.Obj2Table("Departname"), true)
126+
idStr := testEngine.Quote(colMapper.Obj2Table("Id"), true)
126127
var usrs []Userinfo
127128
err = testEngine.Where(department+" = ?", "dev").Limit(3).Find(&usrs)
128129
assert.NoError(t, err)
@@ -137,13 +138,13 @@ func TestIn(t *testing.T) {
137138
idsStr = idsStr[:len(idsStr)-1]
138139

139140
users := make([]Userinfo, 0)
140-
err = testEngine.In("(id)", ids[0], ids[1], ids[2]).Find(&users)
141+
err = testEngine.In(idStr, ids[0], ids[1], ids[2]).Find(&users)
141142
assert.NoError(t, err)
142143
fmt.Println(users)
143144
assert.EqualValues(t, 3, len(users))
144145

145146
users = make([]Userinfo, 0)
146-
err = testEngine.In("(id)", ids).Find(&users)
147+
err = testEngine.In(idStr, ids).Find(&users)
147148
assert.NoError(t, err)
148149
fmt.Println(users)
149150
assert.EqualValues(t, 3, len(users))
@@ -161,7 +162,7 @@ func TestIn(t *testing.T) {
161162
idsInterface = append(idsInterface, id)
162163
}
163164

164-
err = testEngine.Where(department+" = ?", "dev").In("(id)", idsInterface...).Find(&users)
165+
err = testEngine.Where(department+" = ?", "dev").In(idStr, idsInterface...).Find(&users)
165166
assert.NoError(t, err)
166167
fmt.Println(users)
167168
assert.EqualValues(t, 3, len(users))
@@ -175,11 +176,11 @@ func TestIn(t *testing.T) {
175176

176177
dev := testEngine.GetColumnMapper().Obj2Table("Dev")
177178

178-
err = testEngine.In("(id)", 1).In("(id)", 2).In(department, dev).Find(&users)
179+
err = testEngine.In(idStr, 1).In(idStr, 2).In(department, dev).Find(&users)
179180
assert.NoError(t, err)
180181
fmt.Println(users)
181182

182-
cnt, err = testEngine.In("(id)", ids[0]).Update(&Userinfo{Departname: "dev-"})
183+
cnt, err = testEngine.In(idStr, ids[0]).Update(&Userinfo{Departname: "dev-"})
183184
assert.NoError(t, err)
184185
assert.EqualValues(t, 1, cnt)
185186

@@ -189,11 +190,11 @@ func TestIn(t *testing.T) {
189190
assert.True(t, has)
190191
assert.EqualValues(t, "dev-", user.Departname)
191192

192-
cnt, err = testEngine.In("(id)", ids[0]).Update(&Userinfo{Departname: "dev"})
193+
cnt, err = testEngine.In(idStr, ids[0]).Update(&Userinfo{Departname: "dev"})
193194
assert.NoError(t, err)
194195
assert.EqualValues(t, 1, cnt)
195196

196-
cnt, err = testEngine.In("(id)", ids[1]).Delete(&Userinfo{})
197+
cnt, err = testEngine.In(idStr, ids[1]).Delete(&Userinfo{})
197198
assert.NoError(t, err)
198199
assert.EqualValues(t, 1, cnt)
199200
}

session_find_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,13 +309,14 @@ func TestOrderSameMapper(t *testing.T) {
309309

310310
assertSync(t, new(Userinfo))
311311

312+
idStr := testEngine.Quote("id", true)
312313
users := make([]Userinfo, 0)
313-
err := testEngine.OrderBy("(id) desc").Find(&users)
314+
err := testEngine.OrderBy(idStr + " desc").Find(&users)
314315
assert.NoError(t, err)
315316
fmt.Println(users)
316317

317318
users2 := make([]Userinfo, 0)
318-
err = testEngine.Asc("(id)", "Username").Desc("Height").Find(&users2)
319+
err = testEngine.Asc(idStr, "Username").Desc("Height").Find(&users2)
319320
assert.NoError(t, err)
320321
fmt.Println(users2)
321322
}

session_insert.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,8 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
260260
quoteJoin(session.engine.colQuoter, colNames),
261261
strings.Join(colMultiPlaces, "),("))
262262
}
263+
264+
fmt.Println("====", sql)
263265
res, err := session.exec(sql, args...)
264266
if err != nil {
265267
return 0, err

0 commit comments

Comments
 (0)