5805 修改gms_stats高级包cha收集一千张表报错bug
This commit is contained in:
@ -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
|
||||
----------------+-----------------+---------+-----------+------------------+-------------------
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user