By Design
(ограничения специально задуманные, в первую очередь, с целью улучшения надежности и развиваемости кода)
- NULL скаляры не поддерживаются Udb
- "Хибернация" иерархий классов не поддерживается (за исключением Экспозиция иерархических структур объектов в реляционное хранилищезапрещенной к копированию в другие приложения)
- Наследование данных в CDb классы декларируют таблицыи его автоматические маппинги в SQL не поддерживаются (что ни как не ограничивает сложность задач, решаемых приложением, и упрощает реализацию и развитие прикладных хранилищ).
- Встраивание С++ операторовв форме лямбда-выражений или иначе в SQL запросы не предусматривается даже если отдельные бакенды или псевдо-реляционные переходники могли бы это поддерживать. (исключения могут быть возможны для частных хакных оптимизаций)
- Финальная версия Udb исключает все средства поддержки хранимых процедур. Оные видятся совершенно бесполезными при инкапсуляции доступа к БД средствами Udb из С++. Хранимые процедуры способные динамически создавать запрос из его частей принципиально не портабельны и в любой СУБД обеспечивают гораздо худший статический контроль корректности составленного запроса. Для быстродействия в современных СУБД тоже толку нет. А проблемы безопасности которые они могли бы решать гораздо лучше решаются Qx во фронтенде, драйверами как Bijou и "веб-сервисами" с контролируемым ограниченым SQL как используется Inwix для выборки задач.
Спорные ограничения
Недостаточная статическая верификация
- ВCx надо сделать контроль всех правил CDb классы декларируют таблицы
- Forbid iter as a member
- Некоторые Qxтипы как qxinteger/qxfloating могли бы конвертироваться друг в друга. И явные конверсии их всех к str (при построении запросов из Qx кусков).
- Invalid block if { }, rogue this->, indents, fn args right of name, same meth name same parameters, prefixes
Недостаточная динамическая стабильность
- Логов rASSERT не достаточно при формировании некорректных rQuery, нужно полностью стабильно отменять хоть немного некорректный запрос
Интерфейсы
- Бессмысленные bool могут возвращатся из Udb функций сбои которых не может отработвать приложение
- prevent app from setting dbobject UdbConnection
Требующиеся доделки функциональности
- Реализовать поддержку Один CDb класс в нескольких dbref и dblist одного контейнера
- aggregate SELECT callback
- default order (nanotime)
- functions: ABS, LENGTH
- rASSERT(!rIterStatement->x_bBusyQuering
- duplicate check
- update while select
- rename column copy old data (rand-keyAlias?)
- meta(mapOldNames << "")
- sloc, srtf as props
Быстродействие
- actual COUNT
- INDEXes
- locally declared fromName can go into SQL statically
- NOT NULL, UNIQUE on columns?
Портабельность
Компиляция
- Номера строк сгенерированного Qx кода уходят вниз, нужен #line на каждую сгенеренную строку или все в одну строку.
Эта категория в данный момент пуста.