make all query translations writeable

This commit is contained in:
Nia Weiss 2020-10-12 11:33:04 -04:00
parent 6fa8ead5ff
commit 420b44a79a
No known key found for this signature in database
GPG key ID: 895E83409BFDA1BB
2 changed files with 17 additions and 6 deletions

View file

@ -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
}
}

View file

@ -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 {