public static LinkDatabaseCommand CreateInsertCommand( string sourceDatabase, ID sourceItemID, Language sourceLanguage, Sitecore.Data.Version sourceVersion, ID sourceFieldID, string targetDatabase, ID targetItemID, Language targetLanguage, Sitecore.Data.Version targetVersion, string targetPath, IBatchOperation operation) { var parameters = new List <object>(); var index = operation.Index; var sql = $@" INSERT INTO [Links] ( [SourceDatabase], [SourceItemID], [SourceLanguage], [SourceVersion], [SourceFieldID], [TargetDatabase], [TargetItemID], [TargetLanguage], [TargetVersion], [TargetPath] ) VALUES( @{LinksTableColumns.Database}{index}, @{LinksTableColumns.ItemID}{index}, @{LinksTableColumns.SourceLanguage}{index}, @{LinksTableColumns.SourceVersion}{index}, @{LinksTableColumns.FieldID}{index}, @{LinksTableColumns.TargetDatabase}{index}, @{LinksTableColumns.TargetID}{index}, @{LinksTableColumns.TargetLanguage}{index}, @{LinksTableColumns.TargetVersion}{index}, @{LinksTableColumns.TargetPath}{index} )"; AddToParameters(parameters, $"{LinksTableColumns.Database}{index}", GetString(sourceDatabase, DatabaseNameLength)); AddToParameters(parameters, $"{LinksTableColumns.ItemID}{index}", sourceItemID.Guid); AddToParameters(parameters, $"{LinksTableColumns.SourceLanguage}{index}", GetString(sourceLanguage.ToString(), LanguageNameLength)); AddToParameters(parameters, $"{LinksTableColumns.SourceVersion}{index}", sourceVersion.Number); AddToParameters(parameters, $"{LinksTableColumns.FieldID}{index}", sourceFieldID.Guid); AddToParameters(parameters, $"{LinksTableColumns.TargetDatabase}{index}", GetString(targetDatabase, DatabaseNameLength)); AddToParameters(parameters, $"{LinksTableColumns.TargetID}{index}", targetItemID.Guid); AddToParameters(parameters, $"{LinksTableColumns.TargetLanguage}{index}", GetString(targetLanguage.ToString(), LanguageNameLength)); AddToParameters(parameters, $"{LinksTableColumns.TargetVersion}{index}", targetVersion.Number); AddToParameters(parameters, $"{LinksTableColumns.TargetPath}{index}", targetPath); return(new LinkDatabaseCommand(sql, parameters)); }
public static LinkDatabaseCommand CreateDeleteCommand(ItemLink itemLink, IBatchOperation operation) { var parameters = new List <object>(); var index = operation.Index; var sql = $@" DELETE FROM [Links] WHERE [SourceDatabase]=@{LinksTableColumns.Database}{index} AND [SourceItemID]=@{LinksTableColumns.ItemID}{index} AND [SourceLanguage]=@{LinksTableColumns.SourceLanguage}{index} AND [SourceVersion]=@{LinksTableColumns.SourceVersion}{index} AND [SourceFieldID]=@{LinksTableColumns.FieldID}{index} AND [TargetDatabase]=@{LinksTableColumns.TargetDatabase}{index} AND [TargetItemID]=@{LinksTableColumns.TargetID}{index} AND [TargetLanguage]=@{LinksTableColumns.TargetLanguage}{index} AND [TargetVersion] = @{LinksTableColumns.TargetVersion}{index}"; AddToParameters(parameters, LinksTableColumns.Database, GetString(itemLink.SourceDatabaseName, DatabaseNameLength)); AddToParameters(parameters, LinksTableColumns.ItemID, itemLink.SourceItemID.Guid); AddToParameters(parameters, LinksTableColumns.SourceLanguage, GetString(itemLink.SourceItemLanguage.ToString(), LanguageNameLength)); AddToParameters(parameters, LinksTableColumns.SourceVersion, itemLink.SourceItemVersion.Number); AddToParameters(parameters, LinksTableColumns.FieldID, itemLink.SourceFieldID); AddToParameters(parameters, LinksTableColumns.TargetDatabase, GetString(itemLink.TargetDatabaseName, DatabaseNameLength)); AddToParameters(parameters, LinksTableColumns.TargetID, itemLink.TargetItemID); AddToParameters(parameters, LinksTableColumns.TargetLanguage, GetString(itemLink.TargetItemLanguage.ToString(), LanguageNameLength)); AddToParameters(parameters, LinksTableColumns.TargetVersion, itemLink.TargetItemVersion.Number); return(new LinkDatabaseCommand(sql, parameters)); }
public static LinkDatabaseCommand CreateInsertCommand(ItemLink itemLink, IBatchOperation operation) { return(CreateInsertCommand( itemLink.SourceDatabaseName, itemLink.SourceItemID, itemLink.SourceItemLanguage, itemLink.SourceItemVersion, itemLink.SourceFieldID, itemLink.TargetDatabaseName, itemLink.TargetItemID, itemLink.TargetItemLanguage, itemLink.TargetItemVersion, itemLink.TargetPath, operation )); }
public static LinkDatabaseCommand CreateDeleteCommand(Guid itemLinkId, IBatchOperation operation) { var paramName = $"id{operation.Index}"; var parameters = new List <object>(); var sql = $"DELETE FROM [Links] WHERE [ID]=@{paramName}"; AddToParameters(parameters, paramName, itemLinkId); return(new LinkDatabaseCommand(sql, parameters)); }
private void BatchSizeIncreased(object sender, EventArgs args) { IBatchOperation operation = (IBatchOperation)sender; _touchedSync.Wait(); try { _touched.Add(operation); } finally { _touchedSync.Release(); ReleaseProcessSyncIfNeeded(); } }
public void ExecuteOperation() { Response = new TransactionFramework.InProcessTransactionResponse(); var chain = new TransactionFramework.TransactionChain(); chain.TransactionCompleted += ChainOnTransactionCompleted; while (Operations.Count > 0) { IBatchOperation operation = Operations.Dequeue(); TransactionFramework.InProcessTransactionResponse newResponse = operation.BuildTransactionChain(ref chain); Response.Add(newResponse); } MapManager.ExecuteTransaction(chain); }
protected void PrepareBatchOperation() { m_operation = m_table.PrepareBatchOperation(); }
private static void WriteEvents(string stream, StreamVersion version, IEnumerable<JournaledEvent> events, IBatchOperation batch) { var currentVersion = version; foreach (var journaledEvent in events) { currentVersion = currentVersion.Increment(1); // InsertOrReplace is faster then Insert operation, because storage engine // can skip etag checking. batch.InsertOrReplace(stream, currentVersion.ToString(), journaledEvent.ToDictionary()); } }
private static void WriteHeadProperty(string stream, EventStreamPosition position, int targetVersion, IBatchOperation batch) { var headProperties = new Dictionary<string, object> { {EventJournalTableRowPropertyNames.Version, targetVersion} }; if (EventStreamPosition.IsNewStream(position)) { batch.Insert(stream, "HEAD", headProperties); } else { batch.Merge(stream, "HEAD", position.ETag, headProperties); } }
public static void InsertOrReplace(this IBatchOperation batchOperation, string partitionKey) { Require.NotNull(batchOperation, "batchOperation"); batchOperation.InsertOrReplace(partitionKey, EmptyDictionary.Get <string, object>()); }
public static void Replace(this IBatchOperation batchOperation, string partitionKey, string rowKey, string etag) { Require.NotNull(batchOperation, "batchOperation"); batchOperation.Replace(partitionKey, rowKey, etag, EmptyDictionary.Get <string, object>()); }