From 175dbf741bde1eb13eafc309a2c719569b778397 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Thu, 30 Mar 2000 23:42:34 +0000 Subject: [PATCH] Make discussion of names clearer and more accurate. --- doc/src/sgml/syntax.sgml | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index 918d91a05cf..30f57e5ccf6 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -340,17 +340,23 @@ A comment beginning with "/*" extends to the first occurrence of "*/". <title>Names</title> <para> - Names in SQL are sequences of less than NAMEDATALEN alphanumeric characters, - starting with an alphabetic character. By default, NAMEDATALEN is set - to 32 (but at the time the system is built, NAMEDATALEN can be changed - by changing the <literal>#define</literal> in - src/backend/include/postgres.h). - Underscore ("_") is considered an alphabetic character. + Names in SQL must begin with a letter + (<literal>a</literal>-<literal>z</literal>) or underscore + (<literal>_</literal>). + Subsequent characters in a name can be letters, digits + (<literal>0</literal>-<literal>9</literal>), + or underscores. The system uses no more than NAMEDATALEN-1 characters + of a name; longer names can be written in queries, but they will be + truncated. + By default, NAMEDATALEN is 32 so the maximum name length is 31 (but + at the time the system is built, NAMEDATALEN can be changed in + src/include/postgres_ext.h). </para> <para> Names containing other characters may be formed by surrounding them - with double quotes. For example, table or column names may contain + with double quotes (<literal>"</literal>). For example, table or column + names may contain otherwise disallowed characters such as spaces, ampersands, etc. if quoted. Quoting a name also makes it case-sensitive, whereas unquoted names are always folded to lower case. For example, @@ -359,6 +365,12 @@ A comment beginning with "/*" extends to the first occurrence of "*/". considered the same by <productname>Postgres</productname>, but <literal>"Foo"</literal> is a different name. </para> + + <para> + Double quotes can also be used to protect a name that would otherwise + be taken to be an SQL keyword. For example, <literal>IN</literal> + is a keyword but <literal>"IN"</literal> is a name. + </para> </sect1> <sect1> -- GitLab