Есть база, где имена полей и содержимое на русском. В консоли sqlite3 очень неудобно редактировать такие строки, поскольку backspace удаляет 1 байт за раз из многобайтных символов. Т.е. для удаления каждого кириллического символа нужно backspace дважды нажимать. При этом отображаемый символ удаляется сразу с первого раза. Просто при перемещении курсора происходит аналогичная проблема: приложение некорректно сдвигает многобайтные символы. В итоге строки становятся нечитаемыми. Посмотрел в Gentoo, такой проблемы нет. Возможно, sqlite3 как-то неправильно использует libreadline. Проблема в Сизифе давно, проявляется на любой версии sqlite3.
Проблему воспроизвел, посмотрю. А где можно посмотреть логи сборки/настройки/ что-то типа спека из gentoo?
(Ответ для nbr на комментарий #1) > Проблему воспроизвел, посмотрю. > А где можно посмотреть логи сборки/настройки/ что-то типа спека из gentoo? https://bugzilla.altlinux.org/52666 Там интересно: options+=( --disable-editline $(use_enable readline) ) У нас нет --disable-editline. Возможно, это оно мешается.
(Ответ для Andrew Savchenko на комментарий #2) > У нас нет --disable-editline. Возможно, это оно мешается. Попробовал, не помогает. По логу сборки видно, что и без этой опции editline отключен. Пробовал включить поддержку icu: --- a/sqlite3.spec +++ b/sqlite3.spec @@ -18,7 +18,7 @@ Patch3: 0003-FEDORA-ALT-datetest-2.2c.patch Patch5: 0005-ALT-run-func7-pg-181-test-only-on-x86_64.patch BuildRequires(Pre): tcl-devel -BuildRequires: libreadline-devel +BuildRequires: libreadline-devel libicu-devel # need for test BuildRequires: zlib-devel unzip @@ -116,6 +116,7 @@ export CFLAGS="%optflags \ -DSQLITE_ENABLE_FTS3_PARENTHESIS \ -DSQLITE_ENABLE_FTS4 \ -DSQLITE_ENABLE_FTS5 \ + -DSQLITE_ENABLE_ICU \ -DSQLITE_ENABLE_RTREE \ -DSQLITE_ENABLE_UNLOCK_NOTIFY \ -DSQLITE_SECURE_DELETE \ @@ -127,6 +128,7 @@ cc --version | grep -q '^lcc:1.21' || export CFLAGS+="-D__INTEL_COMPILER=1" autoreconf -i %tea_patch %configure \ + LIBS="$(pkg-config --libs icu-io)" \ %{subst_enable static} \ --disable-amalgamation \ --enable-fts3 \ Не помогло. Судя по коду, это использование icu в процессе работы самого движка (но детально я не изучал). Помогло использование rlwrap: $ rlwrap -a sqlite3 В других приложениях с поддержкой readline я проблем с русским не замечал. Возможно, sqlite3 как-то криво его использует/инициализирует.