Автор | Сообщение |
|
| |
Пост N: 104
Зарегистрирован: 23.06.08
|
|
Отправлено: 06.03.17 15:54. Заголовок: Постоянный NetError в PostgreSQL (MiniGUI 17.02)
Здравствуйте. Обнаружил баг в последней версии MiniGUI 17.02 (2017.02.28). Для воспроизведения достаточно собрать пример PostgreSQL из папки BASIC и запустить с рабочими настройками. На запросах DROP и CREATE будет срабатывать NetErr() с пустым ErrorMsg. Причина бага кроется в файле SOURCE\HbPgSql\tpostgre.prg. А именно в методе Refresh класса TPQuery который выполняется при каждом TPQServer::Execute. Примерно 679 строка: IF ::nResultStatus == PGRES_TUPLES_OK ... ELSE IF ( ::lError := ::nResultStatus == PGRES_COMMAND_OK ) ::cError := "" ::rows := Val( PQcmdTuples( res ) ) ELSE ::cError := PQresultErrorMessage( res ) ENDIF ENDIF Ошибка заключается в том, что lError должен принимать значение .T. только при наличии ошибки, а в данном случае он принимает .T. и при ::nResultStatus == PGRES_COMMAND_OK (любой запрос, не возвращающий данные). В исходниках Harbour на GitHub данный баг отсутствует: IF ::nResultStatus == PGRES_TUPLES_OK ... ELSEIF ::nResultStatus == PGRES_COMMAND_OK ::lError := .F. ::cError := "" ::rows := Val( PQcmdTuples( res ) ) ELSE ::lError := .T. ::cError := PQresultErrorMessage( res ) ENDIF Откуда он тогда появился в MiniGUI?
|
|
|
Ответов - 3
[только новые]
|
|
|
| moderator
|
Пост N: 1072
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.03.17 18:47. Заголовок: SkyNET пишет: Причи..
SkyNET пишет: цитата: | Причина бага кроется в файле SOURCE\HbPgSql\tpostgre.prg |
| Благодарю за сообщение! SkyNET пишет: цитата: | Откуда он тогда появился в MiniGUI? |
| Эти изменения в классе TPQuery взяты из Харбора 3.4 (очередная оптимизация Виктора )
|
|
|
|
| постоянный участник
|
Пост N: 5347
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.04.17 19:51. Заголовок: Всем привет ! Вот е..
Всем привет ! Вот ещё одна непонятка с проектом. Собираю проект для работы с PgSql, указываю свои библиотеки как обычно: # extension *.L i b PostgreSQL -lhbpgsql -llibpq Собирается проект без ошибок, а при запуске проги - вот такая ошибка: Что за номер 168 такой ? Как побороть проблему эту ? Эти же самые библиотеки использую в других проектах. Там нормально... Вот сборка моего проекта: # Включить multi/single-thread Harbour VM -mt # Incremental-режим компиляции -inc ..... # paths to the main and extension *.Lib -lminigui -ltsbrowse -lTbrw_Table2.lib -lhbole -lxhb -lhbwin # extension *.L i b PostgreSQL -lhbpgsql -llibpq
|
|
|
|
| постоянный участник
|
Пост N: 5348
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.04.17 21:02. Заголовок: Блин... Нашёл баг.....
Блин... Нашёл баг... Если в папке нет файла библиотеки hbpgsql.lib, то проект всё равно собирается !!! Почему ?
|
|
|
|