@@ -857,23 +857,23 @@ public struct Delete : ExpressionType {
857857
858858extension Connection {
859859
860- public func prepare( query: QueryType ) -> AnySequence < Row > {
860+ public func prepare( query: QueryType ) throws -> AnySequence < Row > {
861861 let expression = query. expression
862- let statement = prepare ( expression. template, expression. bindings)
862+ let statement = try prepare ( expression. template, expression. bindings)
863863
864- let columnNames : [ String : Int ] = {
864+ let columnNames : [ String : Int ] = try {
865865 var ( columnNames, idx) = ( [ String: Int] ( ) , 0 )
866866 column: for each in query. clauses. select. columns ?? [ Expression < Void > ( literal: " * " ) ] {
867867 var names = each . expression. template. characters. split { $0 == " . " } . map ( String . init)
868868 let column = names. removeLast ( )
869869 let namespace = names. joinWithSeparator ( " . " )
870870
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
873873 var q = query. dynamicType. init ( query. clauses. from. name, database: query. clauses. from. database)
874874 q. clauses. select = query. clauses. select
875875 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 ( ) }
877877 if namespace { names = names. map { " \( query. tableName ( ) . expression. template) . \( $0) " } }
878878 for name in names { columnNames [ name] = idx++ }
879879 }
@@ -886,14 +886,14 @@ extension Connection {
886886 if !namespace. isEmpty {
887887 for q in queries {
888888 if q. tableName ( ) . expression. template == namespace {
889- expandGlob ( true ) ( q)
889+ try expandGlob ( true ) ( q)
890890 continue column
891891 }
892892 }
893893 fatalError ( " no such table: \( namespace) " )
894894 }
895895 for q in queries {
896- expandGlob ( query. clauses. join. count > 0 ) ( q)
896+ try expandGlob ( query. clauses. join. count > 0 ) ( q)
897897 }
898898 continue
899899 }
@@ -908,30 +908,30 @@ extension Connection {
908908 }
909909 }
910910
911- public func scalar< V : Value > ( query: ScalarQuery < V > ) -> V {
911+ public func scalar< V : Value > ( query: ScalarQuery < V > ) throws -> V {
912912 let expression = query. expression
913- return value ( scalar ( expression. template, expression. bindings) )
913+ return value ( try scalar ( expression. template, expression. bindings) )
914914 }
915915
916- public func scalar< V : Value > ( query: ScalarQuery < V ? > ) -> V . ValueType ? {
916+ public func scalar< V : Value > ( query: ScalarQuery < V ? > ) throws -> V . ValueType ? {
917917 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 }
919919 return V . fromDatatypeValue ( value)
920920 }
921921
922- public func scalar< V : Value > ( query: Select < V > ) -> V {
922+ public func scalar< V : Value > ( query: Select < V > ) throws -> V {
923923 let expression = query. expression
924- return value ( scalar ( expression. template, expression. bindings) )
924+ return value ( try scalar ( expression. template, expression. bindings) )
925925 }
926926
927- public func scalar< V : Value > ( query: Select < V ? > ) -> V . ValueType ? {
927+ public func scalar< V : Value > ( query: Select < V ? > ) throws -> V . ValueType ? {
928928 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 }
930930 return V . fromDatatypeValue ( value)
931931 }
932932
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 ( )
935935 }
936936
937937 /// Runs an `Insert` query.
0 commit comments