package data

import (
	"github.com/juju/errors"
)

// BigTransaction creates big transaction
func (d *GenCase) BigTransaction() error {
	_, err := d.db.Query("drop table if exists binlog_big;")
	if err != nil {
		return errors.Trace(err)
	}

	_, err = d.db.Query("create table binlog_big(id int primary key, data longtext);")
	if err != nil {
		return errors.Trace(err)
	}

	tx, err := d.db.Begin()
	if err != nil {
		return errors.Trace(err)
	}

	var data = make([]byte, 1<<20)
	for i := 0; i < 50; i++ {
		_, err = tx.Query("insert into binlog_big(id, data) values(?, ?);", i, data)
		if err != nil {
			return errors.Trace(err)
		}
	}
	err = tx.Commit()
	if err != nil {
		return errors.Trace(err)
	}
	return nil
}
