Skip to content

Commit e7e53a6

Browse files
authored
build: optional pure-go sqlite driver (#3908)
* build: optional pure-go sqlite driver * fix GO_TAGS * fix function * build: make db drivers optional * wip * make lint: run golangci-lint for windows files * note
1 parent 2f5f8c5 commit e7e53a6

File tree

12 files changed

+169
-26
lines changed

12 files changed

+169
-26
lines changed

.golangci.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
version: "2"
22

3+
# To lint the windows sources on a linux host, you need to cross-build and
4+
# disable the C-based sqlite driver:
5+
#
6+
# GOOS=windows golangci-lint run --build-tags=windows,sqlite_modernc
7+
#
8+
# In the CI, the linters are run on both linux and windows hosts.
9+
310
run:
411
build-tags:
512
- expr_debug

Makefile

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,27 @@ include mk/gmsl
1515
# (including cscli) so it is not recommended for production use.
1616
BUILD_RE2_WASM ?= 0
1717

18+
#expr_debug tag is required to enable the debug mode in expr
19+
GO_TAGS := netgo,osusergo,expr_debug
20+
21+
# By default, build with sqlite3.
22+
BUILD_SQLITE ?= mattn
23+
SQLITE_MSG = Using mattn/go-sqlite3
24+
25+
# Optionally, use a pure Go implementation of sqlite.
26+
ifeq ($(BUILD_SQLITE),modernc)
27+
SQLITE_MSG = Using modernc/sqlite
28+
GO_TAGS := $(GO_TAGS),sqlite_modernc
29+
$(info NOTE: The 'modernc' backend for SQLite is slower than the default, has not been extensively tested, and is not meant for production use.)
30+
else
31+
ifeq ($(BUILD_SQLITE),mattn)
32+
SQLITE_MSG = Using mattn/go-sqlite3
33+
GO_TAGS := $(GO_TAGS),sqlite_omit_load_extension
34+
else
35+
$(error BUILD_SQLITE must be 'mattn' or 'modernc')
36+
endif
37+
endif
38+
1839
# To build static binaries, run "make BUILD_STATIC=1".
1940
# On some platforms, this requires additional packages
2041
# (e.g. glibc-static and libstdc++-static on fedora, centos.. which are on the powertools/crb repository).
@@ -87,9 +108,6 @@ $(info Note that the DEV environment is slow, unreliable and may fail at any tim
87108
$(info )
88109
endif
89110

90-
#expr_debug tag is required to enable the debug mode in expr
91-
GO_TAGS := netgo,osusergo,sqlite_omit_load_extension,expr_debug
92-
93111
# Allow building on ubuntu 24.10, see https://github.com/golang/go/issues/70023
94112
export CGO_LDFLAGS_ALLOW=-Wl,--(push|pop)-state.*
95113

@@ -152,15 +170,21 @@ COMPONENTS := \
152170
datasource_s3 \
153171
datasource_syslog \
154172
datasource_wineventlog \
155-
cscli_setup
173+
cscli_setup \
174+
db_mysql \
175+
db_postgres \
176+
db_sqlite
156177

157178
comma := ,
158179
space := $(empty) $(empty)
159180

160181
# Predefined profiles
161182

162-
# keep only datasource-file
163-
EXCLUDE_MINIMAL := $(subst $(space),$(comma),$(filter-out datasource_file,,$(COMPONENTS)))
183+
# What we want to KEEP in the minimal build,
184+
# which should always include at least one data source and a sql driver.
185+
INCLUDE_MINIMAL := db_sqlite datasource_file
186+
187+
EXCLUDE_MINIMAL := $(filter-out $(INCLUDE_MINIMAL),$(strip $(COMPONENTS)))
164188

165189
# example
166190
# EXCLUDE_MEDIUM := datasource_kafka,datasource_kinesis,datasource_s3
@@ -230,6 +254,7 @@ ifneq (,$(RE2_FAIL))
230254
endif
231255

232256
$(info $(RE2_MSG))
257+
$(info $(SQLITE_MSG))
233258

234259
ifeq ($(call bool,$(DEBUG)),1)
235260
$(info Building with debug symbols and disabled optimizations)
@@ -331,8 +356,9 @@ else
331356
endif
332357

333358
.PHONY: lint
334-
lint: check_golangci-lint ## Run go linters
335-
@golangci-lint run
359+
lint: check_golangci-lint ## Run go linters for both linux and windows files.
360+
GOOS=windows golangci-lint run --build-tags=windows,sqlite_modernc
361+
GOOS=linux golangci-lint run
336362

337363
check_docker:
338364
@if ! docker info > /dev/null 2>&1; then \

go.mod

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ require (
9797
gopkg.in/yaml.v2 v2.4.0
9898
gopkg.in/yaml.v3 v3.0.1
9999
k8s.io/apiserver v0.28.4
100+
modernc.org/sqlite v1.39.0
100101
)
101102

102103
require (
@@ -130,6 +131,7 @@ require (
130131
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
131132
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
132133
github.com/creack/pty v1.1.21 // indirect
134+
github.com/dustin/go-humanize v1.0.1 // indirect
133135
github.com/ebitengine/purego v0.8.4 // indirect
134136
github.com/felixge/httpsnoop v1.0.4 // indirect
135137
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
@@ -186,6 +188,7 @@ require (
186188
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
187189
github.com/modern-go/reflect2 v1.0.2 // indirect
188190
github.com/morikuni/aec v1.0.0 // indirect
191+
github.com/ncruces/go-strftime v0.1.9 // indirect
189192
github.com/oklog/run v1.0.0 // indirect
190193
github.com/oklog/ulid v1.3.1 // indirect
191194
github.com/opencontainers/go-digest v1.0.0 // indirect
@@ -197,6 +200,7 @@ require (
197200
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
198201
github.com/prometheus/common v0.44.0 // indirect
199202
github.com/prometheus/procfs v0.15.1 // indirect
203+
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
200204
github.com/rivo/uniseg v0.4.7 // indirect
201205
github.com/robfig/cron/v3 v3.0.1 // indirect
202206
github.com/russross/blackfriday/v2 v2.1.0 // indirect
@@ -229,6 +233,7 @@ require (
229233
go.opentelemetry.io/otel/trace v1.36.0 // indirect
230234
go.uber.org/atomic v1.10.0 // indirect
231235
golang.org/x/arch v0.15.0 // indirect
236+
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect
232237
golang.org/x/term v0.35.0 // indirect
233238
golang.org/x/tools v0.37.0 // indirect
234239
google.golang.org/appengine v1.6.8 // indirect
@@ -240,6 +245,9 @@ require (
240245
k8s.io/apimachinery v0.28.4 // indirect
241246
k8s.io/klog/v2 v2.100.1 // indirect
242247
k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
248+
modernc.org/libc v1.66.3 // indirect
249+
modernc.org/mathutil v1.7.1 // indirect
250+
modernc.org/memory v1.11.0 // indirect
243251
rsc.io/binaryregexp v0.2.0 // indirect
244252
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
245253
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect

go.sum

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj
163163
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
164164
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
165165
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
166+
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
167+
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
166168
github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw=
167169
github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
168170
github.com/expr-lang/expr v1.17.2 h1:o0A99O/Px+/DTjEnQiodAgOIK9PPxL8DtXhBRKC+Iso=
@@ -268,6 +270,8 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17
268270
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
269271
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
270272
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
273+
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=
274+
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
271275
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
272276
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
273277
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -461,6 +465,8 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd
461465
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
462466
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
463467
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
468+
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
469+
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
464470
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
465471
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
466472
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
@@ -514,6 +520,8 @@ github.com/prometheus/prom2json v1.3.0 h1:BlqrtbT9lLH3ZsOVhXPsHzFrApCTKRifB7gjJu
514520
github.com/prometheus/prom2json v1.3.0/go.mod h1:rMN7m0ApCowcoDlypBHlkNbp5eJQf/+1isKykIP5ZnM=
515521
github.com/r3labs/diff/v2 v2.15.1 h1:EOrVqPUzi+njlumoqJwiS/TgGgmZo83619FNDB9xQUg=
516522
github.com/r3labs/diff/v2 v2.15.1/go.mod h1:I8noH9Fc2fjSaMxqF3G2lhDdC0b+JXCfyx85tWFM9kc=
523+
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
524+
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
517525
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
518526
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
519527
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
@@ -687,6 +695,8 @@ golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4
687695
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
688696
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
689697
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
698+
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
699+
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
690700
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
691701
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
692702
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
@@ -849,6 +859,32 @@ k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
849859
k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
850860
k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk=
851861
k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
862+
modernc.org/cc/v4 v4.26.2 h1:991HMkLjJzYBIfha6ECZdjrIYz2/1ayr+FL8GN+CNzM=
863+
modernc.org/cc/v4 v4.26.2/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=
864+
modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU=
865+
modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE=
866+
modernc.org/fileutil v1.3.8 h1:qtzNm7ED75pd1C7WgAGcK4edm4fvhtBsEiI/0NQ54YM=
867+
modernc.org/fileutil v1.3.8/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=
868+
modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=
869+
modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=
870+
modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=
871+
modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=
872+
modernc.org/libc v1.66.3 h1:cfCbjTUcdsKyyZZfEUKfoHcP3S0Wkvz3jgSzByEWVCQ=
873+
modernc.org/libc v1.66.3/go.mod h1:XD9zO8kt59cANKvHPXpx7yS2ELPheAey0vjIuZOhOU8=
874+
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
875+
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
876+
modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
877+
modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=
878+
modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=
879+
modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
880+
modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
881+
modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
882+
modernc.org/sqlite v1.39.0 h1:6bwu9Ooim0yVYA7IZn9demiQk/Ejp0BtTjBWFLymSeY=
883+
modernc.org/sqlite v1.39.0/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E=
884+
modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
885+
modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
886+
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
887+
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
852888
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
853889
rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
854890
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=

pkg/csconfig/database.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,10 @@ func (d *DatabaseCfg) ConnectionString() (string, error) {
130130

131131
switch d.Type {
132132
case "sqlite":
133-
var sqliteConnectionStringParameters string
133+
// this should make both sqlite3 and modernc/sqlite happy.
134+
sqliteConnectionStringParameters := "_busy_timeout=100000&_fk=1&_pragma=foreign_keys(1)"
134135
if d.UseWal != nil && *d.UseWal {
135-
sqliteConnectionStringParameters = "_busy_timeout=100000&_fk=1&_journal_mode=WAL"
136-
} else {
137-
sqliteConnectionStringParameters = "_busy_timeout=100000&_fk=1"
136+
sqliteConnectionStringParameters += "&_journal_mode=WAL"
138137
}
139138

140139
connString = fmt.Sprintf("file:%s?%s", d.DbPath, sqliteConnectionStringParameters)

pkg/cwversion/component/component.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ var Built = map[string]bool{
2121
"datasource_syslog": false,
2222
"datasource_wineventlog": false,
2323
"datasource_victorialogs": false,
24-
"datasource_http": false,
24+
"datasource_http": false,
2525
"cscli_setup": false,
26+
"db_mysql": false,
27+
"db_postgres": false,
28+
"db_sqlite": false,
2629
}
2730

2831
func Register(name string) {

pkg/database/alerts.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"strings"
1010
"time"
1111

12-
"github.com/mattn/go-sqlite3"
1312
"github.com/pkg/errors"
1413
log "github.com/sirupsen/logrus"
1514

@@ -575,14 +574,7 @@ func retryOnBusy(fn func() error) error {
575574
return nil
576575
}
577576

578-
var sqliteErr sqlite3.Error
579-
if errors.As(err, &sqliteErr) && sqliteErr.Code == sqlite3.ErrBusy {
580-
// sqlite3.Error{
581-
// Code: 5,
582-
// ExtendedCode: 5,
583-
// SystemErrno: 0,
584-
// err: "database is locked",
585-
// }
577+
if IsSqliteBusyError(err) {
586578
log.Warningf("while updating decisions, sqlite3.ErrBusy: %s, retry %d of %d", err, retry, maxLockRetries)
587579
time.Sleep(1 * time.Second)
588580

pkg/database/database.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ import (
88
"os"
99

1010
entsql "entgo.io/ent/dialect/sql"
11-
// load database backends
12-
_ "github.com/go-sql-driver/mysql"
13-
_ "github.com/jackc/pgx/v4/stdlib"
14-
_ "github.com/mattn/go-sqlite3"
1511
log "github.com/sirupsen/logrus"
1612

1713
"github.com/crowdsecurity/crowdsec/pkg/csconfig"
@@ -86,6 +82,7 @@ func NewClient(ctx context.Context, config *csconfig.DatabaseCfg) (*Client, erro
8682
if err != nil {
8783
return nil, fmt.Errorf("failed to generate DB connection string: %w", err)
8884
}
85+
8986
drv, err := getEntDriver(typ, dia, dbConnectionString, config)
9087
if err != nil {
9188
return nil, fmt.Errorf("failed opening connection to %s: %w", config.Type, err)

pkg/database/drv_mysql.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//go:build !no_db_mysql
2+
3+
package database
4+
5+
import (
6+
// register database driver as side effect
7+
_ "github.com/go-sql-driver/mysql"
8+
9+
"github.com/crowdsecurity/crowdsec/pkg/cwversion/component"
10+
)
11+
12+
//nolint:gochecknoinits
13+
func init() {
14+
component.Register("db_mysql")
15+
}

pkg/database/drv_postgres.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//go:build !no_db_postgres
2+
3+
package database
4+
5+
import (
6+
// register database driver as side effect
7+
_ "github.com/jackc/pgx/v4/stdlib"
8+
9+
"github.com/crowdsecurity/crowdsec/pkg/cwversion/component"
10+
)
11+
12+
//nolint:gochecknoinits
13+
func init() {
14+
component.Register("db_postgres")
15+
}

0 commit comments

Comments
 (0)