Received: from golem.jpl.nasa.gov (root@hectic-3.jpl.nasa.gov [128.149.68.205]) by hub.org (8.8.8/8.7.5) with ESMTP id JAA28517 for ; Thu, 16 Jul 1998 09:29:48 -0400 (EDT) Received: from alumni.caltech.edu (localhost [127.0.0.1]) by golem.jpl.nasa.gov (8.8.5/8.8.5) with ESMTP id NAA01075; Thu, 16 Jul 1998 13:36:01 GMT Sender: tgl@mythos.jpl.nasa.gov Message-ID: <35AE01C1.DFC343BA@alumni.caltech.edu> Date: Thu, 16 Jul 1998 13:36:01 +0000 From: "Thomas G. Lockhart" Organization: Caltech/JPL X-Mailer: Mozilla 4.05 [en] (X11; I; Linux 2.0.30 i686) MIME-Version: 1.0 To: Hannu Krosing CC: Vadim Mikheev , hackers@postgreSQL.org Subject: Re: [INTERFACES] Re: [HACKERS] changes in 6.4 References: <199807141537.LAA24391@candle.pha.pa.us> <35AD0879.2EA15E8B@trust.ee> <35AD1048.97441728@krs.ru> <35ADBA13.753CDE3E@trust.ee> <35ADBF17.8FA3ABE0@krs.ru> <35ADDC68.F13FACB0@trust.ee> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit > > TRIM is keyword, not a function... > > We have to copy some lines in gram.y > Wow! is this standard ? > I found the function trim by doing 'select oprname from pg_oper' > and tested it as follows: > > hannu=> select trim(' x '); > btrim > ----- > x > (1 row) > why is the column called btrim ? > some rewrite magic in parser ? > If it must stay a keyword, then perhaps we should remove the proc ? Uh, yes, I think you are right. Here's why: The SQL92 syntax for the trim() function is as follows: TRIM([LEADING|TRAILING|BOTH] [char FROM] string) This syntax is _not_ the clean "function(arg1,arg2,...)" syntax that the parser could handle without change, so I had to make TRIM a keyword in the parser and explicitly decode the possible argument phrases. To implement all possibilities, I transform the function in the parser to the functions btrim(), rtrim(), and ltrim() implemented earlier by Edmund Mergl as the "Oracle compatibility functions". I'll add TRIM() and the other goofy pseudo-functions to the CHECK syntax, and take the trim(arg1) declaration out of pg_proc since it can never get executed. Oh, btw we allow trimming strings from strings, not just trimming chars from strings :) - Tom