Testing: Update postgres sequences (#9304)
This commit is contained in:
parent
2d8a89563d
commit
d3a9c4ceec
1 changed files with 32 additions and 0 deletions
|
@ -35,5 +35,37 @@ func LoadFixtures() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("LoadFixtures failed after retries: %v\n", err)
|
fmt.Printf("LoadFixtures failed after retries: %v\n", err)
|
||||||
}
|
}
|
||||||
|
// Now if we're running postgres we need to tell it to update the sequences
|
||||||
|
if x.Dialect().DriverName() == "postgres" {
|
||||||
|
results, err := x.QueryString(`SELECT 'SELECT SETVAL(' ||
|
||||||
|
quote_literal(quote_ident(PGT.schemaname) || '.' || quote_ident(S.relname)) ||
|
||||||
|
', COALESCE(MAX(' ||quote_ident(C.attname)|| '), 1) ) FROM ' ||
|
||||||
|
quote_ident(PGT.schemaname)|| '.'||quote_ident(T.relname)|| ';'
|
||||||
|
FROM pg_class AS S,
|
||||||
|
pg_depend AS D,
|
||||||
|
pg_class AS T,
|
||||||
|
pg_attribute AS C,
|
||||||
|
pg_tables AS PGT
|
||||||
|
WHERE S.relkind = 'S'
|
||||||
|
AND S.oid = D.objid
|
||||||
|
AND D.refobjid = T.oid
|
||||||
|
AND D.refobjid = C.attrelid
|
||||||
|
AND D.refobjsubid = C.attnum
|
||||||
|
AND T.relname = PGT.tablename
|
||||||
|
ORDER BY S.relname;`)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Failed to generate sequence update: %v\n", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, r := range results {
|
||||||
|
for _, value := range r {
|
||||||
|
_, err = x.Exec(value)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Failed to update sequence: %s Error: %v\n", value, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue