mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-15 00:36:08 +08:00
fix: add read-in-order config (#4918)
This commit is contained in:
parent
967aa16f21
commit
3957d91a9b
@ -163,12 +163,24 @@ func NewReaderFromClickhouseConnection(
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regex := os.Getenv("ClickHouseOptimizeReadInOrderRegex")
|
||||||
|
var regexCompiled *regexp.Regexp
|
||||||
|
if regex != "" {
|
||||||
|
regexCompiled, err = regexp.Compile(regex)
|
||||||
|
if err != nil {
|
||||||
|
zap.L().Error("Incorrect regex for ClickHouseOptimizeReadInOrderRegex")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wrap := clickhouseConnWrapper{
|
wrap := clickhouseConnWrapper{
|
||||||
conn: db,
|
conn: db,
|
||||||
settings: ClickhouseQuerySettings{
|
settings: ClickhouseQuerySettings{
|
||||||
MaxExecutionTimeLeaf: os.Getenv("ClickHouseMaxExecutionTimeLeaf"),
|
MaxExecutionTimeLeaf: os.Getenv("ClickHouseMaxExecutionTimeLeaf"),
|
||||||
TimeoutBeforeCheckingExecutionSpeed: os.Getenv("ClickHouseTimeoutBeforeCheckingExecutionSpeed"),
|
TimeoutBeforeCheckingExecutionSpeed: os.Getenv("ClickHouseTimeoutBeforeCheckingExecutionSpeed"),
|
||||||
MaxBytesToRead: os.Getenv("ClickHouseMaxBytesToRead"),
|
MaxBytesToRead: os.Getenv("ClickHouseMaxBytesToRead"),
|
||||||
|
OptimizeReadInOrderRegex: os.Getenv("ClickHouseOptimizeReadInOrderRegex"),
|
||||||
|
OptimizeReadInOrderRegexCompiled: regexCompiled,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package clickhouseReader
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ClickHouse/clickhouse-go/v2"
|
"github.com/ClickHouse/clickhouse-go/v2"
|
||||||
@ -13,6 +14,8 @@ type ClickhouseQuerySettings struct {
|
|||||||
MaxExecutionTimeLeaf string
|
MaxExecutionTimeLeaf string
|
||||||
TimeoutBeforeCheckingExecutionSpeed string
|
TimeoutBeforeCheckingExecutionSpeed string
|
||||||
MaxBytesToRead string
|
MaxBytesToRead string
|
||||||
|
OptimizeReadInOrderRegex string
|
||||||
|
OptimizeReadInOrderRegexCompiled *regexp.Regexp
|
||||||
}
|
}
|
||||||
|
|
||||||
type clickhouseConnWrapper struct {
|
type clickhouseConnWrapper struct {
|
||||||
@ -58,6 +61,11 @@ func (c clickhouseConnWrapper) addClickHouseSettings(ctx context.Context, query
|
|||||||
settings["timeout_before_checking_execution_speed"] = c.settings.TimeoutBeforeCheckingExecutionSpeed
|
settings["timeout_before_checking_execution_speed"] = c.settings.TimeoutBeforeCheckingExecutionSpeed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// only list queries of
|
||||||
|
if c.settings.OptimizeReadInOrderRegex != "" && c.settings.OptimizeReadInOrderRegexCompiled.Match([]byte(query)) {
|
||||||
|
settings["optimize_read_in_order"] = 0
|
||||||
|
}
|
||||||
|
|
||||||
ctx = clickhouse.Context(ctx, clickhouse.WithSettings(settings))
|
ctx = clickhouse.Context(ctx, clickhouse.WithSettings(settings))
|
||||||
return ctx
|
return ctx
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user