diff --git a/v3/newrelic/sqlparse/sqlparse.go b/v3/newrelic/sqlparse/sqlparse.go index 98afccb3d..f20fe4ed9 100644 --- a/v3/newrelic/sqlparse/sqlparse.go +++ b/v3/newrelic/sqlparse/sqlparse.go @@ -39,6 +39,7 @@ var ( "alter": nil, "commit": nil, "rollback": nil, + "with": nil, } firstWordRegex = regexp.MustCompile(`^\w+`) cCommentRegex = regexp.MustCompile(`(?is)/\*.*?\*/`) diff --git a/v3/newrelic/sqlparse/sqlparse_test.go b/v3/newrelic/sqlparse/sqlparse_test.go index 4f6019e53..600c20ea0 100644 --- a/v3/newrelic/sqlparse/sqlparse_test.go +++ b/v3/newrelic/sqlparse/sqlparse_test.go @@ -196,3 +196,13 @@ func TestExtractTable(t *testing.T) { } } } +func TestParseSQLWith(t *testing.T) { + for _, tc := range []sqlTestcase{ + {Input: "WITH cte AS (SELECT * FROM users) SELECT * FROM cte", Operation: "with", Table: ""}, + {Input: "WITH RECURSIVE cte AS (SELECT id FROM employees) SELECT * FROM cte", Operation: "with", Table: ""}, + {Input: "with temp AS (SELECT id FROM foo) SELECT * FROM temp", Operation: "with", Table: ""}, + {Input: " WITH cte AS (SELECT * FROM bar) SELECT * FROM cte", Operation: "with", Table: ""}, + } { + tc.test(t) + } +}