Skip to content

Commit 46b0c52

Browse files
authored
fix extract_signature dbapi2: handling square brakets in table name (#1947)
1 parent 1654dd5 commit 46b0c52

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

elasticapm/instrumentation/packages/dbapi2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ def _scan_for_table_with_tokens(tokens, keyword):
7676

7777

7878
def tokenize(sql):
79-
# split on anything that is not a word character, excluding dots
80-
return [t for t in re.split(r"([^\w.])", sql) if t != ""]
79+
# split on anything that is not a word character or a square bracket, excluding dots
80+
return [t for t in re.split(r"([^\w.\[\]])", sql) if t != ""]
8181

8282

8383
def scan(tokens):

tests/instrumentation/dbapi2_tests.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,18 @@ def test_extract_signature_for_procedure_call(sql, expected):
154154
def test_extract_action_from_signature(sql, expected):
155155
actual = extract_action_from_signature(sql, "query")
156156
assert actual == expected
157+
158+
159+
@pytest.mark.parametrize(
160+
["sql", "expected"],
161+
[
162+
("SELECT username FROM user", "SELECT FROM user"),
163+
("SELECT username FROM [user]", "SELECT FROM [user]"),
164+
("SELECT username FROM [db].[user]", "SELECT FROM [db].[user]"),
165+
("SELECT username FROM db.[user]", "SELECT FROM db.[user]"),
166+
("SELECT username FROM [db].user", "SELECT FROM [db].user"),
167+
],
168+
)
169+
def test_extract_signature_when_using_square_brackets(sql, expected):
170+
actual = extract_signature(sql)
171+
assert actual == expected

0 commit comments

Comments
 (0)