Postgres Full Text Search Jsonb Array column does not search for first row

Started by Dmytro Zhluktenkoover 6 years ago5 messagesgeneral
Jump to latest
#1Dmytro Zhluktenko
d1mnewz@gmail.com

<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns="http://www.w3.org/TR/REC-html40&quot;&gt;&lt;head&gt;&lt;meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:inherit;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
code
{mso-style-priority:99;
font-family:"Courier New";}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Courier New";}
span.pln
{mso-style-name:pln;}
span.com
{mso-style-name:com;}
span.kwd
{mso-style-name:kwd;}
span.pun
{mso-style-name:pun;}
span.str
{mso-style-name:str;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:42.5pt 42.5pt 42.5pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=UK><div class=WordSection1><p class=MsoNormal style='background:white;vertical-align:baseline'><span lang=EN-US style='color:black'>Hey, </span><span style='font-size:10.0pt;font-family:"inherit",serif;color:#242729'><o:p></o:p></span></p><div style='margin-bottom:3.75pt;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch: inherit;box-sizing: inherit;overflow-wrap: break-word'><p style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;vertical-align:baseline'><span style='font-size:11.5pt;color:#242729'>Pgsql is unable to perform indexed full text search onto jsonb column containing an array when looking for the first row in the table.<br><br></span><span lang=EN-US style='font-size:11.5pt;color:#242729'>Any ideas why this is happening?</span><span style='font-size:11.5pt;color:#242729'><o:p></o:p></span></p><p style='margin:0cm;margin-bottom:.0001pt;background:white;vertical-align:baseline;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch: inherit;line-height:inherit;box-sizing: inherit'><span style='font-size:11.5pt;color:#242729'>Table is nothing more than just&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>Id</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;and&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>Foo</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;which is&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>jsonb</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;column.<o:p></o:p></span></p><p style='margin:0cm;margin-bottom:.0001pt;background:white;vertical-align:baseline;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch: inherit;line-height:inherit;box-sizing: inherit'><span style='font-size:11.5pt;color:#242729'>The case is that I have an empty database with predefined gin index&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>repro_fts_idx</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;on&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;function.&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;creates&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>tsvector</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;from given&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>jsonb</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;column.<o:p></o:p></span></p><p style='margin:0cm;margin-bottom:.0001pt;background:white;vertical-align:baseline;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch: inherit;line-height:inherit;box-sizing: inherit'><span style='font-size:11.5pt;color:#242729'>When I add a new item into the table, I expect it to appear in&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></code><span style='font-size:11.5pt;color:#242729'>&nbsp;function in a form of&nbsp;</span><code><span style='font-size:10.0pt;font-family:"Calibri",sans-serif;color:#242729;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>tsvector</span></code><span style='font-size:11.5pt;color:#242729'>. It's there. Also, I expect that if I run full text search query onto it, it would appear in search results. However, this is not the case because it returns empty specifically for the first row. It simply does not take it into account. If I add one more row which is completely the same, the system is able to find it with the same query.<o:p></o:p></span></p><p style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;vertical-align:baseline;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch: inherit;line-height:inherit;box-sizing: inherit'><span style='font-size:11.5pt;color:#242729'>here is a small repro case:<o:p></o:p></span></p><pre style='background:#EFF0F1;vertical-align:baseline;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch: inherit;line-height:inherit;box-sizing: inherit;max-height: 600px;border-radius: 3px;overflow-wrap: normal;overflow:auto'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=com><span style='font-family:"inherit",serif;color:#858C93;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-- drop table cp.&quot;Repro&quot; cascade</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>CREATE</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>TABLE</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>    </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Id&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> serial </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>NOT</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>NULL</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>,</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>    </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Foo&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> jsonb </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>NULL</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>);</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>CREATE</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>OR</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> REPLACE </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>FUNCTION</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>in_t cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> RETURNS tsvector<o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> LANGUAGE plpgsql<o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> IMMUTABLE<o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>AS</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>$</span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>function</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>$</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>begin</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>    <o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>                        </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>return</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> to_tsvector</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>jsonb_agg</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>x</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>prop</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>))</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>                        </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>from</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>SELECT</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> CONCAT</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> jsonb_array_elements</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>in_t</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Foo&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-&gt;&gt;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'Name'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>,</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>' '</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>,</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> jsonb_array_elements</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>in_t</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Foo&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-&gt;&gt;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'Address'</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>as</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> prop </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>from</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> f</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>as</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> x</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>                        </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>END</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>                        </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>$</span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>function</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>$</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>CREATE</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>INDEX</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> repro_fts_idx </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>ON</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>USING</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> gin </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.*))</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>WITH</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>fastupdate</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>=</span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>off</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>,</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> gin_pending_list_limit</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>=</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'64'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>);</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>INSERT</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>INTO</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Foo&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>VALUES</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'[{&quot;Name&quot;: &quot;Sup&quot;, &quot;Address&quot;: &quot;Adress&quot;, &quot;IsCurrent&quot;: true}]'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>);</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=com><span style='font-family:"inherit",serif;color:#858C93;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-- just in case it's the indexing issue</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=com><span style='font-family:"inherit",serif;color:#858C93;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-- REINDEX INDEX cp.repro_fts_idx;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>select</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>*</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>from</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>select</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>x</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>from</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> x<o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>select</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>*</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>from</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> ts_stat</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'select cp.make_tsvector(x) from cp.&quot;Repro&quot; x'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=com><span style='font-family:"inherit",serif;color:#858C93;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-- explain analyze</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>SELECT</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>*</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>FROM</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;cp&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> x </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>where</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>x</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>@@</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'sup:*'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>::</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>tsquery<o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>INSERT</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>INTO</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Foo&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>VALUES</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'[{&quot;Name&quot;: &quot;Sup&quot;, &quot;Address&quot;: &quot;Adress&quot;, &quot;IsCurrent&quot;: true}]'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>);</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p>&nbsp;</o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=com><span style='font-family:"inherit",serif;color:#858C93;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>-- explain analyze</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>SELECT</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>*</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'><o:p></o:p></span></span></pre><pre style='background:#EFF0F1;vertical-align:baseline'><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>FROM</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;cp&quot;</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>&quot;Repro&quot;</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> x </span></span><span class=kwd><span style='font-family:"inherit",serif;color:#101094;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>where</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> cp</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>.</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>make_tsvector</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>(</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>x</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>)</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>@@</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'> </span></span><span class=str><span style='font-family:"inherit",serif;color:#7D2727;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>'sup:*'</span></span><span class=pun><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>::</span></span><span class=pln><span style='font-family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:#EFF0F1'>tsquery</span></span><span style='font-family:Consolas;color:#393318'><o:p></o:p></span></pre></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><span lang=EN-US>BR, Dmytro.</span><o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Dmytro Zhluktenko (#1)
Re: Postgres Full Text Search Jsonb Array column does not search for first row

On Tue, 2019-11-26 at 13:37 +0200, Dmytro Zhluktenko wrote:

Pgsql is unable to perform indexed full text search onto jsonb column containing an array when looking for the first row in the table.

Any ideas why this is happening?

CREATE OR REPLACE FUNCTION cp.make_tsvector(in_t cp."Repro")
RETURNS tsvector
LANGUAGE plpgsql
IMMUTABLE

[...]

CREATE INDEX repro_fts_idx ON cp."Repro" USING gin (cp.make_tsvector(cp."Repro".*)) WITH (fastupdate=off, gin_pending_list_limit='64');

[...]

-- explain analyze
SELECT *
FROM "cp"."Repro" x where cp.make_tsvector(x) @@ 'sup:*'::tsquery

One possibility is that there ar just too few rows in the table.

SET enable_seqscan = off;

and then try again.

If that is not the problm, please provide EXPLAIN (ANALYZE, BUFFERS) output for
the query.

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

#3Dmytro Zhluktenko
d1mnewz@gmail.com
In reply to: Laurenz Albe (#2)
RE: Re: Postgres Full Text Search Jsonb Array column does not search for first row

<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns="http://www.w3.org/TR/REC-html40&quot;&gt;&lt;head&gt;&lt;meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:42.5pt 42.5pt 42.5pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=UK link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hello, thanks for helping!<br><br><br><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>explain (analyze, BUFFERS)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>SELECT *<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US> FROM &quot;cp&quot;.&quot;Repro&quot; x where cp.make_tsvector(x) @@ 'fir:*'::tsquery<o:p></o:p></span></p><p class=MsoNormal><br><br><span lang=EN-US>outputs this query plan:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Bitmap Heap Scan on &quot;Repro&quot; x  (cost=12.00..16.26 rows=1 width=72) (actual time=0.007..0.007 rows=0 loops=1)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  Recheck Cond: (cp.make_tsvector(x.*) @@ '''fir'':*'::tsquery)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  Buffers: shared hit=2<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  -&gt;  Bitmap Index Scan on repro_fts_idx  (cost=0.00..12.00 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=1)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        Index Cond: (cp.make_tsvector(x.*) @@ '''fir'':*'::tsquery)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        Buffers: shared hit=2<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Planning Time: 0.070 ms<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Execution Time: 0.040 ms<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US>Query runs fine if uses seq scan. Seq Scan is not desired here since this is the query that should run on huge amounts of data and it should find the first element.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Obviously, if seq_scan is off, then query still does the same result.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><br>Also, if you add 100000 more entries, it will still fail to find the first one using index.</span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><span lang=EN-US>BR, Dmytro.</span><o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:laurenz.albe@cybertec.at">Laurenz Albe</a><br><b>Sent: </b>26 листопада 2019 р. 21:13<br><b>To: </b><a href="mailto:d1mnewz@gmail.com">Dmytro Zhluktenko</a>; <a href="mailto:pgsql-general@lists.postgresql.org">pgsql-general@lists.postgresql.org</a><br><b>Subject: </b>Re: Postgres Full Text Search Jsonb Array column does not search for first row</p></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>On Tue, 2019-11-26 at 13:37 +0200, Dmytro Zhluktenko wrote:</p><p class=MsoNormal>&gt; Pgsql is unable to perform indexed full text search onto jsonb column containing an array when looking for the first row in the table.</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; Any ideas why this is happening?</p><p class=MsoNormal>&gt;  </p><p class=MsoNormal>&gt; CREATE OR REPLACE FUNCTION cp.make_tsvector(in_t cp.&quot;Repro&quot;)</p><p class=MsoNormal>&gt;  RETURNS tsvector</p><p class=MsoNormal>&gt;  LANGUAGE plpgsql</p><p class=MsoNormal>&gt;  IMMUTABLE</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; [...] </p><p class=MsoNormal>&gt;  </p><p class=MsoNormal>&gt; CREATE INDEX repro_fts_idx ON cp.&quot;Repro&quot; USING gin (cp.make_tsvector(cp.&quot;Repro&quot;.*)) WITH (fastupdate=off, gin_pending_list_limit='64');</p><p class=MsoNormal>&gt;  </p><p class=MsoNormal>&gt; [...]</p><p class=MsoNormal>&gt;<o:p>&nbsp;</o:p></p><p class=MsoNormal>&gt; -- explain analyze</p><p class=MsoNormal>&gt; SELECT *</p><p class=MsoNormal>&gt;  FROM &quot;cp&quot;.&quot;Repro&quot; x where cp.make_tsvector(x) @@ 'sup:*'::tsquery</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>One possibility is that there ar just too few rows in the table.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>SET enable_seqscan = off;</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>and then try again.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>If that is not the problm, please provide EXPLAIN (ANALYZE, BUFFERS) output for</p><p class=MsoNormal>the query.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Yours,</p><p class=MsoNormal>Laurenz Albe</p><p class=MsoNormal>-- </p><p class=MsoNormal>Cybertec | https://www.cybertec-postgresql.com&lt;/p&gt;&lt;p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>

#4Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Dmytro Zhluktenko (#3)
Re: Re: Postgres Full Text Search Jsonb Array column does not search for first row

On Wed, 2019-11-27 at 11:54 +0200, Dmytro Zhluktenko wrote:

explain (analyze, BUFFERS)
SELECT *
FROM "cp"."Repro" x where cp.make_tsvector(x) @@ 'fir:*'::tsquery

outputs this query plan:
Bitmap Heap Scan on "Repro" x (cost=12.00..16.26 rows=1 width=72) (actual time=0.007..0.007 rows=0 loops=1)
Recheck Cond: (cp.make_tsvector(x.*) @@ '''fir'':*'::tsquery)
Buffers: shared hit=2
-> Bitmap Index Scan on repro_fts_idx (cost=0.00..12.00 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: (cp.make_tsvector(x.*) @@ '''fir'':*'::tsquery)
Buffers: shared hit=2
Planning Time: 0.070 ms
Execution Time: 0.040 ms

Query runs fine if uses seq scan. Seq Scan is not desired here since this is the query that should run on huge amounts of data and it should find the first element.
Obviously, if seq_scan is off, then query still does the same result.

Also, if you add 100000 more entries, it will still fail to find the first one using index.

I cannot quite follow.

We have seen that the query can use the index by setting "enable_seqscan = off",
but that PostgreSQL prefers to use a sequential scan because the table is small.

If the table were bigger, PostgreSQL would prefer the index scan.

Are your concerns hypothetical or real?
If real, can you show EXPLAIN (ANALYZE, BUFFERS) output of a query
execution where PostgreSQL chooses a sequential scan, but you think
it shouldn't?

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

#5Dmytro Zhluktenko
d1mnewz@gmail.com
In reply to: Laurenz Albe (#4)
RE: Re: Re: Postgres Full Text Search Jsonb Array column does not search for first row

<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns="http://www.w3.org/TR/REC-html40&quot;&gt;&lt;head&gt;&lt;meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:42.5pt 42.5pt 42.5pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=UK link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US>The issue was solved with the approach suggested here.<o:p></o:p></span></p><p class=MsoNormal><a href="https://stackoverflow.com/questions/59049873/postgres-full-text-search-jsonb-array-column-does-not-show-first-row&quot;&gt;https://stackoverflow.com/questions/59049873/postgres-full-text-search-jsonb-array-column-does-not-show-first-row&lt;/a&gt;&lt;/p&gt;&lt;p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><span lang=EN-US>BR, Dmytro.</span><o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:laurenz.albe@cybertec.at">Laurenz Albe</a><br><b>Sent: </b>28 листопада 2019 р. 16:39<br><b>To: </b><a href="mailto:d1mnewz@gmail.com">Dmytro Zhluktenko</a>; <a href="mailto:pgsql-general@lists.postgresql.org">pgsql-general@lists.postgresql.org</a><br><b>Subject: </b>Re: Re: Postgres Full Text Search Jsonb Array column does not search for first row</p></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>On Wed, 2019-11-27 at 11:54 +0200, Dmytro Zhluktenko wrote:</p><p class=MsoNormal>&gt; explain (analyze, BUFFERS)</p><p class=MsoNormal>&gt; SELECT *</p><p class=MsoNormal>&gt; FROM &quot;cp&quot;.&quot;Repro&quot; x where cp.make_tsvector(x) @@ 'fir:*'::tsquery</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; outputs this query plan:</p><p class=MsoNormal>&gt; Bitmap Heap Scan on &quot;Repro&quot; x  (cost=12.00..16.26 rows=1 width=72) (actual time=0.007.0.007 rows=0 loops=1)</p><p class=MsoNormal>&gt;   Recheck Cond: (cp.make_tsvector(x.*) @@ '''fir'':*'::tsquery)</p><p class=MsoNormal>&gt;   Buffers: shared hit=2</p><p class=MsoNormal>&gt;   -&gt;  Bitmap Index Scan on repro_fts_idx  (cost=0.00..12.00 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=1)</p><p class=MsoNormal>&gt;         Index Cond: (cp.make_tsvector(x.*) @@ '''fir'':*'::tsquery)</p><p class=MsoNormal>&gt;         Buffers: shared hit=2</p><p class=MsoNormal>&gt; Planning Time: 0.070 ms</p><p class=MsoNormal>&gt; Execution Time: 0.040 ms</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; Query runs fine if uses seq scan. Seq Scan is not desired here since this is the query that should run on huge amounts of data and it should find the first element.</p><p class=MsoNormal>&gt; Obviously, if seq_scan is off, then query still does the same result.</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; Also, if you add 100000 more entries, it will still fail to find the first one using index.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I cannot quite follow.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>We have seen that the query can use the index by setting &quot;enable_seqscan = off&quot;,</p><p class=MsoNormal>but that PostgreSQL prefers to use a sequential scan because the table is small.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>If the table were bigger, PostgreSQL would prefer the index scan.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Are your concerns hypothetical or real?</p><p class=MsoNormal>If real, can you show EXPLAIN (ANALYZE, BUFFERS) output of a query</p><p class=MsoNormal>execution where PostgreSQL chooses a sequential scan, but you think</p><p class=MsoNormal>it shouldn't?</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Yours,</p><p class=MsoNormal>Laurenz Albe</p><p class=MsoNormal>-- </p><p class=MsoNormal>Cybertec | https://www.cybertec-postgresql.com&lt;/p&gt;&lt;p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>