Source code for pqg.query_structure

from dataclasses import dataclass

from .arguments import Arguments


[docs] @dataclass class QueryStructure: """ Configuration parameters controlling query generation behavior. This class encapsulates the probability and limit settings that determine what kinds of queries are generated. It controls aspects like how likely different operations are to appear and how complex they can be. Attributes: groupby_aggregation_probability: Probability (0-1) of including a GROUP BY operation max_groupby_columns: Maximum number of columns that can be grouped on max_merges: Maximum number of table joins allowed in a query max_projection_columns: Maximum number of columns that can be selected max_selection_conditions: Maximum number of WHERE clause conditions projection_probability: Probability (0-1) of including a SELECT operation selection_probability: Probability (0-1) of including a WHERE operation """ groupby_aggregation_probability: float max_groupby_columns: int max_merges: int max_projection_columns: int max_selection_conditions: int projection_probability: float selection_probability: float
[docs] @staticmethod def from_args(arguments: Arguments) -> 'QueryStructure': """ Create a QueryStructure instance from command-line arguments. Args: arguments: Instance of Arguments containing parsed command-line parameters Returns: QueryStructure: Instance configured according to the provided arguments """ return QueryStructure( groupby_aggregation_probability=arguments.groupby_aggregation_probability, max_groupby_columns=arguments.max_groupby_columns, max_merges=arguments.max_merges, max_projection_columns=arguments.max_projection_columns, max_selection_conditions=arguments.max_selection_conditions, projection_probability=arguments.projection_probability, selection_probability=arguments.selection_probability, )