| 86 | } |
| 87 | |
| 88 | func requireCoveredQuery(t *testing.T, database *db.Database, statement string, isCovered bool) { |
| 89 | n1QLStore, ok := base.AsN1QLStore(database.MetadataStore) |
| 90 | require.True(t, ok) |
| 91 | plan, explainErr := n1QLStore.ExplainQuery(base.TestCtx(t), statement, nil) |
| 92 | require.NoError(t, explainErr, "Error generating explain for %+v", statement) |
| 93 | |
| 94 | covered := db.IsCovered(plan) |
| 95 | planJSON, err := base.JSONMarshal(plan) |
| 96 | require.NoError(t, err) |
| 97 | require.Equal(t, isCovered, covered, "query covered by index; expectedToBeCovered: %t, Plan: %s", isCovered, planJSON) |
| 98 | } |
| 99 | |
| 100 | // setupIndexAndDB creates the indexes for a database like rest.DatabaseInitManager and creates an online test database. The bucket and database will be cleaned up by testing.T.Cleanup. |
| 101 | func setupIndexAndDB(t *testing.T, opts testIndexCreationOptions) *db.Database { |