From edfcbe0fd8557c1baca36ca992c6fb81e924b803 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Thu, 30 Oct 2025 18:23:22 +0100 Subject: [PATCH 01/11] add PRAGMA STATEMENT --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index 57e8446..916170d 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -98,6 +98,7 @@ class StatementGenerator { unique_ptr GenerateComparison(); unique_ptr GeneratePositionalReference(); unique_ptr GenerateCase(); + unique_ptr GeneratePragma(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 455833b..4d03d59 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -21,6 +21,7 @@ #include "duckdb/parser/statement/detach_statement.hpp" #include "duckdb/parser/statement/insert_statement.hpp" #include "duckdb/parser/statement/multi_statement.hpp" +#include "duckdb/parser/statement/pragma_statement.hpp" #include "duckdb/parser/statement/select_statement.hpp" #include "duckdb/parser/statement/set_statement.hpp" #include "duckdb/parser/statement/update_statement.hpp" @@ -106,6 +107,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(60)) { return GenerateStatement(StatementType::DETACH_STATEMENT); } + if (RandomPercentage(50)) { + return GenerateStatement(StatementType::PRAGMA_STATEMENT); + } if (RandomPercentage(30)) { return GenerateStatement(StatementType::SET_STATEMENT); } @@ -130,6 +134,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GenerateSet(); case StatementType::DELETE_STATEMENT: return GenerateDelete(); + case StatementType::PRAGMA_STATEMENT: + return GeneratePragma(); default: throw InternalException("Unsupported type"); } @@ -200,6 +206,26 @@ unique_ptr StatementGenerator::GenerateDelete() { return delete_statement; } +//===--------------------------------------------------------------------===// +// Generate Pragma +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GeneratePragma() { + auto pragma_stmt = make_uniq(); + pragma_stmt->info = make_uniq(); + // getting a random pragma_function + if (!generator_context->pragma_functions.empty()) { + auto &entry = Choose(generator_context->pragma_functions).get(); + pragma_stmt->info->name = entry.name; + } else { + pragma_stmt->info->name = "enable_progress_bar"; + } + if (RandomPercentage(50)) { + pragma_stmt->info->parameters.push_back(GenerateConstant()); + } + return pragma_stmt; +} + //===--------------------------------------------------------------------===// // Generate Detach Info //===--------------------------------------------------------------------===// From 3418db489f4b2c634c3ab4a0cd3db4498ff2bf33 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Fri, 31 Oct 2025 13:57:13 +0100 Subject: [PATCH 02/11] add Copy statement to generator --- src/statement_generator.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 4d03d59..dbe3d46 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -116,6 +116,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(40)) { // 20 return GenerateStatement(StatementType::DELETE_STATEMENT); } + if (RandomPercentage(10)) { + return GenerateStatement(StatementType::COPY_DATABASE_STATEMENT); + } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -136,6 +139,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GenerateDelete(); case StatementType::PRAGMA_STATEMENT: return GeneratePragma(); + case StatementType::COPY_STATEMENT: + return GenerateCopy(); default: throw InternalException("Unsupported type"); } @@ -226,6 +231,20 @@ unique_ptr StatementGenerator::GeneratePragma() { return pragma_stmt; } +//===--------------------------------------------------------------------===// +// Copy Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateCopyDatabase() { + auto copy_stmt = make_uniq(); + copy_stmt->info = make_uniq(); + // Choose from existing dbs and a new path + copy_stmt->info->source = GetRandomAttachedDataBase(); + copy_stmt->info->target = "db_" + RandomString(6); + copy_stmt->info->directory = TESTING_DIRECTORY_NAME; + return copy_stmt; +} + //===--------------------------------------------------------------------===// // Generate Detach Info //===--------------------------------------------------------------------===// From 9ccaa356887e2e2cd2f071d9944b2e2651003c60 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Fri, 31 Oct 2025 14:53:46 +0100 Subject: [PATCH 03/11] add copy database statement --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index 916170d..952fcef 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -99,6 +99,7 @@ class StatementGenerator { unique_ptr GeneratePositionalReference(); unique_ptr GenerateCase(); unique_ptr GeneratePragma(); + unique_ptr GenerateCopyDatabase(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index dbe3d46..929c249 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -17,6 +17,8 @@ #include "duckdb/parser/query_node/set_operation_node.hpp" #include "duckdb/parser/statement/attach_statement.hpp" #include "duckdb/parser/statement/create_statement.hpp" +#include "duckdb/parser/statement/copy_statement.hpp" +#include "duckdb/parser/statement/copy_database_statement.hpp" #include "duckdb/parser/statement/delete_statement.hpp" #include "duckdb/parser/statement/detach_statement.hpp" #include "duckdb/parser/statement/insert_statement.hpp" @@ -117,7 +119,7 @@ unique_ptr StatementGenerator::GenerateStatement() { return GenerateStatement(StatementType::DELETE_STATEMENT); } if (RandomPercentage(10)) { - return GenerateStatement(StatementType::COPY_DATABASE_STATEMENT); + return GenerateCopyDatabase(); } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -139,8 +141,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GenerateDelete(); case StatementType::PRAGMA_STATEMENT: return GeneratePragma(); - case StatementType::COPY_STATEMENT: - return GenerateCopy(); + case StatementType::COPY_DATABASE_STATEMENT: + return GenerateCopyDatabase(); default: throw InternalException("Unsupported type"); } @@ -232,17 +234,14 @@ unique_ptr StatementGenerator::GeneratePragma() { } //===--------------------------------------------------------------------===// -// Copy Statement +// Copy Database Statement //===--------------------------------------------------------------------===// unique_ptr StatementGenerator::GenerateCopyDatabase() { - auto copy_stmt = make_uniq(); - copy_stmt->info = make_uniq(); - // Choose from existing dbs and a new path - copy_stmt->info->source = GetRandomAttachedDataBase(); - copy_stmt->info->target = "db_" + RandomString(6); - copy_stmt->info->directory = TESTING_DIRECTORY_NAME; - return copy_stmt; + auto from_db = GetRandomAttachedDataBase(); + auto to_db = string("db_") + RandomString(6); + auto mode = RandomPercentage(50) ? CopyDatabaseType::COPY_SCHEMA : CopyDatabaseType::COPY_DATA; + return make_uniq(std::move(from_db), std::move(to_db), mode); } //===--------------------------------------------------------------------===// From 26fb2a8efe3323b54a36b1fd160fb71483008014 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Mon, 3 Nov 2025 17:13:24 +0100 Subject: [PATCH 04/11] start adding explain statement --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index 952fcef..2d8f9e4 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -100,6 +100,7 @@ class StatementGenerator { unique_ptr GenerateCase(); unique_ptr GeneratePragma(); unique_ptr GenerateCopyDatabase(); + unique_ptr GenerateExplain(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 929c249..5dcebf4 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -13,6 +13,7 @@ #include "duckdb/parser/parsed_data/create_type_info.hpp" #include "duckdb/parser/parsed_data/create_view_info.hpp" #include "duckdb/parser/parsed_expression_iterator.hpp" +#include "duckdb/parser/statement/explain_statement.hpp" #include "duckdb/parser/query_node/select_node.hpp" #include "duckdb/parser/query_node/set_operation_node.hpp" #include "duckdb/parser/statement/attach_statement.hpp" @@ -121,6 +122,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(10)) { return GenerateCopyDatabase(); } + if (RandomPercentage(20)) { + return GenerateStatement(StatementType::EXPLAIN_STATEMENT); + } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -143,6 +147,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GeneratePragma(); case StatementType::COPY_DATABASE_STATEMENT: return GenerateCopyDatabase(); + case StatementType::EXPLAIN_STATEMENT: + return GenerateExplain(); default: throw InternalException("Unsupported type"); } @@ -244,6 +250,17 @@ unique_ptr StatementGenerator::GenerateCopyDatabase() { return make_uniq(std::move(from_db), std::move(to_db), mode); } +//===--------------------------------------------------------------------===// +// Explain Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateExplain() { + auto stmt = make_uniq(); + stmt->stmt = GenerateStatement(); + // TODO: stmt->explain_type / analyze etc + return stmt; +} + //===--------------------------------------------------------------------===// // Generate Detach Info //===--------------------------------------------------------------------===// From 3513566502e1eaa749452eaa7c5776eb895769e7 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Mon, 3 Nov 2025 17:36:28 +0100 Subject: [PATCH 05/11] make in generate explain statement with Select and some other statement types --- src/statement_generator.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 5dcebf4..1e967e2 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -255,10 +255,22 @@ unique_ptr StatementGenerator::GenerateCopyDatabase() { //===--------------------------------------------------------------------===// unique_ptr StatementGenerator::GenerateExplain() { - auto stmt = make_uniq(); - stmt->stmt = GenerateStatement(); - // TODO: stmt->explain_type / analyze etc - return stmt; + unique_ptr payload; + if (RandomPercentage(70)) { + payload = GenerateStatement(StatementType::SELECT_STATEMENT); + } else { + payload = GenerateStatement(Choose({ + StatementType::DELETE_STATEMENT, + StatementType::UPDATE_STATEMENT, + StatementType::CREATE_STATEMENT + })); + } + auto stmt = make_uniq( + std::move(payload), + ExplainType::EXPLAIN_STANDARD, + ExplainFormat::DEFAULT + ); + return stmt; } //===--------------------------------------------------------------------===// From c2fdfc15eb5f1b24d3277d66f017dc895c92ad32 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Tue, 4 Nov 2025 22:07:44 +0100 Subject: [PATCH 06/11] adding transaction statement --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index 2d8f9e4..e869cbf 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -101,6 +101,7 @@ class StatementGenerator { unique_ptr GeneratePragma(); unique_ptr GenerateCopyDatabase(); unique_ptr GenerateExplain(); + unique_ptr GenerateTransaction(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 1e967e2..89d1ad2 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -29,6 +29,8 @@ #include "duckdb/parser/statement/set_statement.hpp" #include "duckdb/parser/statement/update_statement.hpp" #include "duckdb/parser/tableref/list.hpp" +#include "duckdb/parser/statement/transaction_statement.hpp" +#include "duckdb/parser/parsed_data/transaction_info.hpp" namespace duckdb { @@ -124,6 +126,9 @@ unique_ptr StatementGenerator::GenerateStatement() { } if (RandomPercentage(20)) { return GenerateStatement(StatementType::EXPLAIN_STATEMENT); + } + if (RandomPercentage(20)) { + return GenerateStatement(StatementType::TRANSACTION_STATEMENT); } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -149,6 +154,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GenerateCopyDatabase(); case StatementType::EXPLAIN_STATEMENT: return GenerateExplain(); + case StatementType::TRANSACTION_STATEMENT: + return GenerateTransaction(); default: throw InternalException("Unsupported type"); } @@ -250,6 +257,20 @@ unique_ptr StatementGenerator::GenerateCopyDatabase() { return make_uniq(std::move(from_db), std::move(to_db), mode); } +//===--------------------------------------------------------------------===// +// Transaction Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateTransaction() { + auto t = Choose({ + TransactionType::BEGIN_TRANSACTION, + TransactionType::COMMIT, + TransactionType::ROLLBACK + }); + auto info = make_uniq(t); + return make_uniq(std::move(info)); +} + //===--------------------------------------------------------------------===// // Explain Statement //===--------------------------------------------------------------------===// From 384374190600eb75fd1bce048de18585a689ed26 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Wed, 5 Nov 2025 16:43:16 +0100 Subject: [PATCH 07/11] probably oreoare statement as well --- src/include/statement_generator.hpp | 2 ++ src/statement_generator.cpp | 47 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index e869cbf..ecea66e 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -102,6 +102,8 @@ class StatementGenerator { unique_ptr GenerateCopyDatabase(); unique_ptr GenerateExplain(); unique_ptr GenerateTransaction(); + unique_ptr GenerateDrop(); + unique_ptr GeneratePrepare(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 89d1ad2..4119367 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -31,6 +31,10 @@ #include "duckdb/parser/tableref/list.hpp" #include "duckdb/parser/statement/transaction_statement.hpp" #include "duckdb/parser/parsed_data/transaction_info.hpp" +#include "duckdb/parser/statement/drop_statement.hpp" +#include "duckdb/parser/parsed_data/drop_info.hpp" +#include "duckdb/parser/statement/prepare_statement.hpp" + namespace duckdb { @@ -130,6 +134,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(20)) { return GenerateStatement(StatementType::TRANSACTION_STATEMENT); } + if (RandomPercentage(20)) { + return GenerateDrop(); + } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -156,6 +163,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GenerateExplain(); case StatementType::TRANSACTION_STATEMENT: return GenerateTransaction(); + case StatementType::DROP_STATEMENT: + return GenerateDrop(); default: throw InternalException("Unsupported type"); } @@ -294,6 +303,44 @@ unique_ptr StatementGenerator::GenerateExplain() { return stmt; } +//===--------------------------------------------------------------------===// +// Drop Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateDrop() { + auto info = make_uniq(); + + info->type = Choose({ + CatalogType::TABLE_ENTRY, + CatalogType::VIEW_ENTRY, + CatalogType::SCHEMA_ENTRY, + CatalogType::SEQUENCE_ENTRY + }); + + info->schema = DEFAULT_SCHEMA; + if (!generator_context->tables_and_views.empty() && + (info->type == CatalogType::TABLE_ENTRY || info->type == CatalogType::VIEW_ENTRY)) { + auto &entry = Choose(generator_context->tables_and_views).get(); + info->name = entry.name; + } else { + info->name = GenerateIdentifier(); + } + auto stmt = make_uniq(); + stmt->info = std::move(info); + return stmt; +} + +//===--------------------------------------------------------------------===// +// Prepare Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GeneratePrepare() { + auto stmt = make_uniq(); + stmt->name = string("prep_") + RandomString(6); + stmt->statement = unique_ptr_cast(GenerateSelect()); + return stmt; +} + //===--------------------------------------------------------------------===// // Generate Detach Info //===--------------------------------------------------------------------===// From 520e351a3f4afb0e51c805f6ff1b542980ae5559 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Thu, 6 Nov 2025 14:57:05 +0100 Subject: [PATCH 08/11] Export statement --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index ecea66e..f29b418 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -104,6 +104,7 @@ class StatementGenerator { unique_ptr GenerateTransaction(); unique_ptr GenerateDrop(); unique_ptr GeneratePrepare(); + unique_ptr GenerateExport(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 4119367..42e8264 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -34,7 +34,8 @@ #include "duckdb/parser/statement/drop_statement.hpp" #include "duckdb/parser/parsed_data/drop_info.hpp" #include "duckdb/parser/statement/prepare_statement.hpp" - +#include "duckdb/parser/statement/export_statement.hpp" +#include "duckdb/parser/parsed_data/copy_info.hpp" namespace duckdb { @@ -137,6 +138,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(20)) { return GenerateDrop(); } + if (RandomPercentage(20)) { + return GenerateExport(); + } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -162,9 +166,11 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ case StatementType::EXPLAIN_STATEMENT: return GenerateExplain(); case StatementType::TRANSACTION_STATEMENT: - return GenerateTransaction(); + return GenerateTransaction(); case StatementType::DROP_STATEMENT: - return GenerateDrop(); + return GenerateDrop(); + case StatementType::EXPORT_STATEMENT: + return GenerateDrop(); default: throw InternalException("Unsupported type"); } @@ -341,6 +347,22 @@ unique_ptr StatementGenerator::GeneratePrepare() { return stmt; } +//===--------------------------------------------------------------------===// +// Export Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateExport() { + auto info = make_uniq(); + auto stmt = make_uniq(std::move(info)); + if (!generator_context->attached_databases.empty()) { + stmt->database = GetRandomAttachedDataBase(); + } else { + stmt->database = string(); + } + return stmt; +} + + //===--------------------------------------------------------------------===// // Generate Detach Info //===--------------------------------------------------------------------===// From b586a284297b40c2cdf672ff7710ffa50a28b694 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Fri, 7 Nov 2025 10:46:50 +0100 Subject: [PATCH 09/11] add generate Insert implementation --- src/statement_generator.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 42e8264..000c1c2 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -36,6 +36,7 @@ #include "duckdb/parser/statement/prepare_statement.hpp" #include "duckdb/parser/statement/export_statement.hpp" #include "duckdb/parser/parsed_data/copy_info.hpp" +#include "duckdb/parser/statement/insert_statement.hpp" namespace duckdb { @@ -362,6 +363,25 @@ unique_ptr StatementGenerator::GenerateExport() { return stmt; } +//===--------------------------------------------------------------------===// +// Export Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateInsert() { + auto stmt = make_uniq(); + // firts try to insert to real table + if (!generator_context->tables_and_views.empty()) { + auto &entry = Choose(generator_context->tables_and_views).get(); + if (entry.type == CatalogType::TABLE_ENTRY) { + stmt->table = entry.name; + stmt->select_statement = GenerateSelect(); + return stmt; + } + } + stmt->table = GenerateTableIdentifier(); + stmt->select_statement = GenerateSelect(); + return stmt; +} //===--------------------------------------------------------------------===// // Generate Detach Info From 35c393d244f106f5ec278d2face6e62614271765 Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Fri, 7 Nov 2025 10:54:02 +0100 Subject: [PATCH 10/11] fix typo and add INSERT statement generator to the routing --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index f29b418..243bc9f 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -105,6 +105,7 @@ class StatementGenerator { unique_ptr GenerateDrop(); unique_ptr GeneratePrepare(); unique_ptr GenerateExport(); + unique_ptr GenerateInsert(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index 000c1c2..df7496d 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -142,6 +142,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(20)) { return GenerateExport(); } + if (RandomPercentage(20)) { + return GenerateInsert(); + } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -171,7 +174,9 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ case StatementType::DROP_STATEMENT: return GenerateDrop(); case StatementType::EXPORT_STATEMENT: - return GenerateDrop(); + return GenerateExport(); + case StatementType::INSERT_STATEMENT: + return GenerateInsert(); default: throw InternalException("Unsupported type"); } @@ -364,7 +369,7 @@ unique_ptr StatementGenerator::GenerateExport() { } //===--------------------------------------------------------------------===// -// Export Statement +// Insert Statement //===--------------------------------------------------------------------===// unique_ptr StatementGenerator::GenerateInsert() { From eda75ce918f860ede76334dda18e7ff69aeaa0fb Mon Sep 17 00:00:00 2001 From: Zuleykha Pavlichenkova Date: Fri, 7 Nov 2025 14:09:17 +0100 Subject: [PATCH 11/11] vacuum statement generator --- src/include/statement_generator.hpp | 1 + src/statement_generator.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/include/statement_generator.hpp b/src/include/statement_generator.hpp index 243bc9f..74a724f 100644 --- a/src/include/statement_generator.hpp +++ b/src/include/statement_generator.hpp @@ -106,6 +106,7 @@ class StatementGenerator { unique_ptr GeneratePrepare(); unique_ptr GenerateExport(); unique_ptr GenerateInsert(); + unique_ptr GenerateVacuum(); unique_ptr GenerateOrderBy(); unique_ptr GenerateOrderByAll(); diff --git a/src/statement_generator.cpp b/src/statement_generator.cpp index df7496d..009da61 100644 --- a/src/statement_generator.cpp +++ b/src/statement_generator.cpp @@ -37,6 +37,7 @@ #include "duckdb/parser/statement/export_statement.hpp" #include "duckdb/parser/parsed_data/copy_info.hpp" #include "duckdb/parser/statement/insert_statement.hpp" +#include "duckdb/parser/statement/vacuum_statement.hpp" namespace duckdb { @@ -145,6 +146,9 @@ unique_ptr StatementGenerator::GenerateStatement() { if (RandomPercentage(20)) { return GenerateInsert(); } + if (RandomPercentage(20)) { + return GenerateVacuum(); + } return GenerateStatement(StatementType::CREATE_STATEMENT); } @@ -177,6 +181,8 @@ unique_ptr StatementGenerator::GenerateStatement(StatementType typ return GenerateExport(); case StatementType::INSERT_STATEMENT: return GenerateInsert(); + case StatementType::VACUUM_STATEMENT: + return GenerateVacuum(); default: throw InternalException("Unsupported type"); } @@ -388,6 +394,15 @@ unique_ptr StatementGenerator::GenerateInsert() { return stmt; } +//===--------------------------------------------------------------------===// +// Vacuum Statement +//===--------------------------------------------------------------------===// + +unique_ptr StatementGenerator::GenerateVacuum() { + duckdb::VacuumOptions opts; + return make_uniq(opts); +} + //===--------------------------------------------------------------------===// // Generate Detach Info //===--------------------------------------------------------------------===//