From ff0a07acc6c39b4b51915ec56bcf3639348a6203 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Mon, 28 Apr 2025 13:59:59 -0400 Subject: [PATCH] 2025-04-28 Fred Gleason * Modified orphaned table checking to use 'QRegularExpression' in rddbmgr(8). Signed-off-by: Fred Gleason --- ChangeLog | 3 + utils/rddbmgr/analyze.cpp | 2 - utils/rddbmgr/check.cpp | 398 +----------------------------------- utils/rddbmgr/rddbmgr.h | 2 +- utils/rddbmgr/schemamap.cpp | 391 +++++++++++++++++++++++++++++++++++ 5 files changed, 399 insertions(+), 397 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94151afa..264dd816 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25052,3 +25052,6 @@ * Modified validator for new scheduler codes to use 'QRegularExpressionValidator' in the 'Add Scheduler Code' dialog in rdadmin(1). +2025-04-28 Fred Gleason + * Modified orphaned table checking to use 'QRegularExpression' in + rddbmgr(8). diff --git a/utils/rddbmgr/analyze.cpp b/utils/rddbmgr/analyze.cpp index d6b2ed2c..d2ea014f 100644 --- a/utils/rddbmgr/analyze.cpp +++ b/utils/rddbmgr/analyze.cpp @@ -22,8 +22,6 @@ #include #include -//#include - #include #include #include diff --git a/utils/rddbmgr/check.cpp b/utils/rddbmgr/check.cpp index d94376c5..63d7c51e 100644 --- a/utils/rddbmgr/check.cpp +++ b/utils/rddbmgr/check.cpp @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -936,13 +937,9 @@ bool MainObject::CheckTableNames(const QStringList &canonical, for(int i=0;i=0) { - found=true; - } - */ + QRegularExpression exp(canonical.at(j)); + QRegularExpressionMatch match=exp.match(existing.at(i)); + found=found||match.hasMatch()||match.hasPartialMatch(); } if(!found) { extra.push_back(existing.at(i)); @@ -952,393 +949,6 @@ bool MainObject::CheckTableNames(const QStringList &canonical, } -QStringList MainObject::GetCanonicalTables(int schema) const -{ - QStringList tables; - - switch(schema) { - case 275: // v2.19.x - tables.push_back("AUDIO_PERMS"); - tables.push_back("AUDIO_PORTS"); - tables.push_back("AUTOFILLS"); - tables.push_back("AUX_METADATA"); - tables.push_back("CART"); - tables.push_back("CARTSLOTS"); - tables.push_back("CLIPBOARD"); - tables.push_back("CLOCKS"); - tables.push_back("CLOCK_PERMS"); - tables.push_back("CUTS"); - tables.push_back("CUT_EVENTS"); - tables.push_back("DECKS"); - tables.push_back("DECK_EVENTS"); - tables.push_back("DROPBOXES"); - tables.push_back("DROPBOX_PATHS"); - tables.push_back("DROPBOX_SCHED_CODES"); - tables.push_back("ENCODER_CHANNELS"); - tables.push_back("ENCODER_BITRATES"); - tables.push_back("ENCODER_SAMPLERATES"); - tables.push_back("ENCODERS"); - tables.push_back("EVENTS"); - tables.push_back("EVENT_PERMS"); - tables.push_back("EXTENDED_PANELS"); - tables.push_back("EXTENDED_PANEL_NAMES"); - tables.push_back("FEEDS"); - tables.push_back("FEED_PERMS"); - tables.push_back("GPIO_EVENTS"); - tables.push_back("GPIS"); - tables.push_back("GPOS"); - tables.push_back("GROUPS"); - tables.push_back("HOSTVARS"); - tables.push_back("IMPORT_TEMPLATES"); - tables.push_back("INPUTS"); - tables.push_back("ISCI_XREFERENCE"); - tables.push_back("JACK_CLIENTS"); - tables.push_back("LIVEWIRE_GPIO_SLOTS"); - tables.push_back("LOGS"); - tables.push_back("LOGS"); - tables.push_back("LOG_MODES"); - tables.push_back("MATRICES"); - tables.push_back("OUTPUTS"); - tables.push_back("NOWNEXT_PLUGINS"); - tables.push_back("PANELS"); - tables.push_back("PANEL_NAMES"); - tables.push_back("PODCASTS"); - tables.push_back("RDAIRPLAY"); - tables.push_back("RDAIRPLAY_CHANNELS"); - tables.push_back("RDCATCH"); - tables.push_back("RDHOTKEYS"); - tables.push_back("RDLIBRARY"); - tables.push_back("RDLOGEDIT"); - tables.push_back("RDPANEL"); - tables.push_back("RDPANEL_CHANNELS"); - tables.push_back("RECORDINGS"); - tables.push_back("REPLICATORS"); - tables.push_back("REPLICATOR_MAP"); - tables.push_back("REPL_CART_STATE"); - tables.push_back("REPL_CUT_STATE"); - tables.push_back("REPORTS"); - tables.push_back("REPORT_GROUPS"); - tables.push_back("REPORT_SERVICES"); - tables.push_back("REPORT_STATIONS"); - tables.push_back("SCHED_CODES"); - tables.push_back("SERVICES"); - tables.push_back("SERVICE_CLOCKS"); - tables.push_back("SERVICE_PERMS"); - tables.push_back("STATIONS"); - tables.push_back("SWITCHER_NODES"); - tables.push_back("SYSTEM"); - tables.push_back("TRIGGERS"); - tables.push_back("TTYS"); - tables.push_back("USERS"); - tables.push_back("USER_PERMS"); - tables.push_back("USER_SERVICE_PERMS"); - tables.push_back("VERSION"); - tables.push_back("VGUEST_RESOURCES"); - tables.push_back("WEBAPI_AUTHS"); - tables.push_back("WEB_CONNECTIONS"); - tables.push_back("*_CLK"); - tables.push_back("*_FLG"); - tables.push_back("*_LOG"); - tables.push_back("*_PRE"); - tables.push_back("*_POST"); - tables.push_back("*_RULES"); - tables.push_back("*_SRT"); - tables.push_back("*_STACK"); - break; - - case 308: // v3.0.x - tables.push_back("AUDIO_CARDS"); - tables.push_back("AUDIO_INPUTS"); - tables.push_back("AUDIO_OUTPUTS"); - tables.push_back("AUDIO_PERMS"); - tables.push_back("AUTOFILLS"); - tables.push_back("AUX_METADATA"); - tables.push_back("CART"); - tables.push_back("CARTSLOTS"); - tables.push_back("CART_SCHED_CODES"); - tables.push_back("CAST_DOWNLOADS"); - tables.push_back("CLIPBOARD"); - tables.push_back("CLOCKS"); - tables.push_back("CLOCK_LINES"); - tables.push_back("CLOCK_PERMS"); - tables.push_back("CUTS"); - tables.push_back("CUT_EVENTS"); - tables.push_back("DECKS"); - tables.push_back("DECK_EVENTS"); - tables.push_back("DROPBOXES"); - tables.push_back("DROPBOX_PATHS"); - tables.push_back("DROPBOX_SCHED_CODES"); - tables.push_back("ELR_LINES"); - tables.push_back("ENCODER_CHANNELS"); - tables.push_back("ENCODER_BITRATES"); - tables.push_back("ENCODER_SAMPLERATES"); - tables.push_back("ENCODERS"); - tables.push_back("EVENTS"); - tables.push_back("EVENT_LINES"); - tables.push_back("EVENT_PERMS"); - tables.push_back("EXTENDED_PANELS"); - tables.push_back("EXTENDED_PANEL_NAMES"); - tables.push_back("FEEDS"); - tables.push_back("FEED_PERMS"); - tables.push_back("GPIO_EVENTS"); - tables.push_back("GPIS"); - tables.push_back("GPOS"); - tables.push_back("GROUPS"); - tables.push_back("HOSTVARS"); - tables.push_back("IMPORTER_LINES"); - tables.push_back("IMPORT_TEMPLATES"); - tables.push_back("INPUTS"); - tables.push_back("ISCI_XREFERENCE"); - tables.push_back("JACK_CLIENTS"); - tables.push_back("LIVEWIRE_GPIO_SLOTS"); - tables.push_back("LOGS"); - tables.push_back("LOGS"); - tables.push_back("LOG_LINES"); - tables.push_back("LOG_MACHINES"); - tables.push_back("LOG_MODES"); - tables.push_back("MATRICES"); - tables.push_back("OUTPUTS"); - tables.push_back("PANELS"); - tables.push_back("PANEL_NAMES"); - tables.push_back("PODCASTS"); - tables.push_back("PYPAD_INSTANCES"); - tables.push_back("RDAIRPLAY"); - tables.push_back("RDAIRPLAY_CHANNELS"); - tables.push_back("RDCATCH"); - tables.push_back("RDHOTKEYS"); - tables.push_back("RDLIBRARY"); - tables.push_back("RDLOGEDIT"); - tables.push_back("RDPANEL"); - tables.push_back("RDPANEL_CHANNELS"); - tables.push_back("RECORDINGS"); - tables.push_back("REPLICATORS"); - tables.push_back("REPLICATOR_MAP"); - tables.push_back("REPL_CART_STATE"); - tables.push_back("REPL_CUT_STATE"); - tables.push_back("REPORTS"); - tables.push_back("REPORT_GROUPS"); - tables.push_back("REPORT_SERVICES"); - tables.push_back("REPORT_STATIONS"); - tables.push_back("RULE_LINES"); - tables.push_back("SCHED_CODES"); - tables.push_back("SERVICES"); - tables.push_back("SERVICE_CLOCKS"); - tables.push_back("SERVICE_PERMS"); - tables.push_back("STACK_LINES"); - tables.push_back("STACK_SCHED_CODES"); - tables.push_back("STATIONS"); - tables.push_back("SWITCHER_NODES"); - tables.push_back("SYSTEM"); - tables.push_back("TRIGGERS"); - tables.push_back("TTYS"); - tables.push_back("USERS"); - tables.push_back("USER_PERMS"); - tables.push_back("USER_SERVICE_PERMS"); - tables.push_back("VERSION"); - tables.push_back("VGUEST_RESOURCES"); - tables.push_back("WEBAPI_AUTHS"); - tables.push_back("WEB_CONNECTIONS"); - break; - - case 310: // v3.1.x - tables.push_back("AUDIO_CARDS"); - tables.push_back("AUDIO_INPUTS"); - tables.push_back("AUDIO_OUTPUTS"); - tables.push_back("AUDIO_PERMS"); - tables.push_back("AUTOFILLS"); - tables.push_back("AUX_METADATA"); - tables.push_back("CART"); - tables.push_back("CARTSLOTS"); - tables.push_back("CART_SCHED_CODES"); - tables.push_back("CAST_DOWNLOADS"); - tables.push_back("CLIPBOARD"); - tables.push_back("CLOCKS"); - tables.push_back("CLOCK_LINES"); - tables.push_back("CLOCK_PERMS"); - tables.push_back("CUTS"); - tables.push_back("CUT_EVENTS"); - tables.push_back("DECKS"); - tables.push_back("DECK_EVENTS"); - tables.push_back("DROPBOXES"); - tables.push_back("DROPBOX_PATHS"); - tables.push_back("DROPBOX_SCHED_CODES"); - tables.push_back("ELR_LINES"); - tables.push_back("ENCODER_CHANNELS"); - tables.push_back("ENCODER_BITRATES"); - tables.push_back("ENCODER_SAMPLERATES"); - tables.push_back("ENCODERS"); - tables.push_back("EVENTS"); - tables.push_back("EVENT_LINES"); - tables.push_back("EVENT_PERMS"); - tables.push_back("EXTENDED_PANELS"); - tables.push_back("EXTENDED_PANEL_NAMES"); - tables.push_back("FEEDS"); - tables.push_back("FEED_PERMS"); - tables.push_back("GPIO_EVENTS"); - tables.push_back("GPIS"); - tables.push_back("GPOS"); - tables.push_back("GROUPS"); - tables.push_back("HOSTVARS"); - tables.push_back("IMPORTER_LINES"); - tables.push_back("IMPORT_TEMPLATES"); - tables.push_back("INPUTS"); - tables.push_back("ISCI_XREFERENCE"); - tables.push_back("JACK_CLIENTS"); - tables.push_back("LIVEWIRE_GPIO_SLOTS"); - tables.push_back("LOGS"); - tables.push_back("LOGS"); - tables.push_back("LOG_LINES"); - tables.push_back("LOG_MACHINES"); - tables.push_back("LOG_MODES"); - tables.push_back("MATRICES"); - tables.push_back("NEXUS_FIELDS"); - tables.push_back("NEXUS_QUEUE"); - tables.push_back("NEXUS_SERVER"); - tables.push_back("NEXUS_STATIONS"); - tables.push_back("OUTPUTS"); - tables.push_back("PANELS"); - tables.push_back("PANEL_NAMES"); - tables.push_back("PODCASTS"); - tables.push_back("PYPAD_INSTANCES"); - tables.push_back("RDAIRPLAY"); - tables.push_back("RDAIRPLAY_CHANNELS"); - tables.push_back("RDCATCH"); - tables.push_back("RDHOTKEYS"); - tables.push_back("RDLIBRARY"); - tables.push_back("RDLOGEDIT"); - tables.push_back("RDPANEL"); - tables.push_back("RDPANEL_CHANNELS"); - tables.push_back("RECORDINGS"); - tables.push_back("REPLICATORS"); - tables.push_back("REPLICATOR_MAP"); - tables.push_back("REPL_CART_STATE"); - tables.push_back("REPL_CUT_STATE"); - tables.push_back("REPORTS"); - tables.push_back("REPORT_GROUPS"); - tables.push_back("REPORT_SERVICES"); - tables.push_back("REPORT_STATIONS"); - tables.push_back("RULE_LINES"); - tables.push_back("SCHED_CODES"); - tables.push_back("SERVICES"); - tables.push_back("SERVICE_CLOCKS"); - tables.push_back("SERVICE_PERMS"); - tables.push_back("STACK_LINES"); - tables.push_back("STACK_SCHED_CODES"); - tables.push_back("STATIONS"); - tables.push_back("SWITCHER_NODES"); - tables.push_back("SYSTEM"); - tables.push_back("TRIGGERS"); - tables.push_back("TTYS"); - tables.push_back("USERS"); - tables.push_back("USER_PERMS"); - tables.push_back("USER_SERVICE_PERMS"); - tables.push_back("VERSION"); - tables.push_back("VGUEST_RESOURCES"); - tables.push_back("WEBAPI_AUTHS"); - tables.push_back("WEB_CONNECTIONS"); - break; - - case 375: // v3.2.x - tables.push_back("AUDIO_CARDS"); - tables.push_back("AUDIO_INPUTS"); - tables.push_back("AUDIO_OUTPUTS"); - tables.push_back("AUDIO_PERMS"); - tables.push_back("AUTOFILLS"); - tables.push_back("AUX_METADATA"); - tables.push_back("CART"); - tables.push_back("CARTSLOTS"); - tables.push_back("CART_SCHED_CODES"); - tables.push_back("CLIPBOARD"); - tables.push_back("CLOCKS"); - tables.push_back("CLOCK_LINES"); - tables.push_back("CLOCK_PERMS"); - tables.push_back("CUTS"); - tables.push_back("CUT_EVENTS"); - tables.push_back("DECKS"); - tables.push_back("DECK_EVENTS"); - tables.push_back("DROPBOXES"); - tables.push_back("DROPBOX_PATHS"); - tables.push_back("DROPBOX_SCHED_CODES"); - tables.push_back("ELR_LINES"); - tables.push_back("ENCODER_PRESETS"); - tables.push_back("EVENTS"); - tables.push_back("EVENT_LINES"); - tables.push_back("EVENT_PERMS"); - tables.push_back("EXTENDED_PANELS"); - tables.push_back("EXTENDED_PANEL_NAMES"); - tables.push_back("FEEDS"); - tables.push_back("FEED_IMAGES"); - tables.push_back("FEED_PERMS"); - tables.push_back("GPIO_EVENTS"); - tables.push_back("GPIS"); - tables.push_back("GPOS"); - tables.push_back("GROUPS"); - tables.push_back("HOSTVARS"); - tables.push_back("IMPORTER_LINES"); - tables.push_back("IMPORT_TEMPLATES"); - tables.push_back("INPUTS"); - tables.push_back("ISCI_XREFERENCE"); - tables.push_back("JACK_CLIENTS"); - tables.push_back("LIVEWIRE_GPIO_SLOTS"); - tables.push_back("LOGS"); - tables.push_back("LOGS"); - tables.push_back("LOG_LINES"); - tables.push_back("LOG_MACHINES"); - tables.push_back("LOG_MODES"); - tables.push_back("MATRICES"); - tables.push_back("NEXUS_FIELDS"); - tables.push_back("NEXUS_QUEUE"); - tables.push_back("NEXUS_SERVER"); - tables.push_back("NEXUS_STATIONS"); - tables.push_back("OUTPUTS"); - tables.push_back("PANELS"); - tables.push_back("PANEL_NAMES"); - tables.push_back("PODCASTS"); - tables.push_back("PYPAD_INSTANCES"); - tables.push_back("RDAIRPLAY"); - tables.push_back("RDAIRPLAY_CHANNELS"); - tables.push_back("RDCATCH"); - tables.push_back("RDHOTKEYS"); - tables.push_back("RDLIBRARY"); - tables.push_back("RDLOGEDIT"); - tables.push_back("RDPANEL"); - tables.push_back("RDPANEL_CHANNELS"); - tables.push_back("RECORDINGS"); - tables.push_back("REPLICATORS"); - tables.push_back("REPLICATOR_MAP"); - tables.push_back("REPL_CART_STATE"); - tables.push_back("REPL_CUT_STATE"); - tables.push_back("REPORTS"); - tables.push_back("REPORT_GROUPS"); - tables.push_back("REPORT_SERVICES"); - tables.push_back("REPORT_STATIONS"); - tables.push_back("RULE_LINES"); - tables.push_back("SCHED_CODES"); - tables.push_back("SERVICES"); - tables.push_back("SERVICE_CLOCKS"); - tables.push_back("SERVICE_PERMS"); - tables.push_back("STACK_LINES"); - tables.push_back("STACK_SCHED_CODES"); - tables.push_back("STATIONS"); - tables.push_back("SUPERFEED_MAPS"); - tables.push_back("SWITCHER_NODES"); - tables.push_back("SYSTEM"); - tables.push_back("TRIGGERS"); - tables.push_back("TTYS"); - tables.push_back("USERS"); - tables.push_back("USER_PERMS"); - tables.push_back("USER_SERVICE_PERMS"); - tables.push_back("VERSION"); - tables.push_back("VGUEST_RESOURCES"); - tables.push_back("WEBAPI_AUTHS"); - tables.push_back("WEB_CONNECTIONS"); - break; - } - - return tables; -} - - void MainObject::CheckLogLineIds(const QString &logname) const { QString sql; diff --git a/utils/rddbmgr/rddbmgr.h b/utils/rddbmgr/rddbmgr.h index 9fc46735..3a791c89 100644 --- a/utils/rddbmgr/rddbmgr.h +++ b/utils/rddbmgr/rddbmgr.h @@ -79,7 +79,6 @@ class MainObject : public QObject void CheckOrphanedTables() const; bool CheckTableNames(const QStringList &table_names, QStringList &missing,QStringList &extra) const; - QStringList GetCanonicalTables(int schema) const; void CheckLogLineIds(const QString &logname) const; void ValidateAudioLengths() const; void Rehash(const QString &arg) const; @@ -142,6 +141,7 @@ class MainObject : public QObject // schemamap.cpp // void InitializeSchemaMap(); + QStringList GetCanonicalTables(int schema) const; int GetVersionSchema(const QString &ver) const; QString GetSchemaVersion(int schema) const; diff --git a/utils/rddbmgr/schemamap.cpp b/utils/rddbmgr/schemamap.cpp index d6363b01..d10618cb 100644 --- a/utils/rddbmgr/schemamap.cpp +++ b/utils/rddbmgr/schemamap.cpp @@ -125,6 +125,9 @@ void MainObject::InitializeSchemaMap() { // on the last line occurs, that line too is declared immutable, and // the cycle begins again. // + // When updating this map, it is also crucial that the canonical set + // of database tables be updated in 'GetCanonicalTables()' method. + // global_version_map["1.0"]=159; global_version_map["1.1"]=162; global_version_map["1.2"]=169; @@ -168,6 +171,394 @@ void MainObject::InitializeSchemaMap() { } +QStringList MainObject::GetCanonicalTables(int schema) const +{ + QStringList tables; + + switch(schema) { + case 275: // v2.19.x + tables.push_back("AUDIO_PERMS"); + tables.push_back("AUDIO_PORTS"); + tables.push_back("AUTOFILLS"); + tables.push_back("AUX_METADATA"); + tables.push_back("CART"); + tables.push_back("CARTSLOTS"); + tables.push_back("CLIPBOARD"); + tables.push_back("CLOCKS"); + tables.push_back("CLOCK_PERMS"); + tables.push_back("CUTS"); + tables.push_back("CUT_EVENTS"); + tables.push_back("DECKS"); + tables.push_back("DECK_EVENTS"); + tables.push_back("DROPBOXES"); + tables.push_back("DROPBOX_PATHS"); + tables.push_back("DROPBOX_SCHED_CODES"); + tables.push_back("ENCODER_CHANNELS"); + tables.push_back("ENCODER_BITRATES"); + tables.push_back("ENCODER_SAMPLERATES"); + tables.push_back("ENCODERS"); + tables.push_back("EVENTS"); + tables.push_back("EVENT_PERMS"); + tables.push_back("EXTENDED_PANELS"); + tables.push_back("EXTENDED_PANEL_NAMES"); + tables.push_back("FEEDS"); + tables.push_back("FEED_PERMS"); + tables.push_back("GPIO_EVENTS"); + tables.push_back("GPIS"); + tables.push_back("GPOS"); + tables.push_back("GROUPS"); + tables.push_back("HOSTVARS"); + tables.push_back("IMPORT_TEMPLATES"); + tables.push_back("INPUTS"); + tables.push_back("ISCI_XREFERENCE"); + tables.push_back("JACK_CLIENTS"); + tables.push_back("LIVEWIRE_GPIO_SLOTS"); + tables.push_back("LOGS"); + tables.push_back("LOGS"); + tables.push_back("LOG_MODES"); + tables.push_back("MATRICES"); + tables.push_back("OUTPUTS"); + tables.push_back("NOWNEXT_PLUGINS"); + tables.push_back("PANELS"); + tables.push_back("PANEL_NAMES"); + tables.push_back("PODCASTS"); + tables.push_back("RDAIRPLAY"); + tables.push_back("RDAIRPLAY_CHANNELS"); + tables.push_back("RDCATCH"); + tables.push_back("RDHOTKEYS"); + tables.push_back("RDLIBRARY"); + tables.push_back("RDLOGEDIT"); + tables.push_back("RDPANEL"); + tables.push_back("RDPANEL_CHANNELS"); + tables.push_back("RECORDINGS"); + tables.push_back("REPLICATORS"); + tables.push_back("REPLICATOR_MAP"); + tables.push_back("REPL_CART_STATE"); + tables.push_back("REPL_CUT_STATE"); + tables.push_back("REPORTS"); + tables.push_back("REPORT_GROUPS"); + tables.push_back("REPORT_SERVICES"); + tables.push_back("REPORT_STATIONS"); + tables.push_back("SCHED_CODES"); + tables.push_back("SERVICES"); + tables.push_back("SERVICE_CLOCKS"); + tables.push_back("SERVICE_PERMS"); + tables.push_back("STATIONS"); + tables.push_back("SWITCHER_NODES"); + tables.push_back("SYSTEM"); + tables.push_back("TRIGGERS"); + tables.push_back("TTYS"); + tables.push_back("USERS"); + tables.push_back("USER_PERMS"); + tables.push_back("USER_SERVICE_PERMS"); + tables.push_back("VERSION"); + tables.push_back("VGUEST_RESOURCES"); + tables.push_back("WEBAPI_AUTHS"); + tables.push_back("WEB_CONNECTIONS"); + tables.push_back("*_CLK"); + tables.push_back("*_FLG"); + tables.push_back("*_LOG"); + tables.push_back("*_PRE"); + tables.push_back("*_POST"); + tables.push_back("*_RULES"); + tables.push_back("*_SRT"); + tables.push_back("*_STACK"); + break; + + case 308: // v3.0.x + tables.push_back("AUDIO_CARDS"); + tables.push_back("AUDIO_INPUTS"); + tables.push_back("AUDIO_OUTPUTS"); + tables.push_back("AUDIO_PERMS"); + tables.push_back("AUTOFILLS"); + tables.push_back("AUX_METADATA"); + tables.push_back("CART"); + tables.push_back("CARTSLOTS"); + tables.push_back("CART_SCHED_CODES"); + tables.push_back("CAST_DOWNLOADS"); + tables.push_back("CLIPBOARD"); + tables.push_back("CLOCKS"); + tables.push_back("CLOCK_LINES"); + tables.push_back("CLOCK_PERMS"); + tables.push_back("CUTS"); + tables.push_back("CUT_EVENTS"); + tables.push_back("DECKS"); + tables.push_back("DECK_EVENTS"); + tables.push_back("DROPBOXES"); + tables.push_back("DROPBOX_PATHS"); + tables.push_back("DROPBOX_SCHED_CODES"); + tables.push_back("ELR_LINES"); + tables.push_back("ENCODER_CHANNELS"); + tables.push_back("ENCODER_BITRATES"); + tables.push_back("ENCODER_SAMPLERATES"); + tables.push_back("ENCODERS"); + tables.push_back("EVENTS"); + tables.push_back("EVENT_LINES"); + tables.push_back("EVENT_PERMS"); + tables.push_back("EXTENDED_PANELS"); + tables.push_back("EXTENDED_PANEL_NAMES"); + tables.push_back("FEEDS"); + tables.push_back("FEED_PERMS"); + tables.push_back("GPIO_EVENTS"); + tables.push_back("GPIS"); + tables.push_back("GPOS"); + tables.push_back("GROUPS"); + tables.push_back("HOSTVARS"); + tables.push_back("IMPORTER_LINES"); + tables.push_back("IMPORT_TEMPLATES"); + tables.push_back("INPUTS"); + tables.push_back("ISCI_XREFERENCE"); + tables.push_back("JACK_CLIENTS"); + tables.push_back("LIVEWIRE_GPIO_SLOTS"); + tables.push_back("LOGS"); + tables.push_back("LOGS"); + tables.push_back("LOG_LINES"); + tables.push_back("LOG_MACHINES"); + tables.push_back("LOG_MODES"); + tables.push_back("MATRICES"); + tables.push_back("OUTPUTS"); + tables.push_back("PANELS"); + tables.push_back("PANEL_NAMES"); + tables.push_back("PODCASTS"); + tables.push_back("PYPAD_INSTANCES"); + tables.push_back("RDAIRPLAY"); + tables.push_back("RDAIRPLAY_CHANNELS"); + tables.push_back("RDCATCH"); + tables.push_back("RDHOTKEYS"); + tables.push_back("RDLIBRARY"); + tables.push_back("RDLOGEDIT"); + tables.push_back("RDPANEL"); + tables.push_back("RDPANEL_CHANNELS"); + tables.push_back("RECORDINGS"); + tables.push_back("REPLICATORS"); + tables.push_back("REPLICATOR_MAP"); + tables.push_back("REPL_CART_STATE"); + tables.push_back("REPL_CUT_STATE"); + tables.push_back("REPORTS"); + tables.push_back("REPORT_GROUPS"); + tables.push_back("REPORT_SERVICES"); + tables.push_back("REPORT_STATIONS"); + tables.push_back("RULE_LINES"); + tables.push_back("SCHED_CODES"); + tables.push_back("SERVICES"); + tables.push_back("SERVICE_CLOCKS"); + tables.push_back("SERVICE_PERMS"); + tables.push_back("STACK_LINES"); + tables.push_back("STACK_SCHED_CODES"); + tables.push_back("STATIONS"); + tables.push_back("SWITCHER_NODES"); + tables.push_back("SYSTEM"); + tables.push_back("TRIGGERS"); + tables.push_back("TTYS"); + tables.push_back("USERS"); + tables.push_back("USER_PERMS"); + tables.push_back("USER_SERVICE_PERMS"); + tables.push_back("VERSION"); + tables.push_back("VGUEST_RESOURCES"); + tables.push_back("WEBAPI_AUTHS"); + tables.push_back("WEB_CONNECTIONS"); + break; + + case 310: // v3.1.x + tables.push_back("AUDIO_CARDS"); + tables.push_back("AUDIO_INPUTS"); + tables.push_back("AUDIO_OUTPUTS"); + tables.push_back("AUDIO_PERMS"); + tables.push_back("AUTOFILLS"); + tables.push_back("AUX_METADATA"); + tables.push_back("CART"); + tables.push_back("CARTSLOTS"); + tables.push_back("CART_SCHED_CODES"); + tables.push_back("CAST_DOWNLOADS"); + tables.push_back("CLIPBOARD"); + tables.push_back("CLOCKS"); + tables.push_back("CLOCK_LINES"); + tables.push_back("CLOCK_PERMS"); + tables.push_back("CUTS"); + tables.push_back("CUT_EVENTS"); + tables.push_back("DECKS"); + tables.push_back("DECK_EVENTS"); + tables.push_back("DROPBOXES"); + tables.push_back("DROPBOX_PATHS"); + tables.push_back("DROPBOX_SCHED_CODES"); + tables.push_back("ELR_LINES"); + tables.push_back("ENCODER_CHANNELS"); + tables.push_back("ENCODER_BITRATES"); + tables.push_back("ENCODER_SAMPLERATES"); + tables.push_back("ENCODERS"); + tables.push_back("EVENTS"); + tables.push_back("EVENT_LINES"); + tables.push_back("EVENT_PERMS"); + tables.push_back("EXTENDED_PANELS"); + tables.push_back("EXTENDED_PANEL_NAMES"); + tables.push_back("FEEDS"); + tables.push_back("FEED_PERMS"); + tables.push_back("GPIO_EVENTS"); + tables.push_back("GPIS"); + tables.push_back("GPOS"); + tables.push_back("GROUPS"); + tables.push_back("HOSTVARS"); + tables.push_back("IMPORTER_LINES"); + tables.push_back("IMPORT_TEMPLATES"); + tables.push_back("INPUTS"); + tables.push_back("ISCI_XREFERENCE"); + tables.push_back("JACK_CLIENTS"); + tables.push_back("LIVEWIRE_GPIO_SLOTS"); + tables.push_back("LOGS"); + tables.push_back("LOGS"); + tables.push_back("LOG_LINES"); + tables.push_back("LOG_MACHINES"); + tables.push_back("LOG_MODES"); + tables.push_back("MATRICES"); + tables.push_back("NEXUS_FIELDS"); + tables.push_back("NEXUS_QUEUE"); + tables.push_back("NEXUS_SERVER"); + tables.push_back("NEXUS_STATIONS"); + tables.push_back("OUTPUTS"); + tables.push_back("PANELS"); + tables.push_back("PANEL_NAMES"); + tables.push_back("PODCASTS"); + tables.push_back("PYPAD_INSTANCES"); + tables.push_back("RDAIRPLAY"); + tables.push_back("RDAIRPLAY_CHANNELS"); + tables.push_back("RDCATCH"); + tables.push_back("RDHOTKEYS"); + tables.push_back("RDLIBRARY"); + tables.push_back("RDLOGEDIT"); + tables.push_back("RDPANEL"); + tables.push_back("RDPANEL_CHANNELS"); + tables.push_back("RECORDINGS"); + tables.push_back("REPLICATORS"); + tables.push_back("REPLICATOR_MAP"); + tables.push_back("REPL_CART_STATE"); + tables.push_back("REPL_CUT_STATE"); + tables.push_back("REPORTS"); + tables.push_back("REPORT_GROUPS"); + tables.push_back("REPORT_SERVICES"); + tables.push_back("REPORT_STATIONS"); + tables.push_back("RULE_LINES"); + tables.push_back("SCHED_CODES"); + tables.push_back("SERVICES"); + tables.push_back("SERVICE_CLOCKS"); + tables.push_back("SERVICE_PERMS"); + tables.push_back("STACK_LINES"); + tables.push_back("STACK_SCHED_CODES"); + tables.push_back("STATIONS"); + tables.push_back("SWITCHER_NODES"); + tables.push_back("SYSTEM"); + tables.push_back("TRIGGERS"); + tables.push_back("TTYS"); + tables.push_back("USERS"); + tables.push_back("USER_PERMS"); + tables.push_back("USER_SERVICE_PERMS"); + tables.push_back("VERSION"); + tables.push_back("VGUEST_RESOURCES"); + tables.push_back("WEBAPI_AUTHS"); + tables.push_back("WEB_CONNECTIONS"); + break; + + case 375: // v3.2.x + case 376: // v3.3.x + tables.push_back("AUDIO_CARDS"); + tables.push_back("AUDIO_INPUTS"); + tables.push_back("AUDIO_OUTPUTS"); + tables.push_back("AUDIO_PERMS"); + tables.push_back("AUTOFILLS"); + tables.push_back("AUX_METADATA"); + tables.push_back("CART"); + tables.push_back("CARTSLOTS"); + tables.push_back("CART_SCHED_CODES"); + tables.push_back("CLIPBOARD"); + tables.push_back("CLOCKS"); + tables.push_back("CLOCK_LINES"); + tables.push_back("CLOCK_PERMS"); + tables.push_back("CUTS"); + tables.push_back("CUT_EVENTS"); + tables.push_back("DECKS"); + tables.push_back("DECK_EVENTS"); + tables.push_back("DROPBOXES"); + tables.push_back("DROPBOX_PATHS"); + tables.push_back("DROPBOX_SCHED_CODES"); + tables.push_back("ELR_LINES"); + tables.push_back("ENCODER_PRESETS"); + tables.push_back("EVENTS"); + tables.push_back("EVENT_LINES"); + tables.push_back("EVENT_PERMS"); + tables.push_back("EXTENDED_PANELS"); + tables.push_back("EXTENDED_PANEL_NAMES"); + tables.push_back("FEEDS"); + tables.push_back("FEED_IMAGES"); + tables.push_back("FEED_PERMS"); + tables.push_back("GPIO_EVENTS"); + tables.push_back("GPIS"); + tables.push_back("GPOS"); + tables.push_back("GROUPS"); + tables.push_back("HOSTVARS"); + tables.push_back("IMPORTER_LINES"); + tables.push_back("IMPORT_TEMPLATES"); + tables.push_back("INPUTS"); + tables.push_back("ISCI_XREFERENCE"); + tables.push_back("JACK_CLIENTS"); + tables.push_back("LIVEWIRE_GPIO_SLOTS"); + tables.push_back("LOGS"); + tables.push_back("LOGS"); + tables.push_back("LOG_LINES"); + tables.push_back("LOG_MACHINES"); + tables.push_back("LOG_MODES"); + tables.push_back("MATRICES"); + tables.push_back("NEXUS_FIELDS"); + tables.push_back("NEXUS_QUEUE"); + tables.push_back("NEXUS_SERVER"); + tables.push_back("NEXUS_STATIONS"); + tables.push_back("OUTPUTS"); + tables.push_back("PANELS"); + tables.push_back("PANEL_NAMES"); + tables.push_back("PODCASTS"); + tables.push_back("PYPAD_INSTANCES"); + tables.push_back("RDAIRPLAY"); + tables.push_back("RDAIRPLAY_CHANNELS"); + tables.push_back("RDCATCH"); + tables.push_back("RDHOTKEYS"); + tables.push_back("RDLIBRARY"); + tables.push_back("RDLOGEDIT"); + tables.push_back("RDPANEL"); + tables.push_back("RDPANEL_CHANNELS"); + tables.push_back("RECORDINGS"); + tables.push_back("REPLICATORS"); + tables.push_back("REPLICATOR_MAP"); + tables.push_back("REPL_CART_STATE"); + tables.push_back("REPL_CUT_STATE"); + tables.push_back("REPORTS"); + tables.push_back("REPORT_GROUPS"); + tables.push_back("REPORT_SERVICES"); + tables.push_back("REPORT_STATIONS"); + tables.push_back("RULE_LINES"); + tables.push_back("SCHED_CODES"); + tables.push_back("SERVICES"); + tables.push_back("SERVICE_CLOCKS"); + tables.push_back("SERVICE_PERMS"); + tables.push_back("STACK_LINES"); + tables.push_back("STACK_SCHED_CODES"); + tables.push_back("STATIONS"); + tables.push_back("SUPERFEED_MAPS"); + tables.push_back("SWITCHER_NODES"); + tables.push_back("SYSTEM"); + tables.push_back("TRIGGERS"); + tables.push_back("TTYS"); + tables.push_back("USERS"); + tables.push_back("USER_PERMS"); + tables.push_back("USER_SERVICE_PERMS"); + tables.push_back("VERSION"); + tables.push_back("VGUEST_RESOURCES"); + tables.push_back("WEBAPI_AUTHS"); + tables.push_back("WEB_CONNECTIONS"); + break; + } + + return tables; +} + + int MainObject::GetVersionSchema(const QString &ver) const { QString version=ver;