Exemplo n.º 1
0
        // 1. create a mirror table
        public void copy_from(data.dbname src_database_name)
        {
            var schema_str = new cmd_wraper.table_cmd(conn, table_name, src_database_name).show_createtable();
            // reset the auto increate id
            var auto_inc_pattern = @"AUTO_INCREMENT\=[\d]+\s";
            var new_inc_pattern  = @"AUTO_INCREMENT=" + UInt32.MaxValue.ToString() + @" ";

            schema_str = System.Text.RegularExpressions.Regex.Replace(schema_str, auto_inc_pattern, new_inc_pattern);
            // unique key to index
            schema_str = schema_str.Replace("UNIQUE KEY", "INDEX");
            // create table
            var target_table = new cmd_wraper.table_cmd(conn, table_name, database_name);

            target_table.create_table(schema_str);
            // alter table add serverid/oldid
            target_table.alter_table(@"ADD COLUMN old_server varchar(255) COLLATE utf8_bin DEFAULT NULL,ADD COLUMN old_id bigint(20) NOT NULL");
            target_table.alter_table(@"ADD INDEX (old_server),ADD INDEX (old_id)");
        }
Exemplo n.º 2
0
        // 3. clone a table
        public void clone_from(data.dbname src_database_name, int expected_cnt)
        {
            var schema_str = new cmd_wraper.table_cmd(conn, table_name, src_database_name).show_createtable();
            // reset the auto increate id
            var auto_inc_pattern = @"AUTO_INCREMENT\=[\d]+\s";
            var new_inc_pattern  = @"AUTO_INCREMENT=" + UInt32.MaxValue.ToString() + @" ";

            schema_str = System.Text.RegularExpressions.Regex.Replace(schema_str, auto_inc_pattern, new_inc_pattern);

            var cnt = new cmd_wraper.table_cmd(conn, table_name, src_database_name).get_record_count();

            if (expected_cnt >= 0 && cnt != expected_cnt)
            {
                throw new Exception("not empty table," + table_name.table_name);
            }
            var target_table = new cmd_wraper.table_cmd(conn, table_name, database_name);

            target_table.create_table(schema_str);
        }