122 lines
3.0 KiB
Go
122 lines
3.0 KiB
Go
package pgdump
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
postgresReservedNames = map[string]struct{}{
|
|
"ALL": {},
|
|
"ANALYSE": {},
|
|
"ANALYZE": {},
|
|
"AND": {},
|
|
"ANY": {},
|
|
"ARRAY": {},
|
|
"AS": {},
|
|
"ASC": {},
|
|
"ASYMMETRIC": {},
|
|
"AUTHORIZATION": {},
|
|
"BINARY": {},
|
|
"BOTH": {},
|
|
"CASE": {},
|
|
"CAST": {},
|
|
"CHECK": {},
|
|
"COLLATE": {},
|
|
"COLLATION": {},
|
|
"COLUMN": {},
|
|
"CONCURRENTLY": {},
|
|
"CONSTRAINT": {},
|
|
"CREATE": {},
|
|
"CROSS": {},
|
|
"CURRENT_CATALOG": {},
|
|
"CURRENT_DATE": {},
|
|
"CURRENT_ROLE": {},
|
|
"CURRENT_SCHEMA": {},
|
|
"CURRENT_TIME": {},
|
|
"CURRENT_TIMESTAMP": {},
|
|
"CURRENT_USER": {},
|
|
"DEFAULT": {},
|
|
"DEFERRABLE": {},
|
|
"DESC": {},
|
|
"DISTINCT": {},
|
|
"DO": {},
|
|
"ELSE": {},
|
|
"END": {},
|
|
"EXCEPT": {},
|
|
"FALSE": {},
|
|
"FETCH": {},
|
|
"FOR": {},
|
|
"FOREIGN": {},
|
|
"FREEZE": {},
|
|
"FROM": {},
|
|
"FULL": {},
|
|
"GRANT": {},
|
|
"GROUP": {},
|
|
"HAVING": {},
|
|
"ILIKE": {},
|
|
"IN": {},
|
|
"INITIALLY": {},
|
|
"INNER": {},
|
|
"INTERSECT": {},
|
|
"INTO": {},
|
|
"IS": {},
|
|
"ISNULL": {},
|
|
"JOIN": {},
|
|
"LATERAL": {},
|
|
"LEADING": {},
|
|
"LEFT": {},
|
|
"LIKE": {},
|
|
"LIMIT": {},
|
|
"LOCALTIME": {},
|
|
"LOCALTIMESTAMP": {},
|
|
"NATURAL": {},
|
|
"NOT": {},
|
|
"NOTNULL": {},
|
|
"NULL": {},
|
|
"OFFSET": {},
|
|
"ON": {},
|
|
"ONLY": {},
|
|
"OR": {},
|
|
"ORDER": {},
|
|
"OUTER": {},
|
|
"OVERLAPS": {},
|
|
"PLACING": {},
|
|
"PRIMARY": {},
|
|
"REFERENCES": {},
|
|
"RETURNING": {},
|
|
"RIGHT": {},
|
|
"SELECT": {},
|
|
"SESSION_USER": {},
|
|
"SIMILAR": {},
|
|
"SOME": {},
|
|
"SYMMETRIC": {},
|
|
"TABLE": {},
|
|
"TABLESAMPLE": {},
|
|
"THEN": {},
|
|
"TO": {},
|
|
"TRAILING": {},
|
|
"TRUE": {},
|
|
"UNION": {},
|
|
"UNIQUE": {},
|
|
"USER": {},
|
|
"USING": {},
|
|
"VARIADIC": {},
|
|
"VERBOSE": {},
|
|
"WHEN": {},
|
|
"WHERE": {},
|
|
"WINDOW": {},
|
|
"WITH": {},
|
|
}
|
|
)
|
|
|
|
func escapeReservedName(name string) string {
|
|
normalizedName := strings.ToUpper(name)
|
|
|
|
if _, isReserved := postgresReservedNames[normalizedName]; isReserved {
|
|
return fmt.Sprintf("\"%s\"", name)
|
|
}
|
|
|
|
return name
|
|
}
|