@@ -275,3 +275,57 @@ func checkData(t *testing.T, path string, client *testServerClient) {
275
275
require .Equal (t , int64 (4 ), count )
276
276
require .NoError (t , rows .Close ())
277
277
}
278
+
279
+ // fix issue 53966
280
+ func TestLoadNullStatsFile (t * testing.T ) {
281
+ // Setting up the mock store
282
+ store := testkit .CreateMockStore (t )
283
+
284
+ // Creating a new TiDB driver and client
285
+ driver := NewTiDBDriver (store )
286
+ client := newTestServerClient ()
287
+ cfg := newTestConfig ()
288
+ cfg .Port = client .port
289
+ cfg .Status .StatusPort = client .statusPort
290
+ cfg .Status .ReportStatus = true
291
+ cfg .Socket = fmt .Sprintf ("/tmp/tidb-mock-%d.sock" , time .Now ().UnixNano ())
292
+ RunInGoTestChan = make (chan struct {})
293
+ server , err := NewServer (cfg , driver )
294
+ require .NoError (t , err )
295
+ defer server .Close ()
296
+ go func () {
297
+ err := server .Run (nil )
298
+ require .NoError (t , err )
299
+ }()
300
+ <- RunInGoTestChan
301
+ client .port = getPortFromTCPAddr (server .listener .Addr ())
302
+ client .statusPort = getPortFromTCPAddr (server .statusListener .Addr ())
303
+ client .waitUntilServerOnline ()
304
+
305
+ // Creating the stats file
306
+ path := "/tmp/stats.json"
307
+ fp , err := os .Create (path )
308
+ require .NoError (t , err )
309
+ require .NotNil (t , fp )
310
+ defer func () {
311
+ require .NoError (t , fp .Close ())
312
+ require .NoError (t , os .Remove (path ))
313
+ }()
314
+ fp .Write ([]byte ("null" ))
315
+ require .NoError (t , err )
316
+
317
+ // Connecting to the database and executing SQL commands
318
+ db , err := sql .Open ("mysql" , client .getDSN (func (config * mysql.Config ) {
319
+ config .AllowAllFiles = true
320
+ config .Params ["sql_mode" ] = "''"
321
+ }))
322
+
323
+ require .NoError (t , err , "Error connecting" )
324
+ tk := testkit .NewDBTestKit (t , db )
325
+ defer func () {
326
+ err := db .Close ()
327
+ require .NoError (t , err )
328
+ }()
329
+ tk .MustExec ("use test" )
330
+ tk .MustExec (fmt .Sprintf ("load stats '%s'" , path ))
331
+ }
0 commit comments