File libreoffice-firebird3-selftest.patch of Package libreoffice

From: Michal Kubecek <mkubecek@suse.cz>
Date: Thu, 2 Jun 2016 11:56:10 +0200
Subject: connectivity: firebird: use ODS12 test database for Firebird 3
Patch-mainline: Not tagged yet (5.3.0.0.alpha1?)
Git-commit: de899f0b350e51b1932fa4674f7ce2ae386cd1ce
References: bsc#982485

Firebird 3.0 uses new database file format (ODS, On Disk Structure) so
that we need to use either ODS11 or ODS12 version of test database for
dbaccess_firebird test, depending on whether building against Firebird
2.5 or 3.0 libraries.

Change-Id: Idecdc35b0ac87ab7f46cb79b5c044c65423a2c7e
Reviewed-on: https://gerrit.libreoffice.org/25846
Reviewed-by: jan iversen <jani@documentfoundation.org>
Tested-by: jan iversen <jani@documentfoundation.org>
---
 config_host/config_firebird.h.in                       |  10 ++++++++++
 configure.ac                                           |  16 +++++++++++++---
 dbaccess/qa/unit/data/firebird_integer_x64le_ods12.odb | Bin 0 -> 75701 bytes
 dbaccess/qa/unit/firebird.cxx                          |   5 +++++
 4 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 config_host/config_firebird.h.in
 create mode 100644 dbaccess/qa/unit/data/firebird_integer_x64le_ods12.odb

diff --git a/config_host/config_firebird.h.in b/config_host/config_firebird.h.in
new file mode 100644
index 000000000000..c6aa43ac54f3
--- /dev/null
+++ b/config_host/config_firebird.h.in
@@ -0,0 +1,10 @@
+/*
+Settings for Firebird
+*/
+
+#ifndef CONFIG_FIREBIRD_H
+#define CONFIG_FIREBIRD_H
+
+#define HAVE_FIREBIRD_30 0
+
+#endif
diff --git a/configure.ac b/configure.ac
index 6abeae315c2e..1d137c6a129c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8671,8 +8671,10 @@ if test "$enable_firebird_sdbc" = "yes" ; then
         if test -n "${FIREBIRD_VERSION}"; then
             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
-            if test "$FIREBIRD_MAJOR" -eq "2" -a "$FIREBIRD_MINOR" -eq "5" -o \
-                    "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
+            if test "$FIREBIRD_MAJOR" -eq "2" -a "$FIREBIRD_MINOR" -eq "5"; then
+                AC_MSG_RESULT([OK])
+            elif test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
+                AC_DEFINE(HAVE_FIREBIRD_30, 1)
                 AC_MSG_RESULT([OK])
             else
                 AC_MSG_ERROR([Ensure firebird 2.5.x or 3.0.x is installed])
@@ -8681,10 +8683,16 @@ if test "$enable_firebird_sdbc" = "yes" ; then
             __save_CFLAGS="${CFLAGS}"
             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
-#if defined(FB_API_VER) && (FB_API_VER == 25 || FB_API_VER == 30)
+#if defined(FB_API_VER) && FB_API_VER == 25
+int fb_api_is_25(void) { return 0; }
+#elif defined(FB_API_VER) && FB_API_VER == 30
+int fb_api_is_30(void) { return 0; }
 #else
 #error "Wrong Firebird API version"
 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 2.5.x or 3.0.x is installed]))
+            if nm conftest.$OBJEXT | grep fb_api_is_30; then
+                AC_DEFINE(HAVE_FIREBIRD_30, 1)
+            fi
             CFLAGS="${__save_CFLAGS}"
         fi
         ENABLE_FIREBIRD_SDBC="TRUE"
@@ -8727,6 +8735,7 @@ AC_SUBST(LIBATOMIC_OPS_LIBS)
 AC_SUBST(SYSTEM_FIREBIRD)
 AC_SUBST(FIREBIRD_CFLAGS)
 AC_SUBST(FIREBIRD_LIBS)
+AC_SUBST(HAVE_FIREBIRD_30)
 dnl AC_SUBST([TOMMATH_CFLAGS])
 dnl AC_SUBST([TOMMATH_LIBS])
 
@@ -12928,6 +12937,7 @@ AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
 AC_CONFIG_HEADERS([config_host/config_dbus.h])
 AC_CONFIG_HEADERS([config_host/config_features.h])
+AC_CONFIG_HEADERS([config_host/config_firebird.h])
 AC_CONFIG_HEADERS([config_host/config_folders.h])
 AC_CONFIG_HEADERS([config_host/config_gio.h])
 AC_CONFIG_HEADERS([config_host/config_global.h])
diff --git a/dbaccess/qa/unit/firebird.cxx b/dbaccess/qa/unit/firebird.cxx
index c9ee575f9b7f..da0bed760d2e 100644
--- a/dbaccess/qa/unit/firebird.cxx
+++ b/dbaccess/qa/unit/firebird.cxx
@@ -16,6 +16,7 @@
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <com/sun/star/sdbc/XStatement.hpp>
 #include <svtools/miscopt.hxx>
+#include <config_firebird.h>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::sdb;
@@ -65,7 +66,11 @@ void FirebirdTest::testEmptyDBConnection()
 void FirebirdTest::testIntegerDatabase()
 {
     uno::Reference< XOfficeDatabaseDocument > xDocument =
+#if HAVE_FIREBIRD_30
+        getDocumentForFileName("firebird_integer_x64le_ods12.odb");
+#else
         getDocumentForFileName("firebird_integer_x64le.odb");
+#endif
 
     uno::Reference< XConnection > xConnection =
         getConnectionForDocument(xDocument);
-- 
2.9.0