@@ -507,6 +507,9 @@ func TestCustomTimezone(t *testing.T) {
507
507
508
508
customZone := "Europe/Moscow"
509
509
customOffset := 180 * 60
510
+ // Tarantool does not use a custom offset value if a time zone is provided.
511
+ // So it will change to an actual one.
512
+ zoneOffset := 240 * 60
510
513
511
514
customLoc := time .FixedZone (customZone , customOffset )
512
515
tm , err := time .Parse (time .RFC3339 , "2010-08-12T11:44:14Z" )
@@ -527,11 +530,12 @@ func TestCustomTimezone(t *testing.T) {
527
530
528
531
tpl := resp .Data [0 ].([]interface {})
529
532
if respDt , ok := toDatetime (tpl [0 ]); ok {
530
- zone , offset := respDt .ToTime ().Zone ()
533
+ zone := respDt .ToTime ().Location ().String ()
534
+ _ , offset := respDt .ToTime ().Zone ()
531
535
if zone != customZone {
532
536
t .Fatalf ("Expected zone %s instead of %s" , customZone , zone )
533
537
}
534
- if offset != customOffset {
538
+ if offset != zoneOffset {
535
539
t .Fatalf ("Expected offset %d instead of %d" , customOffset , offset )
536
540
}
537
541
@@ -586,62 +590,63 @@ var datetimeSample = []struct {
586
590
fmt string
587
591
dt string
588
592
mpBuf string // MessagePack buffer.
593
+ zone string
589
594
}{
590
595
/* Cases for base encoding without a timezone. */
591
- {time .RFC3339 , "2012-01-31T23:59:59.000000010Z" , "d8047f80284f000000000a00000000000000" },
592
- {time .RFC3339 , "1970-01-01T00:00:00.000000010Z" , "d80400000000000000000a00000000000000" },
593
- {time .RFC3339 , "2010-08-12T11:39:14Z" , "d70462dd634c00000000" },
594
- {time .RFC3339 , "1984-03-24T18:04:05Z" , "d7041530c31a00000000" },
595
- {time .RFC3339 , "2010-01-12T00:00:00Z" , "d70480bb4b4b00000000" },
596
- {time .RFC3339 , "1970-01-01T00:00:00Z" , "d7040000000000000000" },
597
- {time .RFC3339 , "1970-01-01T00:00:00.123456789Z" , "d804000000000000000015cd5b0700000000" },
598
- {time .RFC3339 , "1970-01-01T00:00:00.12345678Z" , "d80400000000000000000ccd5b0700000000" },
599
- {time .RFC3339 , "1970-01-01T00:00:00.1234567Z" , "d8040000000000000000bccc5b0700000000" },
600
- {time .RFC3339 , "1970-01-01T00:00:00.123456Z" , "d804000000000000000000ca5b0700000000" },
601
- {time .RFC3339 , "1970-01-01T00:00:00.12345Z" , "d804000000000000000090b25b0700000000" },
602
- {time .RFC3339 , "1970-01-01T00:00:00.1234Z" , "d804000000000000000040ef5a0700000000" },
603
- {time .RFC3339 , "1970-01-01T00:00:00.123Z" , "d8040000000000000000c0d4540700000000" },
604
- {time .RFC3339 , "1970-01-01T00:00:00.12Z" , "d8040000000000000000000e270700000000" },
605
- {time .RFC3339 , "1970-01-01T00:00:00.1Z" , "d804000000000000000000e1f50500000000" },
606
- {time .RFC3339 , "1970-01-01T00:00:00.01Z" , "d80400000000000000008096980000000000" },
607
- {time .RFC3339 , "1970-01-01T00:00:00.001Z" , "d804000000000000000040420f0000000000" },
608
- {time .RFC3339 , "1970-01-01T00:00:00.0001Z" , "d8040000000000000000a086010000000000" },
609
- {time .RFC3339 , "1970-01-01T00:00:00.00001Z" , "d80400000000000000001027000000000000" },
610
- {time .RFC3339 , "1970-01-01T00:00:00.000001Z" , "d8040000000000000000e803000000000000" },
611
- {time .RFC3339 , "1970-01-01T00:00:00.0000001Z" , "d80400000000000000006400000000000000" },
612
- {time .RFC3339 , "1970-01-01T00:00:00.00000001Z" , "d80400000000000000000a00000000000000" },
613
- {time .RFC3339 , "1970-01-01T00:00:00.000000001Z" , "d80400000000000000000100000000000000" },
614
- {time .RFC3339 , "1970-01-01T00:00:00.000000009Z" , "d80400000000000000000900000000000000" },
615
- {time .RFC3339 , "1970-01-01T00:00:00.00000009Z" , "d80400000000000000005a00000000000000" },
616
- {time .RFC3339 , "1970-01-01T00:00:00.0000009Z" , "d80400000000000000008403000000000000" },
617
- {time .RFC3339 , "1970-01-01T00:00:00.000009Z" , "d80400000000000000002823000000000000" },
618
- {time .RFC3339 , "1970-01-01T00:00:00.00009Z" , "d8040000000000000000905f010000000000" },
619
- {time .RFC3339 , "1970-01-01T00:00:00.0009Z" , "d8040000000000000000a0bb0d0000000000" },
620
- {time .RFC3339 , "1970-01-01T00:00:00.009Z" , "d80400000000000000004054890000000000" },
621
- {time .RFC3339 , "1970-01-01T00:00:00.09Z" , "d8040000000000000000804a5d0500000000" },
622
- {time .RFC3339 , "1970-01-01T00:00:00.9Z" , "d804000000000000000000e9a43500000000" },
623
- {time .RFC3339 , "1970-01-01T00:00:00.99Z" , "d80400000000000000008033023b00000000" },
624
- {time .RFC3339 , "1970-01-01T00:00:00.999Z" , "d8040000000000000000c0878b3b00000000" },
625
- {time .RFC3339 , "1970-01-01T00:00:00.9999Z" , "d80400000000000000006043993b00000000" },
626
- {time .RFC3339 , "1970-01-01T00:00:00.99999Z" , "d8040000000000000000f0a29a3b00000000" },
627
- {time .RFC3339 , "1970-01-01T00:00:00.999999Z" , "d804000000000000000018c69a3b00000000" },
628
- {time .RFC3339 , "1970-01-01T00:00:00.9999999Z" , "d80400000000000000009cc99a3b00000000" },
629
- {time .RFC3339 , "1970-01-01T00:00:00.99999999Z" , "d8040000000000000000f6c99a3b00000000" },
630
- {time .RFC3339 , "1970-01-01T00:00:00.999999999Z" , "d8040000000000000000ffc99a3b00000000" },
631
- {time .RFC3339 , "1970-01-01T00:00:00.0Z" , "d7040000000000000000" },
632
- {time .RFC3339 , "1970-01-01T00:00:00.00Z" , "d7040000000000000000" },
633
- {time .RFC3339 , "1970-01-01T00:00:00.000Z" , "d7040000000000000000" },
634
- {time .RFC3339 , "1970-01-01T00:00:00.0000Z" , "d7040000000000000000" },
635
- {time .RFC3339 , "1970-01-01T00:00:00.00000Z" , "d7040000000000000000" },
636
- {time .RFC3339 , "1970-01-01T00:00:00.000000Z" , "d7040000000000000000" },
637
- {time .RFC3339 , "1970-01-01T00:00:00.0000000Z" , "d7040000000000000000" },
638
- {time .RFC3339 , "1970-01-01T00:00:00.00000000Z" , "d7040000000000000000" },
639
- {time .RFC3339 , "1970-01-01T00:00:00.000000000Z" , "d7040000000000000000" },
640
- {time .RFC3339 , "1973-11-29T21:33:09Z" , "d70415cd5b0700000000" },
641
- {time .RFC3339 , "2013-10-28T17:51:56Z" , "d7043ca46e5200000000" },
642
- {time .RFC3339 , "9999-12-31T23:59:59Z" , "d7047f41f4ff3a000000" },
596
+ {time .RFC3339 , "2012-01-31T23:59:59.000000010Z" , "d8047f80284f000000000a00000000000000" , "" },
597
+ {time .RFC3339 , "1970-01-01T00:00:00.000000010Z" , "d80400000000000000000a00000000000000" , "" },
598
+ {time .RFC3339 , "2010-08-12T11:39:14Z" , "d70462dd634c00000000" , "" },
599
+ {time .RFC3339 , "1984-03-24T18:04:05Z" , "d7041530c31a00000000" , "" },
600
+ {time .RFC3339 , "2010-01-12T00:00:00Z" , "d70480bb4b4b00000000" , "" },
601
+ {time .RFC3339 , "1970-01-01T00:00:00Z" , "d7040000000000000000" , "" },
602
+ {time .RFC3339 , "1970-01-01T00:00:00.123456789Z" , "d804000000000000000015cd5b0700000000" , "" },
603
+ {time .RFC3339 , "1970-01-01T00:00:00.12345678Z" , "d80400000000000000000ccd5b0700000000" , "" },
604
+ {time .RFC3339 , "1970-01-01T00:00:00.1234567Z" , "d8040000000000000000bccc5b0700000000" , "" },
605
+ {time .RFC3339 , "1970-01-01T00:00:00.123456Z" , "d804000000000000000000ca5b0700000000" , "" },
606
+ {time .RFC3339 , "1970-01-01T00:00:00.12345Z" , "d804000000000000000090b25b0700000000" , "" },
607
+ {time .RFC3339 , "1970-01-01T00:00:00.1234Z" , "d804000000000000000040ef5a0700000000" , "" },
608
+ {time .RFC3339 , "1970-01-01T00:00:00.123Z" , "d8040000000000000000c0d4540700000000" , "" },
609
+ {time .RFC3339 , "1970-01-01T00:00:00.12Z" , "d8040000000000000000000e270700000000" , "" },
610
+ {time .RFC3339 , "1970-01-01T00:00:00.1Z" , "d804000000000000000000e1f50500000000" , "" },
611
+ {time .RFC3339 , "1970-01-01T00:00:00.01Z" , "d80400000000000000008096980000000000" , "" },
612
+ {time .RFC3339 , "1970-01-01T00:00:00.001Z" , "d804000000000000000040420f0000000000" , "" },
613
+ {time .RFC3339 , "1970-01-01T00:00:00.0001Z" , "d8040000000000000000a086010000000000" , "" },
614
+ {time .RFC3339 , "1970-01-01T00:00:00.00001Z" , "d80400000000000000001027000000000000" , "" },
615
+ {time .RFC3339 , "1970-01-01T00:00:00.000001Z" , "d8040000000000000000e803000000000000" , "" },
616
+ {time .RFC3339 , "1970-01-01T00:00:00.0000001Z" , "d80400000000000000006400000000000000" , "" },
617
+ {time .RFC3339 , "1970-01-01T00:00:00.00000001Z" , "d80400000000000000000a00000000000000" , "" },
618
+ {time .RFC3339 , "1970-01-01T00:00:00.000000001Z" , "d80400000000000000000100000000000000" , "" },
619
+ {time .RFC3339 , "1970-01-01T00:00:00.000000009Z" , "d80400000000000000000900000000000000" , "" },
620
+ {time .RFC3339 , "1970-01-01T00:00:00.00000009Z" , "d80400000000000000005a00000000000000" , "" },
621
+ {time .RFC3339 , "1970-01-01T00:00:00.0000009Z" , "d80400000000000000008403000000000000" , "" },
622
+ {time .RFC3339 , "1970-01-01T00:00:00.000009Z" , "d80400000000000000002823000000000000" , "" },
623
+ {time .RFC3339 , "1970-01-01T00:00:00.00009Z" , "d8040000000000000000905f010000000000" , "" },
624
+ {time .RFC3339 , "1970-01-01T00:00:00.0009Z" , "d8040000000000000000a0bb0d0000000000" , "" },
625
+ {time .RFC3339 , "1970-01-01T00:00:00.009Z" , "d80400000000000000004054890000000000" , "" },
626
+ {time .RFC3339 , "1970-01-01T00:00:00.09Z" , "d8040000000000000000804a5d0500000000" , "" },
627
+ {time .RFC3339 , "1970-01-01T00:00:00.9Z" , "d804000000000000000000e9a43500000000" , "" },
628
+ {time .RFC3339 , "1970-01-01T00:00:00.99Z" , "d80400000000000000008033023b00000000" , "" },
629
+ {time .RFC3339 , "1970-01-01T00:00:00.999Z" , "d8040000000000000000c0878b3b00000000" , "" },
630
+ {time .RFC3339 , "1970-01-01T00:00:00.9999Z" , "d80400000000000000006043993b00000000" , "" },
631
+ {time .RFC3339 , "1970-01-01T00:00:00.99999Z" , "d8040000000000000000f0a29a3b00000000" , "" },
632
+ {time .RFC3339 , "1970-01-01T00:00:00.999999Z" , "d804000000000000000018c69a3b00000000" , "" },
633
+ {time .RFC3339 , "1970-01-01T00:00:00.9999999Z" , "d80400000000000000009cc99a3b00000000" , "" },
634
+ {time .RFC3339 , "1970-01-01T00:00:00.99999999Z" , "d8040000000000000000f6c99a3b00000000" , "" },
635
+ {time .RFC3339 , "1970-01-01T00:00:00.999999999Z" , "d8040000000000000000ffc99a3b00000000" , "" },
636
+ {time .RFC3339 , "1970-01-01T00:00:00.0Z" , "d7040000000000000000" , "" },
637
+ {time .RFC3339 , "1970-01-01T00:00:00.00Z" , "d7040000000000000000" , "" },
638
+ {time .RFC3339 , "1970-01-01T00:00:00.000Z" , "d7040000000000000000" , "" },
639
+ {time .RFC3339 , "1970-01-01T00:00:00.0000Z" , "d7040000000000000000" , "" },
640
+ {time .RFC3339 , "1970-01-01T00:00:00.00000Z" , "d7040000000000000000" , "" },
641
+ {time .RFC3339 , "1970-01-01T00:00:00.000000Z" , "d7040000000000000000" , "" },
642
+ {time .RFC3339 , "1970-01-01T00:00:00.0000000Z" , "d7040000000000000000" , "" },
643
+ {time .RFC3339 , "1970-01-01T00:00:00.00000000Z" , "d7040000000000000000" , "" },
644
+ {time .RFC3339 , "1970-01-01T00:00:00.000000000Z" , "d7040000000000000000" , "" },
645
+ {time .RFC3339 , "1973-11-29T21:33:09Z" , "d70415cd5b0700000000" , "" },
646
+ {time .RFC3339 , "2013-10-28T17:51:56Z" , "d7043ca46e5200000000" , "" },
647
+ {time .RFC3339 , "9999-12-31T23:59:59Z" , "d7047f41f4ff3a000000" , "" },
643
648
/* Cases for encoding with a timezone. */
644
- {time .RFC3339 + " MST" , "2006-01-02T15:04:00+03:00 MSK" , "d804b016b9430000000000000000b400ee00 " },
649
+ {time .RFC3339 , "2006-01-02T15:04:00Z" , "d804e040b9430000000000000000b400b303" , "Europe/Moscow " },
645
650
}
646
651
647
652
func TestDatetimeInsertSelectDelete (t * testing.T ) {
@@ -653,8 +658,14 @@ func TestDatetimeInsertSelectDelete(t *testing.T) {
653
658
for _ , testcase := range datetimeSample {
654
659
t .Run (testcase .dt , func (t * testing.T ) {
655
660
tm , err := time .Parse (testcase .fmt , testcase .dt )
656
- if testcase .fmt == time . RFC3339 {
661
+ if testcase .zone == "" {
657
662
tm = tm .In (noTimezoneLoc )
663
+ } else {
664
+ loc , err := time .LoadLocation (testcase .zone )
665
+ if err != nil {
666
+ t .Fatalf ("Unable to load location: %s" , err )
667
+ }
668
+ tm = tm .In (loc )
658
669
}
659
670
if err != nil {
660
671
t .Fatalf ("Time (%s) parse failed: %s" , testcase .dt , err )
@@ -966,7 +977,7 @@ func TestCustomEncodeDecodeTuple5(t *testing.T) {
966
977
conn := test_helpers .ConnectWithValidation (t , server , opts )
967
978
defer conn .Close ()
968
979
969
- tm := time .Unix (500 , 1000 )
980
+ tm := time .Unix (500 , 1000 ). In ( time . FixedZone ( NoTimezone , 0 ))
970
981
dt , err := NewDatetime (tm )
971
982
if err != nil {
972
983
t .Fatalf ("Unable to create Datetime from %s: %s" , tm , err )
@@ -999,8 +1010,14 @@ func TestMPEncode(t *testing.T) {
999
1010
for _ , testcase := range datetimeSample {
1000
1011
t .Run (testcase .dt , func (t * testing.T ) {
1001
1012
tm , err := time .Parse (testcase .fmt , testcase .dt )
1002
- if testcase .fmt == time . RFC3339 {
1013
+ if testcase .zone == "" {
1003
1014
tm = tm .In (noTimezoneLoc )
1015
+ } else {
1016
+ loc , err := time .LoadLocation (testcase .zone )
1017
+ if err != nil {
1018
+ t .Fatalf ("Unable to load location: %s" , err )
1019
+ }
1020
+ tm = tm .In (loc )
1004
1021
}
1005
1022
if err != nil {
1006
1023
t .Fatalf ("Time (%s) parse failed: %s" , testcase .dt , err )
@@ -1016,7 +1033,7 @@ func TestMPEncode(t *testing.T) {
1016
1033
refBuf , _ := hex .DecodeString (testcase .mpBuf )
1017
1034
if reflect .DeepEqual (buf , refBuf ) != true {
1018
1035
t .Fatalf ("Failed to encode datetime '%s', actual %x, expected %x" ,
1019
- testcase . dt ,
1036
+ tm ,
1020
1037
buf ,
1021
1038
refBuf )
1022
1039
}
@@ -1028,8 +1045,14 @@ func TestMPDecode(t *testing.T) {
1028
1045
for _ , testcase := range datetimeSample {
1029
1046
t .Run (testcase .dt , func (t * testing.T ) {
1030
1047
tm , err := time .Parse (testcase .fmt , testcase .dt )
1031
- if testcase .fmt == time . RFC3339 {
1048
+ if testcase .zone == "" {
1032
1049
tm = tm .In (noTimezoneLoc )
1050
+ } else {
1051
+ loc , err := time .LoadLocation (testcase .zone )
1052
+ if err != nil {
1053
+ t .Fatalf ("Unable to load location: %s" , err )
1054
+ }
1055
+ tm = tm .In (loc )
1033
1056
}
1034
1057
if err != nil {
1035
1058
t .Fatalf ("Time (%s) parse failed: %s" , testcase .dt , err )
0 commit comments