From cd101e23d327c682532402909df11d2b19291c09 Mon Sep 17 00:00:00 2001 From: Roland Walker Date: Tue, 10 Feb 2026 05:42:59 -0500 Subject: [PATCH] fallback on procedure completions errors When the procedures query cannot be executed for whatever reason, yield and empty generator. --- changelog.md | 1 + mycli/sqlexecute.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/changelog.md b/changelog.md index ee28ae81..543d3538 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,7 @@ Features Bug Fixes -------- * Reduce duplicated `--checkup` output. +* Handle errors generating completions on stored procedures. Internal diff --git a/mycli/sqlexecute.py b/mycli/sqlexecute.py index 21fdeda9..4302aa1d 100644 --- a/mycli/sqlexecute.py +++ b/mycli/sqlexecute.py @@ -455,15 +455,20 @@ def functions(self) -> Generator[tuple[str, str], None, None]: for row in cur: yield row - def procedures(self) -> Generator[tuple[str, str], None, None]: + def procedures(self) -> Generator[tuple, None, None]: """Yields tuples of (procedure_name, )""" assert isinstance(self.conn, Connection) with self.conn.cursor() as cur: _logger.debug("Procedures Query. sql: %r", self.procedures_query) - cur.execute(self.procedures_query % self.dbname) - for row in cur: - yield row + try: + cur.execute(self.procedures_query % self.dbname) + except pymysql.DatabaseError as e: + _logger.error('No procedure completions due to %r', e) + yield () + else: + for row in cur: + yield row def show_candidates(self) -> Generator[tuple, None, None]: assert isinstance(self.conn, Connection)