From bbd2df6a3bb39ae62d91ec4f740f3366209aa675 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sat, 23 Dec 2017 14:27:04 -0800 Subject: [PATCH] Bug 791848 - GC 2.6.x does not handle ISO dates introduced with GC 2.7. Set a feature to prevent versions older that 2.6.20 from loading a database from which they cannot read the dates. Ideally we would do this only if the database is written to, but the current persistence design includes committing back to the database during the load so the net effect is that the flag would be set anyway. --- libgnucash/backend/dbi/gnc-backend-dbi.cpp | 7 +++++-- libgnucash/engine/gnc-features.c | 1 + libgnucash/engine/gnc-features.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libgnucash/backend/dbi/gnc-backend-dbi.cpp b/libgnucash/backend/dbi/gnc-backend-dbi.cpp index bd50be6c11..68b893379a 100644 --- a/libgnucash/backend/dbi/gnc-backend-dbi.cpp +++ b/libgnucash/backend/dbi/gnc-backend-dbi.cpp @@ -59,7 +59,7 @@ extern "C" #include "gnc-engine.h" #include "SX-book.h" #include "Recurrence.h" - +#include #include "gnc-uri-utils.h" #include "gnc-filepath-utils.h" #include @@ -76,6 +76,7 @@ extern "C" #include #include +#include #include #include "gnc-backend-dbi.h" #include "gnc-backend-dbi.hpp" @@ -470,7 +471,6 @@ GncDbiBackend::session_begin(QofSession* session, * Let's start logging */ xaccLogSetBaseName (filepath.c_str()); PINFO ("logpath=%s", filepath.c_str() ? filepath.c_str() : "(null)"); - LEAVE (""); } @@ -830,6 +830,9 @@ GncDbiBackend::load (QofBook* book, QofBackendLoadType loadType) GncSqlBackend::load(book, loadType); + if (Type == DbType::DBI_SQLITE) + gnc_features_set_used(book, GNC_FEATURE_SQLITE3_ISO_DATES); + if (GNUCASH_RESAVE_VERSION > get_table_version("Gnucash")) { /* The database was loaded with an older database schema or diff --git a/libgnucash/engine/gnc-features.c b/libgnucash/engine/gnc-features.c index 4d38fa7b1c..ca4cb9bad8 100644 --- a/libgnucash/engine/gnc-features.c +++ b/libgnucash/engine/gnc-features.c @@ -47,6 +47,7 @@ static gncFeature known_features[] = { GNC_FEATURE_BOOK_CURRENCY, "User specifies a 'book-currency'; costs of other currencies/commodities tracked in terms of book-currency (requires at least GnuCash 2.7.0)" }, { GNC_FEATURE_GUID_BAYESIAN, "Use account GUID as key for Bayesian data (requires at least GnuCash 2.6.12)" }, { GNC_FEATURE_GUID_FLAT_BAYESIAN, "Use account GUID as key for bayesian data and store KVP flat (requires at least Gnucash 2.6.19)" }, + { GNC_FEATURE_SQLITE3_ISO_DATES, "Use ISO formatted date-time strings in SQLite3 databases (requires at least GnuCash 2.6.20)"}, { NULL }, }; diff --git a/libgnucash/engine/gnc-features.h b/libgnucash/engine/gnc-features.h index 2beca420ed..0386077a38 100644 --- a/libgnucash/engine/gnc-features.h +++ b/libgnucash/engine/gnc-features.h @@ -51,6 +51,7 @@ extern "C" { #define GNC_FEATURE_BOOK_CURRENCY "Use a Book-Currency" #define GNC_FEATURE_GUID_BAYESIAN "Account GUID based Bayesian data" #define GNC_FEATURE_GUID_FLAT_BAYESIAN "Account GUID based bayesian with flat KVP" +#define GNC_FEATURE_SQLITE3_ISO_DATES "ISO-8601 formatted date strings in SQLite3 databases." /** @} */