@@ -588,8 +588,6 @@ def test_geometry(self):
588
588
)
589
589
590
590
def test_json (self ):
591
- if not self .isMySQL57 ():
592
- self .skipTest ("Json is only supported in mysql 5.7" )
593
591
create_query = "CREATE TABLE test (id int, value json);"
594
592
insert_query = """INSERT INTO test (id, value) VALUES (1, '{"my_key": "my_val", "my_key2": "my_val2"}');"""
595
593
event = self .create_and_insert_value (create_query , insert_query )
@@ -600,8 +598,6 @@ def test_json(self):
600
598
)
601
599
602
600
def test_json_array (self ):
603
- if not self .isMySQL57 ():
604
- self .skipTest ("Json is only supported in mysql 5.7" )
605
601
create_query = "CREATE TABLE test (id int, value json);"
606
602
insert_query = (
607
603
"""INSERT INTO test (id, value) VALUES (1, '["my_val", "my_val2"]');"""
@@ -611,8 +607,6 @@ def test_json_array(self):
611
607
self .assertEqual (event .rows [0 ]["values" ]["value" ], [b"my_val" , b"my_val2" ])
612
608
613
609
def test_json_large (self ):
614
- if not self .isMySQL57 ():
615
- self .skipTest ("Json is only supported in mysql 5.7" )
616
610
data = dict (
617
611
[("foooo%i" % i , "baaaaar%i" % i ) for i in range (2560 )]
618
612
) # Make it large enough to reach 2^16 length
@@ -626,8 +620,6 @@ def test_json_large(self):
626
620
627
621
def test_json_large_array (self ):
628
622
"Test json array larger than 64k bytes"
629
- if not self .isMySQL57 ():
630
- self .skipTest ("Json is only supported in mysql 5.7" )
631
623
create_query = "CREATE TABLE test (id int, value json);"
632
624
large_array = dict (my_key = [i for i in range (100000 )])
633
625
insert_query = "INSERT INTO test (id, value) VALUES (1, '%s');" % (
@@ -640,8 +632,6 @@ def test_json_large_array(self):
640
632
)
641
633
642
634
def test_json_large_with_literal (self ):
643
- if not self .isMySQL57 ():
644
- self .skipTest ("Json is only supported in mysql 5.7" )
645
635
data = dict (
646
636
[("foooo%i" % i , "baaaaar%i" % i ) for i in range (2560 )], literal = True
647
637
) # Make it large with literal
@@ -654,9 +644,6 @@ def test_json_large_with_literal(self):
654
644
self .assertEqual (event .rows [0 ]["values" ]["value" ], to_binary_dict (data ))
655
645
656
646
def test_json_types (self ):
657
- if not self .isMySQL57 ():
658
- self .skipTest ("Json is only supported in mysql 5.7" )
659
-
660
647
types = [
661
648
True ,
662
649
False ,
@@ -685,9 +672,6 @@ def test_json_types(self):
685
672
self .setUp ()
686
673
687
674
def test_json_basic (self ):
688
- if not self .isMySQL57 ():
689
- self .skipTest ("Json is only supported in mysql 5.7" )
690
-
691
675
types = [
692
676
True ,
693
677
False ,
@@ -714,8 +698,6 @@ def test_json_basic(self):
714
698
self .setUp ()
715
699
716
700
def test_json_unicode (self ):
717
- if not self .isMySQL57 ():
718
- self .skipTest ("Json is only supported in mysql 5.7" )
719
701
create_query = "CREATE TABLE test (id int, value json);"
720
702
insert_query = """INSERT INTO test (id, value) VALUES (1, '{"miam": "🍔"}');"""
721
703
event = self .create_and_insert_value (create_query , insert_query )
@@ -725,8 +707,6 @@ def test_json_unicode(self):
725
707
)
726
708
727
709
def test_json_long_string (self ):
728
- if not self .isMySQL57 ():
729
- self .skipTest ("Json is only supported in mysql 5.7" )
730
710
create_query = "CREATE TABLE test (id int, value json);"
731
711
# The string length needs to be larger than what can fit in a single byte.
732
712
string_value = "super_long_string" * 100
@@ -735,12 +715,31 @@ def test_json_long_string(self):
735
715
% (string_value ,)
736
716
)
737
717
event = self .create_and_insert_value (create_query , insert_query )
718
+ print (event .rows [0 ])
738
719
if event .table_map [event .table_id ].column_name_flag :
739
720
self .assertEqual (
740
721
event .rows [0 ]["values" ]["value" ],
741
722
to_binary_dict ({"my_key" : string_value }),
742
723
)
743
724
725
+ def test_json_deciaml_time_datetime (self ):
726
+ create_query = """CREATE TABLE json_deciaml_time_datetime_test (
727
+ id INT PRIMARY KEY AUTO_INCREMENT,
728
+ json_data JSON
729
+ );"""
730
+ insert_query = """
731
+ INSERT INTO json_deciaml_time_datetime_test (json_data) VALUES (JSON_OBJECT('time_key', CAST('18:54:12' AS TIME), 'datetime_key', CAST('2023-09-24 18:54:12' AS DATETIME) ,'decimal', CAST('99.99' AS DECIMAL(10, 2))));"""
732
+ event = self .create_and_insert_value (create_query , insert_query )
733
+ if event .table_map [event .table_id ].column_name_flag :
734
+ self .assertEqual (
735
+ event .rows [0 ]["values" ]["json_data" ],
736
+ {
737
+ b"decimal" : Decimal ("99.99" ),
738
+ b"time_key" : datetime .time (18 , 54 , 12 ),
739
+ b"datetime_key" : datetime .datetime (2023 , 9 , 24 , 18 , 54 , 12 ),
740
+ },
741
+ )
742
+
744
743
def test_null (self ):
745
744
create_query = "CREATE TABLE test ( \
746
745
test TINYINT NULL DEFAULT NULL, \
0 commit comments