SQLite

Check-in Differences
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Difference From 4cad385b90eaca2d To 94ceac98845e3124

2024-09-14
16:39
Enhancements to sqlite_dbpage() so that it accepts INSERT statements that can extend or truncate the database. Add the sqlite3-rsync utility program that make a copy of a live database over SSH. (check-in: b7a8ce4c8c user: drh tags: trunk)
2024-09-13
16:10
Close the db as sqlite3_analyzer exits. (See forum post, "sqlite3_analyzer not closing WAL-mode db cleanly" .) (check-in: 94ceac9884 user: larrybr tags: trunk)
15:37
Merge latest trunk changes, including the changes to the fts5 locale=1 feature, into this branch. (check-in: d2f0d19936 user: dan tags: fts5-contentless-unindexed)
11:14
Further enhancement to PTRMAP display in showdb: Show the details of invalid entries that are within the range of the database file. Continue to ignore invalid entries beyond the end of the database file. (check-in: 4cad385b90 user: drh tags: trunk)
2024-09-12
21:58
Enhancement to the "showdb" utility such that the "ptrmap" command shows PTRMAP entries that extend off the end of the database, as long as they appear to be well-formatted. (check-in: a9f95fe5ce user: drh tags: trunk)

Changes to tool/spaceanal.tcl.
70
71
72
73
74
75
76










77
78
79
80
81
82
83
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93







+
+
+
+
+
+
+
+
+
+








   --tclsh      Run the built-in TCL interpreter interactively (for debugging)

   --version    Show the version number of SQLite
}
  exit 1
}

# Exit with given code, but first close db if open.
#
proc exit_clean {exit_code} {
  if {0 < [llength [info commands db]]} {
    db close
  }
  exit $exit_code
}

set file_to_analyze {}
set flags(-pageinfo) 0
set flags(-stats) 0
set flags(-debug) 0
append argv {}
foreach arg $argv {
  if {[regexp {^-+pageinfo$} $arg]} {
153
154
155
156
157
158
159
160

161
162
163
164
165
166
167
168
169
170
171

172
173
174
175
176
177
178
163
164
165
166
167
168
169

170
171
172
173
174
175
176
177
178
179
180

181
182
183
184
185
186
187
188







-
+










-
+







#
if {![db exists {SELECT 1 FROM pragma_compile_options
                WHERE compile_options='ENABLE_DBSTAT_VTAB'}]} {
  puts "The SQLite database engine linked with this application\
        lacks required capabilities. Recompile using the\
        -DSQLITE_ENABLE_DBSTAT_VTAB compile-time option to fix\
        this problem."
  exit 1
  exit_clean 1
}

db eval {SELECT count(*) FROM sqlite_schema}
set pageSize [expr {wide([db one {PRAGMA page_size}])}]

if {$flags(-pageinfo)} {
  db eval {CREATE VIRTUAL TABLE temp.stat USING dbstat}
  db eval {SELECT name, path, pageno FROM temp.stat ORDER BY pageno} {
    puts "$pageno $name $path"
  }
  exit 0
  exit_clean 0
}
if {$flags(-stats)} {
  db eval {CREATE VIRTUAL TABLE temp.stat USING dbstat}
  puts "BEGIN;"
  puts "CREATE TABLE stats("
  puts "  name       STRING,           /* Name of table or index */"
  puts "  path       INTEGER,          /* Path to page from root */"
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
204
205
206
207
208
209
210

211
212
213
214
215
216
217
218







-
+







                  quote(unused) || ',' ||
                  quote(mx_payload) || ',' ||
                  quote(pgoffset) || ',' ||
                  quote(pgsize) AS x FROM stat} {
    puts "INSERT INTO stats VALUES($x);"
  }
  puts "COMMIT;"
  exit 0
  exit_clean 0
}


# In-memory database for collecting statistics. This script loops through
# the tables and indices in the database being analyzed, adding a row for each
# to an in-memory database (for which the schema is shown below). It then
# queries the in-memory db to produce the space-analysis report.
897
898
899
900
901
902
903
904

905


907
908
909
910
911
912
913

914
915
916
917







-
+

+
+
  puts ");"
}
puts "COMMIT;"

} err]} {
  puts "ERROR: $err"
  puts $errorInfo
  exit 1
  exit_clean 1
}

exit_clean 0