@@ -120,6 +120,10 @@ def build_config(check: ClickhouseCheck) -> Tuple[InstanceConfig, ValidationResu
120120 ** dict_defaults .instance_query_completions ().model_dump (),
121121 ** (instance .get ('query_completions' , {})),
122122 },
123+ "query_errors" : {
124+ ** dict_defaults .instance_query_errors ().model_dump (),
125+ ** (instance .get ('query_errors' , {})),
126+ },
123127 # Tags - ensure we have a list, not None
124128 "tags" : list (instance .get ('tags' , [])),
125129 # Other settings
@@ -188,6 +192,27 @@ def _apply_validated_defaults(args: dict, instance: dict, validation_result: Val
188192 f"query_completions.collection_interval must be greater than 0, defaulting to { default_value } seconds."
189193 )
190194
195+ if _safefloat (args .get ('query_completions' , {}).get ('samples_per_hour_per_query' )) <= 0 :
196+ default_value = dict_defaults .instance_query_completions ().samples_per_hour_per_query
197+ args ['query_completions' ]['samples_per_hour_per_query' ] = default_value
198+ validation_result .add_warning (
199+ f"query_completions.samples_per_hour_per_query must be greater than 0, defaulting to { default_value } ."
200+ )
201+
202+ if _safefloat (args .get ('query_errors' , {}).get ('collection_interval' )) <= 0 :
203+ default_value = dict_defaults .instance_query_errors ().collection_interval
204+ args ['query_errors' ]['collection_interval' ] = default_value
205+ validation_result .add_warning (
206+ f"query_errors.collection_interval must be greater than 0, defaulting to { default_value } seconds."
207+ )
208+
209+ if _safefloat (args .get ('query_errors' , {}).get ('samples_per_hour_per_query' )) <= 0 :
210+ default_value = dict_defaults .instance_query_errors ().samples_per_hour_per_query
211+ args ['query_errors' ]['samples_per_hour_per_query' ] = default_value
212+ validation_result .add_warning (
213+ f"query_errors.samples_per_hour_per_query must be greater than 0, defaulting to { default_value } ."
214+ )
215+
191216
192217def _validate_config (config : InstanceConfig , instance : dict , validation_result : ValidationResult ):
193218 """Validate the configuration and add warnings/errors."""
@@ -203,6 +228,7 @@ def _validate_config(config: InstanceConfig, instance: dict, validation_result:
203228 'query_completions' ,
204229 config .query_completions .enabled if config .query_completions else False ,
205230 ),
231+ ('query_errors' , config .query_errors .enabled if config .query_errors else False ),
206232 ]
207233 for feature_name , _is_enabled in dbm_features :
208234 if instance .get (feature_name , {}).get ('enabled' ) and not config .dbm :
@@ -234,6 +260,11 @@ def _apply_features(config: InstanceConfig, validation_result: ValidationResult)
234260 config .query_completions .enabled and config .dbm ,
235261 None if config .dbm else "Requires `dbm: true`" ,
236262 )
263+ validation_result .add_feature (
264+ FeatureKey .QUERY_ERRORS ,
265+ config .query_errors .enabled and config .dbm ,
266+ None if config .dbm else "Requires `dbm: true`" ,
267+ )
237268 validation_result .add_feature (FeatureKey .SINGLE_ENDPOINT_MODE , config .single_endpoint_mode )
238269
239270
0 commit comments