From 839421e733996942847e55681a4e959d79cdd06d Mon Sep 17 00:00:00 2001 From: Luca Nardelli Date: Wed, 30 Nov 2022 14:38:22 +0100 Subject: [PATCH] Leverage quoteIdentifier from pgx --- database/clickhouse/clickhouse.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/database/clickhouse/clickhouse.go b/database/clickhouse/clickhouse.go index e9f3a35c0..d2b65c0ce 100644 --- a/database/clickhouse/clickhouse.go +++ b/database/clickhouse/clickhouse.go @@ -220,7 +220,7 @@ func (ch *ClickHouse) ensureVersionTable() (err error) { var ( table string - query = "SHOW TABLES FROM \"" + ch.config.DatabaseName + "\" LIKE '" + ch.config.MigrationsTable + "'" + query = "SHOW TABLES FROM " + quoteIdentifier(ch.config.DatabaseName) + " LIKE '" + ch.config.MigrationsTable + "'" ) // check if migration table exists if err := ch.conn.QueryRow(query).Scan(&table); err != nil { @@ -259,7 +259,7 @@ func (ch *ClickHouse) ensureVersionTable() (err error) { } func (ch *ClickHouse) Drop() (err error) { - query := "SHOW TABLES FROM \"" + ch.config.DatabaseName + "\"" + query := "SHOW TABLES FROM " + quoteIdentifier(ch.config.DatabaseName) tables, err := ch.conn.Query(query) if err != nil { @@ -277,7 +277,7 @@ func (ch *ClickHouse) Drop() (err error) { return err } - query = "DROP TABLE IF EXISTS \"" + ch.config.DatabaseName + "\"." + table + query = "DROP TABLE IF EXISTS " + quoteIdentifier(ch.config.DatabaseName) + "." + quoteIdentifier(table) if _, err := ch.conn.Exec(query); err != nil { return &database.Error{OrigErr: err, Query: []byte(query)} @@ -305,3 +305,12 @@ func (ch *ClickHouse) Unlock() error { return nil } func (ch *ClickHouse) Close() error { return ch.conn.Close() } + +// Copied from lib/pq implementation: https://github.com/lib/pq/blob/v1.9.0/conn.go#L1611 +func quoteIdentifier(name string) string { + end := strings.IndexRune(name, 0) + if end > -1 { + name = name[:end] + } + return `"` + strings.Replace(name, `"`, `""`, -1) + `"` +}