New branch 'features/base-preview' available with the following commits: commit 0cda6605844ef68e45db7a7c05cc4d09ef2bc49a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Jul 16 23:58:18 2012 +0200
fdo#51239 refresh row lazily (when data is requested) This avoids fetching data that will not be requested when the "cursor" is only moved and no data requested. That is typically what RowSetCache does when its own cursor is moved within its window. This basically makes the whole {next,previous,absolute,...}_checked story obsolete, by basically always being as fast as the i_bFetchRow==false case, but in a safer way. Change-Id: I89eaf277069736b3077bde8b45325929db290f2d commit b6783b822c9bdc5c3499ddcf069ecf8c7f59da3f Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jul 12 23:28:10 2012 +0200 errors to stderr Change-Id: I01756622dd7700d3918d156f118cd69c8a15879a commit fcef224c406de4520d10e10629638f74cf636484 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jul 12 18:10:14 2012 +0200 debug unexpected exception Change-Id: I404072caf6ddab0ed833586066507c7d332fcea4 commit ad59b3718bff04f395b92aa5dfe59b196812af79 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jul 12 13:07:03 2012 +0200 fix hsqldb java version detection 1) The values were not properly exclusive. E.g. when compiling under OpenJDK 1.6, iscjava12 was set (!) 2) On Java 1.6, should not enable the parts that are (only) for Java7! 3) When non-JAVA7, need to preprocess the files that have JAVA7-only code, so that it gets removed Change-Id: I99b6bd9e781fee1007a04a4dc3d3f952c1b2eb00 commit 7316378a5ac61f1fa057fee35044456df8eabad1 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jul 3 20:17:01 2012 +0200 embedded HSQLDB: reclaim space occupied by deleted rows Disadvantage is that saving/closing the file may take a significantly longer time Change-Id: I1cc35c34b49e60d73e8d341549c5a3c5ef314b6d commit 19ae4db03ec4d50f45ac1f3bc4a4c6cd5dbf07a3 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Jul 2 19:33:38 2012 +0200 LEM notes Change-Id: I16939e5d6e1f7c0a83f7f2b2dbc9a5b397b45c36 commit 64986575c78b1d1f47513f513bf65616ad35b7cf Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Jul 2 14:48:03 2012 +0200 janitorial: remove unused xParamsAsNames variable Change-Id: Ic4fe24faf75d38a8123a8f0e8304c054760bad85 commit 175b76625db5b7ccfd80f9c1fec8f3ab6213d9fe Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jun 6 14:28:50 2012 +0200 legacy reports: unify treatment of query and table In *both* cases, the value of hidden control "Sorting" (if non-empty) decides the columns being sorted on. Change-Id: I7f4b50c3af8c12e48e5dedd36b5877ad7a9e1b66 commit 799842e21f0eba70949f304712a98f95975483f6 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jun 6 14:26:58 2012 +0200 legacy report wizard: when source is table, save name in QueryName Change-Id: Ie0bdbed9578b95f7fccc3d9ff6d9c8b5b91ac0ab commit 2ec061aec662bd98b6ca4b89c11a0cb20872c9df Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jun 6 14:25:51 2012 +0200 SQLQueryComposer allow setQueryCommand with prependSorting instead of append Change-Id: Ia06794537ea4d0f6f069c83709792ebbcc084804 commit 5da39dc67f229093d2ef24c1dec65b6c705869fd Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jun 6 14:24:54 2012 +0200 db.SQLQueryComposer allow prependSortingCriteria call with addAliasFieldNames Change-Id: I05889ccac213743a55c302bd7249b30f817c0428 commit 8a35d8c058ab98baa1a8a5350c62cca24fa39f59 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jun 6 14:23:50 2012 +0200 cleanup Change-Id: I1ce4279d434ffa58328e17863b2e68af1e813a99 commit c1278da9cec1f973dfc121d2313199138772ab4b Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jun 6 14:23:30 2012 +0200 untabify Change-Id: I984c84534cb4c6cda8bd73a43d79ec8e49afcdeb commit 5952624dca3141c18d5bb029d35ce397f604774b 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 0f0a0f64b05975d6f1710e8431776ff7c05d5f3c 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 df0254de6c3a517dcaf271ba424e40d0ae6874d8 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 213a4f9e9f20ab148c04e0e3f78f29fa5a0c9dbb Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Jun 4 17:35:52 2012 +0200 typos in comments Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab commit 0c13651c47ce2ae1417d72336544c72c3a0c51c9 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 c71bbff1a659c941818984f3d0533c7d7d3d206b 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 e39b38ab186752762b46b3c683f68089f17f5a43 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 53c0f8006b4e7d2d5852c9e1ee4c36e9d6526e27 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Fri Jun 1 14:49:02 2012 +0200 Update comments Change-Id: I7e3f09d61cb35165000a35c8d3c3f2d284cf164e commit 8934393e3bc5edc4a4b134bfee45ba6b9a177faf 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 0676727ec51e1f3bb78a2728a1c9e5be0a262a54 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 70e03de9ff525f914025953e0bd67170e0418711 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Feb 27 13:47:24 2012 +0100 fdo#46675: fixup commit 6bba0eb5a9be91b2522bca4ff0929ecc3e29fc56 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 0b69ed163eb4ce34a38514e01a9050824cdc6912 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 16 09:29:54 2012 +0100 correct indentation commit e62bdb2eacaabdc1d614e72383b13ea08894991a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 16 09:11:08 2012 +0100 typo & copy/paste error in error message commit 84517c0d5c5ee535aaf69368287ecb699732f5d4 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 08a33965b3d7c7f7f086e336bc51c3a1b4455998 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 6711d0c7a838236c735f3d1ed91af321e445a6e6 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Feb 14 19:39:01 2012 +0100 comphelper: add getINT64 commit fb2488ee2a1d25807baec50afff19b7edceaeec3 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 51ee1189def777c37d76a8c1f3724e8e3f6d48a4 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 1d22397fca7e62548ddc70ffa0d556d9a430d8fc 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 f061737b050988208ba72c54354e9ba6d4b4c568 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Feb 13 17:53:19 2012 +0100 ResMgr::TestStack more robust commit 8e204ee9d19f4955fca39083ead1f9c455bf176d 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 a7ffbac1e361b0f2839417941b202915d38bbe88 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Feb 9 13:04:34 2012 +0100 typo in comment commit f71eaeb478193169e6446bbc669a2e80e458a89d 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 0c90adab2eeb6474aabdae3db318fa7252415e81 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 8 19:08:20 2012 +0100 ORowSetCache::moveWindow fix variable inversion; fixes subsequentcheck commit 497d2c6191bdc679dca134ad95fe6f4992c10261 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 8d9a1bf8e4047d305432b65d418ca93c97d675b9 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 31 11:39:47 2012 +0100 pgsql: simpler / safer check for system column commit 1baedfa10f0e23540618bc4dd19ac6aa566a43a0 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 1 18:28:59 2012 +0100 pgsql: implement getColumnPrivileges, generate statement only once commit 48193ce733e258faeeb2f8c4fc57941c1f4c8c8e Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Feb 1 18:03:40 2012 +0100 pgsql: clean comments commit 1b2b29ebbce2dc438ea7aab2ed9ceb8ca6fbf9e9 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 4f7ebc92ac34fdd056f02cb3a8e8caa8f9e99d91 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 67a0f4e284adea8f5bee2a9420a7d861738d6e8a 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 af6030aaac0241adf5aee943d778697368504fb5 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 a64788909d1a43777dd4ead29a9e165e471ac6bf Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jan 19 20:20:06 2012 +0100 ORowSetCache: overhaul internals commit 63c7f83eb9a9505676a06f5a5a1d34792e5f5924 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 088e36bfe929bd81b2289c9344b4226bc433fb4b 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 1a662cf32e8fe37397306f1acc51bb15c3bd3ca8 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jan 18 13:51:14 2012 +0100 Oups... where is my brown paper bag? commit 1eba8958774c886faf59af88fdcaec7b8fea503a 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 1233f97847f225f9c51fa4e03a1b7a8916f0c555 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Jan 18 12:31:06 2012 +0100 janitorial: typo in comments commit 530fe3f8313c4afcb35cffa09a9f78f5c6b65c96 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 7c411bf9f74dae3ce523298fd454c6f672f763b2 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 17 09:27:40 2012 +0100 janitorial: typo in private member name commit d31861c0ba7127353d0d17f4daddfbb94d2d701a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Jan 17 09:26:41 2012 +0100 janitorial: const iterator where may be, indentation commit fa84e44d64fa67f9a340038f2b43251adbfa10d9 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 d9256a32a36f3c3165fbace7f03a22fdda3ce25a 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 ddabdc8df0bba71b564b73484394ddfa2dadff04 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Sun Nov 20 17:37:39 2011 +0100 LEM TODO note commit 034917ea681caa0d577a24d8a2c8f8fee506b284 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Nov 23 21:34:18 2011 +0100 maximal debugging information commit c70b444e8ee896ed02af2e6e47e5338717a08730 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Jul 12 23:23:03 2012 +0200 fdo#50800 populate composedCommandNames ASAP, not at call of getFromClause In particular com/sun/star/wizards/ui/FilterComponent calls getSelectClause before calling getFromClause, and then all hell breaks loose: composedCommandNames is empty, thus cannot find the proper Alias column name, thus the column names in the select list were not properly escaped, ... We have just made getFromClause quadratic instead of linear, but: 1) I do not think this would be a problem (small datastructures) 2) If it is, rather use a hashmap or something like that, wich will also make getSelectClause faster Also make the fallback case of "unknown table" more robust: escape the table name (if any) and column name! Change-Id: I474adc51fc6378d836bd5865d9eb9505983dcbc5 _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits