2025-02-28  babolo
Перенос из условного REQUIRED+=pgoblin:5 в безусловный.

2025-02-25  babolo
Не был внесен под PG_DIAG_INTERNAL_POSITION execute().

2025-02-25  babolo
Лишнее в GNUmakefile.

2025-02-24  babolo
Версия 5.05 повторно
Не всё заехало.

2025-02-24  babolo
Версия 5.05

2025-02-23  babolo
Отладка индивидуальных make test.

2025-02-18  babolo
Версия 5.04
Замена make -C ... tester на cd ...; make test.

2025-02-16  babolo
Добавлен копилефт.
Синтаксис трубы в sh.

2025-02-10  babolo
Разница с Linux в mktemp.

2025-02-10  babolo
Добавлена цель тестер для Linux.

2025-02-10  babolo
Версия 5.03 повторно
Не был поменян номер версии.

2025-02-10  babolo
Версия 5.03
Транслируется на Linux за исключением перехода с sysctl на procfs.

2025-02-10  babolo
Добавлен каталог для поиска libpq-fe.h в Linux.

2025-02-07  babolo
Для Linux event.h.

2025-02-06  babolo
Первый подход к портированию на Linux.

2025-01-28  babolo
Версия 5.02
В дистрибутиве не хватало BSDmakefile.
Приведение BSDmakefile к единому виду.

2025-01-26  babolo
Версия 5.01 повторно
Даты в копилефтах.

2025-01-26  babolo
Версия 5.01

2025-01-19  babolo
Заваисимость от babolo-libmake-4.54.
Новые команды #pushX и #popX.
Восстановлен #file для совместимости.
Уменьшены варнинги.

2025-01-19  babolo
Использование BLIN_FALLTHROUGH.

2024-07-14  babolo
Уменьшение варнингов.

2024-07-14  babolo
Уменьшение варнингов на i386.

2024-04-20  babolo
Даты в копилефтах.

2024-04-20  babolo
Порядок инклудов для неиспользования
 системных .h файлов при общей трансляции.

2024-03-31  babolo
Изоляция общего теста от установленного в системе pgoblin.

2024-03-31  babolo
Варнинги.

2024-01-08  babolo
Дата в копилефте.

2024-01-08  babolo
Реорганизация make файлов.

2023-07-30  babolo
Использование #file IN прекращено в пользу #cat.

2023-07-23  babolo
Замена OUT #cat на #out в тестах.

2023-07-23  babolo
Замена OUT #file на #out в тестах.

2023-07-22  babolo
Отлажен и описан #out.
Изменились прототипы pgoblin_ios.iprep и pgoblin_ios.oprep.
В тестах в список каталогов для поиска плагинов добавлен pgoblin/.
Пополнен и поправлен отладочный вывод.
Колмментарии.
Стиль.

2023-07-09  babolo
Ликвидирована зависимость от getCGIparm.
Убран вариант #getdir с именем файла в CTL.
Комментарии.
Стиль.

2023-07-01  babolo
Проверяется находимость имени типа.

2023-06-24  babolo
Замена номера ошибки.

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-10  babolo
Двоичный SELECT делается эффективнее.

2023-06-04  babolo
Исправлены концы файлов.

2023-06-04  babolo
Переход PGOBLIN_COMPAT на 5.

2023-06-04  babolo
Сокращены таблицы регистрации плагинов.
Замена типов pgoblin_outs и pgoblin_ins на pgoblin_ios.
Переформатирован тип pgoblin_db_conn в pgsql.

2023-06-03  babolo
Изменение прототипа pgoblin_db_finish() и интерфейса DB.

2023-06-03  babolo
Прототип pgoblin_db_denote().

2023-06-03  babolo
Изменение прототипов и интерфейсов.

2023-06-03  babolo
Массовая замена интерфейсов и прототипов.

2023-05-06  babolo
Дата в копилефте.

2023-04-09  babolo
Изменение интерфейсов ->resinfo, ->subinfo, ->erinfo, ->valinfo, ->getvalue.

2023-04-09  babolo
В трассировку подается ссылка на регистр вместо номера.
В регистры встроены номера и глубина.
Абстракция регистра pgoblin_rall.
Недоработка в db_pgsql:getstream().
В pgoblin_wait() замена идентификатора j на стандартноый rjb.

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
Добавлены тесты regexp_replace().

2022-12-18  babolo
Тесты regexp_replace().

2022-09-17  babolo
Тесты на множественный #fork при нулевом CTL.

2022-08-28  babolo
Исправлены *_COMPAT макросы.
Подсказки для типов параметров в тестах.

2022-08-18  babolo
Тест на #fork с CTL.

2022-08-16  babolo
Исправлена зависимость.

2022-08-16  babolo
Тесты новых возможностей pgoblin.

2022-08-14  babolo
Команда #eval использует IN Pq. Тесты на это.
Подготовка к использованию rio->stymd и для транслированной программы.

2022-05-01  babolo
Тест на пустой ответ при CTL Pq и IN Pq.

2022-03-20  babolo
Версия 4.04
Уточнено поведение tarry и notifies.

2022-02-19  babolo
Версия 4.03
Ошибка при COPY отрабатывается.

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
Изменение интерфейсов CONN prepare(), execute() и выделение
 из execute() prexec().

2022-01-07  babolo
Даты в копилефтах.

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-28  babolo
Стиль.

2021-11-27  babolo
Изменение прототипа execute().

2021-11-21  babolo
Изменение работы #getopt.

2021-10-31  babolo
Исправление теста #listen.

2021-10-31  babolo
Исправление теста #listen.

2021-10-31  babolo
Отладка.

2021-10-31  babolo
Стал подробнее результат tarry().
В интерфейс БД введена новая функция ->erconn().
Реорганизация pgoblin_listen().

2021-10-31  babolo
Исправление тестов.

2021-10-31  babolo
Зачистка результата выполнения tarry().

2021-10-24  babolo
Исправление *_COMPAT.

2021-10-23  babolo
Исправление тестов.

2021-10-23  babolo
Возможность трансляции с локальными .h файлами.
Зависимость от babolo-libmake:4.16.

2021-10-17  babolo
Тесты 3pgsql перенесены сюда.

2021-10-16  babolo
Постоянно включен multilar.

2021-10-09  babolo
Версия 0.10
Стал длиннее resinfo().

2021-10-02  babolo
Версия 0.09

2021-09-26  babolo
Теперь LONGNOTIFY без вариантов, не отлажен, но не мешает.

2021-09-26  babolo
Исправлена реакция на нехватку памяти.
Тип notifies().
Подготовка к LONGNOTIFY.

2021-09-22  cuhegh
Версия 0.08
Выход за границы массива параметров при несовпадении размеров.

2021-09-18  babolo
Версия 0.07
Разрешено несоответствие размера массива параметров.

2020-10-13  babolo
Версия 0.06
Выделен отдельный тип pgoblin_db_conn для сопровождения коннекта в БД.
В результат добавлена ссылка на pgoblin_db_conn.
Добавлен вывод типов в #getmeta.
Макрос PQEXEC() оформлен правильнее.
Стиль.

2020-10-11  babolo
Версия 0.05
Зависимость от pgoblin-3.12.

2020-08-18  babolo
Версия 0.04

2020-03-03  babolo
Описька.

2020-02-01  babolo
Улучшена реакция на NULL параметры.
ЗаNULLение результата при отсутствии ответа.

2019-12-10  babolo
Стиль.

2019-10-19  babolo
Отметка на подумать, стиль.

2019-09-14  babolo
Версия 0.03
Была утечка памяти на val и len.

2018-12-04  babolo
Замена константных путей на переменные.

2018-10-31  babolo
Версия 0.02
Замена NoticeProcessor на NoticeReceiver.

2018-10-15  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-17  babolo
Оформление приватных и публичных процедур.

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* query() замена переменной n на ncol и idx.
# db_sqlite* query() переменные p и q стали char вместо u_char.
Комментарии.
Стиль.

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 при ненулевом
 количестве ошибок.
Стиль.

2017-07-21  babolo
Перенос extatus() с потрохами без изменений.
Дополнен README.

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-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
В db_0 pgoblin_mode res переименован в rsv.
В db_0 и db_pgsql новая процедура resv() для создания объектов
 типа pgoblin_mode.
Удалено поле prepar из pgoblin_mode в db_pgsql.

2017-06-21  babolo
Обращения к query() и prepare() из pgoblin_dbases сделаны через
 db.c диспетчер.
Интерфейс shurecon() из pgoblin_dbases возвращен взад.
Переименование нескольких параметров pgoblin_mode* из res в rsv.
В db_pgsql флаг PGOBLIN_DB_PREPARE мог быть установлен незаконно.

2017-06-19  babolo
Замена malloc();bzero() на calloc() везде, где приемлемо.

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.

2015-07-13  babolo
Созданы новые файлы pgoblin_dbms.h, pgoblin_job.h, pgoblin_style.h. Туда
 перенесены соответствующие определения из pgoblin.h без изменений.
В style_0 сделан контроль длинны создаваемого вывода.
Поправлены даты в копилефтах.
Комментарии.

2015-07-13  babolo
Наличие обоих макросов: ALIGN8() и ALIGN16() сочтено избыточным.

2015-07-12  babolo
В shurecon() могут быть строки NULL.
В README закомментировано описание ошибки старых версий PostgreSQL.

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-05-06  babolo
Версия 2.43
Результат от pgsql select представлял NULL как ''.
Тесты на это у всех 3х баз.
Обработка ошибки от pgsql prepare() была неправильной.

2009-11-17  babolo
Версия 2.37
У #echo была несовместимость с PGOBLIN_BINPARM в CTL.
В cmd_select массовое уточнение сообщений об ошибках.
Не собирался с PostgreSQL 7.4.
Для сс 2.9X был неприемлемый синтаксис в execute.
Ошибка из parser не распространялась.
Исправлен комментарий к #clear.

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-08-02  babolo
Версия 2.25
Повышена толерантность pgoblin к реакции PostgreSQL на пустой запрос
 в #perform, #select, #copyin и #copyout.
Проверка пустых #perform и #select на всех СУБД. #copyin и #copyout надо
 подумать, сейчас проверки нет.

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 в случае наличия.
Форматирование.

2008-06-25  babolo
Версия 2.15
Не использовался регистр базы у #exit и #return. Скорее всего потерялся
 при больбе с "unexpected EOF on client connection", сейчас это
 предупреждение опять есть. Скорее всего, полностью его извести, учитывая
 регистр базы, невозможно, но можно подумать над аккуратным уменьшением.
В #begin и #end неправильно при отладке выводился код завершения.
У pgsql.exec теперь более подробная диагностика при неработе PQexec().
У квотера sqlite3 добавлены новые возможности, пока не используемые.
К диагностическому выводу регистров добавлены флаги, кроме регистров ввода-
 вывода, где они были и раньше.
При установке нового коннекта к базе на него не распространялись отладочные
 флаги.
Форматирование, комментарии.

2008-05-26  babolo
Из сборки убран флаг -pthread.
Немного комментариев к структуре pgoblin_dir.
Новые макросы DBASE(), JOBE() и STYLS(), за счет них ликвидированы макросы
 STYLESET, GLOBALDBSET, LOCALDBSET() и присвояния D(), S(), DBSET.
Появился другой вариант #getdir с заданием файлов из IN->pq, не проверено.

2008-05-24  babolo
Замена getopt() на аналогичный комплект из babolo-parser.
Добавлены флаги -r и -R для парсенья слов среди аргументов.
Добавлен бит PGOBLIN_ARGVSTACK, управляющий совместимостью #getarg
 с предыдущей версией.
В usage() теперь изображаются подключенные модули.
Отсутсвие break в caseах switch откомментировано в дружественном lint стиле.
Из pgoblin_init() удалены закоментаренные ранее куски (ненужние куски
 инициализации регистров ввода/вывода, работ, стиля.
В тестах первым аргументом поставлен -r для парсенья недопарсенных ядром
 (изменения с FreeBSD 6) параметров.

2008-05-13  babolo
Версия 2.11
Изменились идентификаторы модулей. Сейчас в id и name одинаковые версии,
 со временем во внешних модулях разойдутся.
Запущена команда #getdir.
В pgoblin_connect() изменился разбор строки параметра.
В db_pgsql проверяется наличие параметров к pgoblin_connect() и если их нет,
 то используется PQsetdbLogin() вместо PQconnectdb().
В main() проверяется единственность и правильность параметра -B.
Тесты #getdir в regres, regres4, regres8.

2008-04-19  babolo
#strselect и #binselect используют интерфейс потокового запроса.
#strselect и #binselect стали одной процедурой в cmd_select.
В db_pgsql интерфейс потокового запроса реализован.
Теперь к pgoblin_dbases.exec можно обращаться с NULLевым res, реализовано в
 db_pgsql и db_sqlite2.
В db_sqlite2 поменялась pgoblin_db_data, теперь там возможен как вариант
 с mular_descriptor, так и с простым массивом.
Теперь все знания о том, где какой интерфейс СУБД, есть ли база по
 по умолчанию и распространение базы по всем регистрам делаются только
 в pgoblin.c, до некоторой степени библиотеке все равно, только
 pgoblin_init() должен знать про размещение интерфейса db_pgsql.
Флаги СУБД теперь при очистре регистра базы не распространяются, за
 исключением выбора СУБД, если задано в флагах. По этому поводу новый
 флаг в pgoblin_main - PGOBLIN_DEFAULDB.
Определения номеров интерфейсов СУБД перенесено из pgob.h в pgoblin.h
 из-за использования в pgoblin.c - там не должно быть внутренностей.

2008-04-18  babolo
Регистрация транзакции в pgoblin_begin() и pgoblin_end() сделана точнее.
pgoblin_strsel() и pgoblin_binsel() используют запуск и остановку потока
 от будущего потокового интерфейса.
В db_pgsql реализована используемая часть потокового интерфейса.
На прохождении тестов не отразилось.

2008-04-17  babolo
В интерфейсе db_ перестановки и объединение outcopy() и endcopy() в общую
 процедуру endstream(). freewarn() ликвидирована за ненадобностью.
Константы PGOBLIN_CR_SSEL и PGOBLIN_CR_BSEL к универсализации интерфейса.
В db_pgsql pgoblin_query() была ошибка с использованием miss[][].

2008-04-17  babolo
Тесты sqlite2 в отдельном файле tools/regres4.
Новый флаг -B, которым можно заменить СУБД по умолчанию.
Из интерфейса db_ выброшена процедура warn.
Из pgoblin_init() убрано присвоение нулей тому, что и так 0 после bzero().
pgoblin_init() теперь не определяет СУБД по умолчанию, она прописывается
 в main().
Завершен COPY интерфейс, db_pgsql и db_sqlite2 с ним работают.
В db_sqlite2 поменялся тип pgoblin_db_data, теперь в нем для cell
 используется mular_descriptor вместо массива ссылок.
pgoblin_shurecon() теперь открывает db :memory:, исли имя не задано.
В процедуры db_sqlite2 добавлены проверки наличия оттранслированной
 виртуальной машины.
В процедуры db_sqlite2 добавлены закрытия виртуальной машины при ошибках.
sqlite_get_table() оказалась крайне неудобной в использовании, вместо нее
 цикл sqlite_compile()+sqlite_step()+sqlite_finalize() в pgoblin_query()
 при cond==PGOBLIN_CR_TUPL.
Была ошибка в использовании pipe[] после форка в pgoblin_query() при
 cond==PGOBLIN_CR_IN.
Была ошибка в продвижении по запросу в pgoblin_query() при
 cond==PGOBLIN_CR_IN.
Единая точка выхода у форкнутого в pgoblin_query() при cond==PGOBLIN_CR_IN
 процесса.
pgoblin_query() при cond==PGOBLIN_CR_IN ставил неправильный флаг в conn.
В pgoblin_getcopy() проверяются условия досрочного окончания COPY.
В выводе COPY значений не было замены NULL на \N.
Завершена pgoblin_putcopy() в db_sqlite2.
pgoblin_endcopy() начата и окончена.
Тесты с pgsql проходят, с sqlite2 еще не все.

2008-04-16  babolo
Поменялись типы первых параметров putcopy() и endcopy() DB интерфейса,
 вместо pgoblin_conn.conn теперь pgoblin_conn.
В cmd_copy.c форматирование и визуальная оптимизация pgoblin_copyin().
В db_0.c вместо нереализованных функций стоит процедура, выдающая ошибку.
В db_pgsql.c в связи со сменой интерфейса новая процедура pgoblin_putcopy().
В db_sqlite2.c форматирование и визуальная оптимизация, новые макросы
 ERRMSG() и ERRMSX().
В db_sqlite2.c в pgoblin_query() дописана, но не проверена веточка
 PGOBLIN_CR_IN.
Ошибка вида !X&Y -> !(X&Y).
В db_sqlite2.c в pgoblin_getcopy() появилась проверка флага PGOBLIN_COPYOUT.
Начата pgoblin_putcopy() в db_sqlite2.c.
Форматирование.

2008-04-16  babolo
Добавлены тесты на !PGOBLIN_OLDSTYLE.
Убраны варианты из определения pgoblin_io.pq.
В pgoblin_dbases добавлен outcopy и изменен тип первого параметра getcopy,
 вместо pgoblin_conn.conn теперь pgoblin_conn.
В pgoblin.c возвращено обнуление pgm.
В pgoblin.c теперь инициализируются BLIN флаги регистров согласно флагам
 pgoblin_main.flags.
Из pgoblin_init() инициализация предварительным значением BLIN флагов
 убрана.
pgoblin_copyout() возможно стал базонезависимым, пока проверена работа
 только с pgsql.
В db_pgsql.c pgoblin_query() стал правильнее реагировать на грубые ошибки
 в PQexec().
В db_pgsql.c добавлена процедура pgoblin_outcopy() для реализации
 независимого COPY интерфейса.
В db_sqlite2.c добавлены перекодировки ошибок SQLITE_* в errno.h ошибки.
В db_sqlite2.c добавлена процедура перекодировки SQLITE_* ошибок в текст.
Продолжена, но не окончена реализация COPY машины sqlite2.

2008-04-15  babolo
В shurecon() и exec() вместо первых двух параметров - один регистр базы.
Отмечены пропущенные ранее изменения регистров базы.
Для реализации COPY изменен pgoblin_conn.conn - теперь он содержит не
 sqlite*, а pgoblin_db_conn*, в котором есть sqlite* и еще информация для
 связи отдельных вызовов виртуальной машины.
В sqlite2 переделана pgoblin_query() так, что в зависимости от cond
 исполняются разные ветви.
В sqlite2 не используется таблица miss[][].
Начата реализация pgoblin_getcopy() в sqlite2.

2008-04-15  babolo
Подключена библиотека sqlite2, некоторые команды выглядят работающими,
 #copyin и #copyout не реализованы.
Реализована нулевая DBMS.
Хак в #exec с Pq в CTL убран, теперь Pq из CTL системно конвертируется
 в нулевую DBMS.
Отмаркированы изменения регистров job и style.
Долгожданная команда #connect.
Макрос PQEXEC перенесен из pgob.h в db_pgsql.c, поскольку нигде более
 он не нужен.
В db_pgsql.c переименование pgsql_* в pgoblin_* для унификации.
Теперь для PostgreSQL соединений, определенных в #connect, используется
 PQconnectdb().
Теперь BLIN флаги распространяются по всем производным флагам.
Изменен макрос DUMPIOREGS, теперь он не повторяет регистры и немножко
 выдает про R_CONN.
Немного оптимизирован основной цикл интерпретатора, теперь он не
 интерпретирует то, что отправлено в Pq из CTL.
Теперь pgoblin_conn.conn void* без вариантов.
Из интерфейса с DBMS убраны qexec(), mess(), freemess() за ненадобностью.
Форматирование и прочие мелочи.

2008-04-08  babolo
Формально зависимость всего, кроме модуля db_pgsql, от PostgreSQL устранена.
 фактически надо будет еще удалить макрос PQEXEC и текущая реализация
 #copyin и #copyout не полезет в другие СУБД.
Под изоляцию от PostgreSQL существенно расширен состав интерфейсных функций.
Введены собственные коды результатов.
В execute теперь не переключается макрос DBSET, а используется LOCALDBSET
 в дополнение.
Вместо макроса PQEXEC везде, кроме модуля db_pgsql, используется
 интерфейсная функция.
В db_pgsql tarry() переименована в pgsql_tarry(), а pgoblin_shurecon() в
 pgsql_shurecon().
Стала аккуратнее обработка SQL ошибок, теперь каждая ошибка должна быть
 заметной (кроме пока #copy*).
В cmd_trans теперь не переключается макрос DBSET, а используется LOCALDBSET
 в дополнение.

2008-04-08  babolo
В тесте #listen были гонки, из-за чего мог теряться NOTIFY.
Дополнен интерфейс job, бинарная несовместимость. Теперь необходимость
 форкаться отдается интерфейсом по запросу, появилась возможность
 реализации #fork модулем, в интерфейсе появилась процедура close.
Дополнен интерфейс db, бинарная несовместимость. Туда унесено ожидание
 события на соединении с базой и notify.
Теперь pgoblin_shurecon() не используется иначе, чем через интерфейс с
 модулем, для чего теперь при очистке регистров баз туда вносится
 принудительно тип модуля интерфейса pgsql.
pgoblin_listen() реализован базонезависимо, используя измение в интерфейсе
 базы.
Форкнутые ветви неаккуратно обращались со своим каналом к базе, не
не закрывали его перед завершением.
Заполнение регистров баз стилистически выделено.
В pgoblin_listen() добавлены недостающие сообщения об ошибках.
В pgoblin_listen() перед ожиданием notify теперь вначале проверяется,
нет ли готового сообщения, побогает при небольших нарушениях в порядке
 следования операций с базой по отсылке и проверке сообщений.

2008-02-16  babolo
Продолжение изоляции СУБД.
Интерфейс с СУБД модулями расширен на функции shurecon, exec, finish,
 freemem.
pgoblin_shurecon() перенесен целиком в СУБД модуль pgsql.
Для обращения к СУБД интерфейсу используется макрос DBSET, в разных
 контекстах разный.
Есть нерешенные проблемы, но тест, как обычно, проходит.

2008-02-11  babolo
Переведены на использование стилей #strselect и #binselect.
В #display, #strselect и #binselect используется ex вместо e для результата
 функции (унификация).
В #strselect и #binselect используется макрос ERROUT вместо выхода в
 середине функции по ошибке.
Дополнена еще одной функцией pgoblin_styles.
Регистр стиля 0 инициализируется 0ым стилем - для общности подхода.
Обработка flagc в io регистре.
Новый макрос R_STY0.
В style_pgo0 введены флаги HFIRST .. VLAST для управления обработкой
 нулевых размеров таблиц.
Команды #strselect и #binselect стали в результате похожими до смешения,
 возможно, к объединению.
Форматирование и комментарии.

2008-02-10  babolo
Начата поддержка стилей и множественности баз, инфраструктура стилей
 более-менее сформирована, базы придется еще переделывать из единственной.
Поддержка престилей отовсюду ликвидирована, поддержка стилей есть пока
 только в #display.
Новые макросы R_STYLE и STYLESET.
В pgoblin.h теперь введена блокировка повторного включения.