File tree Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -325,6 +325,14 @@ export function canonifyFilter(filter: Filter): string {
325
325
filter . op . toString ( ) +
326
326
canonicalId ( filter . value )
327
327
) ;
328
+ } else if ( compositeFilterIsFlatConjunction ( filter ) ) {
329
+ // Older SDK versions use an implicit AND operation between their filters.
330
+ // In the new SDK versions, the developer may use an explicit AND filter.
331
+ // To stay consistent with the old usages, we add a special case to ensure
332
+ // the canonical ID for these two are the same. For example:
333
+ // `col.whereEquals("a", 1).whereEquals("b", 2)` should have the same
334
+ // canonical ID as `col.where(and(equals("a",1), equals("b",2)))`.
335
+ return filter . filters . map ( filter => canonifyFilter ( filter ) ) . join ( ',' ) ;
328
336
} else {
329
337
// filter instanceof CompositeFilter
330
338
const canonicalIdsString = filter . filters
Original file line number Diff line number Diff line change @@ -25,7 +25,9 @@ import {
25
25
FieldFilter ,
26
26
Operator
27
27
} from '../../../src/core/filter' ;
28
- import { andFilter , filter , orFilter } from '../../util/helpers' ;
28
+ import { queryToTarget } from '../../../src/core/query' ;
29
+ import { canonifyTarget } from '../../../src/core/target' ;
30
+ import { andFilter , filter , orFilter , query } from '../../util/helpers' ;
29
31
30
32
describe ( 'FieldFilter' , ( ) => {
31
33
it ( 'exposes field filter members' , ( ) => {
@@ -93,4 +95,14 @@ describe('CompositeFilter', () => {
93
95
expect ( compositeFilterIsFlat ( orFilter2 ) ) . false ;
94
96
expect ( compositeFilterIsFlatConjunction ( orFilter2 ) ) . false ;
95
97
} ) ;
98
+
99
+ it ( 'computes canonical id of flat conjunctions' , ( ) => {
100
+ const target1 = query ( 'col' , a , b , c ) ;
101
+
102
+ const target2 = query ( 'col' , andFilter ( a , b , c ) ) ;
103
+
104
+ expect ( canonifyTarget ( queryToTarget ( target1 ) ) ) . to . equal (
105
+ canonifyTarget ( queryToTarget ( target2 ) )
106
+ ) ;
107
+ } ) ;
96
108
} ) ;
You can’t perform that action at this time.
0 commit comments