File: //usr/local/rvm/gems/default/doc/sqlite3-1.4.2/ri/page-API_CHANGES_rdoc.ri
U:RDoc::TopLevel[ i I"API_CHANGES.rdoc:ETcRDoc::Parser::Simpleo:RDoc::Markup::Document:@parts[S:RDoc::Markup::Heading:
leveli: textI"API Changes;To:RDoc::Markup::BlankLine o: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