to post messages and comments.

← All posts tagged programming

В процессе перевода проекта с MySQL на PostgreSQL возникла резонная проблема миграции существующей базы. Попробовал несколько софтин, остановился на этой — github.com Правда обнаружились проблемы при миграции в режиме "quote identifiers" (т.е. когда сохраняется регистр названий таблиц/колонок/прочего). Запатчил, сделал пул-реквест. Если что — github.com — тут есть версия с фиксом. Увы, не смог убить один баг, а именно кривую конвертацию enum'ов в этом самом "quote identifiers". Возможно что-то посоветует разработчик.

Забавное: первоначально софтина была на Tcl (1.х), потом переписали на Python (2.x) и теперь на Common Lisp (3.x). Как это прокомментировал сам разработчик: "The pgloader version 1.x from a long time ago had been developped in TCL. When faced with maintaining that code, the new emerging development team (hi!) picked python instead because that made sense at the time. So pgloader version 2.x were in python.

The current version of pgloader is the 3.x series, which is written in Common Lisp for better development flexibility, run time performances, real threading."

лисперы, может я чего-то не знаю, что такие функции пишу?
(defun list->hash-table (key-fn list)
(let ((hash (make-hash-table)))
(loop
for val in list
for key = (funcall key-fn val)
do (setf (gethash key hash) val))
hash))
или все норм и в стандарте/александрии такого нет?

жуец, а есть тут эксперты по liquibase? Как этой штукенцией порезать таблицу на несколько более мелких?

Ситуация следующая: есть здоровая (4кк записей) табличка с данными. Хочется ее порезать по некоторому полю (например Date). Нет, я хочу не partitions, а именно сделать несколько таблиц с суффиксом. Понятно, что можно посмотреть таблицу, и вручную нахерачить SQL'ки для всех диапазонов. Но этот вариант плох тем, что если применять этот ченжсет позже его написания, данных в таблице будет на больше "сегментов", чем предусмотрено.

Вопрос в следующем: есть ли готовые средства (гугл молчит, собака) под liquibase для осуществления подобной операции или костылить свой custom-скриптик?

Рек, как обычно, приветствуется :)

вот что бесит в CL: нет стандартных реализаций многих обыденных вещей, например DateTime. К чему это приводит? Есть 100500 несовместимых между собой сторонних реализаций. И все бы ничего, пока одна твоя зависимость не использует один костыль, а другая — другой.

Грустно все это(

лисперы, а если ли способ получить бэктрейс прилетевшего condition'а? Например в виде строки (лучше, конечно, списка). Лучше переносимо, но сгодится и sbcl-way. Чтот пока не нахожу. trivial-backtrace дает бэктрейсы точки вызова (print-backtrace err), а не точки выброса этого самого err.

Господа, скажите, а почему в MySQL примак (точнее хотя бы 1 его колонка) обязательно должен быть упомянут в выражении разбивки? Т.е. допустим у меня есть таблица из 2х колонок: ID (INT), Date (TIMESTAMP). Если ID сделать примаком, то я не могу сделать разбивку таблицы только по Date. Я чего-то не понимаю в СУБД-строении или разрабы таки наркоманы?

Ветка MySQL — 5.1.

Ээээ... А разве так бывает?
.class nested public auto ansi abstract beforefieldinit CliOption
extends [mscorlib]System.Object
{
.custom instance string class Nemerle.Internal.VariantAttribute::get_VariantOptions() = (
01 00 81 78 4E 65 6D 65 72 6C 65 2E 55 74 69 6C // ...xNemerle.Util
69 74 79 2E 47 65 74 6F 70 74 2E 43 6C 69 4F 70 // ity.Getopt.CliOp

Я думал что в инстансе аттрибута может быть только вызов конструктора. Я не прав?

Пытаюсь вот сформулировать свое мнение касательно "Git vs Mercurial" и понял что немного не хватает информации. Жуйк, есть ли какие-то ситуации, которые в hg делаются значительно проще чем в git? Простоту будем мерять в степени необходимости выполнения "неочевидных" комманд в git-решении.

Это не вброс, не флудите, плз. Если есть желание устроить СО на тему Git-vs-Mercurial — создам отдельный потс