Implement TODO item:
* Change LIMIT val,val to offset,limit to match MySQL Documentation updates too.
This commit is contained in:
parent
ddfdb1e3f1
commit
1aab783b59
8
doc/TODO
8
doc/TODO
@ -74,10 +74,10 @@ TYPES
|
|||||||
o Allow nulls in arrays
|
o Allow nulls in arrays
|
||||||
o Allow arrays to be ORDER'ed
|
o Allow arrays to be ORDER'ed
|
||||||
o fix array handling in ECPG
|
o fix array handling in ECPG
|
||||||
BINARY DATA
|
lfBINARY DATA
|
||||||
o -Add non-large-object binary field (already exists -- bytea)
|
o -Add non-large-object binary field (already exists -- bytea)
|
||||||
o -Make binary interface for TOAST columns (base64)
|
o -Make binary interface for TOAST columns (base64)
|
||||||
o Improve vacuum of large objects (/contrib/vacuumlo)
|
o Improve vacuum of large objects, like /contrib/vacuumlo
|
||||||
o Add security checking for large objects
|
o Add security checking for large objects
|
||||||
o Make file in/out interface for TOAST columns, similar to large object
|
o Make file in/out interface for TOAST columns, similar to large object
|
||||||
interface (force out-of-line storage and no compression)
|
interface (force out-of-line storage and no compression)
|
||||||
@ -105,7 +105,7 @@ INDEXES
|
|||||||
* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
|
* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
|
||||||
fails index can't store constant parameters
|
fails index can't store constant parameters
|
||||||
* Add FILLFACTOR to index creation
|
* Add FILLFACTOR to index creation
|
||||||
* Order duplicate index entries by tid
|
* Order duplicate index entries by tid for faster heap lookups
|
||||||
* -Re-enable partial indexes
|
* -Re-enable partial indexes
|
||||||
* -Prevent pg_attribute from having duplicate oids for indexes (Tom)
|
* -Prevent pg_attribute from having duplicate oids for indexes (Tom)
|
||||||
* Allow inherited tables to inherit index, UNIQUE constraint, and primary
|
* Allow inherited tables to inherit index, UNIQUE constraint, and primary
|
||||||
@ -124,7 +124,7 @@ INDEXES
|
|||||||
non-consecutive keys or OR clauses, so fewer heap accesses
|
non-consecutive keys or OR clauses, so fewer heap accesses
|
||||||
* Allow SELECT * FROM tab WHERE int2col = 4 to use int2col index, int8,
|
* Allow SELECT * FROM tab WHERE int2col = 4 to use int2col index, int8,
|
||||||
float4, numeric/decimal too [optimizer]
|
float4, numeric/decimal too [optimizer]
|
||||||
* Use indexes with CIDR '<<' (contains) operator
|
* -Use indexes with CIDR '<<' (contains) operator
|
||||||
* Allow LIKE indexing optimization for non-ASCII locales
|
* Allow LIKE indexing optimization for non-ASCII locales
|
||||||
* Be smarter about insertion of already-ordered data into btree index
|
* Be smarter about insertion of already-ordered data into btree index
|
||||||
* -Gather more accurate dispersion statistics using indexes (Tom)
|
* -Gather more accurate dispersion statistics using indexes (Tom)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/select.sgml,v 1.46 2001/09/14 10:28:09 ishii Exp $
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/select.sgml,v 1.47 2001/09/23 03:39:01 momjian Exp $
|
||||||
Postgres documentation
|
Postgres documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -29,7 +29,8 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
|
|||||||
[ { UNION | INTERSECT | EXCEPT [ ALL ] } <replaceable class="PARAMETER">select</replaceable> ]
|
[ { UNION | INTERSECT | EXCEPT [ ALL ] } <replaceable class="PARAMETER">select</replaceable> ]
|
||||||
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
||||||
[ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ]
|
[ FOR UPDATE [ OF <replaceable class="PARAMETER">tablename</replaceable> [, ...] ] ]
|
||||||
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } [ { OFFSET | , } <replaceable class="PARAMETER">start</replaceable> ]]
|
[ LIMIT [ <replaceable class="PARAMETER">start</replaceable> , ] { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
|
||||||
|
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
|
||||||
|
|
||||||
where <replaceable class="PARAMETER">from_item</replaceable> can be:
|
where <replaceable class="PARAMETER">from_item</replaceable> can be:
|
||||||
|
|
||||||
@ -613,7 +614,8 @@ SELECT name FROM distributors ORDER BY code;
|
|||||||
<synopsis>
|
<synopsis>
|
||||||
<replaceable class="PARAMETER">table_query</replaceable> UNION [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
|
<replaceable class="PARAMETER">table_query</replaceable> UNION [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
|
||||||
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
||||||
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } [ { OFFSET | , } <replaceable class="PARAMETER">start</replaceable> ]]
|
[ LIMIT [ <replaceable class="PARAMETER">start</replaceable> , ] { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
|
||||||
|
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
|
||||||
</synopsis>
|
</synopsis>
|
||||||
|
|
||||||
where
|
where
|
||||||
@ -662,7 +664,8 @@ SELECT name FROM distributors ORDER BY code;
|
|||||||
<synopsis>
|
<synopsis>
|
||||||
<replaceable class="PARAMETER">table_query</replaceable> INTERSECT [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
|
<replaceable class="PARAMETER">table_query</replaceable> INTERSECT [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
|
||||||
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
||||||
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } [ { OFFSET | , } <replaceable class="PARAMETER">start</replaceable> ]]
|
[ LIMIT [ <replaceable class="PARAMETER">start</replaceable> , ] { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
|
||||||
|
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
|
||||||
</synopsis>
|
</synopsis>
|
||||||
|
|
||||||
where
|
where
|
||||||
@ -702,7 +705,8 @@ SELECT name FROM distributors ORDER BY code;
|
|||||||
<synopsis>
|
<synopsis>
|
||||||
<replaceable class="PARAMETER">table_query</replaceable> EXCEPT [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
|
<replaceable class="PARAMETER">table_query</replaceable> EXCEPT [ ALL ] <replaceable class="PARAMETER">table_query</replaceable>
|
||||||
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
||||||
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } [ { OFFSET | , } <replaceable class="PARAMETER">start</replaceable> ]]
|
[ LIMIT [ <replaceable class="PARAMETER">start</replaceable> , ] { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
|
||||||
|
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
|
||||||
</synopsis>
|
</synopsis>
|
||||||
|
|
||||||
where
|
where
|
||||||
@ -738,7 +742,7 @@ SELECT name FROM distributors ORDER BY code;
|
|||||||
</title>
|
</title>
|
||||||
<para>
|
<para>
|
||||||
<synopsis>
|
<synopsis>
|
||||||
LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } [ { OFFSET | , } <replaceable class="PARAMETER">start</replaceable> ]
|
LIMIT [ <replaceable class="PARAMETER">start</replaceable> , ] { <replaceable class="PARAMETER">count</replaceable> | ALL }
|
||||||
OFFSET <replaceable class="PARAMETER">start</replaceable>
|
OFFSET <replaceable class="PARAMETER">start</replaceable>
|
||||||
</synopsis>
|
</synopsis>
|
||||||
|
|
||||||
@ -761,14 +765,14 @@ SELECT name FROM distributors ORDER BY code;
|
|||||||
constrains the result rows into a unique order. Otherwise you will get
|
constrains the result rows into a unique order. Otherwise you will get
|
||||||
an unpredictable subset of the query's rows---you may be asking for
|
an unpredictable subset of the query's rows---you may be asking for
|
||||||
the tenth through twentieth rows, but tenth through twentieth in what
|
the tenth through twentieth rows, but tenth through twentieth in what
|
||||||
ordering? You don't know what ordering, unless you specified ORDER BY.
|
ordering? You don't know what ordering unless you specify ORDER BY.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
As of <productname>Postgres</productname> 7.0, the
|
As of <productname>Postgres</productname> 7.0, the
|
||||||
query optimizer takes LIMIT into account when generating a query plan,
|
query optimizer takes LIMIT into account when generating a query plan,
|
||||||
so you are very likely to get different plans (yielding different row
|
so you are very likely to get different plans (yielding different row
|
||||||
orders) depending on what you give for LIMIT and OFFSET. Thus, using
|
orders) depending on what you use for LIMIT and OFFSET. Thus, using
|
||||||
different LIMIT/OFFSET values to select different subsets of a query
|
different LIMIT/OFFSET values to select different subsets of a query
|
||||||
result <emphasis>will give inconsistent results</emphasis> unless
|
result <emphasis>will give inconsistent results</emphasis> unless
|
||||||
you enforce a predictable result ordering with ORDER BY. This is not
|
you enforce a predictable result ordering with ORDER BY. This is not
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$Header: /cvsroot/pgsql/doc/src/sgml/sql.sgml,v 1.21 2001/05/22 16:00:00 petere Exp $
|
$Header: /cvsroot/pgsql/doc/src/sgml/sql.sgml,v 1.22 2001/09/23 03:39:01 momjian Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="sql">
|
<chapter id="sql">
|
||||||
@ -864,7 +864,8 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="PARAMETER">expression</replac
|
|||||||
[ { UNION | INTERSECT | EXCEPT [ ALL ] } <replaceable class="PARAMETER">select</replaceable> ]
|
[ { UNION | INTERSECT | EXCEPT [ ALL ] } <replaceable class="PARAMETER">select</replaceable> ]
|
||||||
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
[ ORDER BY <replaceable class="PARAMETER">expression</replaceable> [ ASC | DESC | USING <replaceable class="PARAMETER">operator</replaceable> ] [, ...] ]
|
||||||
[ FOR UPDATE [ OF <replaceable class="PARAMETER">class_name</replaceable> [, ...] ] ]
|
[ FOR UPDATE [ OF <replaceable class="PARAMETER">class_name</replaceable> [, ...] ] ]
|
||||||
[ LIMIT { <replaceable class="PARAMETER">count</replaceable> | ALL } [ { OFFSET | , } <replaceable class="PARAMETER">start</replaceable> ]]
|
[ LIMIT [ <replaceable class="PARAMETER">start</replaceable> , ] { <replaceable class="PARAMETER">count</replaceable> | ALL } ]
|
||||||
|
[ OFFSET <replaceable class="PARAMETER">start</replaceable> ]
|
||||||
</synopsis>
|
</synopsis>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.252 2001/09/20 14:20:27 petere Exp $
|
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.253 2001/09/23 03:39:01 momjian Exp $
|
||||||
*
|
*
|
||||||
* HISTORY
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* AUTHOR DATE MAJOR EVENT
|
||||||
@ -3587,8 +3587,8 @@ OptUseOp: USING all_Op { $$ = $2; }
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
select_limit: LIMIT select_limit_value ',' select_offset_value
|
select_limit: LIMIT select_offset_value ',' select_limit_value
|
||||||
{ $$ = makeList2($4, $2); }
|
{ $$ = makeList2($2, $4); }
|
||||||
| LIMIT select_limit_value OFFSET select_offset_value
|
| LIMIT select_limit_value OFFSET select_offset_value
|
||||||
{ $$ = makeList2($4, $2); }
|
{ $$ = makeList2($4, $2); }
|
||||||
| LIMIT select_limit_value
|
| LIMIT select_limit_value
|
||||||
|
Loading…
x
Reference in New Issue
Block a user