@@ -717,7 +717,7 @@ public SelectImpl WhereDynamicFilter(DynamicFilterInfo filter)
717717 string ParseDynamicFilter ( DynamicFilterInfo filter )
718718 {
719719 var replacedFilter = new DynamicFilterInfo ( ) ;
720- var replacedMap = new List < NativeTuple < string , string , string > > ( ) ;
720+ var replacedMap = new List < NativeTuple < string , string , string , DynamicFilterInfo > > ( ) ;
721721 LocalCloneFilter ( filter , replacedFilter ) ;
722722 var oldWhere = _selectProvider . _where . ToString ( ) ;
723723 var newWhere = "" ;
@@ -734,14 +734,13 @@ string ParseDynamicFilter(DynamicFilterInfo filter)
734734 foreach ( var rm in replacedMap )
735735 {
736736 var find = $ "{ _selectProvider . _tables [ 0 ] . Alias } .{ _common . QuoteSqlName ( rm . Item1 ) } ";
737- while ( true )
737+ var forend = rm . Item4 . Operator == DynamicFilterOperator . DateRange ||
738+ rm . Item4 . Operator == DynamicFilterOperator . Range ? 2 : 1 ;
739+ for ( var forstart = 0 ; forstart < forend ; forstart ++ )
738740 {
739- var idx = newWhere . IndexOf ( find ) ;
740- if ( idx != - 1 && ! Regex . IsMatch ( newWhere . Substring ( idx - 1 , 1 ) , @"[\w_]" ) )
741- newWhere = $ "{ newWhere . Substring ( 0 , idx ) } { rm . Item2 } { newWhere . Substring ( idx + find . Length ) } ";
742- else
743- break ;
744- }
741+ var idx = newWhere . IndexOf ( find ) ;
742+ if ( idx != - 1 && ! Regex . IsMatch ( newWhere . Substring ( idx - 1 , 1 ) , @"[\w_]" ) ) newWhere = $ "{ newWhere . Substring ( 0 , idx ) } { rm . Item2 } { newWhere . Substring ( idx + find . Length ) } ";
743+ }
745744 }
746745 return newWhere ;
747746
@@ -760,7 +759,7 @@ void LocalCloneFilter(DynamicFilterInfo source, DynamicFilterInfo target)
760759 target . Field = pname ;
761760 else
762761 target . Field = TestDynamicFilterInfo . _dictTypeToPropertyname [ typeof ( string ) ] ;
763- replacedMap . Add ( NativeTuple . Create ( target . Field , parseResult . Item1 , parseResult . Item3 ) ) ;
762+ replacedMap . Add ( NativeTuple . Create ( target . Field , parseResult . Item1 , parseResult . Item3 , source ) ) ;
764763 }
765764 }
766765 if ( source . Filters ? . Any ( ) == true )
0 commit comments