Entity-ify a passel of & < > characters. Per gripe from Devrim.

This commit is contained in:
Tom Lane 2007-12-03 23:49:51 +00:00
parent f538329f9d
commit 4c128303e0
21 changed files with 134 additions and 135 deletions

View File

@ -19,7 +19,7 @@
-- create index
CREATE INDEX testidx ON test USING gist (a);
-- query
SELECT * FROM test WHERE a < 10;
SELECT * FROM test WHERE a &lt; 10;
</programlisting>
</sect2>

View File

@ -287,28 +287,28 @@ a = b Same as
</para>
<programlisting>
a && b Overlaps
a &amp;&amp; b Overlaps
</programlisting>
<para>
The cubements a and b overlap.
</para>
<programlisting>
a @> b Contains
a @&gt; b Contains
</programlisting>
<para>
The cubement a contains the cubement b.
</para>
<programlisting>
a <@ b Contained in
a &lt;@ b Contained in
</programlisting>
<para>
The cubement a is contained in b.
</para>
<para>
(Before PostgreSQL 8.2, the containment operators @> and <@ were
(Before PostgreSQL 8.2, the containment operators @&gt; and &lt;@ were
respectively called @ and ~. These names are still available, but are
deprecated and will eventually be retired. Notice that the old names
are reversed from the convention formerly followed by the core geometric
@ -326,8 +326,8 @@ a <@ b Contained in
</para>
<programlisting>
[a, b] < [c, d] Less than
[a, b] > [c, d] Greater than
[a, b] &lt; [c, d] Less than
[a, b] &gt; [c, d] Greater than
</programlisting>
<para>
@ -462,10 +462,10 @@ a <@ b Contained in
is useful for creating bounding boxes around a point for searching for
nearby points. All defined dimensions are changed by the radius. If n
is greater than the number of defined dimensions and the cube is being
increased (r >= 0) then 0 is used as the base for the extra coordinates.
increased (r &gt;= 0) then 0 is used as the base for the extra coordinates.
LL coordinates are decreased by r and UR coordinates are increased by r.
If a LL coordinate is increased to larger than the corresponding UR
coordinate (this can only happen when r < 0) than both coordinates are
coordinate (this can only happen when r &lt; 0) than both coordinates are
set to their average. To make it harder for people to break things there
is an effective maximum on the dimension of cubes of 100. This is set
in cubedata.h if you need something bigger.

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.220 2007/11/27 16:46:36 momjian Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.221 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="datatype">
<title id="datatype-title">Data Types</title>
@ -3440,10 +3440,10 @@ SELECT 'fat:ab &amp; cat'::tsquery;
function is convenient for performing such normalization:
<programlisting>
SELECT to_tsquery('Fat:ab & Cats');
SELECT to_tsquery('Fat:ab &amp; Cats');
to_tsquery
------------------
'fat':AB & 'cat'
'fat':AB &amp; 'cat'
</programlisting>
</para>

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.79 2007/12/03 04:59:55 tgl Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.80 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="ddl">
<title>Data Definition</title>
@ -2312,7 +2312,7 @@ VALUES ('New York', NULL, NULL, 'NY');
<para>
To set up a partitioned table, do the following:
<orderedlist spacing=compact>
<orderedlist spacing="compact">
<listitem>
<para>
Create the <quote>master</quote> table, from which all of the
@ -2430,7 +2430,7 @@ CREATE TABLE measurement (
</para>
<para>
<orderedlist spacing=compact>
<orderedlist spacing="compact">
<listitem>
<para>
The master table is the <structname>measurement</> table, declared

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/dml.sgml,v 1.16 2007/02/01 00:28:16 momjian Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/dml.sgml,v 1.17 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="dml">
<title>Data Manipulation</title>
@ -135,7 +135,7 @@ INSERT INTO products (product_no, name, price) VALUES
<para>
To perform an update, you need three pieces of information:
<orderedlist spacing=compact>
<orderedlist spacing="compact">
<listitem>
<para>The name of the table and column to update,</para>
</listitem>

View File

@ -114,7 +114,7 @@
</entry>
</row>
<row>
<entry><literal><@></literal> operator</entry>
<entry><literal>&lt;@&gt;</literal> operator</entry>
<entry>gives the distance in statute miles between
two points on the Earth's surface. Coordinates are in degrees. Points are
taken as (longitude, latitude) and not vice versa as longitude is closer

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.84 2007/11/07 12:24:23 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.85 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="ecpg">
<title><application>ECPG</application> - Embedded <acronym>SQL</acronym> in C</title>
@ -4695,7 +4695,7 @@ cc -o myprog prog1.o prog2.o ... -lecpg
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
$(ECPG) $&lt;
</programlisting>
</para>

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.414 2007/11/28 15:42:31 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.415 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="functions">
<title>Functions and Operators</title>
@ -7752,15 +7752,15 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple
<entry><literal><function>to_tsquery</function>(<optional> <replaceable class="PARAMETER">config</> <type>regconfig</> , </optional> <replaceable class="PARAMETER">query</> <type>text</type>)</literal></entry>
<entry><type>tsquery</type></entry>
<entry>normalize words and convert to <type>tsquery</></entry>
<entry><literal>to_tsquery('english', 'The & Fat & Rats')</literal></entry>
<entry><literal>'fat' & 'rat'</literal></entry>
<entry><literal>to_tsquery('english', 'The &amp; Fat &amp; Rats')</literal></entry>
<entry><literal>'fat' &amp; 'rat'</literal></entry>
</row>
<row>
<entry><literal><function>plainto_tsquery</function>(<optional> <replaceable class="PARAMETER">config</> <type>regconfig</> , </optional> <replaceable class="PARAMETER">query</> <type>text</type>)</literal></entry>
<entry><type>tsquery</type></entry>
<entry>produce <type>tsquery</> ignoring punctuation</entry>
<entry><literal>plainto_tsquery('english', 'The Fat Rats')</literal></entry>
<entry><literal>'fat' & 'rat'</literal></entry>
<entry><literal>'fat' &amp; 'rat'</literal></entry>
</row>
<row>
<entry><literal><function>numnode</function>(<type>tsquery</>)</literal></entry>
@ -7773,7 +7773,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple
<entry><literal><function>querytree</function>(<replaceable class="PARAMETER">query</replaceable> <type>tsquery</>)</literal></entry>
<entry><type>text</type></entry>
<entry>get indexable part of a <type>tsquery</></entry>
<entry><literal>querytree('foo & ! bar'::tsquery)</literal></entry>
<entry><literal>querytree('foo &amp; ! bar'::tsquery)</literal></entry>
<entry><literal>'foo'</literal></entry>
</row>
<row>

View File

@ -41,30 +41,30 @@ INSERT INTO s VALUES ('jack');
SELECT * FROM s WHERE soundex(nm) = soundex('john');
SELECT a.nm, b.nm FROM s a, s b WHERE soundex(a.nm) = soundex(b.nm) AND a.oid <> b.oid;
SELECT a.nm, b.nm FROM s a, s b WHERE soundex(a.nm) = soundex(b.nm) AND a.oid &lt;&gt; b.oid;
CREATE FUNCTION text_sx_eq(text, text) RETURNS boolean AS
'select soundex($1) = soundex($2)'
LANGUAGE SQL;
CREATE FUNCTION text_sx_lt(text, text) RETURNS boolean AS
'select soundex($1) < soundex($2)'
'select soundex($1) &lt; soundex($2)'
LANGUAGE SQL;
CREATE FUNCTION text_sx_gt(text, text) RETURNS boolean AS
'select soundex($1) > soundex($2)'
'select soundex($1) &gt; soundex($2)'
LANGUAGE SQL;
CREATE FUNCTION text_sx_le(text, text) RETURNS boolean AS
'select soundex($1) <= soundex($2)'
'select soundex($1) &lt;= soundex($2)'
LANGUAGE SQL;
CREATE FUNCTION text_sx_ge(text, text) RETURNS boolean AS
'select soundex($1) >= soundex($2)'
'select soundex($1) &gt;= soundex($2)'
LANGUAGE SQL;
CREATE FUNCTION text_sx_ne(text, text) RETURNS boolean AS
'select soundex($1) <> soundex($2)'
'select soundex($1) &lt;&gt; soundex($2)'
LANGUAGE SQL;
DROP OPERATOR #= (text, text);
@ -75,7 +75,7 @@ SELECT * FROM s WHERE text_sx_eq(nm, 'john');
SELECT * FROM s WHERE s.nm #= 'john';
SELECT * FROM s WHERE difference(s.nm, 'john') > 2;
SELECT * FROM s WHERE difference(s.nm, 'john') &gt; 2;
</programlisting>
</sect2>

View File

@ -131,15 +131,15 @@ test=# select intset(1);
</thead>
<tbody>
<row>
<entry><literal>int[] && int[]</literal></entry>
<entry><literal>int[] &amp;&amp; int[]</literal></entry>
<entry>overlap - returns TRUE if arrays have at least one common element</entry>
</row>
<row>
<entry><literal>int[] @> int[]</literal></entry>
<entry><literal>int[] @&gt; int[]</literal></entry>
<entry>contains - returns TRUE if left array contains right array</entry>
</row>
<row>
<entry><literal>int[] <@ int[]</literal></entry>
<entry><literal>int[] &lt;@ int[]</literal></entry>
<entry>contained - returns TRUE if left array is contained in right array</entry>
</row>
<row>
@ -172,7 +172,7 @@ test=# select intset(1);
</row>
<row>
<entry><literal>int[] & int[]</literal></entry>
<entry><literal>int[] &amp; int[]</literal></entry>
<entry>returns intersection of arrays</entry>
</row>
@ -192,7 +192,7 @@ test=# select intset(1);
</tgroup>
</table>
<para>
(Before PostgreSQL 8.2, the containment operators @> and <@ were
(Before PostgreSQL 8.2, the containment operators @&gt; and &lt;@ were
respectively called @ and ~. These names are still available, but are
deprecated and will eventually be retired. Notice that the old names
are reversed from the convention formerly followed by the core geometric
@ -213,12 +213,12 @@ CREATE unique index message_section_map_key2 ON message_section_map (sid, mid );
CREATE INDEX message_rdtree_idx ON message USING GIST ( sections gist__int_ops);
-- select some messages with section in 1 OR 2 - OVERLAP operator
SELECT message.mid FROM message WHERE message.sections && '{1,2}';
SELECT message.mid FROM message WHERE message.sections &amp;&amp; '{1,2}';
-- select messages contains in sections 1 AND 2 - CONTAINS operator
SELECT message.mid FROM message WHERE message.sections @> '{1,2}';
SELECT message.mid FROM message WHERE message.sections @&gt; '{1,2}';
-- the same, CONTAINED operator
SELECT message.mid FROM message WHERE '{1,2}' <@ message.sections;
SELECT message.mid FROM message WHERE '{1,2}' &lt;@ message.sections;
</programlisting>
</sect2>
@ -230,7 +230,7 @@ SELECT message.mid FROM message WHERE '{1,2}' <@ message.sections;
<programlisting>
cd ./bench
1. createdb TEST
2. psql TEST < ../_int.sql
2. psql TEST &lt; ../_int.sql
3. ./create_test.pl | psql TEST
4. ./bench.pl - perl script to benchmark queries, supports OR, AND queries
with/without RD-Tree. Run script without arguments to

View File

@ -244,52 +244,52 @@
<itemizedlist>
<listitem>
<para>
ISBN13 -> EAN13
ISBN13 -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
ISMN13 -> EAN13
ISMN13 -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
ISSN13 -> EAN13
ISSN13 -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
ISBN -> EAN13
ISBN -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
ISMN -> EAN13
ISMN -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
ISSN -> EAN13
ISSN -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
UPC -> EAN13
UPC -&gt; EAN13
</para>
</listitem>
<listitem>
<para>
ISBN <-> ISBN13
ISBN &lt;-&gt; ISBN13
</para>
</listitem>
<listitem>
<para>
ISMN <-> ISMN13
ISMN &lt;-&gt; ISMN13
</para>
</listitem>
<listitem>
<para>
ISSN <-> ISSN13
ISSN &lt;-&gt; ISSN13
</para>
</listitem>
</itemizedlist>

View File

@ -102,7 +102,7 @@
</itemizedlist>
<para>
As the ODBC driver needs a permanent lo type (& JDBC could be optimised to
As the ODBC driver needs a permanent lo type (&amp; JDBC could be optimised to
use it if it's Oid is fixed), and as the above issues can only be fixed by
some internal changes, I feel it should become a permanent built-in type.
</para>

View File

@ -15,7 +15,7 @@
<sect2>
<title>Definitions</title>
<para>
A <emphasis>label</emphasis> of a node is a sequence of one or more words
A <firstterm>label</firstterm> of a node is a sequence of one or more words
separated by blank character '_' and containing letters and digits ( for
example, [a-zA-Z0-9] for C locale). The length of a label is limited by 256
bytes.
@ -24,9 +24,9 @@
Example: 'Countries', 'Personal_Services'
</para>
<para>
A <emphasis>label path</emphasis> of a node is a sequence of one or more
A <firstterm>label path</firstterm> of a node is a sequence of one or more
dot-separated labels l1.l2...ln, represents path from root to the node. The
length of a label path is limited by 65Kb, but size <= 2Kb is preferrable.
length of a label path is limited by 65Kb, but size &lt;= 2Kb is preferrable.
We consider it's not a strict limitation (maximal size of label path for
DMOZ catalogue - <ulink url="http://www.dmoz.org"></ulink>, is about 240
bytes!)
@ -85,7 +85,7 @@
</listitem>
<listitem>
<para>% Don't account word separator '_' in label matching, that is
'Russian%' would match 'Russian_nations', but not 'Russian'
'Russian%' would match 'Russian_nations', but not 'Russian'
</para>
</listitem>
</itemizedlist>
@ -143,7 +143,7 @@
the end of word. The meaning of modifiers are the same as for lquery.
</para>
<para>
Example: <literal>'Europe & Russia*@ & !Transportation'</literal>
Example: <literal>'Europe &amp; Russia*@ &amp; !Transportation'</literal>
</para>
<para>
Search paths contain words 'Europe' and 'Russia*' (case-insensitive) and
@ -164,21 +164,21 @@
<itemizedlist>
<listitem>
<para>
<literal><,>,<=,>=,=, <></literal>
<literal>&lt;,&gt;,&lt;=,&gt;=,=, &lt;&gt;</literal>
- Have their usual meanings. Comparison is doing in the order of direct
tree traversing, children of a node are sorted lexicographic.
</para>
</listitem>
<listitem>
<para>
<literal>ltree @> ltree</literal>
<literal>ltree @&gt; ltree</literal>
- returns TRUE if left argument is an ancestor of right argument (or
equal).
</para>
</listitem>
<listitem>
<para>
<literal>ltree <@ ltree </literal>
<literal>ltree &lt;@ ltree </literal>
- returns TRUE if left argument is a descendant of right argument (or
equal).
</para>
@ -216,13 +216,13 @@
<itemizedlist>
<listitem>
<para>
<literal>ltree[] @> ltree, ltree <@ ltree[]</literal>
<literal>ltree[] @&gt; ltree, ltree &lt;@ ltree[]</literal>
- returns TRUE if array ltree[] contains an ancestor of ltree.
</para>
</listitem>
<listitem>
<para>
<literal>ltree @> ltree[], ltree[] <@ ltree</literal>
<literal>ltree @&gt; ltree[], ltree[] &lt;@ ltree</literal>
- returns TRUE if array ltree[] contains a descendant of ltree.
</para>
</listitem>
@ -248,7 +248,7 @@
</listitem>
<listitem>
<para>
<literal>ltree[] ?@> ltree, ltree ?<@ ltree[], ltree[] ?~ lquery, ltree[] ?@ ltxtquery</literal>
<literal>ltree[] ?@&gt; ltree, ltree ?&lt;@ ltree[], ltree[] ?~ lquery, ltree[] ?@ ltxtquery</literal>
- returns first element of array ltree[] satisfies corresponding condition
and NULL in vice versa.
@ -292,7 +292,7 @@
</listitem>
<listitem>
<para>GiST index over ltree[]:
<literal>ltree[]<@ ltree, ltree @> ltree[], @, ~, ?.</literal>
<literal>ltree[]&lt;@ ltree, ltree @&gt; ltree[], @, ~, ?.</literal>
</para>
<para>
Example:
@ -418,8 +418,8 @@
<title>Example</title>
<programlisting>
createdb ltreetest
psql ltreetest < /usr/local/pgsql/share/contrib/ltree.sql
psql ltreetest < ltreetest.sql
psql ltreetest &lt; /usr/local/pgsql/share/contrib/ltree.sql
psql ltreetest &lt; ltreetest.sql
</programlisting>
<para>
@ -445,7 +445,7 @@ shown below:
</para>
<programlisting>
ltreetest=# select path from test where path <@ 'Top.Science';
ltreetest=# select path from test where path &lt;@ 'Top.Science';
path
------------------------------------
Top.Science
@ -481,7 +481,7 @@ ltreetest=# select path from test where path ~ '*.!pictures@.*.Astronomy.*';
Full text search:
</para>
<programlisting>
ltreetest=# select path from test where path @ 'Astro*% & !pictures@';
ltreetest=# select path from test where path @ 'Astro*% &amp; !pictures@';
path
------------------------------------
Top.Science.Astronomy
@ -490,7 +490,7 @@ ltreetest=# select path from test where path @ 'Astro*% & !pictures@';
Top.Hobbies.Amateurs_Astronomy
(4 rows)
ltreetest=# select path from test where path @ 'Astro* & !pictures@';
ltreetest=# select path from test where path @ 'Astro* &amp; !pictures@';
path
------------------------------------
Top.Science.Astronomy
@ -502,7 +502,7 @@ ltreetest=# select path from test where path @ 'Astro* & !pictures@';
Using Functions:
</para>
<programlisting>
ltreetest=# select subpath(path,0,2)||'Space'||subpath(path,2) from test where path <@ 'Top.Science.Astronomy';
ltreetest=# select subpath(path,0,2)||'Space'||subpath(path,2) from test where path &lt;@ 'Top.Science.Astronomy';
?column?
------------------------------------------
Top.Science.Space.Astronomy
@ -519,7 +519,7 @@ LANGUAGE SQL IMMUTABLE;
</para>
<programlisting>
ltreetest=# select ins_label(path,2,'Space') from test where path <@ 'Top.Science.Astronomy';
ltreetest=# select ins_label(path,2,'Space') from test where path &lt;@ 'Top.Science.Astronomy';
ins_label
------------------------------------------
Top.Science.Space.Astronomy
@ -537,7 +537,7 @@ CREATE FUNCTION ins_label(ltree, ltree, text) RETURNS ltree
AS 'select subpath($1,0,nlevel($2)) || $3 || subpath($1,nlevel($2));'
LANGUAGE SQL IMMUTABLE;
ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where path <@ 'Top.Science.Astronomy';
ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where path &lt;@ 'Top.Science.Astronomy';
ins_label
------------------------------------------
Top.Science.Space.Astronomy
@ -606,7 +606,7 @@ ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where
Q2: The same as Q1 but with counting of successors
</para>
<programlisting>
select path as parentpath , (select count(*)-1 from dmoz where path <@
select path as parentpath , (select count(*)-1 from dmoz where path &lt;@
p.path) as count from dmoz p where path ~ 'Top.Adult.Arts.Animation.*{1}';
parentpath | count
-----------------------------------+-------
@ -620,7 +620,7 @@ ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where
Q3: Get all parents
</para>
<programlisting>
select path from dmoz where path @> 'Top.Adult.Arts.Animation' order by
select path from dmoz where path @&gt; 'Top.Adult.Arts.Animation' order by
path asc;
path
--------------------------
@ -636,8 +636,8 @@ ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where
Q4: Get all parents with counting of children
</para>
<programlisting>
select path, (select count(*)-1 from dmoz where path <@ p.path) as count
from dmoz p where path @> 'Top.Adult.Arts.Animation' order by path asc;
select path, (select count(*)-1 from dmoz where path &lt;@ p.path) as count
from dmoz p where path @&gt; 'Top.Adult.Arts.Animation' order by path asc;
path | count
--------------------------+--------
Top | 300273
@ -753,7 +753,7 @@ ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where
<para>
For ltree we store LPS in a B-tree, implemented using GiST. Each node entry is
represented by (left_bound, signature, right_bound), so that we could speedup
operations <literal><, <=, =, >=, ></literal> using left_bound, right_bound and prune branches of
operations <literal>&lt;, &lt;=, =, &gt;=, &gt;</literal> using left_bound, right_bound and prune branches of
a tree using signature.
</para>
</sect2>
@ -768,4 +768,3 @@ ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where
</para>
</sect2>
</sect1>

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.121 2007/11/28 21:47:39 momjian Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.122 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="plpgsql">
<title><application>PL/pgSQL</application> - <acronym>SQL</acronym> Procedural Language</title>
@ -704,7 +704,7 @@ IF x &lt; y THEN ...
</programlisting>
what happens behind the scenes is
<programlisting>
PREPARE <replaceable>statement_name</>(integer, integer) AS SELECT $1 < $2;
PREPARE <replaceable>statement_name</>(integer, integer) AS SELECT $1 &lt; $2;
</programlisting>
and then this prepared statement is <command>EXECUTE</>d for each
execution of the <command>IF</> statement, with the current values

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/pltcl.sgml,v 2.46 2007/02/21 03:27:31 adunstan Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/pltcl.sgml,v 2.47 2007/12/03 23:49:50 tgl Exp $ -->
<chapter id="pltcl">
<title>PL/Tcl - Tcl Procedural Language</title>
@ -164,7 +164,7 @@ CREATE FUNCTION overpaid(employee) RETURNS boolean AS $$
if {200000.0 &lt; $1(salary)} {
return "t"
}
if {$1(age) &lt; 30 && 100000.0 &lt; $1(salary)} {
if {$1(age) &lt; 30 &amp;&amp; 100000.0 &lt; $1(salary)} {
return "t"
}
return "f"

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.20 2007/01/31 23:26:03 momjian Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.21 2007/12/03 23:49:51 tgl Exp $
PostgreSQL documentation
-->
@ -270,7 +270,7 @@ CREATE OPERATOR CLASS <replaceable class="parameter">name</replaceable> [ DEFAUL
<programlisting>
CREATE OPERATOR CLASS gist__int_ops
DEFAULT FOR TYPE _int4 USING gist AS
OPERATOR 3 &&,
OPERATOR 3 &amp;&amp;,
OPERATOR 6 = RECHECK,
OPERATOR 7 @&gt;,
OPERATOR 8 &lt;@,

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.558 2007/12/02 03:47:11 tgl Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.559 2007/12/03 23:49:50 tgl Exp $ -->
<!--
Typical markup:
@ -4833,7 +4833,7 @@ current_date &lt; 2017-11-17
</para>
<para>
The new operators are <literal>&</> (and), <literal>|</>
The new operators are <literal>&amp;</> (and), <literal>|</>
(or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>,
<type>inet</> <literal>-</> <type>int8</>, and
<type>inet</> <literal>-</> <type>inet</>.
@ -8879,8 +8879,8 @@ psql -t -f fixseq.sql db1 | psql -e db1
<listitem>
<para>
Remove the <literal>&lt;&lt</>, <literal>&gt;&gt;</>,
<literal>&amp;&lt</>, and <literal>&amp;&gt;</> operators from
Remove the <literal>&lt;&lt;</>, <literal>&gt;&gt;</>,
<literal>&amp;&lt;</>, and <literal>&amp;&gt;</> operators from
<filename>/contrib/cube</>
</para>
<para>
@ -10248,7 +10248,7 @@ typedefs (Michael)</para></listitem>
<listitem>
<para>
This is the first <productname>PostgreSQL</productname> release
to run natively on <trademark class=registered>Microsoft Windows</> as
to run natively on <trademark class="registered">Microsoft Windows</> as
a server. It can run as a <productname>Windows</> service. This
release supports NT-based Windows releases like
<productname>Windows 2000 SP4</>, <productname>Windows XP</>, and
@ -19187,7 +19187,7 @@ Copy pg_ident.conf.sample into /lib directory in install (Bruce)
Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
Fix too long syslog message (Tatsuo)
Fix problem with quoted indexes that are too long (Tom)
JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
JDBC ResultSet.getTimestamp() fix (Gregory Krasnow &amp; Floyd Marinescu)
ecpg changes (Michael)
</programlisting>
</para>
@ -21039,7 +21039,7 @@ Source Tree Changes
Add new html development tools, and flow chart in /tools/backend
Fix for SCO compiles
Stratus computer port Robert Gillies
Added support for shlib for BSD44_derived & i386_solaris
Added support for shlib for BSD44_derived &amp; i386_solaris
Make configure more automated(Brook)
Add script to check regression test results
Break parser functions into smaller files, group together(Bruce)
@ -21225,7 +21225,7 @@ Enhancements
------------
Default genetic optimizer GEQO parameter is now 8(Bruce)
Allow use parameters in target list having aggregates in functions(Vadim)
Added JDBC driver as an interface(Adrian & Peter)
Added JDBC driver as an interface(Adrian &amp; Peter)
pg_password utility
Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
@ -21236,7 +21236,7 @@ Include reserved words for string handling, outer joins, and unions(Thomas)
Implement extended comments ("/* ... */") using exclusive states(Thomas)
Add "//" single-line comments(Bruce)
Remove some restrictions on characters in operator names(Thomas)
DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim &amp; Thomas)
Add text concatenation operator and function (SQL92)(Thomas)
Support WITH TIME ZONE syntax (SQL92)(Thomas)
Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
@ -21258,7 +21258,7 @@ Replace distance operator "&lt;===&gt;" with "&lt;-&gt;"(Thomas)
Replace "above" operator "!^" with "&gt;^" and "below" operator "!|" with "&lt;^"(Thomas)
Add routines for text trimming on both ends, substring, and string position(Thomas)
Added conversion routines circle(box) and poly(circle)(Thomas)
Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
Allow internal sorts to be stored in memory rather than in files(Bruce &amp; Vadim)
Allow functions and operators on internally-identical types to succeed(Bruce)
Speed up backend start-up after profiling analysis(Bruce)
Inline frequently called functions for performance(Bruce)
@ -21291,7 +21291,7 @@ new interfaces directory(Marc)
Replace fopen() calls with calls to fd.c functions(Bruce)
Make functions static where possible(Bruce)
enclose unused functions in #ifdef NOT_USED(Bruce)
Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
Remove call to difftime() in timestamp support to fix SunOS(Bruce &amp; Thomas)
Changes for Digital Unix
Portability fix for pg_dumpall(Bruce)
Rename pg_attribute.attnvals to attdispersion(Bruce)
@ -21299,12 +21299,12 @@ Rename pg_attribute.attnvals to attdispersion(Bruce)
"built-in" manual page now "pgbuiltin"(Bruce)
"drop" manual page now "drop_table"(Bruce)
Add "create_trigger", "drop_trigger" manual pages(Thomas)
Add constraints regression test(Vadim & Thomas)
Add constraints regression test(Vadim &amp; Thomas)
Add comments syntax regression test(Thomas)
Add PGINDENT and support program(Bruce)
Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
Files moved to /src/tools directory(Bruce)
SPI and Trigger programming guides (Vadim & D'Arcy)
SPI and Trigger programming guides (Vadim &amp; D'Arcy)
</programlisting>
</para>
</sect2>
@ -21611,7 +21611,7 @@ Allow libpq to distinguish between text value '' and null(Bruce)
Allow non-postgres users with createdb privs to destroydb's
Allow restriction on who can create C functions(Bryan)
Allow restriction on who can do backend COPY(Bryan)
Can shrink tables, pg_time and pg_log(Vadim & Erich)
Can shrink tables, pg_time and pg_log(Vadim &amp; Erich)
Change debug level 2 to print queries only, changed debug heading layout(Bruce)
Change default decimal constant representation from float4 to float8(Bruce)
European date format now set when postmaster is started

View File

@ -72,7 +72,7 @@ test=> select '6.25 .. 6.50'::seg as "pH";
<para>
The external representation of an interval is formed using one or two
floating point numbers joined by the range operator ('..' or '...').
Optional certainty indicators (<, > and ~) are ignored by the internal
Optional certainty indicators (&lt;, &gt; and ~) are ignored by the internal
logics, but are retained in the data.
</para>
@ -82,35 +82,35 @@ test=> select '6.25 .. 6.50'::seg as "pH";
<tbody>
<row>
<entry>rule 1</entry>
<entry>seg -> boundary PLUMIN deviation</entry>
<entry>seg -&gt; boundary PLUMIN deviation</entry>
</row>
<row>
<entry>rule 2</entry>
<entry>seg -> boundary RANGE boundary</entry>
<entry>seg -&gt; boundary RANGE boundary</entry>
</row>
<row>
<entry>rule 3</entry>
<entry>seg -> boundary RANGE</entry>
<entry>seg -&gt; boundary RANGE</entry>
</row>
<row>
<entry>rule 4</entry>
<entry>seg -> RANGE boundary</entry>
<entry>seg -&gt; RANGE boundary</entry>
</row>
<row>
<entry>rule 5</entry>
<entry>seg -> boundary</entry>
<entry>seg -&gt; boundary</entry>
</row>
<row>
<entry>rule 6</entry>
<entry>boundary -> FLOAT</entry>
<entry>boundary -&gt; FLOAT</entry>
</row>
<row>
<entry>rule 7</entry>
<entry>boundary -> EXTENSION FLOAT</entry>
<entry>boundary -&gt; EXTENSION FLOAT</entry>
</row>
<row>
<entry>rule 8</entry>
<entry>deviation -> FLOAT</entry>
<entry>deviation -&gt; FLOAT</entry>
</row>
</tbody>
</tgroup>
@ -142,7 +142,7 @@ test=> select '6.25 .. 6.50'::seg as "pH";
</row>
<row>
<entry>EXTENSION</entry>
<entry>[<>~]</entry>
<entry>[&lt;&gt;~]</entry>
</row>
</tbody>
</tgroup>
@ -169,16 +169,16 @@ test=> select '6.25 .. 6.50'::seg as "pH";
</entry>
</row>
<row>
<entry><5.0</entry>
<entry>&lt;5.0</entry>
<entry>
(rules 5,7) -- creates a point at 5.0; '<' is ignored but
(rules 5,7) -- creates a point at 5.0; '&lt;' is ignored but
is preserved as a comment
</entry>
</row>
<row>
<entry>>5.0</entry>
<entry>&gt;5.0</entry>
<entry>
(rules 5,7) -- creates a point at 5.0; '>' is ignored but
(rules 5,7) -- creates a point at 5.0; '&gt;' is ignored but
is preserved as a comment
</entry>
</row>
@ -305,39 +305,39 @@ postgres=> select '10(+-)1'::seg as seg;
<itemizedlist>
<listitem>
<programlisting>
[a, b] << [c, d] Is left of
[a, b] &lt;&lt; [c, d] Is left of
</programlisting>
<para>
The left operand, [a, b], occurs entirely to the left of the
right operand, [c, d], on the axis (-inf, inf). It means,
[a, b] << [c, d] is true if b < c and false otherwise
[a, b] &lt;&lt; [c, d] is true if b &lt; c and false otherwise
</para>
</listitem>
<listitem>
<programlisting>
[a, b] >> [c, d] Is right of
[a, b] &gt;&gt; [c, d] Is right of
</programlisting>
<para>
[a, b] is occurs entirely to the right of [c, d].
[a, b] >> [c, d] is true if a > d and false otherwise
[a, b] &gt;&gt; [c, d] is true if a &gt; d and false otherwise
</para>
</listitem>
<listitem>
<programlisting>
[a, b] &< [c, d] Overlaps or is left of
[a, b] &amp;&lt; [c, d] Overlaps or is left of
</programlisting>
<para>
This might be better read as "does not extend to right of".
It is true when b <= d.
It is true when b &lt;= d.
</para>
</listitem>
<listitem>
<programlisting>
[a, b] &> [c, d] Overlaps or is right of
[a, b] &amp;&gt; [c, d] Overlaps or is right of
</programlisting>
<para>
This might be better read as "does not extend to left of".
It is true when a >= c.
It is true when a &gt;= c.
</para>
</listitem>
<listitem>
@ -351,7 +351,7 @@ postgres=> select '10(+-)1'::seg as seg;
</listitem>
<listitem>
<programlisting>
[a, b] && [c, d] Overlaps
[a, b] &amp;&amp; [c, d] Overlaps
</programlisting>
<para>
The segments [a, b] and [c, d] overlap.
@ -359,25 +359,25 @@ postgres=> select '10(+-)1'::seg as seg;
</listitem>
<listitem>
<programlisting>
[a, b] @> [c, d] Contains
[a, b] @&gt; [c, d] Contains
</programlisting>
<para>
The segment [a, b] contains the segment [c, d], that is,
a <= c and b >= d
a &lt;= c and b &gt;= d
</para>
</listitem>
<listitem>
<programlisting>
[a, b] <@ [c, d] Contained in
[a, b] &lt;@ [c, d] Contained in
</programlisting>
<para>
The segment [a, b] is contained in [c, d], that is,
a >= c and b <= d
a &gt;= c and b &lt;= d
</para>
</listitem>
</itemizedlist>
<para>
(Before PostgreSQL 8.2, the containment operators @> and <@ were
(Before PostgreSQL 8.2, the containment operators @&gt; and &lt;@ were
respectively called @ and ~. These names are still available, but are
deprecated and will eventually be retired. Notice that the old names
are reversed from the convention formerly followed by the core geometric
@ -393,8 +393,8 @@ postgres=> select '10(+-)1'::seg as seg;
</para>
<programlisting>
[a, b] < [c, d] Less than
[a, b] > [c, d] Greater than
[a, b] &lt; [c, d] Less than
[a, b] &gt; [c, d] Greater than
</programlisting>
<para>
These operators do not make a lot of sense for any practical

View File

@ -173,7 +173,7 @@ CREATE TYPE tablefunc_crosstab_N AS (
e.g. the provided crosstab2 function produces a set something like:
</para>
<programlisting>
<== values columns ==>
&lt;== values columns ==&gt;
row_name category_1 category_2
---------+------------+------------
row1 val1 val2
@ -286,7 +286,7 @@ crosstab(text sql, int N)
the example crosstab function produces a set something like:
</para>
<programlisting>
<== values columns ==>
&lt;== values columns ==&gt;
row_name category_1 category_2
---------+------------+------------
row1 val1 val2
@ -479,7 +479,7 @@ SELECT DISTINCT cat FROM foo;
the example crosstab function produces a set something like:
</para>
<programlisting>
<== values columns ==>
&lt;== values columns ==&gt;
row_name extra cat1 cat2 cat3 cat4
---------+-------+------+------+------+------
row1 extra1 val1 val2 val4

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.50 2007/02/14 01:58:56 tgl Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.51 2007/12/03 23:49:51 tgl Exp $ -->
<chapter id="triggers">
<title>Triggers</title>
@ -288,7 +288,7 @@ CALLED_AS_TRIGGER(fcinfo)
</programlisting>
which expands to:
<programlisting>
((fcinfo)-&gt;context != NULL && IsA((fcinfo)-&gt;context, TriggerData))
((fcinfo)-&gt;context != NULL &amp;&amp; IsA((fcinfo)-&gt;context, TriggerData))
</programlisting>
If this returns true, then it is safe to cast
<literal>fcinfo-&gt;context</> to type <literal>TriggerData
@ -580,7 +580,7 @@ trigf(PG_FUNCTION_ARGS)
/* check for null values */
if (!TRIGGER_FIRED_BY_DELETE(trigdata-&gt;tg_event)
&& TRIGGER_FIRED_BEFORE(trigdata-&gt;tg_event))
&amp;&amp; TRIGGER_FIRED_BEFORE(trigdata-&gt;tg_event))
checknull = true;
if (TRIGGER_FIRED_BEFORE(trigdata-&gt;tg_event))

View File

@ -401,7 +401,7 @@ WHERE t.author_id = p.person_id;
</para>
<para>
Also note that if either the document or stylesheet values do not
begin with a < then they will be treated as URLs and libxslt will
begin with a &lt; then they will be treated as URLs and libxslt will
fetch them. It thus follows that you can use xslt_process as a means
to fetch the contents of URLs - you should be aware of the security
implications of this.