Skip to content

Commit d596c12

Browse files
author
fairking
committed
Alias issue go-rel#69
1 parent 15bdbd6 commit d596c12

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

builder/buffer.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -133,18 +133,22 @@ func (b Buffer) escape(table, value string) string {
133133

134134
var escaped_table string
135135
if table != "" {
136-
if i := strings.Index(strings.ToLower(table), " as "); i > -1 {
137-
return b.escape(table[:i], "") + " AS " + b.Quoter.ID(table[i+4:])
138-
}
139136
if b.AllowTableSchema && strings.IndexByte(table, '.') >= 0 {
140137
parts := strings.Split(table, ".")
141138
for i, part := range parts {
142139
part = strings.TrimSpace(part)
143140
parts[i] = b.Quoter.ID(part)
144141
}
145142
escaped_table = strings.Join(parts, ".")
143+
} else if i := strings.Index(strings.ToLower(table), " as "); i > -1 {
144+
escaped_table = b.escape(table[:i], "") + " AS " + b.Quoter.ID(table[i+4:])
146145
} else {
147-
escaped_table = b.Quoter.ID(strings.ReplaceAll(table, ".", "_"))
146+
parts := strings.Split(table, " ")
147+
for i, part := range parts {
148+
part = strings.TrimSpace(part)
149+
parts[i] = b.Quoter.ID(part)
150+
}
151+
escaped_table = strings.Join(parts, " ")
148152
}
149153
}
150154

builder/query_test.go

+32
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,22 @@ func TestQuery_Build(t *testing.T) {
105105
result: "SELECT `users`.* FROM `users` FOR UPDATE;",
106106
query: rel.From("users").Lock("FOR UPDATE"),
107107
},
108+
{
109+
result: "SELECT `c`.`id`,`c`.`name` FROM `contacts` `c`;",
110+
query: rel.Select("c.id", "c.name").From("contacts c"),
111+
},
112+
{
113+
result: "SELECT `c`.`id`,`c`.`name` FROM `contacts` AS `c`;",
114+
query: rel.Select("c.id", "c.name").From("contacts as c"),
115+
},
116+
{
117+
result: "SELECT `c`.`id`,`c`.`name` FROM `contacts` `c`;",
118+
query: rel.Select("c.id").Select("c.name").From("contacts c"),
119+
},
120+
{
121+
result: "SELECT `c`.`id`,`c`.`name` FROM `contacts` AS `c`;",
122+
query: rel.Select("c.id").Select("c.name").From("contacts as c"),
123+
},
108124
}
109125

110126
for _, test := range tests {
@@ -185,6 +201,22 @@ func TestQuery_Build_ordinal(t *testing.T) {
185201
result: "SELECT \"users\".* FROM \"users\" FOR UPDATE;",
186202
query: rel.From("users").Lock("FOR UPDATE"),
187203
},
204+
{
205+
result: "SELECT \"c\".\"id\",\"c\".\"name\" FROM \"contacts\" \"c\";",
206+
query: rel.Select("c.id", "c.name").From("contacts c"),
207+
},
208+
{
209+
result: "SELECT \"c\".\"id\",\"c\".\"name\" FROM \"contacts\" AS \"c\";",
210+
query: rel.Select("c.id", "c.name").From("contacts as c"),
211+
},
212+
{
213+
result: "SELECT \"c\".\"id\",\"c\".\"name\" FROM \"contacts\" \"c\";",
214+
query: rel.Select("c.id").Select("c.name").From("contacts c"),
215+
},
216+
{
217+
result: "SELECT \"c\".\"id\",\"c\".\"name\" FROM \"contacts\" AS \"c\";",
218+
query: rel.Select("c.id").Select("c.name").From("contacts as c"),
219+
},
188220
}
189221

190222
for _, test := range tests {

0 commit comments

Comments
 (0)