Skip to content

Commit 367c48c

Browse files
committed
Merge branch 'release/0.11.1'
2 parents 495e28a + e516f5e commit 367c48c

File tree

7 files changed

+110
-38
lines changed

7 files changed

+110
-38
lines changed

Makefile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ build:
1313

1414
zbuild:
1515
make build
16-
cd bin; 7zr a -mx9 -t7z ws4sqlite-v0.11.0-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m`.7z ws4sqlite
16+
cd bin; 7zr a -mx9 -t7z ws4sqlite-v0.11.1-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m`.7z ws4sqlite
1717

1818
build-nostatic:
1919
make build-prepare
@@ -22,7 +22,7 @@ build-nostatic:
2222

2323
zbuild-nostatic:
2424
make build-nostatic
25-
cd bin; 7zr a -mx9 -t7z ws4sqlite-v0.11.0-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m`.7z ws4sqlite
25+
cd bin; 7zr a -mx9 -t7z ws4sqlite-v0.11.1-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m`.7z ws4sqlite
2626

2727
do-test:
2828
cd src; go test -v -timeout 5m
@@ -33,19 +33,19 @@ docker:
3333
docker-publish:
3434
make docker
3535
sudo docker image tag local_ws4sqlite:latest germanorizzo/ws4sqlite:latest
36-
sudo docker image tag local_ws4sqlite:latest germanorizzo/ws4sqlite:v0.11.0
36+
sudo docker image tag local_ws4sqlite:latest germanorizzo/ws4sqlite:v0.11.1
3737
sudo docker push germanorizzo/ws4sqlite:latest
38-
sudo docker push germanorizzo/ws4sqlite:v0.11.0
38+
sudo docker push germanorizzo/ws4sqlite:v0.11.1
3939
sudo docker rmi local_ws4sqlite:latest
4040
sudo docker rmi germanorizzo/ws4sqlite:latest
41-
sudo docker rmi germanorizzo/ws4sqlite:v0.11.0
41+
sudo docker rmi germanorizzo/ws4sqlite:v0.11.1
4242

4343
docker-publish-arm:
4444
make docker
4545
sudo docker image tag local_ws4sqlite:latest germanorizzo/ws4sqlite:latest-arm
46-
sudo docker image tag local_ws4sqlite:latest germanorizzo/ws4sqlite:v0.11.0-arm
46+
sudo docker image tag local_ws4sqlite:latest germanorizzo/ws4sqlite:v0.11.1-arm
4747
sudo docker push germanorizzo/ws4sqlite:latest-arm
48-
sudo docker push germanorizzo/ws4sqlite:v0.11.0-arm
48+
sudo docker push germanorizzo/ws4sqlite:v0.11.1-arm
4949
sudo docker rmi local_ws4sqlite:latest
5050
sudo docker rmi germanorizzo/ws4sqlite:latest-arm
51-
sudo docker rmi germanorizzo/ws4sqlite:v0.11.0-arm
51+
sudo docker rmi germanorizzo/ws4sqlite:v0.11.1-arm

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Obtaining an answer of
6767
- Provide [**initialization statements**](https://germ.gitbook.io/ws4sqlite/documentation/configuration-file#initstatements) to execute when a DB is created;
6868
- [**WAL**](https://sqlite.org/wal.html) mode enabled by default, can be [disabled](https://germ.gitbook.io/ws4sqlite/documentation/configuration-file#disablewalmode);
6969
- [Quite fast](features/performances.md)!
70-
- Compact codebase (~850 lines of code);
70+
- Compact codebase (~900 lines of code);
7171
- Comprehensive test suite (`make do-test`);
7272
- [**Docker images**](https://germ.gitbook.io/ws4sqlite/documentation/installation/docker), both for amd64 and arm32.
7373

src/go.mod

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
module ws4sqlite
1+
module github.com/proofrock/ws4sqlite
22

33
go 1.17
44

55
require (
6-
github.com/gofiber/fiber/v2 v2.26.0
6+
github.com/gofiber/fiber/v2 v2.28.0
77
github.com/lnquy/cron v1.1.1
8-
github.com/mattn/go-sqlite3 v1.14.10
8+
github.com/mattn/go-sqlite3 v1.14.12
99
github.com/mitchellh/go-homedir v1.1.0
1010
github.com/proofrock/crypgo v1.0.0
11-
github.com/proofrock/go-mylittlelogger v0.4.0-rc2
11+
github.com/proofrock/go-mylittlelogger v0.4.0
1212
github.com/robfig/cron/v3 v3.0.1
1313
github.com/wI2L/jettison v0.7.3
1414
gopkg.in/yaml.v2 v2.4.0
@@ -17,11 +17,11 @@ require (
1717
require (
1818
github.com/DataDog/zstd v1.5.0 // indirect
1919
github.com/andybalholm/brotli v1.0.4 // indirect
20-
github.com/klauspost/compress v1.14.1 // indirect
20+
github.com/klauspost/compress v1.14.4 // indirect
2121
github.com/valyala/bytebufferpool v1.0.0 // indirect
22-
github.com/valyala/fasthttp v1.32.0 // indirect
22+
github.com/valyala/fasthttp v1.33.0 // indirect
2323
github.com/valyala/tcplisten v1.0.0 // indirect
24-
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce // indirect
25-
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 // indirect
24+
golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect
25+
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 // indirect
2626
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
2727
)

src/go.sum

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo=
22
github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
3-
github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
43
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
54
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
65
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
76
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
8-
github.com/gofiber/fiber/v2 v2.26.0 h1:Awnfqp3fqbZzV3wZWMRJ6Xo2U8X0Ls68M7tXjx52NcM=
9-
github.com/gofiber/fiber/v2 v2.26.0/go.mod h1:7efVWcBOZi1PyMWznnbitjnARPA7nYZxmQXJVod0bo0=
10-
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
7+
github.com/gofiber/fiber/v2 v2.28.0 h1:EgoqkUhBad4MPN5mBEBRO9avRqjdNkWq0sApNXdatr8=
8+
github.com/gofiber/fiber/v2 v2.28.0/go.mod h1:0bPXdTu+jRqINrEq1T6mHeVBnE0lQd67PGu35jD3hLk=
119
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
1210
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
1311
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
14-
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
15-
github.com/klauspost/compress v1.14.1 h1:hLQYb23E8/fO+1u53d02A97a8UnsddcvYzq4ERRU4ds=
1612
github.com/klauspost/compress v1.14.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
13+
github.com/klauspost/compress v1.14.4 h1:eijASRJcobkVtSt81Olfh7JX43osYLwy5krOJo6YEu4=
14+
github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
1715
github.com/klauspost/cpuid/v2 v2.0.5/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
1816
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
1917
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
@@ -24,8 +22,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
2422
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
2523
github.com/lnquy/cron v1.1.1 h1:iaDX1ublgQ9LBhA8l9BVU+FrTE1PPSPAuvAdhgdnXgA=
2624
github.com/lnquy/cron v1.1.1/go.mod h1:hu2Y7H68/8oKk6T4+K4qdbopbnaP4rGltK3ylWiiDss=
27-
github.com/mattn/go-sqlite3 v1.14.10 h1:MLn+5bFRlWMGoSRmJour3CL1w/qL96mvipqpwQW/Sfk=
28-
github.com/mattn/go-sqlite3 v1.14.10/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
25+
github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
26+
github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
2927
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
3028
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
3129
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -37,8 +35,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
3735
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3836
github.com/proofrock/crypgo v1.0.0 h1:e+6D7iPoAPZRBSslYJnNHwsPKPxlLTSxeYhRWN2LxNk=
3937
github.com/proofrock/crypgo v1.0.0/go.mod h1:7RWnXdaFxGorG4GmWUSuFEThGqphM6aHIxIt/wJ+uOw=
40-
github.com/proofrock/go-mylittlelogger v0.4.0-rc2 h1:CqxW0Wa7YgVP8RkayAzdqY1XcONOxN91JGLFCKkC5Dk=
41-
github.com/proofrock/go-mylittlelogger v0.4.0-rc2/go.mod h1:XYdRJNt34V6ze+LNzFAGjWB27M1dfsYPoMcgCPBwugg=
38+
github.com/proofrock/go-mylittlelogger v0.4.0 h1:nroZv7+Y9iQQn+wfh00GVqxiaXXCZR9xH2ErInIfAMM=
39+
github.com/proofrock/go-mylittlelogger v0.4.0/go.mod h1:XYdRJNt34V6ze+LNzFAGjWB27M1dfsYPoMcgCPBwugg=
4240
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
4341
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
4442
github.com/segmentio/encoding v0.2.19 h1:Kshkmoz080qvUtdtakR8Bjk2sIlLS8wSvijFMEHRGow=
@@ -48,27 +46,26 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
4846
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
4947
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
5048
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
51-
github.com/valyala/fasthttp v1.32.0 h1:keswgWzyKyNIIjz2a7JmCYHOOIkRp6HMx9oTV6QrZWY=
52-
github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
49+
github.com/valyala/fasthttp v1.33.0 h1:mHBKd98J5NcXuBddgjvim1i3kWzlng1SzLhrnBOU9g8=
50+
github.com/valyala/fasthttp v1.33.0/go.mod h1:KJRK/MXx0J+yd0c5hlR+s1tIHD72sniU8ZJjl97LIw4=
5351
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
5452
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
5553
github.com/wI2L/jettison v0.7.3 h1:xvcEkxZap0X36Q/D2Vxe8XenI09TDrTo6XEOkWpjcDU=
5654
github.com/wI2L/jettison v0.7.3/go.mod h1:W3PPso417OeZeWs9nV/olfapp0o4eSZcaeZk4HeSzfM=
57-
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
58-
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce h1:Roh6XWxHFKrPgC/EQhVubSAGQ6Ozk6IdxHSzt1mR0EI=
5955
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
60-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
61-
golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
56+
golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE=
57+
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
6258
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
59+
golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
6360
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6461
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
65-
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6662
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
67-
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
68-
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
63+
golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
64+
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs=
65+
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6966
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
70-
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
7167
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
68+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
7269
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
7370
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7471
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=

src/web_service.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,19 @@ func processForExecBatch(tx *sql.Tx, q string, valuesBatch []map[string]interfac
196196
return &responseItem{true, nil, rowsUpdatedBatch, nil, ""}, nil
197197
}
198198

199+
func ckSQL(sql string) string {
200+
if strings.HasPrefix(strings.ToUpper(sql), "BEGIN") {
201+
return "BEGIN is not allowed"
202+
}
203+
if strings.HasPrefix(strings.ToUpper(sql), "COMMIT") {
204+
return "COMMIT is not allowed"
205+
}
206+
if strings.HasPrefix(strings.ToUpper(sql), "ROLLBACK") {
207+
return "ROLLBACK is not allowed"
208+
}
209+
return ""
210+
}
211+
199212
// Handler for the POST. Receives the body of the HTTP request, parses it
200213
// and executes the transaction on the database retrieved from the URL path.
201214
// Constructs and sends the response.
@@ -291,6 +304,12 @@ func handler(c *fiber.Ctx) error {
291304
sql = txItem.Statement
292305
}
293306

307+
// Sanitize: BEGIN, COMMIT and ROLLBACK aren't allowed
308+
if errStr := ckSQL(sql); errStr != "" {
309+
reportError(errors.New("errStr"), fiber.StatusBadRequest, i, txItem.NoFail, ret.Results)
310+
continue
311+
}
312+
294313
// Processes a stored statement
295314
if strings.HasPrefix(sql, "#") {
296315
var ok bool

src/ws4sqlite.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535
_ "github.com/mattn/go-sqlite3"
3636
)
3737

38-
const version = "0.11.0"
38+
const version = "0.11.1"
3939

4040
// Simply prints an header, parses the cli parameters and calls
4141
// launch(), that is the real entry point. It's separate from the

src/ws4sqlite_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1222,3 +1222,59 @@ func TestUnicode(t *testing.T) {
12221222

12231223
Shutdown()
12241224
}
1225+
1226+
func TestFailBegin(t *testing.T) {
1227+
cfg := config{
1228+
Bindhost: "0.0.0.0",
1229+
Port: 12321,
1230+
Databases: []db{
1231+
{
1232+
Id: "test1",
1233+
Path: ":memory:",
1234+
InitStatements: []string{
1235+
"CREATE TABLE T (TXT TEXT)",
1236+
},
1237+
},
1238+
},
1239+
}
1240+
1241+
go launch(cfg, true)
1242+
1243+
time.Sleep(time.Second)
1244+
1245+
req := request{
1246+
Transaction: []requestItem{
1247+
{
1248+
NoFail: true,
1249+
Statement: "BEGIN",
1250+
},
1251+
{
1252+
NoFail: true,
1253+
Statement: "COMMIT",
1254+
},
1255+
{
1256+
NoFail: true,
1257+
Statement: "ROLLBACK",
1258+
},
1259+
},
1260+
}
1261+
1262+
code, _, res := call("test1", req, t)
1263+
if code != 200 {
1264+
t.Error("request failed, but shouldn't have")
1265+
}
1266+
1267+
if res.Results[0].Success {
1268+
t.Error("BEGIN succeeds, but shouldn't have")
1269+
}
1270+
if res.Results[1].Success {
1271+
t.Error("COMMIT succeeds, but shouldn't have")
1272+
}
1273+
if res.Results[2].Success {
1274+
t.Error("ROLLBACK succeeds, but shouldn't have")
1275+
}
1276+
1277+
time.Sleep(time.Second)
1278+
1279+
Shutdown()
1280+
}

0 commit comments

Comments
 (0)