to post messages and comments.

← All posts tagged SQL

Столкнулся с замечательной вещью. Есть файл UTF-8 without BOM, содержащий букву ó, SQL запрос. Слово "Dirección". Набирается в испанской раскладке как "[o" (без кавычек). Прикол в чем. Есть Oracle, в котором тоже кодировка UTF8 выставлена. NLS_CHARACTERSET, все по феншую.

— Пытаешься выполнить запрос в редакторе запросов. Потом о с ударением отображается как надо.
— Пытаешься выполнить запрос через sqlplus под виндой. Отображается хрень типа ó.
— Пытаешься выполнить запрос через sqlplus под линухом, на котором UTF-8 сконфигурирован — та же хрень.
— Изменяешь в INSERT-запросе 'ó' на 'o', а строчкой ниже делаешь UPDATE с replace на compose( 'ó' || unistr('\0301') ) — на отображение работает, но в рантайме не воспринимается как 50099 char.
— Изменяешь в INSERT-запросе 'ó' на compose( 'ó' || unistr('\0301') ) — всё ок.

Почему так — не разобрался до конца..

Познакомился вплотную с Sybase. Который SAP.
Узнал, что Sybase AnyWhere 16 ODBC драйвер не годится для ASE 15.
Узнал, что для получения драйвера ODBC под ASE 15 нужно пройти 6 кругов ада и даже пришлось позвонить в SAP support, чтобы стать вежливо посланным.
Узнал, что хромиум прибивает инсталлятор триальной версии СУБД, т.к. считает его (инсталлятор) ненадёжным вредоносным файлом.
Узнал, что JDBC + jTDS — это очень и очень медленно.

Через 8 часов боли получен был дистрибутив, содержащий нужный ODBC, и собственно сам драйвер. Теперь дело за малым: его заюзать. Если пойдёт — замер сделать. Насколько шустро балково выгрузится всё, что нужно. Ну и DBI::Sybase попробовать (Perl)? А как ещё у нативного jConnect + JDBC дела обстоят? Побыстрее, чем у бажной поделки jTDS?

Ну и самое главное: у Haskell есть что-нибудь для коннекта к Sybase, кроме hdbc-odbc?

Прикольно, для yesod есть целых два "пагинатора": тыц hackage.haskell.org и тыц hackage.haskell.org

Но это всё не то, когда речь заходит о рекурсивных запросах (CTE), которые тянут по JOIN по несколько сотен тысяч записей. Чувствую, быть ещё одному. Да, yesod-persistent и esqueleto мимо по той же причине. Запрос в итоге генерирую руками, поскольку планы запросов на первом месте: lpaste.net