Coverage Profiler Results - Database Structure

Applies to AQTime 8.81, last modified on March 03, 2021

When you export Coverage profiler results to a database, AQTime creates a number of tables in it. The contents of most of these tables corresponds to the contents of AQTime panels in which the profiling results are displayed. This topic describes the structure of the database table that contains the exported Coverage profiler results.

The database includes the following tables:

The relations of the above-mentioned tables are similar to the relations of data in AQTime’s panels holding the profiling results (the Explorer, Report and Details panels).
Relationship between database tables

Click the image to enlarge it.

The INSTANCES table is the root table of the database. This table contains the exported result sets that are identified by the INST_ID value, which is unique within the table. All other database tables also have the INST_ID value that indicates to which result set a certain table item belongs.

The profiling results are stored in a number of tables depending on the category that is selected in the Explorer panel. The COVERAGE_PROFILER_ROUTINES table contains information on routines, COVERAGE_PROFILER_MODULES contains information on modules, COVERAGE_PROFILER_SOURCE_FILES and COVERAGE_PROFILER_SOURCE_FILES_DATA - on source files. These tables have the PARENT_ID field that indicates the thread where a specific routine was called. This field relates to the COVERAGE_PROFILER_THREADS table that holds a list of application threads traced by the Coverage profiler.

The COVERAGE_PROFILER_LINES table contains profiling information on the routine’s individual lines. This information corresponds to the information displayed in the Lines table of AQTime’s Details panel when the Report panel displays profiling information on routines. To indicate the routine to which a specific COVERAGE_PROFILER_LINES table item relates, the PARENT_ID field of this table stores the routine’s identifier.

The database tables that have the META suffix in their names contain meta information about the profiled elements. This data is retrieved from the application’s debug information and from the setup information of the AQTime project.

Note: The ID and REC_ID columns of the COVERAGE_PROFILER_xxxx tables are not key columns. They may contain repetitive values. In queries you should use these values along with the INST_ID value (the result set identifier).

Below is detailed information about the tables.

The COVERAGE_PROFILER_LINES Table

This table contains coverage profiling information on routines’ individual lines. The fields of this table correspond to the columns of the Lines table of the Details panel when the Routines category is selected in the Explorer panel.

Table Field Name Description
COL_BLOCK_COUNT Integer. Specifies the number of blocks into which the source code is divided. This field corresponds to the Block Count column of the Lines table.
COL_HIT_BLOCK_COUNT This field is not used.
COL_HIT_COUNT Decimal. Specifies the number of the line’s blocks that were called during profiling. This field corresponds to the Hit Count column of the Lines table.
ID Integer. The line’s identifier in the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_LINES table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the routine to which the line belongs. This is the same value as the routine’s ID value in the COVERAGE_PROFILER_ROUTINES table.
REC_ID Integer. The line’s identifier in the routine’s list of lines.

The COVERAGE_PROFILER_META_LINES Table

This table contains information about source code lines that belong to specific routines.

Table Field Name Description
COL_SOURCE_LINE Integer. The line number in a source file.
ID Integer. The line’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_META_LINES table item belongs. This is the same value as the INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the routine to which the line belongs. This is the same value as the routine’s ID value in the COVERAGE_PROFILER_META_ROUTINES table.
REC_ID Integer. The line’s identifier within the routine’s list of lines.

The COVERAGE_PROFILER_META_MODULES Table

This table contains information about the application’s modules that were profiled. The data stored in this table is used to display module names in the Report panel.

Table Field Name Description
COL_MODULE_NAME String. The fully-qualified name of the module. This field corresponds to the Module Name column of the Report panel.
ID Integer. The module’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_META_MODULES table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID This field is not used and always contains -1.
REC_ID Integer. A helper field.

The COVERAGE_PROFILER_META_ROUTINES Table

This table contain information about the profiled application’s routines. It is retrieved from the application’s debug information. The fields of this table correspond to the columns of the Report panel displaying profiling results for routines.

Table Field Name Description
COL_ACTIONACTIVE Integer. Specifies if the routine is an active action. This field contains -1 if the routine is an action and this action is enabled. Otherwise, it contains 0.
COL_ACTIONDISABLEROUTINE Reserved.
COL_ACTIONPLACEMENT Integer. Specifies the action’s execution type. This field can contain one of the following values:
  • 0 - The action is executed at the beginning of the routine.
  • 1 - The action is executed at the end of the routine.
COL_ACTIONTYPE Integer. Specifies the action type. This field can contain one of the following values:
  • 0 - Enable profiling
  • 1 - Disable profiling
  • 2 - Get results
  • 3 - Clear results
COL_ADDRESS Decimal. Specifies the routine’s address in memory. This field is used for unmanaged (native-code) routines only. For managed routines, it contains 0. This field corresponds to the Address column of the Report panel.
COL_ANALYSIS_RESULT String. Specifies whether the routine was instrumented or not. This field corresponds to the Analysis Result column of the Report panel. If the routine was instrumented, this field in empty. Otherwise, it contains the reason why the routine was not instrumented:
  • Less than 5 bytes (for 32-bit applications)
  • Less than 6 bytes (for 64-bit applications)
  • No line info
  • Unsafe code
  • No ret instruction
  • Duplicated code

For more information on these values, see the description of the Analysis Result column of the Report panel.

COL_CLASS_NAME String. The name of the class where the method is defined. This field corresponds to the Class Name column of the Report panel.
COL_CODE_TYPE String.The routine’s code type. This field corresponds to the Code Type column of the Report panel and can contain one of the following values:
  • MSIL
  • x64
  • x86
  • Pseudo
  • PInvoke
  • NGen
  • Script
  • Byte-code

For more information on these values, see the description of the Code Type column of the Report panel.

COL_MODULE_NAME String. The fully-qualified name of the module that contains the profiled routine. This field corresponds to the Module Name column of the Report panel.
COL_NAMESPACE String. The namespace of the method’s class (this field is used for managed routines only). This field corresponds to the Namespace column of the Report panel.
COL_PROFILELINES Integer. Specifies whether the routine was profiled on the line level or on the routine level. This field can contain one the following values:
  • 0 - if the routine was profiled on the routine level.
  • 1 - if the routine was profiled on the line level.
This value is not displayed in the Report panel.
COL_ROUTINE_NAME String. The name of the routine. This field corresponds to the Routine Name column of the Report panel.
COL_SOURCE_FILE String. The fully-qualified name of the source file that contains the routine implementation. This field corresponds to the Source File column of the Report panel.
COL_SOURCE_LINE Integer. The number of a source file’s line from which the routine implementation begins. This field corresponds to the Source Line column of the Report panel.
COL_SYMBOL_MONIKER String. The routine’s moniker. This value is not displayed in the Report panel.
COL_TOKEN Integer. The routine’s token. This field is used for managed routines only. For unmanaged routines, it contains 0. This field corresponds to the Token column of the Report panel.
COL_TRIGGERACTIVE Integer. Specifies whether the routine is an active trigger. This field contains -1 if the routine is an enabled trigger; otherwise, it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERCYCLING Integer. Specifies whether the routine is a cycling trigger. This field contains -1 is the trigger’s Cycling option is checked; otherwise, it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERDISABLEROUTINE This field is not used.
COL_TRIGGERENABLING Integer. Specifies whether the routine is an on-trigger or an off-trigger. If the routine is an on-trigger, this field contains -1. If the routine is an off-trigger or not a trigger, it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERGLOBAL Integer. Specifies whether the trigger’s call count is taken over all threads. If the trigger’s For All Threads option is checked, this field contains -1. Otherwise, it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERGLOBALHITCOUNT This field is not used.
COL_TRIGGERPASSCOUNT Integer. The trigger’s pass count. This value is not displayed in the Report panel.
COL_TRIGGERWORKCOUNT Integer. The trigger’s work count. This value is not displayed in the Report panel.
COL_UNIT_NAME String. The name of the unit that contains the routine. This field is used for unmanaged routines only. For managed routines, the field is empty. This field corresponds to the Unit Name column of the Report panel.
ID Integer. The routine’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_META_ROUTINES table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Not used. Always contains -1.
REC_ID Reserved.

The COVERAGE_PROFILER_META_SOURCE_FILES Table

This table contains information about the profiled application’s source files.

Table Field Name Description
COL_FILE_NAME String. The fully-qualified name of the source file. Corresponds to the File Name column of the Report panel when the Source Files category is selected in the Explorer panel.
COL_SYMBOL_MONIKER String. The routine’s moniker. This value is not displayed in the Report panel.
ID Integer. The source file’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_META_SOURCE_FILES table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Not used. Always contains -1.
REC_ID Reserved.

The COVERAGE_PROFILER_MODULES Table

This table contains coverage profiling results for each module of your application. The data stored in this table is used to display Coverage profiler results for the application’s modules in the Report panel.

Table Field Name Description
COL____COVERED Floating point. This field corresponds to the % Counter column of the Report panel displaying the Coverage profiler results when the Modules category is selected in the Explorer panel. It stores the percentage of the covered lines against the total number of lines in the routines that belong to the module.
COL_BLOCK_COUNT Integer. A helper field.
COL_BLOCKS String. A helper field.
COL_CALCULATED This field is not used and always contains -1.
COL_HIT_COUNT Decimal. A helper field.
COL_MODULE_NAME String. The fully-qualified name of the module that contains the profiled routine. This field corresponds to the Module Name column of the Report panel.
COL_SKIP_COUNT This field is not used and always contains 0.
ID Integer. The module’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_MODULES_DATA table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the routine to which the line belongs. This is the same value as the routine’s ID value in the COVERAGE_PROFILER_THREADS table.
REC_ID Integer. The routine’s identifier within the thread’s routines list.

The COVERAGE_PROFILER_ROUTINES Table

This table contains coverage profiling results for each routine of your application. The fields of this table correspond to the Report panel columns displaying the Coverage profiler results when the Routines category is selected in the Explorer panel.

Table Field Name Description
COL_ANALYSIS_RESULT String. Specifies whether the routine was instrumented or not. This field corresponds to the Analysis Result column of the Report panel. If the routine was instrumented, the field in empty. Otherwise it contains the reason why the routine was not instrumented:
  • Less than 5 bytes
  • No line info
  • Unsafe code
  • No ret instruction
  • Duplicated code
For more information on these values, see the Analysis Result column description.
COL_ADDRESS Decimal. Specifies the routine’s address in memory. This field is used for unmanaged (native-code) routines only. For managed routines, it contains 0. This field corresponds to the Address column of the Report panel.
COL_CODE_TYPE String.The routine’s code type. This field corresponds to the Code Type column of the Report panel and can contain one of the following values:
  • MSIL
  • x64
  • x86
  • Pseudo
  • PInvoke
  • NGen
  • Script

For more information on these values, see the description of the Code Type column of the Report panel.

COL_CLASS_NAME String. The name of the class where the method is defined. This field corresponds to the Class Name column of the Report panel.
COL_HIT_COUNT Decimal.This field corresponds to the Hit Count column of the Report panel.
COL_MODULE_NAME String. The fully-qualified name of the module. This field corresponds to the Module Name column of the Report panel.
COL_NAMESPACE String. The namespace of the method’s class (this field is used for managed routines only). This field corresponds to the Namespace column of the Report panel.
COL_SKIP_COUNT Decimal. This field corresponds to the Skip Count column of the Report panel.
COL_SOURCE_FILE String. The fully-qualified name of the source file that contains the routine implementation. This field corresponds to the Source File column of the Report panel.
COL_SOURCE_LINE Integer. The number of a source file’s line from which the routine implementation begins. This field corresponds to the Source Line column of the Report panel.
COL_TOKEN Integer. The routine’s token. This field is used for managed routines only. For unmanaged routines, it contains 0. This field corresponds to the Token column of the Report panel.
COL_UNIT_NAME String. The name of the unit that contains the routine. This field is used for unmanaged routines only. For managed routines, the field is empty. This field corresponds to the Unit Name column of the Report panel.
ID Integer. The routine’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_ROUTINES table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the module to which the routine belongs. This is the same value as the routine’s ID value in the COVERAGE_PROFILER_THREADS table.
REC_ID Integer. The routine’s identifier within the thread’s routines list.

The COVERAGE_PROFILER_SOURCE_FILES Table

This table contains coverage profiling results for each routine of your application. The fields of this table correspond to the Report panel columns displaying the profiling results when the Source Files category is selected in the Explorer panel.

Table Field Name Description
COL____COVERED Floating point. The percentage of the covered lines against the total number of lines in the routines that belong to the source file. This field corresponds to the % Covered column of the Report panel.
COL_BLOCK_COUNT String. A helper field.
COL_BLOCKS String. A helper field.
COL_CALCULATED This field is not used and always contains -1.
COL_FILE_NAME String. The fully-qualified name of the source file. Corresponds to the File Name column of the Report panel when the Source Files category is selected in the Explorer panel.
COL_HIT_COUNT Decimal. A helper field.
COL_SKIP_COUNT This field is not used and always contains 0.
ID Integer. The source file’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_SOURCE_FILES table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the thread where the routines defined in the source file were called. This is the same value as the thread’s ID value in the COVERAGE_PROFILER_THREADS table.
REC_ID Integer. The source file’s identifier within the thread’s source files list.

The COVERAGE_PROFILER_SOURCE_FILES_DATA Table

This table contains coverage profiling results for each source file of your application. The fields of this table correspond to the Report panel columns displaying the profiling results when the Source Files category is selected in the Explorer panel.

Table Field Name Description
COL_FILE_NAME String. The fully-qualified name of the source file. Corresponds to the File Name column of the Report panel when the Source Files category is selected in the Explorer panel.
ID Integer. The source file’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_SOURCE_FILES_DATA table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Not used. Always contains -1.
REC_ID Integer. A helper field.

The COVERAGE_PROFILER_THREADS Table

This table contains information about the application threads that were profiled with the current profiler. The information in this table corresponds to the list of profiled threads displayed in the Explorer panel.

Table Field Name Description
COL_WIN32THREADID Integer. The thread’s identifier.
ID Integer. The thread’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given COVERAGE_PROFILER_THREADS table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Not used. Always contains -1.
REC_ID Reserved.

The INSTANCES Table

This table contains a list of exported result sets. Each result set is identified by the INST_ID value.

Field Name Description
CAPTION String. The name of the result set.
COUNTER_DESCRIPTION String. Reserved.
COUNTER_FREQUENCY Decimal. Reserved.
COUNTER_NAME String. Reserved.
INST_ID Reserved.

The RELATIONS table

This table contains the information about parent-child relationships between the database tables.

Field Name Description
COL_CHILD_TABLE String. The name of a child table.
COL_PARENT_TABLE String. The name of a parent table. If this field contains NULL, it means that the table specified by the COL_CHILD_TABLE is a top-level table.
ID Integer. The identifier of a specific relation within the RELATIONS table.
INST_ID Integer. The identifier of the INSTANCES table item corresponding to the result set whose data the tables hold.

See Also

Coverage Profiler - Overview
Exporting Profiling Results to Database

Highlight search results