Bug 7092

Summary: Протеcтировать SELTA 1.1.0 c Postgres 9.0
Product: SELTA@Etersoft Reporter: Станислав Коробейников <stas>
Component: ОбщееAssignee: Калюхович Юрий <goga>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P4 CC: lav, sonner, stas
Version: 1.1.0   
Target Milestone: версия 1.0.4   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 7114, 7135    
Bug Blocks: 6158    
Deadline: 2011-04-18   

Description Станислав Коробейников 2011-04-05 18:32:57 MSK
Нужно протеcтровать SELTA 1.1.0 c Postgres 9.0. Желательно включая обновления с postgres 8.4.4. и SELTA 1.0.8
Comment 1 Калюхович Юрий 2011-04-06 11:41:26 MSK
из gui: нужно выполнить тесты 6,9,11,13,17-27
из 1с77: тесты 1-3 для конфигураций "Бухгалтерия" и "Комплексная"
Comment 2 Калюхович Юрий 2011-04-06 16:03:34 MSK
для gui остались 11, 13, 23, 27, т.е. самые важные. остальные для gui все пройдены.
а вот из 1С даже подключиться не удалось (при настройке, из конфигуратора) - ошибка "требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия"
Comment 3 Калюхович Юрий 2011-04-06 16:35:11 MSK
наш тест odbc соединения с постгри (добавил в список тестов) проходит нормально, соединяется, делает select, отображает данные. Но он не запрашивает версию, как 1С
Comment 4 Станислав Коробейников 2011-04-06 16:48:12 MSK
Сделай тест с запросом версии. И потом хак в odbc драйвере.
Comment 5 Калюхович Юрий 2011-04-07 13:59:59 MSK
(В ответ на comment #4)
> Сделай тест с запросом версии. И потом хак в odbc драйвере.

1C трижды запрашивает версии с помощью SQLGetInfo
у меня получилось:

для mssql:
SQL_ODBC_VER = 03.52.0000
SQL_DRIVER_VER = 03.81.7713
SQL_DBMS_VER = 08.00.2039

для постгри 8.4 (pgsql):
SQL_ODBC_VER = 03.52.0000
SQL_DRIVER_VER = 03.81.7713
SQL_DBMS_VER = 8.4.4-alt0.M51.1.1

для постгри 9.0.2 (alt 6 beta):
SQL_ODBC_VER = 03.52.0000
SQL_DRIVER_VER = 03.81.7713
SQL_DBMS_VER = 9.0.2
Comment 6 Станислав Коробейников 2011-04-07 14:13:20 MSK
Делаем, что бы версию сервера возвращало бы 08.00.2039. 
Только думаю, что хорошо бы переделать так, что бы возвращалось из какой-нибудь нашей функции.

(В ответ на comment #5)

> для mssql:
> SQL_DBMS_VER = 08.00.2039
Comment 7 Калюхович Юрий 2011-04-07 15:16:52 MSK
> > для mssql:
> > SQL_DBMS_VER = 08.00.2039

в общем, версию запрашивает и CC_lookup_pg_version() (connection.c), и libpq (fe-protocol2.c), и видимо где-то еще, т.к. замена в этих двух файлах результата не принесла.

версия постгри также передается при подключении, в параметре server_version, выясняется все это в функции getParameterValues()
Comment 8 Калюхович Юрий 2011-04-07 15:23:50 MSK
1С смогла подключиться, только если в odbc в функции PGAPI_GetInfo() жестко прописать возвращаемую версию сервера. сейчас этого хватит, но на будущее надо сделать возможность "работать" с разными версиями, т.е. делать табличку в базе master
Comment 9 Станислав Коробейников 2011-04-07 18:16:50 MSK
mchar.sql у 9.0 и 8.3.8 одинаковые
Comment 10 Калюхович Юрий 2011-04-07 18:26:12 MSK
внес изменения в SQLDriverConnect() и SQLDriverConnectW(), чтобы избежать перекрестных подключений изменил скрипты создания/обновления базы. 1С приняла нормально.
Но - при попытке загрузить базу - ошибка "22P06" Warning: nonstandart use of \\ in a string literal
подозреваю, что надо поправить параметр client_min_messages ...
Comment 11 Станислав Коробейников 2011-04-07 18:30:09 MSK
Есть специальный параметр escape_string_warning, который это отключает.
(В ответ на comment #10)
> подозреваю, что надо поправить параметр client_min_messages ...
Comment 12 Станислав Коробейников 2011-04-07 18:31:25 MSK
Ну и это.
(В ответ на comment #10)
> подозреваю, что надо поправить параметр client_min_messages ...
Comment 13 Калюхович Юрий 2011-04-07 18:39:23 MSK
(В ответ на comment #12)
> Ну и это.
> (В ответ на comment #10)
> > подозреваю, что надо поправить параметр client_min_messages ...

client_min_messages изменил на error, как на pgsql (было notice) и база Бухгалтерии загрузилась
Comment 14 Калюхович Юрий 2011-04-07 18:57:55 MSK
Тестирование и Исправление базы не прошло:
HY000 "Output parameter isn't available before 8.1 version"
Comment 15 Калюхович Юрий 2011-04-07 19:23:50 MSK
(В ответ на comment #14)
> Тестирование и Исправление базы не прошло:
> HY000 "Output parameter isn't available before 8.1 version"

видимо, база была битая. все тесты для 1С пройдены (passed)
Comment 16 Калюхович Юрий 2011-04-07 19:46:21 MSK
gui test 11 passed

исправил опечатку в парсере с OBJ_RENAME()

загрузка конфигурации в базу (для теста 13) неудачна: constraint 'pk__1sjourn_new__1sjourn' of relation '_1sjourn' does not exists
Comment 17 Калюхович Юрий 2011-04-08 15:27:25 MSK
> загрузка конфигурации в базу (для теста 13) неудачна: constraint
> 'pk__1sjourn_new__1sjourn' of relation '_1sjourn' does not exists

почти выяснил причину. obj_rename() выполняет переименование, и лезет в таблицу "pg_indexes_name", где были изменения в том смысле, что все идентификаторы берутся в кавычки и приводятся к нижнему регистру
GetIndexRelName() уже исправлял, а вот другие функции не проверял...
Comment 18 Калюхович Юрий 2011-04-08 16:40:06 MSK
obj_rename() исправил, но это не помогло, ошибка та же
Comment 19 Калюхович Юрий 2011-04-08 17:44:55 MSK
(В ответ на comment #18)
> obj_rename() исправил, но это не помогло, ошибка та же

еще немного поправил obj_rename(), загрузка структуры успешна.
но загрузка csv в постгри (тест 13) не прошла, выдало ошибку в неправильной кодировке, что очень плохо
Comment 20 Калюхович Юрий 2011-04-11 13:25:32 MSK
selta 1.1.0 не может работать с постгри ниже 9.0 из-за отсутствия патча seltapgaddon

gui test 23 passed
gui test 27 : делал c 8.4 до 9.0, обновления постгри не потребовалось, gui сельты восприняло базу как свою, но в таблице pg_selta_version так и осталось 8404
Comment 21 Калюхович Юрий 2011-04-11 13:29:39 MSK
оказалось возможным инициализировать/деинициализировать базу postgres
Comment 22 Калюхович Юрий 2011-04-11 17:54:40 MSK
исправил ошибку в gui selta при обновлении базы - не проверять базу 'postgres'
Comment 23 Калюхович Юрий 2011-04-15 13:29:14 MSK
(В ответ на comment #22)
> исправил ошибку в gui selta при обновлении базы - не проверять базу 'postgres'

test sqlbindparameter passed
база 1С загрузилась, 1С запустилась.
Comment 24 Калюхович Юрий 2011-04-15 16:59:30 MSK
test gui 13 passed.
багу пока зыкрываю, если обнаружится ошибка (бага, например, 6124) - переоткроем
Comment 25 Калюхович Юрий 2011-04-15 18:40:33 MSK
Ошибка при удалении помеченных объектов - HY000 "No query has been executed with that handle"
Comment 26 Калюхович Юрий 2011-04-15 19:04:25 MSK
(В ответ на comment #25)
> Ошибка при удалении помеченных объектов - HY000 "No query has been executed
> with that handle"

у меня не подтвердилось. скорее всего из-за того, что на нашей базе не было изменений в таблицу selta_supported_mssql_version (бага 7135 комм. 6)
Comment 27 Калюхович Юрий 2011-04-16 14:31:57 MSK
(В ответ на comment #26)
> (В ответ на comment #25)
> > Ошибка при удалении помеченных объектов - HY000 "No query has been executed
> > with that handle"

не подтвердилось ни на постгри 9.0, ни на постгри 8.4.4
Comment 28 Vitaly Lipatov 2014-09-11 18:46:05 MSK
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.