diff --git a/libraries/state_history/create_deltas.cpp b/libraries/state_history/create_deltas.cpp index 219b471abb4..4092abe1eb1 100644 --- a/libraries/state_history/create_deltas.cpp +++ b/libraries/state_history/create_deltas.cpp @@ -104,6 +104,10 @@ std::vector create_deltas(const chainbase::database& db, bool full_ for (auto& row : undo.new_values) { delta.rows.obj.emplace_back(true, pack_row(row)); } + + if(delta.rows.obj.empty()) { + deltas.pop_back(); + } } }; diff --git a/unittests/state_history_tests.cpp b/unittests/state_history_tests.cpp index f2a882653ff..7b67b00526c 100644 --- a/unittests/state_history_tests.cpp +++ b/unittests/state_history_tests.cpp @@ -494,6 +494,19 @@ class table_deltas_tester : public tester { deltas_vector v; }; +BOOST_AUTO_TEST_CASE(test_deltas_not_empty) { + for (backing_store_type backing_store : { backing_store_type::CHAINBASE/* TODO: uncomment this , backing_store_type::ROCKSDB*/ } ) { + table_deltas_tester chain; + chain.set_backing_store(backing_store); + + auto deltas = eosio::state_history::create_deltas(chain.control->kv_db(), false); + + for(const auto &delta: deltas) { + BOOST_REQUIRE(!delta.rows.obj.empty()); + } + } +} + BOOST_AUTO_TEST_CASE(test_deltas_account_creation) { for (backing_store_type backing_store : { backing_store_type::CHAINBASE, backing_store_type::ROCKSDB }) { table_deltas_tester chain;