Do not clear existence column (#117)

This commit is contained in:
Kuba Podgórski 2020-02-13 07:08:45 +01:00 • committed by GitHub
parent 4713ccd0c8
commit 59f5d4f7d6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 7 deletions

View file

@ -2679,13 +2679,6 @@ func (e *executor) executeClearBit(ctx context.Context, index string, c *pql.Cal
return false, ErrFieldNotFound
}
// Clear column on existence field
if ef := idx.existenceField(); ef != nil {
if _, err := ef.ClearBit(0, colID); err != nil {
return false, errors.Wrap(err, "clearing existence column")
}
}
// Int field.
if f.Type() == FieldTypeInt || f.Type() == FieldTypeDecimal {
return e.executeClearValueField(ctx, index, c, f, colID, opt)

View file

@ -692,6 +692,48 @@ func TestExecutor_Execute_Clear(t *testing.T) {
t.Fatalf("expected column changed")
}
})
t.Run("RowKeyColumnKey_NotClearNot", func(t *testing.T) {
writeQuery := `Set("056009039|q2db_3385|11", f="all_users")`
readQueries := []string{
`Not(Row(f="has_deleted_date"))`,
`Clear("056009039|q2db_3385|11", f="has_deleted_date")`,
`Not(Row(f="has_deleted_date")) `,
}
results := []interface{}{
"056009039|q2db_3385|11",
false,
"056009039|q2db_3385|11",
}
responses := runCallTest(t, writeQuery, readQueries, &pilosa.IndexOptions{
Keys: true,
TrackExistence: true,
}, pilosa.OptFieldKeys())
for i, resp := range responses {
if len(resp.Results) != 1 {
t.Fatalf("response %d: len(results) expected: 1, got: %d", i, len(resp.Results))
}
switch r := resp.Results[0].(type) {
case bool:
if results[i] != r {
t.Fatalf("response %d: expected: %v, got: %v", i, results[i], r)
}
case *pilosa.Row:
if len(r.Keys) != 1 {
t.Fatalf("response %d: len(keys) expected: 1, got: %d", i, len(r.Keys))
}
if results[i] != r.Keys[0] {
t.Fatalf("response %d: expected: %v, got: %v", i, results[i], r.Keys[0])
}
default:
t.Fatalf("response %d: expected: %T, got: %T", i, results[i], r)
}
}
})
}
// Ensure a set query can be executed on a bool field.