diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/datatype.sgml | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index 83ffcca2750..5a9e9277457 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.68 2001/11/08 23:36:55 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.69 2001/11/12 21:04:45 tgl Exp $ --> <chapter id="datatype"> @@ -533,14 +533,18 @@ NUMERIC(<replaceable>precision</replaceable>, <replaceable>scale</replaceable>) <programlisting> NUMERIC(<replaceable>precision</replaceable>) </programlisting> - selects a scale of 0. Merely specifying + selects a scale of 0. Specifying <programlisting> NUMERIC </programlisting> - uses a default precision and scale, which is currently (30,6). - (The SQL standard requires a default scale of 0. We find this a - bit useless. If you're concerned about portability, always - specify the precision and scale explicitly.) + without any precision or scale creates a column in which numeric + values of any precision and scale can be stored, up to the implementation + limit on precision. A column of this kind will not coerce input + values to any particular scale, whereas <type>numeric</type> columns + with a declared scale will coerce input values to that scale. + (The SQL standard requires a default scale of 0, ie, coercion to + integer accuracy. We find this a bit useless. If you're concerned about + portability, always specify the precision and scale explicitly.) </para> <para> @@ -852,13 +856,17 @@ CREATE TABLE <replaceable class="parameter">tablename</replaceable> (<replaceabl <para> The storage requirement for data of these types is 4 bytes plus the actual string, and in case of <type>character</type> plus the - padding. Long strings will actually be compressed by the system - automatically. In any case, the longest possible character string + padding. Long strings will be compressed by the system + automatically, so the physical requirement on-disk may be less. + In any case, the longest possible character string that can be stored is about 1 GB. (The maximum value that will be allowed for <replaceable>n</> in the data type declaration is - actually larger than that. It wouldn't be very useful to change + less than that. It wouldn't be very useful to change this because with multibyte character encodings the number of - characters and bytes can be quite different anyway.) + characters and bytes can be quite different anyway. If you desire + to store long strings with no specific upper limit, use <type>text</type> + or <type>character varying</type> without a length specifier, + rather than making up an arbitrary length limit.) </para> <tip> @@ -916,7 +924,7 @@ SELECT b, char_length(b) FROM test2; <productname>Postgres</productname>. The <type>name</type> type exists <emphasis>only</emphasis> for storage of internal catalog names and is not intended for use by the general user. Its length - is currently defined as 32 bytes (31 characters plus terminator) + is currently defined as 32 bytes (31 usable characters plus terminator) but should be referenced using the macro <symbol>NAMEDATALEN</symbol>. The length is set at compile time (and is therefore adjustable for special uses); the default |