Small. Fast. Reliable.
Choose any three.
*** 12,14 ****
--- 12,42 ----
  (2003-10-21 by drh:) Not that I know of.
  
  DK: Of course, when you do the fork() you are creating a new copy of the in-memory db for the child process. So subsequent edits to the db in the child won't show up in the parents copy, and vice-versa.
+ 
+ NgPS: Multiple connections to ":memory:" within a single process creates a fresh database each time:
+ 
+   * (defvar db (sql:connect '(":memory:")
+                             :database-type :sqlite
+                             :make-default nil
+                             :if-exists :new))
+   DB
+   * (sql:execute-command "create table a (id integer primary key, x varchar)"
+                          :database db)
+   T
+   * (sql:execute-command "insert into a values (NULL, 'aaa')" :database db)
+   T
+   * (sql:execute-command "insert into a values (NULL, 'bbb')" :database db)
+   T
+   * (sql:execute-command "insert into a values (NULL, 'ccc')" :database db)
+   T
+   * (sql:query "select * from a" :database db)
+   (("1" "aaa") ("2" "bbb") ("3" "ccc"))
+   * (sql:query "select * from sqlite_master" :database db)
+   (("table" "a" "a" "3" "create table a (id integer primary key, x varchar)"))
+   * (defvar db2 (sql:connect '(":memory:")
+                              :database-type :sqlite
+                              :make-default nil
+                              :if-exists :old))
+   DB2
+   * (sql:query "select * from sqlite_master" :database db2)
+   NIL