@ -16,6 +16,7 @@
# include <time.h>
# include "catalog/pg_am_d.h"
# include "catalog/pg_class_d.h"
# include "catalog/pg_namespace_d.h"
# include "common/logging.h"
# include "common/username.h"
@ -857,7 +858,7 @@ prepare_heap_command(PQExpBuffer sql, RelationInfo *rel, PGconn *conn)
appendPQExpBuffer ( sql ,
" \n ) v WHERE c.oid = %u "
" AND c.relpersistence != 't' " ,
" AND c.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) ,
rel - > reloid ) ;
}
@ -890,7 +891,7 @@ prepare_btree_command(PQExpBuffer sql, RelationInfo *rel, PGconn *conn)
" \n FROM pg_catalog.pg_class c, pg_catalog.pg_index i "
" WHERE c.oid = %u "
" AND c.oid = i.indexrelid "
" AND c.relpersistence != 't' "
" AND c.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) " "
" AND i.indisready AND i.indisvalid AND i.indislive " ,
rel - > datinfo - > amcheck_schema ,
( opts . heapallindexed ? " true " : " false " ) ,
@ -905,7 +906,7 @@ prepare_btree_command(PQExpBuffer sql, RelationInfo *rel, PGconn *conn)
" \n FROM pg_catalog.pg_class c, pg_catalog.pg_index i "
" WHERE c.oid = %u "
" AND c.oid = i.indexrelid "
" AND c.relpersistence != 't' "
" AND c.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) " "
" AND i.indisready AND i.indisvalid AND i.indislive " ,
rel - > datinfo - > amcheck_schema ,
( opts . heapallindexed ? " true " : " false " ) ,
@ -1952,7 +1953,8 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
* until firing off the amcheck command , as the state of an index may
* change by then .
*/
appendPQExpBufferStr ( & sql , " \n WHERE c.relpersistence != 't' " ) ;
appendPQExpBufferStr ( & sql , " \n WHERE c.relpersistence != "
CppAsString2 ( RELPERSISTENCE_TEMP ) ) ;
if ( opts . excludetbl | | opts . excludeidx | | opts . excludensp )
appendPQExpBufferStr ( & sql , " \n AND ep.pattern_id IS NULL " ) ;
@ -1972,15 +1974,29 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
if ( opts . allrel )
appendPQExpBuffer ( & sql ,
" AND c.relam = %u "
" AND c.relkind IN ('r', 'S', 'm', 't') "
" AND c.relkind IN ( "
CppAsString2 ( RELKIND_RELATION ) " , "
CppAsString2 ( RELKIND_SEQUENCE ) " , "
CppAsString2 ( RELKIND_MATVIEW ) " , "
CppAsString2 ( RELKIND_TOASTVALUE ) " ) "
" AND c.relnamespace != %u " ,
HEAP_TABLE_AM_OID , PG_TOAST_NAMESPACE ) ;
else
appendPQExpBuffer ( & sql ,
" AND c.relam IN (%u, %u) "
" AND c.relkind IN ('r', 'S', 'm', 't', 'i') "
" AND ((c.relam = %u AND c.relkind IN ('r', 'S', 'm', 't')) OR "
" (c.relam = %u AND c.relkind = 'i')) " ,
" AND c.relkind IN ( "
CppAsString2 ( RELKIND_RELATION ) " , "
CppAsString2 ( RELKIND_SEQUENCE ) " , "
CppAsString2 ( RELKIND_MATVIEW ) " , "
CppAsString2 ( RELKIND_TOASTVALUE ) " , "
CppAsString2 ( RELKIND_INDEX ) " ) "
" AND ((c.relam = %u AND c.relkind IN ( "
CppAsString2 ( RELKIND_RELATION ) " , "
CppAsString2 ( RELKIND_SEQUENCE ) " , "
CppAsString2 ( RELKIND_MATVIEW ) " , "
CppAsString2 ( RELKIND_TOASTVALUE ) " )) OR "
" (c.relam = %u AND c.relkind = "
CppAsString2 ( RELKIND_INDEX ) " )) " ,
HEAP_TABLE_AM_OID , BTREE_AM_OID ,
HEAP_TABLE_AM_OID , BTREE_AM_OID ) ;
@ -2007,7 +2023,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
" \n AND (t.relname ~ ep.rel_regex OR ep.rel_regex IS NULL) "
" \n AND ep.heap_only "
" \n WHERE ep.pattern_id IS NULL "
" \n AND t.relpersistence != 't' " ) ;
" \n AND t.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) ) ;
appendPQExpBufferStr ( & sql ,
" \n ) " ) ;
}
@ -2026,7 +2042,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
" ON r.oid = i.indrelid "
" INNER JOIN pg_catalog.pg_class c "
" ON i.indexrelid = c.oid "
" AND c.relpersistence != 't' " ) ;
" AND c.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) ) ;
if ( opts . excludeidx | | opts . excludensp )
appendPQExpBufferStr ( & sql ,
" \n INNER JOIN pg_catalog.pg_namespace n "
@ -2041,7 +2057,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
" \n WHERE true " ) ;
appendPQExpBuffer ( & sql ,
" AND c.relam = %u "
" AND c.relkind = 'i' " ,
" AND c.relkind = " CppAsString2 ( RELKIND_INDEX ) ,
BTREE_AM_OID ) ;
if ( opts . no_toast_expansion )
appendPQExpBuffer ( & sql ,
@ -2065,7 +2081,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
" ON t.oid = i.indrelid "
" \n INNER JOIN pg_catalog.pg_class c "
" ON i.indexrelid = c.oid "
" AND c.relpersistence != 't' " ) ;
" AND c.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) ) ;
if ( opts . excludeidx )
appendPQExpBufferStr ( & sql ,
" \n LEFT OUTER JOIN exclude_pat ep "
@ -2078,7 +2094,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
" \n WHERE true " ) ;
appendPQExpBuffer ( & sql ,
" AND c.relam = %u "
" AND c.relkind = 'i' ) " ,
" AND c.relkind = " CppAsString2 ( RELKIND_INDEX ) " ) " ,
BTREE_AM_OID ) ;
}