New branch 'features/base-preview' available with the following commits: commit acfe9ddc71c73d627d6b25c1baf09edf368ecbf1 Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Mon Jun 4 17:35:52 2012 +0200 typos in comments Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab commit 6068bb5753847b8439fb73e661807501fcdc790b Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Fri Jun 1 14:49:02 2012 +0200 Update comments Change-Id: I7e3f09d61cb35165000a35c8d3c3f2d284cf164e commit 8a4ea55022f66392a5e5ccf96e8530a98cd932eb Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Mon Feb 27 13:47:24 2012 +0100 fdo#46675: fixup commit 4e0f9f5ee0a5b57d2c85a479ebe16912e7ad1070 Author: Lionel Elie Mamane <lio...@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 <lio...@mamane.lu> Date: Thu Feb 16 09:29:54 2012 +0100 correct indentation commit cf96373e49cde7035729fa6d99afde30943eee56 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 16 09:11:08 2012 +0100 typo & copy/paste error in error message commit c9e4a7ea679464290977376542636ae7d9953292 Author: Kate Goss <katherine.g...@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 <lio...@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 <lio...@mamane.lu> Date: Tue Feb 14 19:39:01 2012 +0100 comphelper: add getINT64 commit bdbb24a757b61b65de829d59bffc521a8e8d60a8 Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Mon Feb 13 17:53:19 2012 +0100 ResMgr::TestStack more robust commit c229969458a14d08e50fcbd2cd0794c22f76a3ff Author: Lionel Elie Mamane <lio...@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 <lio...@mamane.lu> Date: Thu Feb 9 13:04:34 2012 +0100 typo in comment commit df56eaae5c061afbc4ae11f198bd342ca593dcbf Author: Lionel Elie Mamane <lio...@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 <lio...@mamane.lu> Date: Wed Feb 8 19:08:20 2012 +0100 ORowSetCache::moveWindow fix variable inversion; fixes subsequentcheck commit 937c5e442be3e47a3f3ca74ba681bd33a1cdad25 Author: Lionel Elie Mamane <lio...@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 <lio...@mamane.lu> Date: Tue Jan 31 11:39:47 2012 +0100 pgsql: simpler / safer check for system column commit 1663ba9f647eb642adc6d0047e7e5ffb36bfc53f Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 1 18:28:59 2012 +0100 pgsql: implement getColumnPrivileges, generate statement only once commit 4fcfbf01737a0f2403dc371252e95df4e967bc74 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 1 18:03:40 2012 +0100 pgsql: clean comments commit 784a516524c5fb14771b773490eb8aeaa6280cd4 Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Thu Jan 19 20:20:06 2012 +0100 ORowSetCache: overhaul internals commit 8bd68746fe8c47abdb13f85d048eb749d5c6fbc8 Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Wed Jan 18 13:51:14 2012 +0100 Oups... where is my brown paper bag? commit e5d4cb19f361d91620bafcc3e7b1f58bea1e6ef3 Author: Lionel Elie Mamane <lio...@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 <lio...@mamane.lu> Date: Wed Jan 18 12:31:06 2012 +0100 janitorial: typo in comments commit 8d18506501bf4e7f8fe2ff5d8d0d3dc726d6a4b4 Author: Lionel Elie Mamane <lio...@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 <lio...@mamane.lu> Date: Tue Jan 17 09:27:40 2012 +0100 janitorial: typo in private member name commit 0f599e71b5e2c7202e5652b7355e59f3fe157026 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 17 09:26:41 2012 +0100 janitorial: const iterator where may be, indentation commit 0e1e9a6dce063c2c65ec277822e398753604cedc Author: Lionel Elie Mamane <lio...@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 <lio...@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 <lio...@mamane.lu> Date: Thu Jan 12 15:54:56 2012 +0100 LEM TMP: work around fdo#44721 commit b99e5b2b0dd1c0ca406e76875a3e96997d9f1b13 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Sun Nov 20 17:37:39 2011 +0100 LEM TODO note commit 7e7f03c105f2bebdb4735deef483fe9cb1bd54c9 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Nov 23 21:34:18 2011 +0100 maximal debugging information _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits