From d4f8196920edb632b625f70526a456495e556117 Mon Sep 17 00:00:00 2001 From: "S.W.H" Date: Mon, 27 Jan 2014 21:28:13 +0800 Subject: [PATCH] fixbug: parse DECIMAL(10, 2) failure. --- engine.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/engine.go b/engine.go index 1f2312de..e0aa2bf2 100644 --- a/engine.go +++ b/engine.go @@ -484,7 +484,8 @@ func (engine *Engine) mapType(t reflect.Type) *Table { var indexType int var indexName string var preKey string - for j, key := range tags { + for j,ln := 0,len(tags); j < ln; j++ { + key := tags[j] k := strings.ToUpper(key) switch { case k == "<-": @@ -535,7 +536,18 @@ func (engine *Engine) mapType(t reflect.Type) *Table { if preKey != "DEFAULT" { col.Name = key[1 : len(key)-1] } - } else if strings.Contains(k, "(") && strings.HasSuffix(k, ")") { + } else if strings.Contains(k, "(") && (strings.HasSuffix(k, ")") || strings.HasSuffix(k, ",")) { + //[SWH|+] + if strings.HasSuffix(k, ",") { + j++ + for j < ln { + k += tags[j] + if strings.HasSuffix(tags[j], ")") { + break + } + j++ + } + } fs := strings.Split(k, "(") if _, ok := sqlTypes[fs[0]]; !ok { preKey = k