summaryrefslogtreecommitdiff
path: root/multimedia/mythtv/files/patch-libs_libmythtv_dbcheck.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/mythtv/files/patch-libs_libmythtv_dbcheck.cpp')
-rw-r--r--multimedia/mythtv/files/patch-libs_libmythtv_dbcheck.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/multimedia/mythtv/files/patch-libs_libmythtv_dbcheck.cpp b/multimedia/mythtv/files/patch-libs_libmythtv_dbcheck.cpp
new file mode 100644
index 000000000000..0ff22fe5d8aa
--- /dev/null
+++ b/multimedia/mythtv/files/patch-libs_libmythtv_dbcheck.cpp
@@ -0,0 +1,64 @@
+Database schema 1347 fails to update due to bad SQL statement
+Ref: https://code.mythtv.org/trac/ticket/13155
+
+--- libs/libmythtv/dbcheck.cpp.orig 2018-02-01 11:15:37 UTC
++++ libs/libmythtv/dbcheck.cpp
+@@ -3340,25 +3340,24 @@ NULL
+
+ if (dbver == "1346")
+ {
+- QString master;
++ QList<QByteArray> updates_ba;
+ // Create new MasterServerName setting
+ if (gCoreContext->IsMasterHost())
+- master =
+- "insert into settings (value,data,hostname) "
+- "values('MasterServerName','"
+- + gCoreContext->GetHostName() + "', null);";
++ updates_ba.push_back(
++ QString("INSERT INTO settings (value, data, hostname) "
++ "VALUES ('MasterServerName', '%1', NULL);")
++ .arg(gCoreContext->GetHostName()).toLocal8Bit());
+ else
+- master =
+- "insert into settings (value,data,hostname) "
+- "select 'MasterServerName', b.hostname, null "
+- "from settings a, settings b "
+- "where a.value = 'MasterServerIP' "
+- "and b.value in ('BackendServerIP','BackendServerIP6')"
+- "and a.data = b.data;";
++ updates_ba.push_back(
++ QString("INSERT INTO settings (value,data,hostname) "
++ "SELECT 'MasterServerName', b.hostname, NULL "
++ "FROM settings a, settings b "
++ "WHERE a.value = 'MasterServerIP' "
++ "AND b.value IN ('BackendServerIP','BackendServerIP6')"
++ "AND a.data = b.data;")
++ .toLocal8Bit());
+
+- const char *updates[] = {
+- // Create new MasterServerName setting
+- master.toLocal8Bit().constData(),
++ const char *post_sql[] = {
+ // Create new BackendServerAddr setting for each backend server
+ // Assume using IPV4 value.
+ "insert into settings (value,data,hostname) "
+@@ -3385,8 +3384,17 @@ NULL
+ // Delete obsolete settings
+ "delete from settings "
+ "where value in ('WatchTVGuide');",
+- NULL
+ };
++
++ for (uint i = 0; i < sizeof(post_sql)/sizeof(char*); i++)
++ updates_ba.push_back(QByteArray(post_sql[i]));
++
++ // Convert update ByteArrays to NULL terminated char**
++ QList<QByteArray>::const_iterator it = updates_ba.begin();
++ vector<const char*> updates;
++ for (; it != updates_ba.end(); ++it)
++ updates.push_back((*it).constData());
++ updates.push_back(NULL);
+
+ if (!performActualUpdate(&updates[0], "1347", dbver))
+ return false;