(extensions map[string]string)
| 1624 | } |
| 1625 | |
| 1626 | func (c *Cluster) syncExtensions(extensions map[string]string) error { |
| 1627 | c.setProcessName("syncing database extensions") |
| 1628 | errors := make([]string, 0) |
| 1629 | createExtensions := make(map[string]string) |
| 1630 | alterExtensions := make(map[string]string) |
| 1631 | |
| 1632 | currentExtensions, err := c.getExtensions() |
| 1633 | if err != nil { |
| 1634 | return fmt.Errorf("could not get current database extensions: %v", err) |
| 1635 | } |
| 1636 | |
| 1637 | for extName, newSchema := range extensions { |
| 1638 | currentSchema, exists := currentExtensions[extName] |
| 1639 | if !exists { |
| 1640 | createExtensions[extName] = newSchema |
| 1641 | } else if currentSchema != newSchema { |
| 1642 | alterExtensions[extName] = newSchema |
| 1643 | } |
| 1644 | } |
| 1645 | |
| 1646 | for extName, schema := range createExtensions { |
| 1647 | if err = c.executeCreateExtension(extName, schema); err != nil { |
| 1648 | errors = append(errors, err.Error()) |
| 1649 | } |
| 1650 | } |
| 1651 | for extName, schema := range alterExtensions { |
| 1652 | if err = c.executeAlterExtension(extName, schema); err != nil { |
| 1653 | errors = append(errors, err.Error()) |
| 1654 | } |
| 1655 | } |
| 1656 | |
| 1657 | if len(errors) > 0 { |
| 1658 | return fmt.Errorf("error(s) while syncing database extensions: %v", strings.Join(errors, `', '`)) |
| 1659 | } |
| 1660 | |
| 1661 | return nil |
| 1662 | } |
| 1663 | |
| 1664 | func (c *Cluster) syncLogicalBackupJob() error { |
| 1665 | var ( |
no test coverage detected