[rygel/rygel-0-18] media-export: Fix virtual containers
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/rygel-0-18] media-export: Fix virtual containers
- Date: Fri, 9 Aug 2013 08:11:10 +0000 (UTC)
commit 82d94e2aabc322fd190e4fe3b7924444128af1c8
Author: Jens Georg <jensg openismus com>
Date: Wed Aug 7 13:09:24 2013 +0200
media-export: Fix virtual containers
Final fix. Add dummy columns from sorting to union as well to not break the
"All" container use-case.
Hopefully that's the final fix now
.../rygel-media-export-media-cache.vala | 31 +++++++++++++------
1 files changed, 21 insertions(+), 10 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-media-cache.vala
b/src/plugins/media-export/rygel-media-export-media-cache.vala
index 687354c..a241f5b 100644
--- a/src/plugins/media-export/rygel-media-export-media-cache.vala
+++ b/src/plugins/media-export/rygel-media-export-media-cache.vala
@@ -432,28 +432,37 @@ public class Rygel.MediaExport.MediaCache : Object {
v = max_count;
args.append (v);
string extra_columns;
+ int column_count;
+ var builder = new StringBuilder ();
var data = new ArrayList<string> ();
var sql_sort_order = MediaCache.translate_sort_criteria
(sort_criteria,
- out extra_columns);
+ out extra_columns,
+ out column_count);
// title here is actually the meta-data column, so if we had
// dc:title in the sort criteria, we need to change this
sql_sort_order = sql_sort_order.replace ("o.title", "_column");
- extra_columns = extra_columns.replace (",o.title", "");
+ extra_columns = extra_columns.replace ("o.title", "1");
- var sql = this.sql.make (SQLString.GET_META_DATA_COLUMN);
if (add_all_container) {
- sql = "SELECT 'all_place_holder' AS _column UNION " + sql;
+ builder.append ("SELECT 'all_place_holder' AS _column ");
+ for (var i = 0; i < column_count; i++) {
+ builder.append (", 1 ");
+ }
+ builder.append ("UNION ");
}
- var cursor = this.db.exec_cursor (sql.printf (column,
- extra_columns,
- filter,
- sql_sort_order),
- args.values);
+
+ builder.append_printf (this.sql.make (SQLString.GET_META_DATA_COLUMN),
+ column,
+ extra_columns,
+ filter,
+ sql_sort_order);
+
+ var cursor = this.db.exec_cursor (builder.str, args.values);
foreach (var statement in cursor) {
data.add (statement.column_text (0));
}
@@ -1111,11 +1120,13 @@ public class Rygel.MediaExport.MediaCache : Object {
private static string translate_sort_criteria
(string sort_criteria,
- out string extra_columns = null) {
+ out string extra_columns = null,
+ out int column_count = null) {
string? collate;
var builder = new StringBuilder("ORDER BY ");
var column_builder = new StringBuilder ();
var fields = sort_criteria.split (",");
+ column_count = fields.length;
foreach (unowned string field in fields) {
try {
var column = MediaCache.map_operand_to_column
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]