Subject: bug#54591: 29.0.50; sqlite-select returns blob result as multibyte string

From: Yuan Fu <[email-masked]>
Date: Sat, 26 Mar 2022 22:49:21 -0700

I’m trying make use of sqlite functionalities added recently and found
that the query result of blob type entries are multibyte string rather
than unibyte. That caused issues when I tried to create image out of the
query result: the image appears to be broken, even though the data is
good. Adding string-as-unibyte solves the issue, but I guess the
return value of a blob entry is probably best to be unibyte by default?

Yuan

In GNU Emacs 29.0.50 (build 7, x86_64-apple-darwin21.3.0, NS appkit-2113.30 Version 12.2.1 (Build 21D62))
of 2022-03-12 built on Brown
Repository revision: 22dde4e621fb49b9f05d560aee22332ad60bf485
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2113
System Description:  macOS 12.3

Configured using:
'configure --with-pdumper=yes --with-ns'

Configured features:
ACL DBUS GLIB GNUTLS JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER
PNG RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS WEBP XIM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  hexl-follow-ascii: t
  override-global-mode: t
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  global-git-commit-mode: t
  shell-dirtrack-mode: t
  keyfreq-mode: t
  form-feed-mode: t
  diff-hl-mode: t
  after-save-mode: t
  undo-hl-mode: t
  consult-binded-mode: t
  pixel-scroll-precision-mode: t
  global-so-long-mode: t
  color-outline-mode: t
  selectrum-prescient-mode: t
  minibuffer-electric-default-mode: t
  which-function-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  flymake-mode: t
  flyspell-mode: t
  ws-butler-mode: t
  savehist-mode: t
  windmove-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  global-highlight-parentheses-mode: t
  highlight-parentheses-mode: t
  rainbow-delimiters-mode: t
  electric-pair-mode: t
  winner-mode: t
  aggressive-indent-mode: t
  recentf-mode: t
  which-key-mode: t
  company-mode: t
  outline-minor-mode: t
  selectrum-mode: t
  luna-key-override-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-quote-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

Load-path shadows:
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-compat hides /Users/yuan/.emacs.d/ranch/matlab/matlab-compat
/Users/yuan/.emacs.d/ranch/matlab-emacs/company-matlab-shell hides /Users/yuan/.emacs.d/ranch/matlab/company-matlab-shell
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-cgen hides /Users/yuan/.emacs.d/ranch/matlab/matlab-cgen
/Users/yuan/.emacs.d/ranch/matlab-emacs/semanticdb-matlab hides /Users/yuan/.emacs.d/ranch/matlab/semanticdb-matlab
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-shell-gud hides /Users/yuan/.emacs.d/ranch/matlab/matlab-shell-gud
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-topic hides /Users/yuan/.emacs.d/ranch/matlab/matlab-topic
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-maint hides /Users/yuan/.emacs.d/ranch/matlab/matlab-maint
/Users/yuan/.emacs.d/ranch/matlab-emacs/srecode-matlab hides /Users/yuan/.emacs.d/ranch/matlab/srecode-matlab
/Users/yuan/.emacs.d/ranch/matlab-emacs/linemark hides /Users/yuan/.emacs.d/ranch/matlab/linemark
/Users/yuan/.emacs.d/ranch/matlab-emacs/mlint hides /Users/yuan/.emacs.d/ranch/matlab/mlint
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-shell hides /Users/yuan/.emacs.d/ranch/matlab/matlab-shell
/Users/yuan/.emacs.d/ranch/matlab-emacs/semantic-matlab hides /Users/yuan/.emacs.d/ranch/matlab/semantic-matlab
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-publish hides /Users/yuan/.emacs.d/ranch/matlab/matlab-publish
/Users/yuan/.emacs.d/ranch/matlab-emacs/tlc hides /Users/yuan/.emacs.d/ranch/matlab/tlc
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab hides /Users/yuan/.emacs.d/ranch/matlab/matlab
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-complete hides /Users/yuan/.emacs.d/ranch/matlab/matlab-complete
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-netshell hides /Users/yuan/.emacs.d/ranch/matlab/matlab-netshell
/Users/yuan/.emacs.d/ranch/matlab-emacs/cedet-matlab hides /Users/yuan/.emacs.d/ranch/matlab/cedet-matlab
/Users/yuan/.emacs.d/ranch/matlab-emacs/matlab-mode-pkg hides /Users/yuan/.emacs.d/ranch/matlab/matlab-mode-pkg
/Users/yuan/.emacs.d/ranch/iscroll/iscroll hides /Users/yuan/.emacs.d/elpa/iscroll-20210128.1938/iscroll
/Users/yuan/.emacs.d/elpa/transient-20211105.100/transient hides /Users/yuan/emacs-head/nextstep/Emacs.app/Contents/Resources/lisp/transient

Features:
(shadow mail-extr emacsbug sendmail hexl ediff ediff-merg ediff-mult
ediff-wind ediff-diff ediff-help ediff-init ediff-util tunes sql
vundo-test thai-util thai-word deft vuiet mpv bind-key versuri lastfm
elquery memoize esqlite esxml-query anaphora request pcsv org-timer
org-clock cal-move valign org-tempo tempo whitespace olivetti
org-element avl-tree generator ol-eww eww xdg url-queue mm-url ol-rmail
ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum shr pixel-fill url-file url-dired
gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus
nnheader range ol-docview doc-view ol-bibtex ol-bbdb ol-w3m ol-doi
org-link-doi emms-player-vlc emms-player-mpv emms-player-mplayer
emms-setup emms-librefm-stream emms-playlist-limit emms-i18n
emms-history emms-score emms-stream-info emms-metaplaylist-mode
emms-bookmarks emms-cue emms-mode-line-icon emms-browser
emms-player-xine emms-player-mpd emms-lyrics emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-info-native
emms-info-exiftool emms-info-tinytag emms-info-metaflac
emms-info-opusinfo emms-info-ogginfo emms-info-mp3info tq emms-mode-line
emms-url emms-librefm-scrobbler bindat sort emms-playlist-sort
emms-last-played emms-volume emms-volume-sndioctl emms-volume-mixerctl
emms-volume-pulse emms-volume-amixer emms-playlist-mode
emms-source-playlist emms-source-file locate emms-cache
emms-playing-time emms-player-simple emms-info emms-later-do emms
emms-compat tar-mode arc-mode archive-mode finder skeleton autoinsert
ftable cl-print consult-imenu vundo markdown-mode tramp-archive
tramp-gvfs dbus tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat parse-time ls-lisp cc-mode-expansions cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
goggles pulse mm-archive gnutls network-stream url-http url-gw nsm
url-cache url-auth bklink xapian-lite flique xeft bug-reference iimg
quanjiao magit-extras magit-imenu git-rebase magit-patch-changelog
magit-patch magit-bookmark magit-submodule magit-obsolete magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log magit-diff smerge-mode diff git-commit log-edit
message yank-media rmc puny rfc822 mml mml-sec epa epg rfc6068
epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils
gmm-utils mailheader magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor shell magit-mode transient
edmacro magit-git magit-section magit-utils stimmung-themes-light-theme
dired-aux autorevert dired+ misearch multi-isearch view tildify table
rst rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt
rng-util rng-pttrn nxml-ns nxml-util nxml-enc xmltok refer
refer-to-bibtex refbib printing picture nroff-mode enriched disp-table
facemenu ebnf2ps ps-print ps-print-loaddefs ps-def lpr delim-col rect
bib-mode cus-theme eieio-custom xwidget image-mode dired dired-loaddefs
exif wid-browse autoload checkdoc lisp-mnt char-fold server descr-text
cus-start face-remap add-log keyfreq form-feed diff-hl log-view
pcvs-util vc-dir hideshow after-save undo-hl company-dabbrev-code
company-dabbrev company-files company-capf vc-mtn vc-hg vc-git diff-mode
vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher cus-edit
pale-theme pixel-scroll so-long cus-load kinsoku jka-compr
cyberpunk-theme light-theme theme-util exec-path-from-shell svg dom xml
ghelp ghelp-eglot ghelp-helpful ghelp-builtin derived color-outline
pause utility transform no-littering selectrum-prescient prescient
consult-selectrum selectrum minibuf-eldef crm consult kmacro bookmark
which-func yasnippet eglot array filenotify jsonrpc ert pp ewoc debug
xref flymake-proc flymake warnings compile text-property-search project
flycheck flyspell ispell expand-region text-mode-expansions
the-org-mode-expansions er-basic-expansions thingatpt expand-region-core
expand-region-custom ws-butler minions savehist buffer-move windmove
hl-todo highlight-parentheses rainbow-delimiters elec-pair winner
aggressive-indent swiper cl-extra ivy delsel ivy-faces ivy-overlay colir
color recentf-ext recentf tree-widget wid-edit which-key company helpful
imenu trace edebug backtrace info-look f elisp-refs s dash org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete pcomplete comint ansi-color org-list org-faces
org-entities noutline outline org-version ob-emacs-lisp ob-core ob-eval
org-table oc-basic bibtex iso8601 time-date ol org-keys oc org-compat
advice org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs finder-inf tex-site geiser-impl help-fns radix-tree
help-mode geiser-custom geiser-base ring proof-site proof-autoloads rx
info lunary luna-key easy-mmode luna-load-package pcase cowboy luna-f
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json map url-vars seq gv subr-x byte-opt bytecomp
byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget keymap hashtable-print-readable backquote threads
dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 1458806 1449475)
(symbols 48 50357 132)
(strings 32 263811 152581)
(string-bytes 1 8256315)
(vectors 16 98731)
(vector-slots 8 2508183 1231269)
(floats 8 937 5080)
(intervals 56 105594 39459)
(buffers 992 134))