作者 yangfu

修改starrocks 查询驱动

@@ -13,4 +13,7 @@ ENV GOPROXY https://goproxy.cn @@ -13,4 +13,7 @@ ENV GOPROXY https://goproxy.cn
13 RUN ["go","mod","tidy"] 13 RUN ["go","mod","tidy"]
14 RUN ["ls"] 14 RUN ["ls"]
15 RUN ["go","build"] 15 RUN ["go","build"]
  16 +
  17 +#EXPOSE 8080
  18 +
16 ENTRYPOINT ["./character-library-metadata-bastion"] 19 ENTRYPOINT ["./character-library-metadata-bastion"]
@@ -16,6 +16,8 @@ METADATA_BASTION_HOST = http://106.75.231.90:9999 @@ -16,6 +16,8 @@ METADATA_BASTION_HOST = http://106.75.231.90:9999
16 KAFKA_HOST =47.97.5.102:9092 16 KAFKA_HOST =47.97.5.102:9092
17 #192.168.100.35:9092 17 #192.168.100.35:9092
18 18
  19 +REDIS_HOST=127.0.0.1
  20 +
19 STARROCKS_DB_NAME = character_library 21 STARROCKS_DB_NAME = character_library
20 STARROCKS_USER = root 22 STARROCKS_USER = root
21 STARROCKS_PASSWORD = eagle1010 23 STARROCKS_PASSWORD = eagle1010
@@ -33,6 +33,7 @@ require ( @@ -33,6 +33,7 @@ require (
33 github.com/ajg/form v1.5.1 // indirect 33 github.com/ajg/form v1.5.1 // indirect
34 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect 34 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect
35 github.com/fatih/structs v1.1.0 // indirect 35 github.com/fatih/structs v1.1.0 // indirect
  36 + github.com/go-sql-driver/mysql v1.7.0
36 github.com/google/go-querystring v1.1.0 // indirect 37 github.com/google/go-querystring v1.1.0 // indirect
37 github.com/imkira/go-interpol v1.1.0 // indirect 38 github.com/imkira/go-interpol v1.1.0 // indirect
38 github.com/moul/http2curl v1.0.0 // indirect 39 github.com/moul/http2curl v1.0.0 // indirect
@@ -52,7 +53,7 @@ require ( @@ -52,7 +53,7 @@ require (
52 53
53 replace ( 54 replace (
54 github.com/extrame/xls v0.0.1 => github.com/tiptok/xls v1.0.1 55 github.com/extrame/xls v0.0.1 => github.com/tiptok/xls v1.0.1
  56 + github.com/go-sql-driver/mysql v1.7.0 => github.com/StarRocks/go-mysql-driver v1.7.0
55 //github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v0.0.0-20220421085958-9682d0ac42c1 57 //github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v0.0.0-20220421085958-9682d0ac42c1
56 github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v1.0.2 58 github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v1.0.2
57 -  
58 ) 59 )
1 package main 1 package main
2 2
3 import ( 3 import (
  4 + "database/sql"
4 "fmt" 5 "fmt"
5 "github.com/beego/beego/v2/server/web" 6 "github.com/beego/beego/v2/server/web"
6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/crontab" 7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/crontab"
@@ -39,6 +40,7 @@ func main() { @@ -39,6 +40,7 @@ func main() {
39 log.Logger.Info("Service:" + constant.SERVICE_NAME) 40 log.Logger.Info("Service:" + constant.SERVICE_NAME)
40 log.Logger.Info("Version:" + Version) 41 log.Logger.Info("Version:" + Version)
41 log.Logger.Info("server start!") 42 log.Logger.Info("server start!")
  43 + log.Logger.Info("db driver", map[string]interface{}{"drivers": sql.Drivers()})
42 web.Run() 44 web.Run()
43 log.Logger.Info("server stop!") 45 log.Logger.Info("server stop!")
44 } 46 }
@@ -470,15 +470,22 @@ func (tableService *TableService) ValidExprSql(ctx *domain.Context, cmd *command @@ -470,15 +470,22 @@ func (tableService *TableService) ValidExprSql(ctx *domain.Context, cmd *command
470 if len(cmd.ExprSql) == 0 { 470 if len(cmd.ExprSql) == 0 {
471 selectValue = "''" 471 selectValue = "''"
472 } 472 }
  473 + selectValue = domain.RemoveInvalidChar(selectValue)
473 sql := "select " + selectValue + " as expr" 474 sql := "select " + selectValue + " as expr"
474 if len(set.KeysStr()) > 0 { 475 if len(set.KeysStr()) > 0 {
475 sql += " from " + strings.Join(set.KeysStr(), ",") 476 sql += " from " + strings.Join(set.KeysStr(), ",")
476 sql += " limit 1" 477 sql += " limit 1"
477 } 478 }
478 - tx := starrocks.DB.Exec(sql)  
479 - if tx.Error != nil { 479 + //tx := starrocks.DB.Exec(sql)
  480 + //if tx.Error != nil {
  481 + // return map[string]string{
  482 + // "result": tx.Error.Error(),
  483 + // }, nil
  484 + //}
  485 + err := starrocks.ExecOfficial(sql)
  486 + if err != nil {
480 return map[string]string{ 487 return map[string]string{
481 - "result": tx.Error.Error(), 488 + "result": err.Error(),
482 }, nil 489 }, nil
483 } 490 }
484 case domain.ExprModeExcelFunction: 491 case domain.ExprModeExcelFunction:
1 package constant 1 package constant
2 2
3 -var POSTGRESQL_DB_NAME = "terms" 3 +var POSTGRESQL_DB_NAME = "allied_creation_test"
4 var POSTGRESQL_USER = "postgres" 4 var POSTGRESQL_USER = "postgres"
5 -var POSTGRESQL_PASSWORD = "123456"  
6 -var POSTGRESQL_HOST = "127.0.0.1"  
7 -var POSTGRESQL_PORT = "5432" 5 +var POSTGRESQL_PASSWORD = "eagle1010"
  6 +var POSTGRESQL_HOST = "114.55.200.59"
  7 +var POSTGRESQL_PORT = "31543"
8 var DISABLE_CREATE_TABLE = false 8 var DISABLE_CREATE_TABLE = false
9 var DISABLE_SQL_GENERATE_PRINT = false 9 var DISABLE_SQL_GENERATE_PRINT = false
10 var DISABLE_SQL_GENERATE_COMMENT = true 10 var DISABLE_SQL_GENERATE_COMMENT = true
1 package constant 1 package constant
2 2
3 var ( 3 var (
4 - REDIS_HOST = "127.0.0.1" 4 + REDIS_HOST = "host.docker.internal"
5 REDIS_PORT = "6379" 5 REDIS_PORT = "6379"
6 REDIS_AUTH = "" 6 REDIS_AUTH = ""
7 REDIS_ADDRESS = "" 7 REDIS_ADDRESS = ""
@@ -2,10 +2,10 @@ package constant @@ -2,10 +2,10 @@ package constant
2 2
3 import "fmt" 3 import "fmt"
4 4
5 -var STARROCKS_DB_NAME = "character_library_standard" 5 +var STARROCKS_DB_NAME = "character_library"
6 var STARROCKS_USER = "root" 6 var STARROCKS_USER = "root"
7 var STARROCKS_PASSWORD = "eagle1010" 7 var STARROCKS_PASSWORD = "eagle1010"
8 -var STARROCKS_HOST = "118.178.239.45" 8 +var STARROCKS_HOST = "220.250.41.79"
9 var STARROCKS_PORT = "9030" 9 var STARROCKS_PORT = "9030"
10 var STARROCKS_MYSQL_DATA_SOURCE = "" 10 var STARROCKS_MYSQL_DATA_SOURCE = ""
11 11
@@ -110,6 +110,16 @@ func (expr *FieldExpr) Complete() string { @@ -110,6 +110,16 @@ func (expr *FieldExpr) Complete() string {
110 } 110 }
111 exprSql = strings.ReplaceAll(exprSql, sql, sub) 111 exprSql = strings.ReplaceAll(exprSql, sql, sub)
112 } 112 }
  113 + exprSql = RemoveInvalidChar(exprSql)
  114 + return exprSql
  115 +}
  116 +
  117 +// RemoveInvalidChar 移除非法字符
  118 +// 前台的字符串的一个空格(ASCII:32)被UTF-8编码之后变成了一个诡异的字符(ASCII:194 和 160的组合)
  119 +// https://www.cnblogs.com/mingmingruyuedlut/archive/2012/07/04/2575180.html
  120 +func RemoveInvalidChar(exprSql string) string {
  121 + tmpValue := string([]byte{0xC2, 0xA0})
  122 + exprSql = strings.ReplaceAll(exprSql, tmpValue, " ")
113 return exprSql 123 return exprSql
114 } 124 }
115 125
1 package starrocks 1 package starrocks
2 2
3 import ( 3 import (
  4 + _ "github.com/go-sql-driver/mysql"
4 "github.com/linmadan/egglib-go/utils/json" 5 "github.com/linmadan/egglib-go/utils/json"
5 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/constant" 6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/constant"
6 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/utils" 7 "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/utils"
@@ -29,6 +30,9 @@ func Init() error { @@ -29,6 +30,9 @@ func Init() error {
29 ) 30 )
30 DB, err = gorm.Open(mysql.Open(constant.STARROCKS_MYSQL_DATA_SOURCE), &gorm.Config{Logger: newLogger, PrepareStmt: false}) 31 DB, err = gorm.Open(mysql.Open(constant.STARROCKS_MYSQL_DATA_SOURCE), &gorm.Config{Logger: newLogger, PrepareStmt: false})
31 32
  33 + if err = InitDBOfficial(); err != nil {
  34 + return err
  35 + }
32 //Test1() 36 //Test1()
33 return err 37 return err
34 } 38 }
  1 +package starrocks
  2 +
  3 +import (
  4 + "database/sql"
  5 + "github.com/go-sql-driver/mysql"
  6 + "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/constant"
  7 + "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/log"
  8 + "time"
  9 +)
  10 +
  11 +var DBOfficial *sql.DB
  12 +
  13 +func InitDBOfficial() error {
  14 + var err error
  15 + sql.Register("mysql-star", &mysql.MySQLDriver{})
  16 + DBOfficial, err = sql.Open("mysql-star", constant.STARROCKS_MYSQL_DATA_SOURCE)
  17 + if err != nil {
  18 + return err
  19 + }
  20 + // See "Important settings" section.
  21 + DBOfficial.SetConnMaxLifetime(time.Minute * 3)
  22 + DBOfficial.SetMaxOpenConns(2)
  23 + DBOfficial.SetMaxIdleConns(2)
  24 + return nil
  25 +}
  26 +
  27 +func ExecOfficial(sql string) error {
  28 + log.Logger.Debug(sql)
  29 + result, err := DBOfficial.Exec(sql)
  30 + if err != nil {
  31 + log.Logger.Error("exec error", map[string]interface{}{"err": err.Error()})
  32 + return err
  33 + }
  34 + _, err = result.RowsAffected()
  35 + if err != nil {
  36 + log.Logger.Error("result error", map[string]interface{}{"result": err.Error()})
  37 + return err
  38 + }
  39 + return nil
  40 +}