more sql consolidation [CI SKIP]
This commit is contained in:
@@ -238,6 +238,29 @@ func EnsureSnapshotTable(ctx context.Context, dbConn *sqlx.DB, tableName string)
|
||||
return err
|
||||
}
|
||||
|
||||
// BackfillSerialColumn sets missing values in a serial-like column for Postgres tables.
|
||||
func BackfillSerialColumn(ctx context.Context, dbConn *sqlx.DB, tableName, columnName string) error {
|
||||
if err := ValidateTableName(tableName); err != nil {
|
||||
return err
|
||||
}
|
||||
if columnName == "" {
|
||||
return fmt.Errorf("column name is empty")
|
||||
}
|
||||
query := fmt.Sprintf(
|
||||
`UPDATE %s SET "%s" = nextval(pg_get_serial_sequence('%s','%s')) WHERE "%s" IS NULL`,
|
||||
tableName, columnName, tableName, columnName, columnName,
|
||||
)
|
||||
_, err := dbConn.ExecContext(ctx, query)
|
||||
if err != nil {
|
||||
errText := strings.ToLower(err.Error())
|
||||
if strings.Contains(errText, "pg_get_serial_sequence") || strings.Contains(errText, "sequence") {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// BuildDailySummaryInsert returns the SQL to aggregate hourly snapshots into a daily summary table.
|
||||
func BuildDailySummaryInsert(tableName string, unionQuery string) (string, error) {
|
||||
if _, err := SafeTableName(tableName); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user