in code/KustoCopyConsole/Kusto/DbCommandClient.cs [325:367]
public async Task<int> MoveExtentsAsync(
KustoPriority priority,
string tempTableName,
string tableName,
IEnumerable<string> extentIds,
CancellationToken ct)
{
return await _commandQueue.RequestRunAsync(
priority,
async () =>
{
var extentIdTextList = string.Join(", ", extentIds);
var commandText = @$"
.move extents from table ['{tempTableName}'] to table ['{tableName}']
with (setNewIngestionTime=true)
({extentIdTextList})
";
var properties = new ClientRequestProperties();
var reader = await _provider.ExecuteControlCommandAsync(
DatabaseName,
commandText,
properties);
var results = reader
.ToEnumerable(r => new
{
OriginalExtentId = (string)(r[0]),
ResultExtentId = (string)(r[1]),
Details = r[2].ToString()
})
.ToImmutableArray();
var singleDetail = results
.Where(r => !string.IsNullOrWhiteSpace(r.Details))
.Select(r => r.Details)
.FirstOrDefault();
if (singleDetail != null)
{
throw new CopyException($"Move extent failure: '{singleDetail}'", true);
}
return results.Count();
});
}