MythTV  0.26-pre
dbcheck.cpp
Go to the documentation of this file.
00001 #include <iostream>
00002 #include <stdio.h>
00003 using namespace std;
00004 
00005 #include <QString>
00006 #include <QSqlError>
00007 #include "dbcheck.h"
00008 
00009 #include "mythversion.h"
00010 #include "dbutil.h"
00011 #include "mythcorecontext.h"
00012 #include "schemawizard.h"
00013 #include "mythdb.h"
00014 #include "mythlogging.h"
00015 #include "diseqcsettings.h" // for convert_diseqc_db()
00016 #include "videodbcheck.h" // for 1267
00017 #include "compat.h"
00018 #include "recordingrule.h"
00019 
00020 #define MINIMUM_DBMS_VERSION 5,0,15
00021 
00022 const QString currentDatabaseVersion = MYTH_DATABASE_VERSION;
00023 
00024 static bool UpdateDBVersionNumber(const QString &newnumber, QString &dbver);
00025 static bool performActualUpdate(
00026     const char **updates, const char *version, QString &dbver);
00027 static bool doUpgradeTVDatabaseSchema(void);
00028 
00343 static bool UpdateDBVersionNumber(const QString &newnumber, QString &dbver)
00344 {
00345     // delete old schema version
00346     MSqlQuery query(MSqlQuery::InitCon());
00347 
00348     QString thequery = "DELETE FROM settings WHERE value='DBSchemaVer';";
00349     query.prepare(thequery);
00350 
00351     if (!query.exec())
00352     {
00353         QString msg =
00354             QString("DB Error (Deleting old DB version number): \n"
00355                     "Query was: %1 \nError was: %2 \nnew version: %3")
00356             .arg(thequery)
00357             .arg(MythDB::DBErrorMessage(query.lastError()))
00358             .arg(newnumber);
00359         LOG(VB_GENERAL, LOG_ERR, msg);
00360         return false;
00361     }
00362 
00363     // set new schema version
00364     thequery = QString("INSERT INTO settings (value, data, hostname) "
00365                        "VALUES ('DBSchemaVer', %1, NULL);").arg(newnumber);
00366     query.prepare(thequery);
00367 
00368     if (!query.exec())
00369     {
00370         QString msg =
00371             QString("DB Error (Setting new DB version number): \n"
00372                     "Query was: %1 \nError was: %2 \nnew version: %3")
00373             .arg(thequery)
00374             .arg(MythDB::DBErrorMessage(query.lastError()))
00375             .arg(newnumber);
00376         LOG(VB_GENERAL, LOG_ERR, msg);
00377         return false;
00378     }
00379 
00380     dbver = newnumber;
00381 
00382     return true;
00383 }
00384 
00394 static bool performActualUpdate(
00395     const char **updates, const char *version, QString &dbver)
00396 {
00397     MSqlQuery query(MSqlQuery::InitCon());
00398 
00399     LOG(VB_GENERAL, LOG_CRIT, QString("Upgrading to MythTV schema version ") +
00400             version);
00401 
00402     int counter = 0;
00403     const char *thequery = updates[counter];
00404 
00405     while (thequery != NULL)
00406     {
00407         if (strlen(thequery) && !query.exec(thequery))
00408         {
00409             QString msg =
00410                 QString("DB Error (Performing database upgrade): \n"
00411                         "Query was: %1 \nError was: %2 \nnew version: %3")
00412                 .arg(thequery)
00413                 .arg(MythDB::DBErrorMessage(query.lastError()))
00414                 .arg(version);
00415             LOG(VB_GENERAL, LOG_ERR, msg);
00416             return false;
00417         }
00418 
00419         counter++;
00420         thequery = updates[counter];
00421     }
00422 
00423     if (!UpdateDBVersionNumber(version, dbver))
00424         return false;
00425 
00426     return true;
00427 }
00428 
00443 bool UpgradeTVDatabaseSchema(const bool upgradeAllowed,
00444                              const bool upgradeIfNoUI)
00445 {
00446 #ifdef IGNORE_SCHEMA_VER_MISMATCH
00447     return true;
00448 #endif
00449     SchemaUpgradeWizard *schema_wizard = NULL;
00450 
00451     // Suppress DB messages and turn of the settings cache,
00452     // These are likely to confuse the users and the code, respectively.
00453     GetMythDB()->SetSuppressDBMessages(true);
00454     gCoreContext->ActivateSettingsCache(false);
00455 
00456     // Get the schema upgrade lock
00457     MSqlQuery query(MSqlQuery::InitCon());
00458     bool locked = DBUtil::TryLockSchema(query, 1);
00459     for (uint i = 0; i < 2*60 && !locked; i++)
00460     {
00461         LOG(VB_GENERAL, LOG_INFO, "Waiting for database schema upgrade lock");
00462         locked = DBUtil::TryLockSchema(query, 1);
00463         if (locked)
00464             LOG(VB_GENERAL, LOG_INFO, "Got schema upgrade lock");
00465     }
00466     if (!locked)
00467     {
00468         LOG(VB_GENERAL, LOG_INFO, "Failed to get schema upgrade lock");
00469         goto upgrade_error_exit;
00470     }
00471 
00472     // Determine if an upgrade is needed
00473     schema_wizard = SchemaUpgradeWizard::Get(
00474         "DBSchemaVer", "MythTV", currentDatabaseVersion);
00475     if (schema_wizard->Compare() == 0) // DB schema is what we need it to be..
00476         goto upgrade_ok_exit;
00477 
00478     if (!upgradeAllowed)
00479         LOG(VB_GENERAL, LOG_WARNING, "Not allowed to upgrade the database.");
00480 
00481     // Pop up messages, questions, warnings, etc.
00482     switch (schema_wizard->PromptForUpgrade(
00483                 "TV", upgradeAllowed, upgradeIfNoUI, MINIMUM_DBMS_VERSION))
00484     {
00485         case MYTH_SCHEMA_USE_EXISTING:
00486             goto upgrade_ok_exit;
00487         case MYTH_SCHEMA_ERROR:
00488         case MYTH_SCHEMA_EXIT:
00489             goto upgrade_error_exit;
00490         case MYTH_SCHEMA_UPGRADE:
00491             break;
00492     }
00493 
00494     LOG(VB_GENERAL, LOG_DEBUG, QString("Newest MythTV Schema Version : %1")
00495         .arg(currentDatabaseVersion));
00496 
00497     // Upgrade the schema
00498     if (!doUpgradeTVDatabaseSchema())
00499     {
00500         LOG(VB_GENERAL, LOG_ERR, "Database schema upgrade failed.");
00501         goto upgrade_error_exit;
00502     }
00503 
00504     LOG(VB_GENERAL, LOG_INFO, "Database schema upgrade complete.");
00505 
00506     // On any exit we want to re-enable the DB messages so errors
00507     // are reported and we want to make sure the setting cache is
00508     // enabled for good performance and we must unlock the schema
00509     // lock. We use gotos with labels so it's impossible to miss
00510     // these steps.
00511   upgrade_ok_exit:
00512     GetMythDB()->SetSuppressDBMessages(false);
00513     gCoreContext->ActivateSettingsCache(true);
00514     if (locked)
00515         DBUtil::UnlockSchema(query);
00516     return true;
00517 
00518   upgrade_error_exit:
00519     GetMythDB()->SetSuppressDBMessages(false);
00520     gCoreContext->ActivateSettingsCache(true);
00521     if (locked)
00522         DBUtil::UnlockSchema(query);
00523     return false;
00524 }
00525 
00539 static bool doUpgradeTVDatabaseSchema(void)
00540 {
00541     QString dbver = gCoreContext->GetSetting("DBSchemaVer");
00542 
00543     if (dbver == currentDatabaseVersion)
00544     {
00545         return true;
00546     }
00547 
00548     // Don't rely on this, please specify these when creating the database.
00549     {
00550         MSqlQuery query(MSqlQuery::InitCon());
00551         if (!query.exec(QString("ALTER DATABASE %1 DEFAULT "
00552                                 "CHARACTER SET utf8 COLLATE utf8_general_ci;")
00553                         .arg(gCoreContext->GetDatabaseParams().dbName)))
00554         {
00555             MythDB::DBError("UpgradeTVDatabaseSchema -- alter charset", query);
00556         }
00557     }
00558 
00559     if (DBUtil::IsNewDatabase())
00560     {
00561         if (!InitializeMythSchema())
00562             return false;
00563         dbver = gCoreContext->GetSetting("DBSchemaVer");
00564     }
00565 
00566     if (dbver.isEmpty() || dbver.toInt() <  1027)
00567     {
00568         LOG(VB_GENERAL, LOG_ERR, "Unrecognized database schema version. "
00569                                  "Unable to upgrade database.");
00570         return false;
00571     }
00572     else if (dbver.toInt() <  1244)
00573     {
00574         LOG(VB_GENERAL, LOG_ERR, "Your database version is too old to upgrade "
00575                                  "with this version of MythTV. You will need "
00576                                  "to use mythtv-setup from MythTV 0.22, 0.23, "
00577                                  "or 0.24 to upgrade your database before "
00578                                  "upgrading to this version of MythTV.");
00579         return false;
00580     }
00581 
00582     if (dbver == "1244")
00583     {
00584        const char *updates[] = {
00585 "ALTER TABLE cardinput DROP COLUMN freetoaironly;",
00586 "ALTER TABLE cardinput DROP COLUMN radioservices;",
00587 NULL
00588 };
00589         if (!performActualUpdate(updates, "1245", dbver))
00590             return false;
00591     }
00592 
00593     if (dbver == "1245")
00594     {
00595        const char *updates[] = {
00596 "DELETE FROM capturecard WHERE cardtype = 'DBOX2';",
00597 "DELETE FROM profilegroups WHERE cardtype = 'DBOX2';",
00598 "ALTER TABLE capturecard DROP COLUMN dbox2_port;",
00599 "ALTER TABLE capturecard DROP COLUMN dbox2_httpport;",
00600 "ALTER TABLE capturecard DROP COLUMN dbox2_host;",
00601 NULL
00602 };
00603        if (!performActualUpdate(updates, "1246", dbver))
00604             return false;
00605     }
00606 
00607     if (dbver == "1246")
00608     {
00609        const char *updates[] = {
00610 "ALTER TABLE recorded ADD COLUMN bookmarkupdate timestamp default 0 NOT NULL",
00611 "UPDATE recorded SET bookmarkupdate = lastmodified+1 WHERE bookmark = 1",
00612 "UPDATE recorded SET bookmarkupdate = lastmodified WHERE bookmark = 0",
00613 NULL
00614 };
00615        if (!performActualUpdate(updates, "1247", dbver))
00616             return false;
00617     }
00618 
00619     if (dbver == "1247")
00620     {
00621         const char *updates[] = {
00622 "INSERT INTO profilegroups SET name = \"Import Recorder\", cardtype = 'IMPORT', is_default = 1;",
00623 "INSERT INTO recordingprofiles SET name = \"Default\", profilegroup = 14;",
00624 "INSERT INTO recordingprofiles SET name = \"Live TV\", profilegroup = 14;",
00625 "INSERT INTO recordingprofiles SET name = \"High Quality\", profilegroup = 14;",
00626 "INSERT INTO recordingprofiles SET name = \"Low Quality\", profilegroup = 14;",
00627 NULL
00628 };
00629         if (!performActualUpdate(updates, "1248", dbver))
00630             return false;
00631     }
00632 
00633     if (dbver == "1248")
00634     {
00635        const char *updates[] = {
00636 "DELETE FROM keybindings WHERE action = 'CUSTOMEDIT' "
00637    "AND context = 'TV Frontend' AND keylist = 'E';",
00638 NULL
00639 };
00640         if (!performActualUpdate(updates, "1249", dbver))
00641             return false;
00642     }
00643 
00644     if (dbver == "1249")
00645     {
00646         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1250");
00647 
00648         MSqlQuery select(MSqlQuery::InitCon());
00649         select.prepare("SELECT hostname, data FROM settings "
00650                        " WHERE value = 'StickyKeys'");
00651 
00652         if (!select.exec())
00653         {
00654             MythDB::DBError("Unable to retrieve StickyKeys values.", select);
00655         }
00656         else
00657         {
00658             MSqlQuery update(MSqlQuery::InitCon());
00659             while (select.next())
00660             {
00661                 QString hostname = select.value(0).toString();
00662                 QString sticky_keys = select.value(1).toString();
00663 
00664                 if ("1" == sticky_keys)
00665                 {
00666                     // Only remap the keys if they're currently set to defaults
00667                     update.prepare("UPDATE keybindings "
00668                                    "   SET keylist  = :KEYS "
00669                                    " WHERE context  = 'TV Playback' AND "
00670                                    "       action   = :ACTION AND "
00671                                    "       hostname = :HOSTNAME AND "
00672                                    "       keylist  = :DEFAULT_KEYS");
00673 
00674                     QString keylist = "";
00675                     QString action = "SEEKFFWD";
00676                     QString default_keys = "Right";
00677 
00678                     update.bindValue(":KEYS", keylist);
00679                     update.bindValue(":ACTION", action);
00680                     update.bindValue(":HOSTNAME", hostname);
00681                     update.bindValue(":DEFAULT_KEYS", default_keys);
00682                     if (!update.exec())
00683                          MythDB::DBError("Unable to update keybindings",
00684                                          update);
00685 
00686                     keylist = "";
00687                     action = "SEEKRWND";
00688                     default_keys = "Left";
00689 
00690                     update.bindValue(":KEYS", keylist);
00691                     update.bindValue(":ACTION", action);
00692                     update.bindValue(":HOSTNAME", hostname);
00693                     update.bindValue(":DEFAULT_KEYS", default_keys);
00694                     if (!update.exec())
00695                          MythDB::DBError("Unable to update keybindings",
00696                                          update);
00697 
00698                     keylist = ">,.,Right";
00699                     action = "FFWDSTICKY";
00700                     default_keys = ">,.";
00701 
00702                     update.bindValue(":KEYS", keylist);
00703                     update.bindValue(":ACTION", action);
00704                     update.bindValue(":HOSTNAME", hostname);
00705                     update.bindValue(":DEFAULT_KEYS", default_keys);
00706                     if (!update.exec())
00707                          MythDB::DBError("Unable to update keybindings",
00708                                          update);
00709 
00710                     keylist = ",,<,Left";
00711                     action = "RWNDSTICKY";
00712                     default_keys = ",,<";
00713 
00714                     update.bindValue(":KEYS", keylist);
00715                     update.bindValue(":ACTION", action);
00716                     update.bindValue(":HOSTNAME", hostname);
00717                     update.bindValue(":DEFAULT_KEYS", default_keys);
00718                     if (!update.exec())
00719                          MythDB::DBError("Unable to update keybindings",
00720                                          update);
00721                 }
00722             }
00723         }
00724 
00725         if (!UpdateDBVersionNumber("1250", dbver))
00726             return false;
00727     }
00728 
00729     if (dbver == "1250")
00730     {
00731        const char *updates[] = {
00732 "UPDATE recorded SET bookmark = 1 WHERE bookmark != 0;",
00733 NULL
00734 };
00735         if (!performActualUpdate(updates, "1251", dbver))
00736             return false;
00737     }
00738 
00739     if (dbver == "1251")
00740     {
00741         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1252");
00742 
00743         MSqlQuery query(MSqlQuery::InitCon());
00744         query.prepare("SHOW INDEX FROM recgrouppassword");
00745 
00746         if (!query.exec())
00747         {
00748             MythDB::DBError("Unable to retrieve current indices on "
00749                             "recgrouppassword.", query);
00750         }
00751         else
00752         {
00753             while (query.next())
00754             {
00755                 QString index_name = query.value(2).toString();
00756 
00757                 if ("recgroup" == index_name)
00758                 {
00759                     MSqlQuery update(MSqlQuery::InitCon());
00760                     update.prepare("ALTER TABLE recgrouppassword "
00761                                    " DROP INDEX recgroup");
00762 
00763                     if (!update.exec())
00764                          MythDB::DBError("Unable to drop duplicate index on "
00765                                          "recgrouppassword. Ignoring.",
00766                                          update);
00767                     break;
00768                 }
00769             }
00770         }
00771 
00772         if (!UpdateDBVersionNumber("1252", dbver))
00773             return false;
00774     }
00775 
00776     if (dbver == "1252")
00777     {
00778         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1253");
00779 
00780         MSqlQuery select(MSqlQuery::InitCon());
00781         select.prepare("SELECT hostname, data FROM settings "
00782                        " WHERE value = 'StickyKeys'");
00783 
00784         if (!select.exec())
00785         {
00786             MythDB::DBError("Unable to retrieve StickyKeys values.", select);
00787         }
00788         else
00789         {
00790             MSqlQuery update(MSqlQuery::InitCon());
00791             while (select.next())
00792             {
00793                 QString hostname = select.value(0).toString();
00794                 QString sticky_keys = select.value(1).toString();
00795 
00796                 if ("1" == sticky_keys)
00797                 {
00798                     // Only remap the keys if they're currently set to defaults
00799                     update.prepare("UPDATE keybindings "
00800                                    "   SET keylist  = :KEYS "
00801                                    " WHERE context  = 'TV Playback' AND "
00802                                    "       action   = :ACTION AND "
00803                                    "       hostname = :HOSTNAME AND "
00804                                    "       keylist  = :DEFAULT_KEYS");
00805 
00806                     QString keylist = ">,.";
00807                     QString action = "FFWDSTICKY";
00808                     QString default_keys = ">,.,Right";
00809 
00810                     update.bindValue(":KEYS", keylist);
00811                     update.bindValue(":ACTION", action);
00812                     update.bindValue(":HOSTNAME", hostname);
00813                     update.bindValue(":DEFAULT_KEYS", default_keys);
00814                     if (!update.exec())
00815                          MythDB::DBError("Unable to update keybindings",
00816                                          update);
00817 
00818                     keylist = ",,<";
00819                     action = "RWNDSTICKY";
00820                     default_keys = ",,<,Left";
00821 
00822                     update.bindValue(":KEYS", keylist);
00823                     update.bindValue(":ACTION", action);
00824                     update.bindValue(":HOSTNAME", hostname);
00825                     update.bindValue(":DEFAULT_KEYS", default_keys);
00826                     if (!update.exec())
00827                          MythDB::DBError("Unable to update keybindings",
00828                                          update);
00829                 }
00830             }
00831         }
00832 
00833         if (!UpdateDBVersionNumber("1253", dbver))
00834             return false;
00835     }
00836 
00837     if (dbver == "1253")
00838     {
00839         if (gCoreContext->GetNumSetting("have-nit-fix") == 1)
00840         {
00841             // User has previously applied patch from ticket #7486.
00842             LOG(VB_GENERAL, LOG_CRIT,
00843                 "Upgrading to MythTV schema version 1254");
00844             if (!UpdateDBVersionNumber("1254", dbver))
00845                 return false;
00846         }
00847         else
00848         {
00849             const char *updates[] = {
00850                 "ALTER TABLE videosource ADD dvb_nit_id INT(6) DEFAULT -1;",
00851                 NULL
00852             };
00853             if (!performActualUpdate(updates, "1254", dbver))
00854                 return false;
00855         }
00856     }
00857 
00858     if (dbver == "1254")
00859     {
00860        const char *updates[] = {
00861 "ALTER TABLE cardinput DROP COLUMN shareable;",
00862 NULL
00863 };
00864         if (!performActualUpdate(updates, "1255", dbver))
00865             return false;
00866     }
00867 
00868     if (dbver == "1255")
00869     {
00870         const char *updates[] = {
00871 "INSERT INTO keybindings (SELECT 'Main Menu', 'EXIT', 'System Exit', "
00872     "(CASE data WHEN '1' THEN 'Ctrl+Esc' WHEN '2' THEN 'Meta+Esc' "
00873     "WHEN '3' THEN 'Alt+Esc' WHEN '4' THEN 'Esc' ELSE '' END), hostname "
00874     "FROM settings WHERE value = 'AllowQuitShutdown' GROUP BY hostname) "
00875     "ON DUPLICATE KEY UPDATE keylist = VALUES(keylist);",
00876 NULL
00877 };
00878         if (!performActualUpdate(updates, "1256", dbver))
00879             return false;
00880     }
00881 
00882     if (dbver == "1256")
00883     {
00884         const char *updates[] = {
00885 "ALTER TABLE record DROP COLUMN tsdefault;",
00886 NULL
00887 };
00888         if (!performActualUpdate(updates, "1257", dbver))
00889             return false;
00890     }
00891 
00892     if (dbver == "1257")
00893     {
00894         const char *updates[] = {
00895 "CREATE TABLE internetcontent "
00896 "( name VARCHAR(255) NOT NULL,"
00897 "  thumbnail VARCHAR(255),"
00898 "  type SMALLINT(3) NOT NULL,"
00899 "  author VARCHAR(128) NOT NULL,"
00900 "  description TEXT NOT NULL,"
00901 "  commandline TEXT NOT NULL,"
00902 "  version DOUBLE NOT NULL,"
00903 "  updated DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"
00904 "  search BOOL NOT NULL,"
00905 "  tree BOOL NOT NULL,"
00906 "  podcast BOOL NOT NULL,"
00907 "  download BOOL NOT NULL,"
00908 "  host  VARCHAR(128)) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
00909 "CREATE TABLE internetcontentarticles "
00910 "( feedtitle VARCHAR(255) NOT NULL,"
00911 "  path TEXT NOT NULL,"
00912 "  paththumb TEXT NOT NULL,"
00913 "  title VARCHAR(255) NOT NULL,"
00914 "  subtitle VARCHAR(255) NOT NULL,"
00915 "  season SMALLINT(5) NOT NULL DEFAULT '0',"
00916 "  episode SMALLINT(5) NOT NULL DEFAULT '0',"
00917 "  description TEXT NOT NULL,"
00918 "  url TEXT NOT NULL,"
00919 "  type SMALLINT(3) NOT NULL,"
00920 "  thumbnail TEXT NOT NULL,"
00921 "  mediaURL TEXT NOT NULL,"
00922 "  author VARCHAR(255) NOT NULL,"
00923 "  date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"
00924 "  time INT NOT NULL,"
00925 "  rating VARCHAR(255) NOT NULL,"
00926 "  filesize BIGINT NOT NULL,"
00927 "  player VARCHAR(255) NOT NULL,"
00928 "  playerargs TEXT NOT NULL,"
00929 "  download VARCHAR(255) NOT NULL,"
00930 "  downloadargs TEXT NOT NULL,"
00931 "  width SMALLINT NOT NULL,"
00932 "  height SMALLINT NOT NULL,"
00933 "  language VARCHAR(128) NOT NULL,"
00934 "  podcast BOOL NOT NULL,"
00935 "  downloadable BOOL NOT NULL,"
00936 "  customhtml BOOL NOT NULL,"
00937 "  countries VARCHAR(255) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
00938 NULL
00939 };
00940         if (!performActualUpdate(updates, "1258", dbver))
00941             return false;
00942     }
00943 
00944     if (dbver == "1258")
00945     {
00946         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1259");
00947 
00948         MSqlQuery select(MSqlQuery::InitCon());
00949         select.prepare("SELECT hostname, data FROM settings "
00950                        " WHERE value = 'IndividualMuteControl'");
00951 
00952         if (!select.exec())
00953         {
00954             MythDB::DBError("Unable to retrieve IndividualMuteControl values.",
00955                             select);
00956         }
00957         else
00958         {
00959             MSqlQuery update(MSqlQuery::InitCon());
00960             while (select.next())
00961             {
00962                 QString hostname = select.value(0).toString();
00963                 QString individual_mute = select.value(1).toString();
00964 
00965                 if ("1" == individual_mute)
00966                 {
00967                     update.prepare("DELETE FROM keybindings "
00968                                    " WHERE action = 'CYCLEAUDIOCHAN' AND "
00969                                    "       hostname = :HOSTNAME AND "
00970                                    "       context IN ('TV Frontend', "
00971                                    "                   'TV Playback')");
00972 
00973                     update.bindValue(":HOSTNAME", hostname);
00974 
00975                     if (!update.exec())
00976                     {
00977                          MythDB::DBError("Unable to update keybindings",
00978                                          update);
00979                          continue;
00980                     }
00981 
00982                     update.prepare("UPDATE keybindings "
00983                                    "   SET action = 'CYCLEAUDIOCHAN', "
00984                                    "       description = 'Cycle audio channels'"
00985                                    " WHERE action = 'MUTE' AND "
00986                                    "       hostname = :HOSTNAME AND "
00987                                    "       context IN ('TV Frontend', "
00988                                    "                   'TV Playback')");
00989 
00990                     update.bindValue(":HOSTNAME", hostname);
00991 
00992                     if (!update.exec())
00993                     {
00994                          MythDB::DBError("Unable to update keybindings",
00995                                          update);
00996                          continue;
00997                     }
00998 
00999                     update.prepare("REPLACE INTO keybindings "
01000                                    " VALUES (:CONTEXT, 'MUTE', 'Mute', "
01001                                    "         '', :HOSTNAME)");
01002 
01003                     update.bindValue(":CONTEXT", "TV Playback");
01004                     update.bindValue(":HOSTNAME", hostname);
01005                     if (!update.exec())
01006                     {
01007                          MythDB::DBError("Unable to update keybindings",
01008                                          update);
01009                          continue;
01010                     }
01011                     update.bindValue(":CONTEXT", "TV Frontend");
01012                     update.bindValue(":HOSTNAME", hostname);
01013                     if (!update.exec())
01014                     {
01015                          MythDB::DBError("Unable to update keybindings",
01016                                          update);
01017                          continue;
01018                     }
01019 
01020                 }
01021             }
01022         }
01023 
01024         if (!UpdateDBVersionNumber("1259", dbver))
01025             return false;
01026     }
01027 
01028     if (dbver == "1259")
01029     {
01030         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1260");
01031 
01032         MSqlQuery query(MSqlQuery::InitCon());
01033         query.prepare("DELETE FROM keybindings WHERE "
01034                       "action IN ('PAGEUP','PAGEDOWN') AND "
01035                       "context = 'TV FRONTEND'");
01036         query.exec();
01037 
01038         query.prepare("SELECT data FROM settings "
01039                        " WHERE value = 'EPGEnableJumpToChannel'");
01040 
01041         if (!query.exec())
01042         {
01043             MythDB::DBError("Unable to retrieve EPGEnableJumpToChannel values.",
01044                             query);
01045         }
01046         else
01047         {
01048             MSqlQuery bindings(MSqlQuery::InitCon());
01049             while (query.next())
01050             {
01051                 QString EPGEnableJumpToChannel = query.value(0).toString();
01052 
01053                 if ("1" == EPGEnableJumpToChannel)
01054                 {
01055                     bindings.prepare("SELECT action, context, hostname, keylist "
01056                                      " FROM keybindings "
01057                                      " WHERE action IN ('DAYLEFT', "
01058                                      " 'DAYRIGHT', 'TOGGLEEPGORDER') AND "
01059                                      " context IN ('TV Frontend', "
01060                                      " 'TV Playback')");
01061 
01062                     if (!bindings.exec())
01063                     {
01064                          MythDB::DBError("Unable to update keybindings",
01065                                          bindings);
01066                          continue;
01067                     }
01068                     else
01069                     {
01070                         while (bindings.next())
01071                         {
01072                             QString action = bindings.value(0).toString();
01073                             QString context = bindings.value(1).toString();
01074                             QString hostname = bindings.value(2).toString();
01075                             QStringList oldKeylist = bindings.value(3).toString().split(',');
01076                             QStringList newKeyList;
01077 
01078                             QStringList::iterator it;
01079                             for (it = oldKeylist.begin(); it != oldKeylist.end();++it)
01080                             {
01081                                 bool ok = false;
01082                                 int num = (*it).toInt(&ok);
01083                                 if (!ok && num >= 0 && num <= 9)
01084                                     newKeyList << (*it);
01085                             }
01086                             QString keyList = newKeyList.join(",");
01087 
01088                             MSqlQuery update(MSqlQuery::InitCon());
01089                             update.prepare("UPDATE keybindings "
01090                                            "   SET keylist = :KEYLIST "
01091                                            " WHERE action = :ACTION "
01092                                            " AND   context = :CONTEXT "
01093                                            " AND   hostname = :HOSTNAME");
01094 
01095                             update.bindValue(":KEYLIST", keyList);
01096                             update.bindValue(":ACTION", action);
01097                             update.bindValue(":CONTEXT", context);
01098                             update.bindValue(":HOSTNAME", hostname);
01099 
01100                             if (!update.exec())
01101                             {
01102                                 MythDB::DBError("Unable to update keybindings",
01103                                                 update);
01104                                 continue;
01105                             }
01106                         }
01107                     }
01108 
01109                 }
01110             }
01111         }
01112 
01113         if (!UpdateDBVersionNumber("1260", dbver))
01114             return false;
01115     }
01116 
01117     if (dbver == "1260")
01118     {
01119         if (gCoreContext->GetNumSetting("MythFillFixProgramIDsHasRunOnce", 0))
01120         {
01121             LOG(VB_GENERAL, LOG_CRIT,
01122                 "Upgrading to MythTV schema version 1261");
01123             if (!UpdateDBVersionNumber("1261", dbver))
01124                 return false;
01125         }
01126         else
01127         {
01128 
01129             const char *updates[] = {
01130 "UPDATE recorded SET programid=CONCAT(SUBSTRING(programid, 1, 2), '00', "
01131 "       SUBSTRING(programid, 3)) WHERE length(programid) = 12;",
01132 "UPDATE oldrecorded SET programid=CONCAT(SUBSTRING(programid, 1, 2), '00', "
01133 "       SUBSTRING(programid, 3)) WHERE length(programid) = 12;",
01134 "UPDATE program SET programid=CONCAT(SUBSTRING(programid, 1, 2), '00', "
01135 "       SUBSTRING(programid, 3)) WHERE length(programid) = 12;",
01136 NULL
01137 };
01138             if (!performActualUpdate(updates, "1261", dbver))
01139                 return false;
01140         }
01141     }
01142 
01143     if (dbver == "1261")
01144     {
01145         const char *updates[] = {
01146 "UPDATE program SET description = '' WHERE description IS NULL;",
01147 "UPDATE record SET description = '' WHERE description IS NULL;",
01148 "UPDATE recorded SET description = '' WHERE description IS NULL;",
01149 "UPDATE recordedprogram SET description = '' WHERE description IS NULL;",
01150 "UPDATE oldrecorded SET description = '' WHERE description IS NULL;",
01151 "UPDATE mythlog SET details = '' WHERE details IS NULL;",
01152 "UPDATE settings SET data = '' WHERE data IS NULL;",
01153 "UPDATE powerpriority SET selectclause = '' WHERE selectclause IS NULL;",
01154 "UPDATE customexample SET fromclause = '' WHERE fromclause IS NULL;",
01155 "UPDATE customexample SET whereclause = '' WHERE whereclause IS NULL;",
01156 "ALTER TABLE program MODIFY COLUMN description VARCHAR(16000) "
01157 "    NOT NULL default '';",
01158 "ALTER TABLE record MODIFY COLUMN description VARCHAR(16000) "
01159 "    NOT NULL default '';",
01160 "ALTER TABLE recorded MODIFY COLUMN description VARCHAR(16000) "
01161 "    NOT NULL default '';",
01162 "ALTER TABLE recordedprogram MODIFY COLUMN description VARCHAR(16000) "
01163 "    NOT NULL default '';",
01164 "ALTER TABLE oldrecorded MODIFY COLUMN description VARCHAR(16000) "
01165 "    NOT NULL default '';",
01166 "ALTER TABLE mythlog MODIFY COLUMN details VARCHAR(16000) "
01167 "    NOT NULL default '';",
01168 "ALTER TABLE settings MODIFY COLUMN data VARCHAR(16000) "
01169 "    NOT NULL default '';",
01170 "ALTER TABLE powerpriority MODIFY COLUMN selectclause VARCHAR(16000) "
01171 "    NOT NULL default '';",
01172 "ALTER TABLE customexample MODIFY COLUMN fromclause VARCHAR(10000) "
01173 "    NOT NULL default '';",
01174 "ALTER TABLE customexample MODIFY COLUMN whereclause VARCHAR(10000) "
01175 "    NOT NULL default '';",
01176 NULL
01177 };
01178         if (!performActualUpdate(updates, "1262", dbver))
01179             return false;
01180     }
01181 
01182     if (dbver == "1262")
01183     {
01184         const char *updates[] = {
01185 "INSERT INTO recgrouppassword (recgroup, password) SELECT 'All Programs',data FROM settings WHERE value='AllRecGroupPassword' LIMIT 1;",
01186 "DELETE FROM settings WHERE value='AllRecGroupPassword';",
01187 NULL
01188 };
01189         if (!performActualUpdate(updates, "1263", dbver))
01190             return false;
01191     }
01192 
01193     if (dbver == "1263")
01194     {
01195         const char *updates[] = {
01196 "UPDATE settings SET hostname = NULL WHERE value='ISO639Language0' AND data != 'aar' AND hostname IS NOT NULL LIMIT 1;",
01197 "UPDATE settings SET hostname = NULL WHERE value='ISO639Language1' AND data != 'aar' AND hostname IS NOT NULL LIMIT 1;",
01198 "DELETE FROM settings WHERE value='ISO639Language0' AND hostname IS NOT NULL;",
01199 "DELETE FROM settings WHERE value='ISO639Language1' AND hostname IS NOT NULL;",
01200 NULL
01201 };
01202         if (!performActualUpdate(updates, "1264", dbver))
01203             return false;
01204     }
01205 
01206     if (dbver == "1264")
01207     {
01208         const char *updates[] = {
01209 "DELETE FROM displayprofiles WHERE profilegroupid IN "
01210 "  (SELECT profilegroupid FROM displayprofilegroups "
01211 "    WHERE name IN ('CPU++', 'CPU+', 'CPU--'))",
01212 "DELETE FROM displayprofilegroups WHERE name IN ('CPU++', 'CPU+', 'CPU--')",
01213 "DELETE FROM settings WHERE value = 'DefaultVideoPlaybackProfile' "
01214 "   AND data IN ('CPU++', 'CPU+', 'CPU--')",
01215 "UPDATE displayprofiles SET data = 'ffmpeg' WHERE data = 'libmpeg2'",
01216 "UPDATE displayprofiles SET data = 'ffmpeg' WHERE data = 'xvmc'",
01217 "UPDATE displayprofiles SET data = 'xv-blit' WHERE data = 'xvmc-blit'",
01218 "UPDATE displayprofiles SET data = 'softblend' WHERE data = 'ia44blend'",
01219 NULL
01220 };
01221         if (!performActualUpdate(updates, "1265", dbver))
01222             return false;
01223     }
01224 
01225     if (dbver == "1265")
01226     {
01227         const char *updates[] = {
01228 "ALTER TABLE dtv_multiplex MODIFY COLUMN updatetimestamp "
01229 "  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;",
01230 "ALTER TABLE dvdbookmark MODIFY COLUMN `timestamp` "
01231 "  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;",
01232 "ALTER TABLE jobqueue MODIFY COLUMN statustime "
01233 "  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;",
01234 "ALTER TABLE recorded MODIFY COLUMN lastmodified "
01235 "  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;",
01236 NULL
01237 };
01238         if (!performActualUpdate(updates, "1266", dbver))
01239             return false;
01240     }
01241 
01242     if (dbver == "1266")
01243     {
01244         if (!doUpgradeVideoDatabaseSchema())
01245             return false;
01246 
01247         const char *updates[] = {
01248 "DELETE FROM settings WHERE value = 'mythvideo.DBSchemaVer'",
01249 NULL
01250 };
01251         if (!performActualUpdate(updates, "1267", dbver))
01252             return false;
01253     }
01254 
01255     if (dbver == "1267")
01256     {
01257         const char *updates[] = {
01258 "ALTER TABLE channel MODIFY xmltvid VARCHAR(255) NOT NULL DEFAULT '';",
01259 NULL
01260 };
01261         if (!performActualUpdate(updates, "1268", dbver))
01262             return false;
01263     }
01264 
01265     if (dbver == "1268")
01266     {
01267 
01268         const char *updates[] = {
01269 "DELETE FROM keybindings WHERE action='PREVSOURCE' AND keylist='Ctrl+Y';",
01270 NULL
01271 };
01272         if (!performActualUpdate(updates, "1269", dbver))
01273             return false;
01274     }
01275 
01276     if (dbver == "1269")
01277     {
01278         const char *updates[] = {
01279 "DELETE FROM profilegroups WHERE id >= 15;",
01280 "DELETE FROM recordingprofiles WHERE profilegroup >= 15;",
01281 "INSERT INTO profilegroups SET id = '15', name = 'ASI Recorder (DVEO)',"
01282 " cardtype = 'ASI', is_default = 1;",
01283 "INSERT INTO recordingprofiles SET name = \"Default\", profilegroup = 15;",
01284 "INSERT INTO recordingprofiles SET name = \"Live TV\", profilegroup = 15;",
01285 "INSERT INTO recordingprofiles SET name = \"High Quality\", profilegroup = 15;",
01286 "INSERT INTO recordingprofiles SET name = \"Low Quality\", profilegroup = 15;",
01287 "INSERT INTO profilegroups SET id = '16', name = 'OCUR Recorder (CableLabs)',"
01288 " cardtype = 'OCUR', is_default = 1;",
01289 "INSERT INTO recordingprofiles SET name = \"Default\", profilegroup = 16;",
01290 "INSERT INTO recordingprofiles SET name = \"Live TV\", profilegroup = 16;",
01291 "INSERT INTO recordingprofiles SET name = \"High Quality\", profilegroup = 16;",
01292 "INSERT INTO recordingprofiles SET name = \"Low Quality\", profilegroup = 16;",
01293 NULL
01294 };
01295         if (!performActualUpdate(updates, "1270", dbver))
01296             return false;
01297     }
01298 
01299     if (dbver == "1270")
01300     {
01301         const char *updates[] = {
01302 "ALTER TABLE oldrecorded ADD future TINYINT(1) NOT NULL DEFAULT 0;",
01303 "UPDATE oldrecorded SET future=0;",
01304 NULL
01305 };
01306         if (!performActualUpdate(updates, "1271", dbver))
01307             return false;
01308     }
01309 
01310     if (dbver == "1271")
01311     {
01312         const char *updates[] = {
01313 "ALTER TABLE recordmatch MODIFY recordid INT UNSIGNED NOT NULL;",
01314 "ALTER TABLE recordmatch MODIFY chanid INT UNSIGNED NOT NULL;",
01315 "ALTER TABLE recordmatch MODIFY starttime DATETIME NOT NULL;",
01316 "ALTER TABLE recordmatch MODIFY manualid INT UNSIGNED NOT NULL;",
01317 "ALTER TABLE recordmatch ADD INDEX (starttime, chanid);",
01318 "ALTER TABLE oldrecorded MODIFY generic TINYINT(1) NOT NULL;",
01319 "ALTER TABLE oldrecorded ADD INDEX (future);",
01320 "ALTER TABLE oldrecorded ADD INDEX (starttime, chanid);",
01321 NULL
01322 };
01323         if (!performActualUpdate(updates, "1272", dbver))
01324             return false;
01325     }
01326 
01327     if (dbver == "1272")
01328     {
01329         const char *updates[] = {
01330 "DROP INDEX starttime ON recordmatch;",
01331 "DROP INDEX starttime ON oldrecorded;",
01332 "ALTER TABLE recordmatch ADD INDEX (chanid, starttime, manualid);",
01333 "ALTER TABLE oldrecorded ADD INDEX (chanid, starttime);",
01334 NULL
01335 };
01336         if (!performActualUpdate(updates, "1273", dbver))
01337             return false;
01338     }
01339 
01340     if (dbver == "1273")
01341     {
01342         const char *updates[] = {
01343 "ALTER TABLE internetcontent MODIFY COLUMN updated "
01344 "  DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';",
01345 "ALTER TABLE internetcontentarticles MODIFY COLUMN `date` "
01346 "  DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';",
01347 NULL
01348 };
01349 
01350         if (!performActualUpdate(updates, "1274", dbver))
01351             return false;
01352     }
01353 
01354     if (dbver == "1274")
01355     {
01356         const char *updates[] = {
01357 "UPDATE cardinput SET tunechan=NULL"
01358 "  WHERE inputname='DVBInput' OR inputname='MPEG2TS';"
01359 "UPDATE dtv_multiplex SET symbolrate = NULL"
01360 "  WHERE modulation LIKE 't%' OR modulation LIKE '%t';",
01361 "UPDATE dtv_multiplex"
01362 "  SET bandwidth=SUBSTR(modulation,2,1)"
01363 "  WHERE SUBSTR(modulation,3,3)='qam' OR"
01364 "        SUBSTR(modulation,3,4)='qpsk';",
01365 "UPDATE dtv_multiplex"
01366 "  SET bandwidth=SUBSTR(modulation,5,1)"
01367 "  WHERE SUBSTR(modulation,1,4)='auto' AND"
01368 "        LENGTH(modulation)=6;",
01369 "UPDATE dtv_multiplex SET modulation='auto'"
01370 "  WHERE modulation LIKE 'auto%';",
01371 "UPDATE dtv_multiplex SET modulation='qam_16'"
01372 "  WHERE modulation LIKE '%qam16%';",
01373 "UPDATE dtv_multiplex SET modulation='qam_32'"
01374 "  WHERE modulation LIKE '%qam32%';",
01375 "UPDATE dtv_multiplex SET modulation='qam_64'"
01376 "  WHERE modulation LIKE '%qam64%';",
01377 "UPDATE dtv_multiplex SET modulation='qam_128'"
01378 "  WHERE modulation LIKE '%qam128%';",
01379 "UPDATE dtv_multiplex SET modulation='qam_256'"
01380 "  WHERE modulation LIKE '%qam256%';",
01381 NULL
01382 };
01383         if (!performActualUpdate(updates, "1275", dbver))
01384             return false;
01385     }
01386 
01387     if (dbver == "1275")
01388     {
01389         const char *updates[] = {
01390 "DROP TABLE IF EXISTS `logging`;",
01391 "CREATE TABLE `logging` ( "
01392 "  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, "
01393 "  `host` varchar(64) NOT NULL, "
01394 "  `application` varchar(64) NOT NULL, "
01395 "  `pid` int(11) NOT NULL, "
01396 "  `thread` varchar(64) NOT NULL, "
01397 "  `msgtime` datetime NOT NULL, "
01398 "  `level` int(11) NOT NULL, "
01399 "  `message` varchar(2048) NOT NULL, "
01400 "  PRIMARY KEY (`id`), "
01401 "  KEY `host` (`host`,`application`,`pid`,`msgtime`), "
01402 "  KEY `msgtime` (`msgtime`), "
01403 "  KEY `level` (`level`) "
01404 ") ENGINE=MyISAM DEFAULT CHARSET=utf8; ",
01405 NULL
01406 };
01407         if (!performActualUpdate(updates, "1276", dbver))
01408             return false;
01409     }
01410 
01411     if (dbver == "1276")
01412     {
01413         const char *updates[] = {
01414 "ALTER TABLE record ADD COLUMN filter INT UNSIGNED NOT NULL DEFAULT 0;",
01415 "CREATE TABLE IF NOT EXISTS recordfilter ("
01416 "    filterid INT UNSIGNED NOT NULL PRIMARY KEY,"
01417 "    description VARCHAR(64) DEFAULT NULL,"
01418 "    clause VARCHAR(256) DEFAULT NULL,"
01419 "    newruledefault TINYINT(1) DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
01420 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01421 "    VALUES (0, 'New episode', 'program.previouslyshown = 0', 0);",
01422 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01423 "    VALUES (1, 'Identifiable episode', 'program.generic = 0', 0);",
01424 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01425 "    VALUES (2, 'First showing', 'program.first > 0', 0);",
01426 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01427 "    VALUES (3, 'Primetime', 'HOUR(program.starttime) >= 19 AND HOUR(program.starttime) < 23', 0);",
01428 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01429 "    VALUES (4, 'Commercial free', 'channel.commmethod = -2', 0);",
01430 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01431 "    VALUES (5, 'High definition', 'program.hdtv > 0', 0);",
01432 NULL
01433 };
01434 
01435         if (!performActualUpdate(updates, "1277", dbver))
01436             return false;
01437     }
01438 
01439     if (dbver == "1277")
01440     {
01441         const char *updates[] = {
01442 "ALTER TABLE record ADD autometadata TINYINT(1) NOT NULL DEFAULT "
01443 "    0 AFTER autouserjob4;",
01444 "ALTER TABLE record ADD inetref VARCHAR(40) NOT NULL AFTER programid;",
01445 "ALTER TABLE record ADD season SMALLINT(5) NOT NULL AFTER description;",
01446 "ALTER TABLE record ADD episode SMALLINT(5) NOT NULL AFTER season;",
01447 "ALTER TABLE recorded ADD inetref VARCHAR(40) NOT NULL AFTER programid;",
01448 "ALTER TABLE recorded ADD season SMALLINT(5) NOT NULL AFTER description;",
01449 "ALTER TABLE recorded ADD episode SMALLINT(5) NOT NULL AFTER season;",
01450 "ALTER TABLE oldrecorded ADD inetref VARCHAR(40) NOT NULL AFTER programid;",
01451 "ALTER TABLE oldrecorded ADD season SMALLINT(5) NOT NULL AFTER description;",
01452 "ALTER TABLE oldrecorded ADD episode SMALLINT(5) NOT NULL AFTER season;",
01453 NULL
01454 };
01455         if (!performActualUpdate(updates, "1278", dbver))
01456             return false;
01457     }
01458 
01459     if (dbver == "1278")
01460     {
01461         const char *updates[] = {
01462 "CREATE TABLE recordedartwork ( "
01463 "    inetref VARCHAR(255) NOT NULL, "
01464 "    season SMALLINT(5) NOT NULL, "
01465 "    host TEXT NOT NULL, "
01466 "    coverart TEXT NOT NULL, "
01467 "    fanart TEXT NOT NULL, "
01468 "    banner TEXT NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
01469 NULL
01470 };
01471         if (!performActualUpdate(updates, "1279", dbver))
01472             return false;
01473     }
01474 
01475     if (dbver == "1279")
01476     {
01477         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1280");
01478 
01479         MSqlQuery select(MSqlQuery::InitCon());
01480         // New DBs/hosts will not have a NoPromptOnExit, so they'll get defaults
01481         select.prepare("SELECT hostname, data FROM settings "
01482                        " WHERE value = 'NoPromptOnExit'");
01483         if (!select.exec())
01484         {
01485             MythDB::DBError("Unable to retrieve confirm exit values.", select);
01486         }
01487         else
01488         {
01489             MSqlQuery update(MSqlQuery::InitCon());
01490             while (select.next())
01491             {
01492                 QString hostname = select.value(0).toString();
01493                 // Yes, enabled NoPromptOnExit meant to prompt on exit
01494                 QString prompt_on_exit = select.value(1).toString();
01495                 // Default EXITPROMPT is wrong for all upgrades
01496                 update.prepare("DELETE FROM keybindings "
01497                                " WHERE action = 'EXITPROMPT' "
01498                                "   AND context = 'Main Menu' "
01499                                "   AND hostname = :HOSTNAME ;");
01500                 update.bindValue(":HOSTNAME", hostname);
01501                 if (!update.exec())
01502                      MythDB::DBError("Unable to delete EXITPROMPT binding",
01503                                      update);
01504 
01505                 if ("0" == prompt_on_exit)
01506                 {
01507                     // EXIT is already mapped appropriately, so just create a
01508                     // no-keylist mapping for EXITPROMPT to prevent conflict
01509                     update.prepare("INSERT INTO keybindings (context, action, "
01510                                    "        description, keylist, hostname) "
01511                                    "VALUES ('Main Menu', 'EXITPROMPT', '', "
01512                                    "        '', :HOSTNAME );");
01513                     update.bindValue(":HOSTNAME", hostname);
01514                     if (!update.exec())
01515                          MythDB::DBError("Unable to create EXITPROMPT binding",
01516                                          update);
01517                 }
01518                 else
01519                 {
01520                     // EXIT must be changed to EXITPROMPT
01521                     update.prepare("UPDATE keybindings "
01522                                    "   SET action = 'EXITPROMPT' "
01523                                    " WHERE action = 'EXIT' "
01524                                    "   AND context = 'Main Menu' "
01525                                    "   AND hostname = :HOSTNAME ;");
01526                     update.bindValue(":HOSTNAME", hostname);
01527                     if (!update.exec())
01528                          MythDB::DBError("Unable to update EXITPROMPT binding",
01529                                          update);
01530                 }
01531             }
01532         }
01533 
01534         if (!UpdateDBVersionNumber("1280", dbver))
01535             return false;
01536     }
01537 
01538     if (dbver == "1280")
01539     {
01540         const char *updates[] = {
01541 "ALTER TABLE program ADD INDEX (subtitle);",
01542 "ALTER TABLE program ADD INDEX (description(255));",
01543 "ALTER TABLE oldrecorded ADD INDEX (subtitle);",
01544 "ALTER TABLE oldrecorded ADD INDEX (description(255));",
01545 NULL
01546 };
01547         if (!performActualUpdate(updates, "1281", dbver))
01548             return false;
01549     }
01550 
01551     if (dbver == "1281")
01552     {
01553         const char *updates[] = {
01554 "ALTER TABLE cardinput ADD changer_device VARCHAR(128) "
01555 "AFTER externalcommand;",
01556 "ALTER TABLE cardinput ADD changer_model VARCHAR(128) "
01557 "AFTER changer_device;",
01558 NULL
01559 };
01560         if (!performActualUpdate(updates, "1282", dbver))
01561             return false;
01562     }
01563 
01564     if (dbver == "1282")
01565     {
01566         const char *updates[] = {
01567 "UPDATE settings"
01568 "   SET data = SUBSTR(data, INSTR(data, 'share/mythtv/metadata')+13)"
01569 " WHERE value "
01570 "    IN ('TelevisionGrabber', "
01571 "        'MovieGrabber', "
01572 "        'mythgame.MetadataGrabber');",
01573 NULL
01574 };
01575 
01576         if (!performActualUpdate(updates, "1283", dbver))
01577             return false;
01578     }
01579 
01580     if (dbver == "1283")
01581     {
01582         const char *updates[] = {
01583 "UPDATE record SET filter = filter | 1 WHERE record.dupin & 0x20",
01584 "UPDATE record SET filter = filter | 2 WHERE record.dupin & 0x40",
01585 "UPDATE record SET filter = filter | 5 WHERE record.dupin & 0x80",
01586 "UPDATE record SET dupin = dupin & ~0xe0",
01587 "INSERT INTO recordfilter (filterid, description, clause, newruledefault) "
01588 "    VALUES (6, 'This Episode', '(program.programid <> '''' AND program.programid = RECTABLE.programid) OR (program.programid = '''' AND program.subtitle = RECTABLE.subtitle AND program.description = RECTABLE.description)', 0);",
01589 NULL
01590 };
01591 
01592         if (!performActualUpdate(updates, "1284", dbver))
01593             return false;
01594     }
01595 
01596     if (dbver == "1284")
01597     {
01598         const char *updates[] = {
01599 "REPLACE INTO recordfilter (filterid, description, clause, newruledefault) "
01600 "    VALUES (6, 'This Episode', '(RECTABLE.programid <> '''' AND program.programid = RECTABLE.programid) OR (RECTABLE.programid = '''' AND program.subtitle = RECTABLE.subtitle AND program.description = RECTABLE.description)', 0);",
01601 NULL
01602 };
01603 
01604         if (!performActualUpdate(updates, "1285", dbver))
01605             return false;
01606     }
01607 
01608     if (dbver == "1285")
01609     {
01610         const char *updates[] = {
01611 "DELETE FROM profilegroups WHERE id >= 17;",
01612 "DELETE FROM recordingprofiles WHERE profilegroup >= 17;",
01613 "INSERT INTO profilegroups SET id = '17', name = 'Ceton Recorder',"
01614 " cardtype = 'CETON', is_default = 1;",
01615 "INSERT INTO recordingprofiles SET name = \"Default\", profilegroup = 17;",
01616 "INSERT INTO recordingprofiles SET name = \"Live TV\", profilegroup = 17;",
01617 "INSERT INTO recordingprofiles SET name = \"High Quality\", profilegroup = 17;",
01618 "INSERT INTO recordingprofiles SET name = \"Low Quality\", profilegroup = 17;",
01619 NULL
01620 };
01621         if (!performActualUpdate(updates, "1286", dbver))
01622             return false;
01623     }
01624 
01625     if (dbver == "1286")
01626     {
01627         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1287");
01628         MSqlQuery query(MSqlQuery::InitCon());
01629         query.prepare("SELECT cardid, videodevice "
01630                       "FROM capturecard "
01631                       "WHERE cardtype='CETON'");
01632         if (!query.exec())
01633         {
01634             LOG(VB_GENERAL, LOG_ERR,
01635                 "Unable to query capturecard table for upgrade to 1287.");
01636             return false;
01637         }
01638 
01639         MSqlQuery update(MSqlQuery::InitCon());
01640         update.prepare("UPDATE capturecard SET videodevice=:VIDDEV "
01641                        "WHERE cardid=:CARDID");
01642         while (query.next())
01643         {
01644             uint cardid = query.value(0).toUInt();
01645             QString videodevice = query.value(1).toString();
01646             QStringList parts = videodevice.split("-");
01647             if (parts.size() != 2)
01648             {
01649                 LOG(VB_GENERAL, LOG_ERR,
01650                     "Unable to parse videodevice in upgrade to 1287.");
01651                 return false;
01652             }
01653             if (parts[1].contains("."))
01654                 continue; // already in new format, skip it..
01655 
01656             int input = max(parts[1].toInt() - 1, 0);
01657             videodevice = parts[0] + QString("-0.%1").arg(input);
01658             update.bindValue(":CARDID", cardid);
01659             update.bindValue(":VIDDEV", videodevice);
01660             if (!update.exec())
01661             {
01662                 LOG(VB_GENERAL, LOG_ERR,
01663                     "Failed to update videodevice in upgrade to 1287.");
01664                 return false;
01665             }
01666         }
01667 
01668         if (!UpdateDBVersionNumber("1287", dbver))
01669             return false;
01670     }
01671 
01672     if (dbver == "1287")
01673     {
01674         const char *updates[] = {
01675 "CREATE TABLE IF NOT EXISTS livestream ( "
01676 "    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, "
01677 "    width INT UNSIGNED NOT NULL, "
01678 "    height INT UNSIGNED NOT NULL, "
01679 "    bitrate INT UNSIGNED NOT NULL, "
01680 "    audiobitrate INT UNSIGNED NOT NULL, "
01681 "    samplerate INT UNSIGNED NOT NULL, "
01682 "    audioonlybitrate INT UNSIGNED NOT NULL, "
01683 "    segmentsize INT UNSIGNED NOT NULL DEFAULT 10, "
01684 "    maxsegments INT UNSIGNED NOT NULL DEFAULT 0, "
01685 "    startsegment INT UNSIGNED NOT NULL DEFAULT 0, "
01686 "    currentsegment INT UNSIGNED NOT NULL DEFAULT 0, "
01687 "    segmentcount INT UNSIGNED NOT NULL DEFAULT 0, "
01688 "    percentcomplete INT UNSIGNED NOT NULL DEFAULT 0, "
01689 "    created DATETIME NOT NULL, "
01690 "    lastmodified DATETIME NOT NULL, "
01691 "    relativeurl VARCHAR(512) NOT NULL, "
01692 "    fullurl VARCHAR(1024) NOT NULL, "
01693 "    status INT UNSIGNED NOT NULL DEFAULT 0, "
01694 "    statusmessage VARCHAR(256) NOT NULL, "
01695 "    sourcefile VARCHAR(512) NOT NULL, "
01696 "    sourcehost VARCHAR(64) NOT NULL, "
01697 "    sourcewidth INT UNSIGNED NOT NULL DEFAULT 0, "
01698 "    sourceheight INT UNSIGNED NOT NULL DEFAULT 0, "
01699 "    outdir VARCHAR(256) NOT NULL, "
01700 "    outbase VARCHAR(128) NOT NULL "
01701 ") ENGINE=MyISAM DEFAULT CHARSET=utf8; ",
01702 NULL
01703 };
01704 
01705         if (!performActualUpdate(updates, "1288", dbver))
01706             return false;
01707     }
01708 
01709     if (dbver == "1288")
01710     {
01711         const char *updates[] = {
01712 "ALTER TABLE recordedprogram CHANGE COLUMN videoprop videoprop "
01713 "    SET('HDTV', 'WIDESCREEN', 'AVC', '720', '1080', 'DAMAGED') NOT NULL; ",
01714 NULL
01715 };
01716         if (!performActualUpdate(updates, "1289", dbver))
01717             return false;
01718     }
01719 
01720     if (dbver == "1289")
01721     {
01722         const char *updates[] = {
01723 "DROP TABLE IF EXISTS netvisionrssitems;",
01724 "DROP TABLE IF EXISTS netvisionsearchgrabbers;",
01725 "DROP TABLE IF EXISTS netvisionsites;",
01726 "DROP TABLE IF EXISTS netvisiontreegrabbers;",
01727 "DROP TABLE IF EXISTS netvisiontreeitems;",
01728 NULL
01729 };
01730 
01731         if (!performActualUpdate(updates, "1290", dbver))
01732             return false;
01733     }
01734 
01735     if (dbver == "1290")
01736     {
01737         const char *updates[] = {
01738 "ALTER TABLE logging "
01739 " ALTER COLUMN host SET DEFAULT '', "
01740 " ALTER COLUMN application SET DEFAULT '', "
01741 " ALTER COLUMN pid SET DEFAULT '0', "
01742 " ALTER COLUMN thread SET DEFAULT '', "
01743 " ALTER COLUMN level SET DEFAULT '0';",
01744 "ALTER TABLE logging "
01745 " ADD COLUMN tid INT(11) NOT NULL DEFAULT '0' AFTER pid, "
01746 " ADD COLUMN filename VARCHAR(255) NOT NULL DEFAULT '' AFTER thread, "
01747 " ADD COLUMN line INT(11) NOT NULL DEFAULT '0' AFTER filename, "
01748 " ADD COLUMN function VARCHAR(255) NOT NULL DEFAULT '' AFTER line;",
01749 NULL
01750 };
01751 
01752         if (!performActualUpdate(updates, "1291", dbver))
01753             return false;
01754     }
01755 
01756     if (dbver == "1291")
01757     {
01758         const char *updates[] = {
01759 "UPDATE recorded r, recordedprogram rp SET r.duplicate=0 "
01760 "   WHERE r.chanid=rp.chanid AND r.progstart=rp.starttime AND "
01761 "      FIND_IN_SET('DAMAGED', rp.videoprop);",
01762 NULL
01763 };
01764 
01765         if (!performActualUpdate(updates, "1292", dbver))
01766             return false;
01767     }
01768 
01769     if (dbver == "1292")
01770     {
01771         const char *updates[] = {
01772 "ALTER TABLE cardinput "
01773 "  ADD COLUMN schedorder INT(10) UNSIGNED NOT NULL DEFAULT '0', "
01774 "  ADD COLUMN livetvorder INT(10) UNSIGNED NOT NULL DEFAULT '0';",
01775 "UPDATE cardinput SET schedorder = cardinputid;",
01776 "UPDATE cardinput SET livetvorder = cardid;",
01777 NULL
01778 };
01779 
01780         if (gCoreContext->GetNumSetting("LastFreeCard", 0))
01781         {
01782             updates[2] = 
01783                 "UPDATE cardinput SET livetvorder = "
01784                 "  (SELECT MAX(cardid) FROM capturecard) - cardid + 1;";
01785         }
01786 
01787         if (!performActualUpdate(updates, "1293", dbver))
01788             return false;
01789     }
01790 
01791     if (dbver == "1293")
01792     {
01793         const char *updates[] = {
01794 "TRUNCATE TABLE recordmatch",
01795 "ALTER TABLE recordmatch DROP INDEX recordid",
01796 "ALTER TABLE recordmatch ADD UNIQUE INDEX (recordid, chanid, starttime)",
01797 "UPDATE recordfilter SET description='Prime time' WHERE filterid=3",
01798 "UPDATE recordfilter SET description='This episode' WHERE filterid=6",
01799 "REPLACE INTO recordfilter (filterid, description, clause, newruledefault) "
01800 "    VALUES (7, 'This series', '(RECTABLE.seriesid <> '''' AND program.seriesid = RECTABLE.seriesid)', 0);",
01801 NULL
01802 };
01803 
01804         if (!performActualUpdate(updates, "1294", dbver))
01805             return false;
01806     }
01807 
01808     if (dbver == "1294")
01809     {
01810         const char *updates[] = {
01811 "CREATE TABLE videocollection ("
01812 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
01813 "  title varchar(256) NOT NULL,"
01814 "  contenttype set('MOVIE', 'TELEVISION', 'ADULT', 'MUSICVIDEO', 'HOMEVIDEO') NOT NULL default '',"
01815 "  plot text,"
01816 "  network varchar(128) DEFAULT NULL,"
01817 "  inetref varchar(128) NOT NULL,"
01818 "  certification varchar(128) DEFAULT NULL,"
01819 "  genre int(10) unsigned DEFAULT '0',"
01820 "  releasedate date DEFAULT NULL,"
01821 "  language varchar(10) DEFAULT NULL,"
01822 "  status varchar(64) DEFAULT NULL,"
01823 "  rating float DEFAULT 0,"
01824 "  ratingcount int(10) DEFAULT 0,"
01825 "  runtime smallint(5) unsigned DEFAULT '0',"
01826 "  banner text,"
01827 "  fanart text,"
01828 "  coverart text,"
01829 "  PRIMARY KEY (intid),"
01830 "  KEY title (title)"
01831 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
01832 "CREATE TABLE videopathinfo ("
01833 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
01834 "  path text,"
01835 "  contenttype set('MOVIE', 'TELEVISION', 'ADULT', 'MUSICVIDEO', 'HOMEVIDEO') NOT NULL default '',"
01836 "  collectionref int(10) default '0',"
01837 "  recurse tinyint(1) default '0',"
01838 "  PRIMARY KEY (intid)"
01839 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
01840 "ALTER TABLE videometadata ADD collectionref int(10) NOT NULL DEFAULT '0' AFTER inetref;",
01841 "ALTER TABLE videometadata ADD playcount int(10) NOT NULL DEFAULT '0' AFTER length;",
01842 "ALTER TABLE videometadata ADD contenttype set('MOVIE', 'TELEVISION', 'ADULT', 'MUSICVIDEO', 'HOMEVIDEO') NOT NULL default ''",
01843 "UPDATE videometadata SET contenttype = 'MOVIE';",
01844 "UPDATE videometadata SET contenttype = 'TELEVISION' WHERE season > 0 OR episode > 0;",
01845 NULL
01846 };
01847 
01848         if (!performActualUpdate(updates, "1295", dbver))
01849             return false;
01850     }
01851 
01852     if (dbver == "1295")
01853     {
01854         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1296");
01855         MSqlQuery query(MSqlQuery::InitCon());
01856         query.prepare("SELECT data, hostname "
01857                       "FROM settings "
01858                       "WHERE value='BackendServerIP'");
01859         if (!query.exec())
01860         {
01861             LOG(VB_GENERAL, LOG_ERR,
01862                 "Unable to repair IP addresses for IPv4/IPv6 split.");
01863             return false;
01864         }
01865 
01866         MSqlQuery update(MSqlQuery::InitCon()), insert(MSqlQuery::InitCon());
01867         update.prepare("UPDATE settings "
01868                           "SET data=:IP4ADDY "
01869                        "WHERE value='BackendServerIP' "
01870                       "AND hostname=:HOSTNAME");
01871         insert.prepare("INSERT INTO settings "
01872                        "SET value='BackendServerIP6',"
01873                             "data=:IP6ADDY,"
01874                         "hostname=:HOSTNAME");
01875         while (query.next())
01876         {
01877             QHostAddress oldaddr(query.value(0).toString());
01878             QString hostname = query.value(1).toString();
01879 
01880             update.bindValue(":HOSTNAME", hostname);
01881             insert.bindValue(":HOSTNAME", hostname);
01882 
01883             if (oldaddr.protocol() == QAbstractSocket::IPv6Protocol)
01884             {
01885                 update.bindValue(":IP4ADDY", "127.0.0.1");
01886                 insert.bindValue(":IP6ADDY", query.value(0).toString());
01887             }
01888             else if (oldaddr.protocol() == QAbstractSocket::IPv4Protocol)
01889             {
01890                 update.bindValue(":IP4ADDY", query.value(0).toString());
01891                 insert.bindValue(":IP6ADDY", "::1");
01892             }
01893             else
01894             {
01895                 update.bindValue(":IP4ADDY", "127.0.0.1");
01896                 insert.bindValue(":IP6ADDY", "::1");
01897                 LOG(VB_GENERAL, LOG_CRIT,
01898                     QString("Invalid address string '%1' found on %2. "
01899                             "Reverting to localhost defaults.")
01900                         .arg(query.value(0).toString()).arg(hostname));
01901             }
01902 
01903             if (!update.exec() || !insert.exec())
01904             {
01905                 LOG(VB_GENERAL, LOG_ERR, QString("Failed to separate IPv4 "
01906                           "and IPv6 addresses for %1").arg(hostname));
01907                 return false;
01908             }
01909 
01910         }
01911 
01912         if (!UpdateDBVersionNumber("1296", dbver))
01913             return false;
01914     }
01915 
01916     if (dbver == "1296")
01917     {
01918         const char *updates[] = {
01919 "ALTER TABLE videocollection CHANGE inetref collectionref "
01920 "VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_general_ci "
01921 "NOT NULL",
01922 "ALTER TABLE videocollection CHANGE genre genre VARCHAR(128) NULL DEFAULT ''",
01923 NULL
01924 };
01925 
01926         if (!performActualUpdate(updates, "1297", dbver))
01927             return false;
01928     }
01929 
01930     if (dbver == "1297")
01931     {
01932         const char *updates[] = {
01933 "ALTER TABLE videometadata CHANGE collectionref collectionref INT(10) "
01934 "NOT NULL DEFAULT -1",
01935 "UPDATE videometadata SET collectionref = '-1'",
01936 NULL
01937 };
01938 
01939         if (!performActualUpdate(updates, "1298", dbver))
01940             return false;
01941     }
01942 
01943     if (dbver == "1298")
01944     {
01945         LOG(VB_GENERAL, LOG_CRIT, "Upgrading to MythTV schema version 1299");
01946 
01947         // DeletedMaxAge setting only exists if the user ever triggered the
01948         // DeletedExpireOptions TriggeredConfigurationGroup (enabled
01949         // AutoExpireInsteadOfDelete) and changed DeletedMaxAge from its
01950         // default of zero, so "reset" it to ensure it's in the database before
01951         // the update
01952         QString deletedMaxAge = gCoreContext->GetSetting("DeletedMaxAge", "0");
01953         gCoreContext->SaveSettingOnHost("DeletedMaxAge", deletedMaxAge, NULL);
01954 
01955         QString queryStr;
01956         if (gCoreContext->GetNumSetting("AutoExpireInsteadOfDelete", 0))
01957         {
01958             queryStr = "UPDATE settings SET data='-1' WHERE "
01959                        "value='DeletedMaxAge' AND data='0'";
01960         }
01961         else
01962         {
01963             queryStr = "UPDATE settings SET data='0' WHERE "
01964                        "value='DeletedMaxAge'";
01965         }
01966 
01967         MSqlQuery query(MSqlQuery::InitCon());
01968         query.prepare(queryStr);
01969         if (!query.exec())
01970         {
01971             MythDB::DBError("Could not perform update for '1299'", query);
01972             return false;
01973         }
01974 
01975         if (!UpdateDBVersionNumber("1299", dbver))
01976             return false;
01977     }
01978 
01979     if (dbver == "1299")
01980     {
01981         const char *updates[] = {
01982 "ALTER TABLE recordmatch ADD COLUMN findid INT NOT NULL DEFAULT 0",
01983 "ALTER TABLE recordmatch ADD INDEX (recordid, findid)",
01984 NULL
01985 };
01986 
01987         if (!performActualUpdate(updates, "1300", dbver))
01988             return false;
01989     }
01990 
01991     if (dbver == "1300")
01992     {
01993         const char *updates[] = {
01994 "ALTER TABLE channel ADD COLUMN iptvid SMALLINT(6) UNSIGNED;",
01995 "CREATE TABLE iptv_channel ("
01996 "  iptvid SMALLINT(6) UNSIGNED NOT NULL auto_increment,"
01997 "  chanid INT(10) UNSIGNED NOT NULL,"
01998 "  url TEXT NOT NULL,"
01999 "  type set('data', "
02000 "           'rfc2733-1','rfc2733-2', "
02001 "           'rfc5109-1','rfc5109-2', "
02002 "           'smpte2022-1','smpte2022-2'),"
02003 "  bitrate INT(10) UNSIGNED NOT NULL,"
02004 "  PRIMARY KEY (iptvid)"
02005 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02006 NULL
02007 };
02008 
02009         if (!performActualUpdate(updates, "1301", dbver))
02010             return false;
02011     }
02012 
02013     if (dbver == "1301")
02014     {
02015         // Create the Default recording rule template
02016         RecordingRule record;
02017         record.MakeTemplate("Default");
02018         record.m_type = kTemplateRecord;
02019         record.Save(false);
02020 
02021         if (!UpdateDBVersionNumber("1302", dbver))
02022             return false;
02023     }
02024 
02025     return true;
02026 }
02027 
02044 bool InitializeMythSchema(void)
02045 {
02046     MSqlQuery query(MSqlQuery::InitCon());
02047     query.prepare("SHOW TABLES;");
02048 
02049     // check for > 1 table here since the schemalock table should exist
02050     if (query.exec() && query.isActive() && query.size() > 1)
02051     {
02052         QString msg = QString(
02053             "Told to create a NEW database schema, but the database\n"
02054             "already has %1 tables.\n"
02055             "If you are sure this is a good MythTV database, verify\n"
02056             "that the settings table has the DBSchemaVer variable.\n")
02057             .arg(query.size() - 1);
02058         LOG(VB_GENERAL, LOG_ERR, msg);
02059         return false;
02060     }
02061 
02062     LOG(VB_GENERAL, LOG_NOTICE,
02063         "Inserting MythTV initial database information.");
02064 
02065     const char *updates[] = {
02066 "CREATE TABLE callsignnetworkmap ("
02067 "  id int(11) NOT NULL AUTO_INCREMENT,"
02068 "  callsign varchar(20) NOT NULL DEFAULT '',"
02069 "  network varchar(20) NOT NULL DEFAULT '',"
02070 "  PRIMARY KEY (id),"
02071 "  UNIQUE KEY callsign (callsign)"
02072 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02073 "CREATE TABLE capturecard ("
02074 "  cardid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02075 "  videodevice varchar(128) DEFAULT NULL,"
02076 "  audiodevice varchar(128) DEFAULT NULL,"
02077 "  vbidevice varchar(128) DEFAULT NULL,"
02078 "  cardtype varchar(32) DEFAULT 'V4L',"
02079 "  defaultinput varchar(32) DEFAULT 'Television',"
02080 "  audioratelimit int(11) DEFAULT NULL,"
02081 "  hostname varchar(64) DEFAULT NULL,"
02082 "  dvb_swfilter int(11) DEFAULT '0',"
02083 "  dvb_sat_type int(11) NOT NULL DEFAULT '0',"
02084 "  dvb_wait_for_seqstart int(11) NOT NULL DEFAULT '1',"
02085 "  skipbtaudio tinyint(1) DEFAULT '0',"
02086 "  dvb_on_demand tinyint(4) NOT NULL DEFAULT '0',"
02087 "  dvb_diseqc_type smallint(6) DEFAULT NULL,"
02088 "  firewire_speed int(10) unsigned NOT NULL DEFAULT '0',"
02089 "  firewire_model varchar(32) DEFAULT NULL,"
02090 "  firewire_connection int(10) unsigned NOT NULL DEFAULT '0',"
02091 "  signal_timeout int(11) NOT NULL DEFAULT '1000',"
02092 "  channel_timeout int(11) NOT NULL DEFAULT '3000',"
02093 "  dvb_tuning_delay int(10) unsigned NOT NULL DEFAULT '0',"
02094 "  contrast int(11) NOT NULL DEFAULT '0',"
02095 "  brightness int(11) NOT NULL DEFAULT '0',"
02096 "  colour int(11) NOT NULL DEFAULT '0',"
02097 "  hue int(11) NOT NULL DEFAULT '0',"
02098 "  diseqcid int(10) unsigned DEFAULT NULL,"
02099 "  dvb_eitscan tinyint(1) NOT NULL DEFAULT '1',"
02100 "  PRIMARY KEY (cardid)"
02101 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02102 "CREATE TABLE cardinput ("
02103 "  cardinputid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02104 "  cardid int(10) unsigned NOT NULL DEFAULT '0',"
02105 "  sourceid int(10) unsigned NOT NULL DEFAULT '0',"
02106 "  inputname varchar(32) NOT NULL DEFAULT '',"
02107 "  externalcommand varchar(128) DEFAULT NULL,"
02108 "  changer_device varchar(128) DEFAULT NULL,"
02109 "  changer_model varchar(128) DEFAULT NULL,"
02110 "  tunechan varchar(10) DEFAULT NULL,"
02111 "  startchan varchar(10) DEFAULT NULL,"
02112 "  displayname varchar(64) NOT NULL DEFAULT '',"
02113 "  dishnet_eit tinyint(1) NOT NULL DEFAULT '0',"
02114 "  recpriority int(11) NOT NULL DEFAULT '0',"
02115 "  quicktune tinyint(4) NOT NULL DEFAULT '0',"
02116 "  schedorder int(10) unsigned NOT NULL DEFAULT '0',"
02117 "  livetvorder int(10) unsigned NOT NULL DEFAULT '0',"
02118 "  PRIMARY KEY (cardinputid)"
02119 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02120 "CREATE TABLE channel ("
02121 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02122 "  channum varchar(10) NOT NULL DEFAULT '',"
02123 "  freqid varchar(10) DEFAULT NULL,"
02124 "  sourceid int(10) unsigned DEFAULT NULL,"
02125 "  callsign varchar(20) NOT NULL DEFAULT '',"
02126 "  `name` varchar(64) NOT NULL DEFAULT '',"
02127 "  icon varchar(255) NOT NULL DEFAULT 'none',"
02128 "  finetune int(11) DEFAULT NULL,"
02129 "  videofilters varchar(255) NOT NULL DEFAULT '',"
02130 "  xmltvid varchar(255) NOT NULL DEFAULT '',"
02131 "  recpriority int(10) NOT NULL DEFAULT '0',"
02132 "  contrast int(11) DEFAULT '32768',"
02133 "  brightness int(11) DEFAULT '32768',"
02134 "  colour int(11) DEFAULT '32768',"
02135 "  hue int(11) DEFAULT '32768',"
02136 "  tvformat varchar(10) NOT NULL DEFAULT 'Default',"
02137 "  visible tinyint(1) NOT NULL DEFAULT '1',"
02138 "  outputfilters varchar(255) NOT NULL DEFAULT '',"
02139 "  useonairguide tinyint(1) DEFAULT '0',"
02140 "  mplexid smallint(6) DEFAULT NULL,"
02141 "  serviceid mediumint(8) unsigned DEFAULT NULL,"
02142 "  tmoffset int(11) NOT NULL DEFAULT '0',"
02143 "  atsc_major_chan int(10) unsigned NOT NULL DEFAULT '0',"
02144 "  atsc_minor_chan int(10) unsigned NOT NULL DEFAULT '0',"
02145 "  last_record datetime NOT NULL,"
02146 "  default_authority varchar(32) NOT NULL DEFAULT '',"
02147 "  commmethod int(11) NOT NULL DEFAULT '-1',"
02148 "  PRIMARY KEY (chanid),"
02149 "  KEY channel_src (channum,sourceid),"
02150 "  KEY sourceid (sourceid,xmltvid,chanid),"
02151 "  KEY visible (visible)"
02152 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02153 "CREATE TABLE channelgroup ("
02154 "  id int(10) unsigned NOT NULL AUTO_INCREMENT,"
02155 "  chanid int(11) unsigned NOT NULL DEFAULT '0',"
02156 "  grpid int(11) NOT NULL DEFAULT '1',"
02157 "  PRIMARY KEY (id)"
02158 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02159 "CREATE TABLE channelgroupnames ("
02160 "  grpid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02161 "  `name` varchar(64) NOT NULL DEFAULT '0',"
02162 "  PRIMARY KEY (grpid)"
02163 ") ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;",
02164 "CREATE TABLE channelscan ("
02165 "  scanid int(3) unsigned NOT NULL AUTO_INCREMENT,"
02166 "  cardid int(3) unsigned NOT NULL,"
02167 "  sourceid int(3) unsigned NOT NULL,"
02168 "  processed tinyint(1) unsigned NOT NULL,"
02169 "  scandate datetime NOT NULL,"
02170 "  PRIMARY KEY (scanid)"
02171 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02172 "CREATE TABLE channelscan_channel ("
02173 "  transportid int(6) unsigned NOT NULL,"
02174 "  scanid int(3) unsigned NOT NULL,"
02175 "  mplex_id smallint(6) NOT NULL,"
02176 "  source_id int(3) unsigned NOT NULL,"
02177 "  channel_id int(3) unsigned NOT NULL DEFAULT '0',"
02178 "  callsign varchar(20) NOT NULL DEFAULT '',"
02179 "  service_name varchar(64) NOT NULL DEFAULT '',"
02180 "  chan_num varchar(10) NOT NULL DEFAULT '',"
02181 "  service_id mediumint(8) unsigned NOT NULL DEFAULT '0',"
02182 "  atsc_major_channel int(4) unsigned NOT NULL DEFAULT '0',"
02183 "  atsc_minor_channel int(4) unsigned NOT NULL DEFAULT '0',"
02184 "  use_on_air_guide tinyint(1) NOT NULL DEFAULT '0',"
02185 "  hidden tinyint(1) NOT NULL DEFAULT '0',"
02186 "  hidden_in_guide tinyint(1) NOT NULL DEFAULT '0',"
02187 "  freqid varchar(10) NOT NULL DEFAULT '',"
02188 "  icon varchar(255) NOT NULL DEFAULT '',"
02189 "  tvformat varchar(10) NOT NULL DEFAULT 'Default',"
02190 "  xmltvid varchar(64) NOT NULL DEFAULT '',"
02191 "  pat_tsid int(5) unsigned NOT NULL DEFAULT '0',"
02192 "  vct_tsid int(5) unsigned NOT NULL DEFAULT '0',"
02193 "  vct_chan_tsid int(5) unsigned NOT NULL DEFAULT '0',"
02194 "  sdt_tsid int(5) unsigned NOT NULL DEFAULT '0',"
02195 "  orig_netid int(5) unsigned NOT NULL DEFAULT '0',"
02196 "  netid int(5) unsigned NOT NULL DEFAULT '0',"
02197 "  si_standard varchar(10) NOT NULL,"
02198 "  in_channels_conf tinyint(1) unsigned NOT NULL DEFAULT '0',"
02199 "  in_pat tinyint(1) unsigned NOT NULL DEFAULT '0',"
02200 "  in_pmt tinyint(1) unsigned NOT NULL DEFAULT '0',"
02201 "  in_vct tinyint(1) unsigned NOT NULL DEFAULT '0',"
02202 "  in_nit tinyint(1) unsigned NOT NULL DEFAULT '0',"
02203 "  in_sdt tinyint(1) unsigned NOT NULL DEFAULT '0',"
02204 "  is_encrypted tinyint(1) unsigned NOT NULL DEFAULT '0',"
02205 "  is_data_service tinyint(1) unsigned NOT NULL DEFAULT '0',"
02206 "  is_audio_service tinyint(1) unsigned NOT NULL DEFAULT '0',"
02207 "  is_opencable tinyint(1) unsigned NOT NULL DEFAULT '0',"
02208 "  could_be_opencable tinyint(1) unsigned NOT NULL DEFAULT '0',"
02209 "  decryption_status smallint(2) unsigned NOT NULL DEFAULT '0',"
02210 "  default_authority varchar(32) NOT NULL DEFAULT ''"
02211 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02212 "CREATE TABLE channelscan_dtv_multiplex ("
02213 "  transportid int(6) unsigned NOT NULL AUTO_INCREMENT,"
02214 "  scanid int(3) unsigned NOT NULL,"
02215 "  mplexid smallint(6) unsigned NOT NULL,"
02216 "  frequency bigint(12) unsigned NOT NULL,"
02217 "  inversion char(1) NOT NULL DEFAULT 'a',"
02218 "  symbolrate bigint(12) unsigned NOT NULL DEFAULT '0',"
02219 "  fec varchar(10) NOT NULL DEFAULT 'auto',"
02220 "  polarity char(1) NOT NULL DEFAULT '',"
02221 "  hp_code_rate varchar(10) NOT NULL DEFAULT 'auto',"
02222 "  mod_sys varchar(10) DEFAULT NULL,"
02223 "  rolloff varchar(4) DEFAULT NULL,"
02224 "  lp_code_rate varchar(10) NOT NULL DEFAULT 'auto',"
02225 "  modulation varchar(10) NOT NULL DEFAULT 'auto',"
02226 "  transmission_mode char(1) NOT NULL DEFAULT 'a',"
02227 "  guard_interval varchar(10) NOT NULL DEFAULT 'auto',"
02228 "  hierarchy varchar(10) NOT NULL DEFAULT 'auto',"
02229 "  bandwidth char(1) NOT NULL DEFAULT 'a',"
02230 "  sistandard varchar(10) NOT NULL,"
02231 "  tuner_type smallint(2) unsigned NOT NULL,"
02232 "  default_authority varchar(32) NOT NULL DEFAULT '',"
02233 "  PRIMARY KEY (transportid)"
02234 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02235 "CREATE TABLE codecparams ("
02236 "  `profile` int(10) unsigned NOT NULL DEFAULT '0',"
02237 "  `name` varchar(128) NOT NULL DEFAULT '',"
02238 "  `value` varchar(128) DEFAULT NULL,"
02239 "  PRIMARY KEY (`profile`,`name`)"
02240 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02241 "CREATE TABLE credits ("
02242 "  person mediumint(8) unsigned NOT NULL DEFAULT '0',"
02243 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02244 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02245 "  role set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL DEFAULT '',"
02246 "  UNIQUE KEY chanid (chanid,starttime,person,role),"
02247 "  KEY person (person,role)"
02248 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02249 "CREATE TABLE customexample ("
02250 "  rulename varchar(64) NOT NULL,"
02251 "  fromclause varchar(10000) NOT NULL DEFAULT '',"
02252 "  whereclause varchar(10000) NOT NULL DEFAULT '',"
02253 "  search tinyint(4) NOT NULL DEFAULT '0',"
02254 "  PRIMARY KEY (rulename)"
02255 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02256 "CREATE TABLE diseqc_config ("
02257 "  cardinputid int(10) unsigned NOT NULL,"
02258 "  diseqcid int(10) unsigned NOT NULL,"
02259 "  `value` varchar(16) NOT NULL DEFAULT '',"
02260 "  KEY id (cardinputid)"
02261 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02262 "CREATE TABLE diseqc_tree ("
02263 "  diseqcid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02264 "  parentid int(10) unsigned DEFAULT NULL,"
02265 "  ordinal tinyint(3) unsigned NOT NULL,"
02266 "  `type` varchar(16) NOT NULL DEFAULT '',"
02267 "  subtype varchar(16) NOT NULL DEFAULT '',"
02268 "  description varchar(32) NOT NULL DEFAULT '',"
02269 "  switch_ports tinyint(3) unsigned NOT NULL DEFAULT '0',"
02270 "  rotor_hi_speed float NOT NULL DEFAULT '0',"
02271 "  rotor_lo_speed float NOT NULL DEFAULT '0',"
02272 "  rotor_positions varchar(255) NOT NULL DEFAULT '',"
02273 "  lnb_lof_switch int(10) NOT NULL DEFAULT '0',"
02274 "  lnb_lof_hi int(10) NOT NULL DEFAULT '0',"
02275 "  lnb_lof_lo int(10) NOT NULL DEFAULT '0',"
02276 "  cmd_repeat int(11) NOT NULL DEFAULT '1',"
02277 "  lnb_pol_inv tinyint(4) NOT NULL DEFAULT '0',"
02278 "  address tinyint(3) unsigned NOT NULL DEFAULT '0',"
02279 "  PRIMARY KEY (diseqcid),"
02280 "  KEY parentid (parentid)"
02281 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02282 "CREATE TABLE displayprofilegroups ("
02283 "  `name` varchar(128) NOT NULL,"
02284 "  hostname varchar(64) NOT NULL,"
02285 "  profilegroupid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02286 "  PRIMARY KEY (`name`,hostname),"
02287 "  UNIQUE KEY profilegroupid (profilegroupid)"
02288 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02289 "CREATE TABLE displayprofiles ("
02290 "  profilegroupid int(10) unsigned NOT NULL,"
02291 "  profileid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02292 "  `value` varchar(128) NOT NULL,"
02293 "  `data` varchar(255) NOT NULL DEFAULT '',"
02294 "  KEY profilegroupid (profilegroupid),"
02295 "  KEY profileid (profileid,`value`),"
02296 "  KEY profileid_2 (profileid)"
02297 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02298 "CREATE TABLE dtv_multiplex ("
02299 "  mplexid smallint(6) NOT NULL AUTO_INCREMENT,"
02300 "  sourceid smallint(6) DEFAULT NULL,"
02301 "  transportid int(11) DEFAULT NULL,"
02302 "  networkid int(11) DEFAULT NULL,"
02303 "  frequency int(11) DEFAULT NULL,"
02304 "  inversion char(1) DEFAULT 'a',"
02305 "  symbolrate int(11) DEFAULT NULL,"
02306 "  fec varchar(10) DEFAULT 'auto',"
02307 "  polarity char(1) DEFAULT NULL,"
02308 "  modulation varchar(10) DEFAULT 'auto',"
02309 "  bandwidth char(1) DEFAULT 'a',"
02310 "  lp_code_rate varchar(10) DEFAULT 'auto',"
02311 "  transmission_mode char(1) DEFAULT 'a',"
02312 "  guard_interval varchar(10) DEFAULT 'auto',"
02313 "  visible smallint(1) NOT NULL DEFAULT '0',"
02314 "  constellation varchar(10) DEFAULT 'auto',"
02315 "  hierarchy varchar(10) DEFAULT 'auto',"
02316 "  hp_code_rate varchar(10) DEFAULT 'auto',"
02317 "  mod_sys varchar(10) DEFAULT NULL,"
02318 "  rolloff varchar(4) DEFAULT NULL,"
02319 "  sistandard varchar(10) DEFAULT 'dvb',"
02320 "  serviceversion smallint(6) DEFAULT '33',"
02321 "  updatetimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,"
02322 "  default_authority varchar(32) NOT NULL DEFAULT '',"
02323 "  PRIMARY KEY (mplexid)"
02324 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02325 "CREATE TABLE dtv_privatetypes ("
02326 "  sitype varchar(4) NOT NULL DEFAULT '',"
02327 "  networkid int(11) NOT NULL DEFAULT '0',"
02328 "  private_type varchar(20) NOT NULL DEFAULT '',"
02329 "  private_value varchar(100) NOT NULL DEFAULT ''"
02330 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02331 "CREATE TABLE dvdbookmark ("
02332 "  serialid varchar(16) NOT NULL DEFAULT '',"
02333 "  `name` varchar(32) DEFAULT NULL,"
02334 "  title smallint(6) NOT NULL DEFAULT '0',"
02335 "  audionum tinyint(4) NOT NULL DEFAULT '-1',"
02336 "  subtitlenum tinyint(4) NOT NULL DEFAULT '-1',"
02337 "  framenum bigint(20) NOT NULL DEFAULT '0',"
02338 "  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,"
02339 "  PRIMARY KEY (serialid)"
02340 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02341 "CREATE TABLE dvdinput ("
02342 "  intid int(10) unsigned NOT NULL,"
02343 "  hsize int(10) unsigned DEFAULT NULL,"
02344 "  vsize int(10) unsigned DEFAULT NULL,"
02345 "  ar_num int(10) unsigned DEFAULT NULL,"
02346 "  ar_denom int(10) unsigned DEFAULT NULL,"
02347 "  fr_code int(10) unsigned DEFAULT NULL,"
02348 "  letterbox tinyint(1) DEFAULT NULL,"
02349 "  v_format varchar(16) DEFAULT NULL,"
02350 "  PRIMARY KEY (intid)"
02351 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02352 "CREATE TABLE dvdtranscode ("
02353 "  intid int(11) NOT NULL AUTO_INCREMENT,"
02354 "  input int(10) unsigned DEFAULT NULL,"
02355 "  `name` varchar(128) NOT NULL,"
02356 "  sync_mode int(10) unsigned DEFAULT NULL,"
02357 "  use_yv12 tinyint(1) DEFAULT NULL,"
02358 "  cliptop int(11) DEFAULT NULL,"
02359 "  clipbottom int(11) DEFAULT NULL,"
02360 "  clipleft int(11) DEFAULT NULL,"
02361 "  clipright int(11) DEFAULT NULL,"
02362 "  f_resize_h int(11) DEFAULT NULL,"
02363 "  f_resize_w int(11) DEFAULT NULL,"
02364 "  hq_resize_h int(11) DEFAULT NULL,"
02365 "  hq_resize_w int(11) DEFAULT NULL,"
02366 "  grow_h int(11) DEFAULT NULL,"
02367 "  grow_w int(11) DEFAULT NULL,"
02368 "  clip2top int(11) DEFAULT NULL,"
02369 "  clip2bottom int(11) DEFAULT NULL,"
02370 "  clip2left int(11) DEFAULT NULL,"
02371 "  clip2right int(11) DEFAULT NULL,"
02372 "  codec varchar(128) NOT NULL,"
02373 "  codec_param varchar(128) DEFAULT NULL,"
02374 "  bitrate int(11) DEFAULT NULL,"
02375 "  a_sample_r int(11) DEFAULT NULL,"
02376 "  a_bitrate int(11) DEFAULT NULL,"
02377 "  two_pass tinyint(1) DEFAULT NULL,"
02378 "  tc_param varchar(128) DEFAULT NULL,"
02379 "  PRIMARY KEY (intid)"
02380 ") ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;",
02381 "CREATE TABLE eit_cache ("
02382 "  chanid int(10) NOT NULL,"
02383 "  eventid int(10) unsigned NOT NULL DEFAULT '0',"
02384 "  tableid tinyint(3) unsigned NOT NULL,"
02385 "  version tinyint(3) unsigned NOT NULL,"
02386 "  endtime int(10) unsigned NOT NULL,"
02387 "  `status` tinyint(4) NOT NULL DEFAULT '0',"
02388 "  PRIMARY KEY (chanid,eventid,`status`)"
02389 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02390 "CREATE TABLE filemarkup ("
02391 "  filename text NOT NULL,"
02392 "  mark mediumint(8) unsigned NOT NULL DEFAULT '0',"
02393 "  `offset` bigint(20) unsigned DEFAULT NULL,"
02394 "  `type` tinyint(4) NOT NULL DEFAULT '0',"
02395 "  KEY filename (filename(255))"
02396 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02397 "CREATE TABLE housekeeping ("
02398 "  tag varchar(64) NOT NULL DEFAULT '',"
02399 "  lastrun datetime DEFAULT NULL,"
02400 "  PRIMARY KEY (tag)"
02401 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02402 "CREATE TABLE inputgroup ("
02403 "  cardinputid int(10) unsigned NOT NULL,"
02404 "  inputgroupid int(10) unsigned NOT NULL,"
02405 "  inputgroupname varchar(32) NOT NULL"
02406 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02407 "CREATE TABLE internetcontent ("
02408 "  `name` varchar(255) NOT NULL,"
02409 "  thumbnail varchar(255) DEFAULT NULL,"
02410 "  `type` smallint(3) NOT NULL,"
02411 "  author varchar(128) NOT NULL,"
02412 "  description text NOT NULL,"
02413 "  commandline text NOT NULL,"
02414 "  version double NOT NULL,"
02415 "  updated datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02416 "  search tinyint(1) NOT NULL,"
02417 "  tree tinyint(1) NOT NULL,"
02418 "  podcast tinyint(1) NOT NULL,"
02419 "  download tinyint(1) NOT NULL,"
02420 "  `host` varchar(128) DEFAULT NULL"
02421 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02422 "CREATE TABLE internetcontentarticles ("
02423 "  feedtitle varchar(255) NOT NULL,"
02424 "  path text NOT NULL,"
02425 "  paththumb text NOT NULL,"
02426 "  title varchar(255) NOT NULL,"
02427 "  subtitle varchar(255) NOT NULL,"
02428 "  season smallint(5) NOT NULL DEFAULT '0',"
02429 "  episode smallint(5) NOT NULL DEFAULT '0',"
02430 "  description text NOT NULL,"
02431 "  url text NOT NULL,"
02432 "  `type` smallint(3) NOT NULL,"
02433 "  thumbnail text NOT NULL,"
02434 "  mediaURL text NOT NULL,"
02435 "  author varchar(255) NOT NULL,"
02436 "  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02437 "  `time` int(11) NOT NULL,"
02438 "  rating varchar(255) NOT NULL,"
02439 "  filesize bigint(20) NOT NULL,"
02440 "  player varchar(255) NOT NULL,"
02441 "  playerargs text NOT NULL,"
02442 "  download varchar(255) NOT NULL,"
02443 "  downloadargs text NOT NULL,"
02444 "  width smallint(6) NOT NULL,"
02445 "  height smallint(6) NOT NULL,"
02446 "  `language` varchar(128) NOT NULL,"
02447 "  podcast tinyint(1) NOT NULL,"
02448 "  downloadable tinyint(1) NOT NULL,"
02449 "  customhtml tinyint(1) NOT NULL,"
02450 "  countries varchar(255) NOT NULL"
02451 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02452 "CREATE TABLE inuseprograms ("
02453 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02454 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02455 "  recusage varchar(128) NOT NULL DEFAULT '',"
02456 "  lastupdatetime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02457 "  hostname varchar(64) NOT NULL DEFAULT '',"
02458 "  rechost varchar(64) NOT NULL,"
02459 "  recdir varchar(255) NOT NULL DEFAULT '',"
02460 "  KEY chanid (chanid,starttime),"
02461 "  KEY recusage (recusage,lastupdatetime)"
02462 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02463 "CREATE TABLE jobqueue ("
02464 "  id int(11) NOT NULL AUTO_INCREMENT,"
02465 "  chanid int(10) NOT NULL DEFAULT '0',"
02466 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02467 "  inserttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02468 "  `type` int(11) NOT NULL DEFAULT '0',"
02469 "  cmds int(11) NOT NULL DEFAULT '0',"
02470 "  flags int(11) NOT NULL DEFAULT '0',"
02471 "  `status` int(11) NOT NULL DEFAULT '0',"
02472 "  statustime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,"
02473 "  hostname varchar(64) NOT NULL DEFAULT '',"
02474 "  args blob NOT NULL,"
02475 "  `comment` varchar(128) NOT NULL DEFAULT '',"
02476 "  schedruntime datetime NOT NULL DEFAULT '2007-01-01 00:00:00',"
02477 "  PRIMARY KEY (id),"
02478 "  UNIQUE KEY chanid (chanid,starttime,`type`,inserttime)"
02479 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02480 "CREATE TABLE jumppoints ("
02481 "  destination varchar(128) NOT NULL DEFAULT '',"
02482 "  description varchar(255) DEFAULT NULL,"
02483 "  keylist varchar(128) DEFAULT NULL,"
02484 "  hostname varchar(64) NOT NULL DEFAULT '',"
02485 "  PRIMARY KEY (destination,hostname)"
02486 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02487 "CREATE TABLE keybindings ("
02488 "  `context` varchar(32) NOT NULL DEFAULT '',"
02489 "  `action` varchar(32) NOT NULL DEFAULT '',"
02490 "  description varchar(255) DEFAULT NULL,"
02491 "  keylist varchar(128) DEFAULT NULL,"
02492 "  hostname varchar(64) NOT NULL DEFAULT '',"
02493 "  PRIMARY KEY (`context`,`action`,hostname)"
02494 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02495 "CREATE TABLE keyword ("
02496 "  phrase varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',"
02497 "  searchtype int(10) unsigned NOT NULL DEFAULT '3',"
02498 "  UNIQUE KEY phrase (phrase,searchtype)"
02499 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02500 "CREATE TABLE livestream ("
02501 "  id int(10) unsigned NOT NULL AUTO_INCREMENT,"
02502 "  width int(10) unsigned NOT NULL,"
02503 "  height int(10) unsigned NOT NULL,"
02504 "  bitrate int(10) unsigned NOT NULL,"
02505 "  audiobitrate int(10) unsigned NOT NULL,"
02506 "  samplerate int(10) unsigned NOT NULL,"
02507 "  audioonlybitrate int(10) unsigned NOT NULL,"
02508 "  segmentsize int(10) unsigned NOT NULL DEFAULT '10',"
02509 "  maxsegments int(10) unsigned NOT NULL DEFAULT '0',"
02510 "  startsegment int(10) unsigned NOT NULL DEFAULT '0',"
02511 "  currentsegment int(10) unsigned NOT NULL DEFAULT '0',"
02512 "  segmentcount int(10) unsigned NOT NULL DEFAULT '0',"
02513 "  percentcomplete int(10) unsigned NOT NULL DEFAULT '0',"
02514 "  created datetime NOT NULL,"
02515 "  lastmodified datetime NOT NULL,"
02516 "  relativeurl varchar(512) NOT NULL,"
02517 "  fullurl varchar(1024) NOT NULL,"
02518 "  `status` int(10) unsigned NOT NULL DEFAULT '0',"
02519 "  statusmessage varchar(256) NOT NULL,"
02520 "  sourcefile varchar(512) NOT NULL,"
02521 "  sourcehost varchar(64) NOT NULL,"
02522 "  sourcewidth int(10) unsigned NOT NULL DEFAULT '0',"
02523 "  sourceheight int(10) unsigned NOT NULL DEFAULT '0',"
02524 "  outdir varchar(256) NOT NULL,"
02525 "  outbase varchar(128) NOT NULL,"
02526 "  PRIMARY KEY (id)"
02527 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02528 "CREATE TABLE logging ("
02529 "  id bigint(20) unsigned NOT NULL AUTO_INCREMENT,"
02530 "  `host` varchar(64) NOT NULL DEFAULT '',"
02531 "  application varchar(64) NOT NULL DEFAULT '',"
02532 "  pid int(11) NOT NULL DEFAULT '0',"
02533 "  tid int(11) NOT NULL DEFAULT '0',"
02534 "  thread varchar(64) NOT NULL DEFAULT '',"
02535 "  filename varchar(255) NOT NULL DEFAULT '',"
02536 "  line int(11) NOT NULL DEFAULT '0',"
02537 "  `function` varchar(255) NOT NULL DEFAULT '',"
02538 "  msgtime datetime NOT NULL,"
02539 "  `level` int(11) NOT NULL DEFAULT '0',"
02540 "  message varchar(2048) NOT NULL,"
02541 "  PRIMARY KEY (id),"
02542 "  KEY `host` (`host`,application,pid,msgtime),"
02543 "  KEY msgtime (msgtime),"
02544 "  KEY `level` (`level`)"
02545 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02546 "CREATE TABLE mythlog ("
02547 "  logid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02548 "  module varchar(32) NOT NULL DEFAULT '',"
02549 "  priority int(11) NOT NULL DEFAULT '0',"
02550 "  acknowledged tinyint(1) DEFAULT '0',"
02551 "  logdate datetime DEFAULT NULL,"
02552 "  `host` varchar(128) DEFAULT NULL,"
02553 "  message varchar(255) NOT NULL DEFAULT '',"
02554 "  details varchar(16000) NOT NULL DEFAULT '',"
02555 "  PRIMARY KEY (logid),"
02556 "  KEY module (module)"
02557 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02558 "CREATE TABLE networkiconmap ("
02559 "  id int(11) NOT NULL AUTO_INCREMENT,"
02560 "  network varchar(20) NOT NULL DEFAULT '',"
02561 "  url varchar(255) NOT NULL DEFAULT '',"
02562 "  PRIMARY KEY (id),"
02563 "  UNIQUE KEY network (network)"
02564 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02565 "CREATE TABLE oldfind ("
02566 "  recordid int(11) NOT NULL DEFAULT '0',"
02567 "  findid int(11) NOT NULL DEFAULT '0',"
02568 "  PRIMARY KEY (recordid,findid)"
02569 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02570 "CREATE TABLE oldprogram ("
02571 "  oldtitle varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',"
02572 "  airdate datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02573 "  PRIMARY KEY (oldtitle)"
02574 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02575 "CREATE TABLE oldrecorded ("
02576 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02577 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02578 "  endtime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02579 "  title varchar(128) NOT NULL DEFAULT '',"
02580 "  subtitle varchar(128) NOT NULL DEFAULT '',"
02581 "  description varchar(16000) NOT NULL DEFAULT '',"
02582 "  season smallint(5) NOT NULL,"
02583 "  episode smallint(5) NOT NULL,"
02584 "  category varchar(64) NOT NULL DEFAULT '',"
02585 "  seriesid varchar(40) NOT NULL DEFAULT '',"
02586 "  programid varchar(40) NOT NULL DEFAULT '',"
02587 "  inetref varchar(40) NOT NULL,"
02588 "  findid int(11) NOT NULL DEFAULT '0',"
02589 "  recordid int(11) NOT NULL DEFAULT '0',"
02590 "  station varchar(20) NOT NULL DEFAULT '',"
02591 "  rectype int(10) unsigned NOT NULL DEFAULT '0',"
02592 "  `duplicate` tinyint(1) NOT NULL DEFAULT '0',"
02593 "  recstatus int(11) NOT NULL DEFAULT '0',"
02594 "  reactivate smallint(6) NOT NULL DEFAULT '0',"
02595 "  generic tinyint(1) NOT NULL,"
02596 "  future tinyint(1) NOT NULL DEFAULT '0',"
02597 "  PRIMARY KEY (station,starttime,title),"
02598 "  KEY endtime (endtime),"
02599 "  KEY title (title),"
02600 "  KEY seriesid (seriesid),"
02601 "  KEY programid (programid),"
02602 "  KEY recordid (recordid),"
02603 "  KEY recstatus (recstatus,programid,seriesid),"
02604 "  KEY recstatus_2 (recstatus,title,subtitle),"
02605 "  KEY future (future),"
02606 "  KEY chanid (chanid,starttime),"
02607 "  KEY subtitle (subtitle),"
02608 "  KEY description (description(255))"
02609 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02610 "CREATE TABLE people ("
02611 "  person mediumint(8) unsigned NOT NULL AUTO_INCREMENT,"
02612 "  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',"
02613 "  PRIMARY KEY (person),"
02614 "  UNIQUE KEY `name` (`name`(41))"
02615 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02616 "CREATE TABLE pidcache ("
02617 "  chanid smallint(6) NOT NULL DEFAULT '0',"
02618 "  pid int(11) NOT NULL DEFAULT '-1',"
02619 "  tableid int(11) NOT NULL DEFAULT '-1',"
02620 "  KEY chanid (chanid)"
02621 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02622 "CREATE TABLE playgroup ("
02623 "  `name` varchar(32) NOT NULL DEFAULT '',"
02624 "  titlematch varchar(255) NOT NULL DEFAULT '',"
02625 "  skipahead int(11) NOT NULL DEFAULT '0',"
02626 "  skipback int(11) NOT NULL DEFAULT '0',"
02627 "  timestretch int(11) NOT NULL DEFAULT '0',"
02628 "  jump int(11) NOT NULL DEFAULT '0',"
02629 "  PRIMARY KEY (`name`)"
02630 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02631 "CREATE TABLE powerpriority ("
02632 "  priorityname varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,"
02633 "  recpriority int(10) NOT NULL DEFAULT '0',"
02634 "  selectclause varchar(16000) NOT NULL DEFAULT '',"
02635 "  PRIMARY KEY (priorityname)"
02636 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02637 "CREATE TABLE profilegroups ("
02638 "  id int(10) unsigned NOT NULL AUTO_INCREMENT,"
02639 "  `name` varchar(128) DEFAULT NULL,"
02640 "  cardtype varchar(32) NOT NULL DEFAULT 'V4L',"
02641 "  is_default int(1) DEFAULT '0',"
02642 "  hostname varchar(64) DEFAULT NULL,"
02643 "  PRIMARY KEY (id),"
02644 "  UNIQUE KEY `name` (`name`,hostname),"
02645 "  KEY cardtype (cardtype)"
02646 ") ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;",
02647 "CREATE TABLE program ("
02648 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02649 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02650 "  endtime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02651 "  title varchar(128) NOT NULL DEFAULT '',"
02652 "  subtitle varchar(128) NOT NULL DEFAULT '',"
02653 "  description varchar(16000) NOT NULL DEFAULT '',"
02654 "  category varchar(64) NOT NULL DEFAULT '',"
02655 "  category_type varchar(64) NOT NULL DEFAULT '',"
02656 "  airdate year(4) NOT NULL DEFAULT '0000',"
02657 "  stars float NOT NULL DEFAULT '0',"
02658 "  previouslyshown tinyint(4) NOT NULL DEFAULT '0',"
02659 "  title_pronounce varchar(128) NOT NULL DEFAULT '',"
02660 "  stereo tinyint(1) NOT NULL DEFAULT '0',"
02661 "  subtitled tinyint(1) NOT NULL DEFAULT '0',"
02662 "  hdtv tinyint(1) NOT NULL DEFAULT '0',"
02663 "  closecaptioned tinyint(1) NOT NULL DEFAULT '0',"
02664 "  partnumber int(11) NOT NULL DEFAULT '0',"
02665 "  parttotal int(11) NOT NULL DEFAULT '0',"
02666 "  seriesid varchar(64) NOT NULL DEFAULT '',"
02667 "  originalairdate date DEFAULT NULL,"
02668 "  showtype varchar(30) NOT NULL DEFAULT '',"
02669 "  colorcode varchar(20) NOT NULL DEFAULT '',"
02670 "  syndicatedepisodenumber varchar(20) NOT NULL DEFAULT '',"
02671 "  programid varchar(64) NOT NULL DEFAULT '',"
02672 "  manualid int(10) unsigned NOT NULL DEFAULT '0',"
02673 "  generic tinyint(1) DEFAULT '0',"
02674 "  listingsource int(11) NOT NULL DEFAULT '0',"
02675 "  `first` tinyint(1) NOT NULL DEFAULT '0',"
02676 "  `last` tinyint(1) NOT NULL DEFAULT '0',"
02677 "  audioprop set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') NOT NULL,"
02678 "  subtitletypes set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') NOT NULL,"
02679 "  videoprop set('HDTV','WIDESCREEN','AVC') NOT NULL,"
02680 "  PRIMARY KEY (chanid,starttime,manualid),"
02681 "  KEY endtime (endtime),"
02682 "  KEY title (title),"
02683 "  KEY title_pronounce (title_pronounce),"
02684 "  KEY seriesid (seriesid),"
02685 "  KEY id_start_end (chanid,starttime,endtime),"
02686 "  KEY program_manualid (manualid),"
02687 "  KEY previouslyshown (previouslyshown),"
02688 "  KEY programid (programid,starttime),"
02689 "  KEY starttime (starttime),"
02690 "  KEY subtitle (subtitle),"
02691 "  KEY description (description(255))"
02692 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02693 "CREATE TABLE programgenres ("
02694 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02695 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02696 "  relevance char(1) NOT NULL DEFAULT '',"
02697 "  genre varchar(30) DEFAULT NULL,"
02698 "  PRIMARY KEY (chanid,starttime,relevance),"
02699 "  KEY genre (genre)"
02700 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02701 "CREATE TABLE programrating ("
02702 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02703 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02704 "  system varchar(8) DEFAULT NULL,"
02705 "  rating varchar(16) DEFAULT NULL,"
02706 "  UNIQUE KEY chanid (chanid,starttime,system,rating),"
02707 "  KEY starttime (starttime,system)"
02708 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02709 "CREATE TABLE recgrouppassword ("
02710 "  recgroup varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',"
02711 "  `password` varchar(10) NOT NULL DEFAULT '',"
02712 "  PRIMARY KEY (recgroup)"
02713 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02714 "CREATE TABLE record ("
02715 "  recordid int(10) unsigned NOT NULL AUTO_INCREMENT,"
02716 "  `type` int(10) unsigned NOT NULL DEFAULT '0',"
02717 "  chanid int(10) unsigned DEFAULT NULL,"
02718 "  starttime time NOT NULL DEFAULT '00:00:00',"
02719 "  startdate date NOT NULL DEFAULT '0000-00-00',"
02720 "  endtime time NOT NULL DEFAULT '00:00:00',"
02721 "  enddate date NOT NULL DEFAULT '0000-00-00',"
02722 "  title varchar(128) NOT NULL DEFAULT '',"
02723 "  subtitle varchar(128) NOT NULL DEFAULT '',"
02724 "  description varchar(16000) NOT NULL DEFAULT '',"
02725 "  season smallint(5) NOT NULL,"
02726 "  episode smallint(5) NOT NULL,"
02727 "  category varchar(64) NOT NULL DEFAULT '',"
02728 "  `profile` varchar(128) NOT NULL DEFAULT 'Default',"
02729 "  recpriority int(10) NOT NULL DEFAULT '0',"
02730 "  autoexpire int(11) NOT NULL DEFAULT '0',"
02731 "  maxepisodes int(11) NOT NULL DEFAULT '0',"
02732 "  maxnewest int(11) NOT NULL DEFAULT '0',"
02733 "  startoffset int(11) NOT NULL DEFAULT '0',"
02734 "  endoffset int(11) NOT NULL DEFAULT '0',"
02735 "  recgroup varchar(32) NOT NULL DEFAULT 'Default',"
02736 "  dupmethod int(11) NOT NULL DEFAULT '6',"
02737 "  dupin int(11) NOT NULL DEFAULT '15',"
02738 "  station varchar(20) NOT NULL DEFAULT '',"
02739 "  seriesid varchar(40) NOT NULL DEFAULT '',"
02740 "  programid varchar(40) NOT NULL DEFAULT '',"
02741 "  inetref varchar(40) NOT NULL,"
02742 "  search int(10) unsigned NOT NULL DEFAULT '0',"
02743 "  autotranscode tinyint(1) NOT NULL DEFAULT '0',"
02744 "  autocommflag tinyint(1) NOT NULL DEFAULT '0',"
02745 "  autouserjob1 tinyint(1) NOT NULL DEFAULT '0',"
02746 "  autouserjob2 tinyint(1) NOT NULL DEFAULT '0',"
02747 "  autouserjob3 tinyint(1) NOT NULL DEFAULT '0',"
02748 "  autouserjob4 tinyint(1) NOT NULL DEFAULT '0',"
02749 "  autometadata tinyint(1) NOT NULL DEFAULT '0',"
02750 "  findday tinyint(4) NOT NULL DEFAULT '0',"
02751 "  findtime time NOT NULL DEFAULT '00:00:00',"
02752 "  findid int(11) NOT NULL DEFAULT '0',"
02753 "  inactive tinyint(1) NOT NULL DEFAULT '0',"
02754 "  parentid int(11) NOT NULL DEFAULT '0',"
02755 "  transcoder int(11) NOT NULL DEFAULT '0',"
02756 "  playgroup varchar(32) NOT NULL DEFAULT 'Default',"
02757 "  prefinput int(10) NOT NULL DEFAULT '0',"
02758 "  next_record datetime NOT NULL,"
02759 "  last_record datetime NOT NULL,"
02760 "  last_delete datetime NOT NULL,"
02761 "  storagegroup varchar(32) NOT NULL DEFAULT 'Default',"
02762 "  avg_delay int(11) NOT NULL DEFAULT '100',"
02763 "  filter int(10) unsigned NOT NULL DEFAULT '0',"
02764 "  PRIMARY KEY (recordid),"
02765 "  KEY chanid (chanid,starttime),"
02766 "  KEY title (title),"
02767 "  KEY seriesid (seriesid),"
02768 "  KEY programid (programid),"
02769 "  KEY maxepisodes (maxepisodes),"
02770 "  KEY search (search),"
02771 "  KEY `type` (`type`)"
02772 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02773 "CREATE TABLE recorded ("
02774 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02775 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02776 "  endtime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02777 "  title varchar(128) NOT NULL DEFAULT '',"
02778 "  subtitle varchar(128) NOT NULL DEFAULT '',"
02779 "  description varchar(16000) NOT NULL DEFAULT '',"
02780 "  season smallint(5) NOT NULL,"
02781 "  episode smallint(5) NOT NULL,"
02782 "  category varchar(64) NOT NULL DEFAULT '',"
02783 "  hostname varchar(64) NOT NULL DEFAULT '',"
02784 "  bookmark tinyint(1) NOT NULL DEFAULT '0',"
02785 "  editing int(10) unsigned NOT NULL DEFAULT '0',"
02786 "  cutlist tinyint(1) NOT NULL DEFAULT '0',"
02787 "  autoexpire int(11) NOT NULL DEFAULT '0',"
02788 "  commflagged int(10) unsigned NOT NULL DEFAULT '0',"
02789 "  recgroup varchar(32) NOT NULL DEFAULT 'Default',"
02790 "  recordid int(11) DEFAULT NULL,"
02791 "  seriesid varchar(40) NOT NULL DEFAULT '',"
02792 "  programid varchar(40) NOT NULL DEFAULT '',"
02793 "  inetref varchar(40) NOT NULL,"
02794 "  lastmodified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,"
02795 "  filesize bigint(20) NOT NULL DEFAULT '0',"
02796 "  stars float NOT NULL DEFAULT '0',"
02797 "  previouslyshown tinyint(1) DEFAULT '0',"
02798 "  originalairdate date DEFAULT NULL,"
02799 "  `preserve` tinyint(1) NOT NULL DEFAULT '0',"
02800 "  findid int(11) NOT NULL DEFAULT '0',"
02801 "  deletepending tinyint(1) NOT NULL DEFAULT '0',"
02802 "  transcoder int(11) NOT NULL DEFAULT '0',"
02803 "  timestretch float NOT NULL DEFAULT '1',"
02804 "  recpriority int(11) NOT NULL DEFAULT '0',"
02805 "  basename varchar(255) NOT NULL,"
02806 "  progstart datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02807 "  progend datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02808 "  playgroup varchar(32) NOT NULL DEFAULT 'Default',"
02809 "  `profile` varchar(32) NOT NULL DEFAULT '',"
02810 "  `duplicate` tinyint(1) NOT NULL DEFAULT '0',"
02811 "  transcoded tinyint(1) NOT NULL DEFAULT '0',"
02812 "  watched tinyint(4) NOT NULL DEFAULT '0',"
02813 "  storagegroup varchar(32) NOT NULL DEFAULT 'Default',"
02814 "  bookmarkupdate timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',"
02815 "  PRIMARY KEY (chanid,starttime),"
02816 "  KEY endtime (endtime),"
02817 "  KEY seriesid (seriesid),"
02818 "  KEY programid (programid),"
02819 "  KEY title (title),"
02820 "  KEY recordid (recordid),"
02821 "  KEY deletepending (deletepending,lastmodified),"
02822 "  KEY recgroup (recgroup,endtime)"
02823 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02824 "CREATE TABLE recordedartwork ("
02825 "  inetref varchar(255) NOT NULL,"
02826 "  season smallint(5) NOT NULL,"
02827 "  `host` text NOT NULL,"
02828 "  coverart text NOT NULL,"
02829 "  fanart text NOT NULL,"
02830 "  banner text NOT NULL"
02831 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02832 "CREATE TABLE recordedcredits ("
02833 "  person mediumint(8) unsigned NOT NULL DEFAULT '0',"
02834 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02835 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02836 "  role set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL DEFAULT '',"
02837 "  UNIQUE KEY chanid (chanid,starttime,person,role),"
02838 "  KEY person (person,role)"
02839 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02840 "CREATE TABLE recordedfile ("
02841 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02842 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02843 "  basename varchar(128) NOT NULL DEFAULT '',"
02844 "  filesize bigint(20) NOT NULL DEFAULT '0',"
02845 "  width smallint(5) unsigned NOT NULL DEFAULT '0',"
02846 "  height smallint(5) unsigned NOT NULL DEFAULT '0',"
02847 "  fps float(6,3) NOT NULL DEFAULT '0.000',"
02848 "  aspect float(8,6) NOT NULL DEFAULT '0.000000',"
02849 "  audio_sample_rate smallint(5) unsigned NOT NULL DEFAULT '0',"
02850 "  audio_bits_per_sample smallint(5) unsigned NOT NULL DEFAULT '0',"
02851 "  audio_channels tinyint(3) unsigned NOT NULL DEFAULT '0',"
02852 "  audio_type varchar(255) NOT NULL DEFAULT '',"
02853 "  video_type varchar(255) NOT NULL DEFAULT '',"
02854 "  `comment` varchar(255) NOT NULL DEFAULT '',"
02855 "  hostname varchar(64) NOT NULL,"
02856 "  storagegroup varchar(32) NOT NULL,"
02857 "  id int(11) NOT NULL AUTO_INCREMENT,"
02858 "  PRIMARY KEY (id),"
02859 "  UNIQUE KEY chanid (chanid,starttime,basename),"
02860 "  KEY basename (basename)"
02861 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02862 "CREATE TABLE recordedmarkup ("
02863 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02864 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02865 "  mark mediumint(8) unsigned NOT NULL DEFAULT '0',"
02866 "  `type` tinyint(4) NOT NULL DEFAULT '0',"
02867 "  `data` int(11) unsigned DEFAULT NULL,"
02868 "  PRIMARY KEY (chanid,starttime,`type`,mark)"
02869 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02870 "CREATE TABLE recordedprogram ("
02871 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02872 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02873 "  endtime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02874 "  title varchar(128) NOT NULL DEFAULT '',"
02875 "  subtitle varchar(128) NOT NULL DEFAULT '',"
02876 "  description varchar(16000) NOT NULL DEFAULT '',"
02877 "  category varchar(64) NOT NULL DEFAULT '',"
02878 "  category_type varchar(64) NOT NULL DEFAULT '',"
02879 "  airdate year(4) NOT NULL DEFAULT '0000',"
02880 "  stars float unsigned NOT NULL DEFAULT '0',"
02881 "  previouslyshown tinyint(4) NOT NULL DEFAULT '0',"
02882 "  title_pronounce varchar(128) NOT NULL DEFAULT '',"
02883 "  stereo tinyint(1) NOT NULL DEFAULT '0',"
02884 "  subtitled tinyint(1) NOT NULL DEFAULT '0',"
02885 "  hdtv tinyint(1) NOT NULL DEFAULT '0',"
02886 "  closecaptioned tinyint(1) NOT NULL DEFAULT '0',"
02887 "  partnumber int(11) NOT NULL DEFAULT '0',"
02888 "  parttotal int(11) NOT NULL DEFAULT '0',"
02889 "  seriesid varchar(40) NOT NULL DEFAULT '',"
02890 "  originalairdate date DEFAULT NULL,"
02891 "  showtype varchar(30) NOT NULL DEFAULT '',"
02892 "  colorcode varchar(20) NOT NULL DEFAULT '',"
02893 "  syndicatedepisodenumber varchar(20) NOT NULL DEFAULT '',"
02894 "  programid varchar(40) NOT NULL DEFAULT '',"
02895 "  manualid int(10) unsigned NOT NULL DEFAULT '0',"
02896 "  generic tinyint(1) DEFAULT '0',"
02897 "  listingsource int(11) NOT NULL DEFAULT '0',"
02898 "  `first` tinyint(1) NOT NULL DEFAULT '0',"
02899 "  `last` tinyint(1) NOT NULL DEFAULT '0',"
02900 "  audioprop set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') NOT NULL,"
02901 "  subtitletypes set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') NOT NULL,"
02902 "  videoprop set('HDTV','WIDESCREEN','AVC','720','1080','DAMAGED') NOT NULL,"
02903 "  PRIMARY KEY (chanid,starttime,manualid),"
02904 "  KEY endtime (endtime),"
02905 "  KEY title (title),"
02906 "  KEY title_pronounce (title_pronounce),"
02907 "  KEY seriesid (seriesid),"
02908 "  KEY programid (programid),"
02909 "  KEY id_start_end (chanid,starttime,endtime)"
02910 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02911 "CREATE TABLE recordedrating ("
02912 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02913 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02914 "  system varchar(8) DEFAULT NULL,"
02915 "  rating varchar(16) DEFAULT NULL,"
02916 "  UNIQUE KEY chanid (chanid,starttime,system,rating),"
02917 "  KEY starttime (starttime,system)"
02918 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02919 "CREATE TABLE recordedseek ("
02920 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02921 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02922 "  mark mediumint(8) unsigned NOT NULL DEFAULT '0',"
02923 "  `offset` bigint(20) unsigned NOT NULL,"
02924 "  `type` tinyint(4) NOT NULL DEFAULT '0',"
02925 "  PRIMARY KEY (chanid,starttime,`type`,mark)"
02926 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02927 "CREATE TABLE recordfilter ("
02928 "  filterid int(10) unsigned NOT NULL,"
02929 "  description varchar(64) DEFAULT NULL,"
02930 "  clause varchar(256) DEFAULT NULL,"
02931 "  newruledefault tinyint(1) DEFAULT '0',"
02932 "  PRIMARY KEY (filterid)"
02933 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02934 "CREATE TABLE recordingprofiles ("
02935 "  id int(10) unsigned NOT NULL AUTO_INCREMENT,"
02936 "  `name` varchar(128) DEFAULT NULL,"
02937 "  videocodec varchar(128) DEFAULT NULL,"
02938 "  audiocodec varchar(128) DEFAULT NULL,"
02939 "  profilegroup int(10) unsigned NOT NULL DEFAULT '0',"
02940 "  PRIMARY KEY (id),"
02941 "  KEY profilegroup (profilegroup)"
02942 ") ENGINE=MyISAM AUTO_INCREMENT=70 DEFAULT CHARSET=utf8;",
02943 "CREATE TABLE recordmatch ("
02944 "  recordid int(10) unsigned NOT NULL,"
02945 "  chanid int(10) unsigned NOT NULL,"
02946 "  starttime datetime NOT NULL,"
02947 "  manualid int(10) unsigned NOT NULL,"
02948 "  oldrecduplicate tinyint(1) DEFAULT NULL,"
02949 "  recduplicate tinyint(1) DEFAULT NULL,"
02950 "  findduplicate tinyint(1) DEFAULT NULL,"
02951 "  oldrecstatus int(11) DEFAULT NULL,"
02952 "  UNIQUE KEY recordid (recordid,chanid,starttime),"
02953 "  KEY chanid (chanid,starttime,manualid)"
02954 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02955 "CREATE TABLE settings ("
02956 "  `value` varchar(128) NOT NULL DEFAULT '',"
02957 "  `data` varchar(16000) NOT NULL DEFAULT '',"
02958 "  hostname varchar(64) DEFAULT NULL,"
02959 "  KEY `value` (`value`,hostname)"
02960 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02961 "CREATE TABLE storagegroup ("
02962 "  id int(11) NOT NULL AUTO_INCREMENT,"
02963 "  groupname varchar(32) NOT NULL,"
02964 "  hostname varchar(64) NOT NULL DEFAULT '',"
02965 "  dirname varchar(235) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',"
02966 "  PRIMARY KEY (id),"
02967 "  UNIQUE KEY grouphostdir (groupname,hostname,dirname),"
02968 "  KEY hostname (hostname)"
02969 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02970 "CREATE TABLE tvchain ("
02971 "  chanid int(10) unsigned NOT NULL DEFAULT '0',"
02972 "  starttime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02973 "  chainid varchar(128) NOT NULL DEFAULT '',"
02974 "  chainpos int(10) NOT NULL DEFAULT '0',"
02975 "  discontinuity tinyint(1) NOT NULL DEFAULT '0',"
02976 "  watching int(10) NOT NULL DEFAULT '0',"
02977 "  hostprefix varchar(128) NOT NULL DEFAULT '',"
02978 "  cardtype varchar(32) NOT NULL DEFAULT 'V4L',"
02979 "  input varchar(32) NOT NULL DEFAULT '',"
02980 "  channame varchar(32) NOT NULL DEFAULT '',"
02981 "  endtime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',"
02982 "  PRIMARY KEY (chanid,starttime)"
02983 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02984 "CREATE TABLE tvosdmenu ("
02985 "  osdcategory varchar(32) NOT NULL,"
02986 "  livetv tinyint(4) NOT NULL DEFAULT '0',"
02987 "  recorded tinyint(4) NOT NULL DEFAULT '0',"
02988 "  video tinyint(4) NOT NULL DEFAULT '0',"
02989 "  dvd tinyint(4) NOT NULL DEFAULT '0',"
02990 "  description varchar(32) NOT NULL,"
02991 "  PRIMARY KEY (osdcategory)"
02992 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
02993 "CREATE TABLE upnpmedia ("
02994 "  intid int(10) unsigned NOT NULL DEFAULT '0',"
02995 "  class varchar(64) NOT NULL DEFAULT '',"
02996 "  itemtype varchar(128) NOT NULL DEFAULT '',"
02997 "  parentid int(10) unsigned NOT NULL DEFAULT '0',"
02998 "  itemproperties varchar(255) NOT NULL DEFAULT '',"
02999 "  filepath varchar(512) NOT NULL DEFAULT '',"
03000 "  title varchar(255) NOT NULL DEFAULT '',"
03001 "  filename varchar(512) NOT NULL DEFAULT '',"
03002 "  coverart varchar(512) NOT NULL DEFAULT '',"
03003 "  PRIMARY KEY (intid),"
03004 "  KEY class (class),"
03005 "  KEY filepath (filepath(333)),"
03006 "  KEY parentid (parentid)"
03007 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03008 "CREATE TABLE videocast ("
03009 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03010 "  cast varchar(128) NOT NULL,"
03011 "  PRIMARY KEY (intid)"
03012 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03013 "CREATE TABLE videocategory ("
03014 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03015 "  category varchar(128) NOT NULL,"
03016 "  PRIMARY KEY (intid)"
03017 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03018 "CREATE TABLE videocollection ("
03019 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03020 "  title varchar(256) NOT NULL,"
03021 "  contenttype set('MOVIE','TELEVISION','ADULT','MUSICVIDEO','HOMEVIDEO') NOT NULL DEFAULT '',"
03022 "  plot text,"
03023 "  network varchar(128) DEFAULT NULL,"
03024 "  collectionref varchar(128) NOT NULL,"
03025 "  certification varchar(128) DEFAULT NULL,"
03026 "  genre varchar(128) DEFAULT '',"
03027 "  releasedate date DEFAULT NULL,"
03028 "  `language` varchar(10) DEFAULT NULL,"
03029 "  `status` varchar(64) DEFAULT NULL,"
03030 "  rating float DEFAULT '0',"
03031 "  ratingcount int(10) DEFAULT '0',"
03032 "  runtime smallint(5) unsigned DEFAULT '0',"
03033 "  banner text,"
03034 "  fanart text,"
03035 "  coverart text,"
03036 "  PRIMARY KEY (intid),"
03037 "  KEY title (title)"
03038 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03039 "CREATE TABLE videocountry ("
03040 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03041 "  country varchar(128) NOT NULL,"
03042 "  PRIMARY KEY (intid)"
03043 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03044 "CREATE TABLE videogenre ("
03045 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03046 "  genre varchar(128) NOT NULL,"
03047 "  PRIMARY KEY (intid)"
03048 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03049 "CREATE TABLE videometadata ("
03050 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03051 "  title varchar(128) NOT NULL,"
03052 "  subtitle text NOT NULL,"
03053 "  tagline varchar(255) DEFAULT NULL,"
03054 "  director varchar(128) NOT NULL,"
03055 "  studio varchar(128) DEFAULT NULL,"
03056 "  plot text,"
03057 "  rating varchar(128) NOT NULL,"
03058 "  inetref varchar(255) NOT NULL,"
03059 "  collectionref int(10) NOT NULL DEFAULT '-1',"
03060 "  homepage text NOT NULL,"
03061 "  `year` int(10) unsigned NOT NULL,"
03062 "  releasedate date NOT NULL,"
03063 "  userrating float NOT NULL,"
03064 "  length int(10) unsigned NOT NULL,"
03065 "  playcount int(10) NOT NULL DEFAULT '0',"
03066 "  season smallint(5) unsigned NOT NULL DEFAULT '0',"
03067 "  episode smallint(5) unsigned NOT NULL DEFAULT '0',"
03068 "  showlevel int(10) unsigned NOT NULL,"
03069 "  filename text NOT NULL,"
03070 "  `hash` varchar(128) NOT NULL,"
03071 "  coverfile text NOT NULL,"
03072 "  childid int(11) NOT NULL DEFAULT '-1',"
03073 "  browse tinyint(1) NOT NULL DEFAULT '1',"
03074 "  watched tinyint(1) NOT NULL DEFAULT '0',"
03075 "  processed tinyint(1) NOT NULL DEFAULT '0',"
03076 "  playcommand varchar(255) DEFAULT NULL,"
03077 "  category int(10) unsigned NOT NULL DEFAULT '0',"
03078 "  trailer text,"
03079 "  `host` text NOT NULL,"
03080 "  screenshot text,"
03081 "  banner text,"
03082 "  fanart text,"
03083 "  insertdate timestamp NULL DEFAULT CURRENT_TIMESTAMP,"
03084 "  contenttype set('MOVIE','TELEVISION','ADULT','MUSICVIDEO','HOMEVIDEO') NOT NULL DEFAULT '',"
03085 "  PRIMARY KEY (intid),"
03086 "  KEY director (director),"
03087 "  KEY title (title)"
03088 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03089 "CREATE TABLE videometadatacast ("
03090 "  idvideo int(10) unsigned NOT NULL,"
03091 "  idcast int(10) unsigned NOT NULL,"
03092 "  UNIQUE KEY idvideo (idvideo,idcast)"
03093 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03094 "CREATE TABLE videometadatacountry ("
03095 "  idvideo int(10) unsigned NOT NULL,"
03096 "  idcountry int(10) unsigned NOT NULL,"
03097 "  UNIQUE KEY idvideo_2 (idvideo,idcountry),"
03098 "  KEY idvideo (idvideo),"
03099 "  KEY idcountry (idcountry)"
03100 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03101 "CREATE TABLE videometadatagenre ("
03102 "  idvideo int(10) unsigned NOT NULL,"
03103 "  idgenre int(10) unsigned NOT NULL,"
03104 "  UNIQUE KEY idvideo_2 (idvideo,idgenre),"
03105 "  KEY idvideo (idvideo),"
03106 "  KEY idgenre (idgenre)"
03107 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03108 "CREATE TABLE videopathinfo ("
03109 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03110 "  path text,"
03111 "  contenttype set('MOVIE','TELEVISION','ADULT','MUSICVIDEO','HOMEVIDEO') NOT NULL DEFAULT '',"
03112 "  collectionref int(10) DEFAULT '0',"
03113 "  recurse tinyint(1) DEFAULT '0',"
03114 "  PRIMARY KEY (intid)"
03115 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03116 "CREATE TABLE videosource ("
03117 "  sourceid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03118 "  `name` varchar(128) NOT NULL DEFAULT '',"
03119 "  xmltvgrabber varchar(128) DEFAULT NULL,"
03120 "  userid varchar(128) NOT NULL DEFAULT '',"
03121 "  freqtable varchar(16) NOT NULL DEFAULT 'default',"
03122 "  lineupid varchar(64) DEFAULT NULL,"
03123 "  `password` varchar(64) DEFAULT NULL,"
03124 "  useeit smallint(6) NOT NULL DEFAULT '0',"
03125 "  configpath varchar(4096) DEFAULT NULL,"
03126 "  dvb_nit_id int(6) DEFAULT '-1',"
03127 "  PRIMARY KEY (sourceid),"
03128 "  UNIQUE KEY `name` (`name`)"
03129 ") ENGINE=MyISAM DEFAULT CHARSET=utf8;",
03130 "CREATE TABLE videotypes ("
03131 "  intid int(10) unsigned NOT NULL AUTO_INCREMENT,"
03132 "  extension varchar(128) NOT NULL,"
03133 "  playcommand varchar(255) NOT NULL,"
03134 "  f_ignore tinyint(1) DEFAULT NULL,"
03135 "  use_default tinyint(1) DEFAULT NULL,"
03136 "  PRIMARY KEY (intid)"
03137 ") ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;",
03138 
03139 "INSERT INTO channelgroupnames VALUES (1,'Favorites');",
03140 "INSERT INTO customexample VALUES ('New Flix','','program.category_type = \\'movie\\' AND program.airdate >= \\n     YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) \\nAND program.stars > 0.5 ',1);",
03141 "INSERT INTO dtv_privatetypes VALUES ('dvb',9018,'channel_numbers','131');",
03142 "INSERT INTO dtv_privatetypes VALUES ('dvb',9018,'guide_fixup','2');",
03143 "INSERT INTO dtv_privatetypes VALUES ('dvb',256,'guide_fixup','1');",
03144 "INSERT INTO dtv_privatetypes VALUES ('dvb',257,'guide_fixup','1');",
03145 "INSERT INTO dtv_privatetypes VALUES ('dvb',256,'tv_types','1,150,134,133');",
03146 "INSERT INTO dtv_privatetypes VALUES ('dvb',257,'tv_types','1,150,134,133');",
03147 "INSERT INTO dtv_privatetypes VALUES ('dvb',4100,'sdt_mapping','1');",
03148 "INSERT INTO dtv_privatetypes VALUES ('dvb',4101,'sdt_mapping','1');",
03149 "INSERT INTO dtv_privatetypes VALUES ('dvb',4102,'sdt_mapping','1');",
03150 "INSERT INTO dtv_privatetypes VALUES ('dvb',4103,'sdt_mapping','1');",
03151 "INSERT INTO dtv_privatetypes VALUES ('dvb',4104,'sdt_mapping','1');",
03152 "INSERT INTO dtv_privatetypes VALUES ('dvb',4105,'sdt_mapping','1');",
03153 "INSERT INTO dtv_privatetypes VALUES ('dvb',4106,'sdt_mapping','1');",
03154 "INSERT INTO dtv_privatetypes VALUES ('dvb',4107,'sdt_mapping','1');",
03155 "INSERT INTO dtv_privatetypes VALUES ('dvb',4097,'sdt_mapping','1');",
03156 "INSERT INTO dtv_privatetypes VALUES ('dvb',4098,'sdt_mapping','1');",
03157 "INSERT INTO dtv_privatetypes VALUES ('dvb',4100,'tv_types','1,145,154');",
03158 "INSERT INTO dtv_privatetypes VALUES ('dvb',4101,'tv_types','1,145,154');",
03159 "INSERT INTO dtv_privatetypes VALUES ('dvb',4102,'tv_types','1,145,154');",
03160 "INSERT INTO dtv_privatetypes VALUES ('dvb',4103,'tv_types','1,145,154');",
03161 "INSERT INTO dtv_privatetypes VALUES ('dvb',4104,'tv_types','1,145,154');",
03162 "INSERT INTO dtv_privatetypes VALUES ('dvb',4105,'tv_types','1,145,154');",
03163 "INSERT INTO dtv_privatetypes VALUES ('dvb',4106,'tv_types','1,145,154');",
03164 "INSERT INTO dtv_privatetypes VALUES ('dvb',4107,'tv_types','1,145,154');",
03165 "INSERT INTO dtv_privatetypes VALUES ('dvb',4097,'tv_types','1,145,154');",
03166 "INSERT INTO dtv_privatetypes VALUES ('dvb',4098,'tv_types','1,145,154');",
03167 "INSERT INTO dtv_privatetypes VALUES ('dvb',4100,'guide_fixup','1');",
03168 "INSERT INTO dtv_privatetypes VALUES ('dvb',4101,'guide_fixup','1');",
03169 "INSERT INTO dtv_privatetypes VALUES ('dvb',4102,'guide_fixup','1');",
03170 "INSERT INTO dtv_privatetypes VALUES ('dvb',4103,'guide_fixup','1');",
03171 "INSERT INTO dtv_privatetypes VALUES ('dvb',4104,'guide_fixup','1');",
03172 "INSERT INTO dtv_privatetypes VALUES ('dvb',4105,'guide_fixup','1');",
03173 "INSERT INTO dtv_privatetypes VALUES ('dvb',4106,'guide_fixup','1');",
03174 "INSERT INTO dtv_privatetypes VALUES ('dvb',4107,'guide_fixup','1');",
03175 "INSERT INTO dtv_privatetypes VALUES ('dvb',4096,'guide_fixup','5');",
03176 "INSERT INTO dtv_privatetypes VALUES ('dvb',4097,'guide_fixup','1');",
03177 "INSERT INTO dtv_privatetypes VALUES ('dvb',4098,'guide_fixup','1');",
03178 "INSERT INTO dtv_privatetypes VALUES ('dvb',94,'tv_types','1,128');",
03179 "INSERT INTO dtv_privatetypes VALUES ('atsc',1793,'guide_fixup','3');",
03180 "INSERT INTO dtv_privatetypes VALUES ('dvb',40999,'guide_fixup','4');",
03181 "INSERT INTO dtv_privatetypes VALUES ('dvb',70,'force_guide_present','yes');",
03182 "INSERT INTO dtv_privatetypes VALUES ('dvb',70,'guide_ranges','80,80,96,96');",
03183 "INSERT INTO dtv_privatetypes VALUES ('dvb',4112,'channel_numbers','131');",
03184 "INSERT INTO dtv_privatetypes VALUES ('dvb',4115,'channel_numbers','131');",
03185 "INSERT INTO dtv_privatetypes VALUES ('dvb',4116,'channel_numbers','131');",
03186 "INSERT INTO dtv_privatetypes VALUES ('dvb',12802,'channel_numbers','131');",
03187 "INSERT INTO dtv_privatetypes VALUES ('dvb',12803,'channel_numbers','131');",
03188 "INSERT INTO dtv_privatetypes VALUES ('dvb',12829,'channel_numbers','131');",
03189 "INSERT INTO dtv_privatetypes VALUES ('dvb',40999,'parse_subtitle_list','1070,1308,1041,1306,1307,1030,1016,1131,1068,1069');",
03190 "INSERT INTO dtv_privatetypes VALUES ('dvb',4096,'guide_fixup','5');",
03191 "INSERT INTO dvdinput VALUES (1,720,480,16,9,1,1,'ntsc');",
03192 "INSERT INTO dvdinput VALUES (2,720,480,16,9,1,0,'ntsc');",
03193 "INSERT INTO dvdinput VALUES (3,720,480,4,3,1,1,'ntsc');",
03194 "INSERT INTO dvdinput VALUES (4,720,480,4,3,1,0,'ntsc');",
03195 "INSERT INTO dvdinput VALUES (5,720,576,16,9,3,1,'pal');",
03196 "INSERT INTO dvdinput VALUES (6,720,576,16,9,3,0,'pal');",
03197 "INSERT INTO dvdinput VALUES (7,720,576,4,3,3,1,'pal');",
03198 "INSERT INTO dvdinput VALUES (8,720,576,4,3,3,0,'pal');",
03199 "INSERT INTO dvdtranscode VALUES (1,1,'Good',2,1,16,16,0,0,2,0,0,0,0,0,32,32,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03200 "INSERT INTO dvdtranscode VALUES (2,2,'Excellent',2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL);",
03201 "INSERT INTO dvdtranscode VALUES (3,2,'Good',2,1,0,0,8,8,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03202 "INSERT INTO dvdtranscode VALUES (4,2,'Medium',2,1,0,0,8,8,5,5,0,0,0,0,0,0,0,0,'divx5',NULL,1200,NULL,NULL,0,NULL);",
03203 "INSERT INTO dvdtranscode VALUES (5,3,'Good',2,1,0,0,0,0,0,0,0,0,2,0,80,80,8,8,'divx5',NULL,0,NULL,NULL,0,NULL);",
03204 "INSERT INTO dvdtranscode VALUES (6,4,'Excellent',2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL);",
03205 "INSERT INTO dvdtranscode VALUES (7,4,'Good',2,1,0,0,8,8,0,2,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03206 "INSERT INTO dvdtranscode VALUES (8,5,'Good',1,1,16,16,0,0,5,0,0,0,0,0,40,40,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03207 "INSERT INTO dvdtranscode VALUES (9,6,'Good',1,1,0,0,16,16,5,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03208 "INSERT INTO dvdtranscode VALUES (10,7,'Good',1,1,0,0,0,0,1,0,0,0,0,0,76,76,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03209 "INSERT INTO dvdtranscode VALUES (11,8,'Good',1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);",
03210 "INSERT INTO playgroup VALUES ('Default','',30,5,100,0);",
03211 "INSERT INTO profilegroups VALUES (1,'Software Encoders (v4l based)','V4L',1,NULL);",
03212 "INSERT INTO profilegroups VALUES (2,'IVTV MPEG-2 Encoders','MPEG',1,NULL);",
03213 "INSERT INTO profilegroups VALUES (3,'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)','MJPEG',1,NULL);",
03214 "INSERT INTO profilegroups VALUES (4,'Hardware HDTV','HDTV',1,NULL);",
03215 "INSERT INTO profilegroups VALUES (5,'Hardware DVB Encoders','DVB',1,NULL);",
03216 "INSERT INTO profilegroups VALUES (6,'Transcoders','TRANSCODE',1,NULL);",
03217 "INSERT INTO profilegroups VALUES (7,'FireWire Input','FIREWIRE',1,NULL);",
03218 "INSERT INTO profilegroups VALUES (8,'USB Mpeg-4 Encoder (Plextor ConvertX, etc)','GO7007',1,NULL);",
03219 "INSERT INTO profilegroups VALUES (14,'Import Recorder','IMPORT',1,NULL);",
03220 "INSERT INTO profilegroups VALUES (10,'Freebox Input','Freebox',1,NULL);",
03221 "INSERT INTO profilegroups VALUES (11,'HDHomeRun Recorders','HDHOMERUN',1,NULL);",
03222 "INSERT INTO profilegroups VALUES (12,'CRC IP Recorders','CRC_IP',1,NULL);",
03223 "INSERT INTO profilegroups VALUES (13,'HD-PVR Recorders','HDPVR',1,NULL);",
03224 "INSERT INTO profilegroups VALUES (15,'ASI Recorder (DVEO)','ASI',1,NULL);",
03225 "INSERT INTO profilegroups VALUES (16,'OCUR Recorder (CableLabs)','OCUR',1,NULL);",
03226 "INSERT INTO profilegroups VALUES (17,'Ceton Recorder','CETON',1,NULL);",
03227 "INSERT INTO recordfilter VALUES (0,'New episode','program.previouslyshown = 0',0);",
03228 "INSERT INTO recordfilter VALUES (1,'Identifiable episode','program.generic = 0',0);",
03229 "INSERT INTO recordfilter VALUES (2,'First showing','program.first > 0',0);",
03230 "INSERT INTO recordfilter VALUES (3,'Prime time','HOUR(program.starttime) >= 19 AND HOUR(program.starttime) < 23',0);",
03231 "INSERT INTO recordfilter VALUES (4,'Commercial free','channel.commmethod = -2',0);",
03232 "INSERT INTO recordfilter VALUES (5,'High definition','program.hdtv > 0',0);",
03233 "INSERT INTO recordfilter VALUES (6,'This episode','(RECTABLE.programid <> \\'\\' AND program.programid = RECTABLE.programid) OR (RECTABLE.programid = \\'\\' AND program.subtitle = RECTABLE.subtitle AND program.description = RECTABLE.description)',0);",
03234 "INSERT INTO recordfilter VALUES (7,'This series','(RECTABLE.seriesid <> \\'\\' AND program.seriesid = RECTABLE.seriesid)',0);",
03235 "INSERT INTO recordingprofiles VALUES (1,'Default',NULL,NULL,1);",
03236 "INSERT INTO recordingprofiles VALUES (2,'Live TV',NULL,NULL,1);",
03237 "INSERT INTO recordingprofiles VALUES (3,'High Quality',NULL,NULL,1);",
03238 "INSERT INTO recordingprofiles VALUES (4,'Low Quality',NULL,NULL,1);",
03239 "INSERT INTO recordingprofiles VALUES (5,'Default',NULL,NULL,2);",
03240 "INSERT INTO recordingprofiles VALUES (6,'Live TV',NULL,NULL,2);",
03241 "INSERT INTO recordingprofiles VALUES (7,'High Quality',NULL,NULL,2);",
03242 "INSERT INTO recordingprofiles VALUES (8,'Low Quality',NULL,NULL,2);",
03243 "INSERT INTO recordingprofiles VALUES (9,'Default',NULL,NULL,3);",
03244 "INSERT INTO recordingprofiles VALUES (10,'Live TV',NULL,NULL,3);",
03245 "INSERT INTO recordingprofiles VALUES (11,'High Quality',NULL,NULL,3);",
03246 "INSERT INTO recordingprofiles VALUES (12,'Low Quality',NULL,NULL,3);",
03247 "INSERT INTO recordingprofiles VALUES (13,'Default',NULL,NULL,4);",
03248 "INSERT INTO recordingprofiles VALUES (14,'Live TV',NULL,NULL,4);",
03249 "INSERT INTO recordingprofiles VALUES (15,'High Quality',NULL,NULL,4);",
03250 "INSERT INTO recordingprofiles VALUES (16,'Low Quality',NULL,NULL,4);",
03251 "INSERT INTO recordingprofiles VALUES (17,'Default',NULL,NULL,5);",
03252 "INSERT INTO recordingprofiles VALUES (18,'Live TV',NULL,NULL,5);",
03253 "INSERT INTO recordingprofiles VALUES (19,'High Quality',NULL,NULL,5);",
03254 "INSERT INTO recordingprofiles VALUES (20,'Low Quality',NULL,NULL,5);",
03255 "INSERT INTO recordingprofiles VALUES (21,'RTjpeg/MPEG4',NULL,NULL,6);",
03256 "INSERT INTO recordingprofiles VALUES (22,'MPEG2',NULL,NULL,6);",
03257 "INSERT INTO recordingprofiles VALUES (23,'Default',NULL,NULL,8);",
03258 "INSERT INTO recordingprofiles VALUES (24,'Live TV',NULL,NULL,8);",
03259 "INSERT INTO recordingprofiles VALUES (25,'High Quality',NULL,NULL,8);",
03260 "INSERT INTO recordingprofiles VALUES (26,'Low Quality',NULL,NULL,8);",
03261 "INSERT INTO recordingprofiles VALUES (27,'High Quality',NULL,NULL,6);",
03262 "INSERT INTO recordingprofiles VALUES (28,'Medium Quality',NULL,NULL,6);",
03263 "INSERT INTO recordingprofiles VALUES (29,'Low Quality',NULL,NULL,6);",
03264 "INSERT INTO recordingprofiles VALUES (30,'Default',NULL,NULL,10);",
03265 "INSERT INTO recordingprofiles VALUES (31,'Live TV',NULL,NULL,10);",
03266 "INSERT INTO recordingprofiles VALUES (32,'High Quality',NULL,NULL,10);",
03267 "INSERT INTO recordingprofiles VALUES (33,'Low Quality',NULL,NULL,10);",
03268 "INSERT INTO recordingprofiles VALUES (34,'Default',NULL,NULL,11);",
03269 "INSERT INTO recordingprofiles VALUES (35,'Live TV',NULL,NULL,11);",
03270 "INSERT INTO recordingprofiles VALUES (36,'High Quality',NULL,NULL,11);",
03271 "INSERT INTO recordingprofiles VALUES (37,'Low Quality',NULL,NULL,11);",
03272 "INSERT INTO recordingprofiles VALUES (38,'Default',NULL,NULL,12);",
03273 "INSERT INTO recordingprofiles VALUES (39,'Live TV',NULL,NULL,12);",
03274 "INSERT INTO recordingprofiles VALUES (40,'High Quality',NULL,NULL,12);",
03275 "INSERT INTO recordingprofiles VALUES (41,'Low Quality',NULL,NULL,12);",
03276 "INSERT INTO recordingprofiles VALUES (42,'Default',NULL,NULL,7);",
03277 "INSERT INTO recordingprofiles VALUES (43,'Live TV',NULL,NULL,7);",
03278 "INSERT INTO recordingprofiles VALUES (44,'High Quality',NULL,NULL,7);",
03279 "INSERT INTO recordingprofiles VALUES (45,'Low Quality',NULL,NULL,7);",
03280 "INSERT INTO recordingprofiles VALUES (46,'Default',NULL,NULL,9);",
03281 "INSERT INTO recordingprofiles VALUES (47,'Live TV',NULL,NULL,9);",
03282 "INSERT INTO recordingprofiles VALUES (48,'High Quality',NULL,NULL,9);",
03283 "INSERT INTO recordingprofiles VALUES (49,'Low Quality',NULL,NULL,9);",
03284 "INSERT INTO recordingprofiles VALUES (50,'Default',NULL,NULL,13);",
03285 "INSERT INTO recordingprofiles VALUES (51,'Live TV',NULL,NULL,13);",
03286 "INSERT INTO recordingprofiles VALUES (52,'High Quality',NULL,NULL,13);",
03287 "INSERT INTO recordingprofiles VALUES (53,'Low Quality',NULL,NULL,13);",
03288 "INSERT INTO recordingprofiles VALUES (54,'Default',NULL,NULL,14);",
03289 "INSERT INTO recordingprofiles VALUES (55,'Live TV',NULL,NULL,14);",
03290 "INSERT INTO recordingprofiles VALUES (56,'High Quality',NULL,NULL,14);",
03291 "INSERT INTO recordingprofiles VALUES (57,'Low Quality',NULL,NULL,14);",
03292 "INSERT INTO recordingprofiles VALUES (58,'Default',NULL,NULL,15);",
03293 "INSERT INTO recordingprofiles VALUES (59,'Live TV',NULL,NULL,15);",
03294 "INSERT INTO recordingprofiles VALUES (60,'High Quality',NULL,NULL,15);",
03295 "INSERT INTO recordingprofiles VALUES (61,'Low Quality',NULL,NULL,15);",
03296 "INSERT INTO recordingprofiles VALUES (62,'Default',NULL,NULL,16);",
03297 "INSERT INTO recordingprofiles VALUES (63,'Live TV',NULL,NULL,16);",
03298 "INSERT INTO recordingprofiles VALUES (64,'High Quality',NULL,NULL,16);",
03299 "INSERT INTO recordingprofiles VALUES (65,'Low Quality',NULL,NULL,16);",
03300 "INSERT INTO recordingprofiles VALUES (66,'Default',NULL,NULL,17);",
03301 "INSERT INTO recordingprofiles VALUES (67,'Live TV',NULL,NULL,17);",
03302 "INSERT INTO recordingprofiles VALUES (68,'High Quality',NULL,NULL,17);",
03303 "INSERT INTO recordingprofiles VALUES (69,'Low Quality',NULL,NULL,17);",
03304 "INSERT INTO settings VALUES ('mythfilldatabaseLastRunStart','',NULL);",
03305 "INSERT INTO settings VALUES ('mythfilldatabaseLastRunEnd','',NULL);",
03306 "INSERT INTO settings VALUES ('mythfilldatabaseLastRunStatus','',NULL);",
03307 "INSERT INTO settings VALUES ('DataDirectMessage','',NULL);",
03308 "INSERT INTO settings VALUES ('HaveRepeats','0',NULL);",
03309 "INSERT INTO settings VALUES ('DBSchemaVer','1299',NULL);",
03310 "INSERT INTO settings VALUES ('DefaultTranscoder','0',NULL);",
03311 "INSERT INTO videotypes VALUES (1,'txt','',1,0);",
03312 "INSERT INTO videotypes VALUES (2,'log','',1,0);",
03313 "INSERT INTO videotypes VALUES (3,'mpg','Internal',0,0);",
03314 "INSERT INTO videotypes VALUES (4,'avi','',0,1);",
03315 "INSERT INTO videotypes VALUES (5,'vob','Internal',0,0);",
03316 "INSERT INTO videotypes VALUES (6,'mpeg','Internal',0,0);",
03317 "INSERT INTO videotypes VALUES (8,'iso','Internal',0,0);",
03318 "INSERT INTO videotypes VALUES (9,'img','Internal',0,0);",
03319 "INSERT INTO videotypes VALUES (10,'mkv','Internal',0,0);",
03320 "INSERT INTO videotypes VALUES (11,'mp4','Internal',0,0);",
03321 "INSERT INTO videotypes VALUES (12,'m2ts','Internal',0,0);",
03322 "INSERT INTO videotypes VALUES (13,'evo','Internal',0,0);",
03323 "INSERT INTO videotypes VALUES (14,'divx','Internal',0,0);",
03324 "INSERT INTO videotypes VALUES (15,'mov','Internal',0,0);",
03325 "INSERT INTO videotypes VALUES (16,'qt','Internal',0,0);",
03326 "INSERT INTO videotypes VALUES (17,'wmv','Internal',0,0);",
03327 "INSERT INTO videotypes VALUES (18,'3gp','Internal',0,0);",
03328 "INSERT INTO videotypes VALUES (19,'asf','Internal',0,0);",
03329 "INSERT INTO videotypes VALUES (20,'ogg','Internal',0,0);",
03330 "INSERT INTO videotypes VALUES (21,'ogm','Internal',0,0);",
03331 "INSERT INTO videotypes VALUES (22,'flv','Internal',0,0);",
03332 "INSERT INTO videotypes VALUES (23,'ogv','Internal',0,0);",
03333 "INSERT INTO videotypes VALUES (25,'nut','Internal',0,0);",
03334 "INSERT INTO videotypes VALUES (26,'mxf','Internal',0,0);",
03335 "INSERT INTO videotypes VALUES (27,'m4v','Internal',0,0);",
03336 "INSERT INTO videotypes VALUES (28,'rm','Internal',0,0);",
03337 "INSERT INTO videotypes VALUES (29,'ts','Internal',0,0);",
03338 "INSERT INTO videotypes VALUES (30,'swf','Internal',0,0);",
03339 "INSERT INTO videotypes VALUES (31,'f4v','Internal',0,0);",
03340 "INSERT INTO videotypes VALUES (32,'nuv','Internal',0,0);",
03341 NULL
03342 };
03343 
03344     QString dbver = "";
03345     if (!performActualUpdate(updates, "1299", dbver))
03346         return false;
03347     return true;
03348 }
03349 
03350 /* vim: set expandtab tabstop=4 shiftwidth=4: */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends