Add dameng support #2007

Merged
lunny merged 59 commits from lunny/dm into master 2021-08-24 05:46:09 +00:00
Showing only changes of commit a3c96246ec - Show all commits

View File

@ -586,7 +586,9 @@ func (db *dameng) SQLType(c *schemas.Column) string {
res = "REAL"
case schemas.Numeric, schemas.Decimal, "NUMBER":
res = "NUMERIC"
case schemas.Text, schemas.MediumText, schemas.LongText, schemas.Json:
case schemas.Text, schemas.Json:
res = "TEXT"
case schemas.MediumText, schemas.LongText:
res = "CLOB"
case schemas.Char, schemas.Varchar, schemas.TinyText:
res = "VARCHAR2"
@ -758,6 +760,10 @@ func (d *dmClobScanner) Scan(data interface{}) error {
if err != nil {
return err
}
if l == 0 {
d.valid = true
return nil
}
d.data, err = t.ReadString(1, int(l))
if err != nil {
return err
@ -884,7 +890,7 @@ func (db *dameng) GetColumns(queryer core.Queryer, ctx context.Context, tableNam
col.SQLType = schemas.SQLType{Name: schemas.TimeStampz, DefaultLength: 0, DefaultLength2: 0}
case "NUMBER":
col.SQLType = schemas.SQLType{Name: "NUMBER", DefaultLength: len1, DefaultLength2: len2}
case "LONG", "LONG RAW", "NCLOB", "CLOB":
case "LONG", "LONG RAW", "NCLOB", "CLOB", "TEXT":
col.SQLType = schemas.SQLType{Name: schemas.Text, DefaultLength: 0, DefaultLength2: 0}
case "RAW":
col.SQLType = schemas.SQLType{Name: schemas.Binary, DefaultLength: 0, DefaultLength2: 0}
@ -1066,7 +1072,7 @@ func (d *damengDriver) Scan(ctx *ScanContext, rows *core.Rows, types []*sql.Colu
var replaced bool
var scanResult interface{}
switch types[i].DatabaseTypeName() {
case "CLOB":
case "CLOB", "TEXT":
scanResult = &dmClobScanner{}
replaced = true
default: