@@ -155,6 +155,31 @@ closed_p(VALUE self)
155
155
return Qfalse ;
156
156
}
157
157
158
+ // TODO DOCUMENT
159
+ static VALUE
160
+ discard (VALUE self )
161
+ {
162
+ sqlite3RubyPtr ctx ;
163
+ sqlite3_file * sfile ;
164
+ int status ;
165
+
166
+ TypedData_Get_Struct (self , sqlite3Ruby , & database_type , ctx );
167
+
168
+ status = sqlite3_file_control (ctx -> db , NULL , SQLITE_FCNTL_FILE_POINTER , & sfile );
169
+ if (status == 0 && sfile -> pMethods != NULL ) {
170
+ sfile -> pMethods -> xClose (sfile );
171
+ }
172
+
173
+ status = sqlite3_file_control (ctx -> db , NULL , SQLITE_FCNTL_JOURNAL_POINTER , & sfile );
174
+ if (status == 0 && sfile -> pMethods != NULL ) {
175
+ sfile -> pMethods -> xClose (sfile );
176
+ }
177
+
178
+ ctx -> db = NULL ;
179
+
180
+ return Qnil ;
181
+ }
182
+
158
183
/* call-seq: total_changes
159
184
*
160
185
* Returns the total number of changes made to this database instance
@@ -890,6 +915,7 @@ init_sqlite3_database(void)
890
915
rb_define_method (cSqlite3Database , "collation" , collation , 2 );
891
916
rb_define_method (cSqlite3Database , "close" , sqlite3_rb_close , 0 );
892
917
rb_define_method (cSqlite3Database , "closed?" , closed_p , 0 );
918
+ rb_define_method (cSqlite3Database , "discard" , discard , 0 );
893
919
rb_define_method (cSqlite3Database , "total_changes" , total_changes , 0 );
894
920
rb_define_method (cSqlite3Database , "trace" , trace , -1 );
895
921
rb_define_method (cSqlite3Database , "last_insert_row_id" , last_insert_row_id , 0 );
0 commit comments