Изменения

Funq

105 байтов добавлено, 21:21, 20 сентября 2009
Статус реализации
На данный момент из запланированных идей реализованы ([{{SVN|vitaphoto/head/lib-sway/Funq}} обзор исходных кодов]):
* Собственно работающий компилятор запросов ;) начал с MySQL. Компилятор с полной поддержкой синтаксиса SELECT, с корректной оптимизацией / добавлением подзапросов, разрешением спорных ситуаций по семантике, поддержкой хинтов типа CALC_FOUND_ROWS, SQL_CACHE и т. п., заменой имён таблиц и прочими;.* Связывание именованных параметров (?name) со скалярами, с массивами или массивами массивов значений, с выражениями или подзапросами;.* Корректное кэширование всех артефактов трансляции, чтобы не мучаться этим постоянно;.* «Аппликация» имён таблиц к выражениям (замена `_` на имя нужной таблицы при подстановке выражения вместо `table`.?expression;.* Автоматическое контекстное именование параметров, если имя не указано;.* Возможность разделения каждой строки на несколько хешей, чтобы выбирать отдельные строки одновременно из нескольких таблиц;.
* Удобные функции получения результатов запросов (в основном аналогично DBI): успешность выполнения / массив хешей / массив разделённых хешей / массив массивов / хеш хешей / одна строка / одно значение. Или ручками — тоже можно.
* Разделение функционала на «ядро» и «драйверы»;.* Выбран способ передачи Передача доп. информации типа SELECT FOUND_ROWS(); — в случае MySQL это функции соединения last_insert_id(), thread_id(), found_rows(), affected_rows().
* Поддержка запросов вставки/обновления/удаления.
* Возможность программного последовательного выполнения подзапросов — сначала внутреннего, а потом внешнего, с программной передачей результата первого во второй. В MySQL бывают ситуации, когда это ускоряет выполнение запроса ''в разы''.