Ticket #108: db_helper_fn.patch

File db_helper_fn.patch, 60.4 KB (added by fvilas@…, 21 years ago)

db helper functions for libs/libmythtv/dbcheck.cpp

  • .cpp

    old new  
    1818static bool InitializeDatabase(void);
    1919static bool doUpgradeTVDatabaseSchema(void);
    2020
     21/// These are the helper functions for supporting different db backends
     22const QString dbType = "QMYSQL3"; // change this to check the user's settings
     23
     24static QString createTable(const QString &dbType, const QString &tableName);
     25static QString dbInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
     26static QString dbBigInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
     27static QString dbSmallInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
     28static QString dbTinyInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
     29static QString dbMedInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
     30
     31
     32
     33
    2134/** \defgroup db_schema MythTV Database Schema
    2235
    2336\section db_intro Introduction
     
    311324
    312325    MSqlQuery lockquery(MSqlQuery::InitCon());
    313326
    314     lockquery.prepare("CREATE TABLE IF NOT EXISTS "
    315                       "schemalock ( schemalock int(1));");
     327    lockquery.prepare(createTable(dbType, "schemalock")
     328                      + " ( " +
     329                      dbInt(dbType, "schemalock", "1") + " );" );
     330
    316331    if (!lockquery.exec())
    317332    {
    318333        VERBOSE(VB_IMPORTANT, QString("ERROR: Unable to create database "
     
    382397        const QString updates[] = {
    383398"ALTER TABLE program ADD COLUMN category_type VARCHAR(64) NULL;",
    384399"DROP TABLE IF EXISTS transcoding;",
    385 "CREATE TABLE transcoding (chanid INT UNSIGNED, starttime TIMESTAMP, status INT, hostname VARCHAR(255));",
     400createTable(dbType, "transcoding") + " (chanid INT UNSIGNED, starttime TIMESTAMP, status INT, hostname VARCHAR(255));",
    386401""
    387402};
    388403        if (!performActualUpdate(updates, "901", dbver))
     
    404419    if (dbver == "902")
    405420    {
    406421        const QString updates[] = {
    407 "ALTER TABLE record ADD rank INT(10) DEFAULT '0' NOT NULL;",
    408 "ALTER TABLE channel ADD rank INT(10) DEFAULT '0' NOT NULL;",
     422"ALTER TABLE record ADD " + dbInt(dbType, "rank", "10", false, false, "'0'") + ";",
     423"ALTER TABLE channel ADD " + dbInt(dbType, "rank", "10", false, false, "'0'") + ";",
    409424""
    410425};
    411426        if (!performActualUpdate(updates, "903", dbver))
     
    469484    {
    470485        const QString updates[] = {
    471486"DROP TABLE IF EXISTS profilegroups;",
    472 "CREATE TABLE profilegroups ("
    473 "  id int(10) unsigned NOT NULL auto_increment,"
     487createTable(dbType, "profilegroups") + " ("
     488+ dbInt(dbType, "id", "10", false, true, "", true) + ","
    474489"  name varchar(128) default NULL,"
    475490"  cardtype varchar(32) NOT NULL default 'V4L',"
    476 "  is_default int(1) default 0,"
     491+ dbInt(dbType, "is_default", "1", true, false, "0") + ","
    477492"  hostname varchar(255) default NULL,"
    478493"  PRIMARY KEY (id),"
    479494"  UNIQUE (name, hostname)"
     
    485500"INSERT INTO profilegroups SET name = \"Hardware DVB Encoders\", cardtype = 'DVB', is_default = 1;",
    486501"INSERT INTO profilegroups SET name = \"Transcoders\", cardtype = 'TRANSCODE', is_default = 1;",
    487502"DROP TABLE recordingprofiles;",
    488 "CREATE TABLE recordingprofiles ("
    489 "  id int(10) unsigned NOT NULL auto_increment,"
     503createTable(dbType, "recordingprofiles") + " ("
     504+ dbInt(dbType, "id", "10", false, true, "", true) + ","
    490505"  name varchar(128) default NULL,"
    491506"  videocodec varchar(128) default NULL,"
    492507"  audiocodec varchar(128) default NULL,"
    493 "  profilegroup int(10) unsigned NOT NULL DEFAULT 0,"
     508+ dbInt(dbType, "profilegroup", "10", false, true, "0") + ","
    494509"  PRIMARY KEY (id)"
    495510");",
    496511"INSERT INTO recordingprofiles SET name = \"Default\", profilegroup = 1;",
     
    536551    if (dbver == "1006")
    537552    {
    538553        const QString updates[] = {
    539 "CREATE TABLE IF NOT EXISTS recordingprofiles ("
    540 "  id int(10) unsigned NOT NULL auto_increment,"
     554createTable(dbType, "recordingprofiles") + " ("
     555+ dbInt(dbType, "id", "10", false, true, "", true) + ","
    541556"  name varchar(128) default NULL,"
    542557"  videocodec varchar(128) default NULL,"
    543558"  audiocodec varchar(128) default NULL,"
    544 "  profilegroup int(10) unsigned NOT NULL DEFAULT 0,"
     559+ dbInt(dbType, "profilegroup", "10", false, true, "0") + ","
    545560"  PRIMARY KEY (id)"
    546561");",
    547562""
     
    556571"ALTER TABLE capturecard CHANGE use_ts dvb_swfilter INT DEFAULT '0';",
    557572"ALTER TABLE capturecard CHANGE dvb_type dvb_recordts INT DEFAULT '1';",
    558573"DROP TABLE IF EXISTS channel_dvb;",
    559 "CREATE TABLE IF NOT EXISTS dvb_channel ("
    560 "   chanid              SMALLINT NOT NULL,"
    561 "   serviceid           SMALLINT NULL,"
    562 "   networkid           SMALLINT NULL,"
    563 "   providerid          SMALLINT NULL,"
    564 "   transportid         SMALLINT NULL,"
     574createTable(dbType, "dvb_channel") + " ("
     575+ dbSmallInt(dbType, "chanid", "", false) + ","
     576+ dbSmallInt(dbType, "serviceid") + ","
     577+ dbSmallInt(dbType, "networkid") + ","
     578+ dbSmallInt(dbType, "providerid") + ","
     579+ dbSmallInt(dbType, "transportid") + ","
    565580"   frequency           INTEGER NULL,"
    566581"   inversion           CHAR(1) NULL,"
    567582"   symbolrate          INTEGER NULL,"
    568583"   fec                 VARCHAR(10) NULL,"
    569584"   polarity            CHAR(1) NULL,"
    570 "   satid               SMALLINT NULL,"
     585+ dbSmallInt(dbType, "satid") + ","
    571586"   modulation          VARCHAR(10) NULL,"
    572587"   bandwidth           CHAR(1) NULL,"
    573588"   lp_code_rate        VARCHAR(10) NULL,"
     
    576591"   hierarchy           CHAR(1) NULL,"
    577592"   PRIMARY KEY (chanid)"
    578593");",
    579 "CREATE TABLE IF NOT EXISTS dvb_sat ("
    580 "   satid   SMALLINT NOT NULL AUTO_INCREMENT,"
    581 "   lnbid   SMALLINT NOT NULL,"
    582 "   cardnum SMALLINT NOT NULL,"
     594createTable(dbType, "dvb_sat") + " ("
     595+ dbSmallInt(dbType, "satid", "", false, false, "", true) + ","
     596+ dbSmallInt(dbType, "lnbid", "", false) + ","
     597+ dbSmallInt(dbType, "cardnum", "", false) + ","
    583598"   PRIMARY KEY (cardnum,satid,lnbid)"
    584599");",
    585 "CREATE TABLE IF NOT EXISTS dvb_lnb ("
    586 "   lnbid       SMALLINT NOT NULL AUTO_INCREMENT,"
    587 "   disecqid    SMALLINT NULL,"
    588 "   diseqc_port SMALLINT NULL,"
     600createTable(dbType, "dvb_lnb") + " ("
     601+ dbSmallInt(dbType, "lnbid", "", false, false, "", true) + ","
     602+ dbSmallInt(dbType, "disecqid") + ","
     603+ dbSmallInt(dbType, "diseqc_port") + ","
    589604"   lof_switch  INTEGER DEFAULT 11700000 NOT NULL,"
    590605"   lof_hi      INTEGER DEFAULT 10600000 NOT NULL,"
    591606"   lof_lo      INTEGER DEFAULT 9750000 NOT NULL,"
    592607"   PRIMARY KEY (lnbid)"
    593608");",
    594 "CREATE TABLE IF NOT EXISTS dvb_pids ("
    595 "   chanid  SMALLINT NOT NULL,"
    596 "   pid     SMALLINT NOT NULL,"
     609createTable(dbType, "dvb_pids") + " ("
     610+ dbSmallInt(dbType, "chanid", "", false) + ","
     611+ dbSmallInt(dbType, "pid") + ","
    597612"   type    CHAR(1) DEFAULT 'o' NOT NULL,"
    598613"   lang    CHAR(3) DEFAULT '' NOT NULL,"
    599614"   PRIMARY KEY (chanid,pid)"
     
    607622    if (dbver == "1008")
    608623    {
    609624        const QString updates[] = {
    610 "CREATE TABLE IF NOT EXISTS dvb_sat ("
    611 "   satid   SMALLINT NOT NULL AUTO_INCREMENT,"
    612 "   lnbid   SMALLINT NOT NULL,"
    613 "   cardnum SMALLINT NOT NULL,"
     625createTable(dbType, "dvb_sat") + " ("
     626+ dbSmallInt(dbType, "satid", "", false, false, "", true) + ","
     627+ dbSmallInt(dbType, "lnbid", "", false) + ","
     628+ dbSmallInt(dbType, "cardnum", "", false) + ","
    614629"   PRIMARY KEY (cardnum,satid,lnbid)"
    615630");",
    616631""
     
    636651"DROP TABLE IF EXISTS dvb_diseqc;",
    637652"DROP TABLE IF EXISTS dvb_lnb;",
    638653"DROP TABLE IF EXISTS dvb_sat;",
    639 "CREATE TABLE IF NOT EXISTS dvb_sat ("
    640 "   satid SMALLINT NOT NULL AUTO_INCREMENT,"
     654createTable(dbType, "dvb_sat") + " ("
     655+ dbSmallInt(dbType, "satid", "", false, false, "", true) + ","
    641656"   sourceid INT DEFAULT 0,"
    642 "   pos SMALLINT DEFAULT 0,"
     657+ dbSmallInt(dbType, "pos", "", true, false, "0") + ","
    643658"   name VARCHAR(128),"
    644 "   diseqc_type SMALLINT DEFAULT 0,"
    645 "   diseqc_port SMALLINT DEFAULT 0,"
    646 "   lnb_lof_switch SMALLINT DEFAULT 11700000,"
     659+ dbSmallInt(dbType, "diseqc_type", "", true, false, "0") + ","
     660+ dbSmallInt(dbType, "diseqc_port", "", true, false, "0") + ","
     661+ dbSmallInt(dbType, "lnb_lof_switch", "", true, false, "11700000") + ","
    647662"   lnb_lof_hi INTEGER DEFAULT 10600000,"
    648663"   lnb_lof_lo INTEGER DEFAULT 9750000,"
    649664"   PRIMARY KEY(satid)"
     
    657672    if (dbver == "1011")
    658673    {
    659674        const QString updates[] = {
    660 "CREATE TABLE IF NOT EXISTS recordoverride ("
     675createTable(dbType, "recordoverride") + " ("
    661676"   recordid INT UNSIGNED NOT NULL, "
    662677"   type INT UNSIGNED NOT NULL, "
    663678"   chanid INT UNSIGNED NULL, "
     
    688703    if (dbver == "1013")
    689704    {
    690705        const QString updates[] = {
    691 "ALTER TABLE record CHANGE rank recpriority INT(10) DEFAULT '0' NOT NULL;",
    692 "ALTER TABLE channel CHANGE rank recpriority INT(10) DEFAULT '0' NOT NULL;",
     706"ALTER TABLE record CHANGE rank " + dbInt(dbType, "recpriority", "10", false, false, "'0'") + ";",
     707"ALTER TABLE channel CHANGE rank " + dbInt(dbType, "recpriority", "10", false, false, "'0'") + ";",
    693708"UPDATE settings SET value='RecPriorityingActive' WHERE value='RankingActive';",
    694709"UPDATE settings SET value='RecPriorityingOrder' WHERE value='RankingOrder';",
    695710"UPDATE settings SET value='SingleRecordRecPriority' WHERE value='SingleRecordRank';",
     
    720735    if (dbver == "1015")
    721736    {
    722737        const QString updates[] = {
    723 "CREATE TABLE jumppoints ("
     738createTable(dbType, "jumppoints") + " ("
    724739"  destination varchar(128) NOT NULL,"
    725740"  description varchar(255) default NULL,"
    726741"  keylist varchar(32) default NULL,"
    727742"  hostname varchar(255) NOT NULL"
    728743");",
    729 "CREATE TABLE keybindings ("
     744createTable(dbType, "keybindings") + " ("
    730745"  context varchar(32) NOT NULL,"
    731746"  action varchar(32) NOT NULL,"
    732747"  description varchar(255) default NULL,"
     
    796811    if (dbver == "1020")
    797812    {
    798813        const QString updates[] = {
    799 "CREATE TABLE oldprogram ("
     814createTable(dbType, "oldprogram") + " ("
    800815"  oldtitle VARCHAR(128) NOT NULL PRIMARY KEY,"
    801816"  airdate TIMESTAMP NOT NULL"
    802817");",
     
    810825    if (dbver == "1021")
    811826    {
    812827        const QString updates[] = {
    813 "ALTER TABLE recorded ADD COLUMN commflagged int(10) unsigned NOT NULL default '0';",
     828"ALTER TABLE recorded ADD COLUMN " + dbInt(dbType, "commflagged", "10", false, true, "'0'") + ";",
    814829""
    815830};
    816831
     
    889904    if (dbver == "1025")
    890905    {
    891906        const QString updates[] = {
    892 "CREATE TABLE keyword ("
     907createTable(dbType, "keyword") + " ("
    893908"  phrase VARCHAR(128) NOT NULL PRIMARY KEY,"
    894909"  UNIQUE(phrase)"
    895910");",
     
    915930    if (dbver == "1027")
    916931    {
    917932        const QString updates[] = {
    918 "CREATE TABLE IF NOT EXISTS dvb_signal_quality ("
     933createTable(dbType, "dvb_signal_quality") + " ("
    919934"    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,"
    920935"    sampletime TIMESTAMP NOT NULL,"
    921936"    cardid INT UNSIGNED NOT NULL,"
     
    929944"    FOREIGN KEY(cardid) REFERENCES capturecard(id),"
    930945"    INDEX (sampletime,cardid)"
    931946");",
    932 "ALTER TABLE capturecard ADD skipbtaudio TINYINT(1) DEFAULT 0;",
     947"ALTER TABLE capturecard ADD " + dbTinyInt(dbType, "skipbtaudio", "1", true, false, "0") + ";",
    933948""
    934949};
    935950        if (!performActualUpdate(updates, "1028", dbver))
     
    938953
    939954    if (dbver == "1028") {
    940955        const QString updates[] = {
    941 "ALTER TABLE channel ADD COLUMN commfree TINYINT NOT NULL default '0';",
     956"ALTER TABLE channel ADD COLUMN " + dbTinyInt(dbType, "commfree", "", false, false, "'0'") + ";",
    942957"ALTER TABLE record ADD COLUMN recgroup VARCHAR(32) default 'Default';",
    943958"ALTER TABLE record ADD COLUMN dupmethod INT NOT NULL DEFAULT 6;",
    944959"ALTER TABLE record ADD COLUMN dupin INT NOT NULL DEFAULT 15;",
     
    947962"ALTER TABLE record DROP COLUMN recorddups;",
    948963"ALTER TABLE recorded ADD COLUMN recgroup VARCHAR(32) default 'Default';",
    949964"ALTER TABLE recorded ADD COLUMN recordid INT DEFAULT NULL;",
    950 "CREATE TABLE recgrouppassword ("
     965createTable(dbType, "recgrouppassword") + " ("
    951966"  recgroup VARCHAR(32) NOT NULL PRIMARY KEY, "
    952967"  password VARCHAR(10) NOT NULL, "
    953968"  UNIQUE(recgroup)"
     
    972987    if (dbver == "1030")
    973988    {
    974989        const QString updates[] = {
    975 "ALTER TABLE channel ADD COLUMN visible TINYINT(1) NOT NULL default '1';",
     990"ALTER TABLE channel ADD COLUMN " + dbTinyInt(dbType, "visible", "1", false, false, "'1'") + ";",
    976991"UPDATE channel SET visible = 1;",
    977992""
    978993};
     
    982997
    983998    if (dbver == "1031") {
    984999        const QString updates[] = {
    985 "ALTER TABLE capturecard ADD dvb_on_demand TINYINT NOT NULL DEFAULT 0;",
     1000"ALTER TABLE capturecard ADD " + dbTinyInt(dbType, "dvb_on_demand", "", false, false, "0") + ";",
    9861001""
    9871002};
    9881003        if (!performActualUpdate(updates, "1032", dbver))
     
    10131028    if (dbver == "1034")
    10141029    {
    10151030        const QString updates[] = {
    1016 "CREATE TABLE mythlog ("
    1017 "  logid int(10) unsigned PRIMARY KEY NOT NULL auto_increment,"
     1031createTable(dbType, "mythlog") + " ("
     1032+ dbInt(dbType, "logid", "10", false, true, "", true) + "PRIMARY KEY,"
    10181033"  module char(32) NOT NULL,"
    1019 "  priority int(11) NOT NULL,"
     1034+ dbInt(dbType, "priority", "11", false) + ","
    10201035"  acknowledged bool default 0,"
    10211036"  logdate datetime,"
    10221037"  host varchar(128),"
    10231038"  message varchar(255) NOT NULL,"
    10241039"  details text"
    10251040");",
    1026 "CREATE TABLE housekeeping ("
     1041createTable(dbType, "housekeeping") + " ("
    10271042"  tag varchar(64) PRIMARY KEY NOT NULL,"
    10281043"  lastrun datetime"
    10291044");",
     
    10371052    {
    10381053        const QString updates[] = {
    10391054"ALTER TABLE dvb_sat CHANGE pos pos FLOAT;",
    1040 "ALTER TABLE dvb_sat ADD diseqc_pos SMALLINT DEFAULT 0 AFTER diseqc_port;",
     1055"ALTER TABLE dvb_sat ADD " + dbSmallInt(dbType,"diseqc_pos", "", true, false, "0") + " AFTER diseqc_port;",
    10411056""
    10421057};
    10431058        if (!performActualUpdate(updates,"1036", dbver))
     
    10811096"DELETE FROM people;",
    10821097"ALTER TABLE people DROP INDEX name;",
    10831098"ALTER TABLE people ADD UNIQUE name (name(41));",
    1084 "CREATE TABLE programgenres ( "
     1099createTable(dbType, "programgenres") + " ( "
    10851100"    chanid int unsigned NOT NULL, "
    10861101"    starttime timestamp NOT NULL, "
    10871102"    relevance char(1) NOT NULL, "
     
    10971112    if (dbver == "1038")
    10981113    {
    10991114        const QString updates[] = {
    1100 "CREATE TABLE IF NOT EXISTS programgenres ( "
     1115createTable(dbType, "programgenres") + " ( "
    11011116"    chanid int unsigned NOT NULL, "
    11021117"    starttime timestamp NOT NULL, "
    11031118"    relevance char(1) NOT NULL, "
     
    12541269    if (dbver == "1047")
    12551270    {
    12561271        const QString updates[] = {
    1257 "CREATE TABLE networkiconmap ("
     1272createTable(dbType, "networkiconmap") + " ("
    12581273"    id INTEGER NOT NULL AUTO_INCREMENT,"
    12591274"    network VARCHAR(20) NOT NULL UNIQUE,"
    12601275"    url VARCHAR(255) NOT NULL,"
    12611276"    PRIMARY KEY(id)"
    12621277");",
    1263 "CREATE TABLE callsignnetworkmap ("
     1278createTable(dbType, "callsignnetworkmap") + " ("
    12641279"    id INTEGER NOT NULL AUTO_INCREMENT,"
    12651280"    callsign VARCHAR(20) NOT NULL UNIQUE,"
    12661281"    network VARCHAR(20) NOT NULL,"
     
    13031318"ALTER TABLE recorded CHANGE starttime starttime DATETIME NOT NULL;",
    13041319"ALTER TABLE recorded CHANGE endtime endtime DATETIME NOT NULL;",
    13051320"ALTER TABLE recorded ADD COLUMN lastmodified TIMESTAMP NOT NULL;",
    1306 "ALTER TABLE recorded ADD COLUMN filesize BIGINT(20) DEFAULT 0 NOT NULL;",
     1321"ALTER TABLE recorded ADD COLUMN " +
     1322dbBigInt(dbType, "filesize", "20", false, false, "0") + ";",
    13071323"ALTER TABLE credits CHANGE starttime starttime DATETIME NOT NULL;",
    13081324"ALTER TABLE oldprogram CHANGE airdate airdate DATETIME NOT NULL;",
    13091325"ALTER TABLE oldrecorded CHANGE starttime starttime DATETIME NOT NULL;",
     
    13371353    {
    13381354        const QString updates[] = {
    13391355"ALTER TABLE recorded ADD COLUMN stars FLOAT NOT NULL DEFAULT 0;",
    1340 "ALTER TABLE recorded ADD COLUMN previouslyshown TINYINT(1) DEFAULT 0;",
     1356"ALTER TABLE recorded ADD COLUMN " + dbTinyInt(dbType, "previouslyshown", "1", true, false, "0") + ";",
    13411357"ALTER TABLE recorded ADD COLUMN originalairdate DATE;",
    13421358"INSERT INTO settings VALUES ('HaveRepeats', '0', NULL);",
    13431359""
     
    13801396    if (dbver == "1056")
    13811397    {
    13821398        const QString updates[] = {
    1383 "CREATE TABLE jobqueue ("
     1399createTable(dbType, "jobqueue") + " ("
    13841400"    id INTEGER NOT NULL AUTO_INCREMENT,"
    13851401"    chanid INTEGER(10) NOT NULL,"
    13861402"    starttime DATETIME NOT NULL,"
     
    13961412"    PRIMARY KEY(id),"
    13971413"    UNIQUE(chanid, starttime, type, inserttime)"
    13981414");",
    1399 "ALTER TABLE record ADD COLUMN autotranscode TINYINT(1) NOT NULL DEFAULT 0;",
    1400 "ALTER TABLE record ADD COLUMN autocommflag TINYINT(1) NOT NULL DEFAULT 0;",
    1401 "ALTER TABLE record ADD COLUMN autouserjob1 TINYINT(1) NOT NULL DEFAULT 0;",
    1402 "ALTER TABLE record ADD COLUMN autouserjob2 TINYINT(1) NOT NULL DEFAULT 0;",
    1403 "ALTER TABLE record ADD COLUMN autouserjob3 TINYINT(1) NOT NULL DEFAULT 0;",
    1404 "ALTER TABLE record ADD COLUMN autouserjob4 TINYINT(1) NOT NULL DEFAULT 0;",
     1415"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autotranscode", "1", false, false, "0") + ";",
     1416"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autocommflag", "1", false, false, "0") + ";",
     1417"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob1", "1", false, false, "0") + ";",
     1418"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob2", "1", false, false, "0") + ";",
     1419"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob3", "1", false, false, "0") + ";",
     1420"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob4", "1", false, false, "0") + ";",
    14051421""
    14061422};
    14071423        if (!performActualUpdate(updates, "1057", dbver))
     
    14371453    if (dbver == "1059")
    14381454    {
    14391455        const QString updates[] = {
    1440 "ALTER TABLE recorded ADD COLUMN preserve TINYINT(1) NOT NULL DEFAULT 0;",
     1456"ALTER TABLE recorded ADD COLUMN " + dbTinyInt(dbType, "preserve", "1", false, false, "0") + ";",
    14411457""
    14421458};
    14431459        if (!performActualUpdate(updates, "1060", dbver))
     
    14471463    if (dbver == "1060")
    14481464    {
    14491465        const QString updates[] = {
    1450 
    1451 "ALTER TABLE record ADD COLUMN record.findday TINYINT NOT NULL DEFAULT 0;",
     1466"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "record.findday", "", false, false, "0") + ";",
    14521467"ALTER TABLE record ADD COLUMN record.findtime TIME NOT NULL DEFAULT '00:00:00';",
    14531468"ALTER TABLE record ADD COLUMN record.findid INT NOT NULL DEFAULT 0;",
    14541469"ALTER TABLE recorded ADD COLUMN recorded.findid INT NOT NULL DEFAULT 0;",
     
    14621477    if (dbver == "1061")
    14631478    {
    14641479        const QString updates[] = {
    1465 "ALTER TABLE record ADD COLUMN inactive TINYINT(1) NOT NULL DEFAULT 0;",
     1480"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "inactive", "1", false, false, "0") + ";",
    14661481""
    14671482};
    14681483        if (!performActualUpdate(updates, "1062", dbver))
     
    14721487    if (dbver == "1062")
    14731488    {
    14741489        const QString updates[] = {
    1475 "ALTER TABLE cardinput ADD COLUMN freetoaironly TINYINT(1) DEFAULT 1;",
    1476 "ALTER TABLE channel ADD COLUMN useonairguide TINYINT(1) DEFAULT 0;",
    1477 "ALTER TABLE capturecard ADD COLUMN dvb_diseqc_type SMALLINT(6);",
    1478 "ALTER TABLE cardinput ADD COLUMN diseqc_port SMALLINT(6);",
     1490"ALTER TABLE cardinput ADD COLUMN " + dbTinyInt(dbType, "freetoaironly", "1", true, false, "1") + ";",
     1491"ALTER TABLE channel ADD COLUMN " + dbTinyInt(dbType, "useonairguide", "1", true, false, "0") + ";",
     1492"ALTER TABLE capturecard ADD COLUMN " + dbSmallInt(dbType, "dvb_diseqc_type", "6") + ";",
     1493"ALTER TABLE cardinput ADD COLUMN " + dbSmallInt(dbType, "diseqc_port", "6") + ";",
    14791494"ALTER TABLE cardinput ADD COLUMN diseqc_pos FLOAT;",
    1480 "ALTER TABLE cardinput ADD COLUMN lnb_lof_switch INT(11) DEFAULT 11700000;",
    1481 "ALTER TABLE cardinput ADD COLUMN lnb_lof_hi INT(11) DEFAULT 10600000;",
    1482 "ALTER TABLE cardinput ADD COLUMN lnb_lof_lo INT(11) DEFAULT 9750000;",
    1483 "ALTER TABLE channel ADD COLUMN mplexid SMALLINT(6);",
    1484 "ALTER TABLE channel ADD COLUMN serviceid SMALLINT(6);",
    1485 "ALTER TABLE channel ADD COLUMN atscsrcid INT(11) DEFAULT NULL;",
    1486 "CREATE TABLE dtv_multiplex ("
    1487 "  mplexid smallint(6) NOT NULL auto_increment, "
    1488 "  sourceid smallint(6) default NULL,"
    1489 "  transportid int(11) default NULL,"
    1490 "  networkid int(11) default NULL,"
    1491 "  frequency int(11) default NULL,"
     1495"ALTER TABLE cardinput ADD COLUMN " + dbInt(dbType, "lnb_lof_switch", "11", true, false, "11700000") + ";",
     1496"ALTER TABLE cardinput ADD COLUMN " + dbInt(dbType, "lnb_lof_hi", "11", true, false, "10600000") + ";",
     1497"ALTER TABLE cardinput ADD COLUMN " + dbInt(dbType, "lnb_lof_lo", "11", true, false, "9750000") + ";",
     1498"ALTER TABLE channel ADD COLUMN " + dbSmallInt(dbType, "mplexid", "6") + ";",
     1499"ALTER TABLE channel ADD COLUMN " + dbSmallInt(dbType, "serviceid", "6") + ";",
     1500"ALTER TABLE channel ADD COLUMN " + dbInt(dbType, "atscsrcid", "11", true, false, "NULL")+ ";",
     1501createTable(dbType, "dtv_multiplex") + " ("
     1502+ dbSmallInt(dbType, "mplexid", "6", false, false, "", true) + ", "
     1503+ dbSmallInt(dbType, "sourceid", "6", true, false, "NULL") + ","
     1504+ dbInt(dbType, "transportid", "11", true, false, "NULL") + ","
     1505+ dbInt(dbType, "networkid", "11", true, false, "NULL") + ","
     1506+ dbInt(dbType, "frequency", "11", true, false, "NULL") + ","
    14921507"  inversion char(1) default 'a',"
    1493 "  symbolrate int(11) default NULL,"
     1508+ dbInt(dbType, "symbolrate", "11", true, false, "NULL") + ","
    14941509"  fec varchar(10) default 'auto',"
    14951510"  polarity char(1) default NULL,"
    14961511"  modulation varchar(10) default 'auto',"
     
    14981513"  lp_code_rate varchar(10) default 'auto',"
    14991514"  transmission_mode char(1) default 'a',"
    15001515"  guard_interval varchar(10) default 'auto',"
    1501 "  visible smallint(1) NOT NULL default '0',"
     1516+ dbSmallInt(dbType, "visible", "1", false, false, "'0'") + ","
    15021517"  constellation varchar(10) default 'auto',"
    15031518"  hierarchy varchar(10) default 'auto',"
    15041519"  hp_code_rate varchar(10) default 'auto',"
    15051520"  sistandard varchar(10) default 'dvb',"
    1506 "  serviceversion smallint(6) default 33,"
     1521+ dbSmallInt(dbType, "serviceversion", "6", true, false, "33") + ","
    15071522"  updatetimestamp timestamp(14) NOT NULL,"
    15081523"  PRIMARY KEY  (mplexid)"
    15091524") TYPE=MyISAM;",
    15101525// These should be included in an update after the 0.17 release.
    1511 // "DROP TABLE IF EXISTS dvb_channel;",
     1526// "DROP TABLE const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = falseIF EXISTS dvb_channel;",
    15121527// "DROP TABLE IF EXISTS dvb_pids;",
    15131528// "DROP TABLE IF EXISTS dvb_sat;",
    1514 "CREATE TABLE dtv_privatetypes ("
     1529createTable(dbType, "dtv_privatetypes") + " ("
    15151530"  sitype varchar(4) NOT NULL, "
    1516 "  networkid int(11) NOT NULL, "
     1531+ dbInt(dbType, "networkid", "11", false) + ", "
    15171532"  private_type varchar(20) NOT NULL, "
    15181533"  private_value varchar(100) NOT NULL "
    15191534");",
     
    15721587    if (dbver == "1063")
    15731588    {
    15741589        const QString updates[] = {
    1575 "CREATE TABLE IF NOT EXISTS recordmatch (recordid int unsigned, "
     1590createTable(dbType, "recordmatch") + " (recordid int unsigned, "
    15761591"chanid int unsigned, starttime datetime, INDEX (recordid));",
    15771592""
    15781593};
     
    15831598    if (dbver == "1064")
    15841599    {
    15851600        const QString updates[] = {
    1586 "ALTER TABLE `program` CHANGE `stereo` `stereo` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
    1587 "ALTER TABLE `program` CHANGE `subtitled` `subtitled` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
    1588 "ALTER TABLE `program` CHANGE `hdtv` `hdtv` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
    1589 "ALTER TABLE `program` CHANGE `closecaptioned` `closecaptioned` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
    1590 "ALTER TABLE `program` CHANGE `partnumber` `partnumber` INT( 11 ) DEFAULT '0' NOT NULL;",
    1591 "ALTER TABLE `program` CHANGE `parttotal` `parttotal` INT( 11 ) DEFAULT '0' NOT NULL;",
     1601"ALTER TABLE `program` CHANGE `stereo` " + dbTinyInt(dbType, "`stereo`", "1", false, false, "'0'") + ";",
     1602"ALTER TABLE `program` CHANGE `subtitled` " + dbTinyInt(dbType, "`subtitled`", "1", false, false, "'0'") + ";",
     1603"ALTER TABLE `program` CHANGE `hdtv` " + dbTinyInt(dbType, "`hdtv`", "1", false, false, "'0'") + ";",
     1604"ALTER TABLE `program` CHANGE `closecaptioned` " + dbTinyInt(dbType, "`closecaptioned`", "1", false, false, "'0'") + ";",
     1605"ALTER TABLE `program` CHANGE `partnumber` " + dbInt(dbType, "`partnumber`", "11", false, false, "'0'") + ";",
     1606"ALTER TABLE `program` CHANGE `parttotal` " + dbInt(dbType, "`parttotal`", "11", false, false, "'0'") + ";",
    15921607"ALTER TABLE `program` CHANGE `programid` `programid` VARCHAR( 20 ) NOT NULL;",
    15931608"ALTER TABLE `oldrecorded` CHANGE `programid` `programid` VARCHAR( 20 ) NOT NULL;",
    15941609"ALTER TABLE `recorded` CHANGE `programid` `programid` VARCHAR( 20 ) NOT NULL;",
     
    16431658    if (dbver == "1068")
    16441659    {
    16451660        const QString updates[] = {
    1646 "ALTER TABLE recorded ADD COLUMN deletepending TINYINT(1) NOT NULL DEFAULT 0;",
     1661"ALTER TABLE recorded ADD COLUMN " + dbTinyInt(dbType, "deletepending", "1", false, false, "0") + ";",
    16471662""
    16481663};
    16491664        if (!performActualUpdate(updates, "1069", dbver))
     
    17211736    if (dbver == "1075")
    17221737    {
    17231738        const QString updates[] = {
    1724 "CREATE TABLE IF NOT EXISTS recordedprogram ("
    1725 "  chanid int(10) unsigned NOT NULL default '0',"
     1739createTable(dbType, "recordedprogram") + " ("
     1740+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    17261741"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    17271742"  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
    17281743"  title varchar(128) NOT NULL default '',"
     
    17321747"  category_type varchar(64) NOT NULL default '',"
    17331748"  airdate year(4) NOT NULL default '0000',"
    17341749"  stars float unsigned NOT NULL default '0',"
    1735 "  previouslyshown tinyint(4) NOT NULL default '0',"
     1750+ dbTinyInt(dbType, "previouslyshown", "4", false, false, "'0'") + ","
    17361751"  title_pronounce varchar(128) NOT NULL default '',"
    1737 "  stereo tinyint(1) NOT NULL default '0',"
    1738 "  subtitled tinyint(1) NOT NULL default '0',"
    1739 "  hdtv tinyint(1) NOT NULL default '0',"
    1740 "  closecaptioned tinyint(1) NOT NULL default '0',"
    1741 "  partnumber int(11) NOT NULL default '0',"
    1742 "  parttotal int(11) NOT NULL default '0',"
     1752+ dbTinyInt(dbType, "stereo", "1", false, false, "'0'") + ","
     1753+ dbTinyInt(dbType, "subtitled", "1", false, false, "'0'") + ","
     1754+ dbTinyInt(dbType, "hdtv", "1", false, false, "'0'") + ","
     1755+ dbTinyInt(dbType, "closecaptioned", "1", false, false, "'0'") + ","
     1756+ dbInt(dbType, "partnumber", "11", false, false, "'0'") + ","
     1757+ dbInt(dbType, "parttotal", "11", false, false, "'0'") + ","
    17431758"  seriesid varchar(12) NOT NULL default '',"
    17441759"  originalairdate date default NULL,"
    17451760"  showtype varchar(30) NOT NULL default '',"
    17461761"  colorcode varchar(20) NOT NULL default '',"
    17471762"  syndicatedepisodenumber varchar(20) NOT NULL default '',"
    17481763"  programid varchar(20) NOT NULL default '',"
    1749 "  manualid int(10) unsigned NOT NULL default '0',"
     1764+ dbInt(dbType, "manualid", "10", false, true, "'0'") + ","
    17501765"  PRIMARY KEY  (chanid,starttime,manualid),"
    17511766"  KEY endtime (endtime),"
    17521767"  KEY title (title),"
     
    17551770"  KEY programid (programid),"
    17561771"  KEY id_start_end (chanid,starttime,endtime)"
    17571772");",
    1758 "CREATE TABLE IF NOT EXISTS recordedcredits ("
    1759 "  person mediumint(8) unsigned NOT NULL default '0',"
    1760 "  chanid int(10) unsigned NOT NULL default '0',"
     1773createTable(dbType, "recordedcredits") + " (" +
     1774dbMedInt(dbType, "person", "8", false, true, "'0'") + ","
     1775+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    17611776"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    17621777"  role set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL default '',"
    17631778"  UNIQUE KEY chanid (chanid,starttime,person,role),"
    17641779"  KEY person (person,role)"
    17651780");",
    1766 "CREATE TABLE IF NOT EXISTS recordedrating ("
    1767 "  chanid int(10) unsigned NOT NULL default '0',"
     1781createTable(dbType, "recordedrating") + " ("
     1782+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    17681783"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    17691784"  system char(8) NOT NULL default '',"
    17701785"  rating char(8) NOT NULL default '',"
     
    18351850    if (dbver == "1081")
    18361851    {
    18371852        const QString updates[] = {
    1838 "CREATE TABLE IF NOT EXISTS oldfind ("
     1853createTable(dbType, "oldfind") + " ("
    18391854"recordid INT NOT NULL DEFAULT 0,"
    18401855"findid INT NOT NULL DEFAULT 0,"
    18411856"PRIMARY KEY (recordid, findid)"
     
    18501865    if (dbver == "1082")
    18511866    {
    18521867        const QString updates[] = {
    1853 "CREATE TABLE IF NOT EXISTS videobookmarks ("
     1868createTable(dbType, "videobookmarks") + " ("
    18541869"  filename varchar(255) NOT NULL,"
    18551870"  bookmark varchar(128) default NULL,"
    18561871"  PRIMARY KEY (filename)"
     
    19111926    {
    19121927        const QString updates[] = {
    19131928"DROP TABLE IF EXISTS pidcache;",
    1914 "CREATE TABLE IF NOT EXISTS pidcache ("
    1915 "  chanid smallint(6) NOT NULL default '0',"
    1916 "  pid int(11) NOT NULL default '-1',"
    1917 "  tableid int(11) NOT NULL default '-1',"
     1929createTable(dbType, "pidcache") + " ("
     1930+ dbSmallInt(dbType, "chanid", "6", false, false, "'0'") + ","
     1931+ dbInt(dbType, "pid", "11", false, false, "'-1'") + ","
     1932+ dbInt(dbType, "tableid", "11", false, false, "'-1'") + ","
    19181933"  INDEX(chanid)"
    19191934");",
    19201935""
     
    19261941    if (dbver == "1086")
    19271942    {
    19281943        const QString updates[] = {
    1929             "CREATE TABLE IF NOT EXISTS xvmc_buffer_settings ( "
    1930             "  id int(11) NOT NULL auto_increment, "
     1944            createTable(dbType, "xvmc_buffer_settings") + " ( "
     1945            + dbInt(dbType, "id", "11", false, false, "", true) + ", "
    19311946            "  description varchar(255) NOT NULL default '',"
    1932             "  osd_num int(11) NOT NULL default '0',"
    1933             "  osd_res_num int(11) NOT NULL default '0',"
    1934             "  min_surf int(11) NOT NULL default '0',"
    1935             "  max_surf int(11) NOT NULL default '0',"
    1936             "  decode_num int(11) NOT NULL default '0',"
    1937             "  agressive int(11) NOT NULL default '1',"
     1947            + dbInt(dbType, "osd_num", "11", false, false, "'0'") + ","
     1948            + dbInt(dbType, "osd_res_num", "11", false, false, "'0'") + ","
     1949            + dbInt(dbType, "min_surf", "11", false, false, "'0'") + ","
     1950            + dbInt(dbType, "max_surf", "11", false, false, "'0'") + ","
     1951            + dbInt(dbType, "decode_num", "11", false, false, "'0'") + ","
     1952            + dbInt(dbType, "agressive", "11", false, false, "'1'") + ","
    19381953            "  PRIMARY KEY  (id) );",
    19391954            "INSERT INTO xvmc_buffer_settings VALUES (1,'Default / nVidia',2,2,8,16,8,1);",
    19401955            "INSERT INTO xvmc_buffer_settings VALUES (2,'VLD (More decode buffers)',2,2,8,16,16,1);",
    19411956            ""
    1942         }; 
    1943        
    1944         if (!performActualUpdate(updates, "1087", dbver))
     1957        };
     1958
     1959         if (!performActualUpdate(updates, "1087", dbver))
    19451960            return false;
    1946     }
    1947    
     1961     }
     1962
    19481963    return true;
    19491964}
    19501965
     
    19691984    VERBOSE(VB_ALL, "Inserting MythTV initial database information.");
    19701985
    19711986    const QString updates[] = {
    1972 "CREATE TABLE IF NOT EXISTS callsignnetworkmap ("
    1973 "  id int(11) NOT NULL auto_increment,"
     1987createTable(dbType, "callsignnetworkmap") + " ("
     1988+ dbInt(dbType, "id", "11", false, false, "", true) + ","
    19741989"  callsign varchar(20) NOT NULL default '',"
    19751990"  network varchar(20) NOT NULL default '',"
    19761991"  PRIMARY KEY  (id),"
    19771992"  UNIQUE KEY callsign (callsign)"
    19781993");",
    1979 "CREATE TABLE IF NOT EXISTS capturecard ("
    1980 "  cardid int(10) unsigned NOT NULL auto_increment,"
     1994createTable(dbType, "capturecard") + " ("
     1995+ dbInt(dbType, "cardid", "10", false, true, "", true) + ","
    19811996"  videodevice varchar(128) default NULL,"
    19821997"  audiodevice varchar(128) default NULL,"
    19831998"  vbidevice varchar(128) default NULL,"
    19841999"  cardtype varchar(32) default 'V4L',"
    19852000"  defaultinput varchar(32) default 'Television',"
    1986 "  audioratelimit int(11) default NULL,"
     2001+ dbInt(dbType, "audioratelimit", "11", true, false, "NULL") + ","
    19872002"  hostname varchar(255) default NULL,"
    1988 "  dvb_swfilter int(11) default '0',"
    1989 "  dvb_recordts int(11) default '1',"
    1990 "  dvb_sat_type int(11) NOT NULL default '0',"
    1991 "  dvb_wait_for_seqstart int(11) NOT NULL default '1',"
    1992 "  dvb_dmx_buf_size int(11) NOT NULL default '8192',"
    1993 "  dvb_pkt_buf_size int(11) NOT NULL default '8192',"
    1994 "  skipbtaudio tinyint(1) default '0',"
    1995 "  dvb_on_demand tinyint(4) NOT NULL default '0',"
     2003+ dbInt(dbType, "dvb_swfilter", "11", true, false, "'0'") + ","
     2004+ dbInt(dbType, "dvb_recordts", "11", true, false, "'1'") + ","
     2005+ dbInt(dbType, "dvb_sat_type", "11", false, false, "'0'") + ","
     2006+ dbInt(dbType, "dvb_wait_for_seqstart", "11", false, false, "'1'") + ","
     2007+ dbInt(dbType, "dvb_dmx_buf_size", "11", false, false, "'8192'") + ","
     2008+ dbInt(dbType, "dvb_pkt_buf_size", "11", false, false, "'8192'") + ","
     2009+ dbTinyInt(dbType, "skipbtaudio", "1", true, false, "'0'") + ","
     2010+ dbTinyInt(dbType, "dvb_on_demand", "4", false, false, "'0'") + ","
    19962011"  PRIMARY KEY  (cardid)"
    19972012");",
    1998 "CREATE TABLE IF NOT EXISTS cardinput ("
    1999 "  cardinputid int(10) unsigned NOT NULL auto_increment,"
    2000 "  cardid int(10) unsigned NOT NULL default '0',"
    2001 "  sourceid int(10) unsigned NOT NULL default '0',"
     2013createTable(dbType, "cardinput") + " ("
     2014+ dbInt(dbType, "cardinputid", "10", false, true, "", true) + ","
     2015+ dbInt(dbType, "cardid", "10", false, true, "'0'") + ","
     2016+ dbInt(dbType, "sourceid", "10", false, true, "'0'") + ","
    20022017"  inputname varchar(32) NOT NULL default '',"
    20032018"  externalcommand varchar(128) default NULL,"
    2004 "  preference int(11) NOT NULL default '0',"
     2019+ dbInt(dbType, "preference", "11", false, false, "'0'") + ","
    20052020"  shareable char(1) default 'N',"
    20062021"  tunechan varchar(5) NOT NULL default '',"
    20072022"  startchan varchar(5) NOT NULL default '',"
    20082023"  PRIMARY KEY  (cardinputid)"
    20092024");",
    2010 "CREATE TABLE IF NOT EXISTS channel ("
    2011 "  chanid int(10) unsigned NOT NULL default '0',"
     2025createTable(dbType, "channel") + " ("
     2026+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    20122027"  channum varchar(5) NOT NULL default '',"
    20132028"  freqid varchar(10) default NULL,"
    2014 "  sourceid int(10) unsigned default NULL,"
     2029+ dbInt(dbType, "sourceid", "10", true, false, "NULL") + ","
    20152030"  callsign varchar(20) NOT NULL default '',"
    20162031"  name varchar(64) NOT NULL default '',"
    20172032"  icon varchar(255) NOT NULL default 'none',"
    2018 "  finetune int(11) default NULL,"
     2033+ dbInt(dbType, "finetune", "11", true, false, "NULL") + ","
    20192034"  videofilters varchar(255) NOT NULL default '',"
    20202035"  xmltvid varchar(64) NOT NULL default '',"
    2021 "  recpriority int(10) NOT NULL default '0',"
    2022 "  contrast int(11) default '32768',"
    2023 "  brightness int(11) default '32768',"
    2024 "  colour int(11) default '32768',"
    2025 "  hue int(11) default '32768',"
     2036+ dbInt(dbType, "recpriority", "10", false, false, "'0'") + ","
     2037+ dbInt(dbType, "contrast", "11", true, false, "'32768'") + ","
     2038+ dbInt(dbType, "brightness", "11", true, false, "'32768'") + ","
     2039+ dbInt(dbType, "colour", "11", true, false, "'32768'") + ","
     2040+ dbInt(dbType, "hue", "11", true, false, "'32768'") + ","
    20262041"  tvformat varchar(10) NOT NULL default 'Default',"
    2027 "  commfree tinyint(4) NOT NULL default '0',"
    2028 "  visible tinyint(1) NOT NULL default '1',"
     2042+ dbTinyInt(dbType, "commfree", "4", false, false, "'0'") + ","
     2043+ dbTinyInt(dbType, "visible", "1", false, false, "'1'") + ","
    20292044"  outputfilters varchar(255) NOT NULL default '',"
    20302045"  PRIMARY KEY  (chanid),"
    20312046"  KEY channel_src (channum,sourceid)"
    20322047");",
    2033 "CREATE TABLE IF NOT EXISTS codecparams ("
    2034 "  profile int(10) unsigned NOT NULL default '0',"
     2048createTable(dbType, "codecparams") + " ("
     2049+ dbInt(dbType, "profile", "10", false, true, "'0'") + ","
    20352050"  name varchar(128) NOT NULL default '',"
    20362051"  value varchar(128) default NULL,"
    20372052"  PRIMARY KEY  (profile,name)"
    20382053");",
    2039 "CREATE TABLE IF NOT EXISTS conflictresolutionany ("
     2054createTable(dbType, "conflictresolutionany") + " ("
    20402055"  prefertitle varchar(128) NOT NULL default '',"
    20412056"  disliketitle varchar(128) NOT NULL default '',"
    20422057"  KEY prefertitle (prefertitle),"
    20432058"  KEY disliketitle (disliketitle)"
    20442059");",
    2045 "CREATE TABLE IF NOT EXISTS conflictresolutionoverride ("
    2046 "  chanid int(10) unsigned NOT NULL default '0',"
     2060createTable(dbType, "conflictresolutionoverride") + " ("
     2061+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    20472062"  starttime timestamp(14) NOT NULL,"
    20482063"  endtime timestamp(14) NOT NULL default '00000000000000',"
    20492064"  KEY chanid (chanid,starttime),"
    20502065"  KEY endtime (endtime)"
    20512066");",
    2052 "CREATE TABLE IF NOT EXISTS conflictresolutionsingle ("
    2053 "  preferchanid int(10) unsigned NOT NULL default '0',"
     2067createTable(dbType, "conflictresolutionsingle") + " ("
     2068+ dbInt(dbType, "preferchanid", "10", false, true, "'0'") + ","
    20542069"  preferstarttime timestamp(14) NOT NULL,"
    20552070"  preferendtime timestamp(14) NOT NULL default '00000000000000',"
    2056 "  dislikechanid int(10) unsigned NOT NULL default '0',"
     2071+ dbInt(dbType, "dislikechanid", "10", false, true, "'0'") + ","
    20572072"  dislikestarttime timestamp(14) NOT NULL default '00000000000000',"
    20582073"  dislikeendtime timestamp(14) NOT NULL default '00000000000000',"
    20592074"  KEY preferchanid (preferchanid,preferstarttime),"
    20602075"  KEY preferendtime (preferendtime)"
    20612076");",
    2062 "CREATE TABLE IF NOT EXISTS credits ("
    2063 "  person mediumint(8) unsigned NOT NULL default '0',"
    2064 "  chanid int(10) unsigned NOT NULL default '0',"
     2077createTable(dbType, "credits") + " (" +
     2078dbMedInt(dbType, "person", "8", false, true, "'0'") + ","
     2079+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    20652080"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    20662081"  role set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL default '',"
    20672082"  UNIQUE KEY chanid (chanid,starttime,person,role),"
    20682083"  KEY person (person,role)"
    20692084");",
    2070 "CREATE TABLE IF NOT EXISTS dvb_channel ("
    2071 "  chanid smallint(6) NOT NULL default '0',"
    2072 "  serviceid smallint(6) default NULL,"
    2073 "  networkid smallint(6) default NULL,"
    2074 "  providerid smallint(6) default NULL,"
    2075 "  transportid smallint(6) default NULL,"
    2076 "  frequency int(11) default NULL,"
     2085createTable(dbType, "dvb_channel") + " ("
     2086+ dbSmallInt(dbType, "chanid", "6", false, false, "'0'") + ","
     2087+ dbSmallInt(dbType, "serviceid", "6", true, false, "NULL") + ","
     2088+ dbSmallInt(dbType, "networkid", "6", true, false, "NULL") + ","
     2089+ dbSmallInt(dbType, "providerid", "6", true, false, "NULL") + ","
     2090+ dbSmallInt(dbType, "transportid", "6", true, false, "NULL") + ","
     2091+ dbInt(dbType, "frequency", "11", true, false, "NULL") + ","
    20772092"  inversion char(1) default NULL,"
    2078 "  symbolrate int(11) default NULL,"
     2093+ dbInt(dbType, "symbolrate", "11", true, false, "NULL") + ","
    20792094"  fec varchar(10) default NULL,"
    20802095"  polarity char(1) default NULL,"
    2081 "  satid smallint(6) default NULL,"
     2096+ dbSmallInt(dbType, "satid", "6", true, false, "NULL") + ","
    20822097"  modulation varchar(10) default NULL,"
    20832098"  bandwidth char(1) default NULL,"
    20842099"  lp_code_rate varchar(10) default NULL,"
     
    20882103"  pmtcache blob,"
    20892104"  PRIMARY KEY  (chanid)"
    20902105");",
    2091 "CREATE TABLE IF NOT EXISTS dvb_pids ("
    2092 "  chanid smallint(6) NOT NULL default '0',"
    2093 "  pid smallint(6) NOT NULL default '0',"
     2106createTable(dbType, "dvb_pids") + " ("
     2107+ dbSmallInt(dbType, "chanid", "6", false, false, "'0'") + ","
     2108+ dbSmallInt(dbType, "pid", "6", false, false, "'0'") + ","
    20942109"  type char(1) NOT NULL default 'o',"
    20952110"  lang char(3) NOT NULL default '',"
    20962111"  PRIMARY KEY  (chanid,pid)"
    20972112");",
    2098 "CREATE TABLE IF NOT EXISTS dvb_sat ("
    2099 "  satid smallint(6) NOT NULL auto_increment,"
    2100 "  cardid int(11) default NULL,"
     2113createTable(dbType, "dvb_sat") + " ("
     2114+ dbSmallInt(dbType, "satid", "6", false, false, "", true) + ","
     2115+ dbInt(dbType, "cardid", "11", true, false, "NULL") + ","
    21012116"  pos float default NULL,"
    21022117"  name varchar(128) default NULL,"
    2103 "  diseqc_type smallint(6) default '0',"
    2104 "  diseqc_port smallint(6) default '0',"
    2105 "  diseqc_pos smallint(6) default '0',"
    2106 "  lnb_lof_switch int(11) default '11700000',"
    2107 "  lnb_lof_hi int(11) default '10600000',"
    2108 "  lnb_lof_lo int(11) default '9750000',"
     2118+ dbSmallInt(dbType, "diseqc_type", "6", true, false, "'0'") + ","
     2119+ dbSmallInt(dbType, "diseqc_port", "6", true, false, "'0'") + ","
     2120+ dbSmallInt(dbType, "diseqc_pos", "6", true, false, "'0'") + ","
     2121+ dbInt(dbType, "lnb_lof_switch", "11", true, false, "'11700000'") + ","
     2122+ dbInt(dbType, "lnb_lof_hi", "11", true, false, "'10600000'") + ","
     2123+ dbInt(dbType, "lnb_lof_lo", "11", true, false, "'9750000'") + ","
    21092124"  PRIMARY KEY  (satid)"
    21102125");",
    2111 "CREATE TABLE IF NOT EXISTS dvb_signal_quality ("
    2112 "  id int(10) unsigned NOT NULL auto_increment,"
     2126createTable(dbType, "dvb_signal_quality") + " ("
     2127+ dbInt(dbType, "id", "10", false, true, "", true) + ","
    21132128"  sampletime timestamp(14) NOT NULL,"
    2114 "  cardid int(10) unsigned NOT NULL default '0',"
    2115 "  fe_snr int(10) unsigned NOT NULL default '0',"
    2116 "  fe_ss int(10) unsigned NOT NULL default '0',"
    2117 "  fe_ber int(10) unsigned NOT NULL default '0',"
    2118 "  fe_unc int(10) unsigned NOT NULL default '0',"
    2119 "  myth_cont int(10) unsigned NOT NULL default '0',"
    2120 "  myth_over int(10) unsigned NOT NULL default '0',"
    2121 "  myth_pkts int(10) unsigned NOT NULL default '0',"
     2129+ dbInt(dbType, "cardid", "10", false, true, "'0'") + ","
     2130+ dbInt(dbType, "fe_snr", "10", false, true, "'0'") + ","
     2131+ dbInt(dbType, "fe_ss", "10", false, true, "'0'") + ","
     2132+ dbInt(dbType, "fe_ber", "10", false, true, "'0'") + ","
     2133+ dbInt(dbType, "fe_unc", "10", false, true, "'0'") + ","
     2134+ dbInt(dbType, "myth_cont", "10", false, true, "'0'") + ","
     2135+ dbInt(dbType, "myth_over", "10", false, true, "'0'") + ","
     2136+ dbInt(dbType, "myth_pkts", "10", false, true, "'0'") + ","
    21222137"  PRIMARY KEY  (id),"
    21232138"  KEY sampletime (sampletime,cardid)"
    21242139");",
    2125 "CREATE TABLE IF NOT EXISTS favorites ("
    2126 "  favid int(11) unsigned NOT NULL auto_increment,"
    2127 "  userid int(11) unsigned NOT NULL default '0',"
    2128 "  chanid int(11) unsigned NOT NULL default '0',"
     2140createTable(dbType, "favorites") + " ("
     2141+ dbInt(dbType, "favid", "11", false, true, "", true) + ","
     2142+ dbInt(dbType, "userid", "11", false, true, "'0'") + ","
     2143+ dbInt(dbType, "chanid", "11", false, true, "'0'") + ","
    21292144"  PRIMARY KEY  (favid)"
    21302145");",
    2131 "CREATE TABLE IF NOT EXISTS housekeeping ("
     2146createTable(dbType, "housekeeping") + " ("
    21322147"  tag varchar(64) NOT NULL default '',"
    21332148"  lastrun datetime default NULL,"
    21342149"  PRIMARY KEY  (tag)"
    21352150");",
    2136 "CREATE TABLE IF NOT EXISTS jobqueue ("
    2137 "  id int(11) NOT NULL auto_increment,"
    2138 "  chanid int(10) NOT NULL default '0',"
     2151createTable(dbType, "jobqueue") + " ("
     2152+ dbInt(dbType, "id", "11", false, false, "", true) + ","
     2153+ dbInt(dbType, "chanid", "10", false, false, "'0'") + ","
    21392154"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    21402155"  inserttime datetime NOT NULL default '0000-00-00 00:00:00',"
    2141 "  type int(11) NOT NULL default '0',"
    2142 "  cmds int(11) NOT NULL default '0',"
    2143 "  flags int(11) NOT NULL default '0',"
    2144 "  status int(11) NOT NULL default '0',"
     2156+ dbInt(dbType, "type", "11", false, false, "'0'") + ","
     2157+ dbInt(dbType, "cmds", "11", false, false, "'0'") + ","
     2158+ dbInt(dbType, "flags", "11", false, false, "'0'") + ","
     2159+ dbInt(dbType, "status", "11", false, false, "'0'") + ","
    21452160"  statustime timestamp(14) NOT NULL,"
    21462161"  hostname varchar(255) NOT NULL default '',"
    21472162"  args blob NOT NULL,"
     
    21492164"  PRIMARY KEY  (id),"
    21502165"  UNIQUE KEY chanid (chanid,starttime,type,inserttime)"
    21512166");",
    2152 "CREATE TABLE IF NOT EXISTS jumppoints ("
     2167createTable(dbType, "jumppoints") + " ("
    21532168"  destination varchar(128) NOT NULL default '',"
    21542169"  description varchar(255) default NULL,"
    21552170"  keylist varchar(32) default NULL,"
    21562171"  hostname varchar(255) NOT NULL default '',"
    21572172"  PRIMARY KEY  (destination,hostname)"
    21582173");",
    2159 "CREATE TABLE IF NOT EXISTS keybindings ("
     2174createTable(dbType, "keybindings") + " ("
    21602175"  context varchar(32) NOT NULL default '',"
    21612176"  action varchar(32) NOT NULL default '',"
    21622177"  description varchar(255) default NULL,"
     
    21642179"  hostname varchar(255) NOT NULL default '',"
    21652180"  PRIMARY KEY  (context,action,hostname)"
    21662181");",
    2167 "CREATE TABLE IF NOT EXISTS keyword ("
     2182createTable(dbType, "keyword") + " ("
    21682183"  phrase varchar(128) NOT NULL default '',"
    2169 "  searchtype int(10) unsigned NOT NULL default '3',"
     2184+ dbInt(dbType, "searchtype", "10", false, true, "'3'") + ","
    21702185"  UNIQUE KEY phrase (phrase,searchtype)"
    21712186");",
    2172 "CREATE TABLE IF NOT EXISTS mythlog ("
    2173 "  logid int(10) unsigned NOT NULL auto_increment,"
     2187createTable(dbType, "mythlog") + " ("
     2188+ dbInt(dbType, "logid", "10", false, true, "", true) + ","
    21742189"  module varchar(32) NOT NULL default '',"
    2175 "  priority int(11) NOT NULL default '0',"
    2176 "  acknowledged tinyint(1) default '0',"
     2190+ dbInt(dbType, "priority", "11", false, false, "'0'") + ","
     2191+ dbTinyInt(dbType, "acknowledged", "1", true, false, "'0'") + ","
    21772192"  logdate datetime default NULL,"
    21782193"  host varchar(128) default NULL,"
    21792194"  message varchar(255) NOT NULL default '',"
    21802195"  details text,"
    21812196"  PRIMARY KEY  (logid)"
    21822197");",
    2183 "CREATE TABLE IF NOT EXISTS networkiconmap ("
    2184 "  id int(11) NOT NULL auto_increment,"
     2198createTable(dbType, "networkiconmap") + " ("
     2199+ dbInt(dbType, "id", "11", false, false, "", true) + ","
    21852200"  network varchar(20) NOT NULL default '',"
    21862201"  url varchar(255) NOT NULL default '',"
    21872202"  PRIMARY KEY  (id),"
    21882203"  UNIQUE KEY network (network)"
    21892204");",
    2190 "CREATE TABLE IF NOT EXISTS oldprogram ("
     2205createTable(dbType, "oldprogram") + " ("
    21912206"  oldtitle varchar(128) NOT NULL default '',"
    21922207"  airdate datetime NOT NULL default '0000-00-00 00:00:00',"
    21932208"  PRIMARY KEY  (oldtitle)"
    21942209");",
    2195 "CREATE TABLE IF NOT EXISTS oldrecorded ("
    2196 "  chanid int(10) unsigned NOT NULL default '0',"
     2210createTable(dbType, "oldrecorded") + " ("
     2211+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    21972212"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    21982213"  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
    21992214"  title varchar(128) NOT NULL default '',"
     
    22082223"  KEY seriesid (seriesid),"
    22092224"  KEY programid (programid)"
    22102225");",
    2211 "CREATE TABLE IF NOT EXISTS people ("
    2212 "  person mediumint(8) unsigned NOT NULL auto_increment,"
     2226createTable(dbType, "people") + " (" +
     2227dbMedInt(dbType, "person", "8", false, true, "", true) + ","
    22132228"  name char(128) NOT NULL default '',"
    22142229"  PRIMARY KEY  (person),"
    22152230"  UNIQUE KEY name (name(41))"
    22162231");",
    2217 "CREATE TABLE IF NOT EXISTS profilegroups ("
    2218 "  id int(10) unsigned NOT NULL auto_increment,"
     2232createTable(dbType, "profilegroups") + " ("
     2233+ dbInt(dbType, "id", "10", false, true, "", true) + ","
    22192234"  name varchar(128) default NULL,"
    22202235"  cardtype varchar(32) NOT NULL default 'V4L',"
    2221 "  is_default int(1) default '0',"
     2236+ dbInt(dbType, "is_default", "1", true, false, "'0'") + ","
    22222237"  hostname varchar(255) default NULL,"
    22232238"  PRIMARY KEY  (id),"
    22242239"  UNIQUE KEY name (name,hostname)"
    22252240");",
    2226 "CREATE TABLE IF NOT EXISTS program ("
    2227 "  chanid int(10) unsigned NOT NULL default '0',"
     2241createTable(dbType, "program") + " ("
     2242+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    22282243"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    22292244"  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
    22302245"  title varchar(128) NOT NULL default '',"
     
    22342249"  category_type varchar(64) NOT NULL default '',"
    22352250"  airdate year(4) NOT NULL default '0000',"
    22362251"  stars float NOT NULL default '0',"
    2237 "  previouslyshown tinyint(4) NOT NULL default '0',"
     2252+ dbTinyInt(dbType, "previouslyshown", "4", false, false, "'0'") + ","
    22382253"  title_pronounce varchar(128) NOT NULL default '',"
    2239 "  stereo tinyint(1) default NULL,"
    2240 "  subtitled tinyint(1) default NULL,"
    2241 "  hdtv tinyint(1) default NULL,"
    2242 "  closecaptioned tinyint(1) default NULL,"
    2243 "  partnumber int(11) default NULL,"
    2244 "  parttotal int(11) default NULL,"
     2254+ dbTinyInt(dbType, "stereo", "1", true, false, "NULL") + ","
     2255+ dbTinyInt(dbType, "subtitled", "1", true, false, "NULL") + ","
     2256+ dbTinyInt(dbType, "hdtv", "1", true, false, "NULL") + ","
     2257+ dbTinyInt(dbType, "closecaptioned", "1", true, false, "NULL") + ","
     2258+ dbInt(dbType, "partnumber", "11", true, false, "NULL") + ","
     2259+ dbInt(dbType, "parttotal", "11", true, false, "NULL") + ","
    22452260"  seriesid varchar(12) NOT NULL default '',"
    22462261"  originalairdate date default NULL,"
    22472262"  showtype varchar(30) NOT NULL default '',"
     
    22562271"  KEY programid (programid),"
    22572272"  KEY id_start_end (chanid,starttime,endtime)"
    22582273");",
    2259 "CREATE TABLE IF NOT EXISTS programgenres ("
    2260 "  chanid int(10) unsigned NOT NULL default '0',"
     2274createTable(dbType, "programgenres") + " ("
     2275+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    22612276"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    22622277"  relevance char(1) NOT NULL default '',"
    22632278"  genre char(30) default NULL,"
    22642279"  PRIMARY KEY  (chanid,starttime,relevance)"
    22652280");",
    2266 "CREATE TABLE IF NOT EXISTS programrating ("
    2267 "  chanid int(10) unsigned NOT NULL default '0',"
     2281createTable(dbType, "programrating") + " ("
     2282+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    22682283"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    22692284"  system char(8) NOT NULL default '',"
    22702285"  rating char(8) NOT NULL default '',"
    22712286"  UNIQUE KEY chanid (chanid,starttime,system,rating),"
    22722287"  KEY starttime (starttime,system)"
    22732288");",
    2274 "CREATE TABLE IF NOT EXISTS recgrouppassword ("
     2289createTable(dbType, "recgrouppassword") + " ("
    22752290"  recgroup varchar(32) NOT NULL default '',"
    22762291"  password varchar(10) NOT NULL default '',"
    22772292"  PRIMARY KEY  (recgroup),"
    22782293"  UNIQUE KEY recgroup (recgroup)"
    22792294");",
    2280 "CREATE TABLE IF NOT EXISTS record ("
    2281 "  recordid int(10) unsigned NOT NULL auto_increment,"
    2282 "  type int(10) unsigned NOT NULL default '0',"
    2283 "  chanid int(10) unsigned default NULL,"
     2295createTable(dbType, "record") + " ("
     2296+ dbInt(dbType, "recordid", "10", false, true, "", true) + ","
     2297+ dbInt(dbType, "type", "10", false, true, "'0'") + ","
     2298+ dbInt(dbType, "chanid", "10", true, true, "NULL") + ","
    22842299"  starttime time NOT NULL default '00:00:00',"
    22852300"  startdate date NOT NULL default '0000-00-00',"
    22862301"  endtime time NOT NULL default '00:00:00',"
     
    22902305"  description text NOT NULL,"
    22912306"  category varchar(64) NOT NULL default '',"
    22922307"  profile varchar(128) NOT NULL default 'Default',"
    2293 "  recpriority int(10) NOT NULL default '0',"
    2294 "  autoexpire int(11) NOT NULL default '0',"
    2295 "  maxepisodes int(11) NOT NULL default '0',"
    2296 "  maxnewest int(11) NOT NULL default '0',"
    2297 "  startoffset int(11) NOT NULL default '0',"
    2298 "  endoffset int(11) NOT NULL default '0',"
     2308+ dbInt(dbType, "recpriority", "10", false, false, "'0'") + ","
     2309+ dbInt(dbType, "autoexpire", "11", false, false, "'0'") + ","
     2310+ dbInt(dbType, "maxepisodes", "11", false, false, "'0'") + ","
     2311+ dbInt(dbType, "maxnewest", "11", false, false, "'0'") + ","
     2312+ dbInt(dbType, "startoffset", "11", false, false, "'0'") + ","
     2313+ dbInt(dbType, "endoffset", "11", false, false, "'0'") + ","
    22992314"  recgroup varchar(32) NOT NULL default 'Default',"
    2300 "  dupmethod int(11) NOT NULL default '6',"
    2301 "  dupin int(11) NOT NULL default '15',"
     2315+ dbInt(dbType, "dupmethod", "11", false, false, "'6'") + ","
     2316+ dbInt(dbType, "dupin", "11", false, false, "'15'") + ","
    23022317"  station varchar(20) NOT NULL default '',"
    23032318"  seriesid varchar(12) NOT NULL default '',"
    23042319"  programid varchar(12) NOT NULL default '',"
    2305 "  search int(10) unsigned NOT NULL default '0',"
    2306 "  autotranscode tinyint(1) NOT NULL default '0',"
    2307 "  autocommflag tinyint(1) NOT NULL default '0',"
    2308 "  autouserjob1 tinyint(1) NOT NULL default '0',"
    2309 "  autouserjob2 tinyint(1) NOT NULL default '0',"
    2310 "  autouserjob3 tinyint(1) NOT NULL default '0',"
    2311 "  autouserjob4 tinyint(1) NOT NULL default '0',"
     2320+ dbInt(dbType, "search", "10", false, true, "'0'") + ","
     2321+ dbTinyInt(dbType, "autotranscode", "1", false, false, "'0'") + ","
     2322+ dbTinyInt(dbType, "autocommflag", "1", false, false, "'0'") + ","
     2323+ dbTinyInt(dbType, "autouserjob1", "1", false, false, "'0'") + ","
     2324+ dbTinyInt(dbType, "autouserjob2", "1", false, false, "'0'") + ","
     2325+ dbTinyInt(dbType, "autouserjob3", "1", false, false, "'0'") + ","
     2326+ dbTinyInt(dbType, "autouserjob4", "1", false, false, "'0'") + ","
    23122327"  PRIMARY KEY  (recordid),"
    23132328"  KEY chanid (chanid,starttime),"
    23142329"  KEY title (title),"
    23152330"  KEY seriesid (seriesid),"
    23162331"  KEY programid (programid)"
    23172332");",
    2318 "CREATE TABLE IF NOT EXISTS recorded ("
    2319 "  chanid int(10) unsigned NOT NULL default '0',"
     2333createTable(dbType, "recorded") + " ("
     2334+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    23202335"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    23212336"  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
    23222337"  title varchar(128) NOT NULL default '',"
     
    23252340"  category varchar(64) NOT NULL default '',"
    23262341"  hostname varchar(255) NOT NULL default '',"
    23272342"  bookmark varchar(128) default NULL,"
    2328 "  editing int(10) unsigned NOT NULL default '0',"
     2343+ dbInt(dbType, "editing", "10", false, true, "'0'") + ","
    23292344"  cutlist text,"
    2330 "  autoexpire int(11) NOT NULL default '0',"
    2331 "  commflagged int(10) unsigned NOT NULL default '0',"
     2345+ dbInt(dbType, "autoexpire", "11", false, false, "'0'") + ","
     2346+ dbInt(dbType, "commflagged", "10", false, true, "'0'") + ","
    23322347"  recgroup varchar(32) NOT NULL default 'Default',"
    2333 "  recordid int(11) default NULL,"
     2348+ dbInt(dbType, "recordid", "11", true, false, "NULL") + ","
    23342349"  seriesid varchar(12) NOT NULL default '',"
    23352350"  programid varchar(12) NOT NULL default '',"
    23362351"  lastmodified timestamp(14) NOT NULL,"
    2337 "  filesize bigint(20) NOT NULL default '0',"
     2352 + dbBigInt(dbType, "filesize", "20", false, false, "'0'") + ","
    23382353"  stars float NOT NULL default '0',"
    2339 "  previouslyshown tinyint(1) default '0',"
     2354+ dbTinyInt(dbType, "previouslyshown", "1", true, false, "'0'") + ","
    23402355"  originalairdate date default NULL,"
    2341 "  preserve tinyint(1) NOT NULL default '0',"
     2356+ dbTinyInt(dbType, "preserve", "1", false, false, "'0'") + ","
    23422357"  PRIMARY KEY  (chanid,starttime),"
    23432358"  KEY endtime (endtime),"
    23442359"  KEY seriesid (seriesid),"
    23452360"  KEY programid (programid)"
    23462361");",
    2347 "CREATE TABLE IF NOT EXISTS recordedmarkup ("
    2348 "  chanid int(10) unsigned NOT NULL default '0',"
     2362createTable(dbType, "recordedmarkup") + " ("
     2363+ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
    23492364"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    2350 "  mark bigint(20) NOT NULL default '0',"
     2365+ dbBigInt(dbType, "mark", "20", false, false, "'0'") + ","
    23512366"  offset varchar(32) default NULL,"
    2352 "  type int(11) NOT NULL default '0',"
     2367+ dbInt(dbType, "type", "11", false, false, "'0'") + ","
    23532368"  PRIMARY KEY  (chanid,starttime,mark,type)"
    23542369");",
    2355 "CREATE TABLE IF NOT EXISTS recordingprofiles ("
    2356 "  id int(10) unsigned NOT NULL auto_increment,"
     2370createTable(dbType, "recordingprofiles") + " ("
     2371+ dbInt(dbType, "id", "10", false, true, "", true) + ","
    23572372"  name varchar(128) default NULL,"
    23582373"  videocodec varchar(128) default NULL,"
    23592374"  audiocodec varchar(128) default NULL,"
    2360 "  profilegroup int(10) unsigned NOT NULL default '0',"
     2375+ dbInt(dbType, "profilegroup", "10", false, true, "'0'") + ","
    23612376"  PRIMARY KEY  (id)"
    23622377");",
    2363 "CREATE TABLE IF NOT EXISTS recordoverride ("
    2364 "  recordid int(10) unsigned NOT NULL default '0',"
    2365 "  type int(10) unsigned NOT NULL default '0',"
    2366 "  chanid int(10) unsigned default NULL,"
     2378createTable(dbType, "recordoverride") + " ("
     2379+ dbInt(dbType, "recordid", "10", false, true, "'0'") + ","
     2380+ dbInt(dbType, "type", "10", false, true, "'0'") + ","
     2381+ dbInt(dbType, "chanid", "10", true, true, "NULL") + ","
    23672382"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
    23682383"  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
    23692384"  title varchar(128) default NULL,"
     
    23712386"  description text,"
    23722387"  station varchar(20) NOT NULL default ''"
    23732388");",
    2374 "CREATE TABLE IF NOT EXISTS settings ("
     2389createTable(dbType, "settings") + " ("
    23752390"  value varchar(128) NOT NULL default '',"
    23762391"  data text,"
    23772392"  hostname varchar(255) default NULL,"
    23782393"  KEY value (value,hostname)"
    23792394");",
    2380 "CREATE TABLE IF NOT EXISTS videosource ("
    2381 "  sourceid int(10) unsigned NOT NULL auto_increment,"
     2395createTable(dbType, "videosource") + " ("
     2396+ dbInt(dbType, "sourceid", "10", false, true, "", true) + ","
    23822397"  name varchar(128) NOT NULL default '',"
    23832398"  xmltvgrabber varchar(128) default NULL,"
    23842399"  userid varchar(128) NOT NULL default '',"
     
    24312446    return true;
    24322447}
    24332448
     2449static QString createTable(const QString &dbType, const QString &tableName)
     2450{
     2451   if (dbType.left(6) == "QMYSQL")
     2452      return QString("CREATE TABLE IF NOT EXISTS " + tableName);
     2453   return QString("CREATE TABLE " + tableName);
     2454}
     2455
     2456static QString dbInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
     2457{
     2458      QString retval = colName;
     2459
     2460   if (dbType.left(6) == "QMYSQL") {
     2461      retval += " int";
     2462      if (width.length() > 0)
     2463         retval += "(" + width + ")";
     2464      if (unsignedCol)
     2465         retval += " unsigned";
     2466      if (!nullable)
     2467         retval += " NOT NULL";
     2468      if (auto_num)
     2469         retval += " auto_increment";
     2470      else if (defaultVal.length() > 0)
     2471         retval += " default " + defaultVal;
     2472   }
     2473   else {
     2474      if (auto_num)
     2475         retval += " SERIAL";
     2476      else {
     2477         retval += " INT4";
     2478         if (!nullable)
     2479            retval += " NOT NULL";
     2480         if (defaultVal.length() > 0)
     2481            retval += " default " + defaultVal;
     2482         if (unsignedCol)
     2483            retval += ", check(" + colName + " >= 0)";
     2484      }
     2485   }
     2486   
     2487   return retval;
     2488}
     2489
     2490
     2491static QString dbTinyInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
     2492{
     2493      QString retval = colName;
     2494
     2495   if (dbType.left(6) == "QMYSQL") {
     2496      retval += " tinyint";
     2497      if (width.length() > 0)
     2498         retval += "(" + width + ")";
     2499      if (unsignedCol)
     2500         retval += " unsigned";
     2501      if (!nullable)
     2502         retval += " NOT NULL";
     2503      if (auto_num)
     2504         retval += " auto_increment";
     2505      else if (defaultVal.length() > 0)
     2506         retval += " default " + defaultVal;
     2507   }
     2508   else {
     2509      if (auto_num)
     2510         retval += " SERIAL";
     2511      else {
     2512         retval += " INT2";
     2513         if (!nullable)
     2514            retval += " NOT NULL";
     2515         if (defaultVal.length() > 0)
     2516            retval += " default " + defaultVal;
     2517         if (unsignedCol)
     2518            retval += ", check(" + colName + " >= 0)";
     2519      }
     2520   }
     2521   
     2522   return retval;
     2523}
     2524
     2525
     2526static QString dbBigInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
     2527{
     2528      QString retval = colName;
     2529
     2530   if (dbType.left(6) == "QMYSQL") {
     2531      retval += " bigint";
     2532      if (width.length() > 0)
     2533         retval += "(" + width + ")";
     2534      if (unsignedCol)
     2535         retval += " unsigned";
     2536      if (!nullable)
     2537         retval += " NOT NULL";
     2538      if (auto_num)
     2539         retval += " auto_increment";
     2540      else if (defaultVal.length() > 0)
     2541         retval += " default " + defaultVal;
     2542   }
     2543   else {
     2544      if (auto_num)
     2545         retval += " SERIAL";
     2546      else {
     2547         retval += " INT8";
     2548         if (!nullable)
     2549            retval += " NOT NULL";
     2550         if (defaultVal.length() > 0)
     2551            retval += " default " + defaultVal;
     2552         if (unsignedCol)
     2553            retval += ", check(" + colName + " >= 0)";
     2554      }
     2555   }
     2556   
     2557   return retval;
     2558}
     2559
     2560
     2561static QString dbSmallInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
     2562{
     2563      QString retval = colName;
     2564
     2565   if (dbType.left(6) == "QMYSQL") {
     2566      retval += " smallint";
     2567      if (width.length() > 0)
     2568         retval += "(" + width + ")";
     2569      if (unsignedCol)
     2570         retval += " unsigned";
     2571      if (!nullable)
     2572         retval += " NOT NULL";
     2573      if (auto_num)
     2574         retval += " auto_increment";
     2575      else if (defaultVal.length() > 0)
     2576         retval += " default " + defaultVal;
     2577   }
     2578   else {
     2579      if (auto_num)
     2580         retval += " SERIAL";
     2581      else {
     2582         retval += " INT2";
     2583         if (!nullable)
     2584            retval += " NOT NULL";
     2585         if (defaultVal.length() > 0)
     2586            retval += " default " + defaultVal;
     2587         if (unsignedCol)
     2588            retval += ", check(" + colName + " >= 0)";
     2589      }
     2590   }
     2591   
     2592   return retval;
     2593}
     2594
     2595
     2596static QString dbMedInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
     2597{
     2598   QString retval = colName;
     2599
     2600   if (dbType.left(6) == "QMYSQL") {
     2601      retval += " mediumint";
     2602      if (width.length() > 0)
     2603         retval += "(" + width + ")";
     2604      if (unsignedCol)
     2605         retval += " unsigned";
     2606      if (!nullable)
     2607         retval += " NOT NULL";
     2608      if (auto_num)
     2609         retval += " auto_increment";
     2610      else if (defaultVal.length() > 0)
     2611         retval += " default " + defaultVal;
     2612   }
     2613   else {
     2614      if (auto_num)
     2615         retval += " SERIAL";
     2616      else {
     2617         retval += " INT4";
     2618         if (!nullable)
     2619            retval += " NOT NULL";
     2620         if (defaultVal.length() > 0)
     2621            retval += " default " + defaultVal;
     2622         if (unsignedCol)
     2623            retval += ", check(" + colName + " >= 0)";
     2624      }
     2625   }
     2626   
     2627   return retval;
     2628}