<example> is a floating element, so it's use is inappropriate when the

surrounding text refers to the example inline.
This commit is contained in:
Peter Eisentraut 2010-08-10 20:41:27 +00:00
parent 20bf5e03e5
commit 6d5afc2003

View file

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.255 2010/07/29 19:34:40 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.256 2010/08/10 20:41:27 petere Exp $ -->
<chapter id="datatype">
<title>Data Types</title>
@ -2877,10 +2877,6 @@ CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
Once created, the enum type can be used in table and function
definitions much like any other type:
</para>
<example>
<title>Basic Enum Usage</title>
<programlisting>
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
@ -2894,7 +2890,7 @@ SELECT * FROM person WHERE current_mood = 'happy';
Moe | happy
(1 row)
</programlisting>
</example>
</para>
</sect2>
<sect2>
@ -2905,10 +2901,7 @@ SELECT * FROM person WHERE current_mood = 'happy';
order in which the values were listed when the type was created.
All standard comparison operators and related
aggregate functions are supported for enums. For example:
</para>
<example>
<title>Enum Ordering</title>
<programlisting>
INSERT INTO person VALUES ('Larry', 'sad');
INSERT INTO person VALUES ('Curly', 'ok');
@ -2934,7 +2927,7 @@ WHERE current_mood = (SELECT MIN(current_mood) FROM person);
Larry
(1 row)
</programlisting>
</example>
</para>
</sect2>
<sect2>
@ -2942,11 +2935,8 @@ WHERE current_mood = (SELECT MIN(current_mood) FROM person);
<para>
Each enumerated data type is separate and cannot
be compared with other enumerated types.
</para>
be compared with other enumerated types. See this example:
<example>
<title>Lack of Casting</title>
<programlisting>
CREATE TYPE happiness AS ENUM ('happy', 'very happy', 'ecstatic');
CREATE TABLE holidays (
@ -2962,15 +2952,12 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
WHERE person.current_mood = holidays.happiness;
ERROR: operator does not exist: mood = happiness
</programlisting>
</example>
</para>
<para>
If you really need to do something like that, you can either
write a custom operator or add explicit casts to your query:
</para>
<example>
<title>Comparing Different Enums by Casting to Text</title>
<programlisting>
SELECT person.name, holidays.num_weeks FROM person, holidays
WHERE person.current_mood::text = holidays.happiness::text;
@ -2980,7 +2967,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
(1 row)
</programlisting>
</example>
</para>
</sect2>
<sect2>