From 16f2b8a533844b6aed90f4c48a32f123400c6c22 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 8 Mar 2016 15:27:19 -0500 Subject: [PATCH] GCSFolder: Add ORDER BY fields in SELECT clause Without this fix, PostgreSQL would complain about unknown columns. --- NEWS | 3 +++ SOPE/GDLContentStore/GCSFolder.m | 29 ++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index 56db81d98..46d9f5df3 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,9 @@ Enhancements - [web] updated Angular Material to version 1.0.6 +Bug fixes + - [web] fix missing columns in SELECT statements (PostgreSQL) + 3.0.2 (2016-03-04) ------------------ diff --git a/SOPE/GDLContentStore/GCSFolder.m b/SOPE/GDLContentStore/GCSFolder.m index 92b5e74e3..70696362d 100644 --- a/SOPE/GDLContentStore/GCSFolder.m +++ b/SOPE/GDLContentStore/GCSFolder.m @@ -428,20 +428,36 @@ static GCSStringFormatter *stringFormatter = nil; ignoreDeleted: (BOOL) ignoreDeleted { EOQualifier *qualifier; + EOSortOrdering *ordering; NSArray *sortOrderings; + NSEnumerator *sortOrderingsList; NSMutableString *sql; - NSMutableArray *whereSql; + NSMutableArray *allFields, *whereSql; GCSTableRequirement requirement; NSString *whereString; -// NSLog(@"queryForFields..."); qualifier = [spec qualifier]; - requirement = [self _tableRequirementForFields: fields - andOrQualifier: qualifier]; + sortOrderings = [spec sortOrderings]; + + if (fields) + allFields = [NSMutableArray arrayWithArray: fields]; + else + allFields = [NSMutableArray arrayWithCapacity: [sortOrderings count]]; + + if ([sortOrderings count] > 0) + { + sortOrderingsList = [sortOrderings objectEnumerator]; + while ((ordering = [sortOrderingsList nextObject])) + { + [allFields addObject: [ordering key]]; + } + } + requirement = [self _tableRequirementForFields: allFields + andOrQualifier: qualifier]; sql = [NSMutableString stringWithCapacity: 256]; [sql appendString: @"SELECT "]; - if (fields) - [sql appendString: [self _selectedFields: fields requirement: requirement]]; + if ([allFields count]) + [sql appendString: [self _selectedFields: allFields requirement: requirement]]; else [sql appendString: @"*"]; [sql appendString:@" FROM "]; @@ -477,7 +493,6 @@ static GCSStringFormatter *stringFormatter = nil; [sql appendFormat: @" WHERE %@", [whereSql componentsJoinedByString: @" AND "]]; - sortOrderings = [spec sortOrderings]; if ([sortOrderings count] > 0) { [sql appendString:@" ORDER BY "];