5805 修改gms_stats高级包cha收集一千张表报错bug

This commit is contained in:
humengyao
2024-09-05 19:51:34 -07:00
parent e427efb2ed
commit e15b1dd08b
2 changed files with 8 additions and 3 deletions

View File

@ -17,7 +17,7 @@ end;
/
NOTICE: PL/SQL procedure successfully completed.
CONTEXT: SQL statement "CALL gms_stats.gather_schema_stats('gms_stats_test')"
PL/pgSQL function inline_code_block line 3 at PERFORM
PL/pgSQL function inline_code_block line 2 at PERFORM
select schemaname, tablename, attname, avg_width, most_common_vals, most_common_freqs from pg_stats where schemaname='gms_stats_test' order by tablename, attname;
schemaname | tablename | attname | avg_width | most_common_vals | most_common_freqs
----------------+-----------------+---------+-----------+------------------+-------------------

View File

@ -48,8 +48,9 @@ static List* GetRelationsInSchema(char *namespc)
ScanKeyData skey[1];
SysScanDesc sysscan;
HeapTuple tuple;
char* relname;
char* relname = NULL;
List* tbl_relnames = NIL;
int len;
Oid nspid;
nspid = get_namespace_oid(namespc, true);
@ -62,7 +63,10 @@ static List* GetRelationsInSchema(char *namespc)
while (HeapTupleIsValid(tuple = systable_getnext(sysscan))) {
Form_pg_class reltup = (Form_pg_class)GETSTRUCT(tuple);
if (reltup->relkind == RELKIND_RELATION || reltup->relkind == RELKIND_MATVIEW) {
relname = reltup->relname.data;
len = strlen(reltup->relname.data);
relname = (char *) palloc(len + 1);
errno_t rc = strcpy_s(relname, len + 1, reltup->relname.data);
securec_check(rc, "\0", "\0");
tbl_relnames = lappend(tbl_relnames, relname);
}
}
@ -90,6 +94,7 @@ static void analyze_tables(char *namespc, List *relnames_list)
stmt = (VacuumStmt*)parsetree;
}
vacuum(stmt, InvalidOid, true, NULL, true);
pfree_ext(relnames);
list_free(parsetree_list);
resetStringInfo(execute_sql);
}