77using System ;
88using System . Collections . Generic ;
99using System . Linq ;
10+ using System . Text . RegularExpressions ;
1011using System . Threading . Tasks ;
1112using NUnit . Framework ;
1213using Xtensive . Core ;
@@ -48,7 +49,7 @@ public class TagType : Entity
4849 [ Field ( Length = 55 , Nullable = false ) ]
4950 public string Name { get ; set ; }
5051
51- [ Field ]
52+ [ Field ]
5253 public bool Active { get ; set ; }
5354 }
5455
@@ -386,7 +387,8 @@ public void TagInGrouping()
386387
387388 session . Events . DbCommandExecuting += SqlCapturer ;
388389 foreach ( var group in query )
389- foreach ( var groupItem in group . Items ) ;
390+ foreach ( var groupItem in group . Items )
391+ ;
390392 session . Events . DbCommandExecuting -= SqlCapturer ;
391393
392394 PrintList ( allCommands ) ;
@@ -403,7 +405,8 @@ public void TagInGrouping()
403405
404406 session . Events . DbCommandExecuting += SqlCapturer ;
405407 foreach ( var group in query )
406- foreach ( var groupItem in group . Items ) ;
408+ foreach ( var groupItem in group . Items )
409+ ;
407410 session . Events . DbCommandExecuting -= SqlCapturer ;
408411
409412 PrintList ( allCommands ) ;
@@ -420,7 +423,8 @@ public void TagInGrouping()
420423
421424 session . Events . DbCommandExecuting += SqlCapturer ;
422425 foreach ( var group in query )
423- foreach ( var groupItem in group . Items ) ;
426+ foreach ( var groupItem in group . Items )
427+ ;
424428 session . Events . DbCommandExecuting -= SqlCapturer ;
425429
426430 PrintList ( allCommands ) ;
@@ -438,7 +442,8 @@ public void TagInGrouping()
438442
439443 session . Events . DbCommandExecuting += SqlCapturer ;
440444 foreach ( var group in query )
441- foreach ( var groupItem in group . Items ) ;
445+ foreach ( var groupItem in group . Items )
446+ ;
442447 session . Events . DbCommandExecuting -= SqlCapturer ;
443448
444449 PrintList ( allCommands ) ;
@@ -456,7 +461,8 @@ public void TagInGrouping()
456461
457462 session . Events . DbCommandExecuting += SqlCapturer ;
458463 foreach ( var group in query )
459- foreach ( var groupItem in group . Items ) ;
464+ foreach ( var groupItem in group . Items )
465+ ;
460466 session . Events . DbCommandExecuting -= SqlCapturer ;
461467
462468 PrintList ( allCommands ) ;
@@ -477,7 +483,8 @@ public void TagInGrouping()
477483
478484 session . Events . DbCommandExecuting += SqlCapturer ;
479485 foreach ( var group in query1 )
480- foreach ( var groupItem in group . Items ) ;
486+ foreach ( var groupItem in group . Items )
487+ ;
481488 session . Events . DbCommandExecuting -= SqlCapturer ;
482489
483490 PrintList ( allCommands ) ;
@@ -925,6 +932,29 @@ void SqlCapturer(object sender, DbCommandEventArgs args)
925932 }
926933 }
927934
935+ [ Test ]
936+ public void SessionTagInUnion ( )
937+ {
938+ var allCommands = new List < string > ( ) ;
939+
940+ var session = Session . Demand ( ) ;
941+ using var outermost = session . Tag ( "outermost" ) ;
942+
943+ using ( var innerTx = session . OpenTransaction ( TransactionOpenMode . New ) ) {
944+ session . Events . DbCommandExecuting += SqlCapturer ;
945+ var left = session . Query . All < BusinessUnit > ( ) ;
946+ var right = session . Query . All < BusinessUnit > ( ) ;
947+ var result = left . Union ( right ) . ToArray ( ) ;
948+ session . Events . DbCommandExecuting -= SqlCapturer ;
949+
950+ Assert . That ( allCommands . Count , Is . EqualTo ( 1 ) ) ;
951+ Assert . AreEqual ( Regex . Matches ( allCommands [ 0 ] , "outermost" ) . Count , 1 ) ;
952+ }
953+
954+ void SqlCapturer ( object sender , DbCommandEventArgs args ) =>
955+ allCommands . Add ( args . Command . CommandText ) ;
956+ }
957+
928958 private static bool CheckTag ( string query , string expectedComment , TagsLocation place )
929959 {
930960 return place switch {
0 commit comments