File tree 3 files changed +45
-1
lines changed
3 files changed +45
-1
lines changed Original file line number Diff line number Diff line change @@ -455,7 +455,9 @@ cleanOpStack(TSQueryParserState state,
455
455
456
456
while (* lenstack )
457
457
{
458
- if (opPriority > OP_PRIORITY (stack [* lenstack - 1 ].op ))
458
+ /* NOT is right associative unlike to others */
459
+ if ((op != OP_NOT && opPriority > OP_PRIORITY (stack [* lenstack - 1 ].op )) ||
460
+ (op == OP_NOT && opPriority >= OP_PRIORITY (stack [* lenstack - 1 ].op )))
459
461
break ;
460
462
461
463
(* lenstack )-- ;
Original file line number Diff line number Diff line change @@ -330,6 +330,42 @@ SELECT 'a:* & nbb:*ac | doo:a* | goo'::tsquery;
330
330
'a':* & 'nbb':*AC | 'doo':*A | 'goo'
331
331
(1 row)
332
332
333
+ SELECT '!!b'::tsquery;
334
+ tsquery
335
+ ---------
336
+ !!'b'
337
+ (1 row)
338
+
339
+ SELECT '!!!b'::tsquery;
340
+ tsquery
341
+ ---------
342
+ !!!'b'
343
+ (1 row)
344
+
345
+ SELECT '!(!b)'::tsquery;
346
+ tsquery
347
+ ---------
348
+ !!'b'
349
+ (1 row)
350
+
351
+ SELECT 'a & !!b'::tsquery;
352
+ tsquery
353
+ -------------
354
+ 'a' & !!'b'
355
+ (1 row)
356
+
357
+ SELECT '!!a & b'::tsquery;
358
+ tsquery
359
+ -------------
360
+ !!'a' & 'b'
361
+ (1 row)
362
+
363
+ SELECT '!!a & !!b'::tsquery;
364
+ tsquery
365
+ ---------------
366
+ !!'a' & !!'b'
367
+ (1 row)
368
+
333
369
-- phrase transformation
334
370
SELECT 'a <-> (b|c)'::tsquery;
335
371
tsquery
Original file line number Diff line number Diff line change @@ -57,6 +57,12 @@ SELECT '1&(2&(4&(5|!6)))'::tsquery;
57
57
SELECT E' 1&(' ' 2' ' &(' ' 4' ' &(\\ |5 | ' ' 6 \\ ' ' !|&' ' )))' ::tsquery;
58
58
SELECT $$' \\ as' $$::tsquery;
59
59
SELECT ' a:* & nbb:*ac | doo:a* | goo' ::tsquery;
60
+ SELECT ' !!b' ::tsquery;
61
+ SELECT ' !!!b' ::tsquery;
62
+ SELECT ' !(!b)' ::tsquery;
63
+ SELECT ' a & !!b' ::tsquery;
64
+ SELECT ' !!a & b' ::tsquery;
65
+ SELECT ' !!a & !!b' ::tsquery;
60
66
61
67
-- phrase transformation
62
68
SELECT ' a <-> (b|c)' ::tsquery;
You can’t perform that action at this time.
0 commit comments