Subject: Re: bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer

From: José Júnior <[email-masked]>
Date: Fri, 20 Dec 2024 16:03:59 -0300

Alright, I'll try.

1. Install mysql or mariadb, on Debian I installed the package `mysql-common`

`sudo apt install mysql-common`

2. Start the mysql/mariadb server:

`sudo service mysql start`

3. Log in into the server and create a unprivileged user in the interactive mysql shell:

`sudo mysql -u root`

`CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';`

4. On Emacs, create a new buffer like `*sql*`, then enable sql-mode `M-x sql-mode`;

5. Connect to the server using `sql-mysql` by providing the values for what's prompted:

- user: user

- password: password

- database: (leave it empty)

- host: localhost

A sql-interactive-mode buffer should be opened if the connection is successful.

6. In ther *sql* buffer enter the following query:

`show databases;`

And press `C-c C-c` (sql-send-paragraph) on the line of this query to send it to the server;

An output of this query should be printed on the interactive buffer.

7. Now switch to the interactive buffer, move the pointer to a line where the output of the previous action was printed.

8. Switch to the *sql* buffer and press `C-C C-c` to send the command again.

Now you should see that the second execution is mixed with the previous one.

----

Here's the information about my system and Emacs build:

```

In GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.16.0)
  of 2024-06-25, modified by Debian built on x86-conova-01
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
  'configure --build x86_64-linux-gnu --prefix=/usr
  --sharedstatedir=/var/lib --libexecdir=/usr/libexec
  --localstatedir=/var/lib --infodir=/usr/share/info
  --mandir=/usr/share/man --with-libsystemd --with-pop=yes
  --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp
  --with-sound=alsa --without-gconf --with-mailutils
  --with-native-compilation --build x86_64-linux-gnu --prefix=/usr
  --sharedstatedir=/var/lib --libexecdir=/usr/libexec
  --localstatedir=/var/lib --infodir=/usr/share/info
  --mandir=/usr/share/man --with-libsystemd --with-pop=yes
  --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp
  --with-sound=alsa --without-gconf --with-mailutils
  --with-native-compilation --with-cairo --with-x=yes
  --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
  -ffile-prefix-map=/build/reproducible-path/emacs-28.2+1=. -fstack-protector-strong
  -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
  -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB

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

Major mode: Lisp Interaction

Minor modes in effect:
   tooltip-mode: t
   global-eldoc-mode: t
   eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   tool-bar-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   line-number-mode: t
   indent-tabs-mode: t
   transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util rmail
rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json map text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
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 hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 67701 7304)
  (symbols 48 6640 0)
  (strings 32 19402 1678)
  (string-bytes 1 657582)
  (vectors 16 13801)
  (vector-slots 8 295271 11392)
  (floats 8 23 31)
  (intervals 56 280 0)
  (buffers 992 11))

```

On 12/20/24 14:01, Eli Zaretskii wrote:
>> Date: Fri, 20 Dec 2024 13:47:08 -0300
>> From: José Júnior <[email-masked]>
>>
>> Hi, after updating to Emacs 28 I noticed that when I execute a command in a sql-mode buffer connected to a sql-interactive-mode buffer, it prints the output where the pointer is at in the SQLi buffer, and if the pointer is not at the end, it messes up what was already printed, so I have to keep track where the pointer is before executing a query. I don´t remember seeing this behavior in Emacs 27, and it looks like a bug to me. I don't see how printing the output of a query in the middle of another output could be useful.
>>
>> To reproduce:
>>
>> 1. Open sql-mode buffer conntected to a SQLi buffer
>>
>> 2. Run a sql query
>>
>> 3. Move the pointer to a line that has the previous output printed
>>
>> 4. Run another sql query
> Thanks, but could you please provide a more detailed reproduction
> recipe, without assuming that we know about sql-mode and SQLi as much
> as you do?  Preferably starting from "emacs -Q", please.
>
> Also, please show the information collected about your system and
> build of Emacs by "M-x report-emacs-bug".  Some of the info there
> might be relevant to your report.