@@ -25,6 +25,7 @@ pub(crate) mod subquery;
25
25
use crate :: schema:: Schema ;
26
26
use crate :: storage:: pager:: Pager ;
27
27
use crate :: storage:: sqlite3_ondisk:: { DatabaseHeader , MIN_PAGE_CACHE_SIZE } ;
28
+ use crate :: storage:: wal:: CheckpointMode ;
28
29
use crate :: translate:: delete:: translate_delete;
29
30
use crate :: util:: PRIMARY_KEY_AUTOMATIC_INDEX_NAME_PREFIX ;
30
31
use crate :: vdbe:: builder:: CursorType ;
@@ -37,7 +38,6 @@ use std::cell::RefCell;
37
38
use std:: fmt:: Display ;
38
39
use std:: rc:: { Rc , Weak } ;
39
40
use std:: str:: FromStr ;
40
- use crate :: storage:: wal:: CheckpointMode ;
41
41
42
42
/// Translate SQL statement into bytecode program.
43
43
pub fn translate (
@@ -619,26 +619,38 @@ fn query_pragma(
619
619
value : database_header. borrow ( ) . default_page_cache_size . into ( ) ,
620
620
dest : register,
621
621
} ) ;
622
+ program. emit_insn ( Insn :: ResultRow {
623
+ start_reg : register,
624
+ count : 1 ,
625
+ } ) ;
622
626
}
623
627
PragmaName :: JournalMode => {
624
628
program. emit_insn ( Insn :: String8 {
625
629
value : "wal" . into ( ) ,
626
630
dest : register,
627
631
} ) ;
632
+ program. emit_insn ( Insn :: ResultRow {
633
+ start_reg : register,
634
+ count : 1 ,
635
+ } ) ;
628
636
}
629
637
PragmaName :: WalCheckpoint => {
638
+ // Checkpoint uses 3 registers: P1, P2, P3. Insn::Checkpoint for more info.
639
+ // Allocate two more here as one was allocated at the top.
640
+ program. alloc_register ( ) ;
641
+ program. alloc_register ( ) ;
630
642
program. emit_insn ( Insn :: Checkpoint {
631
643
database : 0 ,
632
644
checkpoint_mode : CheckpointMode :: Passive ,
633
645
dest : register,
634
646
} ) ;
647
+ program. emit_insn ( Insn :: ResultRow {
648
+ start_reg : register,
649
+ count : 3 ,
650
+ } ) ;
635
651
}
636
652
}
637
653
638
- program. emit_insn ( Insn :: ResultRow {
639
- start_reg : register,
640
- count : 1 ,
641
- } ) ;
642
654
Ok ( ( ) )
643
655
}
644
656
0 commit comments