You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
Improve procost estimates for some text search functions.
The text search functions that involve parsing raw text into lexemes areremarkably CPU-intensive, so estimating them at the same cost as most otherbuilt-in functions seems like a mistake; moreover, doing so turns out todiscourage the optimizer from using functional indexes on these functions.After some debate, we've agreed to raise procost from 1 to 100 forto_tsvector(), plainto_tsvector(), to_tsquery(), ts_headline(),ts_match_tt(), and ts_match_tq(), which are all the text search functionsthat parse raw text.Also increase procost for the 2-argument form of ts_rewrite()(tsquery_rewrite_query); while this function doesn't do text parsing,it does execute a user-supplied SQL query, so its previous procost of 1 isclearly a drastic underestimate. It seems reasonable to assign it the samecost we assign to PL functions by default, so 100 is the number here too.I did not bother bumping catversion for this change, since it does notbreak catalog compatibility with the server executable nor result inany regression test changes.Per complaint from Andrew Gierth and subsequent discussion.
Copy file name to clipboardExpand all lines: src/include/catalog/pg_proc.h
+13-13Lines changed: 13 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -4494,8 +4494,8 @@ DATA(insert OID = 3625 ( tsvector_concatPGNSP PGUID 12 1 0 0 0 f f f f t f i
4494
4494
4495
4495
DATA(insert OID = 3634 ( ts_match_vqPGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 16 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_match_vq _null_ _null_ _null_ ));
4496
4496
DATA(insert OID = 3635 ( ts_match_qvPGNSP PGUID 12 1 0 0 0 f f f f t f i 2 0 16 "3615 3614" _null_ _null_ _null_ _null_ _null_ ts_match_qv _null_ _null_ _null_ ));
4497
-
DATA(insert OID = 3760 ( ts_match_ttPGNSP PGUID 123 0 0 0 f f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ ts_match_tt _null_ _null_ _null_ ));
4498
-
DATA(insert OID = 3761 ( ts_match_tqPGNSP PGUID 122 0 0 0 f f f f t f s 2 0 16 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_match_tq _null_ _null_ _null_ ));
4497
+
DATA(insert OID = 3760 ( ts_match_ttPGNSP PGUID 12100 0 0 0 f f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ ts_match_tt _null_ _null_ _null_ ));
4498
+
DATA(insert OID = 3761 ( ts_match_tqPGNSP PGUID 12100 0 0 0 f f f f t f s 2 0 16 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_match_tq _null_ _null_ _null_ ));
4499
4499
4500
4500
DATA(insert OID = 3648 ( gtsvector_compressPGNSP PGUID 12 1 0 0 0 f f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsvector_compress _null_ _null_ _null_ ));
4501
4501
DESCR("GiST tsvector support");
@@ -4554,7 +4554,7 @@ DESCR("show real useful query for GiST index");
4554
4554
4555
4555
DATA(insert OID = 3684 ( ts_rewritePGNSP PGUID 12 1 0 0 0 f f f f t f i 3 0 3615 "3615 3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite _null_ _null_ _null_ ));
4556
4556
DESCR("rewrite tsquery");
4557
-
DATA(insert OID = 3685 ( ts_rewritePGNSP PGUID 121 0 0 0 f f f f t f v 2 0 3615 "3615 25" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite_query _null_ _null_ _null_ ));
4557
+
DATA(insert OID = 3685 ( ts_rewritePGNSP PGUID 12100 0 0 0 f f f f t f v 2 0 3615 "3615 25" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite_query _null_ _null_ _null_ ));
4558
4558
DESCR("rewrite tsquery");
4559
4559
4560
4560
DATA(insert OID = 3695 ( gtsquery_compressPGNSP PGUID 12 1 0 0 0 f f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsquery_compress _null_ _null_ _null_ ));
@@ -4644,26 +4644,26 @@ DESCR("(internal)");
4644
4644
DATA(insert OID = 3741 ( thesaurus_lexizePGNSP PGUID 12 1 0 0 0 f f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ thesaurus_lexize _null_ _null_ _null_ ));
4645
4645
DESCR("(internal)");
4646
4646
4647
-
DATA(insert OID = 3743 ( ts_headlinePGNSP PGUID 121 0 0 0 f f f f t f i 4 0 25 "3734 25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_byid_opt _null_ _null_ _null_ ));
4647
+
DATA(insert OID = 3743 ( ts_headlinePGNSP PGUID 12100 0 0 0 f f f f t f i 4 0 25 "3734 25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_byid_opt _null_ _null_ _null_ ));
4648
4648
DESCR("generate headline");
4649
-
DATA(insert OID = 3744 ( ts_headlinePGNSP PGUID 121 0 0 0 f f f f t f i 3 0 25 "3734 25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_byid _null_ _null_ _null_ ));
4649
+
DATA(insert OID = 3744 ( ts_headlinePGNSP PGUID 12100 0 0 0 f f f f t f i 3 0 25 "3734 25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_byid _null_ _null_ _null_ ));
4650
4650
DESCR("generate headline");
4651
-
DATA(insert OID = 3754 ( ts_headlinePGNSP PGUID 121 0 0 0 f f f f t f s 3 0 25 "25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_opt _null_ _null_ _null_ ));
4651
+
DATA(insert OID = 3754 ( ts_headlinePGNSP PGUID 12100 0 0 0 f f f f t f s 3 0 25 "25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_opt _null_ _null_ _null_ ));
4652
4652
DESCR("generate headline");
4653
-
DATA(insert OID = 3755 ( ts_headlinePGNSP PGUID 121 0 0 0 f f f f t f s 2 0 25 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline _null_ _null_ _null_ ));
4653
+
DATA(insert OID = 3755 ( ts_headlinePGNSP PGUID 12100 0 0 0 f f f f t f s 2 0 25 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline _null_ _null_ _null_ ));
4654
4654
DESCR("generate headline");
4655
4655
4656
-
DATA(insert OID = 3745 ( to_tsvectorPGNSP PGUID 121 0 0 0 f f f f t f i 2 0 3614 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsvector_byid _null_ _null_ _null_ ));
4656
+
DATA(insert OID = 3745 ( to_tsvectorPGNSP PGUID 12100 0 0 0 f f f f t f i 2 0 3614 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsvector_byid _null_ _null_ _null_ ));
4657
4657
DESCR("transform to tsvector");
4658
-
DATA(insert OID = 3746 ( to_tsqueryPGNSP PGUID 121 0 0 0 f f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsquery_byid _null_ _null_ _null_ ));
4658
+
DATA(insert OID = 3746 ( to_tsqueryPGNSP PGUID 12100 0 0 0 f f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsquery_byid _null_ _null_ _null_ ));
4659
4659
DESCR("make tsquery");
4660
-
DATA(insert OID = 3747 ( plainto_tsqueryPGNSP PGUID 121 0 0 0 f f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery_byid _null_ _null_ _null_ ));
4660
+
DATA(insert OID = 3747 ( plainto_tsqueryPGNSP PGUID 12100 0 0 0 f f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery_byid _null_ _null_ _null_ ));
4661
4661
DESCR("transform to tsquery");
4662
-
DATA(insert OID = 3749 ( to_tsvectorPGNSP PGUID 121 0 0 0 f f f f t f s 1 0 3614 "25" _null_ _null_ _null_ _null_ _null_ to_tsvector _null_ _null_ _null_ ));
4662
+
DATA(insert OID = 3749 ( to_tsvectorPGNSP PGUID 12100 0 0 0 f f f f t f s 1 0 3614 "25" _null_ _null_ _null_ _null_ _null_ to_tsvector _null_ _null_ _null_ ));
4663
4663
DESCR("transform to tsvector");
4664
-
DATA(insert OID = 3750 ( to_tsqueryPGNSP PGUID 121 0 0 0 f f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ to_tsquery _null_ _null_ _null_ ));
4664
+
DATA(insert OID = 3750 ( to_tsqueryPGNSP PGUID 12100 0 0 0 f f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ to_tsquery _null_ _null_ _null_ ));
4665
4665
DESCR("make tsquery");
4666
-
DATA(insert OID = 3751 ( plainto_tsqueryPGNSP PGUID 121 0 0 0 f f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery _null_ _null_ _null_ ));
4666
+
DATA(insert OID = 3751 ( plainto_tsqueryPGNSP PGUID 12100 0 0 0 f f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery _null_ _null_ _null_ ));
4667
4667
DESCR("transform to tsquery");
4668
4668
4669
4669
DATA(insert OID = 3752 ( tsvector_update_triggerPGNSP PGUID 12 1 0 0 0 f f f f f f v 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ tsvector_update_trigger_byid _null_ _null_ _null_ ));