With a PostgreSQL-SDBC database, Base query design does not allow the
user to use groupings and aggregate functions.

Change PostgreSQL-SDBC so that it declares to support Core SQL.

Please apply to libreoffice-3-5

See dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx

OSelectionBrowseBox::initialize

        if ( lcl_SupportsCoreSQLGrammar(xConnection) )
        {
            xub_StrLen nCount   = m_aFunctionStrings.GetTokenCount();
            for (xub_StrLen nIdx = 0; nIdx < nCount; nIdx++)
                m_pFunctionCell->InsertEntry(m_aFunctionStrings.GetToken(nIdx));
        }

where m_aFunctionStrings has been prepopulated by:

        IParseContext::InternationalKeyCode eFunctions[] = { 
IParseContext::KEY_AVG,IParseContext::KEY_COUNT,IParseContext::KEY_MAX
            ,IParseContext::KEY_MIN,IParseContext::KEY_SUM
            ,IParseContext::KEY_EVERY
            ,IParseContext::KEY_ANY
            ,IParseContext::KEY_SOME
            ,IParseContext::KEY_STDDEV_POP
            ,IParseContext::KEY_STDDEV_SAMP
            ,IParseContext::KEY_VAR_SAMP
            ,IParseContext::KEY_VAR_POP
            ,IParseContext::KEY_COLLECT
            ,IParseContext::KEY_FUSION
            ,IParseContext::KEY_INTERSECTION
        };

       for (size_t i = 0; i < SAL_N_ELEMENTS(eFunctions); ++i)
        {
            m_aFunctionStrings += String(RTL_CONSTASCII_USTRINGPARAM(";"));
            m_aFunctionStrings += 
String(ByteString(rContext.getIntlKeywordAscii(eFunctions[i])),RTL_TEXTENCODING_UTF8);

        }

and also

OSelectionBrowseBox::setFunctionCell:

    if ( xConnection.is() )
    {
        // Diese Funktionen stehen nur unter CORE zur Verf�gung
        }
        else
        {
            // nur COUNT(*) erlaubt
    }

-- 
Lionel
>From c6955a3b9cff116310392be9bf280aea1dd9eac5 Mon Sep 17 00:00:00 2001
From: Lionel Elie Mamane <lio...@mamane.lu>
Date: Thu, 9 Feb 2012 18:34:04 +0100
Subject: [PATCH] fdo#45249 declare support for Core SQL -> Base allows user
 aggregate functions

---
 .../drivers/postgresql/pq_databasemetadata.cxx     |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx b/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
index 7170ff6..9821f3a 100644
--- a/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
+++ b/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
@@ -725,7 +725,12 @@ sal_Bool DatabaseMetaData::supportsMinimumSQLGrammar(  ) throw (SQLException, Ru
 sal_Bool DatabaseMetaData::supportsCoreSQLGrammar(  ) throw (SQLException, RuntimeException)
 {
     // LEM: jdbc driver says not, although the comments in it seem old
-    return sal_False;
+    //      fdo#45249 Base query design won't use any aggregate function
+    //      (except COUNT(*) unless we say yes, so say yes.
+    //      Actually, Base assumes *also* support for aggregate functions "collect, fusion, intersection"
+    //      as soon as supportsCoreSQLGrammar() returns true.
+    //      Those are *not* Core SQL, though. They are in optional feature S271 "Basic multiset support"
+    return sal_True;
 }
 
 sal_Bool DatabaseMetaData::supportsExtendedSQLGrammar(  ) throw (SQLException, RuntimeException)
-- 
1.7.7.3

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to