From 4c67cb18edd253df205ba6e8f9f3437012d1af72 Mon Sep 17 00:00:00 2001 From: Travis Turner Date: Thu, 6 Sep 2018 22:56:53 -0500 Subject: [PATCH] update notnull field on imports --- api.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/api.go b/api.go index 9e6ee1daa..8fdb4cfa0 100644 --- a/api.go +++ b/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)