summaryrefslogtreecommitdiff
path: root/dbaccess
AgeCommit message (Collapse)AuthorFilesLines
2012-06-11remove EraseLeadingChars and EraseTrailingCharsCaolán McNamara8-26/+22
Change-Id: Ib9797fe97cd008cc6508ce8cec47dc5373416892
2012-06-11callcatcher: update unused codeCaolán McNamara4-80/+0
Change-Id: Id5f730fc447b11000b266954f9e7f5287bad02f4
2012-06-08remove unused .mkNorbert Thiebaud2-134/+0
Change-Id: I909a659e8ebfae35ca42680a54fa62dbd726adb5
2012-06-09Remove superfluous empty lines on topThomas Arnhold3-7/+0
More than two lines are removed for readability. Change-Id: Ibff6cf68d7c512e240a54065b54a225bb23a782b
2012-06-06-Werror,-Wself-assign (Clang)Stephan Bergmann1-2/+0
Change-Id: I92f1271ad36e4ae1221182a3a446f36cf770e003
2012-06-06fdo#46808, Adapt UNO services to new style, Part 7, updating ::createNoel Grandin3-10/+12
Update code to use factory method URLTransformer::create Change-Id: I3fd2e838497bcfd8fc949615c0e7d60a6ea47118 Signed-off-by: Stephan Bergmann <sbergman@redhat.com>, added some tweaks.
2012-06-06fdo#46808, Adapt UNO services to new style, Part 7, updating ::createNoel Grandin2-7/+9
Update calls to factories to use new SimpleFileAccess::create method Change-Id: Ie5b0696fe2228a9033b19969245a53c21a61aa14 Signed-off-by: Stephan Bergmann <sbergman@redhat.com>, added some tweaks.
2012-06-04bCheck is guaranteed by the for loop conditionLionel Elie Mamane1-5/+4
Change-Id: Ia54eaa5cb1aa8bb4a052cea25396b07f048ff74c
2012-06-04KeySet.cxx: fix boost include; also...Michael Stahl1-1/+2
... BOOST_STATIC_ASSERT_MSG was added in boost 1.46, while the internal boost is still at version 1.44, so use BOOST_STATIC_ASSERT instead. Change-Id: I14f8e48e31956b34a1a907cd2c4e454a5715889b
2012-06-04i#102625 avoid fetching same row twice in different queriesLionel Elie Mamane2-29/+108
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
2012-06-04Need to refresh row after moving to bookmark!Lionel Elie Mamane1-0/+2
Change-Id: Ia8d12d02829087309e248506a7d3b0f94b5a425e
2012-06-04Cleanup m_xSet in destructorLionel Elie Mamane1-12/+19
Change-Id: I3d7023fcb1857da1ef107a8af0d373b9ca464f03
2012-06-04typos in commentsLionel Elie Mamane1-1/+1
Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab
2012-06-04Remove wrong optimisationLionel Elie Mamane1-1/+9
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
2012-06-02targeted string re-workNorbert Thiebaud1-28/+28
Change-Id: I90c9037b10a288d5d2e36f056c3632c796957fb4
2012-06-02targeted string re-workNorbert Thiebaud16-87/+87
Change-Id: I08114529cc6be6148a4f9ee3c89aafaafada77fe
2012-06-01OKeySet::refreshRow: Invalidate m_xRow/m_xSet when BeforeFirst or AfterLastLionel Elie Mamane1-2/+3
Change-Id: I0f48c099eddc077b2a89e3b7fab66b5da55b57c8
2012-06-01organise & comment code betterLionel Elie Mamane1-2/+8
Continuation of commits to fix fdo#48345 Change-Id: Ie28f6a55cd8715a7180f5d88fe23c5b310440744
2012-06-01dbaccess::OKeySet::wasNull(): OSL_ENSURE we have a m_xRowLionel Elie Mamane1-0/+1
Change-Id: I087d2893d853f431d27c592ba26bdc16e0a9cb84
2012-06-01fdo#47520 use the already retrieved row instead of driver rowLionel Elie Mamane1-2/+1
This avoids asking the driver for the same data twice. This is particularly important for ODBC data sources, because when asking for (VAR)CHAR data the second time, one gets no data (and status SQL_NO_DATA) because of the "retrieve in parts" semantics of these datatypes. Change-Id: I96f2df9927fda72ccf19f78ec5c561f5626c003f
2012-06-01fdo#50372: crash when refresh of last already-known row unexpectedly failsLionel Elie Mamane1-1/+14
Instead, try to do the least unreasonable thing: Fetch a new row If that fails because no new row to fetch, at least we are properly positioned after last row. Calling code may not expect that and get confused, but that is the best we can do. Change-Id: Ib7248e99ae3deee8344e9386cac2c9440e8bccd8
2012-06-01nuke unused namespaceTakeshi Abe1-1/+0
Change-Id: Ic00cdfce4172af0a2f0aa1aa33ef5e386d407976
2012-05-31targetted SAL_N_ELEMENTS reversion.Michael Meeks1-1/+1
Change-Id: I58636bc87bc17ff2b35621ad554bd05f5c1dab20
2012-05-31targetted SAL_N_ELEMENTS reversion.Michael Meeks35-67/+54
Change-Id: I181c5b5dd24836ff0398aa5ed03915c2c7c55183
2012-05-31nuke unused typedefTakeshi Abe1-2/+0
Change-Id: I8848d0e687c3b19be1a8bc1f41c2a0c94e13bbbf
2012-05-29remove unused makefileMatúš Kukan1-301/+0
2012-05-29improve odbc headers handlingMatúš Kukan1-1/+2
2012-05-28Fix typosJulien Nabet1-1/+1
Change-Id: I39d54e3f635be6cb7a42fc9a0f7055619c885950
2012-05-24removed unused member fieldsTakeshi Abe1-2/+0
Change-Id: If89fd07ad78bca303a9bf8484f08cba08afffe8d
2012-05-24convert ResStringArray to rtl::OUStringCaolán McNamara1-1/+1
Change-Id: I51b86a10caa5da6e12583c2b22404b0d9282b13d
2012-05-21removed unused #definesTakeshi Abe1-5/+0
Change-Id: I2aeba0342e46c3a4bd50f49b8a43ebb125269dfa
2012-05-17catch by const referenceTakeshi Abe3-7/+7
Change-Id: I80a26483c4ecd099a1cfe76bdac1e97b947ef104
2012-05-17removed unused const rtl::OUStringTakeshi Abe7-8/+0
Change-Id: I7c3409ac39e690fcf2f7e4085bf6857e6bd182fb
2012-05-17merge the 5 ConstAsciiString duplicate classes togetherCaolán McNamara21-92/+48
a) merge them together and move it into comphelper b) turn it into a POD rather than having vast amounts of destructors registered into the cxa_atexit chain Change-Id: I04d3b9d7804f8e233013c916df9d617a0f84f96a
2012-05-16removed unused constant rtl::OUStringTakeshi Abe3-14/+0
Change-Id: I173275e0f8faa852500d108f65636080f79636c6
2012-05-16remove unneeded include of boost/bind.hppCaolán McNamara1-1/+0
Change-Id: I5a254459a491b9547530d8e312260dceed21f25c
2012-05-15simplify/clarify codeLionel Elie Mamane1-4/+1
2012-05-15fdo#48345 need to refresh row also when not m_bRowCountFinalLionel Elie Mamane1-6/+1
2012-05-14convert GetComment family to rtl::OUStringCaolán McNamara1-1/+1
Change-Id: I563ab83a24ca4f839892548b350486e83dd071d3
2012-05-08fdo#45580 crash on "connect to existing database" wizardLionel Elie Mamane1-1/+1
2012-04-30make ResId::toString a non-static memberCaolán McNamara2-8/+7
Change-Id: I756c0a19bea7b1cc0e290d9f382a04d655819bfb
2012-04-29Prefix ++/-- operators for non-primitive typesJulien Nabet1-1/+1
Change-Id: I827e539c65a7463709af6425d39ccaaedaa73a8d
2012-04-29make gbuild the default assumption of build.plBjoern Michaelsen1-1/+0
this removes dmake completely out of the build for migrated modules build.pl now assumes modules to be gbuild, unless there is a prj/dmake file Change-Id: I674a036b182ee13c5ec093e83cb3d38133112d3b
2012-04-27WaE: exception handlers used in code without unwind supportCaolán McNamara4-10/+4
Change-Id: I1efec5017927d06c519f65312ab29e2b19a6cff6
2012-04-24WaE: equality comparison with extraneous parenthesesTor Lillqvist1-1/+1
2012-04-24WaE: using the result of an assignment as a condition without parenthesesTor Lillqvist1-11/+11
2012-04-24WaE: use of logical '&&' with constant operandTor Lillqvist1-0/+7
2012-04-23Bug 42982 Patch - copytablewizard.cxxAbeer Sethi1-3/+3
2012-04-21Replace css macro with namespace for nicer namespacingThomas Arnhold1-5/+1
2012-04-16mingw: avoid weird build error and -WerrorDavid Tardon1-2/+3
The error message is: "'*((void*)& aValue +1)' may be used uninitialized in this function" using gcc 4.7.0 in gnu++11 mode and boost 1.48.0 .