2024-03-24 babolo Варнинги. 2024-03-24 babolo Варнинги. 2024-01-08 babolo Реорганизация make файлов. 2023-10-29 babolo Удаление варнингов. 2023-10-28 babolo Условное использование SQLITE_DETERMINISTIC. 2023-07-30 babolo Использование #file IN прекращено в пользу #cat. 2023-07-29 babolo Замена OUT #cat на #out в тестах. Замена OUT #file на #out в тестах. 2023-07-23 babolo Плополнен список каталогов с плагинами. 2023-07-22 babolo Отлажен и описан #out. Изменились прототипы pgoblin_ios.iprep и pgoblin_ios.oprep. В тестах в список каталогов для поиска плагинов добавлен pgoblin/. Пополнен и поправлен отладочный вывод. Колмментарии. Стиль. 2023-07-09 babolo Ликвидирована зависимость от getCGIparm. Убран вариант #getdir с именем файла в CTL. Комментарии. Стиль. 2023-06-18 babolo Переписан #getproc, тепрь не использует getCGIparm, источником служит sysctl(), к каждому процессу добавлена строка с exec()нутым именем. Исправлены описания #getproc и #getdir. В pgoblin_rio добавлено поле funout для файла из funopen(). В pgoblin_io_close() добавлено закрытие funout. В io убрана wr() и добавлена clo(). 2023-06-18 babolo Из всех регистров исключено поле exenv. Параметр pgoblin_fini() теперь exenv вместо options. В pgoblin_db0_create() добавлен параметр exenv. В ->init() и ->fini() всех плагинов замена параметра options на exenv. Большое удаление отладки в pgoblin5pgeo. Включены в дистрибутив pgoblin5pgeo тесты c и d. Стиль. Даты в копилефтах. 2023-06-11 babolo Инкапсуляция .h в __BEGIN_DECLS/__END_DECLS и защита от повторного включения. 2023-06-04 babolo Исправлены концы файлов. 2023-06-04 babolo Переход PGOBLIN_COMPAT на 5. 2023-06-03 babolo Изменение прототипа pgoblin_db_finish() и интерфейса DB. 2023-06-03 babolo Прототип pgoblin_db_denote(). 2023-06-03 babolo Массовая замена интерфейсов и прототипов. 2023-05-07 babolo Пополнен отладочный вывод. 2023-04-09 babolo Изменение интерфейсов ->resinfo, ->subinfo, ->erinfo, ->valinfo, ->getvalue. 2023-04-09 babolo В трассировку подается ссылка на регистр вместо номера. В регистры встроены номера и глубина. Абстракция регистра pgoblin_rall. Недоработка в db_pgsql:getstream(). В pgoblin_wait() замена идентификатора j на стандартноый rjb. 2023-04-02 babolo Убрана отладка. 2023-04-02 babolo Убран SQLITE_BUZYREPEAT. В prexec() неинициализировался res. 2023-03-12 babolo Исправлен выбор зависимости от мажора. 2023-03-08 babolo Перевод на версию 5. 2023-03-08 babolo Убраны -q из тестов. 2023-02-26 babolo Мелкие зачистки. 2023-02-18 babolo Изменение прототипа pgoblin_dbases->erconn() и pgoblin_dbases->denote(). Исправлен идентификатор параметра у pgoblin_db_clear(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->tarry(), pgoblin_dbases->notifies(), pgoblin_dbases->finish(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->getstream(), pgoblin_dbases->getcopy(), pgoblin_dbases->putcopy(), pgoblin_dbases->endstream(), pgoblin_dbases->prepare(), pgoblin_dbases->shurecon(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->query(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->execute() и pgoblin_dbases->prexec(). Даты в копилефтах. 2023-01-01 babolo Тесты с пустыми входными регистрами. 2022-12-18 babolo Версия 4.10 Еще ошибки regexp_replace() и тесты. Распространиение BLIN_flag. 2022-12-18 babolo Версия 4.09 Исправлен regexp_replace(). Тесты regexp_replace(), koilower(), koiupper(). 2022-12-17 babolo Версия 4.08 Исправлено поведение по GLOB в regexrepl(). 2022-12-03 babolo Стиль. 2022-11-19 babolo Версия 4.07 повторно Ошибка в weak_reference. 2022-11-13 babolo Версия 4.07 Добавлены функции regexp_replace(), koilower(), koiupper(). Исправлена регистрация функций. Исправлена функция regexp(). 2022-11-12 babolo Условие для SQLITE_OPEN_EXRESCODE. 2022-11-12 babolo Версия 4.06 Уточнены зависимости. Добавлен busy_handler() по умолчанию. 2022-10-22 babolo Версия 4.05 В флаги открытия добавлены OPEN_PRIVATECACHE и OPEN_EXRESCODE. При определении SQLITE_BUZYREPEAT попытки повтора. 2022-09-17 babolo Тесты на множественный #fork при нулевом CTL. 2022-08-28 babolo Исправлены *_COMPAT макросы. Даты в копилефтах. 2022-08-18 babolo Тест на #fork с CTL. 2022-08-17 babolo Версия 4.04 2022-08-16 babolo Версия 4.03 повторно Исправлена зависимость. 2022-08-16 babolo Версия 4.03 Проверка результата трансляции команды перед использованием. Тесты новых возможностей pgoblin. 2022-08-14 babolo Команда #eval использует IN Pq. Тесты на это. Подготовка к использованию rio->stymd и для транслированной программы. 2022-05-01 babolo Тест на пустой ответ при CTL Pq и IN Pq. 2022-02-09 cuhegh Версия 4.02 Критически важные зависимости. 2022-01-30 babolo Обход неспособности последних версий clang к --oformat=binary. 2022-01-29 babolo Дата копилефта. 2022-01-16 babolo Тест на #perform CTL под #begin #end. 2022-01-15 babolo Версия 4.01 Зависимости меняются по условиям трансляции. 2022-01-09 babolo Версия 4.00 Возможность ограниченного сосуществования разных мажоров. Осовременено REQUIRED. 2022-01-09 babolo Замена типов *_style на pgoblin_realsty. Изменение интерфейса pgoblin_db0_create(). Замена макроса IND() на INDX() с удалением предыдущего значения INDX(). Тип pgoblin_mode стал pgoblin_realpq. Зачистка переменных rsv в модулях БД. Зачистка переменных st в модулях стией. 2022-01-08 babolo Перестановка процедур в CONN интерфейсах согласно месту в структуре. 2022-01-08 babolo Изменение интерфейса CONN erinfo(). 2022-01-08 babolo Изменение интерфейса CONN subinfo() и valinfo(). Изменение интерфейса STY table(). Комментарии. Стиль. 2022-01-08 babolo Изменение интерфейса CONN resinfo(). 2022-01-08 babolo Изменение интерфейса CONN getvalue(). 2022-01-07 babolo Изменился интерфейс CONN finish() и из него выделен denote(). 2022-01-07 babolo В интерфейсе CONN ликвидирован finish(, PGOBLIN_FrCOPY, ). 2022-01-07 babolo Изменение интерфейсов CONN getstream() и clear(). Изменился интерфейс cleareg(). Определение blin_internal_flags через exenv->options. 2022-01-07 babolo Даты в копилефтах. 2022-01-07 babolo Изменение интерфейсов CONN prepare(), execute() и выделение из execute() prexec(). Улучшен отладочный вывод. Из интерфейса удален бит PGOBLIN_ALTERQ, используется внутри плагинов. Комментарий. 2022-01-06 babolo Изменение интерфейса CONN query(). 2022-01-02 babolo Переименование вида pgoblin_io в pgoblin_rio. 2022-01-02 babolo Переименование вида pgoblin_conn в pgoblin_rdb. 2022-01-02 babolo Все MARK_* теперь с номерами регистров. 2022-01-02 babolo Перевод интерфейса БД с указателей на номера регистров. 2021-12-26 babolo Изменился интерфейс init() и fini() плагинов. Пополнен отладочный вывод. 2021-11-27 babolo Изменение прототипа execute(). 2021-11-21 babolo Уровень отладки. Стиль. 2021-11-21 babolo Изменение работы #getopt. 2021-11-20 babolo Перенос определений в .h. 2021-10-31 babolo Исправление тестов. 2021-10-24 babolo Исправление *_COMPAT. 2021-10-23 babolo Исправление тестов. 2021-10-23 babolo Исправление тестов. Зависимость от babolo-libmake:4.16. 2021-10-23 babolo Исправление тестов. Возможность трансляции с локальными .h файлами. 2021-10-23 babolo Унификация тестов. 2021-10-17 babolo Тесты 3sqlite3 перенесены сюда. 2021-10-10 babolo Дата в копилефтах. 2021-10-09 babolo Версия 0.08 Стал длиннее и полнее resinfo(). Описания собраны в .h. Стиль. 2021-09-18 babolo Версия 0.07 повторно Дата в копилефте. 2021-09-18 babolo Версия 0.07 Разрешены пропуски при подстановвке параметров. 2021-09-18 babolo Улучшена диагностика. 2020-10-15 babolo Версия 0.06 Исправлен PGOBLIN_TypeNm. Добавлен PGOBLIN_TypeOid. Добавлено отладочного вывода. 2020-10-11 babolo Версия 0.05 Зависимость от pgoblin-3.12. 2020-06-15 babolo Использование pgoblin_onecopy() для COPY инкапсуляции. 2020-03-24 babolo Исключение из сборки неиспользуемой getCGIparm библиотеки. 2020-03-05 babolo Версия 0.04 Удален ошибочный макрос ERRMS1(). 2020-02-23 babolo Версия 0.03 Текст разбит на отдельные файлы. Стиль. 2020-02-23 babolo Было возможно нарушение границ массива. 2019-03-29 babolo Предыдущий комментарий ошибочен. Улучшена диагностика. Стиль. 2019-03-29 babolo Неудачное автоматическое граничение у mife_read(). Стиль. 2019-03-10 babolo Неправильно включался DEBUG. 2018-09-19 babolo В COPY out буфере можно без strlen(). 2018-09-19 babolo Версия 0.02 Убраны следы getCGIparm. 2018-09-19 babolo Убран getCGIparm. Стиль. 2018-09-17 babolo Проверка malloc(). Стиль. 2018-09-16 babolo Убран устаревший комментарий. 2018-09-15 babolo Прекращено разделение на clear() и clean(). 2018-09-13 babolo В clean() не зачищался serv. Замена return из начала процедуры на goto на конец. В pgoblin_mode добавлено поле для OID типов, пока не задействовано. # pgoblin_mode имя m заменено на md. Выброшена неиспользуемая после collect() инициализация res. В getstream() возможно повторное использование rsv. 2018-09-12 babolo Мелкие пометки к проверке. 2018-09-10 babolo Версия 0.01 Модуль отделен. 2018-08-29 babolo Модули будут транслироваться только после установки следующей версии pgoblin. 2018-08-29 babolo Синхронизация модулей. 2018-08-24 babolo Загрузка модулей есть, работать они не очень. Зачистка зависимостей. Исправление TODO. Трансляция устойчива к исключению pgsql. Неудачная загрузка трактовалась как удачная. 2018-08-22 babolo Синхронизация внешних модулей с внутренними. 2018-08-22 babolo Исправлена сборка модулей. 2018-08-21 babolo Начало выделения модулей из pgoblin. 2018-08-13 babolo Выравнивание структур. Стиль. 2018-07-23 babolo Ошибка в pgoblin_getdir(). Сообщение об ошибке в pgoblin_getdir(). В db_0 добавлена возможность именования колонок. В db_0:execute() в результат теперь отправляется копия строки. Стиль, комментарии. 2018-07-18 babolo Перенумерация колонок наботает над sqlite3. Активированы тесты на перенумерацию. 2018-07-17 babolo В db_sqlite2 не было проверки результата malloc(). В db_sqlite3 добавлены имена полей, но проверку не проходит. 2018-07-17 babolo Оформление приватных и публичных процедур. 2018-07-10 babolo Частичное приведение db_sqlite3 к db_sqlite2. 2018-07-07 babolo Сохранение pgoblin_mode между проходами. Зачиска хвостов от сохранения pgoblin_mode. Теперь db_sqlite2:get() создает serv (но е работает правильно с ex, потому collect() не работает и имена колонок не соханяются. Добавлены проверки входных указателей. Включена проверка перенумерации в db_sqlite2 #strsel, пока fail. Стиль. 2018-06-30 babolo Замена subinfo(PGOBLIN_ResMess, ...) на erinfo(...). В непотоковых select в db_sqlite2 работает перенумерация по именам. Исправлен конечный автомат в style_pgo0 и обозначения в нём. Тесты на перестановку в db_pgsql, тесты и заготовки тестов на перестановку в db_sqlite2 и db_sqlite3. 2018-06-28 babolo В db_sqlite* замена n на ncol. В db_sqlite* замены u_char на char. В db_sqlite* resv() второй параметр не нужен и там напрасно расходовалась память. Любопытный способ гасить варнинги по const**. Стиль. 2018-06-28 babolo В db_sqlite* query() замена переменной n на ncol и idx. # db_sqlite* query() переменные p и q стали char вместо u_char. Комментарии. Стиль. 2018-06-27 babolo Уточнены места для имен колонок. 2018-06-24 babolo Выравнивание db_sqlite2 и db_sqlite3. Замена if(!ex){} на ERROUT() в предыдущем блоке в db_sqlite2. Стиль. 2018-06-24 babolo Осовременен TODO. Отметки в процедурах для имен колонок. Стиль. 2018-06-12 babolo Замена static const char copyright[] и static const char rcsid[] на #ident. 2018-06-11 babolo В db_0 вместо приводимой на всё p_no() сделаны отдельные процедуры. Используемая затычкой к notifies процедура db_0:p_none() переименована в notifies(). Типы pgoblin_dbases, pgoblin_jobs и pgoblin_styles расширены на 2 ссылки на будущее. В тип pgoblin_styles добавлены процедуры load и store, пока не реализованные. Разрешен описатель S в style_pgo0, пока не реализован. В парсере style_pgo0 действие Cl слито с Cb из-за полного совпадения условий выполнения. В парсере style_pgo0 устранен один вариант core dump. В regress помещен вариант распознавания описателей. Комментарии, стиль. 2018-06-08 babolo Предупреждение об отсутствии PGOBLIN_COMPAT. Переменный размер в pgoblin_prog теперь 0. 2018-06-05 babolo Стиль. Комментарии. 2018-06-03 babolo Удален pgob.h, его содержимое в pgoblin.h под PGOBLIN_INTERNAL. Комментарии. 2018-05-20 babolo В Makefile добавлена цель test. Введены в работу макросы MARK_*_GO (и добавлены MARK_IO_*_NGO и MARK_*_NWENT()). Разрежены ;; в for(), что бы не путались с MARK_*. Введен файл трейса по опции -X. В tools/regres, tools/regres4, tools/regres8 добавлен exit 1 при ненулевом количестве ошибок. Стиль. 2018-05-11 babolo Расширен дешифратор кодов ошибок. 2018-02-24 babolo Версия 2.56 Зависимость babolo-parser:4.00 изза ошибки в babolo-parser:3. Добавлены коды ошибок sqlite3. Отслеживание временности литералов в программе. 2017-07-05 babolo Поправлено README. Изменены интерфейсные имена процедур в модуле job. В db_pgsql, db_sqlite2 и db_sqlite3 убраны комментарии к интерфейсным именам процедур. Во всех модулях fini() стал без параметра. В db_sqlite2 и db_sqlite3 отсутствие tarry() и notifies() нтерфейсных процедур опеделяется в db.c диспетчере. Сокращение локальных имен в модулях job_local, style_0 и style_pgo0. 2017-07-02 babolo Убраны const из параметров qry в *query() и *prepare() dbms модулей. В диспетчере db введена проверка параметров rsv. В db_sqlite2.c вынесены в отдельные процедуры finalize() и compile() обращения к sqlite_finalize() и sqlite_compile() со всеми проверками и диагностикой. Оформление ошибок sqlite_bind() и sqlite_reset(). В макросе ERROUT() был неправильный порядок присвоения. Оформление программы. 2017-06-25 babolo Выверены ошибки и сообщения. В db_sqlite3 из типа pgoblin_mode удалено поле a. 2017-06-24 babolo В subinfo() BLIN_flag берется из 2го параметра вместо 3го. Если не нужен pq результат, то у execute() в качестве параметра res ставится NULL. Продолжена замена u_int32_t на BLIN_flag где соответствует. 2017-06-24 babolo Проведена инициализация flags у всех модулей базы. У всех баз можно execute() давать параметр rsv==NULL. В db_pgsql pgoblin_mode содержал лишнее поле db, удалено. Офрмление. 2017-06-21 babolo Обращения к query() и prepare() из pgoblin_dbases сделаны через db.c диспетчер. Интерфейс shurecon() из pgoblin_dbases возвращен взад. Переименование нескольких параметров pgoblin_mode* из res в rsv. В db_pgsql флаг PGOBLIN_DB_PREPARE мог быть установлен незаконно. 2017-06-20 babolo Форматирование. 2017-06-19 babolo Замена finish(..., PGOBLIN_CleaRes, ...) и finish(..., PGOBLIN_PFormed, ...) на clear(...). Вместо void* введен тип pgoblin_mode*, который есть void* в общем контексте и обозначает конкретный вид результата в модулях базы. Управляет контекстом макрос PGOBLIN_MODULE. Раньше эту роль пытался выполнять pgoblin_moded. Флаги PGOBLIN_STREAM* в db_sqlite2.c и db_sqlite3.c сдвинуты, что бы освободить место для становяимися стандартом флагов BLIN_MASK и PGOBLIN_DB_TYPE. В pgoblin_db_data типе в db_sqlite2.c и db_sqlite3.c убрано имя поля cell и в union добавлен sqlite_vm и sqlite3_stmt соответственно. Для обозначения наличия vm добавлен флаг PGOBLIN_VM. В db_sqlite2.c и db_sqlite3.c новая процедура resv() для создания объектов типа pgoblin_mode. Замена нескольких malloc();bzero() на calloc(). Пополнена отладочная выдача в style_0.c. 2017-06-15 babolo Замена в conn void* на pgoblin_moded, где оно указывало на типозависимый Pq. Во всех типозависимых структурах flags поставлен в начало. Биты в этих флагах переставлены, что бы освободить младшие 16 битов. Ликвидирован тип pgoblin_r. Форматирование. 2017-06-14 babolo Форматирование и переименование. 2017-06-12 babolo Изменение интерфейса (*shurecon)(). Ликвидированы макросы CC и RC, возврат к R_CONN и DBASE(). Ликвидирован неиспользющийся макрос OFFSETOF(). Описание struct pgoblin_jobs перемещено в pgoblin_job.h. Исправлены типы в printf() в pgoblin_VVdump(). 2017-06-12 babolo Во всех файлах, кроме style_0.c, выставлены возможно правильные параметры у макросов MARK_*. У команды #binselect помечено неявное использование Ij. Интерфейс coercion() поменялся - замена pgoblin_io* на pgoblin_nr. Интерфейс waitjob() поменялся - замена pgoblin_jobreg* на pgoblin_main и pgoblin_nr. Добавлены dump_ioreg(options, 0) где 0й регистр используется неявно. Замена в pgoblin_execute() rn[] на макросы RNOUT, RNCTL, RNIN, RNCON, RNJOB, RNSTY, которые проверяют неявное использование регистров. Сообщение об ошибке, если fork() происходит для команды, не заказавшей Ij. Форматирование. 2017-06-10 babolo Начат файл func.c для вспомогательных функций. Туда перенесены pgoblin_breg(), pgoblin_cmdexe(). Из структуры pgoblin_syntax исключены поля clasnames и class, для использования за пределами определения новая процедура pgoblin_ctonr(), соответствующие clasnames и class перенесены в parser.c, исключен макрос _PGOBLIN_CHAR_CLASSES_. Перенос pgoblin_verify() в vdump.c. Новые битовые маски demask* в составе структуры pgoblin_main для отметки трейсинга регистров, и отметка. Изменение тип pgoblin_r со struct на union. Поправлены даты копилефтов. 2017-06-01 babolo Передача в shurecon() options и номера регистра. Частичная замена доступа через pgoblin_r на доступ по номеру регистра. 2017-06-01 babolo Все init() и fini() збавились от второго параметра. Специальный тип для номера регистра. 2017-05-27 babolo Исправлены неопределенные MARK_R_CONN_*. Часть функционала перенесена из -T в новый флаг -=. В том же флаге -= намечен будущий способ отладки. Пополнен и исправлен sqlkeywords в соответствии с PostgreSQL 9.6. 2016-06-15 babolo Версия 2.55 Расширен список ошибок SQLite3 соответственно версии SQLite 3.13. Использование sqlite3_close_v2() вместо sqlite3_close(). Проверка на NULL текст в coercion(). Не вызывался finish() для регистров базы. 2016-06-13 babolo Неправильно вводилась единственная колонка NULL в #copyin SQLite*. Тесты на ошибку выше. Комменты. 2014-09-07 babolo На некоторых путях были неинициализированные переменные. 2014-09-03 babolo Переход на babolo-parser:3.03. Пополнен TODO. Согласование типов. Исправлен текст к манам. Форматирование. 2014-09-03 babolo Переход на babolo-libmake:3.09, mife:4.05. Старые правки на тему getopt в pgoblin.c. Правка текстов. Немного форматирования. 2013-10-16 babolo Версия 2.52 Замечания перенесены из Makefile в TODO. Поправлены зависимости. Убраны дублирующие babolo-libmake команды из Makefile. Замена идентификаторов flag на flags. Переход на mife.4 без совместимости с mife.3. 2013-02-05 babolo Порядок инклудов в тексте согласован с семантическим порядком. 2011-12-10 babolo Версия 2.44 Изменения в babolo-libmake - добавлен -lbabolo-libmake для сборки. Поправлены копилефты. Добавлены и поправлены заметки и комментарии. 2010-04-12 babolo Версия 2.42 В regexp() обоих sqlite была ошибка в размере выделяемой под preg памяти. В getcopy() обоих sqlite была ошибка в вычислении размера буфера под очередную строку COPY. Флаг DEBUG ни на что не влиял, теперь он убран из трансляции и под него помещена замена mallocов на memcheck (и dmalloc под комментарием). В putcopy() sqlite2 BLIN_STATEBODY() теперь отслеживается p. Теперь пропажа conn->vm в обоих sqlite сопровождается сообщением на уровне 5. В finish() sqlite3 в варианте PGOBLIN_PFormed добавлена диагностика на уровне 5. Переименован pgoblin_styles.free в pgoblin_styles.clear для исключения интерференции с dmalloc. В группе тестов 13 всех баз для исключения гонок на результат переставлены действия под /bin/sh -c. В sqlite3 были недостоверные тексты сообщений об ощибках в shurecon(). Форматирование. 2010-01-19 babolo Версия 2.39 Новая команда #getcsv. В tools/regress тесты новой команды. Новый флаг PGOBLIN_COPEND_NOGEN и опция -b. Попытка уменьшить warningи в FreeBSD 8. В README описание ошибки в реализации DELETE ... RETURNING ... в PostgreSQL. Теперь diff из tools/regress не пропадает в /dev/null. 2009-11-04 babolo Команда #perform - первая, воспользовавшаяся давно сделанным механизмом выбора цели в приведении вида данных, принимает Pt или Pq в CTL, если Pq, то исполняет построчно (вместо всего сразу, когда в Pt). Приведение вида Pq в Pt теперь делается процедурой table интерфейса style_0 вместо собственной копии в coercion(). Так же используется table в #perform. В style_0 процедура table приспособлена для приведения вида Pq в Pt в IO. Для одного из использований в #perform добавлена возможность построчного приведения. Изменились интерфейсы pgoblin_jobs и pgoblin_styles - добавлены флаги. Изменился интерфейс pgoblin_dbases - флаги переставлены в самое начало типа. На варианты исполнения #perform добавлены тесты. Комментарии, форматирование, описания, сообщения об ошибках. 2009-11-04 babolo Версия 2.34 Добавлены запросы PGOBLIN_ResMess, PGOBLIN_CleaRes, PGOBLIN_FrMess. PGOBLIN_ResMess используется в #perform. В интерфейсе db изменился первый параметр у notifies() и tarry(), теперь там регистр R_CONN целиком. В интерфейсе db_pgsql изменился тип res с PGconn* на специальный тип pgoblin_res*, там кроме PGconn* ссылка на R_CONN, имя PREPAREd оператора и флаги. При ENOMEM возвращается EX_OSERR вместо EX_UNAVAILABLE. Проверка, что db не NULL в db_pgsql интерфейсе. Форматирование, комментарии, описание в README. 2009-10-27 babolo Добавлены README и TODO. Изменение интерфейса db: вместо многочисленных free* & clear работает finish() с переключателем. Все (cond, kind) переключатели интерфейса внесены в один enum pgoblin_cmdres. У getcopy() слегка поменялся интерфейс, теперь результат <0 всегда обозначает ошибку, в pgoblin_copyout теперь при ошибке выдается диагноз. Внутримодульные функции db_0 попереименованы покороче, что бы не перекрывались с внешними именами pgoblin_*. За счет приведения типа интерфейсных функций намного аккуратнее стали интерфейсные блоки db модулей. Аккуратнее сделано освобождение памяти в *->finish(). У db_0 появилась новая интерфейсная функция execute(), создает Pq с одной строкой из входных параметров, использована в coercion() для сокрытия внутренностей db_0. db_sqlite2 зацикливалась при execute #selectа с более, чем одной строкой параметров. В db_sqlite3 длинны параметров считаются по иному, чем в db_sqlite2. В db_sqlite2 и db_sqlite3 перенесен наверх finish() из-за использования функций из него выше. Тесты на исполнение с параметрами. Комментарии, форматирование, сообщения. 2009-10-26 babolo Изменение интерфейса db: exec() стал query(), добавлены prepare() и execute(), finish() стал с переключателем и флагами, туда вольются разные *free*() и подобное. Внутримодульные функции попереименованы покороче, что бы не перекрывались с внешними именами pgoblin_*. Теперь #perform и #select понимают Pq на IN, умеют и по отдельности готовить, а потом выполнять, или готовить при выполнении, в зависимости от наличия prepare() в интерфейсе. Отметки MARK_* теперь снабжены ;;, так же там, где по синтаксису не полагалось ;;, поставлены в комментариях. Сообщения, комментарии, форматирование. 2009-10-25 babolo Техническая, но очень массовая замена структурных комментариев, выделяющих операции изменения регистров, на макросы (пока пустые). В cmd_select текстовые константы для эмуляции #binselect вынесены в #define. В db_sqlite2 окончательно изничтожен вариант с использованием собственного оператора COPY. В pgoblin_keycodes() косметические изменения - номер регистра, на который извлекается список keywords, задан константой IOREGFOR вместо числа и отправляестя в команду методом из pgoblin.h вместо pgob.h. Комментарии, форматирование. 2009-10-24 babolo Версия 2.31 Изменился интерфейс db, вместо nfields(), ntuples(), getisnull(), getlength() и последующих всего 3 интерфейсных функции *info() с первым аргументом, выбирающим конкретную функцию. В db_pgsql запихнуто несколько функций через интерфейс с переключателем. Коредампил #job, если за именем job не следовали параметры. В pgoblin_syntax теперь включены массивы перекодировки символов для parser и строки с названиями классов символов (используется при отладке). В pgoblin_syntax теперь включены cmds.lexor и sqlkeywords.lexor. Теперь coercomp() не тормозит преобразование, если нет требования на приведение к виду (когда требование ch пусто). Теперь execute() пользуется pgm->flags вместо options->flags. Теперь требование Pq в 0м IO регистре игнорируется. Теперь execute() при выходе протирает регистры только при установленном в pgm->flags бите PGOBLIN_CLEAR_ONEXIT. Это вновь введенный бит. pgoblin_verify() и pgoblin_htman() перенесены в pgoblin.c, что бы не попали в библиотеку. Из публичных объявнений обе процедуры убраны. Почему то парсер не обнулял созданную pgm перед заполнением. Константа PGO_MAXR теперь определяется из PGOBLIN_SYMREGS. Новая процедура pgoblin_keycodes() вызывается по -T2, сверяет список зарезервированных слов с СУБД. Теперь процедуры, вызываемые по -T возвращают целое, 0 при успехе. В sqlkeywords отсутствовала буква _. Откорректирован список зарезервированных слов с PostgreSQL 8.4. Форматирование. 2009-10-21 babolo Версия 2.29 В pgoblin_echo() была путаница в signedness. В db_sqlite2 и db_sqlite3 унифицированы флаги, управляюющие pgoblin_sqlite*_quote(). Добавлены функции quote_html() и gettimeofday() к sqlite2 и sqlite3. 2009-08-03 babolo Версия 2.26 В #copyin в обоих SQLite не вводился \N в последней колонке. Добавлены тесты на это. В SQLite3 не было отмечено действие Cu для отладочной печати. 2009-07-31 babolo Версия 2.23 У обоих SQLite преобразование COPY плохо проверяло входное выражение и не работало на имени таблицы в двойных кавычках. Добавлены тесты на это в интерфейсы всех баз. 2009-07-09 babolo Версия 2.21 В db_sqlite2 и db_sqlite3 была ошибка в приеме \\ COPY in. В tools/regres* добавлена проверка на эту тему. Символы SYMREGS и BINREGS переименованы в PGOBLIN_SYMREGS и PGOBLIN_BINREGS. В pgoblin_syntax.p[] добавлено поле val. В pgoblin_VVdump() добавлена распечатка этого поля. descript.c наполнен комментариями для автоматической обработки. Новый файл tools/commands.pgoblin для сбора этих комментариев в страницу описания команд. pgoblin.c наполнен комментариями для автоматической обработки. Новый файл tools/invoking.pgoblin для сбора этих комментариев в страницу описания флагов. В tools/Makefile комментарием включено описание формата комментариев для автоматического сбора документации. Макросы DBASE(), JOBE() и STYLS() перенесены из pgoblin.h назад в pgob.h, в связи с чем pgoblin.c перестал быть чистым клиентом - включает pgob.h. Надо будет подумать, как спрятать внутренности. Новый флаг -T для выдачи внутренних структур для документации и процедура pgoblin_htman() для реализации этого. 2009-07-07 babolo Версия 2.20 Интерфейс с SQLite3 был неправильный, что проявилось с SQLite3.6. Ко всем init() и fini() добавлен параметр flags. В декодер ошибок добавлена ошибка SQLITE_LOCKED_SHAREDCACHE. Теперь при открытии SQLite3 базы включается выдача расширенных кодов ошибок. Не проверялись результаты init(), теперь при неудаче выдается сообщение и соответствующий модуль деинициализируется. Результаты fini() не проверяются, как и не проверялись. В FreeBSD 4 нет кода ошибки EDOOFUS, в качестве обхода используется EINVAL. tools/regres для 3х тестов использует режимы standard_conforming_strings=on и backslash_quote=off, с PostgreSQL 7.4 тест не проходит. 2009-05-06 babolo Версия 2.17 Не вводился литерал пустая строка. Теперь синтаксически допустим литерал NULL. Все команды, кому неприемлемо, ругаются самостоятельно. Теперь #exit понимает код возврата из необязательного литерала, без литерала ведет себя по прежнему (EX_OK). Код команды поменялся. В интерфейс модулей добавлены init() и fini(). Старый init() из JOBS стал open(). В db_sqlite3 добавлены нововведения из 3.6 в случае наличия. Форматирование. 2009-01-09 babolo Версия 2.16 Возможность собирать без db_pgsql, db_sqlite2, db_sqlite3. Вместе с babolo-libmake-2.05 возможность транслировать на amd64. Приспособлена к трансляции в FreeBSD 7. Теперь pgoblin_strsel() и pgoblin_binsel() правильно себя идентифицируют при уровне отладки 4. Подробная диагностика в pgoblin_eval() о состоянии после pgoblin_execute() при ошибке. В pgoblin_eval() не освобождалась память из под программы для pgoblin_execute(). В db_0:pgoblin_shurecon() проверяется наличие ссылки на базу перед использованием. В db_0:pgoblin_query(), db_0:pgoblin_ntuples(), db_0:pgoblin_nfields() проверяется наличи ссылки на результат перед использованием. Для правильной сборки теперь _pgoblin_sqlite3_quote() и __pgoblin_sqlite3_regexp() теперь публичные. Используется инициализация от SQLite 3.6, если есть. В style_pgo0:pgoblin_style_parse() убрано внутреннее определение i, экранирующее внешнее, в обработке Cm в автомате. В style_pgo0 константой ENTITY_LETTERS заменено число, в pgoblin_style_parse(), pgoblin_style_dump() и pgoblin_style_tbl() исправленя связанная с этой константой ошибка off by one. В gcc 3.4.6 (FreeBSD 6, может, и другие) обнаружена ошибка, из-за которой в style_pgo0 в pgoblin_style_dump(), pgoblin_style_get() и dsig() пришлось делать обход. В тестах не хватало команды #wait, из-за чего были гонки и непредсказуемые результаты тестов. 2008-06-25 babolo Версия 2.15 Не использовался регистр базы у #exit и #return. Скорее всего потерялся при больбе с "unexpected EOF on client connection", сейчас это предупреждение опять есть. Скорее всего, полностью его извести, учитывая регистр базы, невозможно, но можно подумать над аккуратным уменьшением. В #begin и #end неправильно при отладке выводился код завершения. У pgsql.exec теперь более подробная диагностика при неработе PQexec(). У квотера sqlite3 добавлены новые возможности, пока не используемые. К диагностическому выводу регистров добавлены флаги, кроме регистров ввода- вывода, где они были и раньше. При установке нового коннекта к базе на него не распространялись отладочные флаги. Форматирование, комментарии. 2008-06-05 babolo Версия 2.14 Несоблюдение области значимости pgoblin_jobreg.host и pgoblin_conn.dbname. В рассчете на будущую библиотеку добавлено по одному подчеркиванию в начало названий к реализациям дополнительных функций SQLite*. Возврат значений флагов PGOBLIN_INT64TIME..PGOBLIN_CLOSECONN на прежнее (как в позапрошлом издании) место и выбор для PGOBLIN_ERROR_SENS* нового. Оформление и прочая вкусовщина. 2008-05-31 babolo Возможность распространения ошибок от детей (управляется PGOBLIN_ERROR_SENSOR) и немедленной реакции на обнаружение ошибки ребенка (управляется PGOBLIN_ERROR_SENSIB). Теперь управляющий текст команды #job после идентификатора модуля разбирается пословно (argc, argv) и обрабатываются аналогично getopt(). В интерфейс модуля работ добавлена процедура init(). Новый флаг PGOBLIN_INITED для отметки процедурой init() модуля работ. В cmds был ненужный инклуд. В интерфейсы sqlite2 и sqlite3 добавлена weak реализация SQL процедуры regexp(). В интерфейс sqlite3 добавлена weak процедура для реализации SQL процедур quote_literal(), quote_ident(), quote_ident_always(). quote_ident() сделана максимально точно по PostgreSQL (для чего из 8.3.1 извлечен полный список токенов, см. sqlkeywords), quote_literal() соответствует стандарту, потому отличается от вариантов PostgreSQL всех сейчас существующих версий, но соответствует sqlite3, в рамках которой и должна применяться. quote_ident_always() отличается от quote_ident() тем, что результат всегда в двойных кавычках, даже если quote_ident() не кавычит. Тесты на добавленное в двух предыдущих пунктах. pgoblin_init() избавился от одного параметра и не инициализирует IO_RG0.mife. Изменилась отладочная распечатка при подготовке номеров регистров команде. По опции -V теперь выдается расшифровка кодов заполнения регистров. Ошибка синтаксиса - если первая строка программы была пустая, то вторая отправлялась в мусор. Добавлены тесты на эту ошибку. Теперь пустая программа считается правильной и не вызывает ошибки. Предупреждение на уровне отладки 2 выдается, однако. Зарезервированы флаги -z и -Z для управления реакциями на ошибку. В запутанном порядке подготовки входных файлов была ошибка - не оформлялся конец списка. Значения флагов PGOBLIN_INT64TIME, PGOBLIN_FLOATTIME, PGOBLIN_NEEDINTIME и PGOBLIN_CLOSECONN променялись в пользу PGOBLIN_ERROR_SENSOR и PGOBLIN_ERROR_SENSIB, которые будут едины по всем видам регистров, как и BLINflagи. Названия видов регистров теперь одной длинны - короткие дополнены пробелами. Форматирование. 2008-05-24 babolo Замена getopt() на аналогичный комплект из babolo-parser. Добавлены флаги -r и -R для парсенья слов среди аргументов. Добавлен бит PGOBLIN_ARGVSTACK, управляющий совместимостью #getarg с предыдущей версией. В usage() теперь изображаются подключенные модули. Отсутсвие break в caseах switch откомментировано в дружественном lint стиле. Из pgoblin_init() удалены закоментаренные ранее куски (ненужние куски инициализации регистров ввода/вывода, работ, стиля. В тестах первым аргументом поставлен -r для парсенья недопарсенных ядром (изменения с FreeBSD 6) параметров. 2008-05-14 babolo Согласована знаковость/беззнаковость у переменных и параметров. Поправлен порядок и состав инклудов. В style_pgo0 несколько левых частей присваивания не понравились GNU C 4. НЕ отработана подлянка по обработке первого параметра из #! скрипта. Уверенности в работоспособности всего вместе на FreeBSD 7 немного - тесты не проходят из-за изменения ожидаемых размеров каталогов и из-за подлянки. 2008-05-13 babolo Версия 2.11 Изменились идентификаторы модулей. Сейчас в id и name одинаковые версии, со временем во внешних модулях разойдутся. Запущена команда #getdir. В pgoblin_connect() изменился разбор строки параметра. В db_pgsql проверяется наличие параметров к pgoblin_connect() и если их нет, то используется PQsetdbLogin() вместо PQconnectdb(). В main() проверяется единственность и правильность параметра -B. Тесты #getdir в regres, regres4, regres8. 2008-05-11 babolo Подключена sqlite3. Сделана пустышка #getdir. В db_sqlite2 убран макрос ERRMSG() и упрощен ERRMSX(). В db_sqlite2 sqle[] был внешним. В db_sqlite2 добавлено множество недостающих проверок. В db_sqlite2 неправильно обрабатывалась conn->semi - мог нахватать мусора. Теперь pgoblin.h может использоваться в C++. Новый тест regres8 для sqlite3, почти полностью повторяет тест для sqlite2. В regres4 добавлено несколько #begin #end для ускорения. Небольшие изменения в сообщениях. Форматирование.