From 1e3716a3030b564f7d21b5ebab08d8f2289e2e5e Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Sun, 29 Sep 2024 19:39:08 -0500 Subject: [PATCH] Suggest downloading when server is out of ram --- src/pgwui_sql/exceptions.py | 15 +++++++++++++++ src/pgwui_sql/views/sql.py | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pgwui_sql/exceptions.py b/src/pgwui_sql/exceptions.py index 3a8d532..310a76e 100644 --- a/src/pgwui_sql/exceptions.py +++ b/src/pgwui_sql/exceptions.py @@ -82,3 +82,18 @@ class CSVError(SQLError): def __init__(self, descr='', detail=''): super().__init__('Error while formatting the download', '', descr=descr, detail=detail) + + +class MemoryError(SQLError): + ''' + Error raised when we run out of memory generating on-screen results + + descr More description of the error + detail Extra HTML describing the error + ''' + def __init__(self, + descr=("Can't collect results for on-screen display" + '-- try downloading instead'), + detail=''): + super().__init__('Webserver out of memory', + '', descr=descr, detail=detail) diff --git a/src/pgwui_sql/views/sql.py b/src/pgwui_sql/views/sql.py index c39fc34..fc02e53 100644 --- a/src/pgwui_sql/views/sql.py +++ b/src/pgwui_sql/views/sql.py @@ -339,7 +339,11 @@ class SQLResultsHandler(pgwui_core.core.SessionDBHandler): except csv.Error as ex: raise sql_ex.CSVError(descr=f'The csv module reports: {ex}') else: - self.make_sql_results(cur) + try: + self.make_sql_results(cur) + except MemoryError: + self.sql_results = [] + raise sql_ex.MemoryError() def factory(self, ue): '''Make a db loader function from an UploadEngine. -- 2.34.1