@@ -10,16 +10,12 @@ extension ScalarDatabaseFunction {
1010 SQLITE_UTF8 | ( isDeterministic ? SQLITE_DETERMINISTIC : 0 ) ,
1111 box,
1212 { context, argumentCount, arguments in
13- do {
14- let box = Unmanaged < ScalarDatabaseFunctionBox >
15- . fromOpaque ( sqlite3_user_data ( context) )
16- . takeUnretainedValue ( )
17- let arguments = try [ QueryBinding] ( argumentCount: argumentCount, arguments: arguments)
18- let output = box. function. invoke ( arguments)
19- try output. result ( db: context)
20- } catch {
21- sqlite3_result_error ( context, error. localizedDescription, - 1 )
22- }
13+ Unmanaged < ScalarDatabaseFunctionBox >
14+ . fromOpaque ( sqlite3_user_data ( context) )
15+ . takeUnretainedValue ( )
16+ . function
17+ . invoke ( [ QueryBinding] ( argumentCount: argumentCount, arguments: arguments) )
18+ . result ( db: context)
2319 } ,
2420 nil ,
2521 nil ,
@@ -39,9 +35,9 @@ private final class ScalarDatabaseFunctionBox {
3935}
4036
4137extension [ QueryBinding ] {
42- fileprivate init ( argumentCount: Int32 , arguments: UnsafeMutablePointer < OpaquePointer ? > ? ) throws {
43- self = try ( 0 ..< argumentCount) . map { idx in
44- let value = arguments ? [ Int ( idx ) ]
38+ fileprivate init ( argumentCount: Int32 , arguments: UnsafeMutablePointer < OpaquePointer ? > ? ) {
39+ self = ( 0 ..< argumentCount) . map { offset in
40+ let value = arguments ? [ Int ( offset ) ]
4541 switch sqlite3_value_type ( value) {
4642 case SQLITE_BLOB:
4743 if let blob = sqlite3_value_blob ( value) {
@@ -60,7 +56,7 @@ extension [QueryBinding] {
6056 case SQLITE_TEXT:
6157 return . text( String ( cString: UnsafePointer ( sqlite3_value_text ( value) ) ) )
6258 default :
63- throw UnknownType ( )
59+ return . invalid ( UnknownType ( ) )
6460 }
6561 }
6662 }
@@ -69,7 +65,7 @@ extension [QueryBinding] {
6965}
7066
7167extension QueryBinding {
72- fileprivate func result( db: OpaquePointer ? ) throws {
68+ fileprivate func result( db: OpaquePointer ? ) {
7369 switch self {
7470 case . blob( let value) :
7571 sqlite3_result_blob ( db, Array ( value) , Int32 ( value. count) , SQLITE_TRANSIENT)
@@ -86,7 +82,7 @@ extension QueryBinding {
8682 case . uuid( let value) :
8783 sqlite3_result_text ( db, value. uuidString. lowercased ( ) , - 1 , SQLITE_TRANSIENT)
8884 case . invalid( let error) :
89- throw error. underlyingError
85+ sqlite3_result_error ( db , error. localizedDescription , - 1 )
9086 }
9187 }
9288}
0 commit comments