aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/SQLite/SQLiteRegionData.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Data/SQLite/SQLiteRegionData.cs')
-rw-r--r--OpenSim/Data/SQLite/SQLiteRegionData.cs286
1 files changed, 150 insertions, 136 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs
index 6a16a88..42299a0 100644
--- a/OpenSim/Data/SQLite/SQLiteRegionData.cs
+++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs
@@ -84,6 +84,8 @@ namespace OpenSim.Data.SQLite
84 m_conn = new SqliteConnection(m_connectionString); 84 m_conn = new SqliteConnection(m_connectionString);
85 m_conn.Open(); 85 m_conn.Open();
86 86
87
88
87 SqliteCommand primSelectCmd = new SqliteCommand(primSelect, m_conn); 89 SqliteCommand primSelectCmd = new SqliteCommand(primSelect, m_conn);
88 primDa = new SqliteDataAdapter(primSelectCmd); 90 primDa = new SqliteDataAdapter(primSelectCmd);
89 // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa); 91 // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa);
@@ -104,10 +106,15 @@ namespace OpenSim.Data.SQLite
104 SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn); 106 SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn);
105 landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd); 107 landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd);
106 108
107 // We fill the data set, now we've got copies in memory for the information 109 // This actually does the roll forward assembly stuff
108 // TODO: see if the linkage actually holds. 110 Assembly assem = GetType().Assembly;
109 // primDa.FillSchema(ds, SchemaType.Source, "PrimSchema"); 111 Migration m = new Migration(m_conn, assem, "RegionStore");
110 TestTables(m_conn); 112
113 // TODO: After rev 6000, remove this. People should have
114 // been rolled onto the new migration code by then.
115 TestTables(m_conn, m);
116
117 m.Update();
111 118
112 lock (ds) 119 lock (ds)
113 { 120 {
@@ -1520,81 +1527,81 @@ namespace OpenSim.Data.SQLite
1520 /// Create the necessary database tables. 1527 /// Create the necessary database tables.
1521 /// </summary> 1528 /// </summary>
1522 /// <param name="conn"></param> 1529 /// <param name="conn"></param>
1523 private void InitDB(SqliteConnection conn) 1530 // private void InitDB(SqliteConnection conn)
1524 { 1531 // {
1525 string createPrims = defineTable(createPrimTable()); 1532 // string createPrims = defineTable(createPrimTable());
1526 string createShapes = defineTable(createShapeTable()); 1533 // string createShapes = defineTable(createShapeTable());
1527 string createItems = defineTable(createItemsTable()); 1534 // string createItems = defineTable(createItemsTable());
1528 string createTerrain = defineTable(createTerrainTable()); 1535 // string createTerrain = defineTable(createTerrainTable());
1529 string createLand = defineTable(createLandTable()); 1536 // string createLand = defineTable(createLandTable());
1530 string createLandAccessList = defineTable(createLandAccessListTable()); 1537 // string createLandAccessList = defineTable(createLandAccessListTable());
1531 1538
1532 SqliteCommand pcmd = new SqliteCommand(createPrims, conn); 1539 // SqliteCommand pcmd = new SqliteCommand(createPrims, conn);
1533 SqliteCommand scmd = new SqliteCommand(createShapes, conn); 1540 // SqliteCommand scmd = new SqliteCommand(createShapes, conn);
1534 SqliteCommand icmd = new SqliteCommand(createItems, conn); 1541 // SqliteCommand icmd = new SqliteCommand(createItems, conn);
1535 SqliteCommand tcmd = new SqliteCommand(createTerrain, conn); 1542 // SqliteCommand tcmd = new SqliteCommand(createTerrain, conn);
1536 SqliteCommand lcmd = new SqliteCommand(createLand, conn); 1543 // SqliteCommand lcmd = new SqliteCommand(createLand, conn);
1537 SqliteCommand lalcmd = new SqliteCommand(createLandAccessList, conn); 1544 // SqliteCommand lalcmd = new SqliteCommand(createLandAccessList, conn);
1538 1545
1539 try 1546 // try
1540 { 1547 // {
1541 pcmd.ExecuteNonQuery(); 1548 // pcmd.ExecuteNonQuery();
1542 } 1549 // }
1543 catch (SqliteSyntaxException) 1550 // catch (SqliteSyntaxException)
1544 { 1551 // {
1545 m_log.Warn("[REGION DB]: Primitives Table Already Exists"); 1552 // m_log.Warn("[REGION DB]: Primitives Table Already Exists");
1546 } 1553 // }
1547 1554
1548 try 1555 // try
1549 { 1556 // {
1550 scmd.ExecuteNonQuery(); 1557 // scmd.ExecuteNonQuery();
1551 } 1558 // }
1552 catch (SqliteSyntaxException) 1559 // catch (SqliteSyntaxException)
1553 { 1560 // {
1554 m_log.Warn("[REGION DB]: Shapes Table Already Exists"); 1561 // m_log.Warn("[REGION DB]: Shapes Table Already Exists");
1555 } 1562 // }
1556 1563
1557 if (persistPrimInventories) 1564 // if (persistPrimInventories)
1558 { 1565 // {
1559 try 1566 // try
1560 { 1567 // {
1561 icmd.ExecuteNonQuery(); 1568 // icmd.ExecuteNonQuery();
1562 } 1569 // }
1563 catch (SqliteSyntaxException) 1570 // catch (SqliteSyntaxException)
1564 { 1571 // {
1565 m_log.Warn("[REGION DB]: Primitives Inventory Table Already Exists"); 1572 // m_log.Warn("[REGION DB]: Primitives Inventory Table Already Exists");
1566 } 1573 // }
1567 } 1574 // }
1568 1575
1569 try 1576 // try
1570 { 1577 // {
1571 tcmd.ExecuteNonQuery(); 1578 // tcmd.ExecuteNonQuery();
1572 } 1579 // }
1573 catch (SqliteSyntaxException) 1580 // catch (SqliteSyntaxException)
1574 { 1581 // {
1575 m_log.Warn("[REGION DB]: Terrain Table Already Exists"); 1582 // m_log.Warn("[REGION DB]: Terrain Table Already Exists");
1576 } 1583 // }
1577 1584
1578 try 1585 // try
1579 { 1586 // {
1580 lcmd.ExecuteNonQuery(); 1587 // lcmd.ExecuteNonQuery();
1581 } 1588 // }
1582 catch (SqliteSyntaxException) 1589 // catch (SqliteSyntaxException)
1583 { 1590 // {
1584 m_log.Warn("[REGION DB]: Land Table Already Exists"); 1591 // m_log.Warn("[REGION DB]: Land Table Already Exists");
1585 } 1592 // }
1586 1593
1587 try 1594 // try
1588 { 1595 // {
1589 lalcmd.ExecuteNonQuery(); 1596 // lalcmd.ExecuteNonQuery();
1590 } 1597 // }
1591 catch (SqliteSyntaxException) 1598 // catch (SqliteSyntaxException)
1592 { 1599 // {
1593 m_log.Warn("[SQLITE]: LandAccessList Table Already Exists"); 1600 // m_log.Warn("[SQLITE]: LandAccessList Table Already Exists");
1594 } 1601 // }
1595 } 1602 // }
1596 1603
1597 private bool TestTables(SqliteConnection conn) 1604 private bool TestTables(SqliteConnection conn, Migration m)
1598 { 1605 {
1599 SqliteCommand primSelectCmd = new SqliteCommand(primSelect, conn); 1606 SqliteCommand primSelectCmd = new SqliteCommand(primSelect, conn);
1600 SqliteDataAdapter pDa = new SqliteDataAdapter(primSelectCmd); 1607 SqliteDataAdapter pDa = new SqliteDataAdapter(primSelectCmd);
@@ -1630,65 +1637,72 @@ namespace OpenSim.Data.SQLite
1630 catch (SqliteSyntaxException) 1637 catch (SqliteSyntaxException)
1631 { 1638 {
1632 m_log.Info("[DATASTORE]: SQLite Database doesn't exist... creating"); 1639 m_log.Info("[DATASTORE]: SQLite Database doesn't exist... creating");
1633 InitDB(conn); 1640 return false;
1634 }
1635
1636 pDa.Fill(tmpDS, "prims");
1637 sDa.Fill(tmpDS, "primshapes");
1638
1639 if (persistPrimInventories)
1640 iDa.Fill(tmpDS, "primitems");
1641
1642 tDa.Fill(tmpDS, "terrain");
1643 lDa.Fill(tmpDS, "land");
1644 lalDa.Fill(tmpDS, "landaccesslist");
1645
1646 foreach (DataColumn col in createPrimTable().Columns)
1647 {
1648 if (!tmpDS.Tables["prims"].Columns.Contains(col.ColumnName))
1649 {
1650 m_log.Info("[REGION DB]: Missing required column:" + col.ColumnName);
1651 return false;
1652 }
1653 } 1641 }
1654 1642
1655 foreach (DataColumn col in createShapeTable().Columns) 1643 // if we've gotten this far, and our version is still 0,
1656 { 1644 // it's because the migration was never done, so
1657 if (!tmpDS.Tables["primshapes"].Columns.Contains(col.ColumnName)) 1645 // initialize to 1 just to sync up to where we should be.
1658 { 1646
1659 m_log.Info("[REGION DB]: Missing required column:" + col.ColumnName); 1647 if (m.Version == 0)
1660 return false; 1648 m.Version = 1;
1661 } 1649
1662 } 1650 // pDa.Fill(tmpDS, "prims");
1663 1651 // sDa.Fill(tmpDS, "primshapes");
1664 // XXX primitems should probably go here eventually 1652
1665 1653 // if (persistPrimInventories)
1666 foreach (DataColumn col in createTerrainTable().Columns) 1654 // iDa.Fill(tmpDS, "primitems");
1667 { 1655
1668 if (!tmpDS.Tables["terrain"].Columns.Contains(col.ColumnName)) 1656 // tDa.Fill(tmpDS, "terrain");
1669 { 1657 // lDa.Fill(tmpDS, "land");
1670 m_log.Info("[REGION DB]: Missing require column:" + col.ColumnName); 1658 // lalDa.Fill(tmpDS, "landaccesslist");
1671 return false; 1659
1672 } 1660 // foreach (DataColumn col in createPrimTable().Columns)
1673 } 1661 // {
1674 1662 // if (!tmpDS.Tables["prims"].Columns.Contains(col.ColumnName))
1675 foreach (DataColumn col in createLandTable().Columns) 1663 // {
1676 { 1664 // m_log.Info("[REGION DB]: Missing required column:" + col.ColumnName);
1677 if (!tmpDS.Tables["land"].Columns.Contains(col.ColumnName)) 1665 // return false;
1678 { 1666 // }
1679 m_log.Info("[REGION DB]: Missing require column:" + col.ColumnName); 1667 // }
1680 return false; 1668
1681 } 1669 // foreach (DataColumn col in createShapeTable().Columns)
1682 } 1670 // {
1683 1671 // if (!tmpDS.Tables["primshapes"].Columns.Contains(col.ColumnName))
1684 foreach (DataColumn col in createLandAccessListTable().Columns) 1672 // {
1685 { 1673 // m_log.Info("[REGION DB]: Missing required column:" + col.ColumnName);
1686 if (!tmpDS.Tables["landaccesslist"].Columns.Contains(col.ColumnName)) 1674 // return false;
1687 { 1675 // }
1688 m_log.Info("[DATASTORE]: Missing require column:" + col.ColumnName); 1676 // }
1689 return false; 1677
1690 } 1678 // // XXX primitems should probably go here eventually
1691 } 1679
1680 // foreach (DataColumn col in createTerrainTable().Columns)
1681 // {
1682 // if (!tmpDS.Tables["terrain"].Columns.Contains(col.ColumnName))
1683 // {
1684 // m_log.Info("[REGION DB]: Missing require column:" + col.ColumnName);
1685 // return false;
1686 // }
1687 // }
1688
1689 // foreach (DataColumn col in createLandTable().Columns)
1690 // {
1691 // if (!tmpDS.Tables["land"].Columns.Contains(col.ColumnName))
1692 // {
1693 // m_log.Info("[REGION DB]: Missing require column:" + col.ColumnName);
1694 // return false;
1695 // }
1696 // }
1697
1698 // foreach (DataColumn col in createLandAccessListTable().Columns)
1699 // {
1700 // if (!tmpDS.Tables["landaccesslist"].Columns.Contains(col.ColumnName))
1701 // {
1702 // m_log.Info("[DATASTORE]: Missing require column:" + col.ColumnName);
1703 // return false;
1704 // }
1705 // }
1692 1706
1693 return true; 1707 return true;
1694 } 1708 }