@@ -346,23 +346,23 @@ private SqlString GetSqlStringWithLimitsIfNeeded(QueryWriter queryWriter)
346
346
// The dialect can move the given parameters where he need, what it can't do is generates new parameters, losing the BackTrack.
347
347
var dialect = sessionFactory . Dialect ;
348
348
return dialect . GetLimitString ( queryWriter . ToSqlString ( ) ,
349
- queryWriter . Skip . HasValue
350
- ? ( int ? ) dialect . GetOffsetValue ( queryWriter . Skip . Value )
351
- : null ,
352
- queryWriter . Take . HasValue
353
- ? ( int ? ) dialect . GetLimitValue ( queryWriter . Skip ?? 0 , queryWriter . Take . Value )
354
- : null ,
355
- skipParameter ,
356
- takeParameter ) ;
349
+ queryWriter . Skip . HasValue
350
+ ? ( int ? ) dialect . GetOffsetValue ( queryWriter . Skip . Value )
351
+ : null ,
352
+ queryWriter . Take . HasValue
353
+ ? ( int ? ) dialect . GetLimitValue ( queryWriter . Skip ?? 0 , queryWriter . Take . Value )
354
+ : null ,
355
+ skipParameter ,
356
+ takeParameter ) ;
357
357
}
358
358
359
359
private void Skip ( IASTNode node )
360
360
{
361
- var queryWriter = ( QueryWriter ) writer ;
361
+ var queryWriter = ( QueryWriter ) writer ;
362
362
var pnode = node as ParameterNode ;
363
363
if ( pnode != null )
364
364
{
365
- queryWriter . SkipParameter = ( IPageableParameterSpecification ) pnode . HqlParameterSpecification ;
365
+ queryWriter . SkipParameter = ( IPageableParameterSpecification ) pnode . HqlParameterSpecification ;
366
366
collectedParameters . Add ( pnode . HqlParameterSpecification ) ;
367
367
return ;
368
368
}
@@ -371,11 +371,11 @@ private void Skip(IASTNode node)
371
371
372
372
private void Take ( IASTNode node )
373
373
{
374
- var queryWriter = ( QueryWriter ) writer ;
374
+ var queryWriter = ( QueryWriter ) writer ;
375
375
var pnode = node as ParameterNode ;
376
376
if ( pnode != null )
377
377
{
378
- queryWriter . TakeParameter = ( IPageableParameterSpecification ) pnode . HqlParameterSpecification ;
378
+ queryWriter . TakeParameter = ( IPageableParameterSpecification ) pnode . HqlParameterSpecification ;
379
379
collectedParameters . Add ( pnode . HqlParameterSpecification ) ;
380
380
return ;
381
381
}
@@ -389,7 +389,7 @@ private void BeginBitwiseOp(string op)
389
389
return ;
390
390
391
391
outputStack . Insert ( 0 , writer ) ;
392
- writer = new BitwiseOperation ( ) ;
392
+ writer = new BitwiseOpWriter ( ) ;
393
393
}
394
394
395
395
private void EndBitwiseOp ( string op )
@@ -398,9 +398,10 @@ private void EndBitwiseOp(string op)
398
398
if ( function == null )
399
399
return ;
400
400
401
- var functionArguments = ( BitwiseOperation ) writer ;
401
+ var functionArguments = ( BitwiseOpWriter ) writer ;
402
402
writer = outputStack [ 0 ] ;
403
403
outputStack . RemoveAt ( 0 ) ;
404
+
404
405
Out ( function . Render ( functionArguments . Args , sessionFactory ) ) ;
405
406
}
406
407
@@ -557,9 +558,31 @@ public void CommaBetweenParameters(string comma)
557
558
558
559
#endregion
559
560
561
+ #region Nested type: ISqlWriter
562
+
563
+ /// <summary>
564
+ /// Writes SQL fragments.
565
+ /// </summary>
566
+ private interface ISqlWriter
567
+ {
568
+ void Clause ( string clause ) ;
569
+ void Clause ( SqlString clause ) ;
570
+ void PushParameter ( Parameter parameter ) ;
571
+ /**
572
+ * todo remove this hack
573
+ * The parameter is either ", " or " , ". This is needed to pass sql generating tests as the old
574
+ * sql generator uses " , " in the WHERE and ", " in SELECT.
575
+ *
576
+ * @param comma either " , " or ", "
577
+ */
578
+ void CommaBetweenParameters ( string comma ) ;
579
+ }
580
+
581
+ #endregion
582
+
560
583
#region Nested type: BitwiseOperation
561
584
562
- private class BitwiseOperation : ISqlWriter
585
+ private class BitwiseOpWriter : ISqlWriter
563
586
{
564
587
private readonly List < SqlString > _args = new List < SqlString > ( ) ;
565
588
@@ -593,27 +616,5 @@ public IList Args
593
616
}
594
617
595
618
#endregion
596
-
597
- #region Nested type: ISqlWriter
598
-
599
- /// <summary>
600
- /// Writes SQL fragments.
601
- /// </summary>
602
- private interface ISqlWriter
603
- {
604
- void Clause ( string clause ) ;
605
- void Clause ( SqlString clause ) ;
606
- void PushParameter ( Parameter parameter ) ;
607
- /**
608
- * todo remove this hack
609
- * The parameter is either ", " or " , ". This is needed to pass sql generating tests as the old
610
- * sql generator uses " , " in the WHERE and ", " in SELECT.
611
- *
612
- * @param comma either " , " or ", "
613
- */
614
- void CommaBetweenParameters ( string comma ) ;
615
- }
616
-
617
- #endregion
618
619
}
619
620
}
0 commit comments