Light Coverage Profiler Results - Database Structure

Applies to AQTime 8.81, last modified on January 18, 2022

When you export the Light Coverage profiler results to a database, AQTime creates a number of tables in it. The contents of most of these tables correspond 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 Light Coverage profiler results.

The database consists of the following tables:

The relationship between the mentioned tables is illustrated in the image below. This relationship is similar to the relationship of the data in AQTime’s Explorer, Report and Details panels that hold the Light Coverage profiler results.

Relationship between database tables

Click the image to enlarge it.

The root table of the database is the INSTANCES table. It contains the list of all exported result sets and is shared by AQTime’s profilers. Each result set is identified by the INST_ID field value, which is unique among the table. All other database tables also have the INST_ID field that indicates the result set to which data of a specific table item belongs.

The Light Coverage profiler results that are displayed in the Report panel depend on the category selected in the Explorer panel - Routines, Source Files or Modules. In the database, profiling information for routines, source files and modules is stored in the separate LIGHT_COVERAGE_PROFILER_ROUTINES_DATA, LIGHT_COVERAGE_PROFILER_SOURCE_FILES_DATA and LIGHT_COVERAGE_PROFILER_MODULES_DATA tables, respectively.

The LIGHT_COVERAGE_PROFILER_ROUTINES_DATA has a child LIGHT_COVERAGE_PROFILER_LINES table, which contain coverage profiling information for the routine’s individual lines. This is the same information that is displayed in the Lines table of AQTime’s Details panel when the Report panel displays performance profiling data for routines. To identify the routine to which a specific LIGHT_COVERAGE_PROFILER_LINES table item is related, each item in this table has the PARENT_ID field that holds the identifier of the related routine.

Four more database tables have the META suffix in their names and contain meta information about the profiled elements - source files, modules, routines and lines. 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 LIGHT_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 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. This is the same name that is displayed in the Explorer panel.
COUNTER_DESCRIPTION Not used for the Light Coverage profiler.
COUNTER_FREQUENCY Not used for the Light Coverage profiler.
COUNTER_NAME Not used for the Light Coverage profiler.
INST_ID Integer. The result set’s identifier.

The LIGHT_COVERAGE_PROFILER_LINES table

This table contains coverage profiling information on the routines’s individual lines. The fields of this table correspond to the columns of the Lines table of the Details panel.

Field Name Description
COL_MARK Decimal. Specifies the number of times the line was executed during profiling. 0 means the line was not executed.
COL_SOURCE_LINE Integer. The line number in the source file. This field corresponds to the Source Line column of the Lines table.
ID Integer. The line’s identifier within the result set.
INST_ID Integer. The identifier of the result set. 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 LIGHT_COVERAGE_PROFILER_ROUTINES_DATA table.
REC_ID Integer. The line’s identifier within the routine’s lines list.

The LIGHT_COVERAGE_PROFILER_META_LINES table

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

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. 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 LIGHT_COVERAGE_PROFILER_META_ROUTINES table.
REC_ID Integer. The line’s identifier within the routine’s lines list.

The LIGHT_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 the module names in the Report panel (see Light Coverage Profiler - Report Panel (Modules Data Category)).

Field Name Description
COL_MODULE_NAME String. The module name. 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. 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 LIGHT_COVERAGE_PROFILER_META_ROUTINES table

This table contains information about routines of the profiled application. It is retrieved from the application’s debug information. The fields of this table, along with the LIGHT_COVERAGE_ROUTINES_DATA table fields, correspond to the columns of the Report panel that displays profiling results for routines.

Field Name Description
COL_ADDRESS Decimal. 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, the 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 Analysis Result column description.
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. It can have one of the following values:
  • MSIL
  • x64
  • x86
  • Pseudo
  • PInvoke
  • NGen
  • Script
  • Byte-code
For more information on these values, see the Code Type column description.
COL_MODULE_NAME String. The 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 the routine level (see About Profiling Levels). This field contains 0 if the routine was profiled on the routine level. Otherwise, if the routine was profiled on the line level, this field contains -1. This value is not displayed in the Report panel.
COL_ROUTINE_NAME String. The routine name. This field corresponds to the Routine Name column of the Report panel.
COL_SOURCE_FILE String. The 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 source file’s line number where 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 CLR token. This field is used for managed routines only. For unmanaged (native-code) routines, it contains 0. This value is not displayed in the Report panel.
COL_UNIT_NAME String. The Name of the linkage unit that holds the routine. This field is used for unmanaged (native-code) routines only. For managed routines, this field is empty. This value is not displayed in the Report panel.
ID Integer. The routines’s identifier within the result set.
INST_ID Integer. The identifier of the result set. 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 LIGHT_COVERAGE_PROFILER_META_SOURCE_FILES table

This table contains information about source files of the profiled application. The COL_FILE_NAME field of this table stores the file names, which are displayed in the Report panel when the Source Files category is selected in the Explorer panel.

Field Name Description
COL_FILE_NAME String. The source file name. This field corresponds to the File Name column of the Report panel.
COL_SYMBOL_MONIKER String. The source file’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. 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 LIGHT_COVERAGE_PROFILER_MODULES_DATA table

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

Field Name Description
COL____COVERED Floating-point. The percentage of covered lines against the total number of lines in the routines that belong to the module. This field corresponds to the % Covered column of the Report panel.
COL_CALCULATED Not used. Always contains -1.
COL_MARK Decimal. Specifies whether the module’s code was executed during profiling (1) or not (0).
COL_MODULE_NAME String. The name of the module that contains the profiled routine. This field corresponds to the Module Name column of the Report panel.
COL_SKIP_COUNT Not used. Always contains 0.
ID Integer. The module’s identifier within the result set.
INST_ID Integer. The identifier of the result set. 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 LIGHT_COVERAGE_PROFILER_ROUTINES_DATA table

This table contains coverage profiling results for each routine of your application. The fields of this table, along with the fields of the LIGHT_COVERAGE_META_ROUTINES table, correspond to the Report columns when it displays profiling results for routines.

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_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. It can have one of the following values:
  • MSIL
  • x64
  • x86
  • Pseudo
  • PInvoke
  • NGen
  • Script
  • Byte-code
For more information on these values, see the Code Type column description.
COL_MARK Decimal. Specifies the number of times the routine was executed during profiling. 0 means the routine was not executed.
COL_MODULE_NAME String. The name of the module that contains the profiled routine. This field corresponds to the Module Name column of the Report panel.
COL_SKIP_COUNT Not used. Always contains 0.
COL_SOURCE_FILE String. The 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 Decimal. The source file’s line number where the routine implementation begins. This field corresponds to the Source Line column of the Report panel.
ID Integer. The module’s identifier within the result set.
INST_ID Integer. The identifier of the result set. 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 LIGHT_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 Light Coverage profiler results when the Source Files category is selected in the Explorer panel.

Field Name Description
COL____COVERED Floating-point. The percentage of 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_CALCULATED Not used. Always contains -1.
COL_FILE_NAME String. The source file name. This field corresponds to the File Name column of the Report panel.
COL_HIT_COUNT Decimal. A helper field.
COL_SKIP_COUNT Not used. Always contains 0.
ID Integer. The source file’s identifier within the result set.
INST_ID Integer. The identifier of the result set. 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 RELATIONS table

This table contains the information about parent-child relationships between the database tables holding the Light Coverage profiler results.

Field Name Description
COL_CHILD_TABLE String. The name of a child table.
COL_PARENT_TABLE String. The name of a parent table. The NULL value 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 result set. This is the same value as the result set’s INST_ID value in the INSTANCES table.

See Also

Exporting Profiling Results to Database
Light Coverage Profiler - Overview
Light Coverage Profiler - Report Panel
Light Coverage Profiler - Details Panel

Highlight search results