@@ -0,0 +1,565 @@
1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2026-01-05
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The author disclaims copyright to this source code. In place of
5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a legal notice, here is a blessing:
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you do good and not evil.
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you find forgiveness for yourself and forgive others.
9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you share freely, never taking more than you give.
10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ******************************************************************************
12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This file implements a VFS shim that writes a timestamp and other tracing
14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** information into 16 byts of reserved space at the end of each page of the
15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database file. The additional data is written as the page is added to
16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the WAL file for databases in WAL mode, or as the database file itself
17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is modified in rollback modes.
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The VFS also tries to generate log-files with names of the form:
20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** $(DATABASE)-tmstmp/$(TIME)-$(PID)-$(ID)
22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Log files are only generated if directory $(DATABASE)-tmstmp exists.
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The name of eaunix-epoch time in millisecond,
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the process ID, and a random 32-bit value (to disambiguate multiple
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connections from the spaces. The log file
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** contains one 16-byte record for various events, such as opening or close
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the database or WAL file, writes to the WAL file, checkpoints, and
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** similar. The logfile is only generated if the connection attempts to
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** modify the database. There is a separate log file for each open database
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection.
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMPILING
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build this extension as a separately loaded shared library or
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** DLL, use compiler command-lines similar to the following:
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (linux) gcc -fPIC -shared tmstmpvfs.c -o tmstmpvfs.so
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (mac) clang -fPIC -dynamiclib tmstmpvfs.c -o tmstmpvfs.dylib
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (windows) cl tmstmpvfs.c -link -dll -out:tmstmpvfs.dll
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** You may want to add additional compiler options, of course,
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** according to the ne/*
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2026-01-05
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The author disclaims copyright to this source code. In place of
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a legal notice, here is a blessing:
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you do good and not evil.
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you find forgiveness for yourself and forgive others.
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you share freely, never taking more than you give.
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ******************************************************************************
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This file implements a VFS shim that writes a timestamp and other tracing
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** information into 16 byts of reserved space at the end of each page of the
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database file. The additional data is written as the page is added to
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the WAL file for databases in WAL mode, or as the database file itself
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is modified in rollback modes.
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The VFS also tries to generate log-files with names of the form:
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** $(DATABASE)-tmstmp/$(TIME)-$(PID)-$(ID)
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Log files are only generated if directory $(DATABASE)-tmstmp exists.
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The name of each log file is the current ISO8601 time iThe author disclaims copyright to this source code. In place of
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a legal notice, here is a blessing:
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you do good and not evil.
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you find forgiveness for yourself and forgive others.
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you share freely, never taking more than you give.
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ******************************************************************************
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This file implements a VFS shim that writes a timestamp and other tracing
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** information into 16 byts of reserved space at the end of each page of the
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database file. The additional data is written as the page is added to
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the WAL file for databases in WAL mode, or as the database file itself
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is modified in rollback modes.
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The VFS also tries to generate log-files with names of the form:
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** $(DATABASE)-tmstmp/$(TIME)-$(PID)-$(ID)
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Log files are only generated if directory $(DATABASE)-tmstmp exists.
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The name of each log file is the current ISO8601 time in milliseconds,
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the process ID, and a random 32-bit value (to disambiguate multiple
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connections from the same process) separated by dashes. The log file
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** contains 16-bytes records for various events, such as opening or close
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the database or WAL file, writes to the WAL file, checkpoints/*
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 202 file implements a VFS shim that writes a timestamp and other tracing
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** information into 16 byts of reserved space at the end of each page of the
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database file.
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The VFS also tries to generate log-files with names of the form:
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** $(DATABASE)-tmstmp/$(TIME)-$(PID)-$(ID)
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Log files are only generated if directory $(DATABASE)-tmstmp exists.
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The name of each log file is the current ISO8601 time in milliseconds,
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the process ID, and a random 32-bit value (to disambiguate multiple
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connections from the same process) separated by dashes. The log file
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** contains 16-bytes records for various events, such as opening or close
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the database or WAL file, writes to the WAL file, checkpoints, and
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** similar. The logfile is only generated if the connection attempts to
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** modify the database. There is a separate log file for each open database
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection.
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMPILING
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build this extension as a separately loaded shared library or
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** DLL, use compiler command-lines similar to the following:
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (linux) gcc -fPIC -shared tmstmpvfs.c -o tmstmpvfs.so
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (mac) clang -fPIC -dynamiclib tmstmpvfs.c -o tmstmpvfs.dylib
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (windows) cl tmstmpvfs.c -link -dll -out:tmstmpvfs.dll
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** You may want to add additional compiler options, of course,
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** according to the needs of your project.
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Another option is to statically link both SQLite and this extension
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** into your application. If both this file and "sqlite3.c" are statically
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** linked, and if "sqlite3.c" is compiled with an option like:
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -DSQLITE_EXTRA_INIT=sqlitethe number ofeach page of the dat1970,mp VFS by default t
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **hroughout your. All values are expressed
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ind this extension as a shared library, you first have to
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** bring up a dummy SQLite de --csv option to the command above, then the command generates
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a Comma-Separated-Value (CSV) file as output, which contains a
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** decoding of the complete timestamp tag on each page of the database.
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This CVS file can be easily imported into an1970-01-01. (6 bytes is sufficient for timestamps
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for almost 9000 years.)
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** .import -
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **-csv '|showdb --tmstmp -csv orig.db pgidx' ts_table
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** In the command above, the database containing the timestamps is
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "orig.db" and the content is imported into a new table named "ts_table".
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The "ts_table" is created automatically, using the column names found
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in the first line of the CSV file. All columns of the automatically
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** created ts_table are of type TEXT. It might make more sense to
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** create the table yourself, using more sensible datatypes, like this:
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CREATE TABLE ts_table (
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pgno INT, -- page number
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** tm REAL, -- seconds since 1970-01-01
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** frame INT, -- WAL frame number
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** flg INT, -- flag (tag byte 12)
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** salt INT, -- WAL salt (tag bytes 13-15)
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** parent INT, -- Parent page number
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** child INT, -- Index of this page in its parent
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ovfl INT, -- Index of this page on the overflow chain
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** txt TEXT -- Description of this page
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** );
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Then import using:
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** .import --csv --skip 1 '|showdb --tmstmp --csv orig.db pgidx' ts_table
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note the addition of the "--skip 1" option on ".import" to bypass the
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** first line of the CSV file that contains the column names.
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Both programs "showdb" and "showtmlog" can be built by running
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "make showtmlog showdb" from the top-level of a recent SQLite
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** source tree.
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(SQLITE_AMALGAMATION) && !defined(SQLITE_TMSTMPVFS_STATIC)
167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_TMSTMPVFS_STATIC
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_TMSTMPVFS_STATIC
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include "sqlite3.h"
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include "sqlite3ext.h"
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_EXTENSION_INIT1
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <string.h>
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <assert.h>
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <stdio.h>
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Forward declaration of objects used by this utility
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct sqlite3_vfs TmstmpVfs;
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct TmstmpFile TmstmpFile;
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct TmstmpLog TmstmpLog;
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Bytes of reserved space used by this extension
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TMSTMP_RESERVE 16
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The magic number used to identify TmstmpFile objects
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TMSTMP_MAGIC 0x2a87b72d
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Useful datatype abbreviations
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !defined(SQLITE_AMALGAMATION)
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef unsigned char u8;
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef unsigned int u32;
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Current process id
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(_WIN32)
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include <windows.h>
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define GETPID (u32)GetCurrentProcessId()
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include <unistd.h>
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define GETPID (u32)getpid()
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Access to a lower-level VFS that (might) implement dynamic loading,
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** access to randomness, etc.
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ORIGVFS(p) ((sqlite3_vfs*)((p)->pAppData))
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ORIGFILE(p) ((sqlite3_file*)(((TmstmpFile*)(p))+1))
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Information for the tmstmp log file. */
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct TmstmpLog {
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zLogname; /* Log filename */
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FILE *log; /* Open log file */
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n; /* Bytes of a[] used */
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned char a[16*6]; /* Buffered header for the log */
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* An open WAL or DB file */
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct TmstmpFile {
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_file base; /* IO methods */
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 uMagic; /* Magic number for sanity checking */
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 salt1; /* Last WAL salt-1 value */
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 iFrame; /* Last WAL frame number */
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 pgno; /* Current page number */
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 pgsz; /* Size of each page, in bytes */
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 isWal; /* True if this is a WAL file */
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 isDb; /* True if this is a DB file */
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 isCommit; /* Last WAL frame header was a transaction commit */
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 hasCorrectReserve; /* File has the correct reserve size */
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 inCkpt; /* True if in a checkpoint */
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TmstmpLog *pLog; /* Log file */
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TmstmpFile *pPartner; /* DB->WAL or WAL->DB mapping */
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 iOfst; /* Offset of last WAL frame header */
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_vfs *pSubVfs; /* Underlying VFS */
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Event log opcodes
250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_OPEN_DB 0x01
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_OPEN_WAL 0x02
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_WAL_PAGE 0x03
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_DB_PAGE 0x04
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_CKPT_START 0x05
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_CKPT_PAGE 0x06
257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_CKPT_DONE 0x07
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_WAL_RESET 0x08
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_CLOSE_WAL 0x0e
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_CLOSE_DB 0x0f
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Methods for TmstmpFile
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpClose(sqlite3_file*);
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpRead(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst);
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpWrite(sqlite3_file*,const void*,int iAmt, sqlite3_int64 iOfst);
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpTruncate(sqlite3_file*, sqlite3_int64 size);
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpSync(sqlite3_file*, int flags);
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFileSize(sqlite3_file*, sqlite3_int64 *pSize);
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpLock(sqlite3_file*, int);
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpUnlock(sqlite3_file*, int);
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpCheckReservedLock(sqlite3_file*, int *pResOut);
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFileControl(sqlite3_file*, int op, void *pArg);
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpSectorSize(sqlite3_file*);
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpDeviceCharacteristics(sqlite3_file*);
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpShmMap(sqlite3_file*, int iPg, int pgsz, int, void volatile**);
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpShmLock(sqlite3_file*, int offset, int n, int flags);
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpShmBarrier(sqlite3_file*);
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpShmUnmap(sqlite3_file*, int deleteFlag);
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFetch(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp);
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpUnfetch(sqlite3_file*, sqlite3_int64 iOfst, void *p);
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Methods for TmstmpVfs
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpOpen(sqlite3_vfs*, const char *, sqlite3_file*, int , int *);
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpDelete(sqlite3_vfs*, const char *zName, int syncDir);
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpAccess(sqlite3_vfs*, const char *zName, int flags, int *);
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFullPathname(sqlite3_vfs*, const char *zName, int, char *zOut);
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void *tmstmpDlOpen(sqlite3_vfs*, const char *zFilename);
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpDlError(sqlite3_vfs*, int nByte, char *zErrMsg);
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void (*tmstmpDlSym(sqlite3_vfs *pVfs, void *p, const char*zSym))(void);
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpDlClose(sqlite3_vfs*, void*);
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpRandomness(sqlite3_vfs*, int nByte, char *zOut);
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpSleep(sqlite3_vfs*, int microseconds);
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpCurrentTime(sqlite3_vfs*, double*);
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpGetLastError(sqlite3_vfs*, int, char *);
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpCurrentTimeInt64(sqlite3_vfs*, sqlite3_int64*);
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpSetSystemCall(sqlite3_vfs*, const char*,sqlite3_syscall_ptr);
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static sqlite3_syscall_ptr tmstmpGetSystemCall(sqlite3_vfs*, const char *z);
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *tmstmpNextSystemCall(sqlite3_vfs*, const char *zName);
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static sqlite3_vfs tmstmp_vfs = {
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 3, /* iVersion (set when registered) */
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, /* szOsFile (set when registered) */
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 1024, /* mxPathname */
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, /* pNext */
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "tmstmpvfs", /* zName */
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, /* pAppData (set when registered) */
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpOpen, /* xOpen */
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDelete, /* xDelete */
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpAccess, /* xAccess */
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFullPathname, /* xFullPathname */
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDlOpen, /* xDlOpen */
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDlError, /* xDlError */
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDlSym, /* xDlSym */
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDlClose, /* xDlClose */
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpRandomness, /* xRandomness */
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpSleep, /* xSleep */
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpCurrentTime, /* xCurrentTime */
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpGetLastError, /* xGetLastError */
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpCurrentTimeInt64, /* xCurrentTimeInt64 */
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpSetSystemCall, /* xSetSystemCall */
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpGetSystemCall, /* xGetSystemCall */
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpNextSystemCall /* xNextSystemCall */
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const sqlite3_io_methods tmstmp_io_methods = {
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 3, /* iVersion */
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstm /* xClose */
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpRead, /* xRead */
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpWrite, /* xWrite */
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpTruncate, /* xTruncate */
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpSync, /* xSync */
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFileSize, /* xFileSize */
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpLock, /* xLock */
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpUnlock, /* xUnlock */
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpCheckReservedLock, /* xCheckReservedLock */
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFileConorSize, /* xSectorSize */
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDeviceCharacteristics, /* xDeviceCharacteristics */
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmMap, /* xShmMap */
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmLock, /* xShmLock */
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmBarrier, /* xShmBarrier */
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmUnmap, /* xShmUnmap */
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFetch, /* xFetch */
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpUnfetch /* xUnfetch */
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Write a 6-byte millisecond timestamp into aOut[]
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpPutTS(TmstmpFile *p, unsigned char *aOut){
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_uint64 tm = 0;
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pSubVfs->xCurrentTimeInt64(p->pSubVfs, (sqlite3_int64*)&tm);
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tm -= 210866760000000LL;
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[0] = (tm>>40)&0xff;
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[1] = (tm>>32)&0xff /* xDlClose */
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpRandomness, /* xRandomness */
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpSleep, /* xSleep */
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpCurrentTime, /* xCurrentTime */
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpGetLastError, /* xGetLastError */
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpCurrentTimeInt64, /* xCurrentTimeInt64 */
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpSetSystemCall, /* xSetSystemCall */
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpGetSystemCall, /* xGetSystemCall */
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpNextSystemCall /* xNextSystemCall */
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const sqlite3_io_methods tmstmp_io_methods = {
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 3, /* iVersion */
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstm /* xClose */
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpRead, /* xRead */
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpWrite, /* xWrite */
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpTruncate, /* xTruncate */
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpSync, /* xSync */
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFileSize, /* xFileSize */
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpLock, /* xLock */
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpUnlock, /* xUnlock */
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpCheckReservedLock, /* xCheckReservedLock */
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFileConorSize, /* xSectorSize */
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpDeviceCharacteristics, /* xDeviceCharacteristics */
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmMap, /* xShmMap */
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmLock, /* xShmLock */
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmBarrier, /* xShmBarrier */
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpShmUnmap, /* xShmUnmap */
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpFetch, /* xFetch */
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmstmpUnfetch /* xUnfetch */
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Write a 6-byte millisecond timestamp into aOut[]
392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpPutTS(TmstmpFile *p, unsigned char *aOut){
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_uint64 tm = 0;
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pSubVfs->xCurrentTimeInt64(p->pSubVfs, (sqlite3_int64*)&tm);
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tm -= 210866760000000LL;
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[0] = (tm>>40)&0xff;
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[1] = (tm>>32)&0xff;
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[2] = (tm>>24)&0xff;
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[3] = (tm>>16)&0xff;
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[4] = (tm>>8)&0xff;
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOut[5] = tm&0xff;
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 16pGetU32(((const u8*)zBuf)+8);
407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(&x, ((con8*s tmstmpPutU32(p s[12] = p->isCommit ? 1 : 0PAGE, s[12]u32 2026-01-05
408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The author disclaims copyright to this source code. In place of
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a legal notice, here is a blessing:
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you do good and not evil.
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you find forgiveness for yourself and forgive others.
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you share freely, never taking more than you give.
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ******************************************************************************
417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This file implements a VFS shim that writes a timestamp and other tracing
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** information into 16 byts of reserved space at the end of each page of the
420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database file.
421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The VFS also tries to generate log-files with names of the form:
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** $(DATABASE)-tmstmp/$(TIME)-$(PID)-$(ID)
425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Log files are only generated if directory $(DATABASE)-tmstmp exists.
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The name of each log file is the current ISO8601 time in milliseconds,
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the process ID, and a random 32-bit value (to disambiguate multiple
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connections from the same process) separated by dashes. The log file
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** contains 16-bytes records for various events, such as opening or close
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the database or WAL file, writes to the WAL file, checkpoints, and
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** s - 8)/(p->pgsz + 48the connection attempts to
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** modify the database. There is a separate log file for each open database
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection.
435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMPILING
437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build this extension as a separately loaded shared library or
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** DLL, use compiler command-lines similar to the following:
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (linux) gcc -fPIC -shared tmstmpvfs.c -o tmstmpvfs.so
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (mac) clang -fPIC -dynamiclib tmstmpvfs.c -o tmstmpvfs.dylib
443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (windows) cl tmstmpvfs.c -link -dll -out:tmstmpvfs.dll
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** You may want to add additional compiler opons, of course,
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** according
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** increased buting
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** informatioSo if a database file already
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** has a reserve-bytes value greater than 16, there is no way to
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** activate timestamping on that database, other than to dump
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and restore the database file. Note also that other extensions
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** might also make use of the reserve-bytes. Timestamping will
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be incompatible with those other extensionso disambiguate multiple
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connections from the same process) separated by dashes. The log file
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** contains 16-bytes records for various events, such as opening or ciOfst/p->pgsztabase or WAL file, writes to the WAL file, checkpoints, and
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** similar. The logfile is only generated if the connection attempts to
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** modify the database. There is a separate log file for each open database
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection.
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMPILING
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build this extension as a separately loaded shared library or
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** DLL, use compiler command-lines similar to the following:
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (linux) gcc -fPIC -shared tmstmpvfs.c -o tmstmpvfs.so
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (mac) clang -fPIC -dynamiclib tmstmpvfs.c -o tmstmpvfs.dylib
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (windows) cl tmstmpvfs.c -link -dll -out:tmstmpvfs.dll
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** You may want to add additional compiler options, of course,
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** according to the needs of your project.
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Another option is to statically link both SQLite and this tmp --csv orig.db pgidx' ts_table
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note the addition of the "--skip 1" option on ".import" to bypass the
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** first line of the CSV file that contains the column names.
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Both programs "showdb" and "showtmlog" can be built by running
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "make showtmlog showdb" from the top-level of a recent SQLite
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** source tree.
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(SQLITE_AMALGAMATION) && !defined(SQLITE_TMSTMPVFS_STATIC)
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_TMSTMPVFS_STATIC
483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_TMSTMPVFS_STATIC
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include "sqlite3.h"
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include "sqlite3ext.h"
488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_EXTENSION_INIT1
489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <string.h>
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <assert.h>
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <stdio.h>
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Forward declaration of objects used by this utility
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct sqlite3_vfs TmstmpVfs;
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct TmstmpFile TmstmpFile;
499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef struct TmstmpLog TmstmpLog;
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Bytes of reserved space used by this extension
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TMSTMP_RESERVE 16
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The magic number used to identify TmstmpFile objects
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TMSTMP_MAGIC 0x2a87b72d
510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Useful datatype abbreviations
513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !defined(SQLITE_AMALGAMATION)
515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typedef unsignedif( rc==SQLITEte3_int64 iOfst);
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ statVFSNAME: {
517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ***************/*
518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2026-01-05
519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The author disclaims copyright to this source /*
521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ck(sqlite3_file*, }
522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ te3_int64 iOfst);
523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static inSTART: {
524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ELOG_CLOSE_DB 0qlite3_int64 size);
525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static TmstmpFile
526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpClo int tmstmpRead(sqlite3_file*, vo tmstmpReadvarious events, such as ope);
528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpWri }
529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ck(sqlite3_file*, }
530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ te3_int64 iOfs p->inCkpt = 0;
531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 3_file*, int flagisDb );
532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 3_file*, in int tmstmpRead(sqlite3_0;
533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ***************/*
534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2026-01-05
535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The DONE, 0, 0, 0);
537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ck(sqlite3_file*, }ile*, int);
539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpCheckReservedLock(sqlite3_file*, int *pResOut);
540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFileControl(sqlite3_file*, int op, void *pArg);
541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpSectorSize(sqlite3_file*);
542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpDeviceCharacteristics(sqlite3_file*);
543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpShmMap(sqlite3_file*, int iPg, int pgsz, int, void volatile**);
544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpShmLock(sqlite3_file*, int offset, int n, int flags);
545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpShmBarrier(sqlite3_file*);
546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpShmUnmap(sqlite3_file*, int deleteFlag);
547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFetch(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp);
548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpUnfetch(sqlite3_file*, sqlite3_int64 iOfst, void *p);
549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Methods for TmstmpVfs
552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpOpen(sqlite3_vfs*, const char *, sqlite3_file*, int , int *);
554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpDelete(sqlite3_vfs*, const char *zName, int syncDir);
555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpAccess(sqlite3_vfs*, const char *zName, int flags, int *);
556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpFullPathname(sqlite3_vfs*, const char *zName, int, char *zOut);
557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void *tmstmpDlOpen(sqlite3_vfs*, const char *zFilename);
558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpDlError(sqlite3_vfs*, int nByte, char *zErrMsg);
559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void (*tmstmpDlSym(sqlite3_vfs *pVfs, void *p, const char*zSym))(void);
560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void tmstmpDlClose(sqlite3_vfs*, void*);
561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpRandomness(sqlite3_vfs*, int nByte, char *zOut);
562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpSleep(sqlite3_vfs*, int microseconds);
563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpCurrentTime(sqlite3_vfs*, double*);
564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpGetLastError(sqlite3_vfs*, int, char *);
565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int tmstmpCurrentTimeInt64(sqlite3_vfs*, sqlite3_int64* zName, r1, pid,