Subject: bug#72788: 30.0.50; multisession--ensure-db: Symbol’s function definition is void: sqlite-open [2 times]

From: Eli Zaretskii <[email-masked]>
Date: Sun, 25 Aug 2024 08:36:52 +0300

> Date: Sun, 25 Aug 2024 00:59:34 +0300
> From: Jean Louis <[email-masked]>
> Cc: [email-masked]
> 
> * Eli Zaretskii <[email-masked]> [2024-08-24 16:03]:
> > > Date: Sat, 24 Aug 2024 11:54:49 +0300
> > > From: Jean Louis <[email-masked]>
> > > 
> > > Following bug does not appear from 'emacs -Q':
> > 
> > Then please show the minimal recipe to reproduce it, starting from
> > "emacs -Q".
> > 
> > > When I press C-x 8 e s to search for emoji, and then for example I
> > > choose "mobile phone", when I press RET, then I get this error:
> > > 
> > > multisession--ensure-db: Symbol’s function definition is void: sqlite-open
> > > 
> > > I am not using function 'sqlite-open' and I do not see why should I get
> > > this error, I did not have it before.
> > 
> > I cannot reproduce this.  If you cannot show a reproduction recipe,
> > please show the Lisp backtrace from this error (by setting
> > debug-on-error non-nil), then we could try to figure out why this
> > happened to you.
> 
> Debugger entered--Lisp error: (void-function sqlite-open)
>   sqlite-open("/home/data1/protected/.emacs.d/multisession/sqlite/multisession.sqlite")
>   multisession--ensure-db()
>   #f(compiled-function (type object) #<bytecode -0x15e791ee860f7dc6>)(sqlite #s(multisession :key "emoji--recent" :initial-value ("😀" "😖") :package "emoji" :storage sqlite :synchronized nil :cached-value unbound :cached-sequence 0))
>   apply(#f(compiled-function (type object) #<bytecode -0x15e791ee860f7dc6>) sqlite #s(multisession :key "emoji--recent" :initial-value ("😀" "😖") :package "emoji" :storage sqlite :synchronized nil :cached-value unbound :cached-sequence 0))
>   multisession-backend-value(sqlite #s(multisession :key "emoji--recent" :initial-value ("😀" "😖") :package "emoji" :storage sqlite :synchronized nil :cached-value unbound :cached-sequence 0))
>   multisession-value(#s(multisession :key "emoji--recent" :initial-value ("😀" "😖") :package "emoji" :storage sqlite :synchronized nil :cached-value unbound :cached-sequence 0))
>   emoji--add-recent("📱")
>   emoji-search("📱" nil)
>   funcall-interactively(emoji-search "📱" nil)
>   command-execute(emoji-search)
> 
> I have no idea where .emacs.d/multisession/ directory comes from. 

Did you customize multisession-storage to the value 'sqlite?  The
default is 'files.  You cannot customize it to use 'sqlite if your
Emacs doesn't have sqlite support (as it seems to be the case).

In addition, you seem to be using a very old build of Emacs 30, so
please update from Git and rebuild, to avoid having bugs that were
long ago fixed.