175
178
static GValue* _sql_heavy_common_function_compress_sql_heavy_user_function_user_func (SQLHeavyUserFunctionContext* ctx, GValueArray* args, gpointer self, GError** error);
176
179
static GValue* _sql_heavy_common_function_decompress_sql_heavy_user_function_user_func (SQLHeavyUserFunctionContext* ctx, GValueArray* args, gpointer self, GError** error);
177
180
static void sql_heavy_database_backup_async_data_free (gpointer _data);
178
static gboolean sql_heavy_database_backup_async_co (SqlHeavyDatabaseBackupAsyncData* data);
181
static gboolean sql_heavy_database_backup_async_co (SqlHeavyDatabaseBackupAsyncData* _data_);
179
182
static void sql_heavy_database_backup_async_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
180
183
gboolean sql_heavy_error_if_not_ok (gint ec, SQLHeavyQueryable* queryable, GError** error);
181
184
gint sql_heavy_database_direct_compare (SQLHeavyDatabase* a, SQLHeavyDatabase* b);
182
185
static gboolean sql_heavy_database_real_init (SQLHeavyDatabase* self, GCancellable* cancellable, GError** error);
183
186
const gchar* sql_heavy_sqlite_errstr (gint ec);
184
static void _lambda6_ (SQLHeavyDatabase* self, const gchar* sql);
185
static void __lambda6__sqlite_trace_callback (gpointer self, const gchar* message);
187
static void __lambda8_ (SQLHeavyDatabase* self, const gchar* sql);
188
static void ___lambda8__sqlite_trace_callback (gpointer self, const gchar* message);
186
189
static void _sql_heavy_database_update_hook_cb_sqlite_update_callback (gpointer self, int action, const gchar* dbname, const gchar* table, gint64 rowid);
187
static gint _lambda7_ (SQLHeavyDatabase* self, sqlite3* db, const gchar* dbname, gint pages);
188
static gint __lambda7__sql_heavy_wal_hook_callback (gpointer self, sqlite3* db, const gchar* dbname, gint pages);
190
static gint _sql_heavy_database_journal_mode____lambda9_ (SQLHeavyDatabase* self, sqlite3* db, const gchar* dbname, gint pages);
191
static gint __sql_heavy_database_journal_mode____lambda9__sql_heavy_wal_hook_callback (gpointer self, sqlite3* db, const gchar* dbname, gint pages);
189
192
static void sql_heavy_database_real_wal_committed (SQLHeavyDatabase* self, const gchar* db_name, gint pages);
190
193
static void g_cclosure_user_marshal_VOID__STRING_INT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
191
194
static void sql_heavy_database_finalize (GObject* obj);
193
196
static void _vala_sql_heavy_database_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
199
static void _g_object_unref0_ (gpointer var) {
200
(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
196
204
static void sql_heavy_database_try_wal_checkpoint (SQLHeavyDatabase* self) {
197
205
GError * _inner_error_ = NULL;
198
206
g_return_if_fail (self != NULL);
199
sql_heavy_database_wal_checkpoint (self, NULL, &_inner_error_);
200
if (_inner_error_ != NULL) {
201
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
202
goto __catch3_sql_heavy_error;
208
sql_heavy_database_wal_checkpoint (self, NULL, &_inner_error_);
209
if (_inner_error_ != NULL) {
210
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
211
goto __catch3_sql_heavy_error;
213
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
214
g_clear_error (&_inner_error_);
204
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
205
g_clear_error (&_inner_error_);
209
219
__catch3_sql_heavy_error:
212
224
e = _inner_error_;
213
225
_inner_error_ = NULL;
214
g_critical ("sqlheavy-database.vala:51: Unable to auto-checkpoint: %s", e->message);
227
_tmp1_ = _tmp0_->message;
228
g_critical ("sqlheavy-database.vala:51: Unable to auto-checkpoint: %s", _tmp1_);
215
229
_g_error_free0 (e);
240
254
g_return_if_fail (self != NULL);
241
255
g_return_if_fail (table != NULL);
243
const gchar* _tmp1_ = NULL;
246
gconstpointer _tmp3_ = NULL;
248
GSequenceIter* _tmp7_ = NULL;
258
_tmp0_ = self->priv->orm_tables;
249
259
g_static_rec_mutex_lock (&self->priv->__lock_orm_tables);
250
if (self->priv->orm_tables == NULL) {
251
GHashTable* _tmp0_ = NULL;
252
_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_sequence_free);
253
_g_hash_table_unref0 (self->priv->orm_tables);
254
self->priv->orm_tables = _tmp0_;
256
_tmp1_ = sql_heavy_table_get_name (table);
257
_tmp2_ = g_strdup (_tmp1_);
259
_tmp3_ = g_hash_table_lookup (self->priv->orm_tables, tblname);
260
list = (GSequence*) _tmp3_;
263
GSequence* _tmp5_ = NULL;
264
gconstpointer _tmp6_ = NULL;
265
_tmp4_ = g_strdup (tblname);
266
_tmp5_ = g_sequence_new (NULL);
267
g_hash_table_insert (self->priv->orm_tables, _tmp4_, _tmp5_);
268
_tmp6_ = g_hash_table_lookup (self->priv->orm_tables, tblname);
269
list = (GSequence*) _tmp6_;
271
_tmp7_ = g_sequence_insert_sorted (list, table, _sql_heavy_table_direct_compare_gcompare_data_func, NULL);
262
SQLHeavyTable* _tmp6_;
268
const gchar* _tmp11_;
269
gconstpointer _tmp12_ = NULL;
273
SQLHeavyTable* _tmp22_;
274
GSequenceIter* _tmp23_ = NULL;
275
_tmp1_ = self->priv->orm_tables;
276
if (_tmp1_ == NULL) {
279
GDestroyNotify _tmp4_;
282
_tmp3_ = g_str_equal;
284
_tmp5_ = g_hash_table_new_full (_tmp2_, _tmp3_, _tmp4_, (GDestroyNotify) g_sequence_free);
285
_g_hash_table_unref0 (self->priv->orm_tables);
286
self->priv->orm_tables = _tmp5_;
289
_tmp7_ = sql_heavy_table_get_name (_tmp6_);
291
_tmp9_ = g_strdup (_tmp8_);
293
_tmp10_ = self->priv->orm_tables;
295
_tmp12_ = g_hash_table_lookup (_tmp10_, _tmp11_);
296
list = (GSequence*) _tmp12_;
298
if (_tmp13_ == NULL) {
300
const gchar* _tmp15_;
304
const gchar* _tmp19_;
305
gconstpointer _tmp20_ = NULL;
306
_tmp14_ = self->priv->orm_tables;
308
_tmp16_ = g_strdup (_tmp15_);
309
_tmp17_ = g_sequence_new (NULL);
310
g_hash_table_insert (_tmp14_, _tmp16_, _tmp17_);
311
_tmp18_ = self->priv->orm_tables;
313
_tmp20_ = g_hash_table_lookup (_tmp18_, _tmp19_);
314
list = (GSequence*) _tmp20_;
318
_tmp23_ = g_sequence_insert_sorted (_tmp21_, _tmp22_, _sql_heavy_table_direct_compare_gcompare_data_func, NULL);
274
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
324
_tmp24_ = self->priv->orm_tables;
325
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
275
327
if (_inner_error_ != NULL) {
276
328
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
277
329
g_clear_error (&_inner_error_);
291
343
g_return_if_fail (self != NULL);
292
344
g_return_if_fail (table != NULL);
294
const gchar* _tmp0_ = NULL;
295
gconstpointer _tmp1_ = NULL;
347
_tmp0_ = self->priv->orm_tables;
297
348
g_static_rec_mutex_lock (&self->priv->__lock_orm_tables);
298
_tmp0_ = sql_heavy_table_get_name (table);
299
_tmp1_ = g_hash_table_lookup (self->priv->orm_tables, _tmp0_);
300
list = (GSequence*) _tmp1_;
302
GSequenceIter* _tmp2_ = NULL;
303
GSequenceIter* _tmp3_ = NULL;
305
gconstpointer _tmp4_ = NULL;
307
_tmp2_ = g_sequence_search (list, table, _sql_heavy_table_direct_compare_gcompare_data_func, NULL);
308
_tmp3_ = g_sequence_iter_prev (_tmp2_);
310
_tmp4_ = g_sequence_get (iter);
311
t2 = (SQLHeavyTable*) _tmp4_;
312
if (((gulong) table) == ((gulong) t2)) {
313
g_sequence_remove (iter);
351
SQLHeavyTable* _tmp2_;
354
gconstpointer _tmp5_ = NULL;
357
_tmp1_ = self->priv->orm_tables;
359
_tmp3_ = sql_heavy_table_get_name (_tmp2_);
361
_tmp5_ = g_hash_table_lookup (_tmp1_, _tmp4_);
362
list = (GSequence*) _tmp5_;
364
if (_tmp6_ != NULL) {
366
SQLHeavyTable* _tmp8_;
367
GSequenceIter* _tmp9_ = NULL;
368
GSequenceIter* _tmp10_ = NULL;
370
GSequenceIter* _tmp11_;
371
gconstpointer _tmp12_ = NULL;
373
SQLHeavyTable* _tmp13_;
374
SQLHeavyTable* _tmp14_;
377
_tmp9_ = g_sequence_search (_tmp7_, _tmp8_, _sql_heavy_table_direct_compare_gcompare_data_func, NULL);
378
_tmp10_ = g_sequence_iter_prev (_tmp9_);
381
_tmp12_ = g_sequence_get (_tmp11_);
382
t2 = (SQLHeavyTable*) _tmp12_;
385
if (((gulong) _tmp13_) == ((gulong) _tmp14_)) {
387
GSequenceIter* _tmp16_;
390
g_sequence_remove (_tmp16_);
317
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
397
_tmp17_ = self->priv->orm_tables;
398
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
318
400
if (_inner_error_ != NULL) {
319
401
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
320
402
g_clear_error (&_inner_error_);
330
412
* See SQLite documentation at [[http://www.sqlite.org/c3ref/update_hook.html]]
332
414
static void sql_heavy_database_update_hook_cb (SQLHeavyDatabase* self, int action, const gchar* dbname, const gchar* table, gint64 rowid) {
333
416
g_return_if_fail (self != NULL);
334
417
g_return_if_fail (dbname != NULL);
335
418
g_return_if_fail (table != NULL);
336
if (self->priv->orm_tables != NULL) {
337
gconstpointer _tmp0_ = NULL;
419
_tmp0_ = self->priv->orm_tables;
420
if (_tmp0_ != NULL) {
423
gconstpointer _tmp3_ = NULL;
339
_tmp0_ = g_hash_table_lookup (self->priv->orm_tables, table);
340
list = (GSequence*) _tmp0_;
426
_tmp1_ = self->priv->orm_tables;
428
_tmp3_ = g_hash_table_lookup (_tmp1_, _tmp2_);
429
list = (GSequence*) _tmp3_;
431
if (_tmp4_ != NULL) {
343
GSequenceIter* _tmp1_ = NULL;
434
GSequenceIter* _tmp6_ = NULL;
344
435
GSequenceIter* iter;
345
_tmp1_ = g_sequence_get_begin_iter (list);
437
_tmp6_ = g_sequence_get_begin_iter (_tmp5_);
352
gconstpointer _tmp5_ = NULL;
444
GSequenceIter* _tmp11_;
445
gboolean _tmp12_ = FALSE;
446
GSequenceIter* _tmp13_;
447
gconstpointer _tmp14_ = NULL;
353
448
SQLHeavyTable* tbl;
355
GSequenceIter* _tmp3_ = NULL;
356
_tmp3_ = g_sequence_iter_next (iter);
452
GSequenceIter* _tmp9_;
453
GSequenceIter* _tmp10_ = NULL;
455
_tmp10_ = g_sequence_iter_next (_tmp9_);
360
_tmp4_ = g_sequence_iter_is_end (iter);
460
_tmp12_ = g_sequence_iter_is_end (_tmp11_);
364
_tmp5_ = g_sequence_get (iter);
365
tbl = (SQLHeavyTable*) _tmp5_;
366
if (action == SQLITE_UPDATE) {
367
g_signal_emit_by_name (tbl, "row-modified", rowid);
465
_tmp14_ = g_sequence_get (_tmp13_);
466
tbl = (SQLHeavyTable*) _tmp14_;
468
if (_tmp15_ == SQLITE_UPDATE) {
469
SQLHeavyTable* _tmp16_;
473
g_signal_emit_by_name (_tmp16_, "row-modified", _tmp17_);
369
if (action == SQLITE_INSERT) {
370
g_signal_emit_by_name (tbl, "row-inserted", rowid);
477
if (_tmp18_ == SQLITE_INSERT) {
478
SQLHeavyTable* _tmp19_;
482
g_signal_emit_by_name (_tmp19_, "row-inserted", _tmp20_);
372
if (action == SQLITE_DELETE) {
373
g_signal_emit_by_name (tbl, "row-deleted", rowid);
486
if (_tmp21_ == SQLITE_DELETE) {
487
SQLHeavyTable* _tmp22_;
491
g_signal_emit_by_name (_tmp22_, "row-deleted", _tmp23_);
413
535
static void sql_heavy_database_real_unlock (SQLHeavyQueryable* base) {
414
536
SQLHeavyDatabase * self;
537
sqlite3_mutex* _tmp26_;
415
538
GError * _inner_error_ = NULL;
416
539
self = (SQLHeavyDatabase*) base;
418
gboolean _tmp0_ = FALSE;
542
_tmp0_ = self->priv->_queue;
419
543
g_static_rec_mutex_lock (&self->priv->__lock__queue);
420
if (self->priv->_queue != NULL) {
422
_tmp1_ = g_sequence_get_length (self->priv->_queue);
429
GSequenceIter* _tmp2_ = NULL;
431
_tmp2_ = g_sequence_get_begin_iter (self->priv->_queue);
438
gconstpointer _tmp6_ = NULL;
439
SQLHeavyQueryResult* _tmp7_ = NULL;
440
SQLHeavyQueryResult* _result_;
442
GSequenceIter* _tmp4_ = NULL;
443
_tmp4_ = g_sequence_iter_next (iter);
447
_tmp5_ = g_sequence_iter_is_end (iter);
451
_tmp6_ = g_sequence_get (iter);
452
_tmp7_ = sql_heavy_query_result_new_no_exec ((SQLHeavyQuery*) _tmp6_, &_inner_error_);
454
if (_inner_error_ != NULL) {
455
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
456
goto __catch7_sql_heavy_error;
458
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
459
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
460
g_clear_error (&_inner_error_);
463
sql_heavy_query_result_next_internal (_result_, &_inner_error_);
464
if (_inner_error_ != NULL) {
465
_g_object_unref0 (_result_);
466
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
467
goto __catch7_sql_heavy_error;
469
_g_object_unref0 (_result_);
470
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
471
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
472
g_clear_error (&_inner_error_);
475
g_sequence_remove (iter);
476
_g_object_unref0 (_result_);
481
__catch7_sql_heavy_error:
485
_inner_error_ = NULL;
486
g_critical ("sqlheavy-database.vala:167: Unable to execute queued query: %s", e->message);
490
if (_inner_error_ != NULL) {
491
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
492
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
493
g_clear_error (&_inner_error_);
545
gboolean _tmp1_ = FALSE;
548
_tmp2_ = self->priv->_queue;
549
if (_tmp2_ != NULL) {
552
_tmp3_ = self->priv->_queue;
553
_tmp4_ = g_sequence_get_length (_tmp3_);
563
GSequenceIter* _tmp7_ = NULL;
565
_tmp6_ = self->priv->_queue;
566
_tmp7_ = g_sequence_get_begin_iter (_tmp6_);
573
GSequenceIter* _tmp12_;
574
gboolean _tmp13_ = FALSE;
575
GSequenceIter* _tmp14_;
576
gconstpointer _tmp15_ = NULL;
577
SQLHeavyQueryResult* _tmp16_;
578
SQLHeavyQueryResult* _result_;
579
SQLHeavyQueryResult* _tmp18_;
581
GSequenceIter* _tmp21_;
584
GSequenceIter* _tmp10_;
585
GSequenceIter* _tmp11_ = NULL;
587
_tmp11_ = g_sequence_iter_next (_tmp10_);
592
_tmp13_ = g_sequence_iter_is_end (_tmp12_);
597
_tmp15_ = g_sequence_get (_tmp14_);
598
_tmp16_ = sql_heavy_query_result_new_no_exec ((SQLHeavyQuery*) _tmp15_, &_inner_error_);
600
if (_inner_error_ != NULL) {
601
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
602
goto __catch7_sql_heavy_error;
606
_tmp17_ = self->priv->_queue;
607
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
609
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
610
g_clear_error (&_inner_error_);
614
sql_heavy_query_result_next_internal (_tmp18_, &_inner_error_);
615
if (_inner_error_ != NULL) {
616
_g_object_unref0 (_result_);
617
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
618
goto __catch7_sql_heavy_error;
620
_g_object_unref0 (_result_);
623
_tmp19_ = self->priv->_queue;
624
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
626
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
627
g_clear_error (&_inner_error_);
630
_tmp20_ = self->priv->_queue;
632
g_sequence_remove (_tmp21_);
633
_g_object_unref0 (_result_);
639
__catch7_sql_heavy_error:
643
const gchar* _tmp23_;
645
_inner_error_ = NULL;
647
_tmp23_ = _tmp22_->message;
648
g_critical ("sqlheavy-database.vala:167: Unable to execute queued query: %s", _tmp23_);
652
if (_inner_error_ != NULL) {
655
_tmp24_ = self->priv->_queue;
656
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
658
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
659
g_clear_error (&_inner_error_);
498
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
667
_tmp25_ = self->priv->_queue;
668
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
499
670
if (_inner_error_ != NULL) {
500
671
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
501
672
g_clear_error (&_inner_error_);
505
sqlite3_mutex_leave (self->priv->_transaction_lock);
676
_tmp26_ = self->priv->_transaction_lock;
677
sqlite3_mutex_leave (_tmp26_);
520
692
self = (SQLHeavyDatabase*) base;
521
693
g_return_if_fail (query != NULL);
523
SQLHeavyQuery* _tmp1_;
524
GSequenceIter* _tmp2_ = NULL;
696
_tmp0_ = self->priv->_queue;
525
697
g_static_rec_mutex_lock (&self->priv->__lock__queue);
526
if (self->priv->_queue == NULL) {
527
GSequence* _tmp0_ = NULL;
528
_tmp0_ = g_sequence_new (g_object_unref);
529
_g_sequence_free0 (self->priv->_queue);
530
self->priv->_queue = _tmp0_;
701
SQLHeavyQuery* _tmp4_;
702
SQLHeavyQuery* _tmp5_;
703
GSequenceIter* _tmp6_ = NULL;
704
_tmp1_ = self->priv->_queue;
705
if (_tmp1_ == NULL) {
707
_tmp2_ = g_sequence_new (_g_object_unref0_);
708
_g_sequence_free0 (self->priv->_queue);
709
self->priv->_queue = _tmp2_;
711
_tmp3_ = self->priv->_queue;
713
_tmp5_ = _g_object_ref0 (_tmp4_);
714
_tmp6_ = g_sequence_append (_tmp3_, _tmp5_);
532
_tmp1_ = _g_object_ref0 (query);
533
_tmp2_ = g_sequence_append (self->priv->_queue, _tmp1_);
535
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
719
_tmp7_ = self->priv->_queue;
720
g_static_rec_mutex_unlock (&self->priv->__lock__queue);
536
722
if (_inner_error_ != NULL) {
537
723
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
538
724
g_propagate_error (error, _inner_error_);
566
754
* @see _step_lock
568
756
void sql_heavy_database_step_unlock (SQLHeavyDatabase* self) {
757
sqlite3_mutex* _tmp0_;
569
758
GError * _inner_error_ = NULL;
570
759
g_return_if_fail (self != NULL);
571
sqlite3_mutex_leave (self->priv->_step_lock);
760
_tmp0_ = self->priv->_step_lock;
761
sqlite3_mutex_leave (_tmp0_);
573
GSequenceIter* _tmp0_ = NULL;
764
_tmp1_ = self->priv->needs_update_on_step_unlock;
575
765
g_static_rec_mutex_lock (&self->priv->__lock_needs_update_on_step_unlock);
576
_tmp0_ = g_sequence_get_begin_iter (self->priv->needs_update_on_step_unlock);
580
gconstpointer _tmp2_ = NULL;
582
768
GSequenceIter* _tmp3_ = NULL;
583
_tmp1_ = g_sequence_iter_is_end (i);
587
_tmp2_ = g_sequence_get (i);
588
sql_heavy_row_update_cache ((SQLHeavyRow*) _tmp2_, &_inner_error_);
589
if (_inner_error_ != NULL) {
590
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
591
goto __catch10_sql_heavy_error;
593
g_static_rec_mutex_unlock (&self->priv->__lock_needs_update_on_step_unlock);
594
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
595
g_clear_error (&_inner_error_);
599
__catch10_sql_heavy_error:
603
_inner_error_ = NULL;
604
g_warning ("sqlheavy-database.vala:224: Unable to update row cache: %s", e->message);
608
if (_inner_error_ != NULL) {
609
g_static_rec_mutex_unlock (&self->priv->__lock_needs_update_on_step_unlock);
610
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
611
g_clear_error (&_inner_error_);
615
_tmp3_ = g_sequence_iter_next (i);
770
_tmp2_ = self->priv->needs_update_on_step_unlock;
771
_tmp3_ = g_sequence_get_begin_iter (_tmp2_);
617
g_sequence_remove (o);
774
GSequenceIter* _tmp4_;
775
gboolean _tmp5_ = FALSE;
776
GSequenceIter* _tmp12_;
778
GSequenceIter* _tmp13_;
779
GSequenceIter* _tmp14_ = NULL;
781
GSequenceIter* _tmp16_;
783
_tmp5_ = g_sequence_iter_is_end (_tmp4_);
788
GSequenceIter* _tmp6_;
789
gconstpointer _tmp7_ = NULL;
791
_tmp7_ = g_sequence_get (_tmp6_);
792
sql_heavy_row_update_cache ((SQLHeavyRow*) _tmp7_, &_inner_error_);
793
if (_inner_error_ != NULL) {
794
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
795
goto __catch10_sql_heavy_error;
799
_tmp8_ = self->priv->needs_update_on_step_unlock;
800
g_static_rec_mutex_unlock (&self->priv->__lock_needs_update_on_step_unlock);
802
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
803
g_clear_error (&_inner_error_);
808
__catch10_sql_heavy_error:
812
const gchar* _tmp10_;
814
_inner_error_ = NULL;
816
_tmp10_ = _tmp9_->message;
817
g_warning ("sqlheavy-database.vala:224: Unable to update row cache: %s", _tmp10_);
821
if (_inner_error_ != NULL) {
824
_tmp11_ = self->priv->needs_update_on_step_unlock;
825
g_static_rec_mutex_unlock (&self->priv->__lock_needs_update_on_step_unlock);
827
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
828
g_clear_error (&_inner_error_);
834
_tmp14_ = g_sequence_iter_next (_tmp13_);
836
_tmp15_ = self->priv->needs_update_on_step_unlock;
838
g_sequence_remove (_tmp16_);
620
g_static_rec_mutex_unlock (&self->priv->__lock_needs_update_on_step_unlock);
844
_tmp17_ = self->priv->needs_update_on_step_unlock;
845
g_static_rec_mutex_unlock (&self->priv->__lock_needs_update_on_step_unlock);
621
847
if (_inner_error_ != NULL) {
622
848
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
623
849
g_clear_error (&_inner_error_);
662
894
static gchar* sql_heavy_database_pragma_get_string (SQLHeavyDatabase* self, const gchar* pragma) {
663
895
gchar* result = NULL;
664
gchar* _tmp0_ = NULL;
666
SQLHeavyQuery* _tmp2_ = NULL;
667
SQLHeavyQuery* _tmp3_;
668
SQLHeavyQuery* _tmp4_;
669
SQLHeavyQuery* _tmp5_;
670
SQLHeavyQueryResult* _tmp6_ = NULL;
671
SQLHeavyQueryResult* _tmp7_;
672
SQLHeavyQueryResult* _tmp8_;
673
SQLHeavyQueryResult* _tmp9_;
674
gchar* _tmp10_ = NULL;
677
896
GError * _inner_error_ = NULL;
678
897
g_return_val_if_fail (self != NULL, NULL);
679
898
g_return_val_if_fail (pragma != NULL, NULL);
680
_tmp0_ = g_strdup_printf ("PRAGMA %s;", pragma);
682
_tmp2_ = sql_heavy_query_new ((SQLHeavyQueryable*) self, _tmp1_, &_inner_error_);
686
if (_inner_error_ != NULL) {
687
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
688
goto __catch11_sql_heavy_error;
690
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
691
g_clear_error (&_inner_error_);
695
_tmp6_ = sql_heavy_query_execute (_tmp5_, NULL, &_inner_error_, NULL);
697
_g_object_unref0 (_tmp5_);
699
if (_inner_error_ != NULL) {
700
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
701
goto __catch11_sql_heavy_error;
703
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
704
g_clear_error (&_inner_error_);
708
_tmp10_ = sql_heavy_record_fetch_string ((SQLHeavyRecord*) _tmp9_, 0, &_inner_error_);
710
_g_object_unref0 (_tmp9_);
712
if (_inner_error_ != NULL) {
713
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
714
goto __catch11_sql_heavy_error;
716
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
717
g_clear_error (&_inner_error_);
901
gchar* _tmp1_ = NULL;
903
SQLHeavyQuery* _tmp3_;
904
SQLHeavyQuery* _tmp4_;
905
SQLHeavyQuery* _tmp5_;
906
SQLHeavyQuery* _tmp6_;
907
SQLHeavyQueryResult* _tmp7_ = NULL;
908
SQLHeavyQueryResult* _tmp8_;
909
SQLHeavyQueryResult* _tmp9_;
910
SQLHeavyQueryResult* _tmp10_;
911
gchar* _tmp11_ = NULL;
915
_tmp1_ = g_strdup_printf ("PRAGMA %s;", _tmp0_);
917
_tmp3_ = sql_heavy_query_new ((SQLHeavyQueryable*) self, _tmp2_, &_inner_error_);
921
if (_inner_error_ != NULL) {
922
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
923
goto __catch11_sql_heavy_error;
925
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
926
g_clear_error (&_inner_error_);
930
_tmp7_ = sql_heavy_query_execute (_tmp6_, NULL, &_inner_error_, NULL);
932
_g_object_unref0 (_tmp6_);
934
if (_inner_error_ != NULL) {
935
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
936
goto __catch11_sql_heavy_error;
938
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
939
g_clear_error (&_inner_error_);
943
_tmp11_ = sql_heavy_record_fetch_string ((SQLHeavyRecord*) _tmp10_, 0, &_inner_error_);
945
_g_object_unref0 (_tmp10_);
947
if (_inner_error_ != NULL) {
948
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
949
goto __catch11_sql_heavy_error;
951
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
952
g_clear_error (&_inner_error_);
722
958
goto __finally11;
723
959
__catch11_sql_heavy_error:
962
const gchar* _tmp14_;
964
const gchar* _tmp16_;
726
965
e = _inner_error_;
727
966
_inner_error_ = NULL;
728
g_critical ("sqlheavy-database.vala:342: Unable to retrieve pragma value %s: %s", pragma, e->message);
969
_tmp16_ = _tmp15_->message;
970
g_critical ("sqlheavy-database.vala:342: Unable to retrieve pragma value %s: %s", _tmp14_, _tmp16_);
730
972
_g_error_free0 (e);
785
1031
* @param the value of the pragma
787
1033
static void sql_heavy_database_pragma_set_string (SQLHeavyDatabase* self, const gchar* pragma, const gchar* value) {
788
gchar* _tmp0_ = NULL;
790
SQLHeavyQuery* _tmp2_ = NULL;
791
SQLHeavyQuery* _tmp3_;
793
SQLHeavyQueryResult* _tmp4_ = NULL;
794
SQLHeavyQueryResult* _tmp5_;
795
1034
GError * _inner_error_ = NULL;
796
1035
g_return_if_fail (self != NULL);
797
1036
g_return_if_fail (pragma != NULL);
798
1037
g_return_if_fail (value != NULL);
799
_tmp0_ = g_strdup_printf ("PRAGMA %s = %s;", pragma, value);
801
_tmp2_ = sql_heavy_query_new ((SQLHeavyQueryable*) self, _tmp1_, &_inner_error_);
805
if (_inner_error_ != NULL) {
806
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
807
goto __catch12_sql_heavy_error;
809
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
810
g_clear_error (&_inner_error_);
813
_tmp4_ = sql_heavy_query_execute (stmt, NULL, &_inner_error_, NULL);
815
_g_object_unref0 (_tmp5_);
816
if (_inner_error_ != NULL) {
817
_g_object_unref0 (stmt);
818
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
819
goto __catch12_sql_heavy_error;
821
_g_object_unref0 (stmt);
822
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
823
g_clear_error (&_inner_error_);
826
_g_object_unref0 (stmt);
1039
const gchar* _tmp0_;
1040
const gchar* _tmp1_;
1041
gchar* _tmp2_ = NULL;
1043
SQLHeavyQuery* _tmp4_;
1044
SQLHeavyQuery* _tmp5_;
1045
SQLHeavyQuery* stmt;
1046
SQLHeavyQuery* _tmp6_;
1047
SQLHeavyQueryResult* _tmp7_ = NULL;
1048
SQLHeavyQueryResult* _tmp8_;
1051
_tmp2_ = g_strdup_printf ("PRAGMA %s = %s;", _tmp0_, _tmp1_);
1053
_tmp4_ = sql_heavy_query_new ((SQLHeavyQueryable*) self, _tmp3_, &_inner_error_);
1057
if (_inner_error_ != NULL) {
1058
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1059
goto __catch12_sql_heavy_error;
1061
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1062
g_clear_error (&_inner_error_);
1066
_tmp7_ = sql_heavy_query_execute (_tmp6_, NULL, &_inner_error_, NULL);
1068
_g_object_unref0 (_tmp8_);
1069
if (_inner_error_ != NULL) {
1070
_g_object_unref0 (stmt);
1071
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1072
goto __catch12_sql_heavy_error;
1074
_g_object_unref0 (stmt);
1075
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1076
g_clear_error (&_inner_error_);
1079
_g_object_unref0 (stmt);
827
1081
goto __finally12;
828
1082
__catch12_sql_heavy_error:
1086
const gchar* _tmp10_;
831
1087
e = _inner_error_;
832
1088
_inner_error_ = NULL;
833
g_critical ("sqlheavy-database.vala:392: Unable to retrieve pragma value: %s", e->message);
1090
_tmp10_ = _tmp9_->message;
1091
g_critical ("sqlheavy-database.vala:392: Unable to retrieve pragma value: %s", _tmp10_);
834
1092
_g_error_free0 (e);
889
1157
* @param pages the number of pages to remove
891
1159
void sql_heavy_database_incremental_vacuum (SQLHeavyDatabase* self, gint pages, GError** error) {
892
gchar* _tmp0_ = NULL;
894
SQLHeavyQueryResult* _tmp2_ = NULL;
895
SQLHeavyQueryResult* _tmp3_;
1161
gchar* _tmp1_ = NULL;
1163
SQLHeavyQueryResult* _tmp3_ = NULL;
1164
SQLHeavyQueryResult* _tmp4_;
896
1165
GError * _inner_error_ = NULL;
897
1166
g_return_if_fail (self != NULL);
898
_tmp0_ = g_strdup_printf ("PRAGMA incremental_vacuum(%d);", pages);
900
_tmp2_ = sql_heavy_queryable_execute ((SQLHeavyQueryable*) self, _tmp1_, &_inner_error_, NULL);
902
_g_object_unref0 (_tmp3_);
1168
_tmp1_ = g_strdup_printf ("PRAGMA incremental_vacuum(%d);", _tmp0_);
1170
_tmp3_ = sql_heavy_queryable_execute ((SQLHeavyQueryable*) self, _tmp2_, &_inner_error_, NULL);
1172
_g_object_unref0 (_tmp4_);
904
1174
if (_inner_error_ != NULL) {
905
1175
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
906
1176
g_propagate_error (error, _inner_error_);
937
1207
void sql_heavy_database_register_aggregate_function (SQLHeavyDatabase* self, const gchar* name, gint argc, SQLHeavyUserFunctionUserFunc func, void* func_target, GDestroyNotify func_target_destroy_notify, SQLHeavyUserFunctionFinalizeFunc final, void* final_target, GDestroyNotify final_target_destroy_notify) {
938
SQLHeavyUserFunctionUserFuncData* _tmp0_ = NULL;
1208
const gchar* _tmp0_;
1209
const gchar* _tmp1_;
1211
SQLHeavyUserFunctionUserFunc _tmp3_;
1212
void* _tmp3__target;
1213
SQLHeavyUserFunctionUserFuncData* _tmp4_;
939
1214
SQLHeavyUserFunctionUserFuncData* ufc;
941
SQLHeavyUserFunctionUserFuncData* _tmp2_;
1216
const gchar* _tmp6_;
1218
SQLHeavyUserFunctionUserFuncData* _tmp8_;
1220
const gchar* _tmp10_;
942
1222
g_return_if_fail (self != NULL);
943
1223
g_return_if_fail (name != NULL);
944
sql_heavy_database_unregister_function (self, name);
945
_tmp0_ = sql_heavy_user_function_user_func_data_new_scalar (self, name, argc, func, func_target);
947
_tmp1_ = g_strdup (name);
948
_tmp2_ = _g_object_ref0 (ufc);
949
g_hash_table_insert (self->priv->user_functions, _tmp1_, _tmp2_);
950
sqlite3_create_function (self->priv->db, name, argc, SQLITE_UTF8, ufc, NULL, _sql_heavy_user_function_on_user_function_called_sqlite_user_func_callback, _sql_heavy_user_function_on_user_finalize_called_sqlite_user_func_finish_callback);
1225
sql_heavy_database_unregister_function (self, _tmp0_);
1229
_tmp3__target = func_target;
1230
_tmp4_ = sql_heavy_user_function_user_func_data_new_scalar (self, _tmp1_, _tmp2_, _tmp3_, _tmp3__target);
1232
_tmp5_ = self->priv->user_functions;
1234
_tmp7_ = g_strdup (_tmp6_);
1235
_tmp8_ = _g_object_ref0 (ufc);
1236
g_hash_table_insert (_tmp5_, _tmp7_, _tmp8_);
1237
_tmp9_ = self->priv->db;
1240
sqlite3_create_function_v2 (_tmp9_, _tmp10_, _tmp11_, SQLITE_UTF8, ufc, NULL, _sql_heavy_user_function_on_user_function_called_sqlite_user_func_callback, _sql_heavy_user_function_on_user_finalize_called_sqlite_user_func_finish_callback, NULL);
951
1241
_g_object_unref0 (ufc);
952
1242
(func_target_destroy_notify == NULL) ? NULL : (func_target_destroy_notify (func_target), NULL);
968
1258
* @param func callback for the user defined function
970
1260
void sql_heavy_database_register_scalar_function (SQLHeavyDatabase* self, const gchar* name, gint argc, SQLHeavyUserFunctionUserFunc func, void* func_target, GDestroyNotify func_target_destroy_notify) {
971
SQLHeavyUserFunctionUserFuncData* _tmp0_ = NULL;
1261
const gchar* _tmp0_;
1262
const gchar* _tmp1_;
1264
SQLHeavyUserFunctionUserFunc _tmp3_;
1265
void* _tmp3__target;
1266
SQLHeavyUserFunctionUserFuncData* _tmp4_;
972
1267
SQLHeavyUserFunctionUserFuncData* ufc;
974
SQLHeavyUserFunctionUserFuncData* _tmp2_;
1269
const gchar* _tmp6_;
1271
SQLHeavyUserFunctionUserFuncData* _tmp8_;
1273
const gchar* _tmp10_;
975
1275
g_return_if_fail (self != NULL);
976
1276
g_return_if_fail (name != NULL);
977
sql_heavy_database_unregister_function (self, name);
978
_tmp0_ = sql_heavy_user_function_user_func_data_new_scalar (self, name, argc, func, func_target);
980
_tmp1_ = g_strdup (name);
981
_tmp2_ = _g_object_ref0 (ufc);
982
g_hash_table_insert (self->priv->user_functions, _tmp1_, _tmp2_);
983
sqlite3_create_function (self->priv->db, name, argc, SQLITE_UTF8, ufc, _sql_heavy_user_function_on_user_function_called_sqlite_user_func_callback, NULL, NULL);
1278
sql_heavy_database_unregister_function (self, _tmp0_);
1282
_tmp3__target = func_target;
1283
_tmp4_ = sql_heavy_user_function_user_func_data_new_scalar (self, _tmp1_, _tmp2_, _tmp3_, _tmp3__target);
1285
_tmp5_ = self->priv->user_functions;
1287
_tmp7_ = g_strdup (_tmp6_);
1288
_tmp8_ = _g_object_ref0 (ufc);
1289
g_hash_table_insert (_tmp5_, _tmp7_, _tmp8_);
1290
_tmp9_ = self->priv->db;
1293
sqlite3_create_function (_tmp9_, _tmp10_, _tmp11_, SQLITE_UTF8, ufc, _sql_heavy_user_function_on_user_function_called_sqlite_user_func_callback, NULL, NULL);
984
1294
_g_object_unref0 (ufc);
985
1295
(func_target_destroy_notify == NULL) ? NULL : (func_target_destroy_notify (func_target), NULL);
1105
1435
* @see backup_async
1107
1437
void sql_heavy_database_backup (SQLHeavyDatabase* self, const gchar* destination, GError** error) {
1108
SQLHeavyDatabase* _tmp0_ = NULL;
1438
const gchar* _tmp0_;
1109
1439
SQLHeavyDatabase* _tmp1_;
1110
1440
SQLHeavyDatabase* _tmp2_;
1111
SQLHeavyBackup* _tmp3_ = NULL;
1441
SQLHeavyDatabase* _tmp3_;
1112
1442
SQLHeavyBackup* _tmp4_;
1113
1443
SQLHeavyBackup* _tmp5_;
1114
1444
SQLHeavyBackup* _tmp6_;
1445
SQLHeavyBackup* _tmp7_;
1115
1446
GError * _inner_error_ = NULL;
1116
1447
g_return_if_fail (self != NULL);
1117
1448
g_return_if_fail (destination != NULL);
1118
_tmp0_ = sql_heavy_database_new (destination, (SQL_HEAVY_FILE_MODE_READ | SQL_HEAVY_FILE_MODE_WRITE) | SQL_HEAVY_FILE_MODE_CREATE, &_inner_error_);
1120
if (_inner_error_ != NULL) {
1121
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1122
g_propagate_error (error, _inner_error_);
1125
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1126
g_clear_error (&_inner_error_);
1449
_tmp0_ = destination;
1450
_tmp1_ = sql_heavy_database_new (_tmp0_, (SQL_HEAVY_FILE_MODE_READ | SQL_HEAVY_FILE_MODE_WRITE) | SQL_HEAVY_FILE_MODE_CREATE, &_inner_error_);
1130
1451
_tmp2_ = _tmp1_;
1131
_tmp3_ = sql_heavy_backup_new (self, _tmp2_, &_inner_error_);
1133
_g_object_unref0 (_tmp2_);
1452
if (_inner_error_ != NULL) {
1453
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1454
g_propagate_error (error, _inner_error_);
1457
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1458
g_clear_error (&_inner_error_);
1463
_tmp4_ = sql_heavy_backup_new (self, _tmp3_, &_inner_error_);
1134
1464
_tmp5_ = _tmp4_;
1135
if (_inner_error_ != NULL) {
1136
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1137
g_propagate_error (error, _inner_error_);
1140
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1141
g_clear_error (&_inner_error_);
1465
_g_object_unref0 (_tmp3_);
1145
1466
_tmp6_ = _tmp5_;
1146
sql_heavy_backup_execute (_tmp6_, &_inner_error_);
1147
_g_object_unref0 (_tmp6_);
1467
if (_inner_error_ != NULL) {
1468
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1469
g_propagate_error (error, _inner_error_);
1472
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1473
g_clear_error (&_inner_error_);
1478
sql_heavy_backup_execute (_tmp7_, &_inner_error_);
1479
_g_object_unref0 (_tmp7_);
1148
1480
if (_inner_error_ != NULL) {
1149
1481
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1150
1482
g_propagate_error (error, _inner_error_);
1161
1493
static void sql_heavy_database_backup_async_data_free (gpointer _data) {
1162
SqlHeavyDatabaseBackupAsyncData* data;
1164
_g_free0 (data->destination);
1165
_g_object_unref0 (data->self);
1166
g_slice_free (SqlHeavyDatabaseBackupAsyncData, data);
1494
SqlHeavyDatabaseBackupAsyncData* _data_;
1496
_g_free0 (_data_->destination);
1497
_g_object_unref0 (_data_->self);
1498
g_slice_free (SqlHeavyDatabaseBackupAsyncData, _data_);
1170
1502
void sql_heavy_database_backup_async (SQLHeavyDatabase* self, const gchar* destination, GAsyncReadyCallback _callback_, gpointer _user_data_) {
1171
1503
SqlHeavyDatabaseBackupAsyncData* _data_;
1504
SQLHeavyDatabase* _tmp0_;
1505
const gchar* _tmp1_;
1172
1507
_data_ = g_slice_new0 (SqlHeavyDatabaseBackupAsyncData);
1173
1508
_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, sql_heavy_database_backup_async);
1174
1509
g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, sql_heavy_database_backup_async_data_free);
1175
_data_->self = _g_object_ref0 (self);
1176
_data_->destination = g_strdup (destination);
1510
_tmp0_ = _g_object_ref0 (self);
1511
_data_->self = _tmp0_;
1512
_tmp1_ = destination;
1513
_tmp2_ = g_strdup (_tmp1_);
1514
_data_->destination = _tmp2_;
1177
1515
sql_heavy_database_backup_async_co (_data_);
1213
1551
g_assert_not_reached ();
1216
data->_tmp0_ = NULL;
1217
data->_tmp0_ = sql_heavy_database_new (data->destination, (SQL_HEAVY_FILE_MODE_READ | SQL_HEAVY_FILE_MODE_WRITE) | SQL_HEAVY_FILE_MODE_CREATE, &data->_inner_error_);
1218
data->_tmp1_ = data->_tmp0_;
1219
if (data->_inner_error_ != NULL) {
1220
if (data->_inner_error_->domain == SQL_HEAVY_ERROR) {
1221
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
1222
g_error_free (data->_inner_error_);
1223
if (data->_state_ == 0) {
1224
g_simple_async_result_complete_in_idle (data->_async_result);
1226
g_simple_async_result_complete (data->_async_result);
1228
g_object_unref (data->_async_result);
1231
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1232
g_clear_error (&data->_inner_error_);
1236
data->_tmp2_ = data->_tmp1_;
1237
data->_tmp3_ = NULL;
1238
data->_tmp3_ = sql_heavy_backup_new (data->self, data->_tmp2_, &data->_inner_error_);
1239
data->_tmp4_ = data->_tmp3_;
1240
_g_object_unref0 (data->_tmp2_);
1241
data->backup = data->_tmp4_;
1242
if (data->_inner_error_ != NULL) {
1243
if (data->_inner_error_->domain == SQL_HEAVY_ERROR) {
1244
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
1245
g_error_free (data->_inner_error_);
1246
if (data->_state_ == 0) {
1247
g_simple_async_result_complete_in_idle (data->_async_result);
1249
g_simple_async_result_complete (data->_async_result);
1251
g_object_unref (data->_async_result);
1254
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1255
g_clear_error (&data->_inner_error_);
1260
sql_heavy_backup_execute_async (data->backup, NULL, sql_heavy_database_backup_async_ready, data);
1554
_data_->_tmp0_ = _data_->destination;
1555
_data_->_tmp1_ = sql_heavy_database_new (_data_->_tmp0_, (SQL_HEAVY_FILE_MODE_READ | SQL_HEAVY_FILE_MODE_WRITE) | SQL_HEAVY_FILE_MODE_CREATE, &_data_->_inner_error_);
1556
_data_->_tmp2_ = _data_->_tmp1_;
1557
if (_data_->_inner_error_ != NULL) {
1558
if (_data_->_inner_error_->domain == SQL_HEAVY_ERROR) {
1559
g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
1560
g_error_free (_data_->_inner_error_);
1561
if (_data_->_state_ == 0) {
1562
g_simple_async_result_complete_in_idle (_data_->_async_result);
1564
g_simple_async_result_complete (_data_->_async_result);
1566
g_object_unref (_data_->_async_result);
1569
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
1570
g_clear_error (&_data_->_inner_error_);
1574
_data_->_tmp3_ = _data_->_tmp2_;
1575
_data_->_tmp4_ = sql_heavy_backup_new (_data_->self, _data_->_tmp3_, &_data_->_inner_error_);
1576
_data_->_tmp5_ = _data_->_tmp4_;
1577
_g_object_unref0 (_data_->_tmp3_);
1578
_data_->backup = _data_->_tmp5_;
1579
if (_data_->_inner_error_ != NULL) {
1580
if (_data_->_inner_error_->domain == SQL_HEAVY_ERROR) {
1581
g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
1582
g_error_free (_data_->_inner_error_);
1583
if (_data_->_state_ == 0) {
1584
g_simple_async_result_complete_in_idle (_data_->_async_result);
1586
g_simple_async_result_complete (_data_->_async_result);
1588
g_object_unref (_data_->_async_result);
1591
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
1592
g_clear_error (&_data_->_inner_error_);
1596
_data_->_tmp6_ = _data_->backup;
1597
_data_->_state_ = 1;
1598
sql_heavy_backup_execute_async (_data_->_tmp6_, NULL, sql_heavy_database_backup_async_ready, _data_);
1263
sql_heavy_backup_execute_finish (data->backup, data->_res_, &data->_inner_error_);
1264
if (data->_inner_error_ != NULL) {
1265
if (data->_inner_error_->domain == SQL_HEAVY_ERROR) {
1266
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
1267
g_error_free (data->_inner_error_);
1268
_g_object_unref0 (data->backup);
1269
if (data->_state_ == 0) {
1270
g_simple_async_result_complete_in_idle (data->_async_result);
1601
sql_heavy_backup_execute_finish (_data_->_tmp6_, _data_->_res_, &_data_->_inner_error_);
1602
if (_data_->_inner_error_ != NULL) {
1603
if (_data_->_inner_error_->domain == SQL_HEAVY_ERROR) {
1604
g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
1605
g_error_free (_data_->_inner_error_);
1606
_g_object_unref0 (_data_->backup);
1607
if (_data_->_state_ == 0) {
1608
g_simple_async_result_complete_in_idle (_data_->_async_result);
1272
g_simple_async_result_complete (data->_async_result);
1610
g_simple_async_result_complete (_data_->_async_result);
1274
g_object_unref (data->_async_result);
1612
g_object_unref (_data_->_async_result);
1277
_g_object_unref0 (data->backup);
1278
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1279
g_clear_error (&data->_inner_error_);
1615
_g_object_unref0 (_data_->backup);
1616
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
1617
g_clear_error (&_data_->_inner_error_);
1283
_g_object_unref0 (data->backup);
1284
if (data->_state_ == 0) {
1285
g_simple_async_result_complete_in_idle (data->_async_result);
1621
_g_object_unref0 (_data_->backup);
1622
if (_data_->_state_ == 0) {
1623
g_simple_async_result_complete_in_idle (_data_->_async_result);
1287
g_simple_async_result_complete (data->_async_result);
1625
g_simple_async_result_complete (_data_->_async_result);
1289
g_object_unref (data->_async_result);
1627
g_object_unref (_data_->_async_result);
1358
1700
SQLHeavyTable* sql_heavy_database_get_table (SQLHeavyDatabase* self, const gchar* table, GError** error) {
1359
1701
SQLHeavyTable* result = NULL;
1360
SQLHeavyTable* _tmp13_ = NULL;
1361
SQLHeavyTable* _tmp14_;
1702
const gchar* _tmp36_;
1703
SQLHeavyTable* _tmp37_;
1704
SQLHeavyTable* _tmp38_;
1362
1705
GError * _inner_error_ = NULL;
1363
1706
g_return_val_if_fail (self != NULL, NULL);
1364
1707
g_return_val_if_fail (table != NULL, NULL);
1366
gconstpointer _tmp1_ = NULL;
1710
_tmp0_ = self->priv->orm_tables;
1368
1711
g_static_rec_mutex_lock (&self->priv->__lock_orm_tables);
1369
if (self->priv->orm_tables == NULL) {
1370
GHashTable* _tmp0_ = NULL;
1371
_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_sequence_free);
1372
_g_hash_table_unref0 (self->priv->orm_tables);
1373
self->priv->orm_tables = _tmp0_;
1375
_tmp1_ = g_hash_table_lookup (self->priv->orm_tables, table);
1376
list = (GSequence*) _tmp1_;
1379
GSequence* _tmp3_ = NULL;
1380
gconstpointer _tmp4_ = NULL;
1381
SQLHeavyTable* _tmp5_ = NULL;
1383
GSequenceIter* _tmp6_ = NULL;
1384
_tmp2_ = g_strdup (table);
1385
_tmp3_ = g_sequence_new (NULL);
1386
g_hash_table_insert (self->priv->orm_tables, _tmp2_, _tmp3_);
1387
_tmp4_ = g_hash_table_lookup (self->priv->orm_tables, table);
1388
list = (GSequence*) _tmp4_;
1389
_tmp5_ = sql_heavy_table_new ((SQLHeavyQueryable*) self, table, &_inner_error_);
1391
if (_inner_error_ != NULL) {
1715
const gchar* _tmp7_;
1716
gconstpointer _tmp8_ = NULL;
1719
_tmp1_ = self->priv->orm_tables;
1720
if (_tmp1_ == NULL) {
1723
GDestroyNotify _tmp4_;
1725
_tmp2_ = g_str_hash;
1726
_tmp3_ = g_str_equal;
1728
_tmp5_ = g_hash_table_new_full (_tmp2_, _tmp3_, _tmp4_, (GDestroyNotify) g_sequence_free);
1729
_g_hash_table_unref0 (self->priv->orm_tables);
1730
self->priv->orm_tables = _tmp5_;
1394
_tmp6_ = g_sequence_insert_sorted (list, res, _sql_heavy_table_direct_compare_gcompare_data_func, NULL);
1396
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
1400
GSequenceIter* _tmp7_ = NULL;
1401
GSequenceIter* iter;
1402
_tmp7_ = g_sequence_get_begin_iter (list);
1409
gconstpointer _tmp11_ = NULL;
1410
SQLHeavyTable* _tmp12_;
1412
GSequenceIter* _tmp9_ = NULL;
1413
_tmp9_ = g_sequence_iter_next (iter);
1417
_tmp10_ = g_sequence_iter_is_end (iter);
1421
_tmp11_ = g_sequence_get (iter);
1422
_tmp12_ = _g_object_ref0 ((SQLHeavyTable*) _tmp11_);
1424
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
1732
_tmp6_ = self->priv->orm_tables;
1734
_tmp8_ = g_hash_table_lookup (_tmp6_, _tmp7_);
1735
list = (GSequence*) _tmp8_;
1737
if (_tmp9_ == NULL) {
1738
GHashTable* _tmp10_;
1739
const gchar* _tmp11_;
1742
GHashTable* _tmp14_;
1743
const gchar* _tmp15_;
1744
gconstpointer _tmp16_ = NULL;
1745
const gchar* _tmp17_;
1746
SQLHeavyTable* _tmp18_;
1749
SQLHeavyTable* _tmp20_;
1750
GSequenceIter* _tmp21_ = NULL;
1751
_tmp10_ = self->priv->orm_tables;
1753
_tmp12_ = g_strdup (_tmp11_);
1754
_tmp13_ = g_sequence_new (NULL);
1755
g_hash_table_insert (_tmp10_, _tmp12_, _tmp13_);
1756
_tmp14_ = self->priv->orm_tables;
1758
_tmp16_ = g_hash_table_lookup (_tmp14_, _tmp15_);
1759
list = (GSequence*) _tmp16_;
1761
_tmp18_ = sql_heavy_table_new ((SQLHeavyQueryable*) self, _tmp17_, &_inner_error_);
1763
if (_inner_error_ != NULL) {
1768
_tmp21_ = g_sequence_insert_sorted (_tmp19_, _tmp20_, _sql_heavy_table_direct_compare_gcompare_data_func, NULL);
1771
GHashTable* _tmp22_;
1772
_tmp22_ = self->priv->orm_tables;
1773
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
1779
GSequenceIter* _tmp24_ = NULL;
1780
GSequenceIter* iter;
1782
_tmp24_ = g_sequence_get_begin_iter (_tmp23_);
1789
GSequenceIter* _tmp29_;
1790
gboolean _tmp30_ = FALSE;
1791
GSequenceIter* _tmp31_;
1792
gconstpointer _tmp32_ = NULL;
1793
SQLHeavyTable* _tmp33_;
1796
GSequenceIter* _tmp27_;
1797
GSequenceIter* _tmp28_ = NULL;
1799
_tmp28_ = g_sequence_iter_next (_tmp27_);
1804
_tmp30_ = g_sequence_iter_is_end (_tmp29_);
1809
_tmp32_ = g_sequence_get (_tmp31_);
1810
_tmp33_ = _g_object_ref0 ((SQLHeavyTable*) _tmp32_);
1813
GHashTable* _tmp34_;
1814
_tmp34_ = self->priv->orm_tables;
1815
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
1431
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
1825
GHashTable* _tmp35_;
1826
_tmp35_ = self->priv->orm_tables;
1827
g_static_rec_mutex_unlock (&self->priv->__lock_orm_tables);
1432
1829
if (_inner_error_ != NULL) {
1433
1830
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1434
1831
g_propagate_error (error, _inner_error_);
1465
1863
GHashTable* sql_heavy_database_get_tables (SQLHeavyDatabase* self, GError** error) {
1466
1864
GHashTable* result = NULL;
1467
GHashTable* _tmp0_ = NULL;
1867
GDestroyNotify _tmp2_;
1868
GDestroyNotify _tmp3_;
1468
1870
GHashTable* ht;
1469
SQLHeavyQuery* _tmp1_ = NULL;
1470
SQLHeavyQuery* _tmp2_;
1471
SQLHeavyQuery* _tmp3_;
1472
SQLHeavyQueryResult* _tmp4_ = NULL;
1473
SQLHeavyQueryResult* _tmp5_;
1871
SQLHeavyQuery* _tmp5_ = NULL;
1872
SQLHeavyQuery* _tmp6_;
1873
SQLHeavyQuery* _tmp7_;
1874
SQLHeavyQueryResult* _tmp8_ = NULL;
1875
SQLHeavyQueryResult* _tmp9_;
1474
1876
SQLHeavyQueryResult* _result_;
1475
1877
GError * _inner_error_ = NULL;
1476
1878
g_return_val_if_fail (self != NULL, NULL);
1477
_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
1479
_tmp1_ = sql_heavy_queryable_prepare ((SQLHeavyQueryable*) self, "SELECT `name` FROM `SQLITE_MASTER` WHERE `type` = 'table';", &_inner_error_);
1879
_tmp0_ = g_str_hash;
1880
_tmp1_ = g_str_equal;
1882
_tmp3_ = g_object_unref;
1883
_tmp4_ = g_hash_table_new_full (_tmp0_, _tmp1_, _tmp2_, _tmp3_);
1885
_tmp5_ = sql_heavy_queryable_prepare ((SQLHeavyQueryable*) self, "SELECT `name` FROM `SQLITE_MASTER` WHERE `type` = 'table';", &_inner_error_);
1481
1887
if (_inner_error_ != NULL) {
1482
1888
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1483
1889
g_propagate_error (error, _inner_error_);
1593
2015
gint sql_heavy_database_compare (SQLHeavyDatabase* a, SQLHeavyDatabase* b) {
1594
2016
gint result = 0;
2018
SQLHeavyDatabase* _tmp0_;
2019
SQLHeavyDatabase* _tmp1_;
2020
SQLHeavyDatabase* _tmp2_;
2021
SQLHeavyDatabase* _tmp3_;
2022
GCompareFunc _tmp4_;
2023
SQLHeavyDatabase* _tmp5_;
2024
const gchar* _tmp6_;
2025
SQLHeavyDatabase* _tmp7_;
2026
const gchar* _tmp8_;
2029
SQLHeavyDatabase* _tmp11_;
2030
SQLHeavyFileMode _tmp12_;
2031
SQLHeavyDatabase* _tmp13_;
2032
SQLHeavyFileMode _tmp14_;
2034
SQLHeavyDatabase* _tmp16_;
2035
SQLHeavyDatabase* _tmp17_;
2040
if (_tmp0_ == _tmp1_) {
2045
if (_tmp2_ == NULL) {
2050
if (_tmp3_ == NULL) {
1611
_tmp0_ = g_strcmp0 (a->priv->_filename, b->priv->_filename);
1617
r = (gint) (a->priv->_mode - b->priv->_mode);
1622
_tmp1_ = sql_heavy_database_direct_compare (a, b);
2056
_tmp6_ = _tmp5_->priv->_filename;
2058
_tmp8_ = _tmp7_->priv->_filename;
2059
_tmp9_ = _tmp4_ (_tmp6_, _tmp8_);
2067
_tmp12_ = _tmp11_->priv->_mode;
2069
_tmp14_ = _tmp13_->priv->_mode;
2070
r = (gint) (_tmp12_ - _tmp14_);
2078
_tmp18_ = sql_heavy_database_direct_compare (_tmp16_, _tmp17_);
1664
2126
static gboolean sql_heavy_database_real_init (SQLHeavyDatabase* self, GCancellable* cancellable, GError** error) {
1665
2127
gboolean result = FALSE;
2128
const gchar* _tmp0_;
1667
sqlite3* _tmp4_ = NULL;
2130
SQLHeavyFileMode _tmp13_;
2131
SQLHeavyFileMode _tmp14_;
2132
SQLHeavyFileMode _tmp15_;
2133
const gchar* _tmp17_;
2135
sqlite3* _tmp19_ = NULL;
1669
2141
GError * _inner_error_ = NULL;
1670
g_return_val_if_fail (self != NULL, FALSE);
1671
if (g_strcmp0 (self->priv->_filename, ":memory:") != 0) {
1672
GFile* _tmp0_ = NULL;
2142
_tmp0_ = self->priv->_filename;
2143
if (g_strcmp0 (_tmp0_, ":memory:") != 0) {
2144
const gchar* _tmp1_;
2145
GFile* _tmp2_ = NULL;
1674
GFile* _tmp1_ = NULL;
1676
_tmp0_ = g_file_new_for_path (self->priv->_filename);
1678
_tmp1_ = g_file_get_parent (file);
1680
g_file_make_directory_with_parents (_tmp2_, cancellable, &_inner_error_);
1681
_g_object_unref0 (_tmp2_);
1682
if (_inner_error_ != NULL) {
1683
goto __catch14_g_error;
2147
_tmp1_ = self->priv->_filename;
2148
_tmp2_ = g_file_new_for_path (_tmp1_);
2152
GFile* _tmp4_ = NULL;
2154
GCancellable* _tmp6_;
2156
_tmp4_ = g_file_get_parent (_tmp3_);
2158
_tmp6_ = cancellable;
2159
g_file_make_directory_with_parents (_tmp5_, _tmp6_, &_inner_error_);
2160
_g_object_unref0 (_tmp5_);
2161
if (_inner_error_ != NULL) {
2162
goto __catch14_g_error;
1685
2165
goto __finally14;
1686
2166
__catch14_g_error:
1689
2170
e = _inner_error_;
1690
2171
_inner_error_ = NULL;
1691
if (!g_error_matches (e, G_IO_ERROR, G_IO_ERROR_EXISTS)) {
1692
GError* _tmp3_ = NULL;
1693
_tmp3_ = g_error_new (SQL_HEAVY_ERROR, SQL_HEAVY_ERROR_CAN_NOT_OPEN, "Unable to create parent directory: %s (%d)", e->message, e->code);
1694
_inner_error_ = _tmp3_;
2173
if (!g_error_matches (_tmp7_, G_IO_ERROR, G_IO_ERROR_EXISTS)) {
2175
const gchar* _tmp9_;
2180
_tmp9_ = _tmp8_->message;
2182
_tmp11_ = _tmp10_->code;
2183
_tmp12_ = g_error_new (SQL_HEAVY_ERROR, SQL_HEAVY_ERROR_CAN_NOT_OPEN, "Unable to create parent directory: %s (%d)", _tmp9_, _tmp11_);
2184
_inner_error_ = _tmp12_;
1695
2185
_g_error_free0 (e);
1696
2186
goto __finally14;
1713
2203
_g_object_unref0 (file);
1716
if ((self->priv->_mode & SQL_HEAVY_FILE_MODE_READ) == SQL_HEAVY_FILE_MODE_READ) {
2206
_tmp13_ = self->priv->_mode;
2207
if ((_tmp13_ & SQL_HEAVY_FILE_MODE_READ) == SQL_HEAVY_FILE_MODE_READ) {
1717
2208
flags = SQLITE_OPEN_READONLY;
1719
if ((self->priv->_mode & SQL_HEAVY_FILE_MODE_WRITE) == SQL_HEAVY_FILE_MODE_WRITE) {
2210
_tmp14_ = self->priv->_mode;
2211
if ((_tmp14_ & SQL_HEAVY_FILE_MODE_WRITE) == SQL_HEAVY_FILE_MODE_WRITE) {
1720
2212
flags = SQLITE_OPEN_READWRITE;
1722
if ((self->priv->_mode & SQL_HEAVY_FILE_MODE_CREATE) == SQL_HEAVY_FILE_MODE_CREATE) {
1723
flags = flags | SQLITE_OPEN_CREATE;
2214
_tmp15_ = self->priv->_mode;
2215
if ((_tmp15_ & SQL_HEAVY_FILE_MODE_CREATE) == SQL_HEAVY_FILE_MODE_CREATE) {
2218
flags = _tmp16_ | SQLITE_OPEN_CREATE;
1725
_tmp5_ = sqlite3_open_v2 ((const gchar*) self->priv->_filename, &_tmp4_, flags, NULL);
2220
_tmp17_ = self->priv->_filename;
2222
_tmp20_ = sqlite3_open_v2 ((const gchar*) _tmp17_, &_tmp19_, _tmp18_, NULL);
1726
2223
_sqlite3_close0 (self->priv->db);
1727
self->priv->db = _tmp4_;
1728
if (_tmp5_ != SQLITE_OK) {
1729
const gchar* _tmp6_ = NULL;
1730
GError* _tmp7_ = NULL;
1731
_tmp6_ = sql_heavy_sqlite_errstr (SQLITE_CANTOPEN);
1732
_tmp7_ = g_error_new_literal (SQL_HEAVY_ERROR, SQL_HEAVY_ERROR_CAN_NOT_OPEN, _tmp6_);
1733
_inner_error_ = _tmp7_;
2224
self->priv->db = _tmp19_;
2225
if (_tmp20_ != SQLITE_OK) {
2226
const gchar* _tmp21_ = NULL;
2228
_tmp21_ = sql_heavy_sqlite_errstr (SQLITE_CANTOPEN);
2229
_tmp22_ = g_error_new_literal (SQL_HEAVY_ERROR, SQL_HEAVY_ERROR_CAN_NOT_OPEN, _tmp21_);
2230
_inner_error_ = _tmp22_;
1734
2231
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1735
2232
g_propagate_error (error, _inner_error_);
1743
sqlite3_trace (self->priv->db, __lambda6__sqlite_trace_callback, self);
1744
sqlite3_update_hook (self->priv->db, _sql_heavy_database_update_hook_cb_sqlite_update_callback, self);
1745
sqlite3_busy_timeout (self->priv->db, G_MAXINT);
2240
_tmp23_ = self->priv->db;
2241
sqlite3_trace (_tmp23_, ___lambda8__sqlite_trace_callback, self);
2242
_tmp24_ = self->priv->db;
2243
sqlite3_update_hook (_tmp24_, _sql_heavy_database_update_hook_cb_sqlite_update_callback, self);
2244
_tmp25_ = self->priv->db;
2246
sqlite3_busy_timeout (_tmp25_, _tmp26_);
1747
2248
gchar* env_var;
1748
gboolean _tmp8_ = FALSE;
1749
const gchar* _tmp14_ = NULL;
1751
const gchar* _tmp17_ = NULL;
2249
gboolean _tmp27_ = FALSE;
2251
const gchar* _tmp39_ = NULL;
2253
const gchar* _tmp41_;
2254
const gchar* _tmp44_ = NULL;
2256
const gchar* _tmp46_;
1753
2257
env_var = NULL;
1754
2258
if (!SQL_HEAVY_IS_PROFILING_DATABASE (self)) {
1755
const gchar* _tmp9_ = NULL;
1757
_tmp9_ = g_getenv ("SQLHEAVY_PROFILING_DATA");
1758
_tmp10_ = g_strdup (_tmp9_);
2259
const gchar* _tmp28_ = NULL;
2261
const gchar* _tmp30_;
2262
_tmp28_ = g_getenv ("SQLHEAVY_PROFILING_DATA");
2263
_tmp29_ = g_strdup (_tmp28_);
1759
2264
_g_free0 (env_var);
1761
_tmp8_ = env_var != NULL;
2267
_tmp27_ = _tmp30_ != NULL;
1766
SQLHeavyProfilingDatabase* _tmp11_ = NULL;
1767
SQLHeavyProfilingDatabase* _tmp12_;
1768
SQLHeavyProfilingDatabase* _tmp13_;
1769
_tmp11_ = sql_heavy_profiling_database_new (env_var, &_inner_error_);
1771
if (_inner_error_ != NULL) {
1772
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1773
goto __catch15_sql_heavy_error;
2274
const gchar* _tmp32_;
2275
SQLHeavyProfilingDatabase* _tmp33_;
2276
SQLHeavyProfilingDatabase* _tmp34_;
2277
SQLHeavyProfilingDatabase* _tmp35_;
2279
_tmp33_ = sql_heavy_profiling_database_new (_tmp32_, &_inner_error_);
2281
if (_inner_error_ != NULL) {
2282
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
2283
goto __catch15_sql_heavy_error;
2286
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2287
g_clear_error (&_inner_error_);
1776
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1777
g_clear_error (&_inner_error_);
2291
sql_heavy_database_set_profiling_data (self, _tmp35_);
2292
_g_object_unref0 (_tmp35_);
1781
sql_heavy_database_set_profiling_data (self, _tmp13_);
1782
_g_object_unref0 (_tmp13_);
1783
2294
goto __finally15;
1784
2295
__catch15_sql_heavy_error:
2298
const gchar* _tmp36_;
2300
const gchar* _tmp38_;
1787
2301
e = _inner_error_;
1788
2302
_inner_error_ = NULL;
2305
_tmp38_ = _tmp37_->message;
1789
2306
g_critical ("sqlheavy-database.vala:1106: Unable to set profiling database to `%s':" \
1790
" %s", env_var, e->message);
2307
" %s", _tmp36_, _tmp38_);
1791
2308
_g_error_free0 (e);
1807
_tmp14_ = g_getenv ("SQLHEAVY_JOURNAL_MODE");
1808
_tmp15_ = g_strdup (_tmp14_);
2324
_tmp39_ = g_getenv ("SQLHEAVY_JOURNAL_MODE");
2325
_tmp40_ = g_strdup (_tmp39_);
1809
2326
_g_free0 (env_var);
1811
if (env_var != NULL) {
1812
SQLHeavyJournalMode _tmp16_;
1813
_tmp16_ = sql_heavy_journal_mode_from_string (env_var);
1814
sql_heavy_database_set_journal_mode (self, _tmp16_);
2329
if (_tmp41_ != NULL) {
2330
const gchar* _tmp42_;
2331
SQLHeavyJournalMode _tmp43_ = 0;
2333
_tmp43_ = sql_heavy_journal_mode_from_string (_tmp42_);
2334
sql_heavy_database_set_journal_mode (self, _tmp43_);
1816
_tmp17_ = g_getenv ("SQLHEAVY_SYNCHRONOUS_MODE");
1817
_tmp18_ = g_strdup (_tmp17_);
2336
_tmp44_ = g_getenv ("SQLHEAVY_SYNCHRONOUS_MODE");
2337
_tmp45_ = g_strdup (_tmp44_);
1818
2338
_g_free0 (env_var);
1820
if (env_var != NULL) {
1821
SQLHeavySynchronousMode _tmp19_;
1822
_tmp19_ = sql_heavy_synchronous_mode_from_string (env_var);
1823
sql_heavy_database_set_synchronous (self, _tmp19_);
2341
if (_tmp46_ != NULL) {
2342
const gchar* _tmp47_;
2343
SQLHeavySynchronousMode _tmp48_ = 0;
2345
_tmp48_ = sql_heavy_synchronous_mode_from_string (_tmp47_);
2346
sql_heavy_database_set_synchronous (self, _tmp48_);
1825
2348
_g_free0 (env_var);
1897
2431
SQLHeavyProfilingDatabase* sql_heavy_database_get_profiling_data (SQLHeavyDatabase* self) {
1898
2432
SQLHeavyProfilingDatabase* result;
2433
SQLHeavyProfilingDatabase* _tmp0_;
1899
2434
g_return_val_if_fail (self != NULL, NULL);
1900
result = self->priv->_profiling_data;
2435
_tmp0_ = self->priv->_profiling_data;
1905
2441
void sql_heavy_database_set_profiling_data (SQLHeavyDatabase* self, SQLHeavyProfilingDatabase* value) {
1906
2442
SQLHeavyProfilingDatabase* _tmp0_;
2443
SQLHeavyProfilingDatabase* _tmp1_;
1907
2444
g_return_if_fail (self != NULL);
1908
_tmp0_ = _g_object_ref0 (value);
2446
_tmp1_ = _g_object_ref0 (_tmp0_);
1909
2447
_g_object_unref0 (self->priv->_profiling_data);
1910
self->priv->_profiling_data = _tmp0_;
2448
self->priv->_profiling_data = _tmp1_;
1911
2449
g_object_notify ((GObject *) self, "profiling-data");
1915
2453
gboolean sql_heavy_database_get_enable_profiling (SQLHeavyDatabase* self) {
1916
2454
gboolean result;
2455
SQLHeavyProfilingDatabase* _tmp0_;
1917
2456
g_return_val_if_fail (self != NULL, FALSE);
1918
result = self->priv->_profiling_data != NULL;
2457
_tmp0_ = self->priv->_profiling_data;
2458
result = _tmp0_ != NULL;
1923
2463
void sql_heavy_database_set_enable_profiling (SQLHeavyDatabase* self, gboolean value) {
1924
2465
GError * _inner_error_ = NULL;
1925
2466
g_return_if_fail (self != NULL);
1926
if (value == FALSE) {
2468
if (_tmp0_ == FALSE) {
1927
2469
sql_heavy_database_set_profiling_data (self, NULL);
1929
if (self->priv->_profiling_data == NULL) {
1930
SQLHeavyProfilingDatabase* _tmp0_ = NULL;
1931
2472
SQLHeavyProfilingDatabase* _tmp1_;
1932
SQLHeavyProfilingDatabase* _tmp2_;
1933
_tmp0_ = sql_heavy_profiling_database_new (NULL, &_inner_error_);
1935
if (_inner_error_ != NULL) {
1936
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
1937
goto __catch16_sql_heavy_error;
2473
_tmp1_ = self->priv->_profiling_data;
2474
if (_tmp1_ == NULL) {
2475
SQLHeavyProfilingDatabase* _tmp2_;
2476
SQLHeavyProfilingDatabase* _tmp3_;
2477
SQLHeavyProfilingDatabase* _tmp4_;
2478
_tmp2_ = sql_heavy_profiling_database_new (NULL, &_inner_error_);
2480
if (_inner_error_ != NULL) {
2481
if (_inner_error_->domain == SQL_HEAVY_ERROR) {
2482
goto __catch16_sql_heavy_error;
2484
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2485
g_clear_error (&_inner_error_);
1939
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1940
g_clear_error (&_inner_error_);
2489
sql_heavy_database_set_profiling_data (self, _tmp4_);
2490
_g_object_unref0 (_tmp4_);
1944
sql_heavy_database_set_profiling_data (self, _tmp2_);
1945
_g_object_unref0 (_tmp2_);
1947
2493
goto __finally16;
1948
2494
__catch16_sql_heavy_error:
2498
const gchar* _tmp6_;
1951
2501
e = _inner_error_;
1952
2502
_inner_error_ = NULL;
1953
g_warning ("sqlheavy-database.vala:303: Unable to enable profiling: %s (%d)", e->message, e->code);
2504
_tmp6_ = _tmp5_->message;
2506
_tmp8_ = _tmp7_->code;
2507
g_warning ("sqlheavy-database.vala:303: Unable to enable profiling: %s (%d)", _tmp6_, _tmp8_);
1954
2508
_g_error_free0 (e);
1968
2522
const gchar* sql_heavy_database_get_filename (SQLHeavyDatabase* self) {
1969
2523
const gchar* result;
2524
const gchar* _tmp0_;
1970
2525
g_return_val_if_fail (self != NULL, NULL);
1971
result = self->priv->_filename;
2526
_tmp0_ = self->priv->_filename;
1976
2532
static void sql_heavy_database_set_filename (SQLHeavyDatabase* self, const gchar* value) {
2533
const gchar* _tmp0_;
1978
2535
g_return_if_fail (self != NULL);
1979
_tmp0_ = g_strdup (value);
2537
_tmp1_ = g_strdup (_tmp0_);
1980
2538
_g_free0 (self->priv->_filename);
1981
self->priv->_filename = _tmp0_;
2539
self->priv->_filename = _tmp1_;
1982
2540
g_object_notify ((GObject *) self, "filename");
1986
2544
SQLHeavyFileMode sql_heavy_database_get_mode (SQLHeavyDatabase* self) {
1987
2545
SQLHeavyFileMode result;
2546
SQLHeavyFileMode _tmp0_;
1988
2547
g_return_val_if_fail (self != NULL, 0);
1989
result = self->priv->_mode;
2548
_tmp0_ = self->priv->_mode;
1994
2554
static void sql_heavy_database_set_mode (SQLHeavyDatabase* self, SQLHeavyFileMode value) {
2555
SQLHeavyFileMode _tmp0_;
1995
2556
g_return_if_fail (self != NULL);
1996
self->priv->_mode = value;
2558
self->priv->_mode = _tmp0_;
1997
2559
g_object_notify ((GObject *) self, "mode");
2001
2563
gint64 sql_heavy_database_get_last_insert_id (SQLHeavyDatabase* self) {
2566
gint64 _tmp1_ = 0LL;
2004
2567
g_return_val_if_fail (self != NULL, 0LL);
2005
_tmp0_ = sqlite3_last_insert_rowid (self->priv->db);
2568
_tmp0_ = self->priv->db;
2569
_tmp1_ = sqlite3_last_insert_rowid (_tmp0_);
2222
static gint _lambda7_ (SQLHeavyDatabase* self, sqlite3* db, const gchar* dbname, gint pages) {
2808
static gint _sql_heavy_database_journal_mode____lambda9_ (SQLHeavyDatabase* self, sqlite3* db, const gchar* dbname, gint pages) {
2223
2809
gint result = 0;
2810
const gchar* _tmp0_;
2224
2812
g_return_val_if_fail (db != NULL, 0);
2225
2813
g_return_val_if_fail (dbname != NULL, 0);
2226
g_signal_emit_by_name (self, "wal-committed", dbname, pages);
2816
g_signal_emit_by_name (self, "wal-committed", _tmp0_, _tmp1_);
2227
2817
result = SQLITE_OK;
2232
static gint __lambda7__sql_heavy_wal_hook_callback (gpointer self, sqlite3* db, const gchar* dbname, gint pages) {
2822
static gint __sql_heavy_database_journal_mode____lambda9__sql_heavy_wal_hook_callback (gpointer self, sqlite3* db, const gchar* dbname, gint pages) {
2234
result = _lambda7_ (self, db, dbname, pages);
2824
result = _sql_heavy_database_journal_mode____lambda9_ (self, db, dbname, pages);
2239
2829
void sql_heavy_database_set_journal_mode (SQLHeavyDatabase* self, SQLHeavyJournalMode value) {
2240
const gchar* _tmp5_ = NULL;
2830
SQLHeavyJournalMode _tmp0_;
2831
SQLHeavyJournalMode _tmp9_;
2832
const gchar* _tmp10_ = NULL;
2241
2833
g_return_if_fail (self != NULL);
2242
if (value == SQL_HEAVY_JOURNAL_MODE_WAL) {
2244
GModule* _tmp2_ = NULL;
2835
if (_tmp0_ == SQL_HEAVY_JOURNAL_MODE_WAL) {
2837
GModule* _tmp3_ = NULL;
2246
2839
void* sqlite3_wal_hook = NULL;
2247
void* _tmp3_ = NULL;
2249
_tmp0_ = sqlite3_libversion_number ();
2250
if (_tmp0_ < 3007000) {
2251
const gchar* _tmp1_ = NULL;
2252
_tmp1_ = sqlite3_libversion ();
2841
void* _tmp5_ = NULL;
2842
gboolean _tmp6_ = FALSE;
2845
_tmp1_ = sqlite3_libversion_number ();
2846
if (_tmp1_ < 3007000) {
2847
const gchar* _tmp2_ = NULL;
2848
_tmp2_ = sqlite3_libversion ();
2253
2849
g_warning ("sqlheavy-database.vala:564: SQLite-%s does not support write-ahead log" \
2257
_tmp2_ = g_module_open (NULL, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
2259
_tmp4_ = g_module_symbol (mod, "sqlite3_wal_hook", &_tmp3_);
2260
sqlite3_wal_hook = _tmp3_;
2262
((SQLHeavyWALHookFunc) sqlite3_wal_hook) (self->priv->db, __lambda7__sql_heavy_wal_hook_callback, self);
2853
_tmp3_ = g_module_open (NULL, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
2856
_tmp6_ = g_module_symbol (_tmp4_, "sqlite3_wal_hook", &_tmp5_);
2857
sqlite3_wal_hook = _tmp5_;
2859
_tmp7_ = sqlite3_wal_hook;
2860
_tmp8_ = self->priv->db;
2861
((SQLHeavyWALHookFunc) _tmp7_) (_tmp8_, __sql_heavy_database_journal_mode____lambda9__sql_heavy_wal_hook_callback, self);
2263
2862
_g_module_close0 (mod);
2265
_tmp5_ = sql_heavy_journal_mode_to_string (value);
2266
sql_heavy_database_pragma_set_string (self, "journal_mode", _tmp5_);
2865
_tmp10_ = sql_heavy_journal_mode_to_string (_tmp9_);
2866
sql_heavy_database_pragma_set_string (self, "journal_mode", _tmp10_);
2267
2867
g_object_notify ((GObject *) self, "journal-mode");
2271
2871
gint sql_heavy_database_get_journal_size_limit (SQLHeavyDatabase* self) {
2274
2874
g_return_val_if_fail (self != NULL, 0);
2275
2875
_tmp0_ = sql_heavy_database_pragma_get_int (self, "journal_size_limit");
2276
2876
result = _tmp0_;
3008
3658
sql_heavy_database_sql_heavy_queryable_parent_iface = g_type_interface_peek_parent (iface);
3009
3659
iface->lock = (void (*)(SQLHeavyQueryable*)) sql_heavy_database_real_lock;
3010
3660
iface->unlock = (void (*)(SQLHeavyQueryable*)) sql_heavy_database_real_unlock;
3011
iface->queue = (void (*)(SQLHeavyQueryable* ,SQLHeavyQuery* ,GError**)) sql_heavy_database_real_queue;
3661
iface->queue = (void (*)(SQLHeavyQueryable*, SQLHeavyQuery*, GError**)) sql_heavy_database_real_queue;
3012
3662
iface->get_database = sql_heavy_database_real_get_database;
3016
3666
static void sql_heavy_database_g_initable_interface_init (GInitableIface * iface) {
3017
3667
sql_heavy_database_g_initable_parent_iface = g_type_interface_peek_parent (iface);
3018
iface->init = (gboolean (*)(GInitable* ,GCancellable* ,GError**)) sql_heavy_database_init;
3668
iface->init = (gboolean (*)(GInitable*, GCancellable*, GError**)) sql_heavy_database_init;
3022
3672
static void sql_heavy_database_instance_init (SQLHeavyDatabase * self) {
3023
GHashTable* _tmp0_ = NULL;
3024
sqlite3_mutex* _tmp1_ = NULL;
3025
GSequence* _tmp2_ = NULL;
3675
GDestroyNotify _tmp2_;
3676
GDestroyNotify _tmp3_;
3678
sqlite3_mutex* _tmp5_;
3027
3681
self->priv = SQL_HEAVY_DATABASE_GET_PRIVATE (self);
3028
_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
3029
self->priv->user_functions = _tmp0_;
3682
_tmp0_ = g_str_hash;
3683
_tmp1_ = g_str_equal;
3685
_tmp3_ = g_object_unref;
3686
_tmp4_ = g_hash_table_new_full (_tmp0_, _tmp1_, _tmp2_, _tmp3_);
3687
self->priv->user_functions = _tmp4_;
3030
3688
g_static_rec_mutex_init (&self->priv->__lock_orm_tables);
3031
3689
self->priv->orm_tables = NULL;
3032
3690
self->priv->_wal_auto_checkpoint = 10;
3033
3691
self->priv->db = NULL;
3034
_tmp1_ = sqlite3_mutex_alloc (SQLITE_MUTEX_FAST);
3035
self->priv->_transaction_lock = _tmp1_;
3692
_tmp5_ = sqlite3_mutex_alloc (SQLITE_MUTEX_FAST);
3693
self->priv->_transaction_lock = _tmp5_;
3036
3694
g_static_rec_mutex_init (&self->priv->__lock__queue);
3037
3695
self->priv->_queue = NULL;
3038
3696
self->priv->_step_lock = NULL;
3039
3697
g_static_rec_mutex_init (&self->priv->__lock_needs_update_on_step_unlock);
3040
_tmp2_ = g_sequence_new (g_object_unref);
3041
self->priv->needs_update_on_step_unlock = _tmp2_;
3698
_tmp6_ = g_sequence_new (_g_object_unref0_);
3699
self->priv->needs_update_on_step_unlock = _tmp6_;
3042
3700
self->priv->_profiling_data = NULL;
3043
_tmp3_ = g_strdup (":memory:");
3044
self->priv->_filename = _tmp3_;
3701
_tmp7_ = g_strdup (":memory:");
3702
self->priv->_filename = _tmp7_;
3045
3703
self->priv->_mode = (SQL_HEAVY_FILE_MODE_READ | SQL_HEAVY_FILE_MODE_WRITE) | SQL_HEAVY_FILE_MODE_CREATE;
3049
3707
static void sql_heavy_database_finalize (GObject* obj) {
3050
3708
SQLHeavyDatabase * self;
3051
GList* _tmp0_ = NULL;
3710
GList* _tmp1_ = NULL;
3052
3711
self = SQL_HEAVY_DATABASE (obj);
3053
_tmp0_ = g_hash_table_get_values (self->priv->user_functions);
3712
_tmp0_ = self->priv->user_functions;
3713
_tmp1_ = g_hash_table_get_values (_tmp0_);
3055
GList* udf_collection;
3057
udf_collection = _tmp0_;
3715
GList* udf_collection = NULL;
3716
GList* udf_it = NULL;
3717
udf_collection = _tmp1_;
3058
3718
for (udf_it = udf_collection; udf_it != NULL; udf_it = udf_it->next) {
3059
SQLHeavyUserFunctionUserFuncData* udf;
3719
SQLHeavyUserFunctionUserFuncData* udf = NULL;
3060
3720
udf = (SQLHeavyUserFunctionUserFuncData*) udf_it->data;
3062
sql_heavy_database_unregister_function_context (self, udf);
3722
SQLHeavyUserFunctionUserFuncData* _tmp2_;
3724
sql_heavy_database_unregister_function_context (self, _tmp2_);
3065
3727
_g_list_free0 (udf_collection);