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 теперь введена блокировка повторного включения.