author | zecke <zecke> | 2005-06-27 17:47:58 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-06-27 17:47:58 (UTC) |
commit | cc4771f193215827036689291d9d3d74d2cbef3f (patch) (unidiff) | |
tree | 6e9e1e7ce5da4408ce8984574772079c6a97cf46 | |
parent | 3e1e2a8751a169b553570a585293dd9ea6de41cd (diff) | |
download | opie-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)
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp | 13 |
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, | |||
587 | 587 | ||
588 | if ( settings & OPimContactAccess::DateDiff ) { | 588 | if ( settings & OPimContactAccess::DateDiff ) { |
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' ) ) |
605 | .arg( QString::number( startDate.month() ).rightJustify( 2, '0' ) ) | 603 | .arg( QString::number( startDate.month() ).rightJustify( 2, '0' ) ) |
606 | .arg( QString::number( startDate.day() ).rightJustify( 2, '0' ) ) ; | 604 | .arg( QString::number( startDate.day() ).rightJustify( 2, '0' ) ) ; |
@@ -679,23 +677,16 @@ UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist, | |||
679 | OSQLResult res = m_driver->query( &raw ); | 677 | OSQLResult res = m_driver->query( &raw ); |
680 | if ( res.state() != OSQLResult::Success ){ | 678 | if ( res.state() != OSQLResult::Success ){ |
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 | ||
697 | UIDArray OPimContactAccessBackend_SQL::matchRegexp( const QRegExp &r ) const | 688 | UIDArray OPimContactAccessBackend_SQL::matchRegexp( const QRegExp &r ) const |
698 | { | 689 | { |
699 | #if 0 | 690 | #if 0 |
700 | QArray<int> nix(0); | 691 | QArray<int> nix(0); |
701 | return nix; | 692 | return nix; |