unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
@ 2024-12-20 16:47 José Júnior
  2024-12-20 17:01 ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: José Júnior @ 2024-12-20 16:47 UTC (permalink / raw)
  To: 74996

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






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 16:47 bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer José Júnior
@ 2024-12-20 17:01 ` Eli Zaretskii
  2024-12-20 19:03   ` José Júnior
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-12-20 17:01 UTC (permalink / raw)
  To: José Júnior; +Cc: 74996

> Date: Fri, 20 Dec 2024 13:47:08 -0300
> From: José Júnior <jjnilton@gmail.com>
> 
> 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.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 17:01 ` Eli Zaretskii
@ 2024-12-20 19:03   ` José Júnior
  2024-12-20 19:32     ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: José Júnior @ 2024-12-20 19:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 74996

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 <jjnilton@gmail.com>
>>
>> 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.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 19:03   ` José Júnior
@ 2024-12-20 19:32     ` Eli Zaretskii
  2024-12-20 20:08       ` Stephen Berman via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-12-20 20:13       ` José Júnior
  0 siblings, 2 replies; 8+ messages in thread
From: Eli Zaretskii @ 2024-12-20 19:32 UTC (permalink / raw)
  To: José Júnior; +Cc: 74996

> Date: Fri, 20 Dec 2024 16:03:59 -0300
> Cc: 74996@debbugs.gnu.org
> From: José Júnior <jjnilton@gmail.com>
> 
> 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.

Thanks.  If this needs the mysql package, then why do you think the
problem is in Emacs and not in mysql?  (Apologies if this makes no
sense: I know nothing about mysql and almost nothing about sql-mode.)





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 19:32     ` Eli Zaretskii
@ 2024-12-20 20:08       ` Stephen Berman via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-12-20 20:11         ` Eli Zaretskii
  2024-12-20 20:13       ` José Júnior
  1 sibling, 1 reply; 8+ messages in thread
From: Stephen Berman via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-20 20:08 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 74996, José Júnior

On Fri, 20 Dec 2024 21:32:53 +0200 Eli Zaretskii <eliz@gnu.org> wrote:

>> Date: Fri, 20 Dec 2024 16:03:59 -0300
>> Cc: 74996@debbugs.gnu.org
>> From: José Júnior <jjnilton@gmail.com>
>> 
>> 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.
>
> Thanks.  If this needs the mysql package, then why do you think the
> problem is in Emacs and not in mysql?  (Apologies if this makes no
> sense: I know nothing about mysql and almost nothing about sql-mode.)

I don't have MySQL or mariadb but I can reproduce the problem with
PostgreSQL in Emacs 29.4, but not in 30 or master, so it seems to have
been fixed since Emacs 30.

Steve Berman





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 20:08       ` Stephen Berman via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-12-20 20:11         ` Eli Zaretskii
  2024-12-20 20:34           ` José Júnior
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-12-20 20:11 UTC (permalink / raw)
  To: Stephen Berman; +Cc: 74996, jjnilton

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: José Júnior <jjnilton@gmail.com>,
>   74996@debbugs.gnu.org
> Date: Fri, 20 Dec 2024 21:08:36 +0100
> 
> I don't have MySQL or mariadb but I can reproduce the problem with
> PostgreSQL in Emacs 29.4, but not in 30 or master, so it seems to have
> been fixed since Emacs 30.

Thanks.  José, can you try Emacs 30?  The latest pretest is here:

  https://alpha.gnu.org/gnu/emacs/pretest/emacs-30.0.93.tar.xz





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 19:32     ` Eli Zaretskii
  2024-12-20 20:08       ` Stephen Berman via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-12-20 20:13       ` José Júnior
  1 sibling, 0 replies; 8+ messages in thread
From: José Júnior @ 2024-12-20 20:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 74996

I think because the issue is where the output is printed on the buffer, so it would be something after the mysql package gives the output to Emacs.

As I understand, the mysql package only gives the output of the SQL query to Emacs, then Emacs should be in control to where to print it. And since it's taking into account where the pointer is to print the output, it seems to be the case.

>> Date: Fri, 20 Dec 2024 16:03:59 -0300
>> Cc: 74996@debbugs.gnu.org
>> From: José Júnior <jjnilton@gmail.com>
>>
>> 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.
> Thanks.  If this needs the mysql package, then why do you think the
> problem is in Emacs and not in mysql?  (Apologies if this makes no
> sense: I know nothing about mysql and almost nothing about sql-mode.)





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer
  2024-12-20 20:11         ` Eli Zaretskii
@ 2024-12-20 20:34           ` José Júnior
  0 siblings, 0 replies; 8+ messages in thread
From: José Júnior @ 2024-12-20 20:34 UTC (permalink / raw)
  To: Eli Zaretskii, Stephen Berman; +Cc: 74996

Just tried on Emacs 30 (emacs-30.0.93) and could not reproduce the bug.

On 12/20/24 17:11, Eli Zaretskii wrote:
>> From: Stephen Berman <stephen.berman@gmx.net>
>> Cc: José Júnior <jjnilton@gmail.com>,
>>    74996@debbugs.gnu.org
>> Date: Fri, 20 Dec 2024 21:08:36 +0100
>>
>> I don't have MySQL or mariadb but I can reproduce the problem with
>> PostgreSQL in Emacs 29.4, but not in 30 or master, so it seems to have
>> been fixed since Emacs 30.
> Thanks.  José, can you try Emacs 30?  The latest pretest is here:
>
>    https://alpha.gnu.org/gnu/emacs/pretest/emacs-30.0.93.tar.xz





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-12-20 20:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-20 16:47 bug#74996: 28.2; sql interactive mode prints output of executed query where the pointer is instead of the bottom of the buffer José Júnior
2024-12-20 17:01 ` Eli Zaretskii
2024-12-20 19:03   ` José Júnior
2024-12-20 19:32     ` Eli Zaretskii
2024-12-20 20:08       ` Stephen Berman via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-20 20:11         ` Eli Zaretskii
2024-12-20 20:34           ` José Júnior
2024-12-20 20:13       ` José Júnior

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).