mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
improve clickhouse driver
This commit is contained in:
@ -97,12 +97,14 @@ type DB interface {
|
||||
DoGetAll(ctx context.Context, link Link, sql string, args ...interface{}) (result Result, err error) // See Core.DoGetAll.
|
||||
DoInsert(ctx context.Context, link Link, table string, data List, option DoInsertOption) (result sql.Result, err error) // See Core.DoInsert.
|
||||
DoUpdate(ctx context.Context, link Link, table string, data interface{}, condition string, args ...interface{}) (result sql.Result, err error) // See Core.DoUpdate.
|
||||
DoDelete(ctx context.Context, link Link, table string, condition string, args ...interface{}) (result sql.Result, err error) // See Core.DoDelete.
|
||||
DoQuery(ctx context.Context, link Link, sql string, args ...interface{}) (result Result, err error) // See Core.DoQuery.
|
||||
DoExec(ctx context.Context, link Link, sql string, args ...interface{}) (result sql.Result, err error) // See Core.DoExec.
|
||||
DoFilter(ctx context.Context, link Link, sql string, args []interface{}) (newSql string, newArgs []interface{}, err error) // See Core.DoFilter.
|
||||
DoCommit(ctx context.Context, in DoCommitInput) (out DoCommitOutput, err error) // See Core.DoCommit.
|
||||
DoPrepare(ctx context.Context, link Link, sql string) (*Stmt, error) // See Core.DoPrepare.
|
||||
DoUpdateSQL(ctx context.Context, link Link, table string, updates interface{}, condition string, args ...interface{}) (result sql.Result, err error)
|
||||
DoDelete(ctx context.Context, link Link, table string, condition string, args ...interface{}) (result sql.Result, err error) // See Core.DoDelete.
|
||||
DoDeleteSQL(ctx context.Context, link Link, table string, condition interface{}, args ...interface{}) (result sql.Result, err error)
|
||||
DoQuery(ctx context.Context, link Link, sql string, args ...interface{}) (result Result, err error) // See Core.DoQuery.
|
||||
DoExec(ctx context.Context, link Link, sql string, args ...interface{}) (result sql.Result, err error) // See Core.DoExec.
|
||||
DoFilter(ctx context.Context, link Link, sql string, args []interface{}) (newSql string, newArgs []interface{}, err error) // See Core.DoFilter.
|
||||
DoCommit(ctx context.Context, in DoCommitInput) (out DoCommitOutput, err error) // See Core.DoCommit.
|
||||
DoPrepare(ctx context.Context, link Link, sql string) (*Stmt, error) // See Core.DoPrepare.
|
||||
|
||||
// ===========================================================================
|
||||
// Query APIs for convenience purpose.
|
||||
@ -185,14 +187,15 @@ type Core struct {
|
||||
|
||||
// DoCommitInput is the input parameters for function DoCommit.
|
||||
type DoCommitInput struct {
|
||||
Db *sql.DB
|
||||
Tx *sql.Tx
|
||||
Stmt *sql.Stmt
|
||||
Link Link
|
||||
Sql string
|
||||
Args []interface{}
|
||||
Type string
|
||||
IsTransaction bool
|
||||
Db *sql.DB
|
||||
Tx *sql.Tx
|
||||
Stmt *sql.Stmt
|
||||
Link Link
|
||||
Sql string
|
||||
Args []interface{}
|
||||
Type string
|
||||
IsTransaction bool
|
||||
IsIgnoreResult bool
|
||||
}
|
||||
|
||||
// DoCommitOutput is the output parameters for function DoCommit.
|
||||
|
||||
@ -598,6 +598,12 @@ func (c *Core) DoUpdate(ctx context.Context, link Link, table string, data inter
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return c.db.DoUpdateSQL(ctx, link, table, updates, condition, args...)
|
||||
}
|
||||
|
||||
// DoUpdateSQL Adapt to difference in different drives
|
||||
// For example, Clickhouse's update
|
||||
func (c *Core) DoUpdateSQL(ctx context.Context, link Link, table string, updates interface{}, condition string, args ...interface{}) (result sql.Result, err error) {
|
||||
return c.db.DoExec(ctx, link, fmt.Sprintf("UPDATE %s SET %s%s", table, updates, condition), args...)
|
||||
}
|
||||
|
||||
@ -625,6 +631,12 @@ func (c *Core) DoDelete(ctx context.Context, link Link, table string, condition
|
||||
}
|
||||
}
|
||||
table = c.QuotePrefixTableName(table)
|
||||
return c.db.DoDeleteSQL(ctx, link, table, condition, args...)
|
||||
}
|
||||
|
||||
// DoDeleteSQL Adapt to difference in different drives
|
||||
// For example, Clickhouse's delete
|
||||
func (c *Core) DoDeleteSQL(ctx context.Context, link Link, table string, condition interface{}, args ...interface{}) (result sql.Result, err error) {
|
||||
return c.db.DoExec(ctx, link, fmt.Sprintf("DELETE FROM %s%s", table, condition), args...)
|
||||
}
|
||||
|
||||
|
||||
@ -49,8 +49,6 @@ type ConfigNode struct {
|
||||
DeletedAt string `json:"deletedAt"` // (Optional) The filed name of table for automatic-filled updated datetime.
|
||||
TimeMaintainDisabled bool `json:"timeMaintainDisabled"` // (Optional) Disable the automatic time maintaining feature.
|
||||
Compress bool `json:"compress"` // (Optional,only Clickhouse) enable lz4 compression
|
||||
Secure bool `json:"secure"` // (Optional,only Clickhouse) establish secure connection
|
||||
SkipVerify bool `json:"skipVerify"` // (Optional,only Clickhouse) skip certificate verification
|
||||
}
|
||||
|
||||
const (
|
||||
|
||||
@ -11,6 +11,9 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"github.com/gogf/gf/v2"
|
||||
"github.com/gogf/gf/v2/container/gvar"
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
@ -18,8 +21,6 @@ import (
|
||||
"github.com/gogf/gf/v2/internal/intlog"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/util/guid"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
)
|
||||
|
||||
// Query commits one query SQL to underlying driver and returns the execution result.
|
||||
@ -210,7 +211,7 @@ func (c *Core) DoCommit(ctx context.Context, in DoCommitInput) (out DoCommitOutp
|
||||
}
|
||||
// Result handling.
|
||||
switch {
|
||||
case sqlResult != nil:
|
||||
case sqlResult != nil && !in.IsIgnoreResult:
|
||||
rowsAffected, err = sqlResult.RowsAffected()
|
||||
out.Result = sqlResult
|
||||
|
||||
|
||||
Reference in New Issue
Block a user