New branch 'features/base-preview' available with the following commits: commit ebe883d597c56d4ada66e471a21c9bcda10d06a7 Author: Norbert Thiebaud <nthieb...@gmail.com> Date: Tue Jun 5 18:14:52 2012 -0500
fix bug in commit 32c943e161117e4362ac9246baac2c0fb54e7c79 Change-Id: I684fb4adb68d372914ea42cc4e7bd4459a08b150 commit caab5e8a4762bcded8f16c70eec532b0dc2435c4 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 eece16361dd419656f92344e91a883e63e94dc0e 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 bf40495c23af4696d68e0ac0e63fce7fff3c32cc 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 e245ea6b82373706b2221f854326d593b4c2fb88 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 0fb5b4fbfd291bb4806a1b482448edadd8459794 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Jun 4 17:35:52 2012 +0200 typos in comments Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab commit 0625ef9431e4400c3d52d9f06ebe8550b0d4248a 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 4cb5a0156d8e9978be83c21642816faa69f0cf02 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 217db1dd956f0e13d241e0f3803cd5aa4dfda306 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 b757a813f73c18fc9672e742745e7302119b3850 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Fri Jun 1 14:49:02 2012 +0200 Update comments Change-Id: I7e3f09d61cb35165000a35c8d3c3f2d284cf164e commit ffd16905f1269e35231e0c54a5888c14276c6f06 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 8aac10f9cca48bdd1753a35e119139735a810f0d 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 ae9e025f15d770b994b0c2c4edfd39464b02897c Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Feb 27 13:47:24 2012 +0100 fdo#46675: fixup commit aca30b3fdad1364c7505c0bf4cd204fa349e4ca0 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 0a41e68e8a65a4466267c82fa77007926d7b4578 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 16 09:29:54 2012 +0100 correct indentation commit 1389087562b2a7049e1dd52f83af6b2e6a5499bd Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 16 09:11:08 2012 +0100 typo & copy/paste error in error message commit 99f331eb7f0026ae31f6039c6fdbb1e2cfcdc704 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 e069712cc923fbcaf0b3e6c5453ccd6deba66eae 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 1113cfa4f10250fd283f25d00250ba04d8c643d4 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Feb 14 19:39:01 2012 +0100 comphelper: add getINT64 commit 23dd861e947c0c21243af7148fc1ddf214a208ed 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 e48efc8af444c3016752261650beed779be643b3 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 38eb9e8da8473c2fd30832bd2bbc0fc396a997e0 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 0f8cf0ad5e11eec422019333f2638a11edbea26a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Feb 13 17:53:19 2012 +0100 ResMgr::TestStack more robust commit ea8f1bc8760ebee488d6a86f4e74182a06a22e73 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 4b6431d23ca4e6d3c9125a33bcd5227df7dc0b0c Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 9 13:04:34 2012 +0100 typo in comment commit 0176b8529a6ea7e3c5e4914e91b1ab19145d3839 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 28d056ecac6067464c117cfd11b341ba032d905b Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 8 19:08:20 2012 +0100 ORowSetCache::moveWindow fix variable inversion; fixes subsequentcheck commit 02e1edc0d9d23d733e0f54cb57d2f56ac0234604 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 7d8c50238760a9f39468cff2433a064c9eae64af Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 31 11:39:47 2012 +0100 pgsql: simpler / safer check for system column commit 483079a51db646f58dd823195c324fccac5ba4b0 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 1 18:28:59 2012 +0100 pgsql: implement getColumnPrivileges, generate statement only once commit 55c3a6f9e09cda788539ee7b6a1c131afd01e20e Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 1 18:03:40 2012 +0100 pgsql: clean comments commit cbfd30f09c7a84c60c3bcda4c6fea10af9383bdb 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 4154ca5ca5bc5a1d4cc376f1a689fc2d177c4d23 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 66d718cef646dc5ed1227e55de30b5c430386eec 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 b708aee0303213b83f818f0dfcc458422f11e0b1 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 3eaf5c2a442cfa4a04d457ed3f3d1711b0311003 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jan 19 20:20:06 2012 +0100 ORowSetCache: overhaul internals commit 0a30591e57e6262c7741bce353c2d78ef41751d5 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 e5bfcc51a0d79e28cd03c484a2634996af41288d 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 c88ef368f403ea710a68558026c4988a73abbd51 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jan 18 13:51:14 2012 +0100 Oups... where is my brown paper bag? commit eecbede6c5e0ac79c03babb1f23b4070d63ec419 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 078a0b733b359c6178ed9bd1d6bf6824a14c1197 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jan 18 12:31:06 2012 +0100 janitorial: typo in comments commit 7f9825b2b829636ccc4a77249e8c50a8ef8482e3 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 ebe0f51325ed15b9ea1221500736edc3c720bd26 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 17 09:27:40 2012 +0100 janitorial: typo in private member name commit 8f05585dfaeb64959bb7f05dcba923fb660fa4e8 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 17 09:26:41 2012 +0100 janitorial: const iterator where may be, indentation commit ddba24ecfd3b4ba0d123279764c7f76f489df36b 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 0fe535951105d9729343168ac2cec61ceb6f55e4 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 2d51409686c1d9fb6d431b53efe667c0d0565d1d Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jan 12 15:54:56 2012 +0100 LEM TMP: work around fdo#44721 commit 46be3bbb779b7857d74e9204dd9745e8b4487f4c Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Sun Nov 20 17:37:39 2011 +0100 LEM TODO note commit d4ad39a20ed5880e0cf581ff5aefcae260c84271 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