feat(fuzz): enable create-if-not-exists option (#3732)

This commit is contained in:
Yohan Wal
2024-04-18 10:50:57 +08:00
committed by GitHub
parent 7e56bf250b
commit ffc8074556
2 changed files with 6 additions and 1 deletions

View File

@@ -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<CreateDatabaseExpr> {
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)

View File

@@ -62,6 +62,7 @@ impl Arbitrary<'_> for FuzzInput {
fn generate_expr(input: FuzzInput) -> Result<CreateTableExpr> {
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<CreateTableExpr> {
)))
.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<CreateTableExpr> {
)))
.columns(input.columns)
.engine("mito")
.if_not_exists(if_not_exists)
.build()
.unwrap();
create_table_generator.generate(&mut rng)