[bug] Escape reserved words used as identifier.
This commit is contained in:
parent
63c1fd6430
commit
3019fdbbb2
10 changed files with 226 additions and 4 deletions
|
|
@ -24,6 +24,7 @@ func newDialect() jet.Dialect {
|
|||
ArgumentPlaceholder: func(ord int) string {
|
||||
return "$" + strconv.Itoa(ord)
|
||||
},
|
||||
ReservedWords: reservedWords,
|
||||
}
|
||||
|
||||
return jet.NewDialect(dialectParams)
|
||||
|
|
@ -105,3 +106,83 @@ func postgresNOTREGEXPLIKEoperator(expressions ...jet.Serializer) jet.Serializer
|
|||
jet.Serialize(expressions[1], statement, out, options...)
|
||||
}
|
||||
}
|
||||
|
||||
var reservedWords = []string{
|
||||
"ALL",
|
||||
"ANALYSE",
|
||||
"ANALYZE",
|
||||
"AND",
|
||||
"ANY",
|
||||
"ARRAY",
|
||||
"AS",
|
||||
"ASC",
|
||||
"ASYMMETRIC",
|
||||
"BOTH",
|
||||
"CASE",
|
||||
"CAST",
|
||||
"CHECK",
|
||||
"COLLATE",
|
||||
"COLUMN",
|
||||
"CONSTRAINT",
|
||||
"CREATE",
|
||||
"CURRENT_CATALOG",
|
||||
"CURRENT_DATE",
|
||||
"CURRENT_ROLE",
|
||||
"CURRENT_TIME",
|
||||
"CURRENT_TIMESTAMP",
|
||||
"CURRENT_USER",
|
||||
"DEFAULT",
|
||||
"DEFERRABLE",
|
||||
"DESC",
|
||||
"DISTINCT",
|
||||
"DO",
|
||||
"ELSE",
|
||||
"END",
|
||||
"EXCEPT",
|
||||
"FALSE",
|
||||
"FETCH",
|
||||
"FOR",
|
||||
"FOREIGN",
|
||||
"FROM",
|
||||
"GRANT",
|
||||
"GROUP",
|
||||
"HAVING",
|
||||
"IN",
|
||||
"INITIALLY",
|
||||
"INTERSECT",
|
||||
"INTO",
|
||||
"LATERAL",
|
||||
"LEADING",
|
||||
"LIMIT",
|
||||
"LOCALTIME",
|
||||
"LOCALTIMESTAMP",
|
||||
"NOT",
|
||||
"NULL",
|
||||
"OFFSET",
|
||||
"ON",
|
||||
"ONLY",
|
||||
"OR",
|
||||
"ORDER",
|
||||
"PLACING",
|
||||
"PRIMARY",
|
||||
"REFERENCES",
|
||||
"RETURNING",
|
||||
"SELECT",
|
||||
"SESSION_USER",
|
||||
"SOME",
|
||||
"SYMMETRIC",
|
||||
"TABLE",
|
||||
"THEN",
|
||||
"TO",
|
||||
"TRAILING",
|
||||
"TRUE",
|
||||
"UNION",
|
||||
"UNIQUE",
|
||||
"USER",
|
||||
"USING",
|
||||
"VARIADIC",
|
||||
"WHEN",
|
||||
"WHERE",
|
||||
"WINDOW",
|
||||
"WITH",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,3 +74,21 @@ func TestNOT_IN(t *testing.T) {
|
|||
FROM db.table2
|
||||
)))`, int64(12))
|
||||
}
|
||||
|
||||
func TestReservedWordEscaped(t *testing.T) {
|
||||
var table1ColUser = IntervalColumn("user")
|
||||
var table1ColVariadic = IntervalColumn("VARIADIC")
|
||||
var table1ColProcedure = IntervalColumn("procedure")
|
||||
|
||||
_ = NewTable(
|
||||
"db",
|
||||
"table1",
|
||||
table1ColUser,
|
||||
table1ColVariadic,
|
||||
table1ColProcedure,
|
||||
)
|
||||
|
||||
assertSerialize(t, table1ColUser, `table1."user"`)
|
||||
assertSerialize(t, table1ColVariadic, `table1."VARIADIC"`)
|
||||
assertSerialize(t, table1ColProcedure, `table1.procedure`)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue