Link Search Menu Expand Document

IClickHouseBulkDbSetting


This interface extends IDbSetting with a ClickHouse bulk-operations-specific setting. It ships in RepoDb.ClickHouse.BulkOperations — not the core RepoDb.ClickHouse package — and is implemented by ClickHouseBulkDbSetting.

IsWaitForMutationsEnabled is only consulted by BulkMerge/BulkUpdate/BulkDelete in RepoDb.ClickHouse.BulkOperations; the plain Update/UpdateAll/Delete/DeleteAll operations never read it.

Properties

Below is the list of properties, in addition to the ones inherited from IDbSetting.

NameDescription
IsWaitForMutationsEnabledGets or sets a value indicating whether BulkMerge/BulkUpdate/BulkDelete (from RepoDb.ClickHouse.BulkOperations) block until their ALTER TABLE mutation completes. Has no effect on the plain Update/UpdateAll/Delete/DeleteAll operations.

The internal check that consults this setting is written against the concrete ClickHouseBulkDbSetting type, not this interface — subclass ClickHouseBulkDbSetting rather than implementing this interface on an unrelated class if you need it honored.

How to Implement?

Subclass ClickHouseBulkDbSetting itself, rather than implementing this interface from scratch.

public class MyClickHouseBulkDbSetting : ClickHouseBulkDbSetting
{
    public MyClickHouseBulkDbSetting()
    {
        IsWaitForMutationsEnabled = true;
    }
}

Usability

Pass it to UseClickHouse(), or map it directly against ClickHouseConnection via DbSettingMapper.

GlobalConfiguration
    .Setup()
    .UseClickHouse(new MyClickHouseBulkDbSetting());
DbSettingMapper.Add(typeof(ClickHouseConnection), new MyClickHouseBulkDbSetting(), true);