Now it is a psql/postgres internals issue that causes \df trim not to reveal anything?
-tfo
-- Thomas F. O'Connell Co-Founder, Information Architect Sitening, LLC http://www.sitening.com/ 110 30th Avenue North, Suite 6 Nashville, TN 37203-6320 615-260-0005
On Dec 2, 2004, at 11:14 AM, Bruce Momjian wrote:
OK, I have documented that the second parameter to btrim() is optional, and default to a space. Patch attached and applied.
----------------------------------------------------------------------- ----
Thomas F. O'Connell wrote:Not entirely.
Per <http://www.postgresql.org/docs/7.4/static/functions-string.html>,
btrim is documented as taking two arguments. There is a single-argument
version that exists that trims whitespace if only the first argument is
given (i.e., the characters to trim are omitted). This latter version
is nowhere documented as far as I can tell.
I'm also curious why, despite its place in the ANSI standard, \df seems
to reveal no information about trim.
-tfo
-- Thomas F. O'Connell Co-Founder, Information Architect Sitening, LLC http://www.sitening.com/ 110 30th Avenue North, Suite 6 Nashville, TN 37203-6320 615-260-0005
On Nov 27, 2004, at 9:23 PM, Bruce Momjian wrote:
Thomas F.O'Connell wrote:I was just wondering why the btrim syntax that takes only a single
argument is not documented in 9.4 in the documentation (I checked both
7.4 and 8.0 docs).
This is in a 7.4.5 installation:
pg=# \df btrim List of functions Result data type | Schema | Name | Argument data types ------------------+------------+-------+--------------------- bytea | pg_catalog | btrim | bytea, bytea text | pg_catalog | btrim | text text | pg_catalog | btrim | text, text (3 rows)
Is it ever documented anywhere that the single-argument version of
btrim can be used to remove whitespace from the left and right of a
given string? Is this version not supposed to be user-facing for some
reason?
Also, in this post:
http://archives.postgresql.org/pgsql-sql/2002-01/msg00053.php
Bruce sort of explains that TRIM is an ANSI word but doesn't fully explain why it doesn't show up in a \df listing:
pg=# \df trim List of functions Result data type | Schema | Name | Argument data types ------------------+--------+------+--------------------- (0 rows)
This one's more a curiosity thing.
Because TRIM is an ANSI standard, we document TRIM (BOTH, ...) but not
btrim. The parser does the translation:
| TRIM '(' BOTH trim_list ')' { /* various trim expressions are defined in SQL92 * - thomas 1997-07-19 */ FuncCall *n = makeNode(FuncCall); n->funcname = SystemFuncName("btrim"); n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; $$ = (Node *)n;
Does that answer your questions?
--
Bruce Momjian | http://candle.pha.pa.us
[EMAIL PROTECTED] | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania
19073
--
Bruce Momjian | http://candle.pha.pa.us
[EMAIL PROTECTED] | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.225
diff -c -c -r1.225 func.sgml
*** doc/src/sgml/func.sgml 1 Dec 2004 19:32:12 -0000 1.225
--- doc/src/sgml/func.sgml 2 Dec 2004 17:12:57 -0000
***************
*** 1070,1081 ****
</row>
<row>
! <entry><literal><function>btrim</function>(<parameter>string</ parameter> <type>text</type>, <parameter>characters</parameter> <type>text</type>)</literal></entry>
<entry><type>text</type></entry>
<entry>
Remove the longest string consisting only of characters
! in <parameter>characters</parameter> from the start and end of
! <parameter>string</parameter>.
</entry>
<entry><literal>btrim('xyxtrimyyx', 'xy')</literal></entry>
<entry><literal>trim</literal></entry>
--- 1070,1082 ----
</row>
<row>
! <entry><literal><function>btrim</function>(<parameter>string</ parameter> <type>text</type>
! <optional>, <parameter>characters</parameter> <type>text</type></optional>)</literal></entry>
<entry><type>text</type></entry>
<entry>
Remove the longest string consisting only of characters
! in <parameter>characters</parameter> (or spaces if not supplied)
! from the start and end of <parameter>string</parameter>.
</entry>
<entry><literal>btrim('xyxtrimyyx', 'xy')</literal></entry>
<entry><literal>trim</literal></entry>
---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])