mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 17:15:56 +00:00
update notnull field on imports
This commit is contained in:
parent
60e83fc6db
commit
4c67cb18ed
1 changed files with 23 additions and 0 deletions
23
api.go
23
api.go
|
|
@ -686,6 +686,12 @@ func (api *API) Import(_ context.Context, req *ImportRequest) error {
|
|||
timestamps[i] = &t
|
||||
}
|
||||
|
||||
// Import columnIDs into notnull field.
|
||||
if err := importNotNullColumns(index, req.ColumnIDs); err != nil {
|
||||
api.server.logger.Printf("import notnull error: index=%s, field=%s, shard=%d, columns=%d, err=%s", req.Index, req.Field, req.Shard, len(req.ColumnIDs), err)
|
||||
return errors.Wrap(err, "importing notnull columns")
|
||||
}
|
||||
|
||||
// Import into fragment.
|
||||
err = field.Import(req.RowIDs, req.ColumnIDs, timestamps)
|
||||
if err != nil {
|
||||
|
|
@ -720,6 +726,12 @@ func (api *API) ImportValue(_ context.Context, req *ImportValueRequest) error {
|
|||
}
|
||||
}
|
||||
|
||||
// Import columnIDs into notnull field.
|
||||
if err := importNotNullColumns(index, req.ColumnIDs); err != nil {
|
||||
api.server.logger.Printf("import notnull error: index=%s, field=%s, shard=%d, columns=%d, err=%s", req.Index, req.Field, req.Shard, len(req.ColumnIDs), err)
|
||||
return errors.Wrap(err, "importing notnull columns")
|
||||
}
|
||||
|
||||
// Import into fragment.
|
||||
err = field.importValue(req.ColumnIDs, req.Values)
|
||||
if err != nil {
|
||||
|
|
@ -728,6 +740,17 @@ func (api *API) ImportValue(_ context.Context, req *ImportValueRequest) error {
|
|||
return errors.Wrap(err, "importing")
|
||||
}
|
||||
|
||||
func importNotNullColumns(index *Index, columnIDs []uint64) error {
|
||||
nnf := index.unprotectedNotNullField()
|
||||
if nnf == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
notNullRowIDs := make([]uint64, len(columnIDs))
|
||||
notNullTimestamps := make([]*time.Time, len(columnIDs))
|
||||
return nnf.Import(notNullRowIDs, columnIDs, notNullTimestamps)
|
||||
}
|
||||
|
||||
// MaxShards returns the maximum shard number for each index in a map.
|
||||
func (api *API) MaxShards(_ context.Context) map[string]uint64 {
|
||||
m := make(map[string]uint64)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue