From 1d87de1e1a74baee28a2d4f1497dc88edc8dd7bf Mon Sep 17 00:00:00 2001 From: Lauris BH Date: Thu, 17 Aug 2023 15:21:21 +0300 Subject: [PATCH] Fix schema/table escaping with alias in join (#52) --- builder/buffer.go | 3 +++ builder/buffer_test.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/builder/buffer.go b/builder/buffer.go index 243cffc..e807a62 100644 --- a/builder/buffer.go +++ b/builder/buffer.go @@ -133,6 +133,9 @@ func (b Buffer) escape(table, value string) string { var escaped_table string if table != "" { + if i := strings.Index(strings.ToLower(table), " as "); i > -1 { + return b.escape(table[:i], "") + " AS " + b.Quoter.ID(table[i+4:]) + } if b.AllowTableSchema && strings.IndexByte(table, '.') >= 0 { parts := strings.Split(table, ".") for i, part := range parts { diff --git a/builder/buffer_test.go b/builder/buffer_test.go index 5141669..3bc1486 100644 --- a/builder/buffer_test.go +++ b/builder/buffer_test.go @@ -71,6 +71,10 @@ func TestBuffer_escape(t *testing.T) { field: "person.address as person.address", result: "[person].[address] AS [person.address]", }, + { + table: "schema.user as primary_user", + result: "[schema].[user] AS [primary_user]", + }, } for _, test := range tests { t.Run(test.result, func(t *testing.T) {