diff --git a/executor.go b/executor.go index d4a4aea38..d1fc96ac0 100644 --- a/executor.go +++ b/executor.go @@ -3954,11 +3954,7 @@ func (e *executor) translateCalls(ctx context.Context, defaultIndexName string, // Generate a list of all used keySets := make(map[string]map[string]struct{}) - writable := false for _, c := range calls { - if c.Writable() { - writable = true - } if err := e.collectCallKeySets(ctx, defaultIndexName, c, keySets); err != nil { return err } @@ -3975,14 +3971,14 @@ func (e *executor) translateCalls(ctx context.Context, defaultIndexName string, if !idx.Keys() || len(keySets) == 0 { continue } - if keyMaps[indexName], err = e.Cluster.translateIndexKeySet(ctx, indexName, keySet, writable); err != nil { + if keyMaps[indexName], err = e.Cluster.translateIndexKeySet(ctx, indexName, keySet, true); err != nil { return err } } // Translate calls. for _, c := range calls { - if err := e.translateCall(ctx, defaultIndexName, c, keyMaps, c.Writable()); err != nil { + if err := e.translateCall(ctx, defaultIndexName, c, keyMaps, true); err != nil { return err } } diff --git a/executor_test.go b/executor_test.go index c5a26a6b0..e4267d5a1 100644 --- a/executor_test.go +++ b/executor_test.go @@ -5667,6 +5667,21 @@ func TestExecutor_Execute_NoIndex(t *testing.T) { } } +func TestExecutor_Translate_NoKeys(t *testing.T) { + c := test.MustRunCluster(t, 1) + defer c.Close() + + c.CreateField(t, "i", pilosa.IndexOptions{}, "k", pilosa.OptFieldKeys()) + c.Query(t, "i", `Set(1, k="a")`) + c.Query(t, "i", `Set(2, k="b")`) + resp := c.Query(t, "i", `Count(Union(Row(k="a"), Row(k="b"), Row(k="c")))`) + if len(resp.Results) != 1 { + t.Errorf("expected one result but got %v", resp.Results) + } else if resp.Results[0] != uint64(2) { + t.Errorf("expected 2 but got %v", resp.Results[0]) + } +} + func TestExecutor_Execute_CountDistinct(t *testing.T) { data, err := ioutil.ReadFile("testdata/schema.json") if err != nil {