From 8ec1f1fdad1f68765fd97fe99eac4370aa4bc447 Mon Sep 17 00:00:00 2001 From: Max Lapshin Date: Wed, 14 Oct 2009 15:27:03 +0400 Subject: [PATCH] driver working and passes its test --- priv/sqlite3_drv.c | 7 ++++--- src/sqlite3.erl | 4 ++-- test.erl | 8 +++++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/priv/sqlite3_drv.c b/priv/sqlite3_drv.c index 82ada8f..a67997e 100644 --- a/priv/sqlite3_drv.c +++ b/priv/sqlite3_drv.c @@ -95,6 +95,7 @@ static int sql_exec(sqlite3_drv_t *drv, char *command, int command_size) { char *rest = NULL; sqlite3_stmt *statement; + // fprintf(stderr, "Preexec: %.*s\n", command_size, command); result = sqlite3_prepare_v2(drv->db, command, command_size, &statement, (const char **)&rest); if(result != SQLITE_OK) { ErlDrvTermData *dataset; @@ -192,7 +193,7 @@ static void sql_exec_async(void *_async_command) { dataset[base + 2 + column_count*2 + 6] = driver_mk_atom("rows"); } - fprintf(stderr, "Exec: %s\n", sqlite3_sql(statement)); + // fprintf(stderr, "Exec: %s\n", sqlite3_sql(statement)); while ((next_row = sqlite3_step(statement)) == SQLITE_ROW) { @@ -313,7 +314,7 @@ static void sql_exec_async(void *_async_command) { async_command->dataset = dataset; async_command->term_count = term_count; - fprintf(stderr, "Total term count: %p %d, rows count: %dx%d\n", statement, term_count, column_count, row_count); + // fprintf(stderr, "Total term count: %p %d, rows count: %dx%d\n", statement, term_count, column_count, row_count); } static void ready_async(ErlDrvData drv_data, ErlDrvThreadData thread_data) @@ -322,7 +323,7 @@ static void ready_async(ErlDrvData drv_data, ErlDrvThreadData thread_data) sqlite3_drv_t *drv = async_command->driver_data; int res = driver_output_term(drv->port, async_command->dataset, async_command->term_count); - fprintf(stderr, "Total term count: %p %d, rows count: %d (%d)\n", async_command->statement, async_command->term_count, async_command->row_count, res); + // fprintf(stderr, "Total term count: %p %d, rows count: %d (%d)\n", async_command->statement, async_command->term_count, async_command->row_count, res); sql_free_async(async_command); } diff --git a/src/sqlite3.erl b/src/sqlite3.erl index 77d1b03..c90bff3 100644 --- a/src/sqlite3.erl +++ b/src/sqlite3.erl @@ -461,7 +461,7 @@ create_cmd(Dbase) -> wait_result(Port) -> receive {Port, Reply} -> - io:format("Reply: ~p~n", [Reply]), + % io:format("Reply: ~p~n", [Reply]), Reply; {error, Reason} -> io:format("Error: ~p~n", [Reason]), @@ -488,5 +488,5 @@ build_table_info([], Acc) -> build_table_info([[ColName, ColType] | Tl], Acc) -> build_table_info(Tl, [{list_to_atom(ColName), sqlite3_lib:col_type(ColType)}| Acc]); build_table_info([[ColName, ColType, "PRIMARY", "KEY"] | Tl], Acc) -> - build_table_info(Tl, [{list_to_atom(ColName), sqlite3_lib:col_type(ColType)}| Acc]). + build_table_info(Tl, [{list_to_atom(ColName), primary_key}| Acc]). diff --git a/test.erl b/test.erl index 4c5142a..e7928d4 100755 --- a/test.erl +++ b/test.erl @@ -6,12 +6,14 @@ test() -> file:delete("store.db"), sqlite3:open(ct), - sqlite3:create_table(ct, user, [{name, text}, {age, integer}, {wage, integer}]), + sqlite3:create_table(ct, user, [{id, integer}, {name, text}, {age, integer}, {wage, integer}]), [user] = sqlite3:list_tables(ct), - [{name, text}, {age, integer}, {wage, integer}] = sqlite3:table_info(ct, user), + [{id, primary_key}, {name, text}, {age, integer}, {wage, integer}] = sqlite3:table_info(ct, user), {id, Id1} = sqlite3:write(ct, user, [{name, "abby"}, {age, 20}, {wage, 2000}]), + Id1 = 1, {id, Id2} = sqlite3:write(ct, user, [{name, "marge"}, {age, 30}, {wage, 3000}]), - [{columns, [name, age, wage]}, {rows, [{<<"abby">>, 20, 2000}, {<<"marge">>, 30, 3000}]}] = sqlite3:sql_exec(ct, "select * from user;"), + Id2 = 2, + [{columns, [id, name, age, wage]}, {rows, [{1, <<"abby">>, 20, 2000}, {2, <<"marge">>, 30, 3000}]}] = sqlite3:sql_exec(ct, "select * from user;"), sqlite3:read(ct, user, {name, "abby"}), sqlite3:delete(ct, user, {name, "abby"}), sqlite3:drop_table(ct, user),