diff --git a/c_src/sqlite3_drv.c b/c_src/sqlite3_drv.c index c72c57c..855dd78 100644 --- a/c_src/sqlite3_drv.c +++ b/c_src/sqlite3_drv.c @@ -122,6 +122,7 @@ static int control( ErlDrvData drv_data, unsigned int command, char *buf, int len, char **rbuf, int rlen) { sqlite3_drv_t* driver_data = (sqlite3_drv_t*) drv_data; + int i; switch (command) { case CMD_SQL_EXEC: sql_exec(driver_data, buf, len); @@ -946,12 +947,14 @@ static int prepared_bind(sqlite3_drv_t *drv, char *buffer, int buffer_size) { #endif ei_decode_version(buffer, &index, NULL); + ei_decode_tuple_header(buffer, &index, &size); + // assert(size == 2); ei_decode_long(buffer, &index, &long_prepared_index); unsigned int prepared_index = (unsigned int) long_prepared_index; if (prepared_index >= drv->prepared_count) { return output_error(drv, SQLITE_MISUSE, - "Trying to reset non-existent prepared statement"); + "Trying to bind non-existent prepared statement"); } sqlite3_stmt *statement = drv->prepared_stmts[prepared_index]; diff --git a/src/sqlite3.erl b/src/sqlite3.erl index 6f860fc..05b00d1 100644 --- a/src/sqlite3.erl +++ b/src/sqlite3.erl @@ -823,7 +823,7 @@ exec(Port, {prepare, SQL}) -> wait_result(Port); exec(Port, {bind, Index, Params}) -> Bin = term_to_binary({Index, Params}), - port_control(Port, ?SQL_BIND_AND_EXEC_COMMAND, Bin), + port_control(Port, ?PREPARED_BIND, Bin), wait_result(Port); exec(Port, {Cmd, Index}) when is_integer(Index) -> CmdCode = case Cmd of