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

Lionel Elie Mamane lmamane at kemper.freedesktop.org
Tue Jun 5 13:21:00 PDT 2012


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

    fdo#47473 try to set new order only after field columns are available
    
    Change-Id: If8ba8f4e12aaebadec86a7f445a6d32bd363106d

commit 791281a1c7090d6d667dabd1e4e0f0852233f1ba
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 1ee778a9173c340f399e12b8f026ff3bf6e50c2d
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 c3cc44a90b7dd3bf373226d9c0f67cb1c0216d96
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 a2523d0d42f97fe2ea0a7559195f2e6008ffaf9d
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Jun 4 17:35:52 2012 +0200

    typos in comments
    
    Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab

commit 6068bb5753847b8439fb73e661807501fcdc790b
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 c243ce55a69e45cf20546ec740567c4a3e257936
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 f62e1e0664443a852ec7600d68646b5eeb365315
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 53a442248f8dc459edc4f95ddaee022d0ac871b3
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Jun 1 14:49:02 2012 +0200

    Update comments
    
    Change-Id: I7e3f09d61cb35165000a35c8d3c3f2d284cf164e

commit 8a4ea55022f66392a5e5ccf96e8530a98cd932eb
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 0ceeb727a3b9c31ad48f06068b6de885cf9a8543
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 afdbde323f70a7547f424d37e9b5e7dab74b216d
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Feb 27 13:47:24 2012 +0100

    fdo#46675: fixup

commit 4e0f9f5ee0a5b57d2c85a479ebe16912e7ad1070
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 06f16f72979d222addabc23dfd3bb6803e74df35
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 16 09:29:54 2012 +0100

    correct indentation

commit cf96373e49cde7035729fa6d99afde30943eee56
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 c9e4a7ea679464290977376542636ae7d9953292
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 1e0fbce7dda0644ff836e512f7d27ae6fd79770b
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 13b1b42f98b58ac62f5926cc7b995de5186c4562
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Feb 14 19:39:01 2012 +0100

    comphelper: add getINT64

commit bdbb24a757b61b65de829d59bffc521a8e8d60a8
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 2a1004e120d5932d144234ba323bdca1bd1dca6a
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 b4bccb6ad4f1acf793230589b379a83936d56e11
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 78f47c7dae24610e11e513f7d99a63c265d469a5
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Mon Feb 13 17:53:19 2012 +0100

    ResMgr::TestStack more robust

commit c229969458a14d08e50fcbd2cd0794c22f76a3ff
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 9f0d77d3c4b1c8b84ef14b16f58a9ef2f50d3e0d
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Feb 9 13:04:34 2012 +0100

    typo in comment

commit df56eaae5c061afbc4ae11f198bd342ca593dcbf
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 53b735da7a44b5bde0d6ec4e5a7d955926f48307
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 937c5e442be3e47a3f3ca74ba681bd33a1cdad25
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 b0a5e7b37241060b5131513f6370fe8f7da6151f
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 1663ba9f647eb642adc6d0047e7e5ffb36bfc53f
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 4fcfbf01737a0f2403dc371252e95df4e967bc74
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Feb 1 18:03:40 2012 +0100

    pgsql: clean comments

commit 784a516524c5fb14771b773490eb8aeaa6280cd4
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 76343b31ed940c7beff04fd7345c3959776f9d02
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 24283daca7880039da335a3213e9099d3556cbf6
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 ebb114f4f4efe87ae382bf3193a68f246f35f80e
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 785345f7008df2299e238b633db457d2512f48ba
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Jan 19 20:20:06 2012 +0100

    ORowSetCache: overhaul internals

commit 8bd68746fe8c47abdb13f85d048eb749d5c6fbc8
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 5d6da65469195813f5bd3405d94f62832664c2f7
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 c6d0b3e66b8c2a9f94aca89a2aec47833d02e9b9
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 e5d4cb19f361d91620bafcc3e7b1f58bea1e6ef3
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 40539c29de280131edf02221dd4e5e08176e6984
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Jan 18 12:31:06 2012 +0100

    janitorial: typo in comments

commit 8d18506501bf4e7f8fe2ff5d8d0d3dc726d6a4b4
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 40950a028d4a18353cda15512a7917cc66b476eb
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jan 17 09:27:40 2012 +0100

    janitorial: typo in private member name

commit 0f599e71b5e2c7202e5652b7355e59f3fe157026
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 0e1e9a6dce063c2c65ec277822e398753604cedc
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 33f16012716315cb1f538f281b216bac1697a21c
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 b0f7c9b9ce2c3857316bc29cf034bcde69c690ac
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Thu Jan 12 15:54:56 2012 +0100

    LEM TMP: work around fdo#44721

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

    LEM TODO note

commit 7e7f03c105f2bebdb4735deef483fe9cb1bd54c9
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