diff --git a/bin/pg_repack.c b/bin/pg_repack.c index bed8427d..674dce0b 100644 --- a/bin/pg_repack.c +++ b/bin/pg_repack.c @@ -422,9 +422,12 @@ is_superuser(void) return false; } + /* + * Check if the tables are System tables releated to pg_catalog or information_schema + * throw a meaning full error to use VACUUM FULL for those tables. + */ bool check_systemtables() - { PGresult *query_result = NULL; int num; @@ -454,12 +457,11 @@ check_systemtables() { if (PQntuples(query_result) >= 1) { + CLEARPGRES(query_result); return true; } } - CLEARPGRES(query_result); - return false; } @@ -529,12 +531,6 @@ preliminary_checks(char *errbuf, size_t errsize){ goto cleanup; } - if (check_systemtables()) { - if (errbuf) - snprintf(errbuf, errsize, "For System Tables Use VACUUM FULL."); - goto cleanup; - } - /* Query the extension version. Exit if no match */ res = execute_elevel("select repack.version(), repack.version_sql()", 0, NULL, DEBUG2); @@ -622,6 +618,13 @@ is_requested_relation_exists(char *errbuf, size_t errsize){ int num_relations; SimpleStringListCell *cell; + /*Handling system tables to return meaningful error message*/ + if (check_systemtables()) { + if (errbuf) + snprintf(errbuf, errsize,"For System tables use VACUUM FULL."); + return false; + } + num_relations = simple_string_list_size(parent_table_list) + simple_string_list_size(table_list);