From ffb93e5fc0a99bd074b46a2c36dbfb8f5e438527 Mon Sep 17 00:00:00 2001 From: Roland Walker Date: Thu, 6 Aug 2026 07:30:13 -0400 Subject: [PATCH] clean favorite queries on fetch and save removing leading/trailing whitespace, and trailing terminators --- changelog.md | 5 +++++ mycli/packages/special/favoritequeries.py | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 99d05c08..daf79f20 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,11 @@ Upcoming (TBD) ============== +Features +--------- +* Always clean favorite queries on save and fetch. + + Documentation --------- * Document double-return requirement after `/fs` in multi-line mode. diff --git a/mycli/packages/special/favoritequeries.py b/mycli/packages/special/favoritequeries.py index d0bfc4e8..7e61be45 100644 --- a/mycli/packages/special/favoritequeries.py +++ b/mycli/packages/special/favoritequeries.py @@ -126,6 +126,17 @@ def __init__(self, config: Any, config_file: str | None = None) -> None: def from_config(cls, config: Any, config_file: str | None = None) -> FavoriteQueries: return FavoriteQueries(config, config_file) + def _clean_query(self, query: str | None) -> str | None: + if not query: + return query + query = query.lstrip(' \t\n\r') + query = query.rstrip(' \t\n\r') + query = query.removesuffix(';') + query = query.removesuffix(r'\G') + query = query.removesuffix(r'\x') + query = query.rstrip(' \t\n\r') + return query + def _config_for_write(self) -> Any: if self.config_file is None: return self.config @@ -141,14 +152,14 @@ def _set_query(self, config: Any, name: str, query: str) -> None: config[self.section_name][name] = query def list(self) -> list[str | None]: - return list(self.config.get(self.section_name, {})) + return [self._clean_query(x) for x in self.config.get(self.section_name, {})] def get(self, name) -> str | None: - return self.config.get(self.section_name, {}).get(name, None) + return self._clean_query(self.config.get(self.section_name, {}).get(name, None)) def save(self, name: str, query: str) -> None: config = self._config_for_write() - query = query.rstrip(' \t\n\r;') + query = self._clean_query(query) or '' config.encoding = "utf-8" section_existed = self.section_name in config previous_query = config.get(self.section_name, {}).get(name, MISSING)