@@ -29,6 +29,15 @@ const (
29
29
createTable2 = `create table %s (a string);`
30
30
)
31
31
32
+ var (
33
+ dsn = "http://databend:databend@localhost:8000?presigned_url_disabled=true"
34
+ )
35
+
36
+ func init () {
37
+ dsn = os .Getenv ("TEST_DATABEND_DSN" )
38
+ //dsn = "http://databend:databend@localhost:8000?presigned_url_disabled=true"
39
+ }
40
+
32
41
func TestDatabendSuite (t * testing.T ) {
33
42
suite .Run (t , new (DatabendTestSuite ))
34
43
}
@@ -44,7 +53,6 @@ type DatabendTestSuite struct {
44
53
func (s * DatabendTestSuite ) SetupSuite () {
45
54
var err error
46
55
47
- dsn := os .Getenv ("TEST_DATABEND_DSN" )
48
56
s .NotEmpty (dsn )
49
57
s .db , err = sql .Open ("databend" , dsn )
50
58
s .Nil (err )
@@ -80,6 +88,7 @@ func (s *DatabendTestSuite) SetupTest() {
80
88
81
89
func (s * DatabendTestSuite ) TearDownTest () {
82
90
// t := s.T()
91
+ s .SetupSuite ()
83
92
84
93
// t.Logf("teardown test with table %s", s.table)
85
94
_ , err := s .db .Exec (fmt .Sprintf ("DROP TABLE %s" , s .table ))
@@ -251,6 +260,52 @@ func (s *DatabendTestSuite) TestQueryNull() {
251
260
s .r .NoError (rows .Close ())
252
261
}
253
262
263
+ func (s * DatabendTestSuite ) TestTransactionCommit () {
264
+ tx , err := s .db .Begin ()
265
+ s .r .Nil (err )
266
+
267
+ _ , err = tx .Exec (fmt .Sprintf ("INSERT INTO %s (i64) VALUES (?)" , s .table ), int64 (1 ))
268
+ s .r .Nil (err )
269
+
270
+ err = tx .Commit ()
271
+ s .r .Nil (err )
272
+
273
+ rows , err := s .db .Query (fmt .Sprintf ("SELECT * FROM %s" , s .table ))
274
+ s .r .Nil (err )
275
+
276
+ result , err := scanValues (rows )
277
+ s .r .Nil (err )
278
+ s .r .Equal ([][]interface {}{[]interface {}{"1" , "NULL" , "NULL" , "NULL" , "NULL" , "NULL" , "NULL" , "NULL" , "NULL" }}, result )
279
+
280
+ s .r .NoError (rows .Close ())
281
+ }
282
+
283
+ func (s * DatabendTestSuite ) TestTransactionRollback () {
284
+ tx , err := s .db .Begin ()
285
+ s .r .Nil (err )
286
+
287
+ _ , err = tx .Exec (fmt .Sprintf ("INSERT INTO %s (i64) VALUES (?)" , s .table ), int64 (1 ))
288
+ s .r .Nil (err )
289
+ rows , err := s .db .Query (fmt .Sprintf ("SELECT * FROM %s" , s .table ))
290
+ s .r .Nil (err )
291
+
292
+ result , err := scanValues (rows )
293
+ s .r .Nil (err )
294
+ s .r .Equal ([][]interface {}(nil ), result )
295
+
296
+ err = tx .Rollback ()
297
+ s .r .Nil (err )
298
+
299
+ rows , err = s .db .Query (fmt .Sprintf ("SELECT * FROM %s" , s .table ))
300
+ s .r .Nil (err )
301
+
302
+ result , err = scanValues (rows )
303
+ s .r .Nil (err )
304
+ s .r .Empty (result )
305
+
306
+ s .r .NoError (rows .Close ())
307
+ }
308
+
254
309
func scanValues (rows * sql.Rows ) (interface {}, error ) {
255
310
var err error
256
311
var result [][]interface {}
0 commit comments