aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Data
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-11-29 14:47:45 -0500
committerGitHub <noreply@github.com>2016-11-29 14:47:45 -0500
commit8c2095b24ee3228c0e112ebc3cfcb73e146d2a78 (patch)
tree6a83c8132f9eac18c0a0bc2461e191c5c725c3c1 /Emby.Server.Implementations/Data
parent1d09262963fb1d09f3a04843922a6a7a2f4364b3 (diff)
parent456d5e5b760abe46c8dedf08b2465d2bd3ced4af (diff)
Merge pull request #2317 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations/Data')
-rw-r--r--Emby.Server.Implementations/Data/BaseSqliteRepository.cs47
-rw-r--r--Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs11
-rw-r--r--Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs13
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs19
-rw-r--r--Emby.Server.Implementations/Data/SqliteUserDataRepository.cs12
-rw-r--r--Emby.Server.Implementations/Data/SqliteUserRepository.cs11
6 files changed, 53 insertions, 60 deletions
diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
index 308b8356f..e066d02d3 100644
--- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
+++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
@@ -30,6 +30,11 @@ namespace Emby.Server.Implementations.Data
get { return false; }
}
+ protected TransactionMode TransactionMode
+ {
+ get { return TransactionMode.Immediate; }
+ }
+
static BaseSqliteRepository()
{
SQLite3.EnableSharedCache = false;
@@ -62,20 +67,8 @@ namespace Emby.Server.Implementations.Data
//Logger.Info("Opening write connection");
}
- isReadOnly = false;
-
- if (isReadOnly)
- {
- connectionFlags = ConnectionFlags.ReadOnly;
- //connectionFlags = ConnectionFlags.Create;
- //connectionFlags |= ConnectionFlags.ReadWrite;
- }
- else
- {
- connectionFlags = ConnectionFlags.Create;
- connectionFlags |= ConnectionFlags.ReadWrite;
- }
-
+ connectionFlags = ConnectionFlags.Create;
+ connectionFlags |= ConnectionFlags.ReadWrite;
connectionFlags |= ConnectionFlags.SharedCached;
connectionFlags |= ConnectionFlags.NoMutex;
@@ -84,6 +77,8 @@ namespace Emby.Server.Implementations.Data
if (string.IsNullOrWhiteSpace(_defaultWal))
{
_defaultWal = db.Query("PRAGMA journal_mode").SelectScalarString().First();
+
+ Logger.Info("Default journal_mode for {0} is {1}", DbFilePath, _defaultWal);
}
var queries = new List<string>
@@ -110,7 +105,7 @@ namespace Emby.Server.Implementations.Data
//Logger.Info("synchronous: " + db.Query("PRAGMA synchronous").SelectScalarString().First());
//Logger.Info("temp_store: " + db.Query("PRAGMA temp_store").SelectScalarString().First());
- if (!string.Equals(_defaultWal, "wal", StringComparison.OrdinalIgnoreCase))
+ /*if (!string.Equals(_defaultWal, "wal", StringComparison.OrdinalIgnoreCase))
{
queries.Add("PRAGMA journal_mode=WAL");
@@ -119,7 +114,7 @@ namespace Emby.Server.Implementations.Data
db.ExecuteAll(string.Join(";", queries.ToArray()));
}
}
- else if (queries.Count > 0)
+ else*/ if (queries.Count > 0)
{
db.ExecuteAll(string.Join(";", queries.ToArray()));
}
@@ -127,6 +122,26 @@ namespace Emby.Server.Implementations.Data
return db;
}
+ protected void RunDefaultInitialization(IDatabaseConnection db)
+ {
+ var queries = new List<string>
+ {
+ "PRAGMA journal_mode=WAL",
+ "PRAGMA page_size=4096",
+ };
+
+ if (EnableTempStoreMemory)
+ {
+ queries.AddRange(new List<string>
+ {
+ "pragma default_temp_store = memory",
+ "pragma temp_store = memory"
+ });
+ }
+
+ db.ExecuteAll(string.Join(";", queries.ToArray()));
+ }
+
protected virtual bool EnableTempStoreMemory
{
get
diff --git a/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs b/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs
index 1bd64b21d..0197efb51 100644
--- a/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs
@@ -54,12 +54,7 @@ namespace Emby.Server.Implementations.Data
{
using (var connection = CreateConnection())
{
- connection.ExecuteAll(string.Join(";", new[]
- {
- "PRAGMA page_size=4096",
- "pragma default_temp_store = memory",
- "pragma temp_store = memory"
- }));
+ RunDefaultInitialization(connection);
string[] queries = {
@@ -100,7 +95,7 @@ namespace Emby.Server.Implementations.Data
connection.RunInTransaction(db =>
{
SaveDisplayPreferences(displayPreferences, userId, client, db);
- });
+ }, TransactionMode);
}
}
}
@@ -147,7 +142,7 @@ namespace Emby.Server.Implementations.Data
{
SaveDisplayPreferences(displayPreference, userId, displayPreference.Client, db);
}
- });
+ }, TransactionMode);
}
}
}
diff --git a/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs b/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs
index 23bab883e..603437120 100644
--- a/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs
@@ -31,12 +31,7 @@ namespace Emby.Server.Implementations.Data
{
using (var connection = CreateConnection())
{
- connection.ExecuteAll(string.Join(";", new[]
- {
- "PRAGMA page_size=4096",
- "pragma default_temp_store = memory",
- "pragma temp_store = memory"
- }));
+ RunDefaultInitialization(connection);
string[] queries = {
@@ -85,7 +80,7 @@ namespace Emby.Server.Implementations.Data
statement.MoveNext();
}
- });
+ }, TransactionMode);
}
}
}
@@ -108,7 +103,7 @@ namespace Emby.Server.Implementations.Data
statement.TryBind("@ResultId", id.ToGuidParamValue());
statement.MoveNext();
}
- });
+ }, TransactionMode);
}
}
}
@@ -124,7 +119,7 @@ namespace Emby.Server.Implementations.Data
var commandText = "delete from FileOrganizerResults";
db.Execute(commandText);
- });
+ }, TransactionMode);
}
}
}
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 29aacc059..9c096916f 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -157,12 +157,7 @@ namespace Emby.Server.Implementations.Data
{
using (var connection = CreateConnection())
{
- connection.ExecuteAll(string.Join(";", new[]
- {
- "PRAGMA page_size=4096",
- "PRAGMA default_temp_store=memory",
- "PRAGMA temp_store=memory"
- }));
+ RunDefaultInitialization(connection);
var createMediaStreamsTableCommand
= "create table if not exists mediastreams (ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, CodecTag TEXT NULL, Comment TEXT NULL, NalLengthSize TEXT NULL, IsAvc BIT NULL, Title TEXT NULL, TimeBase TEXT NULL, CodecTimeBase TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))";
@@ -316,7 +311,7 @@ namespace Emby.Server.Implementations.Data
AddColumn(db, "MediaStreams", "RefFrames", "INT", existingColumnNames);
AddColumn(db, "MediaStreams", "KeyFrames", "TEXT", existingColumnNames);
AddColumn(db, "MediaStreams", "IsAnamorphic", "BIT", existingColumnNames);
- });
+ }, TransactionMode);
string[] postQueries =
@@ -396,9 +391,9 @@ namespace Emby.Server.Implementations.Data
{
try
{
- using (WriteLock.Write())
+ using (var connection = CreateConnection())
{
- using (var connection = CreateConnection())
+ using (WriteLock.Write())
{
connection.RunQueries(new string[]
{
@@ -697,7 +692,7 @@ namespace Emby.Server.Implementations.Data
connection.RunInTransaction(db =>
{
SaveItemsInTranscation(db, tuples);
- });
+ }, TransactionMode);
}
}
}
@@ -2211,7 +2206,7 @@ namespace Emby.Server.Implementations.Data
index++;
}
}
- });
+ }, TransactionMode);
}
}
}
@@ -4531,7 +4526,7 @@ namespace Emby.Server.Implementations.Data
// Delete the item
ExecuteWithSingleParam(db, "delete from TypedBaseItems where guid=@Id", id.ToGuidParamValue());
- });
+ }, TransactionMode);
}
}
}
diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
index b01f215e0..b65e5d1b3 100644
--- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
@@ -51,8 +51,6 @@ namespace Emby.Server.Implementations.Data
{
string[] queries = {
- "pragma temp_store = memory",
-
"create table if not exists userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)",
"create table if not exists DataSettings (IsUserDataImported bit)",
@@ -78,7 +76,7 @@ namespace Emby.Server.Implementations.Data
AddColumn(db, "userdata", "AudioStreamIndex", "int", existingColumnNames);
AddColumn(db, "userdata", "SubtitleStreamIndex", "int", existingColumnNames);
- });
+ }, TransactionMode);
ImportUserDataIfNeeded(connection);
}
@@ -116,7 +114,7 @@ namespace Emby.Server.Implementations.Data
statement.TryBind("@IsUserDataImported", true);
statement.MoveNext();
}
- });
+ }, TransactionMode);
}
private void ImportUserData(IDatabaseConnection connection, string file)
@@ -128,7 +126,7 @@ namespace Emby.Server.Implementations.Data
connection.RunInTransaction(db =>
{
db.Execute("REPLACE INTO userdata(" + columns + ") SELECT " + columns + " FROM UserDataBackup.userdata;");
- });
+ }, TransactionMode);
}
/// <summary>
@@ -197,7 +195,7 @@ namespace Emby.Server.Implementations.Data
connection.RunInTransaction(db =>
{
SaveUserData(db, userId, key, userData);
- });
+ }, TransactionMode);
}
}
}
@@ -271,7 +269,7 @@ namespace Emby.Server.Implementations.Data
{
SaveUserData(db, userId, userItemData.Key, userItemData);
}
- });
+ }, TransactionMode);
}
}
}
diff --git a/Emby.Server.Implementations/Data/SqliteUserRepository.cs b/Emby.Server.Implementations/Data/SqliteUserRepository.cs
index f902d981f..99d7563c7 100644
--- a/Emby.Server.Implementations/Data/SqliteUserRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteUserRepository.cs
@@ -50,12 +50,7 @@ namespace Emby.Server.Implementations.Data
{
using (var connection = CreateConnection())
{
- connection.ExecuteAll(string.Join(";", new[]
- {
- "PRAGMA page_size=4096",
- "pragma default_temp_store = memory",
- "pragma temp_store = memory"
- }));
+ RunDefaultInitialization(connection);
string[] queries = {
@@ -102,7 +97,7 @@ namespace Emby.Server.Implementations.Data
statement.TryBind("@data", serialized);
statement.MoveNext();
}
- });
+ }, TransactionMode);
}
}
}
@@ -164,7 +159,7 @@ namespace Emby.Server.Implementations.Data
statement.TryBind("@id", user.Id.ToGuidParamValue());
statement.MoveNext();
}
- });
+ }, TransactionMode);
}
}
}