diff --git a/pyproject.toml b/pyproject.toml index dfb70c9f..8fc69957 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "spectacles" -version = "2.4.19" +version = "2.4.20" description = "A command-line, continuous integration tool for Looker and LookML." authors = ["Spectacles "] license = "MIT" diff --git a/spectacles/models.py b/spectacles/models.py index 7ec9dfbf..359cbbf2 100644 --- a/spectacles/models.py +++ b/spectacles/models.py @@ -124,8 +124,6 @@ def errors(self) -> Tuple[QueryError, ...]: raise TypeError("No errors contained in this query result") return self.data.errors elif isinstance(self.data, self.JsonBiError): - if not self.data.rows: - raise TypeError("No errors contained in this query result") return self.data.errors else: raise TypeError("Unexpected type for ErrorQueryResult.data") diff --git a/spectacles/validators/sql.py b/spectacles/validators/sql.py index 02e35943..5d271faa 100644 --- a/spectacles/validators/sql.py +++ b/spectacles/validators/sql.py @@ -364,13 +364,19 @@ async def _get_query_results( queries_to_run.task_done() else: query_slot.release() - query.errored = True + + errors = query_result.get_valid_errors() + query.errored = bool(errors) + + if not errors: + for dimension in query.dimensions: + dimension.queried = True # Fail fast, assign the error(s) to its explore - if fail_fast: + elif fail_fast: explore = query.explore explore.queried = True - for error in query_result.get_valid_errors(): + for error in errors: line_number = ( error.sql_error_loc.line if error.sql_error_loc @@ -397,7 +403,7 @@ async def _get_query_results( elif len(query.dimensions) == 1: dimension = query.dimensions[0] dimension.queried = True - for error in query_result.get_valid_errors(): + for error in errors: line_number = ( error.sql_error_loc.line if error.sql_error_loc