diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b41d37df..cd82dec2 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -24,6 +24,7 @@ - Replaced entity with getter (#652) - Resolved TODO in Dockerfile (#680) - Resolved TODO at src/reporter/tests/test_timescale_types.py (#667) +- Handled sql errors separately (#698) ### Bug fixes diff --git a/src/translators/sql_translator.py b/src/translators/sql_translator.py index fe66fc03..2df402e2 100644 --- a/src/translators/sql_translator.py +++ b/src/translators/sql_translator.py @@ -16,6 +16,7 @@ from cache.factory import get_cache, is_cache_available from translators.insert_splitter import to_insert_batches from utils.connection_manager import Borg +from crate.client import exceptions # NGSI TYPES # Based on Orion output because official docs don't say much about these :( NGSI_DATETIME = 'DateTime' @@ -1122,10 +1123,14 @@ def query(self, try: self.cursor.execute(op) + except exceptions.ProgrammingError as e: + err_msg = self.sql_error_handler(e) + self.logger.error(str(e), exc_info=True) + entities = [] + if err_msg: + message = err_msg + except Exception as e: - # TODO due to this except in case of sql errors, - # all goes fine, and users gets 404 as result - # Reason 1: fiware_service_path column in legacy dbs. err_msg = self.sql_error_handler(e) self.logger.error(str(e), exc_info=True) entities = []