@@ -357,127 +357,135 @@ func TestRead_CanPickRdonlyForShardedKeyspaces(t *testing.T) {
357
357
}
358
358
359
359
func TestDiscover_CanPickRightAirbyteType (t * testing.T ) {
360
+ numberType := "number"
361
+ booleanType := "boolean"
362
+ stringType := "string"
363
+
360
364
var tests = []struct {
361
365
MysqlType string
362
- JSONSchemaType []string
366
+ JSONSchemaType * string
367
+ OneOf []OneOfType
363
368
AirbyteType string
364
369
TreatTinyIntAsBoolean bool
365
370
IsNullable string
366
371
}{
367
372
{
368
373
MysqlType : "int(11)" ,
369
- JSONSchemaType : [] string { "number" } ,
374
+ JSONSchemaType : & numberType ,
370
375
AirbyteType : "integer" ,
371
376
},
372
377
{
373
378
MysqlType : "smallint(4)" ,
374
- JSONSchemaType : [] string { "number" } ,
379
+ JSONSchemaType : & numberType ,
375
380
AirbyteType : "integer" ,
376
381
},
377
382
{
378
383
MysqlType : "mediumint(8)" ,
379
- JSONSchemaType : [] string { "number" } ,
384
+ JSONSchemaType : & numberType ,
380
385
AirbyteType : "integer" ,
381
386
},
382
387
{
383
388
MysqlType : "tinyint" ,
384
- JSONSchemaType : [] string { "number" } ,
389
+ JSONSchemaType : & numberType ,
385
390
AirbyteType : "integer" ,
386
391
TreatTinyIntAsBoolean : true ,
387
392
},
388
393
{
389
394
MysqlType : "tinyint(1)" ,
390
- JSONSchemaType : [] string { "boolean" } ,
395
+ JSONSchemaType : & booleanType ,
391
396
AirbyteType : "" ,
392
397
TreatTinyIntAsBoolean : true ,
393
398
},
394
399
{
395
400
MysqlType : "tinyint(1) unsigned" ,
396
- JSONSchemaType : [] string { "boolean" } ,
401
+ JSONSchemaType : & booleanType ,
397
402
AirbyteType : "" ,
398
403
TreatTinyIntAsBoolean : true ,
399
404
},
400
405
{
401
406
MysqlType : "tinyint(1)" ,
402
- JSONSchemaType : [] string { "number" } ,
407
+ JSONSchemaType : & numberType ,
403
408
AirbyteType : "integer" ,
404
409
TreatTinyIntAsBoolean : false ,
405
410
},
406
411
{
407
412
MysqlType : "tinyint(1) unsigned" ,
408
- JSONSchemaType : [] string { "number" } ,
413
+ JSONSchemaType : & numberType ,
409
414
AirbyteType : "integer" ,
410
415
TreatTinyIntAsBoolean : false ,
411
416
},
412
417
{
413
418
MysqlType : "bigint(16)" ,
414
- JSONSchemaType : [] string { "number" } ,
419
+ JSONSchemaType : & numberType ,
415
420
AirbyteType : "integer" ,
416
421
},
417
422
{
418
423
MysqlType : "bigint unsigned" ,
419
- JSONSchemaType : [] string { "number" } ,
424
+ JSONSchemaType : & numberType ,
420
425
AirbyteType : "integer" ,
421
426
},
422
427
{
423
428
MysqlType : "bigint zerofill" ,
424
- JSONSchemaType : [] string { "number" } ,
429
+ JSONSchemaType : & numberType ,
425
430
AirbyteType : "integer" ,
426
431
},
427
432
{
428
433
MysqlType : "datetime" ,
429
- JSONSchemaType : [] string { "string" } ,
434
+ JSONSchemaType : & stringType ,
430
435
AirbyteType : "timestamp_without_timezone" ,
431
436
},
432
437
{
433
438
MysqlType : "datetime(6)" ,
434
- JSONSchemaType : [] string { "string" } ,
439
+ JSONSchemaType : & stringType ,
435
440
AirbyteType : "timestamp_without_timezone" ,
436
441
},
437
442
{
438
443
MysqlType : "time" ,
439
- JSONSchemaType : [] string { "string" } ,
444
+ JSONSchemaType : & stringType ,
440
445
AirbyteType : "time_without_timezone" ,
441
446
},
442
447
{
443
448
MysqlType : "time(6)" ,
444
- JSONSchemaType : [] string { "string" } ,
449
+ JSONSchemaType : & stringType ,
445
450
AirbyteType : "time_without_timezone" ,
446
451
},
447
452
{
448
453
MysqlType : "date" ,
449
- JSONSchemaType : [] string { "string" } ,
454
+ JSONSchemaType : & stringType ,
450
455
AirbyteType : "date" ,
451
456
},
452
457
{
453
458
MysqlType : "text" ,
454
- JSONSchemaType : [] string { "string" } ,
459
+ JSONSchemaType : & stringType ,
455
460
AirbyteType : "" ,
456
461
},
457
462
{
458
463
MysqlType : "varchar(256)" ,
459
- JSONSchemaType : [] string { "string" } ,
464
+ JSONSchemaType : & stringType ,
460
465
AirbyteType : "" ,
461
466
},
462
467
{
463
- MysqlType : "varchar(256)" ,
464
- JSONSchemaType : []string {"string" , "null" },
465
- AirbyteType : "" ,
466
- IsNullable : "YES" ,
468
+ MysqlType : "varchar(256)" ,
469
+ AirbyteType : "" ,
470
+ IsNullable : "YES" ,
471
+ OneOf : []OneOfType {
472
+ {Type : "string" },
473
+ {Type : "null" },
474
+ },
467
475
},
468
476
{
469
477
MysqlType : "decimal(12,5)" ,
470
- JSONSchemaType : [] string { "number" } ,
478
+ JSONSchemaType : & numberType ,
471
479
AirbyteType : "" ,
472
480
},
473
481
{
474
482
MysqlType : "double" ,
475
- JSONSchemaType : [] string { "number" } ,
483
+ JSONSchemaType : & numberType ,
476
484
AirbyteType : "" ,
477
485
},
478
486
{
479
487
MysqlType : "float(30)" ,
480
- JSONSchemaType : [] string { "number" } ,
488
+ JSONSchemaType : & numberType ,
481
489
AirbyteType : "" ,
482
490
},
483
491
}
@@ -488,6 +496,7 @@ func TestDiscover_CanPickRightAirbyteType(t *testing.T) {
488
496
p := getJsonSchemaType (typeTest .MysqlType , typeTest .TreatTinyIntAsBoolean , typeTest .IsNullable )
489
497
assert .Equal (t , typeTest .AirbyteType , p .AirbyteType )
490
498
assert .Equal (t , typeTest .JSONSchemaType , p .Type )
499
+ assert .Equal (t , typeTest .OneOf , p .OneOf )
491
500
})
492
501
}
493
502
}
0 commit comments