Received: from localhost (unknown [200.46.204.191]) by postgresql.org (Postfix) with ESMTP id 882DF9FB61A for ; Thu, 30 Aug 2007 13:02:07 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.191]) (amavisd-maia, port 10024) with ESMTP id 58817-06 for ; Thu, 30 Aug 2007 13:01:56 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.5 Received: from oxford.xeocode.com (unknown [62.232.55.118]) by postgresql.org (Postfix) with ESMTP id BE3579FB6DD for ; Thu, 30 Aug 2007 13:01:54 -0300 (ADT) Received: from localhost ([127.0.0.1] helo=oxford.xeocode.com) by oxford.xeocode.com with esmtp (Exim 4.67) (envelope-from ) id 1IQmSq-0006wW-V7; Thu, 30 Aug 2007 17:01:49 +0100 To: "Bruce Momjian" Cc: "Tom Lane" , "PostgreSQL-development" Subject: Re: Why is there a tsquery data type? In-Reply-To: <200708301540.l7UFeYC11905@momjian.us> (Bruce Momjian's message of "Thu\, 30 Aug 2007 11\:40\:34 -0400 \(EDT\)") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) X-Draft-From: ("nnimap+mail01.enterprisedb.com:INBOX" 34775) References: <200708301540.l7UFeYC11905@momjian.us> From: Gregory Stark Organization: EnterpriseDB Date: Thu, 30 Aug 2007 17:01:48 +0100 Message-ID: <877ind57v7.fsf@oxford.xeocode.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200708/1131 X-Sequence-Number: 107053 "Bruce Momjian" writes: > Gregory Stark wrote: >> "Bruce Momjian" 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. So would this still happen if you didn't have a tsquery type? Or would it throw the error only when the actual matching operator executed and tried to parse the text? >> 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(). How would that happen if there wasn't a tsquery type? -- Gregory Stark EnterpriseDB http://www.enterprisedb.com