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


---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
   (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to