1import sys 2import random 3import string 4def main(): 5 print "# this test is generated by change_column_blob_data.py" 6 print "# generate hot blob expansion test cases" 7 print "source include/have_tokudb.inc;" 8 print "--disable_warnings" 9 print "DROP TABLE IF EXISTS t, ti;" 10 print "--enable_warnings" 11 print "SET SESSION DEFAULT_STORAGE_ENGINE=\"TokuDB\";" 12 print "SET SESSION TOKUDB_DISABLE_SLOW_ALTER=1;" 13 for f in [ "", "f INT DEFAULT 0", "f INT DEFAULT 0 NOT NULL" ]: 14 for v in [ "", "v VARCHAR(32) DEFAULT ''", "v VARCHAR(32) DEFAULT '' NOT NULL" ]: 15 for nn in [ "", "NOT NULL" ]: 16 gen_test(f, v, nn) 17 return 0 18def gen_test(f, v, nn): 19 blob_types = [ "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONGBLOB" ] 20 21 print gen_table(f, v, nn) 22 23 for r in range(3): 24 print insert_row("t") 25 26 print "CREATE TABLE ti LIKE t;" 27 print "ALTER TABLE ti ENGINE=myisam;" 28 print "INSERT INTO ti SELECT * FROM t;" 29 30 for i in range(len(blob_types)): 31 print "ALTER TABLE t CHANGE COLUMN a a %s %s;" % (blob_types[i], nn) 32 print "ALTER TABLE ti CHANGE COLUMN a a %s %s;" % (blob_types[i], nn) 33 for i in range(len(blob_types)): 34 print "ALTER TABLE t CHANGE COLUMN b b %s %s;" % (blob_types[i], nn) 35 print "ALTER TABLE ti CHANGE COLUMN b b %s %s;" % (blob_types[i], nn) 36 # compare tables 37 print "let $diff_tables = test.t, test.ti;" 38 print "source include/diff_tables.inc;" 39 print "DROP TABLE t, ti;" 40def gen_table(f, v, nn): 41 t = "CREATE TABLE t (" 42 if f != "": 43 t += "%s, " % (f) 44 if v != "": 45 t += "%s, " % (v) 46 t += "a TINYBLOB %s, b TINYBLOB %s);" % (nn, nn) 47 return t 48def insert_row(t): 49 t = "INSERT INTO %s (a, b) VALUES (" % (t) 50 l = random.randint(1, 32) 51 s = ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for x in range(l)) 52 t += "'%s'," % (s) 53 l = random.randint(1, 260) 54 s = ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for x in range(l)) 55 t += "'%s');" % (s) 56 return t 57 58sys.exit(main()) 59