@@ -16,6 +16,9 @@ psql:tsearch2.sql:401: NOTICE: argument type tsquery is only a shell
1616psql:tsearch2.sql:543: NOTICE: type "gtsvector" is not yet defined
1717DETAIL: Creating a shell type definition.
1818psql:tsearch2.sql:548: NOTICE: argument type gtsvector is only a shell
19+ psql:tsearch2.sql:997: NOTICE: type "gtsq" is not yet defined
20+ DETAIL: Creating a shell type definition.
21+ psql:tsearch2.sql:1002: NOTICE: argument type gtsq is only a shell
1922--tsvector
2023SELECT '1'::tsvector;
2124 tsvector
@@ -342,6 +345,286 @@ SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a';
342345 'the wether':dc & ' sKies ':BC & a:d b:a
343346(1 row)
344347
348+ select 'a' < 'b & c'::tsquery;
349+ ?column?
350+ ----------
351+ t
352+ (1 row)
353+
354+ select 'a' > 'b & c'::tsquery;
355+ ?column?
356+ ----------
357+ f
358+ (1 row)
359+
360+ select 'a | f' < 'b & c'::tsquery;
361+ ?column?
362+ ----------
363+ t
364+ (1 row)
365+
366+ select 'a | ff' < 'b & c'::tsquery;
367+ ?column?
368+ ----------
369+ f
370+ (1 row)
371+
372+ select 'a | f | g' < 'b & c'::tsquery;
373+ ?column?
374+ ----------
375+ f
376+ (1 row)
377+
378+ select numnode( 'new'::tsquery );
379+ numnode
380+ ---------
381+ 1
382+ (1 row)
383+
384+ select numnode( 'new & york'::tsquery );
385+ numnode
386+ ---------
387+ 3
388+ (1 row)
389+
390+ select numnode( 'new & york | qwery'::tsquery );
391+ numnode
392+ ---------
393+ 5
394+ (1 row)
395+
396+ create table test_tsquery (txtkeyword text, txtsample text);
397+ \set ECHO none
398+ alter table test_tsquery add column keyword tsquery;
399+ update test_tsquery set keyword = to_tsquery('default', txtkeyword);
400+ alter table test_tsquery add column sample tsquery;
401+ update test_tsquery set sample = to_tsquery('default', txtsample::text);
402+ create unique index bt_tsq on test_tsquery (keyword);
403+ select count(*) from test_tsquery where keyword < 'new & york';
404+ count
405+ -------
406+ 1
407+ (1 row)
408+
409+ select count(*) from test_tsquery where keyword <= 'new & york';
410+ count
411+ -------
412+ 2
413+ (1 row)
414+
415+ select count(*) from test_tsquery where keyword = 'new & york';
416+ count
417+ -------
418+ 1
419+ (1 row)
420+
421+ select count(*) from test_tsquery where keyword >= 'new & york';
422+ count
423+ -------
424+ 3
425+ (1 row)
426+
427+ select count(*) from test_tsquery where keyword > 'new & york';
428+ count
429+ -------
430+ 2
431+ (1 row)
432+
433+ set enable_seqscan=off;
434+ select count(*) from test_tsquery where keyword < 'new & york';
435+ count
436+ -------
437+ 1
438+ (1 row)
439+
440+ select count(*) from test_tsquery where keyword <= 'new & york';
441+ count
442+ -------
443+ 2
444+ (1 row)
445+
446+ select count(*) from test_tsquery where keyword = 'new & york';
447+ count
448+ -------
449+ 1
450+ (1 row)
451+
452+ select count(*) from test_tsquery where keyword >= 'new & york';
453+ count
454+ -------
455+ 3
456+ (1 row)
457+
458+ select count(*) from test_tsquery where keyword > 'new & york';
459+ count
460+ -------
461+ 2
462+ (1 row)
463+
464+ set enable_seqscan=on;
465+ select rewrite('foo & bar & qq & new & york', 'new & york'::tsquery, 'big & apple | nyc | new & york & city');
466+ rewrite
467+ ----------------------------------------------------------------------------------
468+ 'qq' & 'foo' & 'bar' & ( 'city' & 'york' & 'new' | ( 'nyc' | 'apple' & 'big' ) )
469+ (1 row)
470+
471+ select rewrite('moscow', 'select keyword, sample from test_tsquery'::text );
472+ rewrite
473+ ---------------------
474+ 'moskva' | 'moscow'
475+ (1 row)
476+
477+ select rewrite('moscow & hotel', 'select keyword, sample from test_tsquery'::text );
478+ rewrite
479+ -----------------------------------
480+ ( 'moskva' | 'moscow' ) & 'hotel'
481+ (1 row)
482+
483+ select rewrite('bar & new & qq & foo & york', 'select keyword, sample from test_tsquery'::text );
484+ rewrite
485+ -------------------------------------------------------------------------------------
486+ 'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
487+ (1 row)
488+
489+ select rewrite( ARRAY['moscow', keyword, sample] ) from test_tsquery;
490+ rewrite
491+ ---------------------
492+ 'moskva' | 'moscow'
493+ (1 row)
494+
495+ select rewrite( ARRAY['moscow & hotel', keyword, sample] ) from test_tsquery;
496+ rewrite
497+ -----------------------------------
498+ ( 'moskva' | 'moscow' ) & 'hotel'
499+ (1 row)
500+
501+ select rewrite( ARRAY['bar & new & qq & foo & york', keyword, sample] ) from test_tsquery;
502+ rewrite
503+ -------------------------------------------------------------------------------------
504+ 'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
505+ (1 row)
506+
507+ select keyword from test_tsquery where keyword @ 'new';
508+ keyword
509+ ----------------
510+ 'new' & 'york'
511+ (1 row)
512+
513+ select keyword from test_tsquery where keyword @ 'moscow';
514+ keyword
515+ ----------
516+ 'moscow'
517+ (1 row)
518+
519+ select keyword from test_tsquery where keyword ~ 'new';
520+ keyword
521+ ---------
522+ (0 rows)
523+
524+ select keyword from test_tsquery where keyword ~ 'moscow';
525+ keyword
526+ ----------
527+ 'moscow'
528+ (1 row)
529+
530+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where keyword ~ query;
531+ rewrite
532+ ---------------------
533+ 'moskva' | 'moscow'
534+ (1 row)
535+
536+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where keyword ~ query;
537+ rewrite
538+ -----------------------------------
539+ ( 'moskva' | 'moscow' ) & 'hotel'
540+ (1 row)
541+
542+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where keyword ~ query;
543+ rewrite
544+ -------------------------------------------------------------------------------------
545+ 'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
546+ (1 row)
547+
548+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where query @ keyword;
549+ rewrite
550+ ---------------------
551+ 'moskva' | 'moscow'
552+ (1 row)
553+
554+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where query @ keyword;
555+ rewrite
556+ -----------------------------------
557+ ( 'moskva' | 'moscow' ) & 'hotel'
558+ (1 row)
559+
560+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where query @ keyword;
561+ rewrite
562+ -------------------------------------------------------------------------------------
563+ 'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
564+ (1 row)
565+
566+ create index qq on test_tsquery using gist (keyword gist_tp_tsquery_ops);
567+ set enable_seqscan='off';
568+ select keyword from test_tsquery where keyword @ 'new';
569+ keyword
570+ ----------------
571+ 'new' & 'york'
572+ (1 row)
573+
574+ select keyword from test_tsquery where keyword @ 'moscow';
575+ keyword
576+ ----------
577+ 'moscow'
578+ (1 row)
579+
580+ select keyword from test_tsquery where keyword ~ 'new';
581+ keyword
582+ ---------
583+ (0 rows)
584+
585+ select keyword from test_tsquery where keyword ~ 'moscow';
586+ keyword
587+ ----------
588+ 'moscow'
589+ (1 row)
590+
591+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where keyword ~ query;
592+ rewrite
593+ ---------------------
594+ 'moskva' | 'moscow'
595+ (1 row)
596+
597+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where keyword ~ query;
598+ rewrite
599+ -----------------------------------
600+ ( 'moskva' | 'moscow' ) & 'hotel'
601+ (1 row)
602+
603+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where keyword ~ query;
604+ rewrite
605+ -------------------------------------------------------------------------------------
606+ 'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
607+ (1 row)
608+
609+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where query @ keyword;
610+ rewrite
611+ ---------------------
612+ 'moskva' | 'moscow'
613+ (1 row)
614+
615+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where query @ keyword;
616+ rewrite
617+ -----------------------------------
618+ ( 'moskva' | 'moscow' ) & 'hotel'
619+ (1 row)
620+
621+ select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where query @ keyword;
622+ rewrite
623+ -------------------------------------------------------------------------------------
624+ 'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
625+ (1 row)
626+
627+ set enable_seqscan='on';
345628select lexize('simple', 'ASD56 hsdkf');
346629 lexize
347630-----------------