Skip to content

Commit 1af0137

Browse files
authored
feat(search): Set default dialect to 2 for Redis Search commands (#2895)
- The default dialect `DEFAULT_DIALECT` is now set to '2' - Automatically append DIALECT parameter to search commands when not explicitly specified
1 parent 558ebb4 commit 1af0137

16 files changed

+126
-81
lines changed

packages/search/lib/commands/AGGREGATE.spec.ts

+35-34
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import AGGREGATE from './AGGREGATE';
44
import { parseArgs } from '@redis/client/lib/commands/generic-transformers';
5+
import { DEFAULT_DIALECT } from '../dialect/default';
56

6-
describe('AGGREGATE', () => {
7+
describe('AGGREGATE', () => {
78
describe('transformArguments', () => {
89
it('without options', () => {
910
assert.deepEqual(
1011
parseArgs(AGGREGATE, 'index', '*'),
11-
['FT.AGGREGATE', 'index', '*']
12+
['FT.AGGREGATE', 'index', '*', 'DIALECT', DEFAULT_DIALECT]
1213
);
1314
});
1415

@@ -17,14 +18,14 @@ describe('AGGREGATE', () => {
1718
parseArgs(AGGREGATE, 'index', '*', {
1819
VERBATIM: true
1920
}),
20-
['FT.AGGREGATE', 'index', '*', 'VERBATIM']
21+
['FT.AGGREGATE', 'index', '*', 'VERBATIM', 'DIALECT', DEFAULT_DIALECT]
2122
);
2223
});
2324

2425
it('with ADDSCORES', () => {
2526
assert.deepEqual(
2627
parseArgs(AGGREGATE, 'index', '*', { ADDSCORES: true }),
27-
['FT.AGGREGATE', 'index', '*', 'ADDSCORES']
28+
['FT.AGGREGATE', 'index', '*', 'ADDSCORES', 'DIALECT', DEFAULT_DIALECT]
2829
);
2930
});
3031

@@ -36,7 +37,7 @@ describe('AGGREGATE', () => {
3637
parseArgs(AGGREGATE, 'index', '*', {
3738
LOAD: '@property'
3839
}),
39-
['FT.AGGREGATE', 'index', '*', 'LOAD', '1', '@property']
40+
['FT.AGGREGATE', 'index', '*', 'LOAD', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
4041
);
4142
});
4243

@@ -47,7 +48,7 @@ describe('AGGREGATE', () => {
4748
identifier: '@property'
4849
}
4950
}),
50-
['FT.AGGREGATE', 'index', '*', 'LOAD', '1', '@property']
51+
['FT.AGGREGATE', 'index', '*', 'LOAD', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
5152
);
5253
});
5354
});
@@ -60,7 +61,7 @@ describe('AGGREGATE', () => {
6061
AS: 'alias'
6162
}
6263
}),
63-
['FT.AGGREGATE', 'index', '*', 'LOAD', '3', '@property', 'AS', 'alias']
64+
['FT.AGGREGATE', 'index', '*', 'LOAD', '3', '@property', 'AS', 'alias', 'DIALECT', DEFAULT_DIALECT]
6465
);
6566
});
6667
});
@@ -70,7 +71,7 @@ describe('AGGREGATE', () => {
7071
parseArgs(AGGREGATE, 'index', '*', {
7172
LOAD: ['@1', '@2']
7273
}),
73-
['FT.AGGREGATE', 'index', '*', 'LOAD', '2', '@1', '@2']
74+
['FT.AGGREGATE', 'index', '*', 'LOAD', '2', '@1', '@2', 'DIALECT', DEFAULT_DIALECT]
7475
);
7576
});
7677
});
@@ -89,7 +90,7 @@ describe('AGGREGATE', () => {
8990
}
9091
}]
9192
}),
92-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT', '0']
93+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT', '0', 'DIALECT', DEFAULT_DIALECT]
9394
);
9495
});
9596

@@ -104,7 +105,7 @@ describe('AGGREGATE', () => {
104105
}
105106
}]
106107
}),
107-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT', '0', 'AS', 'count']
108+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT', '0', 'AS', 'count', 'DIALECT', DEFAULT_DIALECT]
108109
);
109110
});
110111
});
@@ -121,7 +122,7 @@ describe('AGGREGATE', () => {
121122
}
122123
}]
123124
}),
124-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '1', '@property', 'REDUCE', 'COUNT', '0']
125+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '1', '@property', 'REDUCE', 'COUNT', '0', 'DIALECT', DEFAULT_DIALECT]
125126
);
126127
});
127128

@@ -136,7 +137,7 @@ describe('AGGREGATE', () => {
136137
}
137138
}]
138139
}),
139-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '2', '@1', '@2', 'REDUCE', 'COUNT', '0']
140+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '2', '@1', '@2', 'REDUCE', 'COUNT', '0', 'DIALECT', DEFAULT_DIALECT]
140141
);
141142
});
142143
});
@@ -153,7 +154,7 @@ describe('AGGREGATE', () => {
153154
}
154155
}]
155156
}),
156-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT_DISTINCT', '1', '@property']
157+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT_DISTINCT', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
157158
);
158159
});
159160

@@ -168,7 +169,7 @@ describe('AGGREGATE', () => {
168169
}
169170
}]
170171
}),
171-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT_DISTINCTISH', '1', '@property']
172+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'COUNT_DISTINCTISH', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
172173
);
173174
});
174175

@@ -183,7 +184,7 @@ describe('AGGREGATE', () => {
183184
}
184185
}]
185186
}),
186-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'SUM', '1', '@property']
187+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'SUM', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
187188
);
188189
});
189190

@@ -198,7 +199,7 @@ describe('AGGREGATE', () => {
198199
}
199200
}]
200201
}),
201-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'MIN', '1', '@property']
202+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'MIN', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
202203
);
203204
});
204205

@@ -213,7 +214,7 @@ describe('AGGREGATE', () => {
213214
}
214215
}]
215216
}),
216-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'MAX', '1', '@property']
217+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'MAX', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
217218
);
218219
});
219220

@@ -228,7 +229,7 @@ describe('AGGREGATE', () => {
228229
}
229230
}]
230231
}),
231-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'AVG', '1', '@property']
232+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'AVG', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
232233
);
233234
});
234235
it('STDDEV', () => {
@@ -242,7 +243,7 @@ describe('AGGREGATE', () => {
242243
}
243244
}]
244245
}),
245-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'STDDEV', '1', '@property']
246+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'STDDEV', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
246247
);
247248
});
248249

@@ -258,7 +259,7 @@ describe('AGGREGATE', () => {
258259
}
259260
}]
260261
}),
261-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'QUANTILE', '2', '@property', '0.5']
262+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'QUANTILE', '2', '@property', '0.5', 'DIALECT', DEFAULT_DIALECT]
262263
);
263264
});
264265

@@ -273,7 +274,7 @@ describe('AGGREGATE', () => {
273274
}
274275
}]
275276
}),
276-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'TOLIST', '1', '@property']
277+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'TOLIST', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
277278
);
278279
});
279280

@@ -289,7 +290,7 @@ describe('AGGREGATE', () => {
289290
}
290291
}]
291292
}),
292-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '1', '@property']
293+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '1', '@property', 'DIALECT', DEFAULT_DIALECT]
293294
);
294295
});
295296

@@ -307,7 +308,7 @@ describe('AGGREGATE', () => {
307308
}
308309
}]
309310
}),
310-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '3', '@property', 'BY', '@by']
311+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '3', '@property', 'BY', '@by', 'DIALECT', DEFAULT_DIALECT]
311312
);
312313
});
313314

@@ -326,7 +327,7 @@ describe('AGGREGATE', () => {
326327
}
327328
}]
328329
}),
329-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '3', '@property', 'BY', '@by']
330+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '3', '@property', 'BY', '@by', 'DIALECT', DEFAULT_DIALECT]
330331
);
331332
});
332333
});
@@ -346,7 +347,7 @@ describe('AGGREGATE', () => {
346347
}
347348
}]
348349
}),
349-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '4', '@property', 'BY', '@by', 'ASC']
350+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'FIRST_VALUE', '4', '@property', 'BY', '@by', 'ASC', 'DIALECT', DEFAULT_DIALECT]
350351
);
351352
});
352353
});
@@ -364,7 +365,7 @@ describe('AGGREGATE', () => {
364365
}
365366
}]
366367
}),
367-
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'RANDOM_SAMPLE', '2', '@property', '1']
368+
['FT.AGGREGATE', 'index', '*', 'GROUPBY', '0', 'REDUCE', 'RANDOM_SAMPLE', '2', '@property', '1', 'DIALECT', DEFAULT_DIALECT]
368369
);
369370
});
370371
});
@@ -378,7 +379,7 @@ describe('AGGREGATE', () => {
378379
BY: '@by'
379380
}]
380381
}),
381-
['FT.AGGREGATE', 'index', '*', 'SORTBY', '1', '@by']
382+
['FT.AGGREGATE', 'index', '*', 'SORTBY', '1', '@by', 'DIALECT', DEFAULT_DIALECT]
382383
);
383384
});
384385

@@ -390,7 +391,7 @@ describe('AGGREGATE', () => {
390391
BY: ['@1', '@2']
391392
}]
392393
}),
393-
['FT.AGGREGATE', 'index', '*', 'SORTBY', '2', '@1', '@2']
394+
['FT.AGGREGATE', 'index', '*', 'SORTBY', '2', '@1', '@2', 'DIALECT', DEFAULT_DIALECT]
394395
);
395396
});
396397

@@ -403,7 +404,7 @@ describe('AGGREGATE', () => {
403404
MAX: 1
404405
}]
405406
}),
406-
['FT.AGGREGATE', 'index', '*', 'SORTBY', '3', '@by', 'MAX', '1']
407+
['FT.AGGREGATE', 'index', '*', 'SORTBY', '3', '@by', 'MAX', '1', 'DIALECT', DEFAULT_DIALECT]
407408
);
408409
});
409410
});
@@ -417,7 +418,7 @@ describe('AGGREGATE', () => {
417418
AS: 'as'
418419
}]
419420
}),
420-
['FT.AGGREGATE', 'index', '*', 'APPLY', '@field + 1', 'AS', 'as']
421+
['FT.AGGREGATE', 'index', '*', 'APPLY', '@field + 1', 'AS', 'as', 'DIALECT', DEFAULT_DIALECT]
421422
);
422423
});
423424

@@ -430,7 +431,7 @@ describe('AGGREGATE', () => {
430431
size: 1
431432
}]
432433
}),
433-
['FT.AGGREGATE', 'index', '*', 'LIMIT', '0', '1']
434+
['FT.AGGREGATE', 'index', '*', 'LIMIT', '0', '1', 'DIALECT', DEFAULT_DIALECT]
434435
);
435436
});
436437

@@ -442,7 +443,7 @@ describe('AGGREGATE', () => {
442443
expression: '@field != ""'
443444
}]
444445
}),
445-
['FT.AGGREGATE', 'index', '*', 'FILTER', '@field != ""']
446+
['FT.AGGREGATE', 'index', '*', 'FILTER', '@field != ""', 'DIALECT', DEFAULT_DIALECT]
446447
);
447448
});
448449
});
@@ -454,7 +455,7 @@ describe('AGGREGATE', () => {
454455
param: 'value'
455456
}
456457
}),
457-
['FT.AGGREGATE', 'index', '*', 'PARAMS', '2', 'param', 'value']
458+
['FT.AGGREGATE', 'index', '*', 'PARAMS', '2', 'param', 'value', 'DIALECT', DEFAULT_DIALECT]
458459
);
459460
});
460461

@@ -470,7 +471,7 @@ describe('AGGREGATE', () => {
470471
it('with TIMEOUT', () => {
471472
assert.deepEqual(
472473
parseArgs(AGGREGATE, 'index', '*', { TIMEOUT: 10 }),
473-
['FT.AGGREGATE', 'index', '*', 'TIMEOUT', '10']
474+
['FT.AGGREGATE', 'index', '*', 'TIMEOUT', '10', 'DIALECT', DEFAULT_DIALECT]
474475
);
475476
});
476477
});

packages/search/lib/commands/AGGREGATE.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ArrayReply, BlobStringReply, Command, MapReply, NumberReply, RedisArgum
33
import { RediSearchProperty } from './CREATE';
44
import { FtSearchParams, parseParamsArgument } from './SEARCH';
55
import { transformTuplesReply } from '@redis/client/dist/lib/commands/generic-transformers';
6+
import { DEFAULT_DIALECT } from '../dialect/default';
67

78
type LoadField = RediSearchProperty | {
89
identifier: RediSearchProperty;
@@ -12,12 +13,12 @@ type LoadField = RediSearchProperty | {
1213
export const FT_AGGREGATE_STEPS = {
1314
GROUPBY: 'GROUPBY',
1415
SORTBY: 'SORTBY',
15-
APPLY: 'APPLY',
16+
APPLY: 'APPLY',
1617
LIMIT: 'LIMIT',
1718
FILTER: 'FILTER'
1819
} as const;
1920

20-
type FT_AGGREGATE_STEPS = typeof FT_AGGREGATE_STEPS;
21+
type FT_AGGREGATE_STEPS = typeof FT_AGGREGATE_STEPS;
2122

2223
export type FtAggregateStep = FT_AGGREGATE_STEPS[keyof FT_AGGREGATE_STEPS];
2324

@@ -249,8 +250,10 @@ export function parseAggregateOptions(parser: CommandParser , options?: FtAggreg
249250

250251
parseParamsArgument(parser, options?.PARAMS);
251252

252-
if (options?.DIALECT !== undefined) {
253+
if (options?.DIALECT) {
253254
parser.push('DIALECT', options.DIALECT.toString());
255+
} else {
256+
parser.push('DIALECT', DEFAULT_DIALECT);
254257
}
255258
}
256259

packages/search/lib/commands/AGGREGATE_WITHCURSOR.spec.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import AGGREGATE_WITHCURSOR from './AGGREGATE_WITHCURSOR';
44
import { parseArgs } from '@redis/client/lib/commands/generic-transformers';
5+
import { DEFAULT_DIALECT } from '../dialect/default';
56

67
describe('AGGREGATE WITHCURSOR', () => {
78
describe('transformArguments', () => {
89
it('without options', () => {
910
assert.deepEqual(
1011
parseArgs(AGGREGATE_WITHCURSOR, 'index', '*'),
11-
['FT.AGGREGATE', 'index', '*', 'WITHCURSOR']
12+
['FT.AGGREGATE', 'index', '*', 'DIALECT', DEFAULT_DIALECT, 'WITHCURSOR']
1213
);
1314
});
1415

@@ -17,7 +18,7 @@ describe('AGGREGATE WITHCURSOR', () => {
1718
parseArgs(AGGREGATE_WITHCURSOR, 'index', '*', {
1819
COUNT: 1
1920
}),
20-
['FT.AGGREGATE', 'index', '*', 'WITHCURSOR', 'COUNT', '1']
21+
['FT.AGGREGATE', 'index', '*', 'DIALECT', DEFAULT_DIALECT, 'WITHCURSOR', 'COUNT', '1']
2122
);
2223
});
2324

@@ -26,7 +27,7 @@ describe('AGGREGATE WITHCURSOR', () => {
2627
parseArgs(AGGREGATE_WITHCURSOR, 'index', '*', {
2728
MAXIDLE: 1
2829
}),
29-
['FT.AGGREGATE', 'index', '*', 'WITHCURSOR', 'MAXIDLE', '1']
30+
['FT.AGGREGATE', 'index', '*', 'DIALECT', DEFAULT_DIALECT, 'WITHCURSOR', 'MAXIDLE', '1']
3031
);
3132
});
3233
});

packages/search/lib/commands/EXPLAIN.spec.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import EXPLAIN from './EXPLAIN';
33
import { parseArgs } from '@redis/client/lib/commands/generic-transformers';
44
import testUtils, { GLOBAL } from '../test-utils';
55
import { SCHEMA_FIELD_TYPE } from './CREATE';
6+
import { DEFAULT_DIALECT } from '../dialect/default';
67

78
describe('EXPLAIN', () => {
89
describe('transformArguments', () => {
910
it('simple', () => {
1011
assert.deepEqual(
1112
parseArgs(EXPLAIN, 'index', '*'),
12-
['FT.EXPLAIN', 'index', '*']
13+
['FT.EXPLAIN', 'index', '*', 'DIALECT', DEFAULT_DIALECT]
1314
);
1415
});
1516

@@ -20,7 +21,7 @@ describe('EXPLAIN', () => {
2021
param: 'value'
2122
}
2223
}),
23-
['FT.EXPLAIN', 'index', '*', 'PARAMS', '2', 'param', 'value']
24+
['FT.EXPLAIN', 'index', '*', 'PARAMS', '2', 'param', 'value', 'DIALECT', DEFAULT_DIALECT]
2425
);
2526
});
2627

0 commit comments

Comments
 (0)