From 628e2587b8c50cde8f963ec1bc4696cf99250f2a Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Thu, 22 Oct 2026 20:36:29 +0200 Subject: [PATCH] fix(database_query): keep psql's command tags out of the returned rows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With `-tA` psql drops headers and the row-count footer but still prints the command tag of every write statement. A guarded `UPDATE … RETURNING` that matched nothing therefore came back as `rows: [['UPDATE 0']]`, and web-app-peertube's oidc/enable.yml, which judges its change by the row count, reported `changed` and restarted PeerTube on every deploy after the first. The PostgreSQL rows flags are now `-qtA`. Probed against a running postgres container: -tA -> CREATE TABLE / INSERT 0 1 / UPDATE 0 / 3 / UPDATE 1 -qtA -> 3 SELECT output and the MariaDB path (`--batch --skip-column-names`, no status line) are unchanged. Fixes #1164 Co-Authored-By: Claude Opus 5.5 (1M context) --- library/database_query.py | 2 +- tests/unit/python/library/test_database_query.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/library/database_query.py b/library/database_query.py index 5cf6971b15..30ec772d6b 100755 --- a/library/database_query.py +++ b/library/database_query.py @@ -109,7 +109,7 @@ _ENGINES: dict[str, dict[str, object]] = { "user_flag": "-U", "db_flag": "-d", "shared_flags": ["-v", "ON_ERROR_STOP=1"], - "rows_flags": ["-tA"], + "rows_flags": ["-qtA"], "row_separator": "|", "password_env": "PGPASSWORD", "string_quote": "'", diff --git a/tests/unit/python/library/test_database_query.py b/tests/unit/python/library/test_database_query.py index 83ae8969d8..2f9d53e125 100644 --- a/tests/unit/python/library/test_database_query.py +++ b/tests/unit/python/library/test_database_query.py @@ -93,13 +93,13 @@ class BuildCmdPostgresTests(unittest.TestCase): self.assertIn("ON_ERROR_STOP=1", cmd) self.assertNotIn("s3cret", cmd) - def test_postgres_expect_rows_adds_tuples_only_flag(self): + def test_postgres_expect_rows_adds_quiet_tuples_only_flag(self): cmd, _ = _DB_MOD._build_cmd(_BASE_CONFIG, expect_rows=True) - self.assertIn("-tA", cmd) + self.assertIn("-qtA", cmd) def test_postgres_no_rows_omits_tuples_only_flag(self): cmd, _ = _DB_MOD._build_cmd(_BASE_CONFIG, expect_rows=False) - self.assertNotIn("-tA", cmd) + self.assertNotIn("-qtA", cmd) class BuildCmdMariadbTests(unittest.TestCase):