// DeleteMeasurement removes a measurement and all associated series from a database. func (s *Store) DeleteMeasurement(database, name string) error { s.mu.Lock() defer s.mu.Unlock() // Find the database. db := s.databaseIndexes[database] if db == nil { return nil } // Find the measurement. m := db.Measurement(name) if m == nil { return influxql.ErrMeasurementNotFound(name) } // Remove measurement from index. db.DropMeasurement(m.Name) // Remove underlying data. for _, sh := range s.shards { if sh.database != database { continue } if err := sh.DeleteMeasurement(m.Name, m.SeriesKeys()); err != nil { return err } } return nil }
// DeleteMeasurement removes a measurement and all associated series from a database. func (s *Store) DeleteMeasurement(database, name string) error { // Find the database. s.mu.RLock() db := s.databaseIndexes[database] s.mu.RUnlock() if db == nil { return nil } // Find the measurement. m := db.Measurement(name) if m == nil { return influxql.ErrMeasurementNotFound(name) } seriesKeys := m.SeriesKeys() s.mu.RLock() shards := s.filterShards(func(sh *Shard) bool { return sh.database == database }) s.mu.RUnlock() if err := s.walkShards(shards, func(sh *Shard) error { if err := sh.DeleteMeasurement(m.Name, seriesKeys); err != nil { return err } return nil }); err != nil { return err } // Remove measurement from index. db.DropMeasurement(m.Name) return nil }