Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


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 <lionel@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


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.