--- mydumper-0.6.2/mydumper.c 2014-09-05 18:48:12.000000000 +0200 +++ mydumper-0.6.2b/mydumper.c 2014-11-20 10:27:32.568404373 +0100 @@ -988,8 +988,9 @@ for (i = 0; tables[i] != NULL; i++){ dt = g_strsplit(tables[i], ".", 0); dbtb = g_strdup_printf("`%s`.`%s`",dt[0],dt[1]); - tables_lock = g_list_append(tables_lock,dbtb); - } + tables_lock = g_list_prepend(tables_lock,dbtb); + } + tables_lock = g_list_reverse(tables_lock); }else{ g_string_printf(query, "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE ='BASE TABLE' AND TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema', 'data_dictionary') AND NOT (TABLE_SCHEMA = 'mysql' AND (TABLE_NAME = 'slow_log' OR TABLE_NAME = 'general_log'))"); } @@ -1017,9 +1018,10 @@ if(lock) { dbtb = g_strdup_printf("`%s`.`%s`",row[0],row[1]); - tables_lock = g_list_append(tables_lock,dbtb); + tables_lock = g_list_prepend(tables_lock,dbtb); } } + tables_lock = g_list_reverse(tables_lock); } } @@ -1144,6 +1146,9 @@ if (db) { dump_database(conn, db); + innodb_tables = g_list_reverse(innodb_tables); + non_innodb_table = g_list_reverse(non_innodb_table); + table_schemas = g_list_reverse(table_schemas); } else if (tables) { get_tables(conn); } else { @@ -1160,6 +1165,9 @@ dump_database(conn, row[0]); } mysql_free_result(databases); + innodb_tables = g_list_reverse(innodb_tables); + non_innodb_table = g_list_reverse(non_innodb_table); + table_schemas = g_list_reverse(table_schemas); } @@ -1179,12 +1187,13 @@ tn = n; } } - nitl[tn]= g_list_append(nitl[tn], dbt); + nitl[tn]= g_list_prepend(nitl[tn], dbt); nits[tn] += dbt->datalength; } for (n=0; n 0){ + nitl[n] = g_list_reverse(nitl[n]); g_atomic_int_inc(&non_innodb_table_counter); dump_tables(conn, nitl[n], &conf); } @@ -1553,14 +1562,14 @@ dbt->table= g_strdup(row[0]); dbt->datalength = g_ascii_strtoull(row[6], NULL, 10); if (!g_ascii_strcasecmp("InnoDB", row[ecol])) { - innodb_tables= g_list_append(innodb_tables, dbt); + innodb_tables= g_list_prepend(innodb_tables, dbt); }else if(!g_ascii_strcasecmp("TokuDB", row[ecol])){ - innodb_tables= g_list_append(innodb_tables, dbt); + innodb_tables= g_list_prepend(innodb_tables, dbt); } else { - non_innodb_table= g_list_append(non_innodb_table, dbt); + non_innodb_table= g_list_prepend(non_innodb_table, dbt); } if (!no_schemas) { - table_schemas= g_list_append(table_schemas, dbt); + table_schemas= g_list_prepend(table_schemas, dbt); } } mysql_free_result(result);