banshee r3653 - in trunk/banshee: . src/Libraries/Hyena/Hyena.Query
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3653 - in trunk/banshee: . src/Libraries/Hyena/Hyena.Query
- Date: Thu, 3 Apr 2008 05:29:13 +0100 (BST)
Author: gburt
Date: Thu Apr 3 05:29:13 2008
New Revision: 3653
URL: http://svn.gnome.org/viewvc/banshee?rev=3653&view=rev
Log:
2008-04-02 Gabriel Burt <gabriel burt gmail com>
* src/Libraries/Hyena/Hyena.Query/QueryField.cs: Fix issue with searching
and NULL values, eg "a not like '%a%'" would not match NULL values.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryField.cs
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryField.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryField.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryField.cs Thu Apr 3 05:29:13 2008
@@ -129,29 +129,39 @@
if (op == null) op = qv.OperatorSet.First;
+ StringBuilder sb = new StringBuilder ();
+
if (no_custom_format) {
if (qv is StringQueryValue) {
if (column_lowered) {
// The column is pre-lowered, only no need to call lower() in SQL
- return String.Format ("{0} {1}", Column, String.Format (op.SqlFormat, value.ToLower ()));
+ sb.AppendFormat ("{0} {1}", Column, String.Format (op.SqlFormat, value.ToLower ()));
} else {
// Match string values literally and against a lower'd version. Mostly a workaround
// the fact that Sqlite's lower() method only works for ASCII (meaning even with this,
// we're not getting 100% case-insensitive matching).
- return String.Format ("({0} {1} OR LOWER({0}) {2})", Column,
+ sb.AppendFormat ("({0} {1} OR LOWER({0}) {2})", Column,
String.Format (op.SqlFormat, value),
String.Format (op.SqlFormat, value.ToLower ())
);
}
} else {
- return String.Format ("{0} {1}", Column, String.Format (op.SqlFormat, value));
+ sb.AppendFormat ("{0} {1}", Column, String.Format (op.SqlFormat, value));
+ }
+
+ if (op.IsNot) {
+ return String.Format ("({0} OR {1} IS NULL)", sb.ToString (), Column);
+ } else {
+ return String.Format ("({0} AND {1} IS NOT NULL)", sb.ToString (), Column);
}
} else {
- return String.Format (
+ sb.AppendFormat (
Column, String.Format (op.SqlFormat, value),
value, op.IsNot ? "NOT" : null
);
}
+
+ return sb.ToString ();
}
public static string ToTermString (string alias, string op, string value)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]