Diffstat (limited to 'libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp index 9375f43..2368865 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp +++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp | |||
@@ -280,5 +280,7 @@ namespace { | |||
280 | RemoveQuery::RemoveQuery(int uid ) | 280 | RemoveQuery::RemoveQuery(int uid ) |
281 | : OSQLQuery(), m_uid( uid ) {} | 281 | : OSQLQuery(), m_uid( uid ) {} |
282 | |||
282 | RemoveQuery::~RemoveQuery() {} | 283 | RemoveQuery::~RemoveQuery() {} |
284 | |||
283 | QString RemoveQuery::query()const { | 285 | QString RemoveQuery::query()const { |
284 | QString qu = "DELETE from addressbook where uid = " | 286 | QString qu = "DELETE from addressbook where uid = " |
@@ -290,6 +292,4 @@ namespace { | |||
290 | 292 | ||
291 | 293 | ||
292 | |||
293 | |||
294 | FindQuery::FindQuery(int uid) | 294 | FindQuery::FindQuery(int uid) |
295 | : OSQLQuery(), m_uid( uid ) { | 295 | : OSQLQuery(), m_uid( uid ) { |
@@ -301,10 +301,12 @@ namespace { | |||
301 | } | 301 | } |
302 | QString FindQuery::query()const{ | 302 | QString FindQuery::query()const{ |
303 | if ( m_uids.count() == 0 ) | 303 | if ( m_uids.count() == 0 ) |
304 | return single(); | 304 | return single(); |
305 | else | 305 | else |
306 | return multi(); | 306 | return multi(); |
307 | } | 307 | } |
308 | 308 | ||
309 | |||
310 | |||
309 | QString FindQuery::multi()const { | 311 | QString FindQuery::multi()const { |
310 | QString qu = "select * from addressbook where"; | 312 | QString qu = "select * from addressbook where"; |
@@ -529,8 +531,21 @@ OPimContact OPimContactAccessBackend_SQL::find( int uid, const UIDArray& queryUi | |||
529 | 531 | ||
530 | 532 | ||
531 | UIDArray OPimContactAccessBackend_SQL::queryByExample ( const OPimContact &query, int settings, | 533 | UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist, const OPimContact &query, int settings, |
532 | const QDateTime& qd ) const | 534 | const QDateTime& qd ) const |
533 | { | 535 | { |
534 | QString qu = "SELECT uid FROM addressbook WHERE"; | 536 | QString qu = "SELECT uid FROM addressbook WHERE"; |
537 | |||
538 | // Just add uid's selection if we really try to search in a subset of all uids! Otherwise this would | ||
539 | // just take time and memory! | ||
540 | if ( uidlist.count() != m_uids.count() ) { | ||
541 | qu += " ("; | ||
542 | |||
543 | for ( uint i = 0; i < uidlist.count(); i++ ) { | ||
544 | qu += " uid = " + QString::number( uidlist[i] ) + " OR"; | ||
545 | } | ||
546 | qu.remove( qu.length()-2, 2 ); // Hmmmm.. | ||
547 | qu += " ) AND "; | ||
548 | } | ||
549 | |||
535 | QString searchQuery =""; | 550 | QString searchQuery =""; |
536 | 551 | ||