From aeacda9c46424ef50281bac8f73da14254556615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Tue, 7 Jan 2025 14:09:46 +0100 Subject: [PATCH] feat: support GRAPH and pipe syntax in dbapi Recognize GRAPH and pipe syntax queries as valid queries in dbapi. --- google/cloud/spanner_dbapi/parse_utils.py | 2 +- tests/unit/spanner_dbapi/test_parse_utils.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/google/cloud/spanner_dbapi/parse_utils.py b/google/cloud/spanner_dbapi/parse_utils.py index f039efe5b0..245840ca0d 100644 --- a/google/cloud/spanner_dbapi/parse_utils.py +++ b/google/cloud/spanner_dbapi/parse_utils.py @@ -155,7 +155,7 @@ STMT_INSERT = "INSERT" # Heuristic for identifying statements that don't need to be run as updates. -RE_NON_UPDATE = re.compile(r"^\W*(SELECT)", re.IGNORECASE) +RE_NON_UPDATE = re.compile(r"^\W*(SELECT|GRAPH|FROM)", re.IGNORECASE) RE_WITH = re.compile(r"^\s*(WITH)", re.IGNORECASE) diff --git a/tests/unit/spanner_dbapi/test_parse_utils.py b/tests/unit/spanner_dbapi/test_parse_utils.py index 4b1c7cdb06..f0721bdbe3 100644 --- a/tests/unit/spanner_dbapi/test_parse_utils.py +++ b/tests/unit/spanner_dbapi/test_parse_utils.py @@ -39,6 +39,11 @@ def test_classify_stmt(self): "WITH sq AS (SELECT SchoolID FROM Roster) SELECT * from sq", StatementType.QUERY, ), + ( + "GRAPH FinGraph MATCH (n) RETURN LABELS(n) AS label, n.id", + StatementType.QUERY, + ), + ("FROM Produce |> WHERE item != 'bananas'", StatementType.QUERY), ( "CREATE TABLE django_content_type (id STRING(64) NOT NULL, name STRING(100) " "NOT NULL, app_label STRING(100) NOT NULL, model STRING(100) NOT NULL) PRIMARY KEY(id)",