Я часто сталкивался с раздражением в режиме Emacs sql-mysql
, и мне интересно, есть ли у кого-нибудь решение или лучшее обходное решение. Каждый раз, когда я пытаюсь отправить запрос из буфера sql-mode
в активный буфер процесса SQL, этот запрос не может превышать 4k. Если оно больше 4k, кажется, что какой-то разрыв - возможно, новая строка - вставлен, и это заставляет интерпретатор mysql вызывать ошибку в следующей строке.
sql-mysql
реализуется sql.el
и использует функцию sql-send-region
для отправки областей запроса (или целых буферов) в выбранный буфер процесса SQL. sql-send-region
вызывает comint-send-region
, который, в свою очередь, вызывает process-send-region
. process-send-region
- это функция C, которая вызывает send_process
, как в src/process.c
в источнике Emacs.
Похоже, это может быть просто ограничение, созданное буфером 4k на трубе IPC. Поскольку кажется, что для изменения этого размера необходим хакер ядра, это не отличный ответ.
Я думаю, что я озадачен тем, почему SQL, посланный через канал, не собирается должным образом повторно собранным клиентом mysql, если он больше 4k. Любые идеи?
Версия Emacs: GNU Emacs 23.3.1 (x86_64-pc-linux-gnu, GTK + Версия 2.24.10) от 2012-03-25 по allspice, измененная Debian
mysql -V: mysql Ver 14.14 Распространение 5.5.24 для debian-linux-gnu (x86_64) с использованием readline 6.2
Sql Mysql Опции: -A -C -n (NB Я пробовал как с, так и без -n (небуферизованный) и не исправил эту проблему)