Merge pull request #2902 from influxdata/ntran/table_names

feat: make tag_keys work with delete
pull/24376/head
kodiakhq[bot] 2021-10-19 17:59:28 +00:00 committed by GitHub
commit 1bc6514dfa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 29 deletions

View File

@ -277,6 +277,10 @@ impl InfluxRpcPlanner {
let mut known_columns = BTreeSet::new();
for chunk in database.chunks(normalizer.unnormalized()) {
let mut do_full_plan = false;
if chunk.has_delete_predicates() {
do_full_plan = true;
}
let table_name = chunk.table_name();
let predicate = normalizer.normalized(table_name);
@ -302,36 +306,43 @@ impl InfluxRpcPlanner {
let selection = Selection::Some(&column_names);
// filter the columns further from the predicate
let maybe_names = chunk
.column_names(&predicate, selection)
.map_err(|e| Box::new(e) as _)
.context(FindingColumnNames)?;
if !do_full_plan {
// filter the columns further from the predicate
let maybe_names = chunk
.column_names(&predicate, selection)
.map_err(|e| Box::new(e) as _)
.context(FindingColumnNames)?;
match maybe_names {
Some(mut names) => {
debug!(
table_name,
names=?names,
chunk_id=%chunk.id().get(),
"column names found from metadata",
);
known_columns.append(&mut names);
}
None => {
debug!(
table_name,
chunk_id=%chunk.id().get(),
"column names need full plan"
);
// can't get columns only from metadata, need
// a general purpose plan
need_full_plans
.entry(table_name.to_string())
.or_insert_with(Vec::new)
.push(Arc::clone(&chunk));
match maybe_names {
Some(mut names) => {
debug!(
table_name,
names=?names,
chunk_id=%chunk.id().get(),
"column names found from metadata",
);
known_columns.append(&mut names);
}
None => {
do_full_plan = true;
}
}
}
// can't get columns only from metadata, need
// a general purpose plan
if do_full_plan {
debug!(
table_name,
chunk_id=%chunk.id().get(),
"column names need full plan"
);
need_full_plans
.entry(table_name.to_string())
.or_insert_with(Vec::new)
.push(Arc::clone(&chunk));
}
}
let mut builder = StringSetPlanBuilder::new();

View File

@ -144,8 +144,6 @@ async fn list_tag_name_end_to_end() {
run_tag_keys_test_case(EndToEndTest {}, predicate, expected_tag_keys).await;
}
// https://github.com/influxdata/influxdb_iox/issues/2863
#[ignore]
#[tokio::test]
async fn list_tag_name_end_to_end_with_delete() {
let predicate = PredicateBuilder::default()