better-sqlite3-multiple-ciphers 8.0.2-beta.1 → 8.1.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -311,6 +311,8 @@ v8::Local <v8 :: Function> Database::Init (v8::Isolate * isolate, v8::Local <v8
311
311
  {
312
312
  v8::Local<v8::FunctionTemplate> t = NewConstructorTemplate(isolate, data, JS_new, "Database");
313
313
  SetPrototypeMethod(isolate, data, t, "prepare", JS_prepare);
314
+ SetPrototypeMethod(isolate, data, t, "key", JS_key);
315
+ SetPrototypeMethod(isolate, data, t, "rekey", JS_rekey);
314
316
  SetPrototypeMethod(isolate, data, t, "exec", JS_exec);
315
317
  SetPrototypeMethod(isolate, data, t, "backup", JS_backup);
316
318
  SetPrototypeMethod(isolate, data, t, "serialize", JS_serialize);
@@ -325,41 +327,41 @@ v8::Local <v8 :: Function> Database::Init (v8::Isolate * isolate, v8::Local <v8
325
327
  SetPrototypeGetter(isolate, data, t, "inTransaction", JS_inTransaction);
326
328
  return t->GetFunction( isolate -> GetCurrentContext ( ) ).ToLocalChecked();
327
329
  }
328
- #line 24 "./src/objects/database.lzz"
330
+ #line 26 "./src/objects/database.lzz"
329
331
  bool Database::CompareDatabase::operator () (Database const * const a, Database const * const b) const
330
- #line 24 "./src/objects/database.lzz"
332
+ #line 26 "./src/objects/database.lzz"
331
333
  {
332
334
  return a < b;
333
335
  }
334
- #line 29 "./src/objects/database.lzz"
336
+ #line 31 "./src/objects/database.lzz"
335
337
  bool Database::CompareStatement::operator () (Statement const * const a, Statement const * const b) const
336
- #line 29 "./src/objects/database.lzz"
338
+ #line 31 "./src/objects/database.lzz"
337
339
  {
338
340
  return Statement::Compare(a, b);
339
341
  }
340
- #line 34 "./src/objects/database.lzz"
342
+ #line 36 "./src/objects/database.lzz"
341
343
  bool Database::CompareBackup::operator () (Backup const * const a, Backup const * const b) const
342
- #line 34 "./src/objects/database.lzz"
344
+ #line 36 "./src/objects/database.lzz"
343
345
  {
344
346
  return Backup::Compare(a, b);
345
347
  }
346
- #line 40 "./src/objects/database.lzz"
348
+ #line 42 "./src/objects/database.lzz"
347
349
  void Database::ThrowDatabaseError ()
348
- #line 40 "./src/objects/database.lzz"
350
+ #line 42 "./src/objects/database.lzz"
349
351
  {
350
352
  if (was_js_error) was_js_error = false;
351
353
  else ThrowSqliteError(addon, db_handle);
352
354
  }
353
- #line 44 "./src/objects/database.lzz"
355
+ #line 46 "./src/objects/database.lzz"
354
356
  void Database::ThrowSqliteError (Addon * addon, sqlite3 * db_handle)
355
- #line 44 "./src/objects/database.lzz"
357
+ #line 46 "./src/objects/database.lzz"
356
358
  {
357
359
  assert(db_handle != NULL);
358
360
  ThrowSqliteError(addon, sqlite3_errmsg(db_handle), sqlite3_extended_errcode(db_handle));
359
361
  }
360
- #line 48 "./src/objects/database.lzz"
362
+ #line 50 "./src/objects/database.lzz"
361
363
  void Database::ThrowSqliteError (Addon * addon, char const * message, int code)
362
- #line 48 "./src/objects/database.lzz"
364
+ #line 50 "./src/objects/database.lzz"
363
365
  {
364
366
  assert(message != NULL);
365
367
  assert((code & 0xff) != SQLITE_OK);
@@ -374,9 +376,9 @@ void Database::ThrowSqliteError (Addon * addon, char const * message, int code)
374
376
  ->NewInstance( isolate -> GetCurrentContext ( ) , 2, args)
375
377
  .ToLocalChecked());
376
378
  }
377
- #line 64 "./src/objects/database.lzz"
379
+ #line 66 "./src/objects/database.lzz"
378
380
  bool Database::Log (v8::Isolate * isolate, sqlite3_stmt * handle)
379
- #line 64 "./src/objects/database.lzz"
381
+ #line 66 "./src/objects/database.lzz"
380
382
  {
381
383
  assert(was_js_error == false);
382
384
  if (!has_logger) return false;
@@ -388,9 +390,9 @@ bool Database::Log (v8::Isolate * isolate, sqlite3_stmt * handle)
388
390
  if (expanded) sqlite3_free(expanded);
389
391
  return was_js_error;
390
392
  }
391
- #line 107 "./src/objects/database.lzz"
393
+ #line 109 "./src/objects/database.lzz"
392
394
  void Database::CloseHandles ()
393
- #line 107 "./src/objects/database.lzz"
395
+ #line 109 "./src/objects/database.lzz"
394
396
  {
395
397
  if (open) {
396
398
  open = false;
@@ -402,25 +404,25 @@ void Database::CloseHandles ()
402
404
  assert(status == SQLITE_OK); ((void)status);
403
405
  }
404
406
  }
405
- #line 119 "./src/objects/database.lzz"
407
+ #line 121 "./src/objects/database.lzz"
406
408
  Database::~ Database ()
407
- #line 119 "./src/objects/database.lzz"
409
+ #line 121 "./src/objects/database.lzz"
408
410
  {
409
411
  if (open) addon->dbs.erase(this);
410
412
  CloseHandles();
411
413
  }
412
- #line 126 "./src/objects/database.lzz"
414
+ #line 128 "./src/objects/database.lzz"
413
415
  Database::Database (v8::Isolate * isolate, Addon * addon, sqlite3 * db_handle, v8::Local <v8::Value> logger)
414
- #line 131 "./src/objects/database.lzz"
416
+ #line 133 "./src/objects/database.lzz"
415
417
  : node::ObjectWrap (), db_handle (db_handle), open (true), busy (false), safe_ints (false), unsafe_mode (false), was_js_error (false), has_logger (logger->IsFunction()), iterators (0), addon (addon), logger (isolate, logger), stmts (), backups ()
416
- #line 144 "./src/objects/database.lzz"
418
+ #line 146 "./src/objects/database.lzz"
417
419
  {
418
420
  assert(db_handle != NULL);
419
421
  addon->dbs.insert(this);
420
422
  }
421
- #line 149 "./src/objects/database.lzz"
423
+ #line 151 "./src/objects/database.lzz"
422
424
  void Database::JS_new (v8::FunctionCallbackInfo <v8 :: Value> const & info)
423
- #line 149 "./src/objects/database.lzz"
425
+ #line 151 "./src/objects/database.lzz"
424
426
  {
425
427
  assert(info.IsConstructCall());
426
428
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsString ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a string" ) ; v8 :: Local < v8 :: String > filename = ( info [ 0 ] . As < v8 :: String > ( ) ) ;
@@ -472,9 +474,9 @@ void Database::JS_new (v8::FunctionCallbackInfo <v8 :: Value> const & info)
472
474
 
473
475
  info.GetReturnValue().Set(info.This());
474
476
  }
475
- #line 201 "./src/objects/database.lzz"
477
+ #line 203 "./src/objects/database.lzz"
476
478
  void Database::JS_prepare (v8::FunctionCallbackInfo <v8 :: Value> const & info)
477
- #line 201 "./src/objects/database.lzz"
479
+ #line 203 "./src/objects/database.lzz"
478
480
  {
479
481
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsString ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a string" ) ; v8 :: Local < v8 :: String > source = ( info [ 0 ] . As < v8 :: String > ( ) ) ;
480
482
  if ( info . Length ( ) <= ( 1 ) || ! info [ 1 ] -> IsObject ( ) ) return ThrowTypeError ( "Expected " "second" " argument to be " "an object" ) ; v8 :: Local < v8 :: Object > database = ( info [ 1 ] . As < v8 :: Object > ( ) ) ;
@@ -490,9 +492,51 @@ void Database::JS_prepare (v8::FunctionCallbackInfo <v8 :: Value> const & info)
490
492
  addon->privileged_info = NULL;
491
493
  if (!maybeStatement.IsEmpty()) info.GetReturnValue().Set(maybeStatement.ToLocalChecked());
492
494
  }
493
- #line 217 "./src/objects/database.lzz"
495
+ #line 219 "./src/objects/database.lzz"
496
+ void Database::JS_key (v8::FunctionCallbackInfo <v8 :: Value> const & info)
497
+ #line 219 "./src/objects/database.lzz"
498
+ {
499
+ Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
500
+ if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsObject ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "an object" ) ; v8 :: Local < v8 :: Object > key = ( info [ 0 ] . As < v8 :: Object > ( ) ) ;
501
+ if ( info . Length ( ) <= ( 1 ) || ! info [ 1 ] -> IsInt32 ( ) ) return ThrowTypeError ( "Expected " "second" " argument to be " "a 32-bit signed integer" ) ; unsigned int len = ( info [ 1 ] . As < v8 :: Int32 > ( ) ) -> Value ( ) ;
502
+ (void)key;
503
+ (void)len;
504
+ char* buffer = (char*) node::Buffer::Data(key);
505
+ if ( ! db -> open ) return ThrowTypeError ( "The database connection is not open" ) ;
506
+ if ( db -> busy ) return ThrowTypeError ( "This database connection is busy executing a query" ) ;
507
+ sqlite3* const db_handle = db->db_handle;
508
+ int status = sqlite3_key(db_handle, buffer, len);
509
+ if (status != SQLITE_OK) {
510
+ db->ThrowSqliteError(db->addon, sqlite3_errstr(status), status);
511
+ }
512
+ else {
513
+ info.GetReturnValue().Set(status);
514
+ }
515
+ }
516
+ #line 238 "./src/objects/database.lzz"
517
+ void Database::JS_rekey (v8::FunctionCallbackInfo <v8 :: Value> const & info)
518
+ #line 238 "./src/objects/database.lzz"
519
+ {
520
+ Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
521
+ if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsObject ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "an object" ) ; v8 :: Local < v8 :: Object > key = ( info [ 0 ] . As < v8 :: Object > ( ) ) ;
522
+ if ( info . Length ( ) <= ( 1 ) || ! info [ 1 ] -> IsInt32 ( ) ) return ThrowTypeError ( "Expected " "second" " argument to be " "a 32-bit signed integer" ) ; unsigned int len = ( info [ 1 ] . As < v8 :: Int32 > ( ) ) -> Value ( ) ;
523
+ (void)key;
524
+ (void)len;
525
+ char* buffer = (char*) node::Buffer::Data(key);
526
+ if ( ! db -> open ) return ThrowTypeError ( "The database connection is not open" ) ;
527
+ if ( db -> busy ) return ThrowTypeError ( "This database connection is busy executing a query" ) ;
528
+ sqlite3* const db_handle = db->db_handle;
529
+ int status = sqlite3_rekey(db_handle, buffer, len);
530
+ if (status != SQLITE_OK) {
531
+ db->ThrowSqliteError(db->addon, sqlite3_errstr(status), status);
532
+ }
533
+ else {
534
+ info.GetReturnValue().Set(status);
535
+ }
536
+ }
537
+ #line 257 "./src/objects/database.lzz"
494
538
  void Database::JS_exec (v8::FunctionCallbackInfo <v8 :: Value> const & info)
495
- #line 217 "./src/objects/database.lzz"
539
+ #line 257 "./src/objects/database.lzz"
496
540
  {
497
541
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
498
542
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsString ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a string" ) ; v8 :: Local < v8 :: String > source = ( info [ 0 ] . As < v8 :: String > ( ) ) ;
@@ -532,9 +576,9 @@ void Database::JS_exec (v8::FunctionCallbackInfo <v8 :: Value> const & info)
532
576
  db->ThrowDatabaseError();
533
577
  }
534
578
  }
535
- #line 257 "./src/objects/database.lzz"
579
+ #line 297 "./src/objects/database.lzz"
536
580
  void Database::JS_backup (v8::FunctionCallbackInfo <v8 :: Value> const & info)
537
- #line 257 "./src/objects/database.lzz"
581
+ #line 297 "./src/objects/database.lzz"
538
582
  {
539
583
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsObject ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "an object" ) ; v8 :: Local < v8 :: Object > database = ( info [ 0 ] . As < v8 :: Object > ( ) ) ;
540
584
  if ( info . Length ( ) <= ( 1 ) || ! info [ 1 ] -> IsString ( ) ) return ThrowTypeError ( "Expected " "second" " argument to be " "a string" ) ; v8 :: Local < v8 :: String > attachedName = ( info [ 1 ] . As < v8 :: String > ( ) ) ;
@@ -552,9 +596,9 @@ void Database::JS_backup (v8::FunctionCallbackInfo <v8 :: Value> const & info)
552
596
  addon->privileged_info = NULL;
553
597
  if (!maybeBackup.IsEmpty()) info.GetReturnValue().Set(maybeBackup.ToLocalChecked());
554
598
  }
555
- #line 275 "./src/objects/database.lzz"
599
+ #line 315 "./src/objects/database.lzz"
556
600
  void Database::JS_serialize (v8::FunctionCallbackInfo <v8 :: Value> const & info)
557
- #line 275 "./src/objects/database.lzz"
601
+ #line 315 "./src/objects/database.lzz"
558
602
  {
559
603
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
560
604
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsString ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a string" ) ; v8 :: Local < v8 :: String > attachedName = ( info [ 0 ] . As < v8 :: String > ( ) ) ;
@@ -576,9 +620,9 @@ void Database::JS_serialize (v8::FunctionCallbackInfo <v8 :: Value> const & info
576
620
  node::Buffer::New(isolate, reinterpret_cast<char*>(data), length, FreeSerialization, NULL).ToLocalChecked()
577
621
  );
578
622
  }
579
- #line 297 "./src/objects/database.lzz"
623
+ #line 337 "./src/objects/database.lzz"
580
624
  void Database::JS_function (v8::FunctionCallbackInfo <v8 :: Value> const & info)
581
- #line 297 "./src/objects/database.lzz"
625
+ #line 337 "./src/objects/database.lzz"
582
626
  {
583
627
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
584
628
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsFunction ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a function" ) ; v8 :: Local < v8 :: Function > fn = ( info [ 0 ] . As < v8 :: Function > ( ) ) ;
@@ -602,9 +646,9 @@ void Database::JS_function (v8::FunctionCallbackInfo <v8 :: Value> const & info)
602
646
  db->ThrowDatabaseError();
603
647
  }
604
648
  }
605
- #line 321 "./src/objects/database.lzz"
649
+ #line 361 "./src/objects/database.lzz"
606
650
  void Database::JS_aggregate (v8::FunctionCallbackInfo <v8 :: Value> const & info)
607
- #line 321 "./src/objects/database.lzz"
651
+ #line 361 "./src/objects/database.lzz"
608
652
  {
609
653
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
610
654
  if ( info . Length ( ) <= ( 0 ) ) return ThrowTypeError ( "Expected a " "first" " argument" ) ; v8 :: Local < v8 :: Value > start = info [ 0 ] ;
@@ -633,9 +677,9 @@ void Database::JS_aggregate (v8::FunctionCallbackInfo <v8 :: Value> const & info
633
677
  db->ThrowDatabaseError();
634
678
  }
635
679
  }
636
- #line 350 "./src/objects/database.lzz"
680
+ #line 390 "./src/objects/database.lzz"
637
681
  void Database::JS_table (v8::FunctionCallbackInfo <v8 :: Value> const & info)
638
- #line 350 "./src/objects/database.lzz"
682
+ #line 390 "./src/objects/database.lzz"
639
683
  {
640
684
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
641
685
  if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsFunction ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a function" ) ; v8 :: Local < v8 :: Function > factory = ( info [ 0 ] . As < v8 :: Function > ( ) ) ;
@@ -655,9 +699,9 @@ void Database::JS_table (v8::FunctionCallbackInfo <v8 :: Value> const & info)
655
699
  }
656
700
  db->busy = false;
657
701
  }
658
- #line 370 "./src/objects/database.lzz"
702
+ #line 410 "./src/objects/database.lzz"
659
703
  void Database::JS_loadExtension (v8::FunctionCallbackInfo <v8 :: Value> const & info)
660
- #line 370 "./src/objects/database.lzz"
704
+ #line 410 "./src/objects/database.lzz"
661
705
  {
662
706
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
663
707
  v8::Local<v8::String> entryPoint;
@@ -679,9 +723,9 @@ void Database::JS_loadExtension (v8::FunctionCallbackInfo <v8 :: Value> const &
679
723
  }
680
724
  sqlite3_free(error);
681
725
  }
682
- #line 392 "./src/objects/database.lzz"
726
+ #line 432 "./src/objects/database.lzz"
683
727
  void Database::JS_close (v8::FunctionCallbackInfo <v8 :: Value> const & info)
684
- #line 392 "./src/objects/database.lzz"
728
+ #line 432 "./src/objects/database.lzz"
685
729
  {
686
730
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
687
731
  if (db->open) {
@@ -691,39 +735,39 @@ void Database::JS_close (v8::FunctionCallbackInfo <v8 :: Value> const & info)
691
735
  db->CloseHandles();
692
736
  }
693
737
  }
694
- #line 402 "./src/objects/database.lzz"
738
+ #line 442 "./src/objects/database.lzz"
695
739
  void Database::JS_defaultSafeIntegers (v8::FunctionCallbackInfo <v8 :: Value> const & info)
696
- #line 402 "./src/objects/database.lzz"
740
+ #line 442 "./src/objects/database.lzz"
697
741
  {
698
742
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
699
743
  if (info.Length() == 0) db->safe_ints = true;
700
744
  else { if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsBoolean ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a boolean" ) ; db -> safe_ints = ( info [ 0 ] . As < v8 :: Boolean > ( ) ) -> Value ( ) ; }
701
745
  }
702
- #line 408 "./src/objects/database.lzz"
746
+ #line 448 "./src/objects/database.lzz"
703
747
  void Database::JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info)
704
- #line 408 "./src/objects/database.lzz"
748
+ #line 448 "./src/objects/database.lzz"
705
749
  {
706
750
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
707
751
  if (info.Length() == 0) db->unsafe_mode = true;
708
752
  else { if ( info . Length ( ) <= ( 0 ) || ! info [ 0 ] -> IsBoolean ( ) ) return ThrowTypeError ( "Expected " "first" " argument to be " "a boolean" ) ; db -> unsafe_mode = ( info [ 0 ] . As < v8 :: Boolean > ( ) ) -> Value ( ) ; }
709
753
  sqlite3_db_config(db->db_handle, SQLITE_DBCONFIG_DEFENSIVE, static_cast<int>(!db->unsafe_mode), NULL);
710
754
  }
711
- #line 415 "./src/objects/database.lzz"
755
+ #line 455 "./src/objects/database.lzz"
712
756
  void Database::JS_open (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
713
- #line 415 "./src/objects/database.lzz"
757
+ #line 455 "./src/objects/database.lzz"
714
758
  {
715
759
  info.GetReturnValue().Set( node :: ObjectWrap :: Unwrap <Database>(info.This())->open);
716
760
  }
717
- #line 419 "./src/objects/database.lzz"
761
+ #line 459 "./src/objects/database.lzz"
718
762
  void Database::JS_inTransaction (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info)
719
- #line 419 "./src/objects/database.lzz"
763
+ #line 459 "./src/objects/database.lzz"
720
764
  {
721
765
  Database* db = node :: ObjectWrap :: Unwrap <Database>(info.This());
722
766
  info.GetReturnValue().Set(db->open && !static_cast<bool>(sqlite3_get_autocommit(db->db_handle)));
723
767
  }
724
- #line 424 "./src/objects/database.lzz"
768
+ #line 464 "./src/objects/database.lzz"
725
769
  bool Database::Deserialize (v8::Local <v8::Object> buffer, Addon * addon, sqlite3 * db_handle, bool readonly)
726
- #line 424 "./src/objects/database.lzz"
770
+ #line 464 "./src/objects/database.lzz"
727
771
  {
728
772
  size_t length = node::Buffer::Length(buffer);
729
773
  unsigned char* data = (unsigned char*)sqlite3_malloc64(length);
@@ -748,15 +792,15 @@ bool Database::Deserialize (v8::Local <v8::Object> buffer, Addon * addon, sqlite
748
792
 
749
793
  return true;
750
794
  }
751
- #line 449 "./src/objects/database.lzz"
795
+ #line 489 "./src/objects/database.lzz"
752
796
  void Database::FreeSerialization (char * data, void * _)
753
- #line 449 "./src/objects/database.lzz"
797
+ #line 489 "./src/objects/database.lzz"
754
798
  {
755
799
  sqlite3_free(data);
756
800
  }
757
- #line 453 "./src/objects/database.lzz"
801
+ #line 493 "./src/objects/database.lzz"
758
802
  int const Database::MAX_BUFFER_SIZE;
759
- #line 454 "./src/objects/database.lzz"
803
+ #line 494 "./src/objects/database.lzz"
760
804
  int const Database::MAX_STRING_SIZE;
761
805
  #line 4 "./src/objects/statement.lzz"
762
806
  v8::Local <v8 :: Function> Statement::Init (v8::Isolate * isolate, v8::Local <v8 :: External> data)
@@ -170,139 +170,143 @@ class Database : public node::ObjectWrap
170
170
  public:
171
171
  #line 4 "./src/objects/database.lzz"
172
172
  static v8::Local <v8 :: Function> Init (v8::Isolate * isolate, v8::Local <v8 :: External> data);
173
- #line 23 "./src/objects/database.lzz"
173
+ #line 25 "./src/objects/database.lzz"
174
174
  class CompareDatabase
175
175
  {
176
- #line 23 "./src/objects/database.lzz"
176
+ #line 25 "./src/objects/database.lzz"
177
177
  public:
178
- #line 24 "./src/objects/database.lzz"
178
+ #line 26 "./src/objects/database.lzz"
179
179
  bool operator () (Database const * const a, Database const * const b) const;
180
180
  };
181
- #line 28 "./src/objects/database.lzz"
181
+ #line 30 "./src/objects/database.lzz"
182
182
  class CompareStatement
183
183
  {
184
- #line 28 "./src/objects/database.lzz"
184
+ #line 30 "./src/objects/database.lzz"
185
185
  public:
186
- #line 29 "./src/objects/database.lzz"
186
+ #line 31 "./src/objects/database.lzz"
187
187
  bool operator () (Statement const * const a, Statement const * const b) const;
188
188
  };
189
- #line 33 "./src/objects/database.lzz"
189
+ #line 35 "./src/objects/database.lzz"
190
190
  class CompareBackup
191
191
  {
192
- #line 33 "./src/objects/database.lzz"
192
+ #line 35 "./src/objects/database.lzz"
193
193
  public:
194
- #line 34 "./src/objects/database.lzz"
194
+ #line 36 "./src/objects/database.lzz"
195
195
  bool operator () (Backup const * const a, Backup const * const b) const;
196
196
  };
197
- #line 40 "./src/objects/database.lzz"
197
+ #line 42 "./src/objects/database.lzz"
198
198
  void ThrowDatabaseError ();
199
- #line 44 "./src/objects/database.lzz"
199
+ #line 46 "./src/objects/database.lzz"
200
200
  static void ThrowSqliteError (Addon * addon, sqlite3 * db_handle);
201
- #line 48 "./src/objects/database.lzz"
201
+ #line 50 "./src/objects/database.lzz"
202
202
  static void ThrowSqliteError (Addon * addon, char const * message, int code);
203
- #line 64 "./src/objects/database.lzz"
203
+ #line 66 "./src/objects/database.lzz"
204
204
  bool Log (v8::Isolate * isolate, sqlite3_stmt * handle);
205
- #line 77 "./src/objects/database.lzz"
205
+ #line 79 "./src/objects/database.lzz"
206
206
  void AddStatement (Statement * stmt);
207
- #line 78 "./src/objects/database.lzz"
207
+ #line 80 "./src/objects/database.lzz"
208
208
  void RemoveStatement (Statement * stmt);
209
- #line 81 "./src/objects/database.lzz"
209
+ #line 83 "./src/objects/database.lzz"
210
210
  void AddBackup (Backup * backup);
211
- #line 82 "./src/objects/database.lzz"
211
+ #line 84 "./src/objects/database.lzz"
212
212
  void RemoveBackup (Backup * backup);
213
- #line 86 "./src/objects/database.lzz"
213
+ #line 88 "./src/objects/database.lzz"
214
214
  struct State
215
215
  {
216
- #line 87 "./src/objects/database.lzz"
216
+ #line 89 "./src/objects/database.lzz"
217
217
  bool const open;
218
- #line 88 "./src/objects/database.lzz"
218
+ #line 90 "./src/objects/database.lzz"
219
219
  bool busy;
220
- #line 89 "./src/objects/database.lzz"
220
+ #line 91 "./src/objects/database.lzz"
221
221
  bool const safe_ints;
222
- #line 90 "./src/objects/database.lzz"
222
+ #line 92 "./src/objects/database.lzz"
223
223
  bool const unsafe_mode;
224
- #line 91 "./src/objects/database.lzz"
224
+ #line 93 "./src/objects/database.lzz"
225
225
  bool was_js_error;
226
- #line 92 "./src/objects/database.lzz"
226
+ #line 94 "./src/objects/database.lzz"
227
227
  bool const has_logger;
228
- #line 93 "./src/objects/database.lzz"
228
+ #line 95 "./src/objects/database.lzz"
229
229
  unsigned short int iterators;
230
- #line 94 "./src/objects/database.lzz"
230
+ #line 96 "./src/objects/database.lzz"
231
231
  Addon * const addon;
232
232
  };
233
- #line 96 "./src/objects/database.lzz"
233
+ #line 98 "./src/objects/database.lzz"
234
234
  State * GetState ();
235
- #line 99 "./src/objects/database.lzz"
235
+ #line 101 "./src/objects/database.lzz"
236
236
  sqlite3 * GetHandle ();
237
- #line 102 "./src/objects/database.lzz"
237
+ #line 104 "./src/objects/database.lzz"
238
238
  Addon * GetAddon ();
239
- #line 107 "./src/objects/database.lzz"
239
+ #line 109 "./src/objects/database.lzz"
240
240
  void CloseHandles ();
241
- #line 119 "./src/objects/database.lzz"
241
+ #line 121 "./src/objects/database.lzz"
242
242
  ~ Database ();
243
- #line 124 "./src/objects/database.lzz"
244
- private:
245
243
  #line 126 "./src/objects/database.lzz"
244
+ private:
245
+ #line 128 "./src/objects/database.lzz"
246
246
  explicit Database (v8::Isolate * isolate, Addon * addon, sqlite3 * db_handle, v8::Local <v8::Value> logger);
247
- #line 149 "./src/objects/database.lzz"
247
+ #line 151 "./src/objects/database.lzz"
248
248
  static void JS_new (v8::FunctionCallbackInfo <v8 :: Value> const & info);
249
- #line 201 "./src/objects/database.lzz"
249
+ #line 203 "./src/objects/database.lzz"
250
250
  static void JS_prepare (v8::FunctionCallbackInfo <v8 :: Value> const & info);
251
- #line 217 "./src/objects/database.lzz"
252
- static void JS_exec (v8::FunctionCallbackInfo <v8 :: Value> const & info);
251
+ #line 219 "./src/objects/database.lzz"
252
+ static void JS_key (v8::FunctionCallbackInfo <v8 :: Value> const & info);
253
+ #line 238 "./src/objects/database.lzz"
254
+ static void JS_rekey (v8::FunctionCallbackInfo <v8 :: Value> const & info);
253
255
  #line 257 "./src/objects/database.lzz"
256
+ static void JS_exec (v8::FunctionCallbackInfo <v8 :: Value> const & info);
257
+ #line 297 "./src/objects/database.lzz"
254
258
  static void JS_backup (v8::FunctionCallbackInfo <v8 :: Value> const & info);
255
- #line 275 "./src/objects/database.lzz"
259
+ #line 315 "./src/objects/database.lzz"
256
260
  static void JS_serialize (v8::FunctionCallbackInfo <v8 :: Value> const & info);
257
- #line 297 "./src/objects/database.lzz"
261
+ #line 337 "./src/objects/database.lzz"
258
262
  static void JS_function (v8::FunctionCallbackInfo <v8 :: Value> const & info);
259
- #line 321 "./src/objects/database.lzz"
263
+ #line 361 "./src/objects/database.lzz"
260
264
  static void JS_aggregate (v8::FunctionCallbackInfo <v8 :: Value> const & info);
261
- #line 350 "./src/objects/database.lzz"
265
+ #line 390 "./src/objects/database.lzz"
262
266
  static void JS_table (v8::FunctionCallbackInfo <v8 :: Value> const & info);
263
- #line 370 "./src/objects/database.lzz"
267
+ #line 410 "./src/objects/database.lzz"
264
268
  static void JS_loadExtension (v8::FunctionCallbackInfo <v8 :: Value> const & info);
265
- #line 392 "./src/objects/database.lzz"
269
+ #line 432 "./src/objects/database.lzz"
266
270
  static void JS_close (v8::FunctionCallbackInfo <v8 :: Value> const & info);
267
- #line 402 "./src/objects/database.lzz"
271
+ #line 442 "./src/objects/database.lzz"
268
272
  static void JS_defaultSafeIntegers (v8::FunctionCallbackInfo <v8 :: Value> const & info);
269
- #line 408 "./src/objects/database.lzz"
273
+ #line 448 "./src/objects/database.lzz"
270
274
  static void JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info);
271
- #line 415 "./src/objects/database.lzz"
275
+ #line 455 "./src/objects/database.lzz"
272
276
  static void JS_open (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
273
- #line 419 "./src/objects/database.lzz"
277
+ #line 459 "./src/objects/database.lzz"
274
278
  static void JS_inTransaction (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
275
- #line 424 "./src/objects/database.lzz"
279
+ #line 464 "./src/objects/database.lzz"
276
280
  static bool Deserialize (v8::Local <v8::Object> buffer, Addon * addon, sqlite3 * db_handle, bool readonly);
277
- #line 449 "./src/objects/database.lzz"
281
+ #line 489 "./src/objects/database.lzz"
278
282
  static void FreeSerialization (char * data, void * _);
279
- #line 453 "./src/objects/database.lzz"
283
+ #line 493 "./src/objects/database.lzz"
280
284
  static int const MAX_BUFFER_SIZE = node::Buffer::kMaxLength > INT_MAX ? INT_MAX : static_cast<int>(node::Buffer::kMaxLength);
281
- #line 454 "./src/objects/database.lzz"
285
+ #line 494 "./src/objects/database.lzz"
282
286
  static int const MAX_STRING_SIZE = v8::String::kMaxLength > INT_MAX ? INT_MAX : static_cast<int>(v8::String::kMaxLength);
283
- #line 456 "./src/objects/database.lzz"
287
+ #line 496 "./src/objects/database.lzz"
284
288
  sqlite3 * const db_handle;
285
- #line 457 "./src/objects/database.lzz"
289
+ #line 497 "./src/objects/database.lzz"
286
290
  bool open;
287
- #line 458 "./src/objects/database.lzz"
291
+ #line 498 "./src/objects/database.lzz"
288
292
  bool busy;
289
- #line 459 "./src/objects/database.lzz"
293
+ #line 499 "./src/objects/database.lzz"
290
294
  bool safe_ints;
291
- #line 460 "./src/objects/database.lzz"
295
+ #line 500 "./src/objects/database.lzz"
292
296
  bool unsafe_mode;
293
- #line 461 "./src/objects/database.lzz"
297
+ #line 501 "./src/objects/database.lzz"
294
298
  bool was_js_error;
295
- #line 462 "./src/objects/database.lzz"
299
+ #line 502 "./src/objects/database.lzz"
296
300
  bool const has_logger;
297
- #line 463 "./src/objects/database.lzz"
301
+ #line 503 "./src/objects/database.lzz"
298
302
  unsigned short int iterators;
299
- #line 464 "./src/objects/database.lzz"
303
+ #line 504 "./src/objects/database.lzz"
300
304
  Addon * const addon;
301
- #line 465 "./src/objects/database.lzz"
305
+ #line 505 "./src/objects/database.lzz"
302
306
  CopyablePersistent <v8::Value> const logger;
303
- #line 466 "./src/objects/database.lzz"
307
+ #line 506 "./src/objects/database.lzz"
304
308
  std::set <Statement*, CompareStatement> stmts;
305
- #line 467 "./src/objects/database.lzz"
309
+ #line 507 "./src/objects/database.lzz"
306
310
  std::set <Backup*, CompareBackup> backups;
307
311
  };
308
312
  #line 1 "./src/objects/statement.lzz"
@@ -880,41 +884,41 @@ LZZ_INLINE int BindMap::GetSize ()
880
884
  {
881
885
  return length;
882
886
  }
883
- #line 77 "./src/objects/database.lzz"
887
+ #line 79 "./src/objects/database.lzz"
884
888
  LZZ_INLINE void Database::AddStatement (Statement * stmt)
885
- #line 77 "./src/objects/database.lzz"
889
+ #line 79 "./src/objects/database.lzz"
886
890
  { stmts.insert(stmts.end(), stmt);
887
891
  }
888
- #line 78 "./src/objects/database.lzz"
892
+ #line 80 "./src/objects/database.lzz"
889
893
  LZZ_INLINE void Database::RemoveStatement (Statement * stmt)
890
- #line 78 "./src/objects/database.lzz"
894
+ #line 80 "./src/objects/database.lzz"
891
895
  { stmts.erase(stmt);
892
896
  }
893
- #line 81 "./src/objects/database.lzz"
897
+ #line 83 "./src/objects/database.lzz"
894
898
  LZZ_INLINE void Database::AddBackup (Backup * backup)
895
- #line 81 "./src/objects/database.lzz"
899
+ #line 83 "./src/objects/database.lzz"
896
900
  { backups.insert(backups.end(), backup);
897
901
  }
898
- #line 82 "./src/objects/database.lzz"
902
+ #line 84 "./src/objects/database.lzz"
899
903
  LZZ_INLINE void Database::RemoveBackup (Backup * backup)
900
- #line 82 "./src/objects/database.lzz"
904
+ #line 84 "./src/objects/database.lzz"
901
905
  { backups.erase(backup);
902
906
  }
903
- #line 96 "./src/objects/database.lzz"
907
+ #line 98 "./src/objects/database.lzz"
904
908
  LZZ_INLINE Database::State * Database::GetState ()
905
- #line 96 "./src/objects/database.lzz"
909
+ #line 98 "./src/objects/database.lzz"
906
910
  {
907
911
  return reinterpret_cast<State*>(&open);
908
912
  }
909
- #line 99 "./src/objects/database.lzz"
913
+ #line 101 "./src/objects/database.lzz"
910
914
  LZZ_INLINE sqlite3 * Database::GetHandle ()
911
- #line 99 "./src/objects/database.lzz"
915
+ #line 101 "./src/objects/database.lzz"
912
916
  {
913
917
  return db_handle;
914
918
  }
915
- #line 102 "./src/objects/database.lzz"
919
+ #line 104 "./src/objects/database.lzz"
916
920
  LZZ_INLINE Addon * Database::GetAddon ()
917
- #line 102 "./src/objects/database.lzz"
921
+ #line 104 "./src/objects/database.lzz"
918
922
  {
919
923
  return addon;
920
924
  }