diff --git a/OpenSim/Framework/Data.MySQL/MySQLAssetData.cs b/OpenSim/Framework/Data.MySQL/MySQLAssetData.cs index 70e04b6fac..5a169ac8ca 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLAssetData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLAssetData.cs @@ -40,9 +40,28 @@ namespace OpenSim.Framework.Data.MySQL } - public AssetBase FetchAsset(LLUUID uuid) + public AssetBase FetchAsset(LLUUID assetID) { - throw new Exception("The method or operation is not implemented."); + AssetBase asset = null; + + MySqlCommand cmd = new MySqlCommand("SELECT name, description, assetType, invType, local, temporary, data FROM assets WHERE id=?id", _dbConnection.Connection); + MySqlParameter p = cmd.Parameters.Add("?id", MySqlDbType.Binary, 16); + p.Value = assetID.GetBytes(); + using (MySqlDataReader dbReader = cmd.ExecuteReader(System.Data.CommandBehavior.SingleRow)) + { + if (dbReader.Read()) + { + asset = new AssetBase(); + asset.Data = (byte[])dbReader["data"]; + asset.Description = (string)dbReader["description"]; + asset.FullID = assetID; + asset.InvType = (sbyte)dbReader["invType"]; + asset.Local = ((sbyte)dbReader["local"])!=0?true:false; + asset.Name = (string)dbReader["name"]; + asset.Type = (sbyte)dbReader["assetType"]; + } + } + return asset; } public void CreateAsset(AssetBase asset) diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs index 6423f280a7..7bd1273861 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs @@ -225,10 +225,13 @@ namespace OpenSim.Framework.Data.MySQL MySqlDataReader reader = result.ExecuteReader(); List items = new List(); - while(reader.Read()) + while (reader.Read()) items.Add(readInventoryFolder(reader)); - InventoryFolderBase rootFolder = items[0]; //should only be one folder with parent set to zero (the root one). + InventoryFolderBase rootFolder = null; + if (items.Count > 0) + rootFolder = items[0]; //should only be one folder with parent set to zero (the root one). + reader.Close(); result.Dispose(); diff --git a/OpenSim/Framework/Data.MySQL/Resources/CreateAssetsTable.sql b/OpenSim/Framework/Data.MySQL/Resources/CreateAssetsTable.sql index 049a3a26bb..3b6fff25b2 100644 --- a/OpenSim/Framework/Data.MySQL/Resources/CreateAssetsTable.sql +++ b/OpenSim/Framework/Data.MySQL/Resources/CreateAssetsTable.sql @@ -2,8 +2,8 @@ CREATE TABLE `assets` ( `id` binary(16) NOT NULL, `name` varchar(64) NOT NULL, `description` varchar(64) NOT NULL, - `assetType` smallint(5) unsigned NOT NULL, - `invType` smallint(5) unsigned NOT NULL, + `assetType` TINYINT(4) NOT NULL, + `invType` TINYINT(4) NOT NULL, `local` tinyint(1) NOT NULL, `temporary` tinyint(1) NOT NULL, `data` longblob NOT NULL, diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 20152d8674..7af80643d2 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -80,6 +80,7 @@ namespace OpenSim private string standaloneWelcomeMessage = null; private string standaloneInventoryPlugin = "OpenSim.Framework.Data.SQLite.dll"; private string standaloneUserPlugin = "OpenSim.Framework.Data.DB4o.dll"; + private string standaloneAssetPlugin = "OpenSim.Framework.Data.SQLite.dll"; private string m_assetStorage = "db4o"; @@ -131,6 +132,7 @@ namespace OpenSim standaloneAuthenticate = configSource.Configs["StandAlone"].GetBoolean("accounts_authenticate", false); standaloneWelcomeMessage = configSource.Configs["StandAlone"].GetString("welcome_message", "Welcome to OpenSim"); standaloneInventoryPlugin = configSource.Configs["StandAlone"].GetString("inventory_plugin", "OpenSim.Framework.Data.SQLite.dll"); + standaloneAssetPlugin = configSource.Configs["StandAlone"].GetString("userDatabase_plugin", "OpenSim.Framework.Data.SQLite.dll"); standaloneUserPlugin = configSource.Configs["StandAlone"].GetString("userDatabase_plugin", "OpenSim.Framework.Data.DB4o.dll"); m_networkServersInfo.loadFromConfiguration(configSource); @@ -283,7 +285,7 @@ namespace OpenSim } else { - assetServer = new SQLAssetServer("OpenSim.Framework.Data.SQLite.dll"); + assetServer = new SQLAssetServer(standaloneAssetPlugin); } assetServer.SetServerInfo(m_networkServersInfo.AssetURL, m_networkServersInfo.AssetSendKey); m_assetCache = new AssetCache(assetServer);