From 48a300fa2fead5026e549b264c56e7f9da1d3c9f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 24 Jun 2024 13:48:46 -0400 Subject: [PATCH] Adding missing 'regionextra' table and associated handlers to the PgSQL adapter. Signed-off-by: UbitUmarov --- OpenSim/Data/PGSQL/PGSQLSimulationData.cs | 49 ++++++++++++++++++- .../PGSQL/Resources/RegionStore.migrations | 11 +++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs index a743cc835b..931459aa74 100755 --- a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs @@ -2020,15 +2020,62 @@ namespace OpenSim.Data.PGSQL public void SaveExtra(UUID regionID, string name, string value) { + const string queryString = """ + INSERT INTO regionextra ("RegionID", "Name", "value") + VALUES (:RegionID, :Name, :Value) + """; + using var connection = new NpgsqlConnection(m_connectionString); + connection.Open(); + using var command = new NpgsqlCommand(queryString, connection, connection.BeginTransaction()); + try + { + command.Parameters.AddWithValue("RegionID", regionID.ToString()); + command.Parameters.AddWithValue("Name", name); + command.Parameters.AddWithValue("Value", value); + command.ExecuteNonQuery(); + command.Transaction.Commit(); + } + catch (Exception e) + { + Console.WriteLine(e); + command.Transaction.Rollback(); + } } public void RemoveExtra(UUID regionID, string name) { + const string queryString = """DELETE FROM regionextra WHERE "RegionID"=:RegionID AND "Name"=:Name"""; + using var connection = new NpgsqlConnection(m_connectionString); + connection.Open(); + using var command = new NpgsqlCommand(queryString, connection, connection.BeginTransaction()); + try + { + command.Parameters.AddWithValue("RegionID", regionID.ToString()); + command.Parameters.AddWithValue("Name", name); + command.ExecuteNonQuery(); + command.Transaction.Commit(); + } + catch (Exception e) + { + Console.WriteLine(e); + command.Transaction.Rollback(); + } } public Dictionary GetExtra(UUID regionID) { - return null; + const string queryString = """SELECT * FROM regionextra WHERE "RegionID" = :RegionID"""; + using NpgsqlConnection conn = new NpgsqlConnection(m_connectionString); + using NpgsqlCommand cmd = new NpgsqlCommand(queryString, conn); + cmd.Parameters.Add(_Database.CreateParameter("RegionID", regionID.ToString())); + conn.Open(); + using NpgsqlDataReader reader = cmd.ExecuteReader(); + Dictionary extraSettings = new Dictionary(); + while (reader.Read()) + { + extraSettings.Add(reader["Name"].ToString(), reader["value"].ToString()); + } + return extraSettings; } } } diff --git a/OpenSim/Data/PGSQL/Resources/RegionStore.migrations b/OpenSim/Data/PGSQL/Resources/RegionStore.migrations index 03d58905c0..bde59a7c29 100644 --- a/OpenSim/Data/PGSQL/Resources/RegionStore.migrations +++ b/OpenSim/Data/PGSQL/Resources/RegionStore.migrations @@ -1293,3 +1293,14 @@ ALTER TABLE spawn_points DROP CONSTRAINT spawn_points_pkey; ALTER TABLE spawn_points ADD CONSTRAINT spawn_points_pkey PRIMARY KEY ("RegionUUID", "Yaw", "Pitch", "Distance"); COMMIT; + +:VERSION 57 #----- Adding a table missing from the PgSQL adapter +BEGIN; +CREATE TABLE "regionextra" + ( + "RegionID" char(36), + "Name" varchar(32), + "value" text, + PRIMARY KEY ("RegionID", "Name") + ); +COMMIT;