Skip to content

Commit f525ce1

Browse files
committed
Add max_group_by_count config
1 parent b3b5457 commit f525ce1

5 files changed

Lines changed: 16 additions & 1 deletion

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ sample_interval_secs = 5
7070
max_column_count = 5
7171
max_row_count = 100
7272
max_expr_level = 3
73+
max_group_by_count = 3
7374
max_table_count = 3
7475
max_insert_per_table = 20
7576
```
@@ -96,6 +97,7 @@ Options:
9697
- `max_column_count`: Maximum number of columns per generated table (default: 5)
9798
- `max_row_count`: Maximum number of rows per generated table (default: 100)
9899
- `max_expr_level`: Maximum expression nesting level (default: 3)
100+
- `max_group_by_count`: Maximum number of `GROUP BY` expressions (default: 3)
99101

100102
## Progress Tracker
101103
### SQL Features

datafusion-fuzzer.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ sample_interval_secs = 5
2828
max_column_count = 5
2929
max_row_count = 100
3030
max_expr_level = 3
31+
max_group_by_count = 3
3132
max_table_count = 3
3233
max_insert_per_table = 20
3334

src/cli/runner.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,7 @@ mod tests {
480480
max_column_count: 3,
481481
max_row_count: 10,
482482
max_expr_level: 2,
483+
max_group_by_count: 2,
483484
max_table_count: 3,
484485
max_insert_per_table: 20,
485486
oracles: vec![crate::oracle::ConfiguredOracle::NoCrash],
@@ -599,6 +600,7 @@ mod tests {
599600
max_column_count: 3,
600601
max_row_count: 10,
601602
max_expr_level: 2,
603+
max_group_by_count: 2,
602604
max_table_count: 3,
603605
max_insert_per_table: 20,
604606
oracles: vec![crate::oracle::ConfiguredOracle::NoCrash],

src/fuzz_context/runner_config.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ pub struct RunnerConfig {
3030
pub max_column_count: u64,
3131
pub max_row_count: u64,
3232
pub max_expr_level: u32,
33+
#[serde(default = "RunnerConfig::default_max_group_by_count")]
34+
pub max_group_by_count: u32,
3335
pub max_table_count: u32,
3436
pub max_insert_per_table: u32,
3537
#[serde(default = "RunnerConfig::default_oracles", alias = "oracle")]
@@ -100,6 +102,10 @@ impl RunnerConfig {
100102
fn default_oracles() -> Vec<ConfiguredOracle> {
101103
vec![ConfiguredOracle::NoCrash]
102104
}
105+
106+
fn default_max_group_by_count() -> u32 {
107+
3
108+
}
103109
}
104110

105111
impl Default for RunnerConfig {
@@ -116,6 +122,7 @@ impl Default for RunnerConfig {
116122
max_column_count: 5,
117123
max_row_count: 100,
118124
max_expr_level: 3,
125+
max_group_by_count: Self::default_max_group_by_count(),
119126
max_table_count: 3,
120127
max_insert_per_table: 20,
121128
oracles: Self::default_oracles(),
@@ -142,6 +149,7 @@ sample_interval_secs = 5
142149
max_column_count = 5
143150
max_row_count = 100
144151
max_expr_level = 3
152+
max_group_by_count = 3
145153
max_table_count = 3
146154
max_insert_per_table = 20
147155
oracles = ["NoCrash"]
@@ -167,6 +175,7 @@ sample_interval_secs = 5
167175
max_column_count = 5
168176
max_row_count = 100
169177
max_expr_level = 3
178+
max_group_by_count = 3
170179
max_table_count = 3
171180
max_insert_per_table = 20
172181
oracles = ["NoCrash", "NestedQueries", "TlpWhere", "TlpHaving"]
@@ -200,6 +209,7 @@ sample_interval_secs = 5
200209
max_column_count = 5
201210
max_row_count = 100
202211
max_expr_level = 3
212+
max_group_by_count = 3
203213
max_table_count = 3
204214
max_insert_per_table = 20
205215
oracles = []

src/query_generator/stmt_select_def.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ impl SelectStatementBuilder {
434434

435435
let max_group_by_exprs = src_columns
436436
.len()
437-
.min(self.ctx.runner_config.max_expr_level as usize);
437+
.min(self.ctx.runner_config.max_group_by_count as usize);
438438
if max_group_by_exprs == 0 {
439439
return Ok(Vec::new());
440440
}

0 commit comments

Comments
 (0)