io.debezium.connector.sqlserver.snapshot.lock.ExclusiveSnapshotLock Maven / Gradle / Ivy
/*
* Copyright Debezium Authors.
*
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package io.debezium.connector.sqlserver.snapshot.lock;
import java.time.Duration;
import java.util.Map;
import java.util.Optional;
import io.debezium.annotation.ConnectorSpecific;
import io.debezium.connector.sqlserver.SqlServerConnector;
import io.debezium.connector.sqlserver.SqlServerConnectorConfig;
import io.debezium.snapshot.spi.SnapshotLock;
@ConnectorSpecific(connector = SqlServerConnector.class)
public class ExclusiveSnapshotLock implements SnapshotLock {
@Override
public String name() {
return SqlServerConnectorConfig.SnapshotLockingMode.EXCLUSIVE.getValue();
}
@Override
public void configure(Map properties) {
}
@Override
public Optional tableLockingStatement(Duration lockTimeout, String tableId) {
return Optional.of(String.format("SELECT TOP(0) * FROM %s WITH (TABLOCKX)", tableId));
}
}