@@ -16,11 +16,13 @@ package loadremotetest
16
16
17
17
import (
18
18
"bytes"
19
+ "compress/gzip"
19
20
"fmt"
20
21
"strconv"
21
22
22
23
"github.com/fsouza/fake-gcs-server/fakestorage"
23
24
"github.com/pingcap/tidb/testkit"
25
+ "github.com/stretchr/testify/require"
24
26
)
25
27
26
28
func (s * mockGCSSuite ) TestFilenameAsterisk () {
@@ -131,3 +133,41 @@ func (s *mockGCSSuite) TestMultiBatchWithIgnoreLines() {
131
133
"13" , "14" , "15" , "16" , "17" , "18" , "19" , "20" ,
132
134
))
133
135
}
136
+
137
+ func (s * mockGCSSuite ) TestMixedCompression () {
138
+ s .tk .MustExec ("DROP DATABASE IF EXISTS multi_load;" )
139
+ s .tk .MustExec ("CREATE DATABASE multi_load;" )
140
+ s .tk .MustExec ("CREATE TABLE multi_load.t (i INT PRIMARY KEY, s varchar(32));" )
141
+
142
+ // gzip content
143
+ var buf bytes.Buffer
144
+ w := gzip .NewWriter (& buf )
145
+ _ , err := w .Write ([]byte ("1\t test1\n " +
146
+ "2\t test2" ))
147
+ require .NoError (s .T (), err )
148
+ err = w .Close ()
149
+ require .NoError (s .T (), err )
150
+
151
+ s .server .CreateObject (fakestorage.Object {
152
+ ObjectAttrs : fakestorage.ObjectAttrs {
153
+ BucketName : "test-multi-load" ,
154
+ Name : "compress.001.tsv.gz" ,
155
+ },
156
+ Content : buf .Bytes (),
157
+ })
158
+ s .server .CreateObject (fakestorage.Object {
159
+ ObjectAttrs : fakestorage.ObjectAttrs {
160
+ BucketName : "test-multi-load" ,
161
+ Name : "compress.002.tsv" ,
162
+ },
163
+ Content : []byte ("3\t test3\n " +
164
+ "4\t test4" ),
165
+ })
166
+
167
+ sql := fmt .Sprintf (`LOAD DATA INFILE 'gs://test-multi-load/compress.*?endpoint=%s'
168
+ INTO TABLE multi_load.t WITH thread=1;` , gcsEndpoint )
169
+ s .tk .MustExec (sql )
170
+ s .tk .MustQuery ("SELECT * FROM multi_load.t;" ).Check (testkit .Rows (
171
+ "1 test1" , "2 test2" , "3 test3" , "4 test4" ,
172
+ ))
173
+ }
0 commit comments