Skip to content

Commit 5ccb785

Browse files
authored
Merge pull request #13 from PostHog/feat/application-name-mapping
Add application_name to DuckDB variable mapping
2 parents 3c91f0b + ec15602 commit 5ccb785

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

server/catalog.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,12 @@ var (
353353
regnamespaceCastRegex = regexp.MustCompile(`(?i)::pg_catalog\.regnamespace`)
354354
// ::pg_catalog.text -> ::VARCHAR
355355
textCastRegex = regexp.MustCompile(`(?i)::pg_catalog\.text`)
356+
// SET application_name = 'value' -> SET VARIABLE application_name = 'value'
357+
setApplicationNameRegex = regexp.MustCompile(`(?i)^SET\s+application_name\s*=`)
358+
// SET application_name TO 'value' -> SET VARIABLE application_name = 'value'
359+
setApplicationNameToRegex = regexp.MustCompile(`(?i)^SET\s+application_name\s+TO\s+`)
360+
// SHOW application_name -> SELECT getvariable('application_name') AS application_name
361+
showApplicationNameRegex = regexp.MustCompile(`(?i)^SHOW\s+application_name\s*;?\s*$`)
356362
)
357363

358364
// rewritePgCatalogQuery rewrites PostgreSQL-specific syntax for DuckDB compatibility
@@ -407,6 +413,11 @@ func rewritePgCatalogQuery(query string) string {
407413
query = regnamespaceCastRegex.ReplaceAllString(query, "::VARCHAR")
408414
query = textCastRegex.ReplaceAllString(query, "::VARCHAR")
409415

416+
// Replace PostgreSQL application_name with DuckDB variable
417+
query = setApplicationNameRegex.ReplaceAllString(query, "SET VARIABLE application_name =")
418+
query = setApplicationNameToRegex.ReplaceAllString(query, "SET VARIABLE application_name =")
419+
query = showApplicationNameRegex.ReplaceAllString(query, "SELECT getvariable('application_name') AS application_name")
420+
410421
return query
411422
}
412423

0 commit comments

Comments
 (0)