diff --git a/ydb/library/workload/tpcds/data_generator.cpp b/ydb/library/workload/tpcds/data_generator.cpp index 14ccb3716ece..9de91e9dcc04 100644 --- a/ydb/library/workload/tpcds/data_generator.cpp +++ b/ydb/library/workload/tpcds/data_generator.cpp @@ -135,35 +135,34 @@ TTpcdsWorkloadDataInitializerGenerator::TBulkDataGenerator::TDataPortions TTpcds ctxs.emplace_back(*this, tdef->nParam); } - with_lock(Lock) { - ds_key_t firstRow; - ds_key_t rowCount; - split_work(TableNum, &firstRow, &rowCount); - if (!Generated) { - ui32 toSkip = firstRow - 1; - if (!!Owner.StateProcessor && Owner.StateProcessor->GetState().contains(GetName())) { - Generated = Owner.StateProcessor->GetState().at(TString(GetName())).Position; - toSkip += Generated; - } - if (toSkip) { - row_skip(TableNum, toSkip); - if (tdef->flags & FL_PARENT) { - row_skip(tdef->nParam, toSkip); - } - } - if (tdef->flags & FL_SMALL) { - resetCountCount(); + auto g = Guard(Lock); + ds_key_t firstRow; + ds_key_t rowCount; + split_work(TableNum, &firstRow, &rowCount); + if (!Generated) { + ui32 toSkip = firstRow - 1; + if (!!Owner.StateProcessor && Owner.StateProcessor->GetState().contains(GetName())) { + Generated = Owner.StateProcessor->GetState().at(TString(GetName())).Position; + toSkip += Generated; + } + if (toSkip) { + row_skip(TableNum, toSkip); + if (tdef->flags & FL_PARENT) { + row_skip(tdef->nParam, toSkip); } } - const auto count = TableSize > Generated ? std::min(ui64(TableSize - Generated), Owner.Params.BulkSize) : 0; - if (!count) { - return result; + if (tdef->flags & FL_SMALL) { + resetCountCount(); } - ctxs.front().SetCount(count); - ctxs.front().SetStart(firstRow + Generated); - Generated += count; - GenerateRows(ctxs); } + const auto count = TableSize > Generated ? std::min(ui64(TableSize - Generated), Owner.Params.BulkSize) : 0; + if (!count) { + return result; + } + ctxs.front().SetCount(count); + ctxs.front().SetStart(firstRow + Generated); + Generated += count; + GenerateRows(ctxs, std::move(g)); for(auto& ctx: ctxs) { ctx.AppendPortions(result); } diff --git a/ydb/library/workload/tpcds/data_generator.h b/ydb/library/workload/tpcds/data_generator.h index 0b1bb54d659a..42095b25ece2 100644 --- a/ydb/library/workload/tpcds/data_generator.h +++ b/ydb/library/workload/tpcds/data_generator.h @@ -50,7 +50,7 @@ class TTpcdsWorkloadDataInitializerGenerator: public TWorkloadDataInitializerBas using TContexts = TVector; - virtual void GenerateRows(TContexts& ctxs) = 0; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) = 0; int TableNum; ui64 Generated = 0; diff --git a/ydb/library/workload/tpcds/dg_call_center.cpp b/ydb/library/workload/tpcds/dg_call_center.cpp index d17f06b7b57d..1bc411eb71a9 100644 --- a/ydb/library/workload/tpcds/dg_call_center.cpp +++ b/ydb/library/workload/tpcds/dg_call_center.cpp @@ -13,13 +13,15 @@ TTpcDSGeneratorCallCenter::TTpcDSGeneratorCallCenter(const TTpcdsWorkloadDataIni : TBulkDataGenerator(owner, CALL_CENTER) {} -void TTpcDSGeneratorCallCenter::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorCallCenter::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector callCenterList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_call_center(NULL, ctxs.front().GetStart() + i); callCenterList[i] = g_w_call_center; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, cc_call_center_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, cc_call_center_id); diff --git a/ydb/library/workload/tpcds/dg_call_center.h b/ydb/library/workload/tpcds/dg_call_center.h index f2fb1f565881..8f856bc70d8f 100644 --- a/ydb/library/workload/tpcds/dg_call_center.h +++ b/ydb/library/workload/tpcds/dg_call_center.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorCallCenter : public TTpcdsWorkloadDataInitializerGenerator: explicit TTpcDSGeneratorCallCenter(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_catalog_page.cpp b/ydb/library/workload/tpcds/dg_catalog_page.cpp index 8381ef0ca370..0ecac08ec268 100644 --- a/ydb/library/workload/tpcds/dg_catalog_page.cpp +++ b/ydb/library/workload/tpcds/dg_catalog_page.cpp @@ -13,13 +13,15 @@ TTpcDSGeneratorCatalogPage::TTpcDSGeneratorCatalogPage(const TTpcdsWorkloadDataI : TBulkDataGenerator(owner, CATALOG_PAGE) {} -void TTpcDSGeneratorCatalogPage::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorCatalogPage::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector catalogPageList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_catalog_page(NULL, ctxs.front().GetStart() + i); catalogPageList[i] = g_w_catalog_page; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, cp_catalog_page_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, cp_catalog_page_id); diff --git a/ydb/library/workload/tpcds/dg_catalog_page.h b/ydb/library/workload/tpcds/dg_catalog_page.h index 06345225e640..4c1d8656d381 100644 --- a/ydb/library/workload/tpcds/dg_catalog_page.h +++ b/ydb/library/workload/tpcds/dg_catalog_page.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorCatalogPage : public TTpcdsWorkloadDataInitializerGenerator explicit TTpcDSGeneratorCatalogPage(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_catalog_sales.cpp b/ydb/library/workload/tpcds/dg_catalog_sales.cpp index 5c6e58de00ef..6488ea030901 100644 --- a/ydb/library/workload/tpcds/dg_catalog_sales.cpp +++ b/ydb/library/workload/tpcds/dg_catalog_sales.cpp @@ -100,7 +100,7 @@ TTpcDSGeneratorCatalogSales::TTpcDSGeneratorCatalogSales(const TTpcdsWorkloadDat : TBulkDataGenerator(owner, CATALOG_SALES) {} -void TTpcDSGeneratorCatalogSales::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorCatalogSales::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector catalogSalesList; TVector catalogReturnsList; catalogReturnsList.reserve(ctxs.front().GetCount() * 14); @@ -115,6 +115,8 @@ void TTpcDSGeneratorCatalogSales::GenerateRows(TContexts& ctxs) { } tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writerSales(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_FIELD(writerSales, "cs_item_sk", cs_sold_item_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writerSales, cs_order_number); diff --git a/ydb/library/workload/tpcds/dg_catalog_sales.h b/ydb/library/workload/tpcds/dg_catalog_sales.h index 22b1da5e25aa..6c0e4d7bd545 100644 --- a/ydb/library/workload/tpcds/dg_catalog_sales.h +++ b/ydb/library/workload/tpcds/dg_catalog_sales.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorCatalogSales : public TTpcdsWorkloadDataInitializerGenerato explicit TTpcDSGeneratorCatalogSales(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_customer.cpp b/ydb/library/workload/tpcds/dg_customer.cpp index d9df5fa8250e..ced94496465b 100644 --- a/ydb/library/workload/tpcds/dg_customer.cpp +++ b/ydb/library/workload/tpcds/dg_customer.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorCustomer::TTpcDSGeneratorCustomer(const TTpcdsWorkloadDataInitial : TBulkDataGenerator(owner, CUSTOMER) {} -void TTpcDSGeneratorCustomer::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorCustomer::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector customerList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_customer(&customerList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, c_customer_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, c_customer_id); diff --git a/ydb/library/workload/tpcds/dg_customer.h b/ydb/library/workload/tpcds/dg_customer.h index ee40d2c23cbf..085bd55f45ab 100644 --- a/ydb/library/workload/tpcds/dg_customer.h +++ b/ydb/library/workload/tpcds/dg_customer.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorCustomer : public TTpcdsWorkloadDataInitializerGenerator::T explicit TTpcDSGeneratorCustomer(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_customer_address.cpp b/ydb/library/workload/tpcds/dg_customer_address.cpp index e717e9bf7272..464ed39a7df0 100644 --- a/ydb/library/workload/tpcds/dg_customer_address.cpp +++ b/ydb/library/workload/tpcds/dg_customer_address.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorCustomerAddress::TTpcDSGeneratorCustomerAddress(const TTpcdsWorkl : TBulkDataGenerator(owner, CUSTOMER_ADDRESS) {} -void TTpcDSGeneratorCustomerAddress::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorCustomerAddress::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector customerAddressList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_customer_address(&customerAddressList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_FIELD_KEY(writer, "ca_address_sk", ca_addr_sk); CSV_WRITER_REGISTER_FIELD_STRING(writer, "ca_address_id", ca_addr_id); diff --git a/ydb/library/workload/tpcds/dg_customer_address.h b/ydb/library/workload/tpcds/dg_customer_address.h index 18c61d318b7d..4379ca14db17 100644 --- a/ydb/library/workload/tpcds/dg_customer_address.h +++ b/ydb/library/workload/tpcds/dg_customer_address.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorCustomerAddress : public TTpcdsWorkloadDataInitializerGener explicit TTpcDSGeneratorCustomerAddress(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_customer_demographics.cpp b/ydb/library/workload/tpcds/dg_customer_demographics.cpp index f32fb6e667a8..b3d132bee920 100644 --- a/ydb/library/workload/tpcds/dg_customer_demographics.cpp +++ b/ydb/library/workload/tpcds/dg_customer_demographics.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorCustomerDemographics::TTpcDSGeneratorCustomerDemographics(const T : TBulkDataGenerator(owner, CUSTOMER_DEMOGRAPHICS) {} -void TTpcDSGeneratorCustomerDemographics::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorCustomerDemographics::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector customerDemoList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_customer_demographics(&customerDemoList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, cd_demo_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, cd_gender); diff --git a/ydb/library/workload/tpcds/dg_customer_demographics.h b/ydb/library/workload/tpcds/dg_customer_demographics.h index efc5dd515ba7..cf21892abbd0 100644 --- a/ydb/library/workload/tpcds/dg_customer_demographics.h +++ b/ydb/library/workload/tpcds/dg_customer_demographics.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorCustomerDemographics : public TTpcdsWorkloadDataInitializer explicit TTpcDSGeneratorCustomerDemographics(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_date_dim.cpp b/ydb/library/workload/tpcds/dg_date_dim.cpp index 05f86ab025f1..8e9932beebbe 100644 --- a/ydb/library/workload/tpcds/dg_date_dim.cpp +++ b/ydb/library/workload/tpcds/dg_date_dim.cpp @@ -14,13 +14,15 @@ TTpcDSGeneratorDateDim::TTpcDSGeneratorDateDim(const TTpcdsWorkloadDataInitializ : TBulkDataGenerator(owner, DATE) {} -void TTpcDSGeneratorDateDim::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorDateDim::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector dateList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_date(NULL, ctxs.front().GetStart() + i); dateList[i] = g_w_date; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, d_date_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, d_date_id); diff --git a/ydb/library/workload/tpcds/dg_date_dim.h b/ydb/library/workload/tpcds/dg_date_dim.h index 99a7e59fb64d..b5525ddeda81 100644 --- a/ydb/library/workload/tpcds/dg_date_dim.h +++ b/ydb/library/workload/tpcds/dg_date_dim.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorDateDim : public TTpcdsWorkloadDataInitializerGenerator::TB explicit TTpcDSGeneratorDateDim(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_household_demographics.cpp b/ydb/library/workload/tpcds/dg_household_demographics.cpp index ff8f9b312a56..33ffe2822e5c 100644 --- a/ydb/library/workload/tpcds/dg_household_demographics.cpp +++ b/ydb/library/workload/tpcds/dg_household_demographics.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorHouseholdDemographics::TTpcDSGeneratorHouseholdDemographics(const : TBulkDataGenerator(owner, HOUSEHOLD_DEMOGRAPHICS) {} -void TTpcDSGeneratorHouseholdDemographics::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorHouseholdDemographics::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector hhDemoList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_household_demographics(&hhDemoList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, hd_demo_sk); CSV_WRITER_REGISTER_FIELD_KEY(writer, "hd_income_band_sk", hd_income_band_id); diff --git a/ydb/library/workload/tpcds/dg_household_demographics.h b/ydb/library/workload/tpcds/dg_household_demographics.h index 711d9c5fce13..86856b1a4bb6 100644 --- a/ydb/library/workload/tpcds/dg_household_demographics.h +++ b/ydb/library/workload/tpcds/dg_household_demographics.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorHouseholdDemographics : public TTpcdsWorkloadDataInitialize explicit TTpcDSGeneratorHouseholdDemographics(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_income_band.cpp b/ydb/library/workload/tpcds/dg_income_band.cpp index 6950d758a12b..3ebc72117a9b 100644 --- a/ydb/library/workload/tpcds/dg_income_band.cpp +++ b/ydb/library/workload/tpcds/dg_income_band.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorIncomeBand::TTpcDSGeneratorIncomeBand(const TTpcdsWorkloadDataIni : TBulkDataGenerator(owner, INCOME_BAND) {} -void TTpcDSGeneratorIncomeBand::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorIncomeBand::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector incomingBandList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_income_band(&incomingBandList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_FIELD(writer, "ib_income_band_sk", ib_income_band_id); CSV_WRITER_REGISTER_SIMPLE_FIELD(writer, ib_lower_bound); diff --git a/ydb/library/workload/tpcds/dg_income_band.h b/ydb/library/workload/tpcds/dg_income_band.h index 668dca5ef913..b3a95884a063 100644 --- a/ydb/library/workload/tpcds/dg_income_band.h +++ b/ydb/library/workload/tpcds/dg_income_band.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorIncomeBand : public TTpcdsWorkloadDataInitializerGenerator: explicit TTpcDSGeneratorIncomeBand(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_inventory.cpp b/ydb/library/workload/tpcds/dg_inventory.cpp index c5802d80f487..1970815fafa3 100644 --- a/ydb/library/workload/tpcds/dg_inventory.cpp +++ b/ydb/library/workload/tpcds/dg_inventory.cpp @@ -13,13 +13,15 @@ TTpcDSGeneratorInventory::TTpcDSGeneratorInventory(const TTpcdsWorkloadDataIniti : TBulkDataGenerator(owner, INVENTORY) {} -void TTpcDSGeneratorInventory::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorInventory::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector inventoryList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_inventory(NULL, ctxs.front().GetStart() + i); inventoryList[i] = g_w_inventory; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, inv_date_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, inv_item_sk); diff --git a/ydb/library/workload/tpcds/dg_inventory.h b/ydb/library/workload/tpcds/dg_inventory.h index 59cc7b31bb83..53258031500b 100644 --- a/ydb/library/workload/tpcds/dg_inventory.h +++ b/ydb/library/workload/tpcds/dg_inventory.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorInventory : public TTpcdsWorkloadDataInitializerGenerator:: explicit TTpcDSGeneratorInventory(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_item.cpp b/ydb/library/workload/tpcds/dg_item.cpp index e0d0bc8b0091..cd3d0f9eaa8b 100644 --- a/ydb/library/workload/tpcds/dg_item.cpp +++ b/ydb/library/workload/tpcds/dg_item.cpp @@ -13,12 +13,14 @@ TTpcDSGeneratorItem::TTpcDSGeneratorItem(const TTpcdsWorkloadDataInitializerGene : TBulkDataGenerator(owner, ITEM) {} -void TTpcDSGeneratorItem::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorItem::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector itemList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_item(&itemList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, i_item_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, i_item_id); diff --git a/ydb/library/workload/tpcds/dg_item.h b/ydb/library/workload/tpcds/dg_item.h index 3037e160d41e..c2b5ab4e3fe9 100644 --- a/ydb/library/workload/tpcds/dg_item.h +++ b/ydb/library/workload/tpcds/dg_item.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorItem : public TTpcdsWorkloadDataInitializerGenerator::TBulk explicit TTpcDSGeneratorItem(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_promotion.cpp b/ydb/library/workload/tpcds/dg_promotion.cpp index 40efec5a8a6c..089b7cf24cfb 100644 --- a/ydb/library/workload/tpcds/dg_promotion.cpp +++ b/ydb/library/workload/tpcds/dg_promotion.cpp @@ -14,13 +14,15 @@ TTpcDSGeneratorPromotion::TTpcDSGeneratorPromotion(const TTpcdsWorkloadDataIniti : TBulkDataGenerator(owner, PROMOTION) {} -void TTpcDSGeneratorPromotion::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorPromotion::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector promotionList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_promotion(NULL, ctxs.front().GetStart() + i); promotionList[i] = g_w_promotion; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, p_promo_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, p_promo_id); diff --git a/ydb/library/workload/tpcds/dg_promotion.h b/ydb/library/workload/tpcds/dg_promotion.h index 809197214da5..2fe145db26e7 100644 --- a/ydb/library/workload/tpcds/dg_promotion.h +++ b/ydb/library/workload/tpcds/dg_promotion.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorPromotion : public TTpcdsWorkloadDataInitializerGenerator:: explicit TTpcDSGeneratorPromotion(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_reason.cpp b/ydb/library/workload/tpcds/dg_reason.cpp index 68795fc55692..f7c75eab80da 100644 --- a/ydb/library/workload/tpcds/dg_reason.cpp +++ b/ydb/library/workload/tpcds/dg_reason.cpp @@ -13,13 +13,15 @@ TTpcDSGeneratorReason::TTpcDSGeneratorReason(const TTpcdsWorkloadDataInitializer : TBulkDataGenerator(owner, REASON) {} -void TTpcDSGeneratorReason::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorReason::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector reasonList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_reason(NULL, ctxs.front().GetStart() + i); reasonList[i] = g_w_reason; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, r_reason_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, r_reason_id); diff --git a/ydb/library/workload/tpcds/dg_reason.h b/ydb/library/workload/tpcds/dg_reason.h index 11fd1eab0182..b1a33a9fad52 100644 --- a/ydb/library/workload/tpcds/dg_reason.h +++ b/ydb/library/workload/tpcds/dg_reason.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorReason : public TTpcdsWorkloadDataInitializerGenerator::TBu explicit TTpcDSGeneratorReason(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_ship_mode.cpp b/ydb/library/workload/tpcds/dg_ship_mode.cpp index d2a4db901f45..6167318b815f 100644 --- a/ydb/library/workload/tpcds/dg_ship_mode.cpp +++ b/ydb/library/workload/tpcds/dg_ship_mode.cpp @@ -13,13 +13,15 @@ TTpcDSGeneratorShipMode::TTpcDSGeneratorShipMode(const TTpcdsWorkloadDataInitial : TBulkDataGenerator(owner, SHIP_MODE) {} -void TTpcDSGeneratorShipMode::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorShipMode::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector shipModeList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_ship_mode(NULL, ctxs.front().GetStart() + i); shipModeList[i] = g_w_ship_mode; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, sm_ship_mode_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, sm_ship_mode_id); diff --git a/ydb/library/workload/tpcds/dg_ship_mode.h b/ydb/library/workload/tpcds/dg_ship_mode.h index c6cf881d86a6..07284e8b903f 100644 --- a/ydb/library/workload/tpcds/dg_ship_mode.h +++ b/ydb/library/workload/tpcds/dg_ship_mode.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorShipMode : public TTpcdsWorkloadDataInitializerGenerator::T explicit TTpcDSGeneratorShipMode(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_store.cpp b/ydb/library/workload/tpcds/dg_store.cpp index 7b4b8f639faa..6ce9499ebd40 100644 --- a/ydb/library/workload/tpcds/dg_store.cpp +++ b/ydb/library/workload/tpcds/dg_store.cpp @@ -13,13 +13,15 @@ TTpcDSGeneratorStore::TTpcDSGeneratorStore(const TTpcdsWorkloadDataInitializerGe : TBulkDataGenerator(owner, STORE) {} -void TTpcDSGeneratorStore::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorStore::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector storeList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_store(NULL, ctxs.front().GetStart() + i); storeList[i] = g_w_store; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_FIELD_KEY(writer, "s_store_sk", store_sk); CSV_WRITER_REGISTER_FIELD_STRING(writer, "s_store_id", store_id); diff --git a/ydb/library/workload/tpcds/dg_store.h b/ydb/library/workload/tpcds/dg_store.h index 721243724384..548c4146c57b 100644 --- a/ydb/library/workload/tpcds/dg_store.h +++ b/ydb/library/workload/tpcds/dg_store.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorStore : public TTpcdsWorkloadDataInitializerGenerator::TBul explicit TTpcDSGeneratorStore(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_store_sales.cpp b/ydb/library/workload/tpcds/dg_store_sales.cpp index 16a4e27bfb1f..41490a5eb3ca 100644 --- a/ydb/library/workload/tpcds/dg_store_sales.cpp +++ b/ydb/library/workload/tpcds/dg_store_sales.cpp @@ -73,7 +73,7 @@ TTpcDSGeneratorStoreSales::TTpcDSGeneratorStoreSales(const TTpcdsWorkloadDataIni : TBulkDataGenerator(owner, STORE_SALES) {} -void TTpcDSGeneratorStoreSales::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorStoreSales::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector storeSalesList; TVector storeReturnsList; storeReturnsList.reserve(ctxs.front().GetCount() * 14); @@ -88,6 +88,8 @@ void TTpcDSGeneratorStoreSales::GenerateRows(TContexts& ctxs) { } tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writerSales(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_FIELD_KEY(writerSales, "ss_item_sk", ss_sold_item_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writerSales, ss_ticket_number); diff --git a/ydb/library/workload/tpcds/dg_store_sales.h b/ydb/library/workload/tpcds/dg_store_sales.h index 248c98981a79..b063ff5e3a7b 100644 --- a/ydb/library/workload/tpcds/dg_store_sales.h +++ b/ydb/library/workload/tpcds/dg_store_sales.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorStoreSales : public TTpcdsWorkloadDataInitializerGenerator: explicit TTpcDSGeneratorStoreSales(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_time_dim.cpp b/ydb/library/workload/tpcds/dg_time_dim.cpp index 3ee623a487f3..858070845cea 100644 --- a/ydb/library/workload/tpcds/dg_time_dim.cpp +++ b/ydb/library/workload/tpcds/dg_time_dim.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorTimeDim::TTpcDSGeneratorTimeDim(const TTpcdsWorkloadDataInitializ : TBulkDataGenerator(owner, TIME) {} -void TTpcDSGeneratorTimeDim::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorTimeDim::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector timeList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_time(&timeList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, t_time_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, t_time_id); diff --git a/ydb/library/workload/tpcds/dg_time_dim.h b/ydb/library/workload/tpcds/dg_time_dim.h index 73d57719af14..2aad97bacb9d 100644 --- a/ydb/library/workload/tpcds/dg_time_dim.h +++ b/ydb/library/workload/tpcds/dg_time_dim.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorTimeDim : public TTpcdsWorkloadDataInitializerGenerator::TB explicit TTpcDSGeneratorTimeDim(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_warehouse.cpp b/ydb/library/workload/tpcds/dg_warehouse.cpp index 89a381f2aae2..a82a829b417d 100644 --- a/ydb/library/workload/tpcds/dg_warehouse.cpp +++ b/ydb/library/workload/tpcds/dg_warehouse.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorWarehouse::TTpcDSGeneratorWarehouse(const TTpcdsWorkloadDataIniti : TBulkDataGenerator(owner, WAREHOUSE) {} -void TTpcDSGeneratorWarehouse::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorWarehouse::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector warehouseList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_warehouse(&warehouseList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, w_warehouse_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, w_warehouse_id); diff --git a/ydb/library/workload/tpcds/dg_warehouse.h b/ydb/library/workload/tpcds/dg_warehouse.h index df13cbdc44a7..d4cb941e8670 100644 --- a/ydb/library/workload/tpcds/dg_warehouse.h +++ b/ydb/library/workload/tpcds/dg_warehouse.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorWarehouse : public TTpcdsWorkloadDataInitializerGenerator:: explicit TTpcDSGeneratorWarehouse(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_web_page.cpp b/ydb/library/workload/tpcds/dg_web_page.cpp index e82bf5832259..b3265bc2eae3 100644 --- a/ydb/library/workload/tpcds/dg_web_page.cpp +++ b/ydb/library/workload/tpcds/dg_web_page.cpp @@ -12,12 +12,14 @@ TTpcDSGeneratorWebPage::TTpcDSGeneratorWebPage(const TTpcdsWorkloadDataInitializ : TBulkDataGenerator(owner, WEB_PAGE) {} -void TTpcDSGeneratorWebPage::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorWebPage::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector webPageList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_web_page(&webPageList[i], ctxs.front().GetStart() + i); tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_FIELD_KEY(writer, "wp_web_page_sk", wp_page_sk); CSV_WRITER_REGISTER_FIELD_STRING(writer, "wp_web_page_id", wp_page_id); diff --git a/ydb/library/workload/tpcds/dg_web_page.h b/ydb/library/workload/tpcds/dg_web_page.h index 8bbcbd9461c7..094d3358f64d 100644 --- a/ydb/library/workload/tpcds/dg_web_page.h +++ b/ydb/library/workload/tpcds/dg_web_page.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorWebPage : public TTpcdsWorkloadDataInitializerGenerator::TB explicit TTpcDSGeneratorWebPage(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_web_sales.cpp b/ydb/library/workload/tpcds/dg_web_sales.cpp index 498a639d0077..0d972466bdac 100644 --- a/ydb/library/workload/tpcds/dg_web_sales.cpp +++ b/ydb/library/workload/tpcds/dg_web_sales.cpp @@ -105,7 +105,7 @@ TTpcDSGeneratorWebSales::TTpcDSGeneratorWebSales(const TTpcdsWorkloadDataInitial : TBulkDataGenerator(owner, WEB_SALES) {} -void TTpcDSGeneratorWebSales::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorWebSales::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector webSalesList; TVector webReturnsList; webReturnsList.reserve(ctxs.front().GetCount() * 16); @@ -120,6 +120,8 @@ void TTpcDSGeneratorWebSales::GenerateRows(TContexts& ctxs) { } tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writerSales(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writerSales, ws_item_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writerSales, ws_order_number); diff --git a/ydb/library/workload/tpcds/dg_web_sales.h b/ydb/library/workload/tpcds/dg_web_sales.h index 0b645d678e9e..afa8bac2a6e8 100644 --- a/ydb/library/workload/tpcds/dg_web_sales.h +++ b/ydb/library/workload/tpcds/dg_web_sales.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorWebSales : public TTpcdsWorkloadDataInitializerGenerator::T explicit TTpcDSGeneratorWebSales(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; }; diff --git a/ydb/library/workload/tpcds/dg_web_site.cpp b/ydb/library/workload/tpcds/dg_web_site.cpp index 237ccbf5af87..1a23fb8615cb 100644 --- a/ydb/library/workload/tpcds/dg_web_site.cpp +++ b/ydb/library/workload/tpcds/dg_web_site.cpp @@ -14,13 +14,15 @@ TTpcDSGeneratorWebSite::TTpcDSGeneratorWebSite(const TTpcdsWorkloadDataInitializ : TBulkDataGenerator(owner, WEB_SITE) {} -void TTpcDSGeneratorWebSite::GenerateRows(TContexts& ctxs) { +void TTpcDSGeneratorWebSite::GenerateRows(TContexts& ctxs, TGuard&& g) { TVector webSiteList(ctxs.front().GetCount()); for (ui64 i = 0; i < ctxs.front().GetCount(); ++i) { mk_w_web_site(NULL, ctxs.front().GetStart() + i); webSiteList[i] = g_w_web_site; tpcds_row_stop(TableNum); } + g.Release(); + TCsvItemWriter writer(ctxs.front().GetCsv().Out); CSV_WRITER_REGISTER_SIMPLE_FIELD_KEY(writer, web_site_sk); CSV_WRITER_REGISTER_SIMPLE_FIELD_STRING(writer, web_site_id); diff --git a/ydb/library/workload/tpcds/dg_web_site.h b/ydb/library/workload/tpcds/dg_web_site.h index 3af832b2064f..e93720d66e29 100644 --- a/ydb/library/workload/tpcds/dg_web_site.h +++ b/ydb/library/workload/tpcds/dg_web_site.h @@ -7,7 +7,7 @@ class TTpcDSGeneratorWebSite : public TTpcdsWorkloadDataInitializerGenerator::TB explicit TTpcDSGeneratorWebSite(const TTpcdsWorkloadDataInitializerGenerator& owner); protected: - virtual void GenerateRows(TContexts& ctxs) override; + virtual void GenerateRows(TContexts& ctxs, TGuard&& g) override; static const TFactory::TRegistrator Registrar; };