summaryrefslogtreecommitdiff
path: root/libopie2
authorzecke <zecke>2005-06-27 17:47:58 (UTC)
committer zecke <zecke>2005-06-27 17:47:58 (UTC)
commitcc4771f193215827036689291d9d3d74d2cbef3f (patch) (unidiff)
tree6e9e1e7ce5da4408ce8984574772079c6a97cf46 /libopie2
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 (limited to 'libopie2') (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
@@ -589,16 +589,14 @@ UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist,
589 // To handle datediffs correctly, we need to remove the year information from 589 // To handle datediffs correctly, we need to remove the year information from
590 // the birthday and anniversary. 590 // the birthday and anniversary.
591 // To do this efficiently, we will create a temporary table which contains the 591 // To do this efficiently, we will create a temporary table which contains the
592 // information we need and do the query on it. 592 // information we need and do the query on it.
593 // This table is just visible for this process and will be removed 593 // This table is just visible for this process and will be removed
594 // automatically after using. 594 // automatically after using.
595 datediff_query = "CREATE TEMP TABLE bs ( uid, \"Birthday\", \"Anniversary\" );"; 595 datediff_query = "SELECT uid,substr(\"Birthday\", 6, 10) as \"BirthdayMD\", substr(\"Anniversary\", 6, 10) as \"AnniversaryMD\" FROM addressbook WHERE ( \"Birthday\" != '' OR \"Anniversary\" != '' ) AND ";
596 datediff_query += "INSERT INTO bs SELECT uid,substr(\"Birthday\", 6, 10),substr(\"Anniversary\", 6, 10) FROM addressbook WHERE ( \"Birthday\" != '' OR \"Anniversary\" != '' );"; 596 datediff_query += QString( " (\"%1MD\" <= '%2-%3\' AND \"%4MD\" >= '%5-%6')" )
597 datediff_query += QString( "SELECT uid FROM bs WHERE " ) + uid_query;
598 datediff_query += QString( " (\"%1\" <= '%2-%3\' AND \"%4\" >= '%5-%6')" )
599 .arg( *it ) 597 .arg( *it )
600 //.arg( QString::number( endDate->year() ).rightJustify( 4, '0' ) ) 598 //.arg( QString::number( endDate->year() ).rightJustify( 4, '0' ) )
601 .arg( QString::number( endDate->month() ).rightJustify( 2, '0' ) ) 599 .arg( QString::number( endDate->month() ).rightJustify( 2, '0' ) )
602 .arg( QString::number( endDate->day() ).rightJustify( 2, '0' ) ) 600 .arg( QString::number( endDate->day() ).rightJustify( 2, '0' ) )
603 .arg( *it ) 601 .arg( *it )
604 //.arg( QString::number( startDate.year() ).rightJustify( 4, '0' ) ) 602 //.arg( QString::number( startDate.year() ).rightJustify( 4, '0' ) )
@@ -681,19 +679,12 @@ UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist,
681 UIDArray empty; 679 UIDArray empty;
682 return empty; 680 return empty;
683 } 681 }
684 682
685 UIDArray list = extractUids( res ); 683 UIDArray list = extractUids( res );
686 684
687 // Remove temp table if created
688 if ( !datediff_query.isEmpty( ) ){
689 qu = "DROP TABLE bs";
690 OSQLRawQuery raw( qu );
691 OSQLResult res = m_driver->query( &raw );
692 }
693
694 return list; 685 return list;
695} 686}
696 687
697UIDArray OPimContactAccessBackend_SQL::matchRegexp( const QRegExp &r ) const 688UIDArray OPimContactAccessBackend_SQL::matchRegexp( const QRegExp &r ) const
698{ 689{
699#if 0 690#if 0