U:RDoc::TopLevel[ iI"API_CHANGES.rdoc:ETcRDoc::Parser::Simpleo:RDoc::Markup::Document: @parts[S:RDoc::Markup::Heading: leveli: textI"API Changes;To:RDoc::Markup::BlankLineo:RDoc::Markup::List: @type: BULLET: @items[ o:RDoc::Markup::ListItem: @label0;[o:RDoc::Markup::Paragraph;[I"ISQLite3::Database#execute only accepts an array for bind parameters.;T@ o;;0;[ o;;[ I"QSQLite3::ResultSet used to query the database for the first row, regardless ;TI"Pof whether the user asked for it or not. I have removed that so that rows ;TI"Nwill not be returned until the user asks for them. This is a subtle but ;TI",sometimes important change in behavior.;T@ o;;[I"-83882d2208ed189361617d5ab8532a325aaf729d;T@ o;;0;[o;;[ I"QSQLite3::Database#trace now takes either a block or an object that responds ;TI"Qto "call". The previous implementation passed around a VALUE that was cast ;TI"Sto a void *. This is dangerous because the value could get garbage collected ;TI"Pbefore the proc was called. If the user wants data passed around with the ;TI"Lblock, they should use variables available to the closure or create an ;TI" object.;T@ o;;0;[o;;[ I"PSQLite3::Statement#step automatically converts to ruby types, where before ;TI"Lall values were automatically yielded as strings. This will only be a ;TI"Oproblem for people who were accessing information about the database that ;TI"Dwasn't previously passed through the pure ruby conversion code.;T@ o;;0;[o;;[I"JSQLite3::Database#errmsg no longer takes a parameter to return error ;TI"Qmessages as UTF-16. Do people even use that? I opt for staying UTF-8 when ;TI"9possible. See test_integration.rb test_errmsg_utf16;T@ o;;0;[o;;[I"6SQLite3::Database#authorize same changes as trace;T@ o;;0;[o;;[I"Ntest/test_tc_database.rb was removed because we no longer use the Driver ;TI"design pattern.;T@ S; ; i; I" Garbage Collection Strategy;T@ o;;[ I"QAll statements keep pointers back to their respective database connections. ;TI"RThe @connection instance variable on the Statement handle keeps the database ;TI"Rconnection alive. Memory allocated for a statement handler will be freed in ;TI"two cases:;T@ o; ;;;[o;;0;[o;;[I"%close is called on the statement;To;;0;[o;;[I"8The SQLite3::Database object gets garbage collected;T@ o;;[ I"SWe can't free the memory for the statement in the garbage collection function ;TI"Kfor the statement handler. The reason is because there exists a race ;TI"Pcondition. We cannot guarantee the order in which objects will be garbage ;TI"Qcollected. So, it is possible that a connection and a statement are up for ;TI"Rgarbage collection. If the database connection were to be free'd before the ;TI"Lstatement, then boom. Instead we'll be conservative and free unclosed ;TI"2statements when the connection is terminated.;T: @file@:0@omit_headings_from_table_of_contents_below0