From ae1ad864b667cfb46145e6aa7d0fafe3c91fe049 Mon Sep 17 00:00:00 2001 From: Glenn Nagel Date: Sat, 15 Oct 2016 19:44:29 -0400 Subject: [PATCH] Updated redshift dialect to key off of `gorm:"auto_increment"` key --- dialect_redshift.go | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/dialect_redshift.go b/dialect_redshift.go index 9fa096d5..9e2857ae 100644 --- a/dialect_redshift.go +++ b/dialect_redshift.go @@ -35,25 +35,14 @@ func (redshift) DataTypeOf(field *StructField) string { case reflect.Float64: sqlType = "float8" case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32: - if field.IsPrimaryKey { - delete(field.TagSettings, "AUTO_INCREMENT") - delete(field.TagSettings, "IDENTITY(1, 1)") - sqlType = "integer IDENTITY(1, 1)" - } else if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok { - delete(field.TagSettings, "AUTO_INCREMENT") - delete(field.TagSettings, "IDENTITY(1, 1)") - sqlType = "integer IDENTITY(1, 1)" - } else if _, ok := field.TagSettings["IDENTITY(1, 1)"]; ok { - delete(field.TagSettings, "AUTO_INCREMENT") - delete(field.TagSettings, "IDENTITY(1, 1)") - sqlType = "integer IDENTITY(1, 1)" + if _, ok := field.TagSettings["AUTO_INCREMENT"]; field.IsPrimaryKey || ok { + sqlType = "integer DISTKEY IDENTITY(1, 1)" } else { sqlType = "integer" } case reflect.Int64, reflect.Uintptr, reflect.Uint64: - if _, ok := field.TagSettings["IDENTITY(1, 1)"]; ok || field.IsPrimaryKey { - field.TagSettings["IDENTITY(1, 1)"] = "IDENTITY(1, 1)" - sqlType = "bigint" + if _, ok := field.TagSettings["AUTO_INCREMENT"]; field.IsPrimaryKey || ok { + sqlType = "bigint DISTKEY IDENTITY(1, 1)" } else { sqlType = "bigint" }