--- libs/libmythtv/dbcheck.cpp	2005-07-10 15:11:23.000000000 -0500
+++ /home/fvilas/mythtv-cvs/mythtv/libs/libmythtv/dbcheck-pg.cpp	2005-07-10 18:00:09.000000000 -0500
@@ -18,6 +18,19 @@
 static bool InitializeDatabase(void);
 static bool doUpgradeTVDatabaseSchema(void);
 
+/// These are the helper functions for supporting different db backends
+const QString dbType = "QMYSQL3"; // change this to check the user's settings 
+
+static QString createTable(const QString &dbType, const QString &tableName);
+static QString dbInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
+static QString dbBigInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
+static QString dbSmallInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
+static QString dbTinyInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
+static QString dbMedInt(const QString &dbType, const QString &colName, const QString &width = "", bool nullable = true, bool unsignedCol = false, const QString &defaultVal = "", bool auto_num = false);
+
+
+
+
 /** \defgroup db_schema MythTV Database Schema
 
 \section db_intro Introduction
@@ -311,8 +324,10 @@
 
     MSqlQuery lockquery(MSqlQuery::InitCon());
 
-    lockquery.prepare("CREATE TABLE IF NOT EXISTS "
-                      "schemalock ( schemalock int(1));");
+    lockquery.prepare(createTable(dbType, "schemalock") 
+                      + " ( " +
+                      dbInt(dbType, "schemalock", "1") + " );" );
+
     if (!lockquery.exec())
     {
         VERBOSE(VB_IMPORTANT, QString("ERROR: Unable to create database "
@@ -382,7 +397,7 @@
         const QString updates[] = {
 "ALTER TABLE program ADD COLUMN category_type VARCHAR(64) NULL;",
 "DROP TABLE IF EXISTS transcoding;",
-"CREATE TABLE transcoding (chanid INT UNSIGNED, starttime TIMESTAMP, status INT, hostname VARCHAR(255));",
+createTable(dbType, "transcoding") + " (chanid INT UNSIGNED, starttime TIMESTAMP, status INT, hostname VARCHAR(255));",
 ""
 };
         if (!performActualUpdate(updates, "901", dbver))
@@ -404,8 +419,8 @@
     if (dbver == "902")
     {
         const QString updates[] = {
-"ALTER TABLE record ADD rank INT(10) DEFAULT '0' NOT NULL;",
-"ALTER TABLE channel ADD rank INT(10) DEFAULT '0' NOT NULL;",
+"ALTER TABLE record ADD " + dbInt(dbType, "rank", "10", false, false, "'0'") + ";",
+"ALTER TABLE channel ADD " + dbInt(dbType, "rank", "10", false, false, "'0'") + ";",
 ""
 };
         if (!performActualUpdate(updates, "903", dbver))
@@ -469,11 +484,11 @@
     {
         const QString updates[] = {
 "DROP TABLE IF EXISTS profilegroups;",
-"CREATE TABLE profilegroups ("
-"  id int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "profilegroups") + " ("
++ dbInt(dbType, "id", "10", false, true, "", true) + ","
 "  name varchar(128) default NULL,"
 "  cardtype varchar(32) NOT NULL default 'V4L',"
-"  is_default int(1) default 0,"
++ dbInt(dbType, "is_default", "1", true, false, "0") + ","
 "  hostname varchar(255) default NULL,"
 "  PRIMARY KEY (id),"
 "  UNIQUE (name, hostname)"
@@ -485,12 +500,12 @@
 "INSERT INTO profilegroups SET name = \"Hardware DVB Encoders\", cardtype = 'DVB', is_default = 1;",
 "INSERT INTO profilegroups SET name = \"Transcoders\", cardtype = 'TRANSCODE', is_default = 1;",
 "DROP TABLE recordingprofiles;",
-"CREATE TABLE recordingprofiles ("
-"  id int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "recordingprofiles") + " ("
++ dbInt(dbType, "id", "10", false, true, "", true) + ","
 "  name varchar(128) default NULL,"
 "  videocodec varchar(128) default NULL,"
 "  audiocodec varchar(128) default NULL,"
-"  profilegroup int(10) unsigned NOT NULL DEFAULT 0,"
++ dbInt(dbType, "profilegroup", "10", false, true, "0") + ","
 "  PRIMARY KEY (id)"
 ");",
 "INSERT INTO recordingprofiles SET name = \"Default\", profilegroup = 1;",
@@ -536,12 +551,12 @@
     if (dbver == "1006")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS recordingprofiles ("
-"  id int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "recordingprofiles") + " ("
++ dbInt(dbType, "id", "10", false, true, "", true) + ","
 "  name varchar(128) default NULL,"
 "  videocodec varchar(128) default NULL,"
 "  audiocodec varchar(128) default NULL,"
-"  profilegroup int(10) unsigned NOT NULL DEFAULT 0,"
++ dbInt(dbType, "profilegroup", "10", false, true, "0") + ","
 "  PRIMARY KEY (id)"
 ");",
 ""
@@ -556,18 +571,18 @@
 "ALTER TABLE capturecard CHANGE use_ts dvb_swfilter INT DEFAULT '0';",
 "ALTER TABLE capturecard CHANGE dvb_type dvb_recordts INT DEFAULT '1';",
 "DROP TABLE IF EXISTS channel_dvb;",
-"CREATE TABLE IF NOT EXISTS dvb_channel ("
-"   chanid              SMALLINT NOT NULL,"
-"   serviceid           SMALLINT NULL,"
-"   networkid           SMALLINT NULL,"
-"   providerid          SMALLINT NULL,"
-"   transportid         SMALLINT NULL,"
+createTable(dbType, "dvb_channel") + " ("
++ dbSmallInt(dbType, "chanid", "", false) + ","
++ dbSmallInt(dbType, "serviceid") + ","
++ dbSmallInt(dbType, "networkid") + ","
++ dbSmallInt(dbType, "providerid") + ","
++ dbSmallInt(dbType, "transportid") + ","
 "   frequency           INTEGER NULL,"
 "   inversion           CHAR(1) NULL,"
 "   symbolrate          INTEGER NULL,"
 "   fec                 VARCHAR(10) NULL,"
 "   polarity            CHAR(1) NULL,"
-"   satid               SMALLINT NULL,"
++ dbSmallInt(dbType, "satid") + ","
 "   modulation          VARCHAR(10) NULL,"
 "   bandwidth           CHAR(1) NULL,"
 "   lp_code_rate        VARCHAR(10) NULL,"
@@ -576,24 +591,24 @@
 "   hierarchy           CHAR(1) NULL,"
 "   PRIMARY KEY (chanid)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_sat ("
-"   satid   SMALLINT NOT NULL AUTO_INCREMENT,"
-"   lnbid   SMALLINT NOT NULL,"
-"   cardnum SMALLINT NOT NULL,"
+createTable(dbType, "dvb_sat") + " ("
++ dbSmallInt(dbType, "satid", "", false, false, "", true) + ","
++ dbSmallInt(dbType, "lnbid", "", false) + ","
++ dbSmallInt(dbType, "cardnum", "", false) + ","
 "   PRIMARY KEY (cardnum,satid,lnbid)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_lnb ("
-"   lnbid       SMALLINT NOT NULL AUTO_INCREMENT,"
-"   disecqid    SMALLINT NULL,"
-"   diseqc_port SMALLINT NULL,"
+createTable(dbType, "dvb_lnb") + " ("
++ dbSmallInt(dbType, "lnbid", "", false, false, "", true) + ","
++ dbSmallInt(dbType, "disecqid") + ","
++ dbSmallInt(dbType, "diseqc_port") + ","
 "   lof_switch  INTEGER DEFAULT 11700000 NOT NULL,"
 "   lof_hi      INTEGER DEFAULT 10600000 NOT NULL,"
 "   lof_lo      INTEGER DEFAULT 9750000 NOT NULL,"
 "   PRIMARY KEY (lnbid)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_pids ("
-"   chanid  SMALLINT NOT NULL,"
-"   pid     SMALLINT NOT NULL,"
+createTable(dbType, "dvb_pids") + " ("
++ dbSmallInt(dbType, "chanid", "", false) + ","
++ dbSmallInt(dbType, "pid") + ","
 "   type    CHAR(1) DEFAULT 'o' NOT NULL,"
 "   lang    CHAR(3) DEFAULT '' NOT NULL,"
 "   PRIMARY KEY (chanid,pid)"
@@ -607,10 +622,10 @@
     if (dbver == "1008")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS dvb_sat ("
-"   satid   SMALLINT NOT NULL AUTO_INCREMENT,"
-"   lnbid   SMALLINT NOT NULL,"
-"   cardnum SMALLINT NOT NULL,"
+createTable(dbType, "dvb_sat") + " ("
++ dbSmallInt(dbType, "satid", "", false, false, "", true) + ","
++ dbSmallInt(dbType, "lnbid", "", false) + ","
++ dbSmallInt(dbType, "cardnum", "", false) + ","
 "   PRIMARY KEY (cardnum,satid,lnbid)"
 ");",
 ""
@@ -636,14 +651,14 @@
 "DROP TABLE IF EXISTS dvb_diseqc;",
 "DROP TABLE IF EXISTS dvb_lnb;",
 "DROP TABLE IF EXISTS dvb_sat;",
-"CREATE TABLE IF NOT EXISTS dvb_sat ("
-"   satid SMALLINT NOT NULL AUTO_INCREMENT,"
+createTable(dbType, "dvb_sat") + " ("
++ dbSmallInt(dbType, "satid", "", false, false, "", true) + ","
 "   sourceid INT DEFAULT 0,"
-"   pos SMALLINT DEFAULT 0,"
++ dbSmallInt(dbType, "pos", "", true, false, "0") + ","
 "   name VARCHAR(128),"
-"   diseqc_type SMALLINT DEFAULT 0,"
-"   diseqc_port SMALLINT DEFAULT 0,"
-"   lnb_lof_switch SMALLINT DEFAULT 11700000,"
++ dbSmallInt(dbType, "diseqc_type", "", true, false, "0") + ","
++ dbSmallInt(dbType, "diseqc_port", "", true, false, "0") + ","
++ dbSmallInt(dbType, "lnb_lof_switch", "", true, false, "11700000") + ","
 "   lnb_lof_hi INTEGER DEFAULT 10600000,"
 "   lnb_lof_lo INTEGER DEFAULT 9750000,"
 "   PRIMARY KEY(satid)"
@@ -657,7 +672,7 @@
     if (dbver == "1011")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS recordoverride ("
+createTable(dbType, "recordoverride") + " ("
 "   recordid INT UNSIGNED NOT NULL, "
 "   type INT UNSIGNED NOT NULL, "
 "   chanid INT UNSIGNED NULL, "
@@ -688,8 +703,8 @@
     if (dbver == "1013")
     {
         const QString updates[] = {
-"ALTER TABLE record CHANGE rank recpriority INT(10) DEFAULT '0' NOT NULL;",
-"ALTER TABLE channel CHANGE rank recpriority INT(10) DEFAULT '0' NOT NULL;",
+"ALTER TABLE record CHANGE rank " + dbInt(dbType, "recpriority", "10", false, false, "'0'") + ";",
+"ALTER TABLE channel CHANGE rank " + dbInt(dbType, "recpriority", "10", false, false, "'0'") + ";",
 "UPDATE settings SET value='RecPriorityingActive' WHERE value='RankingActive';",
 "UPDATE settings SET value='RecPriorityingOrder' WHERE value='RankingOrder';",
 "UPDATE settings SET value='SingleRecordRecPriority' WHERE value='SingleRecordRank';",
@@ -720,13 +735,13 @@
     if (dbver == "1015")
     {
         const QString updates[] = {
-"CREATE TABLE jumppoints ("
+createTable(dbType, "jumppoints") + " ("
 "  destination varchar(128) NOT NULL,"
 "  description varchar(255) default NULL,"
 "  keylist varchar(32) default NULL,"
 "  hostname varchar(255) NOT NULL"
 ");",
-"CREATE TABLE keybindings ("
+createTable(dbType, "keybindings") + " ("
 "  context varchar(32) NOT NULL,"
 "  action varchar(32) NOT NULL,"
 "  description varchar(255) default NULL,"
@@ -796,7 +811,7 @@
     if (dbver == "1020")
     {
         const QString updates[] = {
-"CREATE TABLE oldprogram ("
+createTable(dbType, "oldprogram") + " ("
 "  oldtitle VARCHAR(128) NOT NULL PRIMARY KEY,"
 "  airdate TIMESTAMP NOT NULL"
 ");",
@@ -810,7 +825,7 @@
     if (dbver == "1021")
     {
         const QString updates[] = {
-"ALTER TABLE recorded ADD COLUMN commflagged int(10) unsigned NOT NULL default '0';",
+"ALTER TABLE recorded ADD COLUMN " + dbInt(dbType, "commflagged", "10", false, true, "'0'") + ";",
 ""
 };
 
@@ -889,7 +904,7 @@
     if (dbver == "1025")
     {
         const QString updates[] = {
-"CREATE TABLE keyword ("
+createTable(dbType, "keyword") + " ("
 "  phrase VARCHAR(128) NOT NULL PRIMARY KEY,"
 "  UNIQUE(phrase)"
 ");",
@@ -915,7 +930,7 @@
     if (dbver == "1027")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS dvb_signal_quality ("
+createTable(dbType, "dvb_signal_quality") + " ("
 "    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,"
 "    sampletime TIMESTAMP NOT NULL,"
 "    cardid INT UNSIGNED NOT NULL,"
@@ -929,7 +944,7 @@
 "    FOREIGN KEY(cardid) REFERENCES capturecard(id),"
 "    INDEX (sampletime,cardid)"
 ");",
-"ALTER TABLE capturecard ADD skipbtaudio TINYINT(1) DEFAULT 0;",
+"ALTER TABLE capturecard ADD " + dbTinyInt(dbType, "skipbtaudio", "1", true, false, "0") + ";",
 ""
 };
         if (!performActualUpdate(updates, "1028", dbver))
@@ -938,7 +953,7 @@
 
     if (dbver == "1028") {
         const QString updates[] = {
-"ALTER TABLE channel ADD COLUMN commfree TINYINT NOT NULL default '0';",
+"ALTER TABLE channel ADD COLUMN " + dbTinyInt(dbType, "commfree", "", false, false, "'0'") + ";",
 "ALTER TABLE record ADD COLUMN recgroup VARCHAR(32) default 'Default';",
 "ALTER TABLE record ADD COLUMN dupmethod INT NOT NULL DEFAULT 6;",
 "ALTER TABLE record ADD COLUMN dupin INT NOT NULL DEFAULT 15;",
@@ -947,7 +962,7 @@
 "ALTER TABLE record DROP COLUMN recorddups;",
 "ALTER TABLE recorded ADD COLUMN recgroup VARCHAR(32) default 'Default';",
 "ALTER TABLE recorded ADD COLUMN recordid INT DEFAULT NULL;",
-"CREATE TABLE recgrouppassword ("
+createTable(dbType, "recgrouppassword") + " ("
 "  recgroup VARCHAR(32) NOT NULL PRIMARY KEY, "
 "  password VARCHAR(10) NOT NULL, "
 "  UNIQUE(recgroup)"
@@ -972,7 +987,7 @@
     if (dbver == "1030") 
     {
         const QString updates[] = {
-"ALTER TABLE channel ADD COLUMN visible TINYINT(1) NOT NULL default '1';",
+"ALTER TABLE channel ADD COLUMN " + dbTinyInt(dbType, "visible", "1", false, false, "'1'") + ";",
 "UPDATE channel SET visible = 1;",
 ""
 };
@@ -982,7 +997,7 @@
 
     if (dbver == "1031") {
         const QString updates[] = {
-"ALTER TABLE capturecard ADD dvb_on_demand TINYINT NOT NULL DEFAULT 0;",
+"ALTER TABLE capturecard ADD " + dbTinyInt(dbType, "dvb_on_demand", "", false, false, "0") + ";",
 ""
 };
         if (!performActualUpdate(updates, "1032", dbver))
@@ -1013,17 +1028,17 @@
     if (dbver == "1034")
     {
         const QString updates[] = {
-"CREATE TABLE mythlog ("
-"  logid int(10) unsigned PRIMARY KEY NOT NULL auto_increment,"
+createTable(dbType, "mythlog") + " ("
++ dbInt(dbType, "logid", "10", false, true, "", true) + "PRIMARY KEY,"
 "  module char(32) NOT NULL,"
-"  priority int(11) NOT NULL,"
++ dbInt(dbType, "priority", "11", false) + ","
 "  acknowledged bool default 0,"
 "  logdate datetime,"
 "  host varchar(128),"
 "  message varchar(255) NOT NULL,"
 "  details text"
 ");",
-"CREATE TABLE housekeeping ("
+createTable(dbType, "housekeeping") + " ("
 "  tag varchar(64) PRIMARY KEY NOT NULL,"
 "  lastrun datetime"
 ");",
@@ -1037,7 +1052,7 @@
     {
         const QString updates[] = {
 "ALTER TABLE dvb_sat CHANGE pos pos FLOAT;",
-"ALTER TABLE dvb_sat ADD diseqc_pos SMALLINT DEFAULT 0 AFTER diseqc_port;",
+"ALTER TABLE dvb_sat ADD " + dbSmallInt(dbType,"diseqc_pos", "", true, false, "0") + " AFTER diseqc_port;",
 ""
 };
         if (!performActualUpdate(updates,"1036", dbver))
@@ -1081,7 +1096,7 @@
 "DELETE FROM people;",
 "ALTER TABLE people DROP INDEX name;",
 "ALTER TABLE people ADD UNIQUE name (name(41));",
-"CREATE TABLE programgenres ( "
+createTable(dbType, "programgenres") + " ( "
 "    chanid int unsigned NOT NULL, "
 "    starttime timestamp NOT NULL, "
 "    relevance char(1) NOT NULL, "
@@ -1097,7 +1112,7 @@
     if (dbver == "1038")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS programgenres ( "
+createTable(dbType, "programgenres") + " ( "
 "    chanid int unsigned NOT NULL, "
 "    starttime timestamp NOT NULL, "
 "    relevance char(1) NOT NULL, "
@@ -1254,13 +1269,13 @@
     if (dbver == "1047")
     {
         const QString updates[] = {
-"CREATE TABLE networkiconmap ("
+createTable(dbType, "networkiconmap") + " ("
 "    id INTEGER NOT NULL AUTO_INCREMENT,"
 "    network VARCHAR(20) NOT NULL UNIQUE,"
 "    url VARCHAR(255) NOT NULL,"
 "    PRIMARY KEY(id)"
 ");",
-"CREATE TABLE callsignnetworkmap ("
+createTable(dbType, "callsignnetworkmap") + " ("
 "    id INTEGER NOT NULL AUTO_INCREMENT,"
 "    callsign VARCHAR(20) NOT NULL UNIQUE,"
 "    network VARCHAR(20) NOT NULL,"
@@ -1303,7 +1318,8 @@
 "ALTER TABLE recorded CHANGE starttime starttime DATETIME NOT NULL;",
 "ALTER TABLE recorded CHANGE endtime endtime DATETIME NOT NULL;",
 "ALTER TABLE recorded ADD COLUMN lastmodified TIMESTAMP NOT NULL;",
-"ALTER TABLE recorded ADD COLUMN filesize BIGINT(20) DEFAULT 0 NOT NULL;",
+"ALTER TABLE recorded ADD COLUMN " + 
+dbBigInt(dbType, "filesize", "20", false, false, "0") + ";",
 "ALTER TABLE credits CHANGE starttime starttime DATETIME NOT NULL;",
 "ALTER TABLE oldprogram CHANGE airdate airdate DATETIME NOT NULL;",
 "ALTER TABLE oldrecorded CHANGE starttime starttime DATETIME NOT NULL;",
@@ -1337,7 +1353,7 @@
     {
         const QString updates[] = {
 "ALTER TABLE recorded ADD COLUMN stars FLOAT NOT NULL DEFAULT 0;",
-"ALTER TABLE recorded ADD COLUMN previouslyshown TINYINT(1) DEFAULT 0;",
+"ALTER TABLE recorded ADD COLUMN " + dbTinyInt(dbType, "previouslyshown", "1", true, false, "0") + ";",
 "ALTER TABLE recorded ADD COLUMN originalairdate DATE;",
 "INSERT INTO settings VALUES ('HaveRepeats', '0', NULL);",
 ""
@@ -1380,7 +1396,7 @@
     if (dbver == "1056")
     {
         const QString updates[] = {
-"CREATE TABLE jobqueue ("
+createTable(dbType, "jobqueue") + " ("
 "    id INTEGER NOT NULL AUTO_INCREMENT,"
 "    chanid INTEGER(10) NOT NULL,"
 "    starttime DATETIME NOT NULL,"
@@ -1396,12 +1412,12 @@
 "    PRIMARY KEY(id),"
 "    UNIQUE(chanid, starttime, type, inserttime)"
 ");",
-"ALTER TABLE record ADD COLUMN autotranscode TINYINT(1) NOT NULL DEFAULT 0;",
-"ALTER TABLE record ADD COLUMN autocommflag TINYINT(1) NOT NULL DEFAULT 0;",
-"ALTER TABLE record ADD COLUMN autouserjob1 TINYINT(1) NOT NULL DEFAULT 0;",
-"ALTER TABLE record ADD COLUMN autouserjob2 TINYINT(1) NOT NULL DEFAULT 0;",
-"ALTER TABLE record ADD COLUMN autouserjob3 TINYINT(1) NOT NULL DEFAULT 0;",
-"ALTER TABLE record ADD COLUMN autouserjob4 TINYINT(1) NOT NULL DEFAULT 0;",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autotranscode", "1", false, false, "0") + ";",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autocommflag", "1", false, false, "0") + ";",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob1", "1", false, false, "0") + ";",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob2", "1", false, false, "0") + ";",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob3", "1", false, false, "0") + ";",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "autouserjob4", "1", false, false, "0") + ";",
 ""
 };
         if (!performActualUpdate(updates, "1057", dbver))
@@ -1437,7 +1453,7 @@
     if (dbver == "1059")
     {
         const QString updates[] = {
-"ALTER TABLE recorded ADD COLUMN preserve TINYINT(1) NOT NULL DEFAULT 0;",
+"ALTER TABLE recorded ADD COLUMN " + dbTinyInt(dbType, "preserve", "1", false, false, "0") + ";",
 ""
 };
         if (!performActualUpdate(updates, "1060", dbver))
@@ -1447,8 +1463,7 @@
     if (dbver == "1060")
     {
         const QString updates[] = {
-
-"ALTER TABLE record ADD COLUMN record.findday TINYINT NOT NULL DEFAULT 0;",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "record.findday", "", false, false, "0") + ";",
 "ALTER TABLE record ADD COLUMN record.findtime TIME NOT NULL DEFAULT '00:00:00';",
 "ALTER TABLE record ADD COLUMN record.findid INT NOT NULL DEFAULT 0;",
 "ALTER TABLE recorded ADD COLUMN recorded.findid INT NOT NULL DEFAULT 0;",
@@ -1462,7 +1477,7 @@
     if (dbver == "1061")
     {
         const QString updates[] = {
-"ALTER TABLE record ADD COLUMN inactive TINYINT(1) NOT NULL DEFAULT 0;",
+"ALTER TABLE record ADD COLUMN " + dbTinyInt(dbType, "inactive", "1", false, false, "0") + ";",
 ""
 };
         if (!performActualUpdate(updates, "1062", dbver))
@@ -1472,25 +1487,25 @@
     if (dbver == "1062")
     {
         const QString updates[] = {
-"ALTER TABLE cardinput ADD COLUMN freetoaironly TINYINT(1) DEFAULT 1;",
-"ALTER TABLE channel ADD COLUMN useonairguide TINYINT(1) DEFAULT 0;",
-"ALTER TABLE capturecard ADD COLUMN dvb_diseqc_type SMALLINT(6);",
-"ALTER TABLE cardinput ADD COLUMN diseqc_port SMALLINT(6);",
+"ALTER TABLE cardinput ADD COLUMN " + dbTinyInt(dbType, "freetoaironly", "1", true, false, "1") + ";",
+"ALTER TABLE channel ADD COLUMN " + dbTinyInt(dbType, "useonairguide", "1", true, false, "0") + ";",
+"ALTER TABLE capturecard ADD COLUMN " + dbSmallInt(dbType, "dvb_diseqc_type", "6") + ";",
+"ALTER TABLE cardinput ADD COLUMN " + dbSmallInt(dbType, "diseqc_port", "6") + ";",
 "ALTER TABLE cardinput ADD COLUMN diseqc_pos FLOAT;",
-"ALTER TABLE cardinput ADD COLUMN lnb_lof_switch INT(11) DEFAULT 11700000;",
-"ALTER TABLE cardinput ADD COLUMN lnb_lof_hi INT(11) DEFAULT 10600000;",
-"ALTER TABLE cardinput ADD COLUMN lnb_lof_lo INT(11) DEFAULT 9750000;",
-"ALTER TABLE channel ADD COLUMN mplexid SMALLINT(6);",
-"ALTER TABLE channel ADD COLUMN serviceid SMALLINT(6);",
-"ALTER TABLE channel ADD COLUMN atscsrcid INT(11) DEFAULT NULL;",
-"CREATE TABLE dtv_multiplex ("
-"  mplexid smallint(6) NOT NULL auto_increment, "
-"  sourceid smallint(6) default NULL,"
-"  transportid int(11) default NULL,"
-"  networkid int(11) default NULL,"
-"  frequency int(11) default NULL,"
+"ALTER TABLE cardinput ADD COLUMN " + dbInt(dbType, "lnb_lof_switch", "11", true, false, "11700000") + ";",
+"ALTER TABLE cardinput ADD COLUMN " + dbInt(dbType, "lnb_lof_hi", "11", true, false, "10600000") + ";",
+"ALTER TABLE cardinput ADD COLUMN " + dbInt(dbType, "lnb_lof_lo", "11", true, false, "9750000") + ";",
+"ALTER TABLE channel ADD COLUMN " + dbSmallInt(dbType, "mplexid", "6") + ";",
+"ALTER TABLE channel ADD COLUMN " + dbSmallInt(dbType, "serviceid", "6") + ";",
+"ALTER TABLE channel ADD COLUMN " + dbInt(dbType, "atscsrcid", "11", true, false, "NULL")+ ";",
+createTable(dbType, "dtv_multiplex") + " ("
++ dbSmallInt(dbType, "mplexid", "6", false, false, "", true) + ", "
++ dbSmallInt(dbType, "sourceid", "6", true, false, "NULL") + ","
++ dbInt(dbType, "transportid", "11", true, false, "NULL") + ","
++ dbInt(dbType, "networkid", "11", true, false, "NULL") + ","
++ dbInt(dbType, "frequency", "11", true, false, "NULL") + ","
 "  inversion char(1) default 'a',"
-"  symbolrate int(11) default NULL,"
++ dbInt(dbType, "symbolrate", "11", true, false, "NULL") + ","
 "  fec varchar(10) default 'auto',"
 "  polarity char(1) default NULL,"
 "  modulation varchar(10) default 'auto',"
@@ -1498,22 +1513,22 @@
 "  lp_code_rate varchar(10) default 'auto',"
 "  transmission_mode char(1) default 'a',"
 "  guard_interval varchar(10) default 'auto',"
-"  visible smallint(1) NOT NULL default '0',"
++ dbSmallInt(dbType, "visible", "1", false, false, "'0'") + ","
 "  constellation varchar(10) default 'auto',"
 "  hierarchy varchar(10) default 'auto',"
 "  hp_code_rate varchar(10) default 'auto',"
 "  sistandard varchar(10) default 'dvb',"
-"  serviceversion smallint(6) default 33,"
++ dbSmallInt(dbType, "serviceversion", "6", true, false, "33") + ","
 "  updatetimestamp timestamp(14) NOT NULL,"
 "  PRIMARY KEY  (mplexid)"
 ") TYPE=MyISAM;",
 // These should be included in an update after the 0.17 release.
-// "DROP TABLE IF EXISTS dvb_channel;",
+// "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;",
 // "DROP TABLE IF EXISTS dvb_pids;",
 // "DROP TABLE IF EXISTS dvb_sat;",
-"CREATE TABLE dtv_privatetypes ("
+createTable(dbType, "dtv_privatetypes") + " ("
 "  sitype varchar(4) NOT NULL, "
-"  networkid int(11) NOT NULL, "
++ dbInt(dbType, "networkid", "11", false) + ", "
 "  private_type varchar(20) NOT NULL, "
 "  private_value varchar(100) NOT NULL "
 ");",
@@ -1572,7 +1587,7 @@
     if (dbver == "1063")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS recordmatch (recordid int unsigned, "
+createTable(dbType, "recordmatch") + " (recordid int unsigned, "
 "chanid int unsigned, starttime datetime, INDEX (recordid));",
 ""
 };
@@ -1583,12 +1598,12 @@
     if (dbver == "1064")
     {
         const QString updates[] = {
-"ALTER TABLE `program` CHANGE `stereo` `stereo` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
-"ALTER TABLE `program` CHANGE `subtitled` `subtitled` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
-"ALTER TABLE `program` CHANGE `hdtv` `hdtv` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
-"ALTER TABLE `program` CHANGE `closecaptioned` `closecaptioned` TINYINT( 1 ) DEFAULT '0' NOT NULL;",
-"ALTER TABLE `program` CHANGE `partnumber` `partnumber` INT( 11 ) DEFAULT '0' NOT NULL;",
-"ALTER TABLE `program` CHANGE `parttotal` `parttotal` INT( 11 ) DEFAULT '0' NOT NULL;",
+"ALTER TABLE `program` CHANGE `stereo` " + dbTinyInt(dbType, "`stereo`", "1", false, false, "'0'") + ";",
+"ALTER TABLE `program` CHANGE `subtitled` " + dbTinyInt(dbType, "`subtitled`", "1", false, false, "'0'") + ";",
+"ALTER TABLE `program` CHANGE `hdtv` " + dbTinyInt(dbType, "`hdtv`", "1", false, false, "'0'") + ";",
+"ALTER TABLE `program` CHANGE `closecaptioned` " + dbTinyInt(dbType, "`closecaptioned`", "1", false, false, "'0'") + ";",
+"ALTER TABLE `program` CHANGE `partnumber` " + dbInt(dbType, "`partnumber`", "11", false, false, "'0'") + ";",
+"ALTER TABLE `program` CHANGE `parttotal` " + dbInt(dbType, "`parttotal`", "11", false, false, "'0'") + ";",
 "ALTER TABLE `program` CHANGE `programid` `programid` VARCHAR( 20 ) NOT NULL;",
 "ALTER TABLE `oldrecorded` CHANGE `programid` `programid` VARCHAR( 20 ) NOT NULL;",
 "ALTER TABLE `recorded` CHANGE `programid` `programid` VARCHAR( 20 ) NOT NULL;",
@@ -1643,7 +1658,7 @@
     if (dbver == "1068")
     {
         const QString updates[] = {
-"ALTER TABLE recorded ADD COLUMN deletepending TINYINT(1) NOT NULL DEFAULT 0;",
+"ALTER TABLE recorded ADD COLUMN " + dbTinyInt(dbType, "deletepending", "1", false, false, "0") + ";",
 ""
 };
         if (!performActualUpdate(updates, "1069", dbver))
@@ -1721,8 +1736,8 @@
     if (dbver == "1075")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS recordedprogram ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "recordedprogram") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  title varchar(128) NOT NULL default '',"
@@ -1732,21 +1747,21 @@
 "  category_type varchar(64) NOT NULL default '',"
 "  airdate year(4) NOT NULL default '0000',"
 "  stars float unsigned NOT NULL default '0',"
-"  previouslyshown tinyint(4) NOT NULL default '0',"
++ dbTinyInt(dbType, "previouslyshown", "4", false, false, "'0'") + ","
 "  title_pronounce varchar(128) NOT NULL default '',"
-"  stereo tinyint(1) NOT NULL default '0',"
-"  subtitled tinyint(1) NOT NULL default '0',"
-"  hdtv tinyint(1) NOT NULL default '0',"
-"  closecaptioned tinyint(1) NOT NULL default '0',"
-"  partnumber int(11) NOT NULL default '0',"
-"  parttotal int(11) NOT NULL default '0',"
++ dbTinyInt(dbType, "stereo", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "subtitled", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "hdtv", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "closecaptioned", "1", false, false, "'0'") + ","
++ dbInt(dbType, "partnumber", "11", false, false, "'0'") + ","
++ dbInt(dbType, "parttotal", "11", false, false, "'0'") + ","
 "  seriesid varchar(12) NOT NULL default '',"
 "  originalairdate date default NULL,"
 "  showtype varchar(30) NOT NULL default '',"
 "  colorcode varchar(20) NOT NULL default '',"
 "  syndicatedepisodenumber varchar(20) NOT NULL default '',"
 "  programid varchar(20) NOT NULL default '',"
-"  manualid int(10) unsigned NOT NULL default '0',"
++ dbInt(dbType, "manualid", "10", false, true, "'0'") + ","
 "  PRIMARY KEY  (chanid,starttime,manualid),"
 "  KEY endtime (endtime),"
 "  KEY title (title),"
@@ -1755,16 +1770,16 @@
 "  KEY programid (programid),"
 "  KEY id_start_end (chanid,starttime,endtime)"
 ");",
-"CREATE TABLE IF NOT EXISTS recordedcredits ("
-"  person mediumint(8) unsigned NOT NULL default '0',"
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "recordedcredits") + " (" +
+dbMedInt(dbType, "person", "8", false, true, "'0'") + ","
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  role set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL default '',"
 "  UNIQUE KEY chanid (chanid,starttime,person,role),"
 "  KEY person (person,role)"
 ");",
-"CREATE TABLE IF NOT EXISTS recordedrating ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "recordedrating") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  system char(8) NOT NULL default '',"
 "  rating char(8) NOT NULL default '',"
@@ -1835,7 +1850,7 @@
     if (dbver == "1081")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS oldfind ("
+createTable(dbType, "oldfind") + " ("
 "recordid INT NOT NULL DEFAULT 0,"
 "findid INT NOT NULL DEFAULT 0,"
 "PRIMARY KEY (recordid, findid)"
@@ -1850,7 +1865,7 @@
     if (dbver == "1082")
     {
         const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS videobookmarks ("
+createTable(dbType, "videobookmarks") + " ("
 "  filename varchar(255) NOT NULL,"
 "  bookmark varchar(128) default NULL,"
 "  PRIMARY KEY (filename)"
@@ -1911,10 +1926,10 @@
     {
         const QString updates[] = {
 "DROP TABLE IF EXISTS pidcache;",
-"CREATE TABLE IF NOT EXISTS pidcache ("
-"  chanid smallint(6) NOT NULL default '0',"
-"  pid int(11) NOT NULL default '-1',"
-"  tableid int(11) NOT NULL default '-1',"
+createTable(dbType, "pidcache") + " ("
++ dbSmallInt(dbType, "chanid", "6", false, false, "'0'") + ","
++ dbInt(dbType, "pid", "11", false, false, "'-1'") + ","
++ dbInt(dbType, "tableid", "11", false, false, "'-1'") + ","
 "  INDEX(chanid)"
 ");",
 ""
@@ -1926,25 +1941,25 @@
     if (dbver == "1086")
     {
         const QString updates[] = {
-            "CREATE TABLE IF NOT EXISTS xvmc_buffer_settings ( "
-            "  id int(11) NOT NULL auto_increment, "
+            createTable(dbType, "xvmc_buffer_settings") + " ( "
+            + dbInt(dbType, "id", "11", false, false, "", true) + ", "
             "  description varchar(255) NOT NULL default '',"
-            "  osd_num int(11) NOT NULL default '0',"
-            "  osd_res_num int(11) NOT NULL default '0',"
-            "  min_surf int(11) NOT NULL default '0',"
-            "  max_surf int(11) NOT NULL default '0',"
-            "  decode_num int(11) NOT NULL default '0',"
-            "  agressive int(11) NOT NULL default '1',"
+            + dbInt(dbType, "osd_num", "11", false, false, "'0'") + ","
+            + dbInt(dbType, "osd_res_num", "11", false, false, "'0'") + ","
+            + dbInt(dbType, "min_surf", "11", false, false, "'0'") + ","
+            + dbInt(dbType, "max_surf", "11", false, false, "'0'") + ","
+            + dbInt(dbType, "decode_num", "11", false, false, "'0'") + ","
+            + dbInt(dbType, "agressive", "11", false, false, "'1'") + ","
             "  PRIMARY KEY  (id) );",
             "INSERT INTO xvmc_buffer_settings VALUES (1,'Default / nVidia',2,2,8,16,8,1);",
             "INSERT INTO xvmc_buffer_settings VALUES (2,'VLD (More decode buffers)',2,2,8,16,16,1);",
             ""
-        }; 
-        
-        if (!performActualUpdate(updates, "1087", dbver))
+        };
+
+         if (!performActualUpdate(updates, "1087", dbver))
             return false;
-    }
-    
+     }
+
     return true;
 }
 
@@ -1969,116 +1984,116 @@
     VERBOSE(VB_ALL, "Inserting MythTV initial database information.");
 
     const QString updates[] = {
-"CREATE TABLE IF NOT EXISTS callsignnetworkmap ("
-"  id int(11) NOT NULL auto_increment,"
+createTable(dbType, "callsignnetworkmap") + " ("
++ dbInt(dbType, "id", "11", false, false, "", true) + ","
 "  callsign varchar(20) NOT NULL default '',"
 "  network varchar(20) NOT NULL default '',"
 "  PRIMARY KEY  (id),"
 "  UNIQUE KEY callsign (callsign)"
 ");",
-"CREATE TABLE IF NOT EXISTS capturecard ("
-"  cardid int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "capturecard") + " ("
++ dbInt(dbType, "cardid", "10", false, true, "", true) + ","
 "  videodevice varchar(128) default NULL,"
 "  audiodevice varchar(128) default NULL,"
 "  vbidevice varchar(128) default NULL,"
 "  cardtype varchar(32) default 'V4L',"
 "  defaultinput varchar(32) default 'Television',"
-"  audioratelimit int(11) default NULL,"
++ dbInt(dbType, "audioratelimit", "11", true, false, "NULL") + ","
 "  hostname varchar(255) default NULL,"
-"  dvb_swfilter int(11) default '0',"
-"  dvb_recordts int(11) default '1',"
-"  dvb_sat_type int(11) NOT NULL default '0',"
-"  dvb_wait_for_seqstart int(11) NOT NULL default '1',"
-"  dvb_dmx_buf_size int(11) NOT NULL default '8192',"
-"  dvb_pkt_buf_size int(11) NOT NULL default '8192',"
-"  skipbtaudio tinyint(1) default '0',"
-"  dvb_on_demand tinyint(4) NOT NULL default '0',"
++ dbInt(dbType, "dvb_swfilter", "11", true, false, "'0'") + ","
++ dbInt(dbType, "dvb_recordts", "11", true, false, "'1'") + ","
++ dbInt(dbType, "dvb_sat_type", "11", false, false, "'0'") + ","
++ dbInt(dbType, "dvb_wait_for_seqstart", "11", false, false, "'1'") + ","
++ dbInt(dbType, "dvb_dmx_buf_size", "11", false, false, "'8192'") + ","
++ dbInt(dbType, "dvb_pkt_buf_size", "11", false, false, "'8192'") + ","
++ dbTinyInt(dbType, "skipbtaudio", "1", true, false, "'0'") + ","
++ dbTinyInt(dbType, "dvb_on_demand", "4", false, false, "'0'") + ","
 "  PRIMARY KEY  (cardid)"
 ");",
-"CREATE TABLE IF NOT EXISTS cardinput ("
-"  cardinputid int(10) unsigned NOT NULL auto_increment,"
-"  cardid int(10) unsigned NOT NULL default '0',"
-"  sourceid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "cardinput") + " ("
++ dbInt(dbType, "cardinputid", "10", false, true, "", true) + ","
++ dbInt(dbType, "cardid", "10", false, true, "'0'") + ","
++ dbInt(dbType, "sourceid", "10", false, true, "'0'") + ","
 "  inputname varchar(32) NOT NULL default '',"
 "  externalcommand varchar(128) default NULL,"
-"  preference int(11) NOT NULL default '0',"
++ dbInt(dbType, "preference", "11", false, false, "'0'") + ","
 "  shareable char(1) default 'N',"
 "  tunechan varchar(5) NOT NULL default '',"
 "  startchan varchar(5) NOT NULL default '',"
 "  PRIMARY KEY  (cardinputid)"
 ");",
-"CREATE TABLE IF NOT EXISTS channel ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "channel") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  channum varchar(5) NOT NULL default '',"
 "  freqid varchar(10) default NULL,"
-"  sourceid int(10) unsigned default NULL,"
++ dbInt(dbType, "sourceid", "10", true, false, "NULL") + ","
 "  callsign varchar(20) NOT NULL default '',"
 "  name varchar(64) NOT NULL default '',"
 "  icon varchar(255) NOT NULL default 'none',"
-"  finetune int(11) default NULL,"
++ dbInt(dbType, "finetune", "11", true, false, "NULL") + ","
 "  videofilters varchar(255) NOT NULL default '',"
 "  xmltvid varchar(64) NOT NULL default '',"
-"  recpriority int(10) NOT NULL default '0',"
-"  contrast int(11) default '32768',"
-"  brightness int(11) default '32768',"
-"  colour int(11) default '32768',"
-"  hue int(11) default '32768',"
++ dbInt(dbType, "recpriority", "10", false, false, "'0'") + ","
++ dbInt(dbType, "contrast", "11", true, false, "'32768'") + ","
++ dbInt(dbType, "brightness", "11", true, false, "'32768'") + ","
++ dbInt(dbType, "colour", "11", true, false, "'32768'") + ","
++ dbInt(dbType, "hue", "11", true, false, "'32768'") + ","
 "  tvformat varchar(10) NOT NULL default 'Default',"
-"  commfree tinyint(4) NOT NULL default '0',"
-"  visible tinyint(1) NOT NULL default '1',"
++ dbTinyInt(dbType, "commfree", "4", false, false, "'0'") + ","
++ dbTinyInt(dbType, "visible", "1", false, false, "'1'") + ","
 "  outputfilters varchar(255) NOT NULL default '',"
 "  PRIMARY KEY  (chanid),"
 "  KEY channel_src (channum,sourceid)"
 ");",
-"CREATE TABLE IF NOT EXISTS codecparams ("
-"  profile int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "codecparams") + " ("
++ dbInt(dbType, "profile", "10", false, true, "'0'") + ","
 "  name varchar(128) NOT NULL default '',"
 "  value varchar(128) default NULL,"
 "  PRIMARY KEY  (profile,name)"
 ");",
-"CREATE TABLE IF NOT EXISTS conflictresolutionany ("
+createTable(dbType, "conflictresolutionany") + " ("
 "  prefertitle varchar(128) NOT NULL default '',"
 "  disliketitle varchar(128) NOT NULL default '',"
 "  KEY prefertitle (prefertitle),"
 "  KEY disliketitle (disliketitle)"
 ");",
-"CREATE TABLE IF NOT EXISTS conflictresolutionoverride ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "conflictresolutionoverride") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime timestamp(14) NOT NULL,"
 "  endtime timestamp(14) NOT NULL default '00000000000000',"
 "  KEY chanid (chanid,starttime),"
 "  KEY endtime (endtime)"
 ");",
-"CREATE TABLE IF NOT EXISTS conflictresolutionsingle ("
-"  preferchanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "conflictresolutionsingle") + " ("
++ dbInt(dbType, "preferchanid", "10", false, true, "'0'") + ","
 "  preferstarttime timestamp(14) NOT NULL,"
 "  preferendtime timestamp(14) NOT NULL default '00000000000000',"
-"  dislikechanid int(10) unsigned NOT NULL default '0',"
++ dbInt(dbType, "dislikechanid", "10", false, true, "'0'") + ","
 "  dislikestarttime timestamp(14) NOT NULL default '00000000000000',"
 "  dislikeendtime timestamp(14) NOT NULL default '00000000000000',"
 "  KEY preferchanid (preferchanid,preferstarttime),"
 "  KEY preferendtime (preferendtime)"
 ");",
-"CREATE TABLE IF NOT EXISTS credits ("
-"  person mediumint(8) unsigned NOT NULL default '0',"
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "credits") + " (" +
+dbMedInt(dbType, "person", "8", false, true, "'0'") + ","
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  role set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL default '',"
 "  UNIQUE KEY chanid (chanid,starttime,person,role),"
 "  KEY person (person,role)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_channel ("
-"  chanid smallint(6) NOT NULL default '0',"
-"  serviceid smallint(6) default NULL,"
-"  networkid smallint(6) default NULL,"
-"  providerid smallint(6) default NULL,"
-"  transportid smallint(6) default NULL,"
-"  frequency int(11) default NULL,"
+createTable(dbType, "dvb_channel") + " ("
++ dbSmallInt(dbType, "chanid", "6", false, false, "'0'") + ","
++ dbSmallInt(dbType, "serviceid", "6", true, false, "NULL") + ","
++ dbSmallInt(dbType, "networkid", "6", true, false, "NULL") + ","
++ dbSmallInt(dbType, "providerid", "6", true, false, "NULL") + ","
++ dbSmallInt(dbType, "transportid", "6", true, false, "NULL") + ","
++ dbInt(dbType, "frequency", "11", true, false, "NULL") + ","
 "  inversion char(1) default NULL,"
-"  symbolrate int(11) default NULL,"
++ dbInt(dbType, "symbolrate", "11", true, false, "NULL") + ","
 "  fec varchar(10) default NULL,"
 "  polarity char(1) default NULL,"
-"  satid smallint(6) default NULL,"
++ dbSmallInt(dbType, "satid", "6", true, false, "NULL") + ","
 "  modulation varchar(10) default NULL,"
 "  bandwidth char(1) default NULL,"
 "  lp_code_rate varchar(10) default NULL,"
@@ -2088,60 +2103,60 @@
 "  pmtcache blob,"
 "  PRIMARY KEY  (chanid)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_pids ("
-"  chanid smallint(6) NOT NULL default '0',"
-"  pid smallint(6) NOT NULL default '0',"
+createTable(dbType, "dvb_pids") + " ("
++ dbSmallInt(dbType, "chanid", "6", false, false, "'0'") + ","
++ dbSmallInt(dbType, "pid", "6", false, false, "'0'") + ","
 "  type char(1) NOT NULL default 'o',"
 "  lang char(3) NOT NULL default '',"
 "  PRIMARY KEY  (chanid,pid)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_sat ("
-"  satid smallint(6) NOT NULL auto_increment,"
-"  cardid int(11) default NULL,"
+createTable(dbType, "dvb_sat") + " ("
++ dbSmallInt(dbType, "satid", "6", false, false, "", true) + ","
++ dbInt(dbType, "cardid", "11", true, false, "NULL") + ","
 "  pos float default NULL,"
 "  name varchar(128) default NULL,"
-"  diseqc_type smallint(6) default '0',"
-"  diseqc_port smallint(6) default '0',"
-"  diseqc_pos smallint(6) default '0',"
-"  lnb_lof_switch int(11) default '11700000',"
-"  lnb_lof_hi int(11) default '10600000',"
-"  lnb_lof_lo int(11) default '9750000',"
++ dbSmallInt(dbType, "diseqc_type", "6", true, false, "'0'") + ","
++ dbSmallInt(dbType, "diseqc_port", "6", true, false, "'0'") + ","
++ dbSmallInt(dbType, "diseqc_pos", "6", true, false, "'0'") + ","
++ dbInt(dbType, "lnb_lof_switch", "11", true, false, "'11700000'") + ","
++ dbInt(dbType, "lnb_lof_hi", "11", true, false, "'10600000'") + ","
++ dbInt(dbType, "lnb_lof_lo", "11", true, false, "'9750000'") + ","
 "  PRIMARY KEY  (satid)"
 ");",
-"CREATE TABLE IF NOT EXISTS dvb_signal_quality ("
-"  id int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "dvb_signal_quality") + " ("
++ dbInt(dbType, "id", "10", false, true, "", true) + ","
 "  sampletime timestamp(14) NOT NULL,"
-"  cardid int(10) unsigned NOT NULL default '0',"
-"  fe_snr int(10) unsigned NOT NULL default '0',"
-"  fe_ss int(10) unsigned NOT NULL default '0',"
-"  fe_ber int(10) unsigned NOT NULL default '0',"
-"  fe_unc int(10) unsigned NOT NULL default '0',"
-"  myth_cont int(10) unsigned NOT NULL default '0',"
-"  myth_over int(10) unsigned NOT NULL default '0',"
-"  myth_pkts int(10) unsigned NOT NULL default '0',"
++ dbInt(dbType, "cardid", "10", false, true, "'0'") + ","
++ dbInt(dbType, "fe_snr", "10", false, true, "'0'") + ","
++ dbInt(dbType, "fe_ss", "10", false, true, "'0'") + ","
++ dbInt(dbType, "fe_ber", "10", false, true, "'0'") + ","
++ dbInt(dbType, "fe_unc", "10", false, true, "'0'") + ","
++ dbInt(dbType, "myth_cont", "10", false, true, "'0'") + ","
++ dbInt(dbType, "myth_over", "10", false, true, "'0'") + ","
++ dbInt(dbType, "myth_pkts", "10", false, true, "'0'") + ","
 "  PRIMARY KEY  (id),"
 "  KEY sampletime (sampletime,cardid)"
 ");",
-"CREATE TABLE IF NOT EXISTS favorites ("
-"  favid int(11) unsigned NOT NULL auto_increment,"
-"  userid int(11) unsigned NOT NULL default '0',"
-"  chanid int(11) unsigned NOT NULL default '0',"
+createTable(dbType, "favorites") + " ("
++ dbInt(dbType, "favid", "11", false, true, "", true) + ","
++ dbInt(dbType, "userid", "11", false, true, "'0'") + ","
++ dbInt(dbType, "chanid", "11", false, true, "'0'") + ","
 "  PRIMARY KEY  (favid)"
 ");",
-"CREATE TABLE IF NOT EXISTS housekeeping ("
+createTable(dbType, "housekeeping") + " ("
 "  tag varchar(64) NOT NULL default '',"
 "  lastrun datetime default NULL,"
 "  PRIMARY KEY  (tag)"
 ");",
-"CREATE TABLE IF NOT EXISTS jobqueue ("
-"  id int(11) NOT NULL auto_increment,"
-"  chanid int(10) NOT NULL default '0',"
+createTable(dbType, "jobqueue") + " ("
++ dbInt(dbType, "id", "11", false, false, "", true) + ","
++ dbInt(dbType, "chanid", "10", false, false, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  inserttime datetime NOT NULL default '0000-00-00 00:00:00',"
-"  type int(11) NOT NULL default '0',"
-"  cmds int(11) NOT NULL default '0',"
-"  flags int(11) NOT NULL default '0',"
-"  status int(11) NOT NULL default '0',"
++ dbInt(dbType, "type", "11", false, false, "'0'") + ","
++ dbInt(dbType, "cmds", "11", false, false, "'0'") + ","
++ dbInt(dbType, "flags", "11", false, false, "'0'") + ","
++ dbInt(dbType, "status", "11", false, false, "'0'") + ","
 "  statustime timestamp(14) NOT NULL,"
 "  hostname varchar(255) NOT NULL default '',"
 "  args blob NOT NULL,"
@@ -2149,14 +2164,14 @@
 "  PRIMARY KEY  (id),"
 "  UNIQUE KEY chanid (chanid,starttime,type,inserttime)"
 ");",
-"CREATE TABLE IF NOT EXISTS jumppoints ("
+createTable(dbType, "jumppoints") + " ("
 "  destination varchar(128) NOT NULL default '',"
 "  description varchar(255) default NULL,"
 "  keylist varchar(32) default NULL,"
 "  hostname varchar(255) NOT NULL default '',"
 "  PRIMARY KEY  (destination,hostname)"
 ");",
-"CREATE TABLE IF NOT EXISTS keybindings ("
+createTable(dbType, "keybindings") + " ("
 "  context varchar(32) NOT NULL default '',"
 "  action varchar(32) NOT NULL default '',"
 "  description varchar(255) default NULL,"
@@ -2164,36 +2179,36 @@
 "  hostname varchar(255) NOT NULL default '',"
 "  PRIMARY KEY  (context,action,hostname)"
 ");",
-"CREATE TABLE IF NOT EXISTS keyword ("
+createTable(dbType, "keyword") + " ("
 "  phrase varchar(128) NOT NULL default '',"
-"  searchtype int(10) unsigned NOT NULL default '3',"
++ dbInt(dbType, "searchtype", "10", false, true, "'3'") + ","
 "  UNIQUE KEY phrase (phrase,searchtype)"
 ");",
-"CREATE TABLE IF NOT EXISTS mythlog ("
-"  logid int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "mythlog") + " ("
++ dbInt(dbType, "logid", "10", false, true, "", true) + ","
 "  module varchar(32) NOT NULL default '',"
-"  priority int(11) NOT NULL default '0',"
-"  acknowledged tinyint(1) default '0',"
++ dbInt(dbType, "priority", "11", false, false, "'0'") + ","
++ dbTinyInt(dbType, "acknowledged", "1", true, false, "'0'") + ","
 "  logdate datetime default NULL,"
 "  host varchar(128) default NULL,"
 "  message varchar(255) NOT NULL default '',"
 "  details text,"
 "  PRIMARY KEY  (logid)"
 ");",
-"CREATE TABLE IF NOT EXISTS networkiconmap ("
-"  id int(11) NOT NULL auto_increment,"
+createTable(dbType, "networkiconmap") + " ("
++ dbInt(dbType, "id", "11", false, false, "", true) + ","
 "  network varchar(20) NOT NULL default '',"
 "  url varchar(255) NOT NULL default '',"
 "  PRIMARY KEY  (id),"
 "  UNIQUE KEY network (network)"
 ");",
-"CREATE TABLE IF NOT EXISTS oldprogram ("
+createTable(dbType, "oldprogram") + " ("
 "  oldtitle varchar(128) NOT NULL default '',"
 "  airdate datetime NOT NULL default '0000-00-00 00:00:00',"
 "  PRIMARY KEY  (oldtitle)"
 ");",
-"CREATE TABLE IF NOT EXISTS oldrecorded ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "oldrecorded") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  title varchar(128) NOT NULL default '',"
@@ -2208,23 +2223,23 @@
 "  KEY seriesid (seriesid),"
 "  KEY programid (programid)"
 ");",
-"CREATE TABLE IF NOT EXISTS people ("
-"  person mediumint(8) unsigned NOT NULL auto_increment,"
+createTable(dbType, "people") + " (" +
+dbMedInt(dbType, "person", "8", false, true, "", true) + ","
 "  name char(128) NOT NULL default '',"
 "  PRIMARY KEY  (person),"
 "  UNIQUE KEY name (name(41))"
 ");",
-"CREATE TABLE IF NOT EXISTS profilegroups ("
-"  id int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "profilegroups") + " ("
++ dbInt(dbType, "id", "10", false, true, "", true) + ","
 "  name varchar(128) default NULL,"
 "  cardtype varchar(32) NOT NULL default 'V4L',"
-"  is_default int(1) default '0',"
++ dbInt(dbType, "is_default", "1", true, false, "'0'") + ","
 "  hostname varchar(255) default NULL,"
 "  PRIMARY KEY  (id),"
 "  UNIQUE KEY name (name,hostname)"
 ");",
-"CREATE TABLE IF NOT EXISTS program ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "program") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  title varchar(128) NOT NULL default '',"
@@ -2234,14 +2249,14 @@
 "  category_type varchar(64) NOT NULL default '',"
 "  airdate year(4) NOT NULL default '0000',"
 "  stars float NOT NULL default '0',"
-"  previouslyshown tinyint(4) NOT NULL default '0',"
++ dbTinyInt(dbType, "previouslyshown", "4", false, false, "'0'") + ","
 "  title_pronounce varchar(128) NOT NULL default '',"
-"  stereo tinyint(1) default NULL,"
-"  subtitled tinyint(1) default NULL,"
-"  hdtv tinyint(1) default NULL,"
-"  closecaptioned tinyint(1) default NULL,"
-"  partnumber int(11) default NULL,"
-"  parttotal int(11) default NULL,"
++ dbTinyInt(dbType, "stereo", "1", true, false, "NULL") + ","
++ dbTinyInt(dbType, "subtitled", "1", true, false, "NULL") + ","
++ dbTinyInt(dbType, "hdtv", "1", true, false, "NULL") + ","
++ dbTinyInt(dbType, "closecaptioned", "1", true, false, "NULL") + ","
++ dbInt(dbType, "partnumber", "11", true, false, "NULL") + ","
++ dbInt(dbType, "parttotal", "11", true, false, "NULL") + ","
 "  seriesid varchar(12) NOT NULL default '',"
 "  originalairdate date default NULL,"
 "  showtype varchar(30) NOT NULL default '',"
@@ -2256,31 +2271,31 @@
 "  KEY programid (programid),"
 "  KEY id_start_end (chanid,starttime,endtime)"
 ");",
-"CREATE TABLE IF NOT EXISTS programgenres ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "programgenres") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  relevance char(1) NOT NULL default '',"
 "  genre char(30) default NULL,"
 "  PRIMARY KEY  (chanid,starttime,relevance)"
 ");",
-"CREATE TABLE IF NOT EXISTS programrating ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "programrating") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  system char(8) NOT NULL default '',"
 "  rating char(8) NOT NULL default '',"
 "  UNIQUE KEY chanid (chanid,starttime,system,rating),"
 "  KEY starttime (starttime,system)"
 ");",
-"CREATE TABLE IF NOT EXISTS recgrouppassword ("
+createTable(dbType, "recgrouppassword") + " ("
 "  recgroup varchar(32) NOT NULL default '',"
 "  password varchar(10) NOT NULL default '',"
 "  PRIMARY KEY  (recgroup),"
 "  UNIQUE KEY recgroup (recgroup)"
 ");",
-"CREATE TABLE IF NOT EXISTS record ("
-"  recordid int(10) unsigned NOT NULL auto_increment,"
-"  type int(10) unsigned NOT NULL default '0',"
-"  chanid int(10) unsigned default NULL,"
+createTable(dbType, "record") + " ("
++ dbInt(dbType, "recordid", "10", false, true, "", true) + ","
++ dbInt(dbType, "type", "10", false, true, "'0'") + ","
++ dbInt(dbType, "chanid", "10", true, true, "NULL") + ","
 "  starttime time NOT NULL default '00:00:00',"
 "  startdate date NOT NULL default '0000-00-00',"
 "  endtime time NOT NULL default '00:00:00',"
@@ -2290,33 +2305,33 @@
 "  description text NOT NULL,"
 "  category varchar(64) NOT NULL default '',"
 "  profile varchar(128) NOT NULL default 'Default',"
-"  recpriority int(10) NOT NULL default '0',"
-"  autoexpire int(11) NOT NULL default '0',"
-"  maxepisodes int(11) NOT NULL default '0',"
-"  maxnewest int(11) NOT NULL default '0',"
-"  startoffset int(11) NOT NULL default '0',"
-"  endoffset int(11) NOT NULL default '0',"
++ dbInt(dbType, "recpriority", "10", false, false, "'0'") + ","
++ dbInt(dbType, "autoexpire", "11", false, false, "'0'") + ","
++ dbInt(dbType, "maxepisodes", "11", false, false, "'0'") + ","
++ dbInt(dbType, "maxnewest", "11", false, false, "'0'") + ","
++ dbInt(dbType, "startoffset", "11", false, false, "'0'") + ","
++ dbInt(dbType, "endoffset", "11", false, false, "'0'") + ","
 "  recgroup varchar(32) NOT NULL default 'Default',"
-"  dupmethod int(11) NOT NULL default '6',"
-"  dupin int(11) NOT NULL default '15',"
++ dbInt(dbType, "dupmethod", "11", false, false, "'6'") + ","
++ dbInt(dbType, "dupin", "11", false, false, "'15'") + ","
 "  station varchar(20) NOT NULL default '',"
 "  seriesid varchar(12) NOT NULL default '',"
 "  programid varchar(12) NOT NULL default '',"
-"  search int(10) unsigned NOT NULL default '0',"
-"  autotranscode tinyint(1) NOT NULL default '0',"
-"  autocommflag tinyint(1) NOT NULL default '0',"
-"  autouserjob1 tinyint(1) NOT NULL default '0',"
-"  autouserjob2 tinyint(1) NOT NULL default '0',"
-"  autouserjob3 tinyint(1) NOT NULL default '0',"
-"  autouserjob4 tinyint(1) NOT NULL default '0',"
++ dbInt(dbType, "search", "10", false, true, "'0'") + ","
++ dbTinyInt(dbType, "autotranscode", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "autocommflag", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "autouserjob1", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "autouserjob2", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "autouserjob3", "1", false, false, "'0'") + ","
++ dbTinyInt(dbType, "autouserjob4", "1", false, false, "'0'") + ","
 "  PRIMARY KEY  (recordid),"
 "  KEY chanid (chanid,starttime),"
 "  KEY title (title),"
 "  KEY seriesid (seriesid),"
 "  KEY programid (programid)"
 ");",
-"CREATE TABLE IF NOT EXISTS recorded ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "recorded") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  title varchar(128) NOT NULL default '',"
@@ -2325,45 +2340,45 @@
 "  category varchar(64) NOT NULL default '',"
 "  hostname varchar(255) NOT NULL default '',"
 "  bookmark varchar(128) default NULL,"
-"  editing int(10) unsigned NOT NULL default '0',"
++ dbInt(dbType, "editing", "10", false, true, "'0'") + ","
 "  cutlist text,"
-"  autoexpire int(11) NOT NULL default '0',"
-"  commflagged int(10) unsigned NOT NULL default '0',"
++ dbInt(dbType, "autoexpire", "11", false, false, "'0'") + ","
++ dbInt(dbType, "commflagged", "10", false, true, "'0'") + ","
 "  recgroup varchar(32) NOT NULL default 'Default',"
-"  recordid int(11) default NULL,"
++ dbInt(dbType, "recordid", "11", true, false, "NULL") + ","
 "  seriesid varchar(12) NOT NULL default '',"
 "  programid varchar(12) NOT NULL default '',"
 "  lastmodified timestamp(14) NOT NULL,"
-"  filesize bigint(20) NOT NULL default '0',"
+ + dbBigInt(dbType, "filesize", "20", false, false, "'0'") + ","
 "  stars float NOT NULL default '0',"
-"  previouslyshown tinyint(1) default '0',"
++ dbTinyInt(dbType, "previouslyshown", "1", true, false, "'0'") + ","
 "  originalairdate date default NULL,"
-"  preserve tinyint(1) NOT NULL default '0',"
++ dbTinyInt(dbType, "preserve", "1", false, false, "'0'") + ","
 "  PRIMARY KEY  (chanid,starttime),"
 "  KEY endtime (endtime),"
 "  KEY seriesid (seriesid),"
 "  KEY programid (programid)"
 ");",
-"CREATE TABLE IF NOT EXISTS recordedmarkup ("
-"  chanid int(10) unsigned NOT NULL default '0',"
+createTable(dbType, "recordedmarkup") + " ("
++ dbInt(dbType, "chanid", "10", false, true, "'0'") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
-"  mark bigint(20) NOT NULL default '0',"
++ dbBigInt(dbType, "mark", "20", false, false, "'0'") + ","
 "  offset varchar(32) default NULL,"
-"  type int(11) NOT NULL default '0',"
++ dbInt(dbType, "type", "11", false, false, "'0'") + ","
 "  PRIMARY KEY  (chanid,starttime,mark,type)"
 ");",
-"CREATE TABLE IF NOT EXISTS recordingprofiles ("
-"  id int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "recordingprofiles") + " ("
++ dbInt(dbType, "id", "10", false, true, "", true) + ","
 "  name varchar(128) default NULL,"
 "  videocodec varchar(128) default NULL,"
 "  audiocodec varchar(128) default NULL,"
-"  profilegroup int(10) unsigned NOT NULL default '0',"
++ dbInt(dbType, "profilegroup", "10", false, true, "'0'") + ","
 "  PRIMARY KEY  (id)"
 ");",
-"CREATE TABLE IF NOT EXISTS recordoverride ("
-"  recordid int(10) unsigned NOT NULL default '0',"
-"  type int(10) unsigned NOT NULL default '0',"
-"  chanid int(10) unsigned default NULL,"
+createTable(dbType, "recordoverride") + " ("
++ dbInt(dbType, "recordid", "10", false, true, "'0'") + ","
++ dbInt(dbType, "type", "10", false, true, "'0'") + ","
++ dbInt(dbType, "chanid", "10", true, true, "NULL") + ","
 "  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  endtime datetime NOT NULL default '0000-00-00 00:00:00',"
 "  title varchar(128) default NULL,"
@@ -2371,14 +2386,14 @@
 "  description text,"
 "  station varchar(20) NOT NULL default ''"
 ");",
-"CREATE TABLE IF NOT EXISTS settings ("
+createTable(dbType, "settings") + " ("
 "  value varchar(128) NOT NULL default '',"
 "  data text,"
 "  hostname varchar(255) default NULL,"
 "  KEY value (value,hostname)"
 ");",
-"CREATE TABLE IF NOT EXISTS videosource ("
-"  sourceid int(10) unsigned NOT NULL auto_increment,"
+createTable(dbType, "videosource") + " ("
++ dbInt(dbType, "sourceid", "10", false, true, "", true) + ","
 "  name varchar(128) NOT NULL default '',"
 "  xmltvgrabber varchar(128) default NULL,"
 "  userid varchar(128) NOT NULL default '',"
@@ -2431,3 +2446,183 @@
     return true;
 }
 
+static QString createTable(const QString &dbType, const QString &tableName)
+{
+   if (dbType.left(6) == "QMYSQL")
+      return QString("CREATE TABLE IF NOT EXISTS " + tableName);
+   return QString("CREATE TABLE " + tableName);
+}
+
+static QString dbInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
+{
+      QString retval = colName;
+
+   if (dbType.left(6) == "QMYSQL") {
+      retval += " int";
+      if (width.length() > 0)
+         retval += "(" + width + ")";
+      if (unsignedCol)
+         retval += " unsigned";
+      if (!nullable)
+         retval += " NOT NULL";
+      if (auto_num)
+         retval += " auto_increment";
+      else if (defaultVal.length() > 0)
+         retval += " default " + defaultVal;
+   }
+   else {
+      if (auto_num)
+         retval += " SERIAL";
+      else {
+         retval += " INT4";
+         if (!nullable)
+            retval += " NOT NULL";
+         if (defaultVal.length() > 0)
+            retval += " default " + defaultVal;
+         if (unsignedCol)
+            retval += ", check(" + colName + " >= 0)";
+      }
+   }
+   
+   return retval;
+}
+
+
+static QString dbTinyInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
+{
+      QString retval = colName;
+
+   if (dbType.left(6) == "QMYSQL") {
+      retval += " tinyint";
+      if (width.length() > 0)
+         retval += "(" + width + ")";
+      if (unsignedCol)
+         retval += " unsigned";
+      if (!nullable)
+         retval += " NOT NULL";
+      if (auto_num)
+         retval += " auto_increment";
+      else if (defaultVal.length() > 0)
+         retval += " default " + defaultVal;
+   }
+   else {
+      if (auto_num)
+         retval += " SERIAL";
+      else {
+         retval += " INT2";
+         if (!nullable)
+            retval += " NOT NULL";
+         if (defaultVal.length() > 0)
+            retval += " default " + defaultVal;
+         if (unsignedCol)
+            retval += ", check(" + colName + " >= 0)";
+      }
+   }
+   
+   return retval;
+}
+
+
+static QString dbBigInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
+{
+      QString retval = colName;
+
+   if (dbType.left(6) == "QMYSQL") {
+      retval += " bigint";
+      if (width.length() > 0)
+         retval += "(" + width + ")";
+      if (unsignedCol)
+         retval += " unsigned";
+      if (!nullable)
+         retval += " NOT NULL";
+      if (auto_num)
+         retval += " auto_increment";
+      else if (defaultVal.length() > 0)
+         retval += " default " + defaultVal;
+   }
+   else {
+      if (auto_num)
+         retval += " SERIAL";
+      else {
+         retval += " INT8";
+         if (!nullable)
+            retval += " NOT NULL";
+         if (defaultVal.length() > 0)
+            retval += " default " + defaultVal;
+         if (unsignedCol)
+            retval += ", check(" + colName + " >= 0)";
+      }
+   }
+   
+   return retval;
+}
+
+
+static QString dbSmallInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
+{
+      QString retval = colName;
+
+   if (dbType.left(6) == "QMYSQL") {
+      retval += " smallint";
+      if (width.length() > 0)
+         retval += "(" + width + ")";
+      if (unsignedCol)
+         retval += " unsigned";
+      if (!nullable)
+         retval += " NOT NULL";
+      if (auto_num)
+         retval += " auto_increment";
+      else if (defaultVal.length() > 0)
+         retval += " default " + defaultVal;
+   }
+   else {
+      if (auto_num)
+         retval += " SERIAL";
+      else {
+         retval += " INT2";
+         if (!nullable)
+            retval += " NOT NULL";
+         if (defaultVal.length() > 0)
+            retval += " default " + defaultVal;
+         if (unsignedCol)
+            retval += ", check(" + colName + " >= 0)";
+      }
+   }
+   
+   return retval;
+}
+
+
+static QString dbMedInt(const QString &dbType, const QString &colName, const QString &width, bool nullable, bool unsignedCol, const QString &defaultVal, bool auto_num)
+{
+   QString retval = colName;
+
+   if (dbType.left(6) == "QMYSQL") {
+      retval += " mediumint";
+      if (width.length() > 0)
+         retval += "(" + width + ")";
+      if (unsignedCol)
+         retval += " unsigned";
+      if (!nullable)
+         retval += " NOT NULL";
+      if (auto_num)
+         retval += " auto_increment";
+      else if (defaultVal.length() > 0)
+         retval += " default " + defaultVal;
+   }
+   else {
+      if (auto_num)
+         retval += " SERIAL";
+      else {
+         retval += " INT4";
+         if (!nullable)
+            retval += " NOT NULL";
+         if (defaultVal.length() > 0)
+            retval += " default " + defaultVal;
+         if (unsignedCol)
+            retval += ", check(" + colName + " >= 0)";
+      }
+   }
+   
+   return retval;
+}
