Commit Graph

1183 Commits

Author SHA1 Message Date
df706c23dc missing system header
Change-Id: Ieb97d877238941d06aab1aa2ef67186bbc3a995a
2012-10-01 16:11:38 -05:00
afb28ae04a missing system header
Change-Id: Icba29c0ebfd30af36b18eb59a23643287985f8c8
2012-10-01 16:08:10 -05:00
36a2db3722 Replace usage of rtl_*Memory with equivalent from string.h
Change-Id: I50ffc10f007f03c3252ef0196b59b881429cc159
Reviewed-on: https://gerrit.libreoffice.org/734
Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com>
Tested-by: Norbert Thiebaud <nthiebaud@gmail.com>
2012-10-01 18:48:05 +00:00
286a7733ac re-base on ALv2 code. 2012-09-29 15:07:42 +01:00
a00c4e02ac Improvements on previous commit
* Made XDatabaseContext inherit XDatabaseRegistrations non-optionally, adapted
  call-sites to just use XDatabaseContext w/o querying.  (The previous commit
  had inadvertantly effectively removed support for XDatabaseRegistrations from
  the ODatabaseContext implementation, as an optional UNO super-interface does
  not lead to a super-class in the corresponding C++ class hierarchy, but making
  the super-interface non-optional fixes that anyway.)

* Adapted some more call-sites to just use XDatabaseContext w/o querying.

* Added @since tag.

* Replaced new uses of comphelper::ComponentContext::getUNOContext with
  comphelper::getComponentContext (see 03a9f139bd9ea1a4f9096fc982e6b326def58532
  "ComponentContext::getUnoContext -> getComponentContext simplification;" I
  intend to get rid of comphelper/componentcontext.hxx much sooner than of
  comphelper/processfactory.hxx).

Change-Id: I68d09f2dbe651629f79ed21cd40cdb6d6b32c624
2012-09-27 15:03:32 +02:00
9c00e38b43 fdo#46808, Adapt sdb::DatabaseContext UNO service to new style
Create a merged XDatabaseContext interface for this service to implement.
Which is backwards-compatible, but does not require creating a new service.

Quite a few IDL files had to be marked as published for this to work.

Change-Id: Ie9a0da88d8c33cc83fc9d2334ff83ab2744c222f
2012-09-27 15:03:32 +02:00
750fc20611 replace remaining InterlockedCount() with inlined version
Change-Id: Ifcfa48fc87f905a91470a5b0fd597b02f220784c
Reviewed-on: https://gerrit.libreoffice.org/671
Tested-by: Norbert Thiebaud <nthiebaud@gmail.com>
Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com>
2012-09-25 01:55:38 +00:00
369e3fdcda fdo#46808, Adapt i18n::LocaleData UNO service to new style
The implementation of the LocaleData implements the optional XLocaleData4,
so rather than creating a new interface for the new-style service, we simply
make the service implement XLocaleData4, which in turn implements
XLocaleData3, XLocaleData2, XLocaleData.

Change-Id: I3e9a48b031be6b2aa5e04b376b3940b942add85a
2012-09-17 14:28:21 +02:00
522b4c65dc fdo#37529 clear DataColumns read-only information when we clear DataColumns
Change-Id: I6f3b4f1646df1244d97ae98f56ba054bc26e3314
2012-09-13 16:33:30 +02:00
3a36408b73 fdo#46808, Adapt util::NumberFormatter UNO service to new style
Create a merged XNumberFormatter2 interface for this service to implement.
Which is backwards-compatible, but does not require creating a new service.

Change-Id: I57f35cde0a9dbbe91c1d2c3d068cb3a97c7245e3
2012-09-03 15:55:06 +02:00
cdadb1b4fb fdo#53557: use metadata's idea of column count to allocate a row
m_pColumnNames contains only the columns that come straight from a table, not calculated columns

Change-Id: I2706790e8c1447d1c4e144bbdef773deeca3e2e8
2012-08-31 18:18:03 +02:00
4a69252e2c -Werror,-Wunused-private-field (Clang towards 3.2)
Change-Id: I55ad905bef36b54fadc245bfb22f687e47d20c3a
2012-08-31 09:04:17 +02:00
3655f25465 fdo#48807 autofilter should not use LIKE operator
This demonstrates a confusion between *values* and *patterns*

Change-Id: I207aa53950166e915bbad22b022c88d07ee6300d
2012-08-30 05:23:06 +02:00
8638f1e72a fdo#46808, Adapt script::Converter service code to new style
Change-Id: I19b3ba7c978e02ce865360f0411007525012149c
2012-08-27 15:40:07 +02:00
7f424c4076 m_nEndPos==m_nStartPos is OK: empty window (for example, empty table)
Change-Id: I5525eb750dfbed282fea272de4a736e6c70e51a9
2012-08-21 19:30:14 +02:00
ed93117447 fdo#53061: Fix for C++11 #define NULL nullptr
Change-Id: Ia1805aab4bec7fef02c96ec4e7a7a0ed9991d3c3
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2012-08-14 10:39:13 +02:00
5b85f6c1ef nPos is 1-based, so allowed to be equal to row count
Change-Id: Idb37cd23a58816bd16c725fda49a2f9875450e79
2012-08-02 12:07:45 +02:00
1e89c6f3d1 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
2012-07-17 09:19:45 +02:00
607e4857bf debug unexpected exception
Change-Id: I404072caf6ddab0ed833586066507c7d332fcea4
2012-07-12 23:39:07 +02:00
eecb5ac9a4 removed useless forward declarations of class
Change-Id: I13cf52cc4e1cf8d5e2453d7ac4b68cc8c64cd011
2012-07-05 19:08:02 +09:00
278000a28b Remove unused defines
Some of them were commented out for documentation purpose.

Change-Id: I29a6b2cbe774b527f0c3a0be5675160817a7f3ce
2012-07-02 17:46:25 +02:00
57154616f0 Remove UNO includes comments
Change-Id: I48e193322967fb75e93eaf81e9e2110d3056f92a
2012-06-29 09:25:09 +02:00
ec5fa0164b replace all but one .hdl include with equivalent .hpp includes.
Change-Id: I15e94f112144549692d0c2babeb48c77adcb93a9
2012-06-21 19:28:47 +01:00
54e9a28390 typo: paramters, paramaters -> parameters
Change-Id: If58683331c50f2a95204e8e2dea11edbef3ccb63
2012-06-19 16:44:08 +02:00
577cf8ff67 re-base on ALv2 code. 2012-06-14 17:41:07 +01:00
2106d8e648 callcatcher: update unused code
Change-Id: Id5f730fc447b11000b266954f9e7f5287bad02f4
2012-06-11 14:46:45 +01:00
3770bbbdba Remove superfluous empty lines on top
More than two lines are removed for readability.

Change-Id: Ibff6cf68d7c512e240a54065b54a225bb23a782b
2012-06-09 04:57:58 +02:00
a519cacd61 -Werror,-Wself-assign (Clang)
Change-Id: I92f1271ad36e4ae1221182a3a446f36cf770e003
2012-06-06 14:07:37 +02:00
43f9468d35 bCheck is guaranteed by the for loop condition
Change-Id: Ia54eaa5cb1aa8bb4a052cea25396b07f048ff74c
2012-06-04 23:43:41 +02:00
1ca20c89c0 KeySet.cxx: fix boost include; also...
... 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-04 20:07:26 +02:00
e581bef6df 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
2012-06-04 19:22:48 +02:00
60f5a9d372 Need to refresh row after moving to bookmark!
Change-Id: Ia8d12d02829087309e248506a7d3b0f94b5a425e
2012-06-04 19:22:48 +02:00
d147ade334 Cleanup m_xSet in destructor
Change-Id: I3d7023fcb1857da1ef107a8af0d373b9ca464f03
2012-06-04 19:22:48 +02:00
5e6a233e7b typos in comments
Change-Id: I1dbb1990033602d7909ecdee72b8b699cce44cab
2012-06-04 19:22:45 +02:00
df31ed33b7 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
2012-06-04 19:22:45 +02:00
cf04745f7a targeted string re-work
Change-Id: I08114529cc6be6148a4f9ee3c89aafaafada77fe
2012-06-02 12:58:04 -05:00
24ea39d726 OKeySet::refreshRow: Invalidate m_xRow/m_xSet when BeforeFirst or AfterLast
Change-Id: I0f48c099eddc077b2a89e3b7fab66b5da55b57c8
2012-06-01 17:03:13 +02:00
e7e21a6fea organise & comment code better
Continuation of commits to fix fdo#48345

Change-Id: Ie28f6a55cd8715a7180f5d88fe23c5b310440744
2012-06-01 17:03:01 +02:00
3c436c2b0c dbaccess::OKeySet::wasNull(): OSL_ENSURE we have a m_xRow
Change-Id: I087d2893d853f431d27c592ba26bdc16e0a9cb84
2012-06-01 17:02:44 +02:00
228c360e7d fdo#47520 use the already retrieved row instead of driver row
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-01 17:02:10 +02:00
76a74b72db fdo#50372: crash when refresh of last already-known row unexpectedly fails
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-01 17:01:52 +02:00
a0bbb2a1af targetted SAL_N_ELEMENTS reversion.
Change-Id: I181c5b5dd24836ff0398aa5ed03915c2c7c55183
2012-05-31 13:09:03 +01:00
bb9f730458 nuke unused typedef
Change-Id: I8848d0e687c3b19be1a8bc1f41c2a0c94e13bbbf
2012-05-31 01:56:28 +09:00
dcd5136b80 Fix typos
Change-Id: I39d54e3f635be6cb7a42fc9a0f7055619c885950
2012-05-28 14:51:14 +02:00
5dcf536b69 merge the 5 ConstAsciiString duplicate classes together
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-17 14:03:26 +01:00
b2022330c0 removed unused constant rtl::OUString
Change-Id: I173275e0f8faa852500d108f65636080f79636c6
2012-05-16 23:28:22 +09:00
2ffe693d7e simplify/clarify code 2012-05-15 18:52:21 +02:00
8fca982829 fdo#48345 need to refresh row also when not m_bRowCountFinal 2012-05-15 18:52:12 +02:00
e34d9be24e Prefix ++/-- operators for non-primitive types
Change-Id: I827e539c65a7463709af6425d39ccaaedaa73a8d
2012-04-29 16:35:32 +02:00
d6bc02f8c4 Replaced equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(...)) with == operator 2012-04-06 20:03:42 +02:00