11import io
22import time
33import unittest
4- from random import randbytes , shuffle
54
65from pymysqlreplication .json_binary import JsonDiff , JsonDiffOperation
76from pymysqlreplication .tests import base
@@ -421,23 +420,17 @@ def test_minimal_image_update_row_event(self):
421420 self .assertEqual (event .rows [0 ]["after_values" ]["id" ], None )
422421 self .assertEqual (event .rows [0 ]["after_values" ]["data" ], "World" )
423422
424- def test_charset_parsing (self ):
425- char_columns = {
426- f"c_utf8_{ i } " : ("VARCHAR(255) NOT NULL" , "Hello" )
427- for i in range (3 )
428- }
429- char_columns ["c_binary" ] = ("LONGBLOB NOT NULL" , randbytes (1024 ))
430- int_columns = {f"i_{ i } " : ("INTEGER NOT NULL" , i ) for i in range (3 )}
431- columns = list ({** char_columns , ** int_columns }.items ())
432- shuffle (columns )
433- column_types = ", " .join (f"{ name } { type } " for name , (type , _ ) in columns )
434- column_names = ", " .join (name for name , _ in columns )
435- column_value_placeholders = ", " .join ("%s" for _ in range (len (columns )))
436- column_values = [value for _ , (_ , value ) in columns ]
437- query = f"CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT, { column_types } , PRIMARY KEY (id)) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"
438- self .execute (query )
439- query = f"INSERT INTO test ({ column_names } ) VALUES({ column_value_placeholders } )"
440- self .execute_with_args (query , column_values )
423+ def test_default_charset_parsing (self ):
424+ query = """CREATE TABLE test (
425+ id INT NOT NULL AUTO_INCREMENT,
426+ text1 VARCHAR(255) NOT NULL,
427+ text2 VARCHAR(255) NOT NULL,
428+ data LONGBLOB NOT NULL,
429+ PRIMARY KEY (id)
430+ ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"""
431+ self .execute (query )
432+ query = "INSERT INTO test (text1, text2, data) VALUES(%s, %s, %s)"
433+ self .execute_with_args (query , ("text" , "text" , b"data" ))
441434 self .execute ("COMMIT" )
442435
443436 self .assertIsInstance (self .stream .fetchone (), RotateEvent )
@@ -451,12 +444,12 @@ def test_charset_parsing(self):
451444 self .assertIsInstance (event , TableMapEvent )
452445 if event .table_map [event .table_id ].column_name_flag :
453446 columns = {c .name : c for c in event .columns }
454- for name , column in columns . items ():
455- if name . startswith ("c_utf8_" ):
456- assert column .character_set_name == "utf8"
457- assert column .collation_name == "utf8mb3_unicode_ci"
458- assert columns ["c_binary " ].character_set_name == "binary"
459- assert columns ["c_binary " ].collation_name == "binary"
447+ assert columns [ "text1" ]. character_set_name == "utf8"
448+ assert columns [ "text1" ]. collation_name . startswith ("utf8" )
449+ assert columns [ "text2" ] .character_set_name == "utf8"
450+ assert columns [ "text2" ] .collation_name . startswith ( "utf8" )
451+ assert columns ["data " ].character_set_name == "binary"
452+ assert columns ["data " ].collation_name == "binary"
460453
461454
462455 def test_log_pos (self ):
@@ -1898,7 +1891,7 @@ def setUp(self):
18981891 def test_json_partial_update (self ):
18991892 create_query = "CREATE TABLE test_json_v2 (id INT, c JSON,PRIMARY KEY (id)) ;"
19001893 column_add_query = "ALTER TABLE test_json_v2 ADD COLUMN d JSON DEFAULT NULL, ADD COLUMN e JSON DEFAULT NULL;"
1901- insert_query = """INSERT INTO test_json_v2 VALUES
1894+ insert_query = """INSERT INTO test_json_v2 VALUES
19021895 (101
19031896 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
19041897 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
@@ -1935,7 +1928,7 @@ def test_json_partial_update_column_value_none(self):
19351928 drop_table_if_exists_query = "DROP TABLE IF EXISTS test_json_v2;"
19361929 create_query = "CREATE TABLE test_json_v2 (id INT, c JSON,PRIMARY KEY (id)) ;"
19371930 column_add_query = "ALTER TABLE test_json_v2 ADD COLUMN d JSON DEFAULT NULL, ADD COLUMN e JSON DEFAULT NULL;"
1938- insert_query = """INSERT INTO test_json_v2 VALUES
1931+ insert_query = """INSERT INTO test_json_v2 VALUES
19391932 (101
19401933 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
19411934 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
@@ -1973,7 +1966,7 @@ def test_json_partial_update_json_remove(self):
19731966 drop_table_if_exists_query = "DROP TABLE IF EXISTS test_json_v2;"
19741967 create_query = "CREATE TABLE test_json_v2 (id INT, c JSON,PRIMARY KEY (id)) ;"
19751968 column_add_query = "ALTER TABLE test_json_v2 ADD COLUMN d JSON DEFAULT NULL, ADD COLUMN e JSON DEFAULT NULL;"
1976- insert_query = """INSERT INTO test_json_v2 VALUES
1969+ insert_query = """INSERT INTO test_json_v2 VALUES
19771970 (101
19781971 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
19791972 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
@@ -2013,7 +2006,7 @@ def test_json_partial_update_two_column(self):
20132006 drop_table_if_exists_query = "DROP TABLE IF EXISTS test_json_v2;"
20142007 create_query = "CREATE TABLE test_json_v2 (id INT, c JSON,PRIMARY KEY (id)) ;"
20152008 column_add_query = "ALTER TABLE test_json_v2 ADD COLUMN d JSON DEFAULT NULL, ADD COLUMN e JSON DEFAULT NULL;"
2016- insert_query = """INSERT INTO test_json_v2 VALUES
2009+ insert_query = """INSERT INTO test_json_v2 VALUES
20172010 (101
20182011 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
20192012 ,'{"a":"aaaaaaaaaaaaa", "c":"ccccccccccccccc", "ab":["abababababababa", "babababababab"]}'
0 commit comments