Skip to content

Commit 403ba0d

Browse files
committed
Create table with boolean type
1 parent 924c878 commit 403ba0d

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

oracle/common.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import (
5959
func getOracleArrayType(field *schema.Field, values []any) string {
6060
switch field.DataType {
6161
case schema.Bool:
62-
return "TABLE OF NUMBER(1)"
62+
return "TABLE OF BOOLEAN"
6363
case schema.Int, schema.Uint:
6464
return "TABLE OF NUMBER"
6565
case schema.Float:
@@ -189,7 +189,7 @@ func createTypedDestination(f *schema.Field) interface{} {
189189
return new(string)
190190

191191
case reflect.Bool:
192-
return new(int64)
192+
return new(bool)
193193

194194
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
195195
return new(int64)
@@ -237,12 +237,6 @@ func convertValue(val interface{}) interface{} {
237237
return ""
238238
}
239239
return val
240-
case bool:
241-
if v {
242-
return 1
243-
} else {
244-
return 0
245-
}
246240
case string:
247241
if len(v) > math.MaxInt16 {
248242
return godror.Lob{IsClob: true, Reader: strings.NewReader(v)}
@@ -412,6 +406,9 @@ func convertPrimitiveType(value interface{}, targetType reflect.Type) interface{
412406
if v, ok := value.(int64); ok {
413407
return v != 0
414408
}
409+
if v, ok := value.(bool); ok {
410+
return v
411+
}
415412
return value
416413
case reflect.Int:
417414
if v, ok := value.(int64); ok {

oracle/migrator.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,9 +646,9 @@ func (m Migrator) buildOracleDefault(defaultValue string) string {
646646
case "SYSDATE":
647647
return "DEFAULT SYSDATE"
648648
case "TRUE":
649-
return "DEFAULT 1"
649+
return "DEFAULT TRUE"
650650
case "FALSE":
651-
return "DEFAULT 0"
651+
return "DEFAULT FALSE"
652652
}
653653

654654
// Handle sequence calls (contains .NEXTVAL)
@@ -682,9 +682,9 @@ func (m Migrator) buildOracleDefaultFromInterface(value interface{}) string {
682682
switch v := value.(type) {
683683
case bool:
684684
if v {
685-
return "DEFAULT 1"
685+
return "DEFAULT TRUE"
686686
}
687-
return "DEFAULT 0"
687+
return "DEFAULT FALSE"
688688
case string:
689689
if v == "" {
690690
return "DEFAULT ''"

oracle/oracle.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,7 @@ func (d Dialector) getStringType(field *schema.Field) string {
188188
}
189189

190190
func (d Dialector) getBooleanType() string {
191-
// Oracle doesn't support BOOLEAN in CREATE TABLE, use NUMBER(1) instead
192-
return "NUMBER(1)"
191+
return "BOOLEAN"
193192
}
194193

195194
func (d Dialector) getDataTimeType() string {

0 commit comments

Comments
 (0)