[Libreoffice-commits] Changes to 'features/base-preview'

Lionel Elie Mamane lmamane at kemper.freedesktop.org
Tue Jun 5 09:47:19 PDT 2012


New branch 'features/base-preview' available with the following commits:
commit 3533328aae5f38d6d21c2baee782abc4511bb649
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jun 5 18:40:13 2012 +0200

    fdo#47325 legacy reports: survive absence of Sorting hidden control
    
    Reports created in 3.4 and earlier lack it.
    
    Change-Id: I2cf1cad75fff59f23ad98299c4f94253adf7355b

commit 73680e97aafcb05e118fa8801e61590f10ea30b1
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jun 4 17:54:30 2012 +0200

    i#102625 avoid fetching same row twice in different queries
    
    We do a "SELECT * FROM table" just to fetch the primary key columns;
    so reuse the same XResultSet to fetch all columns.
    Else, we immediately issue a "SELECT * FROM table WHERE
    primary_key=current_value" to read the other columns, which is
    wasteful and particularly silly.
    
    Commit 1ae17f5b03cc14844fb600ca3573a96deb37ab3b already tried
    to do that, but was essentially reverted piecewise because
    it caused fdo#47520, fdo#48345, fdo#50372.
    
    Commit c08067d6da94743d53217cbc26cffae00a22dc3a thought it did that,
    but actually reverted commit 1ae17f5b03cc14844fb600ca3573a96deb37ab3b.
    
    This implementation fetches the whole current row and caches it in memory;
    only one row is cached: when the current row changes, the cache contains
    the new current row.
    
    This could be problematic (wrt to memory consumption) if the current
    row is big (e.g. with BLOBs) and nobody is interested in the data
    anyway (as would often be the case with BLOBs). Note that because of
    our "SELECT *", the driver most probably has it in memory already
    anyway, so we don't make the situation that much worse.
    
    This could be incrementally improved with a heuristic of not
    preemptively caching binary data (and also not LONGVARCHAR / TEXT /
    MEMO / ...); a getFOO on these columns would issue a specific "SELECT
    column FROM table WHERE primary_key=current_value" each time.
    
    The *real* complete fix to all these issues would be to not do "SELECT
    *" at all. Use "SELECT pkey_col1, pkey_col2, ..." when we are only
    interested in the key columns. As to data, somehow figure out which
    columns were ar interested in and "SELECT" only these (and maybe only
    those with "small datatype"?). Interesting columns could be determined
    by our caller (creator) as an argument to our constructor, or some
    heuristic (no binary data, no "big" unbound data).
    Also be extra smart and use *(m_aKeyIter) when getFOO is called
    on a column included in it (and don't include it in any subsequent
    SELECT).
    
    However, there are several pitfalls.
    
    One is buggy drivers that give use column names of columns that we
    cannot fetch :-| Using "SELECT *" works around that because the driver
    there *obviously* gives us only fetchable columns in the result.
    
    Another one is the very restrictive nature of some database access
    technologies. Take for example ODBC:
    
     - Data can be fetched only *once* (with the SQLGetData interface;
       bound columns offer a way around that, but that's viable only for
       constant-length data, not variable-length data).
    
       This could be addressed by an intelligent & lazy cache.
    
     - Data must be fetched in increasing order of column number
       (again, this is about SQLGetData).
    
       This is a harder issue. The current solution has the nice advantage
       of completely isolating the rest of LibO from these restrictions.
    
       I don't currently see how to cleanly avoid (potentially
       unnecessarily) caching column 4 if we are asked for column 3 then
       column 5, just in case we are asked for column 4 later on, unless
       we issue a specific "SELECT column4" later. But the latter would be
       quite expensive in terms of app-to-database roudtripe times :-( and
       thus creates another performance issue.
    
    Change-Id: I999b3f8f0b8a215acb390ffefc839235346e8353

commit c1c169176faa2e624e6289b0c0df4bc2817866a9
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jun 4 17:41:33 2012 +0200

    Need to refresh row after moving to bookmark!
    
    Change-Id: Ia8d12d02829087309e248506a7d3b0f94b5a425e

commit 825630579ecc2a541820d2e8676c80d715fa4331
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jun 4 17:40:30 2012 +0200

    Cleanup m_xSet in destructor
    
    Change-Id: I3d7023fcb1857da1ef107a8af0d373b9ca464f03

commit 5eff5f9290cb4123a39f8289be22cb934261d162
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jun 4 17:35:52 2012 +0200

    typos in comments
    
    Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab

commit 4caae0496de42bad16e452e2ecbb749eea26a9f9
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jun 4 17:31:25 2012 +0200

    Remove wrong optimisation
    
    fixup of d4ae29a37873843c20fe7d5f5f071f8fb201fed9
    after the call to m_pCacheSet->absolute_checked, the data *is* used,
    so we cannot anymore exempt m_pCacheSet from giving correct data.
    
    Change-Id: I7d3644ca08ce43cb030a80984605a1f8a8a64211

commit 7bf7381edc7b01a70a335fdf221975e590d04999
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Jun 1 15:42:27 2012 +0200

    OKeySet::refreshRow: Invalidate m_xRow/m_xSet when BeforeFirst or AfterLast
    
    Change-Id: I0f48c099eddc077b2a89e3b7fab66b5da55b57c8

commit 39ef76e7e819e7133a6ff643b52fcc39faa9d98c
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Jun 1 14:52:46 2012 +0200

    organise & comment code better
    
    Continuation of commits to fix fdo#48345
    
    Change-Id: Ie28f6a55cd8715a7180f5d88fe23c5b310440744

commit 1406b267b1cfeadaa3af6bb77df57456a447fea8
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Jun 1 14:49:02 2012 +0200

    Update comments
    
    Change-Id: I7e3f09d61cb35165000a35c8d3c3f2d284cf164e

commit 9b494c776ae3b7cb2ab7570378fab4ee2bccabeb
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Jun 1 11:38:59 2012 +0200

    dbaccess::OKeySet::wasNull(): OSL_ENSURE we have a m_xRow
    
    Change-Id: I087d2893d853f431d27c592ba26bdc16e0a9cb84

commit c40263e38047282287cb446a205fa2014a2ecb46
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Apr 4 16:00:52 2012 +0200

    ORowSetCache::moveWindow m_nEndPos == m_nStartPos == 0 is OK

commit 823d1d852899fc6ce0b267e075c312179ad21470
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Feb 27 13:47:24 2012 +0100

    fdo#46675: fixup

commit 6c2161cdcc34b195a425db056898764bfbd6655d
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Feb 27 13:10:40 2012 +0100

    fdo#46675: expand group memberships in get*Privileges

commit b32531d4ec3483880b67d31232cc67b9b289b250
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 16 09:29:54 2012 +0100

    correct indentation

commit 36b7148b6a6eef72751193d3ee79ac57e6ccdf73
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 16 09:11:08 2012 +0100

    typo & copy/paste error in error message

commit c6e9f4a5fbf8367c399b6a1a6c176d208b75acaf
Author: Kate Goss <katherine.goss at gmail.com>
Date:   Mon Feb 13 21:53:08 2012 +0000

    Remove unused code from connectivity::odbc::OPreparedStatement
    
    Remove methods getDataBuf(int), getParamLength(int), getPrecision(int).

commit f5eddb846b4df435880fe9233cf9216a7365d5b1
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Feb 14 19:41:08 2012 +0100

    ODBC: align *all* the handling of SQLULEN properties with maximal ODBC size

commit fb96494db060f0a27600d046aad9a84a4261d099
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Feb 14 19:39:01 2012 +0100

    comphelper: add getINT64

commit 725a871b334a314f8628e778af90256f63cab9f9
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Feb 14 18:34:52 2012 +0100

    improve OTools::binParameter/bindData interaction
    
    Don't duplicate the decision point for "data at execution or copied data"

commit cff86a00f841d9a4b903772f8845b2387d14e1a2
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Feb 14 09:49:19 2012 +0100

    new[] already allocates each element of the array
    
    And calls the default constructor, naturally.

commit 5981fb057c9d7fe49c6b954c0b4b103bc013a954
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Feb 14 06:27:51 2012 +0100

    odbc getTableTypes: ask the driver instead of guessing

commit fbf88568804847504ecb8a3640a26d9a7b90339b
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Feb 13 17:53:19 2012 +0100

    ResMgr::TestStack more robust

commit cbad2cb1f6c5583707e9dbebd1da32065f308a30
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 9 13:06:27 2012 +0100

    reorganise code for better readability
    
    No behaviour change intended. However, if behaviour changed, probably the *old* behaviour is buggy, not new one.

commit c1f8c07ca87c9f1c59283b05d7739cb73252e5f6
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 9 13:04:34 2012 +0100

    typo in comment

commit 9a48394ce7a3c6f512f087d5835a1804b7463289
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 9 13:03:24 2012 +0100

    ORowSetCache::moveWindow: yet another off-by-one error

commit be1e3f835f5099552b4edc6b8ec4463830d583a0
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Feb 8 19:08:20 2012 +0100

    ORowSetCache::moveWindow fix variable inversion; fixes subsequentcheck

commit 718f4a3fe24c6600642cfb1541a8ed6847296f38
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Feb 8 12:41:54 2012 +0100

    ORowSetCache: handle case total data < m_nFetchSize
    
    As a drive-by: fillMatrix update m_nEndSize

commit 81276181f1de04d5770a334167df8be18d7b30d6
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 31 11:39:47 2012 +0100

    pgsql: simpler / safer check for system column

commit 2ae7b3a34af058b04b5a8d589adb4f09616a506d
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Feb 1 18:28:59 2012 +0100

    pgsql: implement getColumnPrivileges, generate statement only once

commit ccab3e58652508692cdc57c792076728b727272b
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Feb 1 18:03:40 2012 +0100

    pgsql: clean comments

commit d13bfd426de8785b562771b584869a30b120559c
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 31 22:53:31 2012 +0100

    ORowSetCache: keep m_nEndPos better up-to-date

commit 52208fa626a2f848834d8595d27c5fc84ac791ea
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 24 22:20:31 2012 +0100

    make OTools::getValue insanely safe, factorise get{Int,Long,Byte,...}

commit c271da72279b8eeffffc23fb9e2e43cb790de923
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jan 23 10:19:55 2012 +0100

    ORowSetCache::fillMatrix(): fix case m_nFetchsize > table size
    
    When lowering m_nStartPos, do not duplicate rows above its old value

commit 5ab86735a49c417fc5439172be8005549c3af23b
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Sun Jan 22 01:35:58 2012 +0100

    ORowSetCache::fillMatrix(): correct off-by-one error
    
    Symptom: segfault.
    Thanks to Julien Nabet for precise pointer to problematic code.

commit 8bebe2c063160ec1823aca0d7f3fafb5e9e53e65
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Jan 19 20:20:06 2012 +0100

    ORowSetCache: overhaul internals

commit 7cffa62a894500105437e3b9749aecfcff7bac86
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Jan 19 17:54:10 2012 +0100

    janitorial: don't rely on detail of current OSL_ENSURE implementation
    
    As in: that the compiler won't see the variables in the condition when OSL_DEBUG_LEVEL==0

commit ff6abf4ae18442cb298129fd01c0b4aa8ad475e8
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Jan 19 17:49:32 2012 +0100

    column position 0 is perfectly valid
    
    On the other hand, column position 1 is not guaranteed to exist.
    nCurPos will be BROWSER_INVALID_ID, not 0, in case of error in setting it

commit 3d456c484d6e5aa655d975dd5235bb4e27d4cec6
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Jan 18 13:51:14 2012 +0100

    Oups... where is my brown paper bag?

commit 494e95b944bff5336707aeeeeef28df756dec8c1
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Jan 18 13:10:12 2012 +0100

    OKeySet: tryRefetch and refreshRow share most of their code

commit d9ef0dfc588fc0b003c33899b210abe40c1df1d1
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Jan 18 12:31:06 2012 +0100

    janitorial: typo in comments

commit bb191f693fe2a27fcc5310025ce4b037cb08a908
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 17 13:34:04 2012 +0100

    DbGridControl::SeekCursor: show exception when seek fails (and debug build)

commit 1592437b6b48ffdcf479ddeea477b720bc53ecf6
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 17 09:27:40 2012 +0100

    janitorial: typo in private member name

commit 8034d02a4e2991c25725100510753f8573c40a29
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 17 09:26:41 2012 +0100

    janitorial: const iterator where may be, indentation

commit b5de62fb000f1d68d178b0c715c5f4d39bcdda10
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 17 15:21:41 2012 +0100

    Also teach "foo IS [NOT] bar" to our SQL parser (when bar is not NULL)
    
    Syntax supported by at least SQLite.

commit f5838c172feef67b0700e8de89606e0012bf9ea7
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 17 09:03:17 2012 +0100

    fdo#44813: teach "IS (NOT) DISTINCT FROM" to our SQL parser

commit aae350f7b744984b1472b7690d90d3e1a601b445
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Jan 12 15:54:56 2012 +0100

    LEM TMP: work around fdo#44721

commit 4852a497fae081815c930fff1814b306efc2924f
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Sun Nov 20 17:37:39 2011 +0100

    LEM TODO note

commit b3d143352b05f17e8b81537edc366d9a67704562
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Nov 23 21:34:18 2011 +0100

    maximal debugging information



More information about the Libreoffice-commits mailing list