Re: Why is there a tsquery data type? - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Why is there a tsquery data type?
Date
Msg-id 200708301540.l7UFeYC11905@momjian.us
Whole thread Raw
In response to Re: Why is there a tsquery data type?  (Gregory Stark <stark@enterprisedb.com>)
Responses Re: Why is there a tsquery data type?
Re: Why is there a tsquery data type?
List pgsql-hackers
Gregory Stark wrote:
> "Bruce Momjian" <bruce@momjian.us> writes:
> 
> > There is no question things would be clearer with only one text search
> > data type.  The only value I can see to having a tsquery data type is
> > that you can store a tsquery value in a column, but why would that be
> > much better than just storing it in a TEXT field?
> 
> When you try storing a tsquery in a column does it alert you if you have an
> invalid syntax at that point? Storing it as text would mean not finding out
> until you try to use the query.

Yes it does check syntax:
test=> select 'lkjadsf kjfdsa'::tsquery;ERROR:  syntax error in tsearch query: "lkjadsf kjfdsa"

A larger question is how many people store queries in the database to
make it worth the complexity.

> Is converting a text query into the internal format faster or less memory
> intensive than converting text into the internal representation? When you run
> a query like "WHERE '...' @@ col" if there wasn't a tsquery data type then
> '...' would have to be parsed over and over again for each row.

No, internally the TEXT string would be converted to something the
system could deal with for that query, which is probably what 99% of all
queries are going to do anyway by calling to_tsquery().

--  Bruce Momjian  <bruce@momjian.us>          http://momjian.us EnterpriseDB
http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


pgsql-hackers by date:

Previous
From: "Gabor Szabo"
Date:
Subject: Re: testing more than one configuration on a single build machine
Next
From: Tom Lane
Date:
Subject: Re: Advice on MyXactMade* flags, MyLastRecPtr, pendingDeletes and lazy XID assignment