@@ -220,7 +220,7 @@ func (ch *ClickHouse) ensureVersionTable() (err error) {
220
220
221
221
var (
222
222
table string
223
- query = "SHOW TABLES FROM \" " + ch .config .DatabaseName + " \ " LIKE '" + ch .config .MigrationsTable + "'"
223
+ query = "SHOW TABLES FROM " + quoteIdentifier ( ch .config .DatabaseName ) + " LIKE '" + ch .config .MigrationsTable + "'"
224
224
)
225
225
// check if migration table exists
226
226
if err := ch .conn .QueryRow (query ).Scan (& table ); err != nil {
@@ -259,7 +259,7 @@ func (ch *ClickHouse) ensureVersionTable() (err error) {
259
259
}
260
260
261
261
func (ch * ClickHouse ) Drop () (err error ) {
262
- query := "SHOW TABLES FROM \" " + ch .config .DatabaseName + " \" "
262
+ query := "SHOW TABLES FROM " + quoteIdentifier ( ch .config .DatabaseName )
263
263
tables , err := ch .conn .Query (query )
264
264
265
265
if err != nil {
@@ -277,7 +277,7 @@ func (ch *ClickHouse) Drop() (err error) {
277
277
return err
278
278
}
279
279
280
- query = "DROP TABLE IF EXISTS \" " + ch .config .DatabaseName + "\" ." + table
280
+ query = "DROP TABLE IF EXISTS " + quoteIdentifier ( ch .config .DatabaseName ) + "." + quoteIdentifier ( table )
281
281
282
282
if _ , err := ch .conn .Exec (query ); err != nil {
283
283
return & database.Error {OrigErr : err , Query : []byte (query )}
@@ -305,3 +305,12 @@ func (ch *ClickHouse) Unlock() error {
305
305
return nil
306
306
}
307
307
func (ch * ClickHouse ) Close () error { return ch .conn .Close () }
308
+
309
+ // Copied from lib/pq implementation: https://github.com/lib/pq/blob/v1.9.0/conn.go#L1611
310
+ func quoteIdentifier (name string ) string {
311
+ end := strings .IndexRune (name , 0 )
312
+ if end > - 1 {
313
+ name = name [:end ]
314
+ }
315
+ return `"` + strings .Replace (name , `"` , `""` , - 1 ) + `"`
316
+ }
0 commit comments