gnucash master: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Tue Aug 2 17:19:19 EDT 2016


Updated	 via  https://github.com/Gnucash/gnucash/commit/31d13bee (commit)
	 via  https://github.com/Gnucash/gnucash/commit/ddb8a43c (commit)
	from  https://github.com/Gnucash/gnucash/commit/f0d4a971 (commit)



commit 31d13beeb13f1bb9311bf632203985a810556b08
Author: John Ralls <jralls at ceridwen.us>
Date:   Tue Aug 2 14:16:30 2016 -0700

    Don't error out if select @@sql_mode is an empty string.
    
    Unless there's actually an error. Having no sql_modes set just means
    we don't need to filter them.

diff --git a/src/backend/dbi/gnc-backend-dbi.cpp b/src/backend/dbi/gnc-backend-dbi.cpp
index 902f8a2..b2d4b3b 100644
--- a/src/backend/dbi/gnc-backend-dbi.cpp
+++ b/src/backend/dbi/gnc-backend-dbi.cpp
@@ -897,7 +897,10 @@ adjust_sql_options (dbi_conn connection)
         {
             const char* errmsg;
             int err = dbi_conn_error(connection, &errmsg);
-            PERR("Unable to get sql_mode %d : %s", err, errmsg);
+            if (err)
+                PERR("Unable to get sql_mode %d : %s", err, errmsg);
+            else
+                PINFO("Sql_mode isn't set.");
         }
         else
         {

commit ddb8a43ca0b94c5d94b1868a89548d18d4af52fd
Author: John Ralls <jralls at ceridwen.us>
Date:   Tue Aug 2 14:09:12 2016 -0700

    Fix crash and error decoding GDates returned as time64.
    
    Only shows up with MySql/Postgresql because SQLite3 returns a string.

diff --git a/src/backend/sql/gnc-backend-sql.cpp b/src/backend/sql/gnc-backend-sql.cpp
index 973de93..a1ccfa9 100644
--- a/src/backend/sql/gnc-backend-sql.cpp
+++ b/src/backend/sql/gnc-backend-sql.cpp
@@ -2078,16 +2078,23 @@ load_date (const GncSqlBackend* be, GncSqlRow* row,
     {
         if (G_VALUE_HOLDS_INT64 (val))
         {
-            gint64 time = g_value_get_int64 (val);
-            Timespec ts = {time, 0};
-            struct tm tm;
-            gint day, month, year;
-            GDate date = timespec_to_gdate (ts);
+            /* timespec_to_gdate applies the tz, and gdates are saved
+             * as ymd, so we don't want that.
+             */
+            auto time = g_value_get_int64 (val);
+            auto tm = gnc_gmtime(&time);
+
+            GDate date;
+            g_date_clear(&date, 1);
+            g_date_set_dmy(&date, tm->tm_mday,
+                           static_cast<GDateMonth>(tm->tm_mon + 1),
+                           tm->tm_year + 1900);
+            free(tm);
             if (table_row->gobj_param_name != NULL)
             {
                 if (QOF_IS_INSTANCE (pObject))
                     qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
-                g_object_set (pObject, table_row->gobj_param_name, date, NULL);
+                g_object_set (pObject, table_row->gobj_param_name, &date, NULL);
                 if (QOF_IS_INSTANCE (pObject))
                     qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
             }



Summary of changes:
 src/backend/dbi/gnc-backend-dbi.cpp |  5 ++++-
 src/backend/sql/gnc-backend-sql.cpp | 19 +++++++++++++------
 2 files changed, 17 insertions(+), 7 deletions(-)



More information about the gnucash-changes mailing list