mirror of
https://github.com/postgres/postgres.git
synced 2025-08-27 07:42:10 +03:00
GIN: Generalized Inverted iNdex.
text[], int4[], Tsearch2 support for GIN.
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.144 2006/03/05 15:58:23 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.145 2006/05/02 11:28:54 teodor Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -376,6 +376,13 @@ check_index_is_clusterable(Relation OldHeap, Oid indexOid, bool recheck)
|
||||
RelationGetRelationName(OldIndex))));
|
||||
}
|
||||
|
||||
if (!OldIndex->rd_am->amclusterable)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("cannot cluster on index \"%s\" because access method does not clusterable",
|
||||
RelationGetRelationName(OldIndex))));
|
||||
|
||||
|
||||
/*
|
||||
* Disallow clustering system relations. This will definitely NOT work
|
||||
* for shared relations (we have no way to update pg_class rows in other
|
||||
|
@@ -9,7 +9,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/commands/opclasscmds.c,v 1.43 2006/03/14 22:48:18 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/opclasscmds.c,v 1.44 2006/05/02 11:28:54 teodor Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -273,11 +273,11 @@ DefineOpClass(CreateOpClassStmt *stmt)
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Currently, only GiST allows storagetype different from
|
||||
* Currently, only GiST and GIN allows storagetype different from
|
||||
* datatype. This hardcoded test should be eliminated in favor of
|
||||
* adding another boolean column to pg_am ...
|
||||
*/
|
||||
if (amoid != GIST_AM_OID)
|
||||
if (!(amoid == GIST_AM_OID || amoid == GIN_AM_OID))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
|
||||
errmsg("storage type may not be different from data type for access method \"%s\"",
|
||||
|
@@ -13,7 +13,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.326 2006/03/31 23:32:06 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.327 2006/05/02 11:28:54 teodor Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -2982,7 +2982,16 @@ scan_index(Relation indrel, double num_tuples)
|
||||
/*
|
||||
* Check for tuple count mismatch. If the index is partial, then it's OK
|
||||
* for it to have fewer tuples than the heap; else we got trouble.
|
||||
*
|
||||
* XXX Hack. Since GIN stores every pointer to heap several times and
|
||||
* counting num_index_tuples during vacuum is very comlpex and slow
|
||||
* we just copy num_tuples to num_index_tuples as upper limit to avoid
|
||||
* WARNING and optimizer mistakes.
|
||||
*/
|
||||
if ( indrel->rd_rel->relam == GIN_AM_OID )
|
||||
{
|
||||
stats->num_index_tuples = num_tuples;
|
||||
} else
|
||||
if (stats->num_index_tuples != num_tuples)
|
||||
{
|
||||
if (stats->num_index_tuples > num_tuples ||
|
||||
@@ -3052,7 +3061,16 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
|
||||
/*
|
||||
* Check for tuple count mismatch. If the index is partial, then it's OK
|
||||
* for it to have fewer tuples than the heap; else we got trouble.
|
||||
*
|
||||
* XXX Hack. Since GIN stores every pointer to heap several times and
|
||||
* counting num_index_tuples during vacuum is very comlpex and slow
|
||||
* we just copy num_tuples to num_index_tuples as upper limit to avoid
|
||||
* WARNING and optimizer mistakes.
|
||||
*/
|
||||
if ( indrel->rd_rel->relam == GIN_AM_OID )
|
||||
{
|
||||
stats->num_index_tuples = num_tuples;
|
||||
} else
|
||||
if (stats->num_index_tuples != num_tuples + keep_tuples)
|
||||
{
|
||||
if (stats->num_index_tuples > num_tuples + keep_tuples ||
|
||||
|
Reference in New Issue
Block a user