mirror of https://github.com/jackc/pgx.git
parent
6954c15ad0
commit
95ea78048a
3
conn.go
3
conn.go
|
@ -307,7 +307,8 @@ type Identifier []string
|
|||
func (ident Identifier) Sanitize() string {
|
||||
parts := make([]string, len(ident))
|
||||
for i := range ident {
|
||||
parts[i] = `"` + strings.Replace(ident[i], `"`, `""`, -1) + `"`
|
||||
s := strings.Replace(ident[i], string([]byte{0}), "", -1)
|
||||
parts[i] = `"` + strings.Replace(s, `"`, `""`, -1) + `"`
|
||||
}
|
||||
return strings.Join(parts, ".")
|
||||
}
|
||||
|
|
24
conn_test.go
24
conn_test.go
|
@ -84,7 +84,6 @@ func TestConnect(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
func TestConnectWithMultiHost(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@ -129,7 +128,6 @@ func TestConnectWithMultiHost(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
func TestConnectWithMultiHostWritable(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@ -2319,6 +2317,24 @@ func TestSetLogLevel(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestIdentifierSanitizeNullSentToServer(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
conn := mustConnect(t, *defaultConnConfig)
|
||||
defer closeConn(t, conn)
|
||||
|
||||
ident := pgx.Identifier{"foo" + string([]byte{0}) + "bar"}
|
||||
|
||||
var n int64
|
||||
err := conn.QueryRow(`select 1 as ` + ident.Sanitize()).Scan(&n)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if n != 1 {
|
||||
t.Fatal("unexpected n")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIdentifierSanitize(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@ -2346,6 +2362,10 @@ func TestIdentifierSanitize(t *testing.T) {
|
|||
ident: pgx.Identifier{`you should " not do this`, `please don't`},
|
||||
expected: `"you should "" not do this"."please don't"`,
|
||||
},
|
||||
{
|
||||
ident: pgx.Identifier{`you should ` + string([]byte{0}) + `not do this`},
|
||||
expected: `"you should not do this"`,
|
||||
},
|
||||
}
|
||||
|
||||
for i, tt := range tests {
|
||||
|
|
Loading…
Reference in New Issue