summaryrefslogtreecommitdiff
authorzecke <zecke>2005-06-27 17:47:58 (UTC)
committer zecke <zecke>2005-06-27 17:47:58 (UTC)
commitcc4771f193215827036689291d9d3d74d2cbef3f (patch) (side-by-side diff)
tree6e9e1e7ce5da4408ce8984574772079c6a97cf46
parent3e1e2a8751a169b553570a585293dd9ea6de41cd (diff)
downloadopie-cc4771f193215827036689291d9d3d74d2cbef3f.zip
opie-cc4771f193215827036689291d9d3d74d2cbef3f.tar.gz
opie-cc4771f193215827036689291d9d3d74d2cbef3f.tar.bz2
Simplify SQL query to not need a temporary SQL table
Patch courtsey Marcin Juszkiewicz (okayed by eilers)
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp13
1 files changed, 2 insertions, 11 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
index 175d62a..6aaa14c 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
@@ -587,20 +587,18 @@ UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist,
if ( settings & OPimContactAccess::DateDiff ) {
// To handle datediffs correctly, we need to remove the year information from
// the birthday and anniversary.
// To do this efficiently, we will create a temporary table which contains the
// information we need and do the query on it.
// This table is just visible for this process and will be removed
// automatically after using.
- datediff_query = "CREATE TEMP TABLE bs ( uid, \"Birthday\", \"Anniversary\" );";
- datediff_query += "INSERT INTO bs SELECT uid,substr(\"Birthday\", 6, 10),substr(\"Anniversary\", 6, 10) FROM addressbook WHERE ( \"Birthday\" != '' OR \"Anniversary\" != '' );";
- datediff_query += QString( "SELECT uid FROM bs WHERE " ) + uid_query;
- datediff_query += QString( " (\"%1\" <= '%2-%3\' AND \"%4\" >= '%5-%6')" )
+ datediff_query = "SELECT uid,substr(\"Birthday\", 6, 10) as \"BirthdayMD\", substr(\"Anniversary\", 6, 10) as \"AnniversaryMD\" FROM addressbook WHERE ( \"Birthday\" != '' OR \"Anniversary\" != '' ) AND ";
+ datediff_query += QString( " (\"%1MD\" <= '%2-%3\' AND \"%4MD\" >= '%5-%6')" )
.arg( *it )
//.arg( QString::number( endDate->year() ).rightJustify( 4, '0' ) )
.arg( QString::number( endDate->month() ).rightJustify( 2, '0' ) )
.arg( QString::number( endDate->day() ).rightJustify( 2, '0' ) )
.arg( *it )
//.arg( QString::number( startDate.year() ).rightJustify( 4, '0' ) )
.arg( QString::number( startDate.month() ).rightJustify( 2, '0' ) )
.arg( QString::number( startDate.day() ).rightJustify( 2, '0' ) ) ;
@@ -679,23 +677,16 @@ UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist,
OSQLResult res = m_driver->query( &raw );
if ( res.state() != OSQLResult::Success ){
UIDArray empty;
return empty;
}
UIDArray list = extractUids( res );
- // Remove temp table if created
- if ( !datediff_query.isEmpty( ) ){
- qu = "DROP TABLE bs";
- OSQLRawQuery raw( qu );
- OSQLResult res = m_driver->query( &raw );
- }
-
return list;
}
UIDArray OPimContactAccessBackend_SQL::matchRegexp( const QRegExp &r ) const
{
#if 0
QArray<int> nix(0);
return nix;