From 6eefbfc03b2d01e72eb93b6d76a2758e534accdc Mon Sep 17 00:00:00 2001 From: Stephane Albert <stephane.albert@c-s.fr> Date: Thu, 10 Apr 2014 16:11:37 +0200 Subject: [PATCH] ENH: Database format version check. --- Code/Common/Core/mvdDatabaseConnection.cxx | 4 +++- Code/Common/Core/mvdDatabaseModel.cxx | 23 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Code/Common/Core/mvdDatabaseConnection.cxx b/Code/Common/Core/mvdDatabaseConnection.cxx index 3a237b9c3a..9e52d3b525 100644 --- a/Code/Common/Core/mvdDatabaseConnection.cxx +++ b/Code/Common/Core/mvdDatabaseConnection.cxx @@ -420,11 +420,13 @@ DatabaseConnection DirectExecuteQuery( QString( "SELECT database_attribute.id, database_attribute.value\n" "FROM database_attribute\n" - "WHERE database_attribute.name='%1';" + "WHERE database_attribute.name='%1' COLLATE NOCASE;" ).arg( name ) ) ); + QUERY_NEXT( query ); + // // Get ID, if needed. assert( query.value( 0 ).type()==QVariant::LongLong ); diff --git a/Code/Common/Core/mvdDatabaseModel.cxx b/Code/Common/Core/mvdDatabaseModel.cxx index abe3b35694..73c7c39d48 100644 --- a/Code/Common/Core/mvdDatabaseModel.cxx +++ b/Code/Common/Core/mvdDatabaseModel.cxx @@ -38,6 +38,7 @@ // // Monteverdi includes (sorted by alphabetic order) +#include "Core/mvdCore.h" #include "Core/mvdDatabaseConnection.h" #include "Core/mvdDatasetModel.h" #include "Core/mvdI18nCoreApplication.h" @@ -315,6 +316,8 @@ DatabaseModel { assert( m_Db==NULL ); + // + // Create SQL database-connection. delete m_Db; m_Db = @@ -323,6 +326,26 @@ DatabaseModel this ); + // + // Check database version. + QVariant version( m_Db->GetAttribute( "version" ) ); + + assert( version.type()==QVariant::String ); + + qWarning() + << "Database format version:" << ToStdString( version.toString() ).c_str(); + + if( !IsVersionGreaterEqual( version.toString(), + Monteverdi2_DATA_VERSION_STRING ) ) + throw std::runtime_error( + ToStdString( + tr( "Database format version %1 is not supported anymore." ) + .arg( version.toString() ) + ) + ); + + // + // Check outdated datasets. CountType nbOutdated = InitializeDatasetModels(); if( context!=NULL ) -- GitLab