@@ -857,23 +857,23 @@ public struct Delete : ExpressionType {
857
857
858
858
extension Connection {
859
859
860
- public func prepare( query: QueryType ) -> AnySequence < Row > {
860
+ public func prepare( query: QueryType ) throws -> AnySequence < Row > {
861
861
let expression = query. expression
862
- let statement = prepare ( expression. template, expression. bindings)
862
+ let statement = try prepare ( expression. template, expression. bindings)
863
863
864
- let columnNames : [ String : Int ] = {
864
+ let columnNames : [ String : Int ] = try {
865
865
var ( columnNames, idx) = ( [ String: Int] ( ) , 0 )
866
866
column: for each in query. clauses. select. columns ?? [ Expression < Void > ( literal: " * " ) ] {
867
867
var names = each . expression. template. characters. split { $0 == " . " } . map ( String . init)
868
868
let column = names. removeLast ( )
869
869
let namespace = names. joinWithSeparator ( " . " )
870
870
871
- func expandGlob( namespace: Bool ) -> QueryType -> Void {
872
- return { query in
871
+ func expandGlob( namespace: Bool ) -> ( QueryType throws -> Void ) {
872
+ return { ( query: QueryType ) throws -> ( Void ) in
873
873
var q = query. dynamicType. init ( query. clauses. from. name, database: query. clauses. from. database)
874
874
q. clauses. select = query. clauses. select
875
875
let e = q. expression
876
- var names = self . prepare ( e. template, e. bindings) . columnNames. map { $0. quote ( ) }
876
+ var names = try self . prepare ( e. template, e. bindings) . columnNames. map { $0. quote ( ) }
877
877
if namespace { names = names. map { " \( query. tableName ( ) . expression. template) . \( $0) " } }
878
878
for name in names { columnNames [ name] = idx++ }
879
879
}
@@ -886,14 +886,14 @@ extension Connection {
886
886
if !namespace. isEmpty {
887
887
for q in queries {
888
888
if q. tableName ( ) . expression. template == namespace {
889
- expandGlob ( true ) ( q)
889
+ try expandGlob ( true ) ( q)
890
890
continue column
891
891
}
892
892
}
893
893
fatalError ( " no such table: \( namespace) " )
894
894
}
895
895
for q in queries {
896
- expandGlob ( query. clauses. join. count > 0 ) ( q)
896
+ try expandGlob ( query. clauses. join. count > 0 ) ( q)
897
897
}
898
898
continue
899
899
}
@@ -908,30 +908,30 @@ extension Connection {
908
908
}
909
909
}
910
910
911
- public func scalar< V : Value > ( query: ScalarQuery < V > ) -> V {
911
+ public func scalar< V : Value > ( query: ScalarQuery < V > ) throws -> V {
912
912
let expression = query. expression
913
- return value ( scalar ( expression. template, expression. bindings) )
913
+ return value ( try scalar ( expression. template, expression. bindings) )
914
914
}
915
915
916
- public func scalar< V : Value > ( query: ScalarQuery < V ? > ) -> V . ValueType ? {
916
+ public func scalar< V : Value > ( query: ScalarQuery < V ? > ) throws -> V . ValueType ? {
917
917
let expression = query. expression
918
- guard let value = scalar ( expression. template, expression. bindings) as? V . Datatype else { return nil }
918
+ guard let value = try scalar ( expression. template, expression. bindings) as? V . Datatype else { return nil }
919
919
return V . fromDatatypeValue ( value)
920
920
}
921
921
922
- public func scalar< V : Value > ( query: Select < V > ) -> V {
922
+ public func scalar< V : Value > ( query: Select < V > ) throws -> V {
923
923
let expression = query. expression
924
- return value ( scalar ( expression. template, expression. bindings) )
924
+ return value ( try scalar ( expression. template, expression. bindings) )
925
925
}
926
926
927
- public func scalar< V : Value > ( query: Select < V ? > ) -> V . ValueType ? {
927
+ public func scalar< V : Value > ( query: Select < V ? > ) throws -> V . ValueType ? {
928
928
let expression = query. expression
929
- guard let value = scalar ( expression. template, expression. bindings) as? V . Datatype else { return nil }
929
+ guard let value = try scalar ( expression. template, expression. bindings) as? V . Datatype else { return nil }
930
930
return V . fromDatatypeValue ( value)
931
931
}
932
932
933
- public func pluck( query: QueryType ) -> Row ? {
934
- return prepare ( query. limit ( 1 , query. clauses. limit? . offset) ) . generate ( ) . next ( )
933
+ public func pluck( query: QueryType ) throws -> Row ? {
934
+ return try prepare ( query. limit ( 1 , query. clauses. limit? . offset) ) . generate ( ) . next ( )
935
935
}
936
936
937
937
/// Runs an `Insert` query.
0 commit comments