diff --git a/db.go b/db.go index 30e16ca7..ea21b92f 100644 --- a/db.go +++ b/db.go @@ -180,7 +180,7 @@ func (m *DbMap) createIndexImpl(dialect reflect.Type, if dname := dialect.Name(); dname == "MySQLDialect" && index.IndexType != "" { s.WriteString(fmt.Sprintf(" %s %s", m.Dialect.CreateIndexSuffix(), index.IndexType)) } - s.WriteString(";") + s.WriteString(m.Dialect.QuerySuffix()) _, err := m.Exec(s.String()) return err } @@ -197,7 +197,7 @@ func (t *TableMap) DropIndex(name string) error { if dname := dialect.Name(); dname == "MySQLDialect" { s.WriteString(fmt.Sprintf(" %s %s", t.dbmap.Dialect.DropIndexSuffix(), t.TableName)) } - s.WriteString(";") + s.WriteString(t.dbmap.Dialect.QuerySuffix()) _, e := t.dbmap.Exec(s.String()) if e != nil { err = e @@ -531,7 +531,7 @@ func (m *DbMap) dropTableImpl(table *TableMap, ifExists bool) (err error) { if ifExists { tableDrop = m.Dialect.IfTableExists(tableDrop, table.SchemaName, table.TableName) } - _, err = m.Exec(fmt.Sprintf("%s %s;", tableDrop, m.Dialect.QuotedTableForQuery(table.SchemaName, table.TableName))) + _, err = m.Exec(fmt.Sprintf("%s %s%s", tableDrop, m.Dialect.QuotedTableForQuery(table.SchemaName, table.TableName), m.Dialect.QuerySuffix())) return err } @@ -543,14 +543,16 @@ func (m *DbMap) TruncateTables() error { var err error for i := range m.tables { table := m.tables[i] - _, e := m.Exec(fmt.Sprintf("%s %s;", m.Dialect.TruncateClause(), m.Dialect.QuotedTableForQuery(table.SchemaName, table.TableName))) + println(m.Dialect.QuerySuffix()) + _, e := m.Exec(fmt.Sprintf("%s %s%s", m.Dialect.TruncateClause(), m.Dialect.QuotedTableForQuery(table.SchemaName, table.TableName), m.Dialect.QuerySuffix())) if e != nil { err = e } } for _, table := range m.dynamicTableMap() { - _, e := m.Exec(fmt.Sprintf("%s %s;", m.Dialect.TruncateClause(), m.Dialect.QuotedTableForQuery(table.SchemaName, table.TableName))) + println(m.Dialect.QuerySuffix()) + _, e := m.Exec(fmt.Sprintf("%s %s%s", m.Dialect.TruncateClause(), m.Dialect.QuotedTableForQuery(table.SchemaName, table.TableName), m.Dialect.QuerySuffix())) if e != nil { err = e } @@ -744,7 +746,7 @@ func (m *DbMap) SelectOne(holder interface{}, query string, args ...interface{}) func (m *DbMap) Begin() (*Transaction, error) { if m.logger != nil { now := time.Now() - defer m.trace(now, "begin;") + defer m.trace(now, "begin"+m.Dialect.QuerySuffix()) } tx, err := begin(m) if err != nil { diff --git a/dialect_oracle.go b/dialect_oracle.go index c381380f..113eda97 100644 --- a/dialect_oracle.go +++ b/dialect_oracle.go @@ -31,7 +31,7 @@ func (d OracleDialect) ToSqlType(val reflect.Type, maxsize int, isAutoIncr bool) case reflect.Ptr: return d.ToSqlType(val.Elem(), maxsize, isAutoIncr) case reflect.Bool: - return "boolean" + return "number(1, 0)" case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32: if isAutoIncr { return "serial" @@ -41,11 +41,11 @@ func (d OracleDialect) ToSqlType(val reflect.Type, maxsize int, isAutoIncr bool) if isAutoIncr { return "bigserial" } - return "bigint" + return "number(19, 0)" case reflect.Float64: - return "double precision" + return "float(24)" case reflect.Float32: - return "real" + return "float(24)" case reflect.Slice: if val.Elem().Kind() == reflect.Uint8 { return "bytea" @@ -54,17 +54,17 @@ func (d OracleDialect) ToSqlType(val reflect.Type, maxsize int, isAutoIncr bool) switch val.Name() { case "NullInt64": - return "bigint" + return "number(19, 0)" case "NullFloat64": - return "double precision" + return "float(24)" case "NullBool": - return "boolean" + return "number(1, 0)" case "NullTime", "Time": - return "timestamp with time zone" + return "date" } if maxsize > 0 { - return fmt.Sprintf("varchar(%d)", maxsize) + return fmt.Sprintf("varchar2(%d)", maxsize) } else { return "text" } @@ -90,7 +90,7 @@ func (d OracleDialect) CreateTableSuffix() string { } func (d OracleDialect) TruncateClause() string { - return "truncate" + return "truncate table" } // Returns "$(i+1)"