better-sqlite3-multiple-ciphers 8.1.0 → 8.2.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.
- package/README.md +10 -8
- package/deps/setup.ps1 +1 -1
- package/deps/sqlite3/sqlite3.c +3104 -1382
- package/deps/sqlite3/sqlite3.h +167 -86
- package/deps/sqlite3/sqlite3ext.h +4 -0
- package/lib/database.js +2 -0
- package/lib/methods/wrappers.js +10 -0
- package/package.json +2 -1
- package/src/better_sqlite3.cpp +99 -55
- package/src/better_sqlite3.hpp +81 -77
package/src/better_sqlite3.cpp
CHANGED
|
@@ -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
|
|
330
|
+
#line 26 "./src/objects/database.lzz"
|
|
329
331
|
bool Database::CompareDatabase::operator () (Database const * const a, Database const * const b) const
|
|
330
|
-
#line
|
|
332
|
+
#line 26 "./src/objects/database.lzz"
|
|
331
333
|
{
|
|
332
334
|
return a < b;
|
|
333
335
|
}
|
|
334
|
-
#line
|
|
336
|
+
#line 31 "./src/objects/database.lzz"
|
|
335
337
|
bool Database::CompareStatement::operator () (Statement const * const a, Statement const * const b) const
|
|
336
|
-
#line
|
|
338
|
+
#line 31 "./src/objects/database.lzz"
|
|
337
339
|
{
|
|
338
340
|
return Statement::Compare(a, b);
|
|
339
341
|
}
|
|
340
|
-
#line
|
|
342
|
+
#line 36 "./src/objects/database.lzz"
|
|
341
343
|
bool Database::CompareBackup::operator () (Backup const * const a, Backup const * const b) const
|
|
342
|
-
#line
|
|
344
|
+
#line 36 "./src/objects/database.lzz"
|
|
343
345
|
{
|
|
344
346
|
return Backup::Compare(a, b);
|
|
345
347
|
}
|
|
346
|
-
#line
|
|
348
|
+
#line 42 "./src/objects/database.lzz"
|
|
347
349
|
void Database::ThrowDatabaseError ()
|
|
348
|
-
#line
|
|
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
|
|
355
|
+
#line 46 "./src/objects/database.lzz"
|
|
354
356
|
void Database::ThrowSqliteError (Addon * addon, sqlite3 * db_handle)
|
|
355
|
-
#line
|
|
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
|
|
362
|
+
#line 50 "./src/objects/database.lzz"
|
|
361
363
|
void Database::ThrowSqliteError (Addon * addon, char const * message, int code)
|
|
362
|
-
#line
|
|
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
|
|
379
|
+
#line 66 "./src/objects/database.lzz"
|
|
378
380
|
bool Database::Log (v8::Isolate * isolate, sqlite3_stmt * handle)
|
|
379
|
-
#line
|
|
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
|
|
393
|
+
#line 109 "./src/objects/database.lzz"
|
|
392
394
|
void Database::CloseHandles ()
|
|
393
|
-
#line
|
|
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
|
|
407
|
+
#line 121 "./src/objects/database.lzz"
|
|
406
408
|
Database::~ Database ()
|
|
407
|
-
#line
|
|
409
|
+
#line 121 "./src/objects/database.lzz"
|
|
408
410
|
{
|
|
409
411
|
if (open) addon->dbs.erase(this);
|
|
410
412
|
CloseHandles();
|
|
411
413
|
}
|
|
412
|
-
#line
|
|
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
|
|
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
|
|
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
|
|
423
|
+
#line 151 "./src/objects/database.lzz"
|
|
422
424
|
void Database::JS_new (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
423
|
-
#line
|
|
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
|
|
477
|
+
#line 203 "./src/objects/database.lzz"
|
|
476
478
|
void Database::JS_prepare (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
477
|
-
#line
|
|
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
|
|
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
|
|
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
|
|
579
|
+
#line 297 "./src/objects/database.lzz"
|
|
536
580
|
void Database::JS_backup (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
537
|
-
#line
|
|
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
|
|
599
|
+
#line 315 "./src/objects/database.lzz"
|
|
556
600
|
void Database::JS_serialize (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
557
|
-
#line
|
|
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
|
|
623
|
+
#line 337 "./src/objects/database.lzz"
|
|
580
624
|
void Database::JS_function (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
581
|
-
#line
|
|
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
|
|
649
|
+
#line 361 "./src/objects/database.lzz"
|
|
606
650
|
void Database::JS_aggregate (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
607
|
-
#line
|
|
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
|
|
680
|
+
#line 390 "./src/objects/database.lzz"
|
|
637
681
|
void Database::JS_table (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
638
|
-
#line
|
|
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
|
|
702
|
+
#line 410 "./src/objects/database.lzz"
|
|
659
703
|
void Database::JS_loadExtension (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
660
|
-
#line
|
|
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
|
|
726
|
+
#line 432 "./src/objects/database.lzz"
|
|
683
727
|
void Database::JS_close (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
684
|
-
#line
|
|
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
|
|
738
|
+
#line 442 "./src/objects/database.lzz"
|
|
695
739
|
void Database::JS_defaultSafeIntegers (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
696
|
-
#line
|
|
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
|
|
746
|
+
#line 448 "./src/objects/database.lzz"
|
|
703
747
|
void Database::JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info)
|
|
704
|
-
#line
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
795
|
+
#line 489 "./src/objects/database.lzz"
|
|
752
796
|
void Database::FreeSerialization (char * data, void * _)
|
|
753
|
-
#line
|
|
797
|
+
#line 489 "./src/objects/database.lzz"
|
|
754
798
|
{
|
|
755
799
|
sqlite3_free(data);
|
|
756
800
|
}
|
|
757
|
-
#line
|
|
801
|
+
#line 493 "./src/objects/database.lzz"
|
|
758
802
|
int const Database::MAX_BUFFER_SIZE;
|
|
759
|
-
#line
|
|
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)
|
package/src/better_sqlite3.hpp
CHANGED
|
@@ -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
|
|
173
|
+
#line 25 "./src/objects/database.lzz"
|
|
174
174
|
class CompareDatabase
|
|
175
175
|
{
|
|
176
|
-
#line
|
|
176
|
+
#line 25 "./src/objects/database.lzz"
|
|
177
177
|
public:
|
|
178
|
-
#line
|
|
178
|
+
#line 26 "./src/objects/database.lzz"
|
|
179
179
|
bool operator () (Database const * const a, Database const * const b) const;
|
|
180
180
|
};
|
|
181
|
-
#line
|
|
181
|
+
#line 30 "./src/objects/database.lzz"
|
|
182
182
|
class CompareStatement
|
|
183
183
|
{
|
|
184
|
-
#line
|
|
184
|
+
#line 30 "./src/objects/database.lzz"
|
|
185
185
|
public:
|
|
186
|
-
#line
|
|
186
|
+
#line 31 "./src/objects/database.lzz"
|
|
187
187
|
bool operator () (Statement const * const a, Statement const * const b) const;
|
|
188
188
|
};
|
|
189
|
-
#line
|
|
189
|
+
#line 35 "./src/objects/database.lzz"
|
|
190
190
|
class CompareBackup
|
|
191
191
|
{
|
|
192
|
-
#line
|
|
192
|
+
#line 35 "./src/objects/database.lzz"
|
|
193
193
|
public:
|
|
194
|
-
#line
|
|
194
|
+
#line 36 "./src/objects/database.lzz"
|
|
195
195
|
bool operator () (Backup const * const a, Backup const * const b) const;
|
|
196
196
|
};
|
|
197
|
-
#line
|
|
197
|
+
#line 42 "./src/objects/database.lzz"
|
|
198
198
|
void ThrowDatabaseError ();
|
|
199
|
-
#line
|
|
199
|
+
#line 46 "./src/objects/database.lzz"
|
|
200
200
|
static void ThrowSqliteError (Addon * addon, sqlite3 * db_handle);
|
|
201
|
-
#line
|
|
201
|
+
#line 50 "./src/objects/database.lzz"
|
|
202
202
|
static void ThrowSqliteError (Addon * addon, char const * message, int code);
|
|
203
|
-
#line
|
|
203
|
+
#line 66 "./src/objects/database.lzz"
|
|
204
204
|
bool Log (v8::Isolate * isolate, sqlite3_stmt * handle);
|
|
205
|
-
#line
|
|
205
|
+
#line 79 "./src/objects/database.lzz"
|
|
206
206
|
void AddStatement (Statement * stmt);
|
|
207
|
-
#line
|
|
207
|
+
#line 80 "./src/objects/database.lzz"
|
|
208
208
|
void RemoveStatement (Statement * stmt);
|
|
209
|
-
#line
|
|
209
|
+
#line 83 "./src/objects/database.lzz"
|
|
210
210
|
void AddBackup (Backup * backup);
|
|
211
|
-
#line
|
|
211
|
+
#line 84 "./src/objects/database.lzz"
|
|
212
212
|
void RemoveBackup (Backup * backup);
|
|
213
|
-
#line
|
|
213
|
+
#line 88 "./src/objects/database.lzz"
|
|
214
214
|
struct State
|
|
215
215
|
{
|
|
216
|
-
#line
|
|
216
|
+
#line 89 "./src/objects/database.lzz"
|
|
217
217
|
bool const open;
|
|
218
|
-
#line
|
|
218
|
+
#line 90 "./src/objects/database.lzz"
|
|
219
219
|
bool busy;
|
|
220
|
-
#line
|
|
220
|
+
#line 91 "./src/objects/database.lzz"
|
|
221
221
|
bool const safe_ints;
|
|
222
|
-
#line
|
|
222
|
+
#line 92 "./src/objects/database.lzz"
|
|
223
223
|
bool const unsafe_mode;
|
|
224
|
-
#line
|
|
224
|
+
#line 93 "./src/objects/database.lzz"
|
|
225
225
|
bool was_js_error;
|
|
226
|
-
#line
|
|
226
|
+
#line 94 "./src/objects/database.lzz"
|
|
227
227
|
bool const has_logger;
|
|
228
|
-
#line
|
|
228
|
+
#line 95 "./src/objects/database.lzz"
|
|
229
229
|
unsigned short int iterators;
|
|
230
|
-
#line
|
|
230
|
+
#line 96 "./src/objects/database.lzz"
|
|
231
231
|
Addon * const addon;
|
|
232
232
|
};
|
|
233
|
-
#line
|
|
233
|
+
#line 98 "./src/objects/database.lzz"
|
|
234
234
|
State * GetState ();
|
|
235
|
-
#line
|
|
235
|
+
#line 101 "./src/objects/database.lzz"
|
|
236
236
|
sqlite3 * GetHandle ();
|
|
237
|
-
#line
|
|
237
|
+
#line 104 "./src/objects/database.lzz"
|
|
238
238
|
Addon * GetAddon ();
|
|
239
|
-
#line
|
|
239
|
+
#line 109 "./src/objects/database.lzz"
|
|
240
240
|
void CloseHandles ();
|
|
241
|
-
#line
|
|
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
|
|
247
|
+
#line 151 "./src/objects/database.lzz"
|
|
248
248
|
static void JS_new (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
249
|
-
#line
|
|
249
|
+
#line 203 "./src/objects/database.lzz"
|
|
250
250
|
static void JS_prepare (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
251
|
-
#line
|
|
252
|
-
static void
|
|
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
|
|
259
|
+
#line 315 "./src/objects/database.lzz"
|
|
256
260
|
static void JS_serialize (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
257
|
-
#line
|
|
261
|
+
#line 337 "./src/objects/database.lzz"
|
|
258
262
|
static void JS_function (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
259
|
-
#line
|
|
263
|
+
#line 361 "./src/objects/database.lzz"
|
|
260
264
|
static void JS_aggregate (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
261
|
-
#line
|
|
265
|
+
#line 390 "./src/objects/database.lzz"
|
|
262
266
|
static void JS_table (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
263
|
-
#line
|
|
267
|
+
#line 410 "./src/objects/database.lzz"
|
|
264
268
|
static void JS_loadExtension (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
265
|
-
#line
|
|
269
|
+
#line 432 "./src/objects/database.lzz"
|
|
266
270
|
static void JS_close (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
267
|
-
#line
|
|
271
|
+
#line 442 "./src/objects/database.lzz"
|
|
268
272
|
static void JS_defaultSafeIntegers (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
269
|
-
#line
|
|
273
|
+
#line 448 "./src/objects/database.lzz"
|
|
270
274
|
static void JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info);
|
|
271
|
-
#line
|
|
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
|
|
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
|
|
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
|
|
281
|
+
#line 489 "./src/objects/database.lzz"
|
|
278
282
|
static void FreeSerialization (char * data, void * _);
|
|
279
|
-
#line
|
|
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
|
|
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
|
|
287
|
+
#line 496 "./src/objects/database.lzz"
|
|
284
288
|
sqlite3 * const db_handle;
|
|
285
|
-
#line
|
|
289
|
+
#line 497 "./src/objects/database.lzz"
|
|
286
290
|
bool open;
|
|
287
|
-
#line
|
|
291
|
+
#line 498 "./src/objects/database.lzz"
|
|
288
292
|
bool busy;
|
|
289
|
-
#line
|
|
293
|
+
#line 499 "./src/objects/database.lzz"
|
|
290
294
|
bool safe_ints;
|
|
291
|
-
#line
|
|
295
|
+
#line 500 "./src/objects/database.lzz"
|
|
292
296
|
bool unsafe_mode;
|
|
293
|
-
#line
|
|
297
|
+
#line 501 "./src/objects/database.lzz"
|
|
294
298
|
bool was_js_error;
|
|
295
|
-
#line
|
|
299
|
+
#line 502 "./src/objects/database.lzz"
|
|
296
300
|
bool const has_logger;
|
|
297
|
-
#line
|
|
301
|
+
#line 503 "./src/objects/database.lzz"
|
|
298
302
|
unsigned short int iterators;
|
|
299
|
-
#line
|
|
303
|
+
#line 504 "./src/objects/database.lzz"
|
|
300
304
|
Addon * const addon;
|
|
301
|
-
#line
|
|
305
|
+
#line 505 "./src/objects/database.lzz"
|
|
302
306
|
CopyablePersistent <v8::Value> const logger;
|
|
303
|
-
#line
|
|
307
|
+
#line 506 "./src/objects/database.lzz"
|
|
304
308
|
std::set <Statement*, CompareStatement> stmts;
|
|
305
|
-
#line
|
|
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
|
|
887
|
+
#line 79 "./src/objects/database.lzz"
|
|
884
888
|
LZZ_INLINE void Database::AddStatement (Statement * stmt)
|
|
885
|
-
#line
|
|
889
|
+
#line 79 "./src/objects/database.lzz"
|
|
886
890
|
{ stmts.insert(stmts.end(), stmt);
|
|
887
891
|
}
|
|
888
|
-
#line
|
|
892
|
+
#line 80 "./src/objects/database.lzz"
|
|
889
893
|
LZZ_INLINE void Database::RemoveStatement (Statement * stmt)
|
|
890
|
-
#line
|
|
894
|
+
#line 80 "./src/objects/database.lzz"
|
|
891
895
|
{ stmts.erase(stmt);
|
|
892
896
|
}
|
|
893
|
-
#line
|
|
897
|
+
#line 83 "./src/objects/database.lzz"
|
|
894
898
|
LZZ_INLINE void Database::AddBackup (Backup * backup)
|
|
895
|
-
#line
|
|
899
|
+
#line 83 "./src/objects/database.lzz"
|
|
896
900
|
{ backups.insert(backups.end(), backup);
|
|
897
901
|
}
|
|
898
|
-
#line
|
|
902
|
+
#line 84 "./src/objects/database.lzz"
|
|
899
903
|
LZZ_INLINE void Database::RemoveBackup (Backup * backup)
|
|
900
|
-
#line
|
|
904
|
+
#line 84 "./src/objects/database.lzz"
|
|
901
905
|
{ backups.erase(backup);
|
|
902
906
|
}
|
|
903
|
-
#line
|
|
907
|
+
#line 98 "./src/objects/database.lzz"
|
|
904
908
|
LZZ_INLINE Database::State * Database::GetState ()
|
|
905
|
-
#line
|
|
909
|
+
#line 98 "./src/objects/database.lzz"
|
|
906
910
|
{
|
|
907
911
|
return reinterpret_cast<State*>(&open);
|
|
908
912
|
}
|
|
909
|
-
#line
|
|
913
|
+
#line 101 "./src/objects/database.lzz"
|
|
910
914
|
LZZ_INLINE sqlite3 * Database::GetHandle ()
|
|
911
|
-
#line
|
|
915
|
+
#line 101 "./src/objects/database.lzz"
|
|
912
916
|
{
|
|
913
917
|
return db_handle;
|
|
914
918
|
}
|
|
915
|
-
#line
|
|
919
|
+
#line 104 "./src/objects/database.lzz"
|
|
916
920
|
LZZ_INLINE Addon * Database::GetAddon ()
|
|
917
|
-
#line
|
|
921
|
+
#line 104 "./src/objects/database.lzz"
|
|
918
922
|
{
|
|
919
923
|
return addon;
|
|
920
924
|
}
|