Skip to content

V0.2

Latest

Choose a tag to compare

@skander-krid skander-krid released this 04 May 13:29
232ad79

This release significantly alters the produced benchmarks:

Change 1: Previously we used to map ceb+_readsets to user_query_readsets. In v0.2, we change this to consider ceb+ templates instead. So the new bijection is ceb+_template <-> user_query_readset. The reasons behind this change are:

Even if two different ceb+ queries have the same readset, they might come from different templates (e.g. this happens with CEB templates 3a and 3b).
In the future, once we instantiate new benchmarks, e.g. redbench[tpc-h] or redbench[tpc-ds], the already existing logic in src.utils.extract_readset_from_query() to extract the readset from a SQL text won't work anymore. The logic works for JOB and CEB queries but is not robust enough to handle more complex queries.
NB: In the previous version v0.1, there was a bug in src.utils.extract_readset_from_query(). The fix is straightforward but unnecessary after the above migration ceb+_template <-> user_query_readset.

Change 2: Another change is the way we compute the number of joins in a ceb+ query. Previously we use to count the number of join operators in the physical execution plan produced by DuckDB. However, DuckDB internally uses an optimization that implements filters like T.A in (v_1, v_2, ..., v_n) using joins for big enough n values. Since these joins are a DuckDB-specific addition to the plan, and since they are not an intrinsic property of the query, we decided to eliminate them for the calculation.

PS: A desirable side effect of change 2: All query instances from a same ceb+ template produce the same num_joins value. This wasn't the case in v0.1 because of the joins added by DuckDB.

Change 3: After change 1 and change 2, the plots showing the distributions of number of distinct queries and number of templates over the number of joins have changed -> Now we restrict ceb+ queries to queries having between 6 and 11 joins instead of the old range 6-15. The goal remains the same as previously: make sure that each num_joins value has as many distinct templates and query instances as possible.

Change 4: We don't filter out users having queries with readset_size > num_joins + 1 anymore. We just filter out those queries. The idea is that we want the readset to uniquely identify num_joins.