mysqldumpによるDDL出力
調べてみました。
テーブルのDDL出力は以下ような関数(backtrace)で行っています。
#0 get_table_structure (table=0x8c3c908 "t1", db=0xbfd0f8b8 "test", table_type=0xbfd0ee30 "\v", ignore_flag=0xbfd0ef8b "¿ù\213\t\b") at mysqldump.c:1624 #1 0x08084483 in dump_table (table=0x8c3c908 "t1", db=0xbfd0f8b8 "test") at mysqldump.c:2316 #2 0x08085eca in dump_all_tables_in_db (database=0xbfd0f8b8 "test") at mysqldump.c:3014 #3 0x0808594c in dump_databases (db_names=0x8c241c4) at mysqldump.c:2841 #4 0x08087c8e in main (argc=1, argv=0x8c241c4) at mysqldump.c:3922
こんな感じでshow create tableを実行して、
my_snprintf(query, sizeof(query), "SHOW CREATE TABLE %s", result_table); if (mysql_query_with_error_report(mysql, &table_res, query)) DBUG_RETURN(0);
こんな感じで結果をそのまま出力しています。
row= mysql_fetch_row(result); fprintf(sql_file, "SET @saved_cs_client = @@character_set_client;\n" "SET character_set_client = utf8;\n" "%s;\n" "SET character_set_client = @saved_cs_client;\n", row[1]);
なのでmysqldumpのTritonn対応をする場合にはサーバ側のshow create tableを改変するだけで良さそうですね。