From 1cd2662be938bfee0e34af92fe448513e0560fb1 Mon Sep 17 00:00:00 2001 From: Zsombor Date: Wed, 9 Jan 2019 09:18:50 +0100 Subject: [PATCH] Fix exporting into Postgres, problems: (#1186) * UUID and BOOL type shouldn't have a length field * Incorrect quoting cause that the column names are selected instead of the column values --- dialect_postgres.go | 6 +++++- engine.go | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/dialect_postgres.go b/dialect_postgres.go index 1f74bd31..738c6a15 100644 --- a/dialect_postgres.go +++ b/dialect_postgres.go @@ -822,7 +822,7 @@ func (db *postgres) SqlType(c *core.Column) string { case core.NVarchar: res = core.Varchar case core.Uuid: - res = core.Uuid + return core.Uuid case core.Blob, core.TinyBlob, core.MediumBlob, core.LongBlob: return core.Bytea case core.Double: @@ -834,6 +834,10 @@ func (db *postgres) SqlType(c *core.Column) string { res = t } + if strings.EqualFold(res, "bool") { + // for bool, we don't need length information + return res + } hasLen1 := (c.Length > 0) hasLen2 := (c.Length2 > 0) diff --git a/engine.go b/engine.go index 89a96d9f..04af3f21 100644 --- a/engine.go +++ b/engine.go @@ -481,7 +481,8 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D } cols := table.ColumnsSeq() - colNames := dialect.Quote(strings.Join(cols, dialect.Quote(", "))) + colNames := engine.dialect.Quote(strings.Join(cols, engine.dialect.Quote(", "))) + destColNames := dialect.Quote(strings.Join(cols, dialect.Quote(", "))) rows, err := engine.DB().Query("SELECT " + colNames + " FROM " + engine.Quote(table.Name)) if err != nil { @@ -496,7 +497,7 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D return err } - _, err = io.WriteString(w, "INSERT INTO "+dialect.Quote(table.Name)+" ("+colNames+") VALUES (") + _, err = io.WriteString(w, "INSERT INTO "+dialect.Quote(table.Name)+" ("+destColNames+") VALUES (") if err != nil { return err }