test: reproducer for last cache query bug

hiltontj/last-cache-query-bug
Trevor Hilton 2025-01-27 14:16:49 -05:00
parent 9a5424693c
commit 0213f0f090
1 changed files with 62 additions and 0 deletions

View File

@ -1631,4 +1631,66 @@ mod tests {
);
}
}
#[test_log::test(tokio::test)]
async fn test_non_specified_key_val_cols() {
let writer = TestWriter::new();
let _ = writer.write_lp_to_write_batch("cpu,region=us-east,host=a usage=99,temp=88", 0);
// create a last cache provider so we can use it to create our UDTF provider:
let db_schema = writer.db_schema();
let table_def = db_schema.table_definition("cpu").unwrap();
let provider = LastCacheProvider::new_from_catalog(writer.catalog()).unwrap();
let usage_col_id = table_def.column_name_to_id("usage").unwrap();
provider
.create_cache(
db_schema.id,
None,
CreateLastCacheArgs {
table_def,
count: LastCacheSize::default(),
ttl: LastCacheTtl::default(),
key_columns: LastCacheKeyColumnsArg::SeriesKey,
value_columns: LastCacheValueColumnsArg::Explicit(vec![usage_col_id]),
},
)
.unwrap();
let write_batch = writer.write_lp_to_write_batch(
"\
cpu,region=us-east,host=a usage=77,temp=66\n\
cpu,region=us-east,host=b usage=77,temp=66\n\
cpu,region=us-west,host=c usage=77,temp=66\n\
cpu,region=us-west,host=d usage=77,temp=66\n\
cpu,region=ca-east,host=e usage=77,temp=66\n\
cpu,region=ca-cent,host=f usage=77,temp=66\n\
cpu,region=ca-west,host=g usage=77,temp=66\n\
cpu,region=ca-west,host=h usage=77,temp=66\n\
cpu,region=eu-cent,host=i usage=77,temp=66\n\
cpu,region=eu-cent,host=j usage=77,temp=66\n\
cpu,region=eu-west,host=k usage=77,temp=66\n\
cpu,region=eu-west,host=l usage=77,temp=66\n\
",
1_000,
);
let wal_contents = influxdb3_wal::create::wal_contents(
(0, 1, 0),
[influxdb3_wal::create::write_batch_op(write_batch)],
);
provider.write_wal_contents_to_cache(&wal_contents);
let ctx = SessionContext::new();
let last_cache_fn = LastCacheFunction::new(db_schema.id, Arc::clone(&provider));
ctx.register_udtf(LAST_CACHE_UDTF_NAME, Arc::new(last_cache_fn));
let results = ctx
.sql("select * from last_cache('cpu')")
.await
.unwrap()
.collect()
.await
.unwrap();
assert_batches_sorted_eq!([""], &results);
}
}