This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch release-v0.14
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.14 by this push:
     new ed32e1ad fix: starrocks sync data type (#3576)
ed32e1ad is described below

commit ed32e1ad392e842a1abf8ce45a89ac8888c047f0
Author: long2ice <[email protected]>
AuthorDate: Wed Oct 26 14:50:28 2022 +0800

    fix: starrocks sync data type (#3576)
    
    * fix: starrocks sync data type
    
    * fix: improve getStarRocksDataType
---
 plugins/starrocks/tasks.go |  4 ++--
 plugins/starrocks/utils.go | 26 ++++++++++++++++++++------
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/plugins/starrocks/tasks.go b/plugins/starrocks/tasks.go
index 6493ed8f..acf2b1b7 100644
--- a/plugins/starrocks/tasks.go
+++ b/plugins/starrocks/tasks.go
@@ -172,11 +172,11 @@ func createTmpTable(starrocks *sql.DB, db dal.Dal, 
starrocksTmpTable string, tab
        firstcmName := ""
        for _, cm := range columeMetas {
                name := cm.Name()
-               starrocksDatatype, ok := cm.ColumnType()
+               columnDatatype, ok := cm.ColumnType()
                if !ok {
                        return columnMap, "", 
errors.Default.New(fmt.Sprintf("Get [%s] ColumeType Failed", name))
                }
-               dataType := getDataType(starrocksDatatype)
+               dataType := getStarRocksDataType(columnDatatype)
                columnMap[name] = dataType
                column := fmt.Sprintf("`%s` %s", name, dataType)
                columns = append(columns, column)
diff --git a/plugins/starrocks/utils.go b/plugins/starrocks/utils.go
index 9588b9fe..104e7235 100644
--- a/plugins/starrocks/utils.go
+++ b/plugins/starrocks/utils.go
@@ -71,6 +71,7 @@ func getTablesByDomainLayer(domainLayer string) []string {
        }
        return nil
 }
+
 func hasPrefixes(s string, prefixes ...string) bool {
        for _, prefix := range prefixes {
                if strings.HasPrefix(s, prefix) {
@@ -79,6 +80,7 @@ func hasPrefixes(s string, prefixes ...string) bool {
        }
        return false
 }
+
 func stringIn(s string, l ...string) bool {
        for _, item := range l {
                if s == item {
@@ -87,24 +89,36 @@ func stringIn(s string, l ...string) bool {
        }
        return false
 }
-func getDataType(dataType string) string {
+
+func getStarRocksDataType(dataType string) string {
+       dataType = strings.ToLower(dataType)
        starrocksDatatype := "string"
        if hasPrefixes(dataType, "datetime", "timestamp") {
                starrocksDatatype = "datetime"
-       } else if strings.HasPrefix(dataType, "bigint") {
+       } else if stringIn(dataType, "date") {
+               starrocksDatatype = "date"
+       } else if strings.HasPrefix(dataType, "bigint") || stringIn(dataType, 
"bigserial") {
                starrocksDatatype = "bigint"
-       } else if stringIn(dataType, "longtext", "text", "longblob") {
-               starrocksDatatype = "string"
-       } else if dataType == "tinyint(1)" {
+       } else if stringIn(dataType, "char") {
+               starrocksDatatype = "char"
+       } else if stringIn(dataType, "int", "integer", "serial") {
+               starrocksDatatype = "int"
+       } else if stringIn(dataType, "tinyint(1)", "boolean") {
                starrocksDatatype = "boolean"
+       } else if stringIn(dataType, "smallint", "smallserial") {
+               starrocksDatatype = "smallint"
+       } else if stringIn(dataType, "real") {
+               starrocksDatatype = "float"
        } else if stringIn(dataType, "numeric", "double precision") {
                starrocksDatatype = "double"
+       } else if stringIn(dataType, "decimal") {
+               starrocksDatatype = "decimal"
        } else if stringIn(dataType, "json", "jsonb") {
                starrocksDatatype = "json"
        } else if dataType == "uuid" {
                starrocksDatatype = "char(36)"
        } else if strings.HasSuffix(dataType, "[]") {
-               starrocksDatatype = fmt.Sprintf("array<%s>", 
getDataType(strings.Split(dataType, "[]")[0]))
+               starrocksDatatype = fmt.Sprintf("array<%s>", 
getStarRocksDataType(strings.Split(dataType, "[]")[0]))
        }
        return starrocksDatatype
 }

Reply via email to