HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: //usr/local/rvm/gems/default/doc/sqlite3-1.4.2/ri/page-API_CHANGES_rdoc.ri
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