on master help sign in
fixed the same issue with get_table
083440bmelissam
contribs/lib/SQLite3/sqlite3.idr+5−5
@@ -153,8 +153,8 @@ get_table (MkDBPointer pointer) name = do
153 x <- liftIO(mkForeign (FFun "sqlite3_get_table_idr" [FPtr, FString] FPtr)pointer name)
153 x <- liftIO(mkForeign (FFun "sqlite3_get_table_idr" [FPtr, FString] FPtr)pointer name)
154 flag <- liftIO(nullPtr x)
154 flag <- liftIO(nullPtr x)
155 if flag
155 if flag
156− then fail "Boooo"
156+ then do x <- liftIO(get_error_table pointer) ; fail x
157− else return (MkTBPointer x)
157+ else return (MkTBPointer x)
158 where
158 where
159 get_error_table : Ptr-> IO String
159 get_error_table : Ptr-> IO String
160 get_error_table pointer = do x <- mkForeign (FFun "sqlite3_get_error" [FPtr] FString)pointer
160 get_error_table pointer = do x <- mkForeign (FFun "sqlite3_get_error" [FPtr] FString)pointer
@@ -269,11 +269,11 @@ test = do db <- liftIO (open_db "somedb.db")
269
269
270test2 : DB ()
270test2 : DB ()
271test2 = do db <- liftIO (open_db "somedb.db")
271test2 = do db <- liftIO (open_db "somedb.db")
272− stmt <- (prepare_db db "insert into tbl1 values (?,?);")
272+
273− -- tbl <- (get_table db "SELECT Student.Name FROM Student, Module, Enrollment WHERE Module.Credits = 30 AND Student.School_student = Enrollment.School_Student AND Student.School = Enrollment.School AND Enrollment.Code = Module.Code")
273+ tbl <- (get_table db "SELECT Student.Name FROM Student, Module, Enrollment WHERE Module.Credits = 30 AND Student.School_student = Enrollment.School_Student AND Student.School = Enrollment.School AND Enrollment.Code = Module.Code")
274 --res <- (toList "Student" "select *from Student;" db)
274 --res <- (toList "Student" "select *from Student;" db)
275 -- mydata <- liftIO ( get_data db "Student" 1 1)
275 -- mydata <- liftIO ( get_data db "Student" 1 1)
276− finalize_db stmt
276+
277 c <- liftIO (close_db db)
277 c <- liftIO (close_db db)
278 return ()
278 return ()
279
279
contribs/lib/SQLite3/sqlite3api.c+1
@@ -106,6 +106,7 @@ void* sqlite3_get_table_idr(void* db,
106 if( res != SQLITE_OK && err != NULL){
106 if( res != SQLITE_OK && err != NULL){
107 strncpy(dbi->buffer, err, sizeof(dbi->buffer));
107 strncpy(dbi->buffer, err, sizeof(dbi->buffer));
108 sqlite3_free(err);
108 sqlite3_free(err);
109+ return NULL;
109 }
110 }
110
111
111 tbl -> data_size = array_size;
112 tbl -> data_size = array_size;