From ffc807455600bfae0dab26a68c6873bc4eb9aef2 Mon Sep 17 00:00:00 2001 From: Yohan Wal <59358312+CookiePieWw@users.noreply.github.com> Date: Thu, 18 Apr 2024 10:50:57 +0800 Subject: [PATCH] feat(fuzz): enable create-if-not-exists option (#3732) --- tests-fuzz/targets/fuzz_create_database.rs | 4 +++- tests-fuzz/targets/fuzz_create_table.rs | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tests-fuzz/targets/fuzz_create_database.rs b/tests-fuzz/targets/fuzz_create_database.rs index 0c7129df70..b59ed4fe8e 100644 --- a/tests-fuzz/targets/fuzz_create_database.rs +++ b/tests-fuzz/targets/fuzz_create_database.rs @@ -17,7 +17,7 @@ use common_telemetry::info; use libfuzzer_sys::arbitrary::{Arbitrary, Unstructured}; use libfuzzer_sys::fuzz_target; -use rand::SeedableRng; +use rand::{Rng, SeedableRng}; use rand_chacha::ChaChaRng; use snafu::ResultExt; use sqlx::{MySql, Pool}; @@ -57,11 +57,13 @@ impl Arbitrary<'_> for FuzzInput { fn generate_expr(input: FuzzInput) -> Result { let mut rng = ChaChaRng::seed_from_u64(input.seed); + let if_not_exists = rng.gen_bool(0.5); let create_database_generator = CreateDatabaseExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( WordGenerator, merge_two_word_map_fn(random_capitalize_map, uppercase_and_keyword_backtick_map), ))) + .if_not_exists(if_not_exists) .build() .unwrap(); create_database_generator.generate(&mut rng) diff --git a/tests-fuzz/targets/fuzz_create_table.rs b/tests-fuzz/targets/fuzz_create_table.rs index 3d8bc1db9e..60bcb1628b 100644 --- a/tests-fuzz/targets/fuzz_create_table.rs +++ b/tests-fuzz/targets/fuzz_create_table.rs @@ -62,6 +62,7 @@ impl Arbitrary<'_> for FuzzInput { fn generate_expr(input: FuzzInput) -> Result { let mut rng = ChaChaRng::seed_from_u64(input.seed); let metric_engine = rng.gen_bool(0.5); + let if_not_exists = rng.gen_bool(0.5); if metric_engine { let create_table_generator = CreateTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( @@ -70,6 +71,7 @@ fn generate_expr(input: FuzzInput) -> Result { ))) .columns(input.columns) .engine("metric") + .if_not_exists(if_not_exists) .with_clause([("physical_metric_table".to_string(), "".to_string())]) .build() .unwrap(); @@ -82,6 +84,7 @@ fn generate_expr(input: FuzzInput) -> Result { ))) .columns(input.columns) .engine("mito") + .if_not_exists(if_not_exists) .build() .unwrap(); create_table_generator.generate(&mut rng)