diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteInventoryStore.cs | 120 |
1 files changed, 65 insertions, 55 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteInventoryStore.cs b/OpenSim/Data/SQLite/SQLiteInventoryStore.cs index 5acc5f2..5b77f82 100644 --- a/OpenSim/Data/SQLite/SQLiteInventoryStore.cs +++ b/OpenSim/Data/SQLite/SQLiteInventoryStore.cs | |||
@@ -61,7 +61,12 @@ namespace OpenSim.Data.SQLite | |||
61 | 61 | ||
62 | conn.Open(); | 62 | conn.Open(); |
63 | 63 | ||
64 | TestTables(conn); | 64 | Assembly assem = GetType().Assembly; |
65 | Migration m = new Migration(conn, assem, "InventoryStore"); | ||
66 | // TODO: remove this line after changeset 6000 | ||
67 | TestTables(conn, m); | ||
68 | |||
69 | m.Update(); | ||
65 | 70 | ||
66 | SqliteCommand itemsSelectCmd = new SqliteCommand(invItemsSelect, conn); | 71 | SqliteCommand itemsSelectCmd = new SqliteCommand(invItemsSelect, conn); |
67 | invItemsDa = new SqliteDataAdapter(itemsSelectCmd); | 72 | invItemsDa = new SqliteDataAdapter(itemsSelectCmd); |
@@ -672,7 +677,7 @@ namespace OpenSim.Data.SQLite | |||
672 | scmd.ExecuteNonQuery(); | 677 | scmd.ExecuteNonQuery(); |
673 | } | 678 | } |
674 | 679 | ||
675 | private static bool TestTables(SqliteConnection conn) | 680 | private static bool TestTables(SqliteConnection conn, Migration m) |
676 | { | 681 | { |
677 | SqliteCommand invItemsSelectCmd = new SqliteCommand(invItemsSelect, conn); | 682 | SqliteCommand invItemsSelectCmd = new SqliteCommand(invItemsSelect, conn); |
678 | SqliteDataAdapter pDa = new SqliteDataAdapter(invItemsSelectCmd); | 683 | SqliteDataAdapter pDa = new SqliteDataAdapter(invItemsSelectCmd); |
@@ -688,63 +693,68 @@ namespace OpenSim.Data.SQLite | |||
688 | catch (SqliteSyntaxException) | 693 | catch (SqliteSyntaxException) |
689 | { | 694 | { |
690 | m_log.Info("[INVENTORY DB]: SQLite Database doesn't exist... creating"); | 695 | m_log.Info("[INVENTORY DB]: SQLite Database doesn't exist... creating"); |
691 | InitDB(conn); | 696 | return false; |
692 | } | 697 | } |
693 | 698 | ||
694 | pDa.Fill(tmpDS, "inventoryitems"); | 699 | if (m.Version == 0) |
695 | sDa.Fill(tmpDS, "inventoryfolders"); | 700 | m.Version = 1; |
696 | |||
697 | // Very clumsy way of checking whether we need to upgrade the database table version and then updating. Only | ||
698 | // putting up with this because this code should be blown away soon by nhibernate... | ||
699 | conn.Open(); | ||
700 | |||
701 | SqliteCommand cmd; | ||
702 | try | ||
703 | { | ||
704 | cmd = new SqliteCommand("select salePrice from inventoryitems limit 1;", conn); | ||
705 | cmd.ExecuteNonQuery(); | ||
706 | } | ||
707 | catch (SqliteSyntaxException) | ||
708 | { | ||
709 | m_log.Info("[INVENTORY DB]: Upgrading sqlite inventory database to version 2"); | ||
710 | |||
711 | cmd = new SqliteCommand("alter table inventoryitems add column salePrice integer default 99;", conn); | ||
712 | cmd.ExecuteNonQuery(); | ||
713 | cmd = new SqliteCommand("alter table inventoryitems add column saleType integer default 0;", conn); | ||
714 | cmd.ExecuteNonQuery(); | ||
715 | cmd = new SqliteCommand("alter table inventoryitems add column creationDate integer default 2000;", conn); | ||
716 | cmd.ExecuteNonQuery(); | ||
717 | cmd = new SqliteCommand("alter table inventoryitems add column groupID varchar(255) default '00000000-0000-0000-0000-000000000000';", conn); | ||
718 | cmd.ExecuteNonQuery(); | ||
719 | cmd = new SqliteCommand("alter table inventoryitems add column groupOwned integer default 0;", conn); | ||
720 | cmd.ExecuteNonQuery(); | ||
721 | cmd = new SqliteCommand("alter table inventoryitems add column flags integer default 0;", conn); | ||
722 | cmd.ExecuteNonQuery(); | ||
723 | 701 | ||
724 | pDa.Fill(tmpDS, "inventoryitems"); | ||
725 | } | ||
726 | finally | ||
727 | { | ||
728 | conn.Close(); | ||
729 | } | ||
730 | |||
731 | foreach (DataColumn col in createInventoryItemsTable().Columns) | ||
732 | { | ||
733 | if (! tmpDS.Tables["inventoryitems"].Columns.Contains(col.ColumnName)) | ||
734 | { | ||
735 | m_log.Info("[INVENTORY DB]: Missing required column:" + col.ColumnName); | ||
736 | return false; | ||
737 | } | ||
738 | } | ||
739 | foreach (DataColumn col in createInventoryFoldersTable().Columns) | ||
740 | { | ||
741 | if (! tmpDS.Tables["inventoryfolders"].Columns.Contains(col.ColumnName)) | ||
742 | { | ||
743 | m_log.Info("[INVENTORY DB]: Missing required column:" + col.ColumnName); | ||
744 | return false; | ||
745 | } | ||
746 | } | ||
747 | return true; | 702 | return true; |
703 | |||
704 | // pDa.Fill(tmpDS, "inventoryitems"); | ||
705 | // sDa.Fill(tmpDS, "inventoryfolders"); | ||
706 | |||
707 | // // Very clumsy way of checking whether we need to upgrade the database table version and then updating. Only | ||
708 | // // putting up with this because this code should be blown away soon by nhibernate... | ||
709 | // conn.Open(); | ||
710 | |||
711 | // SqliteCommand cmd; | ||
712 | // try | ||
713 | // { | ||
714 | // cmd = new SqliteCommand("select salePrice from inventoryitems limit 1;", conn); | ||
715 | // cmd.ExecuteNonQuery(); | ||
716 | // } | ||
717 | // catch (SqliteSyntaxException) | ||
718 | // { | ||
719 | // m_log.Info("[INVENTORY DB]: Upgrading sqlite inventory database to version 2"); | ||
720 | |||
721 | // cmd = new SqliteCommand("alter table inventoryitems add column salePrice integer default 99;", conn); | ||
722 | // cmd.ExecuteNonQuery(); | ||
723 | // cmd = new SqliteCommand("alter table inventoryitems add column saleType integer default 0;", conn); | ||
724 | // cmd.ExecuteNonQuery(); | ||
725 | // cmd = new SqliteCommand("alter table inventoryitems add column creationDate integer default 2000;", conn); | ||
726 | // cmd.ExecuteNonQuery(); | ||
727 | // cmd = new SqliteCommand("alter table inventoryitems add column groupID varchar(255) default '00000000-0000-0000-0000-000000000000';", conn); | ||
728 | // cmd.ExecuteNonQuery(); | ||
729 | // cmd = new SqliteCommand("alter table inventoryitems add column groupOwned integer default 0;", conn); | ||
730 | // cmd.ExecuteNonQuery(); | ||
731 | // cmd = new SqliteCommand("alter table inventoryitems add column flags integer default 0;", conn); | ||
732 | // cmd.ExecuteNonQuery(); | ||
733 | |||
734 | // pDa.Fill(tmpDS, "inventoryitems"); | ||
735 | // } | ||
736 | // finally | ||
737 | // { | ||
738 | // conn.Close(); | ||
739 | // } | ||
740 | |||
741 | // foreach (DataColumn col in createInventoryItemsTable().Columns) | ||
742 | // { | ||
743 | // if (! tmpDS.Tables["inventoryitems"].Columns.Contains(col.ColumnName)) | ||
744 | // { | ||
745 | // m_log.Info("[INVENTORY DB]: Missing required column:" + col.ColumnName); | ||
746 | // return false; | ||
747 | // } | ||
748 | // } | ||
749 | // foreach (DataColumn col in createInventoryFoldersTable().Columns) | ||
750 | // { | ||
751 | // if (! tmpDS.Tables["inventoryfolders"].Columns.Contains(col.ColumnName)) | ||
752 | // { | ||
753 | // m_log.Info("[INVENTORY DB]: Missing required column:" + col.ColumnName); | ||
754 | // return false; | ||
755 | // } | ||
756 | // } | ||
757 | // return true; | ||
748 | } | 758 | } |
749 | } | 759 | } |
750 | } | 760 | } |