]> granicus.if.org Git - ejabberd/commitdiff
Only attempt to migrate an old ODBC table if it still exists
authorBadlop <badlop@process-one.net>
Thu, 10 Mar 2011 18:47:14 +0000 (19:47 +0100)
committerBadlop <badlop@process-one.net>
Thu, 10 Mar 2011 19:29:04 +0000 (20:29 +0100)
src/gen_storage_migration.erl

index d965f7450886521f619d0f6c59d2cdb09843ff50..1e58a0179c2ca007c457ff890f7d61e02f789d8d 100644 (file)
@@ -137,8 +137,13 @@ migrate_odbc1(Host, Tables, {OldTablesColumns, MigrateFun}) ->
     {[OldTable | _] = OldTables,
      [OldColumns | _] = OldColumnsAll} = lists:unzip(OldTablesColumns),
     OldTablesA = [list_to_atom(Table) || Table <- OldTables],
-    ColumnsT = [odbc_table_columns_t(OldTable1) || OldTable1 <- OldTables],
-    migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun).
+    case is_table_exists(OldTable, odbc) of
+       true ->
+           ColumnsT = [odbc_table_columns_t(OldTable1) || OldTable1 <- OldTables],
+           migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun);
+       false ->
+           ignored
+    end.
 
 migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun)
   when ColumnsT == OldColumnsAll ->
@@ -236,3 +241,10 @@ odbc_table_columns_t(Table) ->
            Columns2
     end.
 
+is_table_exists(Table, odbc) ->
+    case catch ejabberd_odbc:sql_query_t("SELECT COUNT(*) FROM " ++ Table) of
+       {selected, _, _} ->
+           true;
+       _ ->
+           false
+    end.