/******************************************************************************/ /* File : pr_stats.c */ /* Schema : metaschema.sch */ /* Chgen Version : genMerge chgenv11-karner-spinney */ /******************************************************************************/ #include #include "metaschema.h" /******************************************************************************/ /* This routine will write-out some basic statistcis about the schema, and */ /* what is currently loaded. */ /******************************************************************************/ void pr_stats ( file_name, modestr ) char file_name[]; char modestr[]; { static char rcsid[] = "$Id: gen_pr_stats.c,v 1.2.4.1 1999/05/04 17:00:01 jkarner Exp $"; int i,total_rows,total_size,row_size; if (!hcg_initialized) { printf("Error: pr_stats() called when database is not yet initialized.\n"); exit(1); } if ((hcg_stats_fp=fopen(file_name,modestr)) == NULL) { printf("Error: pr_stats() cannot open %s using file mode %s\n", file_name,modestr); exit(1); } fprintf(hcg_stats_fp,"Schema Name : %s\n",SCHEMA_TEXT_FILE_NAME); fprintf(hcg_stats_fp,"Chgen Version : %s (%s)\n",CHGEN_VERSION,CHGEN_RELEASE_DATE); fprintf(hcg_stats_fp,"Chgen Qualifiers : %s\n\n",CHGEN_QUALIFIERS); fprintf(hcg_stats_fp,"Views : (Num Views = %d) (Memory Overhead = %d bytes)\n\n",hcg_view_list.num_views,sizeof(hcg_view_list)); fprintf(hcg_stats_fp," Name Mode Table Version\n"); fprintf(hcg_stats_fp," --------------------------- ---- ----- -------\n"); for (hcg_view_idx = 0; hcg_view_idx < hcg_view_list.num_views; hcg_view_idx++) { fprintf(hcg_stats_fp,"\n %-30s %-5c ", hcg_view_list.view_list[hcg_view_idx].view_name, hcg_view_list.view_list[hcg_view_idx].mode); for (hcg_tbl_idx = 0; hcg_tbl_idx < HCG_NUM_TABLES; hcg_tbl_idx++) if (hcg_view_list.view_list[hcg_view_idx].version_list[hcg_tbl_idx] != '\0') fprintf(hcg_stats_fp,"%-6s %-8d\n\t\t\t\t\t", hcg_table_seq_list[hcg_tbl_idx].ttabbrev, hcg_view_list.view_list[hcg_view_idx].version_list[hcg_tbl_idx]); } fprintf(hcg_stats_fp,"\n\n"); total_size = total_rows = 0; fprintf(hcg_stats_fp,"Tables : (Num Tables = %d) (Memory Overhead = %d bytes)\n\n",HCG_NUM_TABLES,sizeof(hcg_table_seq_list)+sizeof(hcg_ts_list)); fprintf(hcg_stats_fp," Table Size Version Rows MaxKey\n"); fprintf(hcg_stats_fp," ----- ------ ------- ---- ------\n"); for (hcg_tbl_idx = 0; hcg_tbl_idx < HCG_NUM_TABLES; hcg_tbl_idx++) { fprintf(hcg_stats_fp,"\n %-5s ",hcg_table_seq_list[hcg_tbl_idx].ttabbrev); switch (encoding(hcg_table_seq_list[hcg_tbl_idx].ttabbrev)) { case 0 : /* encoding of SV */ row_size = sizeof(struct SV); break; case 1 : /* encoding of TT */ row_size = sizeof(struct TT); break; case 2 : /* encoding of TA */ row_size = sizeof(struct TA); break; case 3 : /* encoding of VV */ row_size = sizeof(struct VV); break; case 4 : /* encoding of TS */ row_size = sizeof(struct TS); break; } fprintf(hcg_stats_fp," %-7d ",row_size); for (i = 1; i < 100; i++) if (hcg_ts_list[hcg_tbl_idx].ts_list[i].rcount > 0) { fprintf(hcg_stats_fp," %-8d %-5d %-5d\n\t\t ",i,hcg_ts_list[hcg_tbl_idx].ts_list[i].rcount,hcg_ts_list[hcg_tbl_idx].ts_list[i].maxrow); total_rows += hcg_ts_list[hcg_tbl_idx].ts_list[i].rcount; total_size += row_size*hcg_ts_list[hcg_tbl_idx].ts_list[i].rcount; } } fprintf(hcg_stats_fp,"\n\n"); fprintf(hcg_stats_fp,"Total Row Count : %d\n",total_rows); fprintf(hcg_stats_fp,"Total Row Storage : %d bytes\n",total_size); fclose(hcg_stats_fp); }