1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/usr/bin/env python
import sys
import random
import string
def main():
print "# generated by tokudb_fast_update_blobs_with_varchar.py"
print "source include/have_tokudb.inc;"
print "source include/have_innodb.inc;"
print "set default_storage_engine='tokudb';"
print "disable_warnings;"
print "drop table if exists t;"
print "enable_warnings;"
nrows = 10
blob_types = [ 'tinyblob', 'blob', 'mediumblob', 'longblob' ]
for a in blob_types:
for b in blob_types:
for c in blob_types:
for n in [ 'null', 'not null' ]:
for v in [ 'varchar(32)', 'varchar(256)' ]:
test_blobs([ a, b, c ] , v, n, nrows)
return 0
def test_blobs(cols, v, n, nrows):
print "create table tt (id bigint unsigned primary key,"
print " v0 %s %s," % (v, n)
for i in range(len(cols)):
if i < len(cols)-1:
print " b%d %s %s," % (i, cols[i], n)
else:
print " b%d %s %s" % (i, cols[i], n)
print ") engine=tokudb;"
for id in range(1,nrows):
if n == 'null':
print "insert into tt (id) values (%d);" % (id)
else:
print "insert into tt values (%d,'','','','');" % (id)
print "create table ti like tt;"
print "alter table ti engine=innodb;"
print "insert into ti select * from tt;"
for id in range(1,nrows):
for i in range(3):
long_str = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(random.randint(1,32)))
print "update noar tt set v%d='%s' where id=%d;" % (0, long_str, id)
print "update noar ti set v%d='%s' where id=%d;" % (0, long_str, id)
long_str = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(random.randint(1,32)))
print "update noar tt set b%d='%s' where id=%d;" % (i, long_str, id)
print "update noar ti set b%d='%s' where id=%d;" % (i, long_str, id)
print "let $diff_tables = test.tt, test.ti;"
print "source include/diff_tables.inc;"
print "drop table tt, ti;"
sys.exit(main())
|