Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
e55c8e36
Commit
e55c8e36
authored
Apr 08, 2007
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support syntax "CLUSTER table USING index", which is more logical.
Holger Schurig
parent
d7e2de66
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
52 additions
and
42 deletions
+52
-42
doc/src/sgml/ref/cluster.sgml
doc/src/sgml/ref/cluster.sgml
+15
-11
src/backend/parser/gram.y
src/backend/parser/gram.y
+24
-17
src/bin/psql/tab-complete.c
src/bin/psql/tab-complete.c
+11
-12
src/test/regress/expected/cluster.out
src/test/regress/expected/cluster.out
+1
-1
src/test/regress/sql/cluster.sql
src/test/regress/sql/cluster.sql
+1
-1
No files found.
doc/src/sgml/ref/cluster.sgml
View file @
e55c8e36
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/cluster.sgml,v 1.4
0 2007/02/01 00:28:18
momjian Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/cluster.sgml,v 1.4
1 2007/04/08 00:26:33
momjian Exp $
PostgreSQL documentation
-->
...
...
@@ -20,8 +20,7 @@ PostgreSQL documentation
<refsynopsisdiv>
<synopsis>
CLUSTER <replaceable class="PARAMETER">indexname</replaceable> ON <replaceable class="PARAMETER">tablename</replaceable>
CLUSTER <replaceable class="PARAMETER">tablename</replaceable>
CLUSTER <replaceable class="PARAMETER">tablename</replaceable> [ USING <replaceable class="PARAMETER">indexname</replaceable> ]
CLUSTER
</synopsis>
</refsynopsisdiv>
...
...
@@ -77,19 +76,19 @@ CLUSTER
<variablelist>
<varlistentry>
<term><replaceable class="PARAMETER">
index
name</replaceable></term>
<term><replaceable class="PARAMETER">
table
name</replaceable></term>
<listitem>
<para>
The name
of an index
.
The name
(possibly schema-qualified) of a table
.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">
table
name</replaceable></term>
<term><replaceable class="PARAMETER">
index
name</replaceable></term>
<listitem>
<para>
The name
(possibly schema-qualified) of a table
.
The name
of an index
.
</para>
</listitem>
</varlistentry>
...
...
@@ -172,9 +171,9 @@ CREATE TABLE <replaceable class="parameter">newtable</replaceable> AS
<para>
Cluster the table <literal>employees</literal> on the basis of
its index <literal>emp_ind</literal>:
its index <literal>emp
loyees
_ind</literal>:
<programlisting>
CLUSTER emp
_ind ON emp
;
CLUSTER emp
loyees USING employees_ind
;
</programlisting>
</para>
...
...
@@ -182,7 +181,7 @@ CLUSTER emp_ind ON emp;
Cluster the <literal>employees</literal> table using the same
index that was used before:
<programlisting>
CLUSTER emp;
CLUSTER emp
loyees
;
</programlisting>
</para>
...
...
@@ -198,7 +197,12 @@ CLUSTER;
<title>Compatibility</title>
<para>
There is no <command>CLUSTER</command> statement in the SQL standard.
The syntax:
<synopsis>
CLUSTER <replaceable class="PARAMETER">indexname</replaceable> ON <replaceable class="PARAMETER">tablename</replaceable>
</synopsis>
is also supported for compatibility with pre-8.3 <productname>PostgreSQL</> installations.
There is no <command>CLUSTER</command> statement in the SQL standard.
</para>
</refsect1>
...
...
src/backend/parser/gram.y
View file @
e55c8e36
...
...
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.58
6 2007/04/02 22:20:53
momjian Exp $
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.58
7 2007/04/08 00:26:34
momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
...
...
@@ -209,7 +209,7 @@ static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args)
%type <str> relation_name copy_file_name
database_name access_method_clause access_method attr_name
index_name name file_name
index_name name file_name
cluster_index_specification
%type <list> func_name handler_name qual_Op qual_all_Op subquery_Op
opt_class opt_validator
...
...
@@ -5084,7 +5084,7 @@ opt_check_option:
/*****************************************************************************
*
* QUERY:
*
load
"filename"
*
LOAD
"filename"
*
*****************************************************************************/
...
...
@@ -5346,25 +5346,18 @@ CreateConversionStmt:
/*****************************************************************************
*
* QUERY:
*
cluster <index_name> on <qualified_name>
*
cluster <qualified_name>
*
cluster
*
CLUSTER <qualified_name> [ USING <index_name> ]
*
CLUSTER
*
CLUSTER <index_name> ON <qualified_name> (for pre-8.3)
*
*****************************************************************************/
ClusterStmt:
CLUSTER index_name ON qualified_name
{
ClusterStmt *n = makeNode(ClusterStmt);
n->relation = $4;
n->indexname = $2;
$$ = (Node*)n;
}
| CLUSTER qualified_name
CLUSTER qualified_name cluster_index_specification
{
ClusterStmt *n = makeNode(ClusterStmt);
n->relation = $2;
n->indexname =
NULL
;
n->indexname =
$3
;
$$ = (Node*)n;
}
| CLUSTER
...
...
@@ -5374,13 +5367,27 @@ ClusterStmt:
n->indexname = NULL;
$$ = (Node*)n;
}
/* kept for pre-8.3 compatibility */
| CLUSTER index_name ON qualified_name
{
ClusterStmt *n = makeNode(ClusterStmt);
n->relation = $4;
n->indexname = $2;
$$ = (Node*)n;
}
;
cluster_index_specification:
USING index_name { $$ = $2; }
| /*EMPTY*/ { $$ = NULL; }
;
/*****************************************************************************
*
* QUERY:
*
vacuum
*
analyze
*
VACUUM
*
ANALYZE
*
*****************************************************************************/
...
...
src/bin/psql/tab-complete.c
View file @
e55c8e36
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2007, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.16
0 2007/03/26 16:58:40 tgl
Exp $
* $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.16
1 2007/04/08 00:26:34 momjian
Exp $
*/
/*----------------------------------------------------------------------
...
...
@@ -822,11 +822,9 @@ psql_completion(char *text, int start, int end)
COMPLETE_WITH_LIST
(
list_COLUMNALTER
);
}
else
if
(
pg_strcasecmp
(
prev3_wd
,
"TABLE"
)
==
0
&&
pg_strcasecmp
(
prev_wd
,
"CLUSTER"
)
==
0
)
else
if
(
pg_strcasecmp
(
prev3_wd
,
"TABLE"
)
==
0
)
COMPLETE_WITH_CONST
(
"ON"
);
else
if
(
pg_strcasecmp
(
prev4_wd
,
"TABLE"
)
==
0
&&
pg_strcasecmp
(
prev2_wd
,
"CLUSTER"
)
==
0
&&
pg_strcasecmp
(
prev_wd
,
"ON"
)
==
0
)
{
completion_info_charp
=
prev3_wd
;
...
...
@@ -929,24 +927,25 @@ psql_completion(char *text, int start, int end)
/*
* If the previous word is CLUSTER and not without produce list of
*
indexes.
*
tables
*/
else
if
(
pg_strcasecmp
(
prev_wd
,
"CLUSTER"
)
==
0
&&
pg_strcasecmp
(
prev2_wd
,
"WITHOUT"
)
!=
0
)
COMPLETE_WITH_SCHEMA_QUERY
(
Query_for_list_of_
index
es
,
NULL
);
/* If we have CLUSTER <sth>, then add "
ON
" */
COMPLETE_WITH_SCHEMA_QUERY
(
Query_for_list_of_
tabl
es
,
NULL
);
/* If we have CLUSTER <sth>, then add "
USING
" */
else
if
(
pg_strcasecmp
(
prev2_wd
,
"CLUSTER"
)
==
0
&&
pg_strcasecmp
(
prev_wd
,
"ON"
)
!=
0
)
COMPLETE_WITH_CONST
(
"ON"
);
pg_strcasecmp
(
prev_wd
,
"ON"
)
!=
0
)
{
COMPLETE_WITH_CONST
(
"USING"
);
}
/*
* If we have CLUSTER <sth> O
N, then add the correct tablename
as well.
* If we have CLUSTER <sth> O
RDER BY, then add the index
as well.
*/
else
if
(
pg_strcasecmp
(
prev3_wd
,
"CLUSTER"
)
==
0
&&
pg_strcasecmp
(
prev_wd
,
"
ON
"
)
==
0
)
pg_strcasecmp
(
prev_wd
,
"
USING
"
)
==
0
)
{
completion_info_charp
=
prev2_wd
;
COMPLETE_WITH_QUERY
(
Query_for_
table_owning_index
);
COMPLETE_WITH_QUERY
(
Query_for_
index_of_table
);
}
/* COMMENT */
...
...
src/test/regress/expected/cluster.out
View file @
e55c8e36
...
...
@@ -329,7 +329,7 @@ INSERT INTO clstr_3 VALUES (1);
CLUSTER clstr_2;
ERROR: there is no previously clustered index for table "clstr_2"
CLUSTER clstr_1_pkey ON clstr_1;
CLUSTER clstr_2
_pkey ON clstr_2
;
CLUSTER clstr_2
USING clstr_2_pkey
;
SELECT * FROM clstr_1 UNION ALL
SELECT * FROM clstr_2 UNION ALL
SELECT * FROM clstr_3;
...
...
src/test/regress/sql/cluster.sql
View file @
e55c8e36
...
...
@@ -122,7 +122,7 @@ INSERT INTO clstr_3 VALUES (1);
CLUSTER
clstr_2
;
CLUSTER
clstr_1_pkey
ON
clstr_1
;
CLUSTER
clstr_2
_pkey
ON
clstr_2
;
CLUSTER
clstr_2
USING
clstr_2_pkey
;
SELECT
*
FROM
clstr_1
UNION
ALL
SELECT
*
FROM
clstr_2
UNION
ALL
SELECT
*
FROM
clstr_3
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment