|
@@ -122,18 +122,17 @@ namespace Emby.Server.Implementations.Data
|
|
|
{
|
|
|
WriteConnections = new ConnectionPool(WriteConnectionsCount, CreateWriteConnection);
|
|
|
ReadConnections = new ConnectionPool(ReadConnectionsCount, CreateReadConnection);
|
|
|
- }
|
|
|
|
|
|
- protected ManagedConnection GetConnection(bool readOnly = false)
|
|
|
- {
|
|
|
- if (readOnly)
|
|
|
+ // Configuration and pragmas can affect VACUUM so it needs to be last.
|
|
|
+ using (var connection = GetConnection(true))
|
|
|
{
|
|
|
- return ReadConnections.GetConnection();
|
|
|
+ connection.Execute("VACUUM");
|
|
|
}
|
|
|
-
|
|
|
- return WriteConnections.GetConnection();
|
|
|
}
|
|
|
|
|
|
+ protected ManagedConnection GetConnection(bool readOnly = false)
|
|
|
+ => readOnly ? ReadConnections.GetConnection() : WriteConnections.GetConnection();
|
|
|
+
|
|
|
protected SQLiteDatabaseConnection CreateWriteConnection()
|
|
|
{
|
|
|
var writeConnection = SQLite3.Open(
|
|
@@ -173,52 +172,44 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
|
writeConnection.Execute("PRAGMA temp_store=" + (int)TempStore);
|
|
|
|
|
|
- // Configuration and pragmas can affect VACUUM so it needs to be last.
|
|
|
- writeConnection.Execute("VACUUM");
|
|
|
-
|
|
|
return writeConnection;
|
|
|
}
|
|
|
|
|
|
protected SQLiteDatabaseConnection CreateReadConnection()
|
|
|
{
|
|
|
- var writeConnection = SQLite3.Open(
|
|
|
+ var connection = SQLite3.Open(
|
|
|
DbFilePath,
|
|
|
DefaultConnectionFlags | ConnectionFlags.ReadOnly,
|
|
|
null);
|
|
|
|
|
|
if (CacheSize.HasValue)
|
|
|
{
|
|
|
- writeConnection.Execute("PRAGMA cache_size=" + CacheSize.Value);
|
|
|
+ connection.Execute("PRAGMA cache_size=" + CacheSize.Value);
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(LockingMode))
|
|
|
{
|
|
|
- writeConnection.Execute("PRAGMA locking_mode=" + LockingMode);
|
|
|
+ connection.Execute("PRAGMA locking_mode=" + LockingMode);
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(JournalMode))
|
|
|
{
|
|
|
- writeConnection.Execute("PRAGMA journal_mode=" + JournalMode);
|
|
|
+ connection.Execute("PRAGMA journal_mode=" + JournalMode);
|
|
|
}
|
|
|
|
|
|
if (JournalSizeLimit.HasValue)
|
|
|
{
|
|
|
- writeConnection.Execute("PRAGMA journal_size_limit=" + JournalSizeLimit.Value);
|
|
|
+ connection.Execute("PRAGMA journal_size_limit=" + JournalSizeLimit.Value);
|
|
|
}
|
|
|
|
|
|
if (Synchronous.HasValue)
|
|
|
{
|
|
|
- writeConnection.Execute("PRAGMA synchronous=" + (int)Synchronous.Value);
|
|
|
+ connection.Execute("PRAGMA synchronous=" + (int)Synchronous.Value);
|
|
|
}
|
|
|
|
|
|
- if (PageSize.HasValue)
|
|
|
- {
|
|
|
- writeConnection.Execute("PRAGMA page_size=" + PageSize.Value);
|
|
|
- }
|
|
|
+ connection.Execute("PRAGMA temp_store=" + (int)TempStore);
|
|
|
|
|
|
- writeConnection.Execute("PRAGMA temp_store=" + (int)TempStore);
|
|
|
-
|
|
|
- return writeConnection;
|
|
|
+ return connection;
|
|
|
}
|
|
|
|
|
|
public IStatement PrepareStatement(ManagedConnection connection, string sql)
|