fix(pgsql): handle default values for array types in migrations
* update default value quoting logic for PostgreSQL * add tests for array default value handling
This commit is contained in:
54
pkg/writers/writer_test.go
Normal file
54
pkg/writers/writer_test.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package writers
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestQuoteDefaultValue(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
value string
|
||||
sqlType string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "text default is quoted",
|
||||
value: "active",
|
||||
sqlType: "text",
|
||||
want: "'active'",
|
||||
},
|
||||
{
|
||||
name: "array default from bare literal is quoted once",
|
||||
value: "{}",
|
||||
sqlType: "text[]",
|
||||
want: "'{}'",
|
||||
},
|
||||
{
|
||||
name: "array default from quoted literal is preserved",
|
||||
value: "'{}'",
|
||||
sqlType: "text[]",
|
||||
want: "'{}'",
|
||||
},
|
||||
{
|
||||
name: "array default from double quoted literal is normalized",
|
||||
value: "''{}''",
|
||||
sqlType: "text[]",
|
||||
want: "'{}'",
|
||||
},
|
||||
{
|
||||
name: "function default is left alone",
|
||||
value: "now()",
|
||||
sqlType: "timestamptz",
|
||||
want: "now()",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := QuoteDefaultValue(tt.value, tt.sqlType)
|
||||
if got != tt.want {
|
||||
t.Fatalf("QuoteDefaultValue(%q, %q) = %q, want %q", tt.value, tt.sqlType, got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user