Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 2096 - База не обновляется до Selta 1.0.3   Make a simular bug
Summary: База не обновляется до Selta 1.0.3
Status: CLOSED FIXED
Alias: None
Product: SELTA@Etersoft
Classification: Продукты (Products)
Component: Графическая утилита Selta (show other bugs)
Version: 1.0.3
Hardware: PC All
: P2 normal
Target Milestone: версия 1.0.4
Assignee: Vitaly Lipatov
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 2054
  Show dependency treegraph
 
In work:
Reported: 2008-07-09 16:51 MSD by Шильников Андрей
Modified: 2009-07-31 22:23 MSD (History)
4 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
ODBC-SQL.LOG (62.08 KB, text/plain)
2010-11-18 03:58 MSK, Шильников Андрей
Details
postgresql-2008-07-09.log (6.10 KB, text/plain)
2010-11-18 03:58 MSK, Шильников Андрей
Details
Исправленный файл обновления (643 bytes, text/plain)
2010-11-18 03:58 MSK, Vitaly Lipatov
Details
корректный вариант от клиента (630 bytes, text/plain)
2010-11-18 03:58 MSK, Калюхович Юрий
Details
предварительный исправленный вариант (693 bytes, text/plain)
2010-11-18 03:58 MSK, Калюхович Юрий
Details
добавлен первычный ключ (806 bytes, text/plain)
2010-11-18 03:58 MSK, Калюхович Юрий
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Шильников Андрей 2008-07-09 16:51:15 MSD
Словами клиента глаголит истина:
"Тут вот настоятельно рекомендовали обновить версию базы... ну
попробовал. Результаты в виде журнала Постгресса и трассировки ODBC
прилагаются в архиве. Естественно ничего не обновилось."
Comment 1 Шильников Андрей 2008-07-09 16:51:49 MSD
Created attachment 564 [details]
ODBC-SQL.LOG
Comment 2 Шильников Андрей 2008-07-09 16:52:12 MSD
Created attachment 565 [details]
postgresql-2008-07-09.log
Comment 3 Шильников Андрей 2008-07-09 16:53:02 MSD
Ошибка критичная и решить ее надо как можно быстрее.
Comment 4 Vitaly Lipatov 2008-07-09 17:00:19 MSD
В качестве временного решения можно предложить либо
- выгрузить базу и загрузить её заново.
либо
- вручную запустить Scripts/selta_up_102_to_103.sql из каталога Selta для обновления.
Comment 5 Vitaly Lipatov 2008-07-09 18:23:03 MSD
В утилите обновления невнятная диагностика. Вот выдержка из лога:

Selta           848-468	EXIT  SQLExecDirect  with return code -1 (SQL_ERROR)
		HSTMT               00A22A08
		UCHAR *             0x00222EFC [      -3] "!!-- Update SELTA@Etersoft v.1.0.2 to SELTA@Etersoft v.1.0.3 (102 to 103)\ a\ adrop table if exists pg_selta_version;\ acreate table pg_selta_version(num int, ver mvarchar);\ ainsert into pg_selta_version values (103, 'SELTA@Etersoft v.1.0.3');\ a\ a-- Remove all procedure from 1C\ aselect drop_function(name) from pg_func_names;\ a\ a\ 0"
		SDWORD                    -3

		DIAG [HY000] internal RELEASE failed;
ERROR: cannot EXECUTE a null querystring (8) 


Как раз тут расшифровывается ошибка 8.
Сейчас попробую собрать новую сборку.
Comment 6 Vitaly Lipatov 2008-07-09 19:46:48 MSD
Created attachment 566 [details]
Исправленный файл обновления

Пока нет новой сборки selta.msi
файл selta_up_102_to_103.sql нужно положить в 
C:\Program Files\Selta\Scripts
Comment 7 Калюхович Юрий 2008-07-14 12:00:31 MSD
Created attachment 577 [details]
корректный вариант от клиента

подробности в заявке 7319
Comment 8 Шильников Андрей 2008-07-15 19:32:47 MSD
"В файле, который я прислал как вариант решения, и я об этом писал, была
хранимая процедура, подправленная мной на скорую руку. Я банально
удалил строчку подчищающую таблицу pg_func_names. Это не есть
правильно. Вечером того же дня я пересоздал процедуру и почистил эту
таблицу от накопившегося мусора.
Что касаемо обновления, то там надо либо в конце поставить повторное
объявление процедуры с недостающей строчкой, либо создать временную
табличку, куда "слить" названия очищаемых процедур, по ней произвести
зачистку стандартной процедурой и затем удалить её. Можно конечно и с
блокировками повозиться, но это уже думаю здесь избыточно.
А вот процедуру пересоздавать придётся в любом варианте ибо без "IF
EXISTS" оно работает хреново, ведь в таблице pg_func_names элементарно
может быть мусор!"
Comment 9 Vitaly Lipatov 2008-07-15 19:36:52 MSD
Короче, разберитесь пожалуйста, каким должен быть скрипт для обновления.
Чтобы он корректно удалял то, что нам нужно, не мусорил и вообще работал.
Comment 10 Калюхович Юрий 2008-07-16 12:17:54 MSD
(In reply to comment #9)
> Короче, разберитесь пожалуйста, каким
> должен быть скрипт для обновления.
> Чтобы он корректно удалял то, что нам нужно,
> не мусорил и вообще работал.
> 

хотелось бы узнать -  или кому задавать вопросы типа "что для чего нужно и где лежит" ??
Comment 11 Калюхович Юрий 2008-07-16 17:03:54 MSD
в скрипте от клиента
1. строчка 'DROP FUNCTION IF EXISTS ' проверяет на наличие функций для удаления
2. последняя строчка полностью чистит таблицу pg_func_names

ошибка возникнет тогда, когда описанная DROP_FUNCTION будет использоваться вне скрипта и без последующего удаления записи о ф-ции в pg_func_names, удаленной с помощью DROP FUNCTION. в этом случае в pg_func_names будем иметь запись о несуществующей функции, что не есть хорошо

отсюда вопрос: DROP_FUNCTION используется только в скрипте или вне его тоже?
Comment 12 Калюхович Юрий 2008-07-16 17:06:30 MSD
в скрипте от клиента
1. строчка 'DROP FUNCTION IF EXISTS ' проверяет на
наличие функций для удаления
2. последняя строчка полностью чистит
таблицу pg_func_names

ошибка возникнет тогда, когда описанная
DROP_FUNCTION будет использоваться вне скрипта и
без последующего удаления записи о ф-ции в
pg_func_names, удаленной с помощью DROP_FUNCTION. в этом
случае в pg_func_names будем иметь запись о
несуществующей функции, что не есть хорошо

отсюда вопрос: DROP_FUNCTION используется только
в скрипте или вне его тоже?


Comment 13 Калюхович Юрий 2008-07-16 17:20:03 MSD
странно что первый вариант скрипта у клиента не сработал(attachment id=566), у меня все заработало (проверял команды в скрипте "вручную" консолью, постгри на тестинге)

отсюда оправданным видится только добавление "IF EXISTS"
Comment 14 Калюхович Юрий 2008-07-16 17:55:05 MSD
правильным решением будет объединить оба варианта + all_name проверять на NULL
Comment 15 Калюхович Юрий 2008-07-17 18:41:11 MSD
Created attachment 590 [details]
предварительный исправленный вариант

нужно протестить
Comment 16 Калюхович Юрий 2008-07-17 19:00:49 MSD
(In reply to comment #15)
> Created an attachment (id=590) [details]
> предварительный исправленный вариант

(заявка 6507) возможно еще нужно добавить индексы в таблицу pg_func_names, первичный ключ по полю name
Comment 17 Калюхович Юрий 2008-07-17 20:07:12 MSD
Created attachment 591 [details]
добавлен первычный ключ

осталось протестить на работоспособность
Comment 18 Калюхович Юрий 2008-07-21 19:34:12 MSD
(In reply to comment #17)
> добавлен первычный ключ
> осталось протестить на работоспособность

работает, можно включать в сборку
Comment 19 Vitaly Lipatov 2008-07-25 23:01:31 MSD
1. Юра, сейчас функция DELETE_FUNCTION из файла обновления до 1.0.3 отличается от функции в selta_install.sql. Надо определиться, где правильнее.

2. Бага по первичному ключу должна быть отдельно, и исправление должно входить не только в файл обновления, но и в selta_install.sql, который задействуется при инициализации базы.

Comment 20 Калюхович Юрий 2008-07-28 16:44:16 MSD
(In reply to comment #19)
> 1. Юра, сейчас функция DELETE_FUNCTION из файла
> обновления до 1.0.3 отличается от функции в
> selta_install.sql. Надо определиться, где
> правильнее.

правильным будет второй вариант

> 2. Бага по первичному ключу должна быть
> отдельно, и исправление должно входить не
> только в файл обновления, но и в selta_install.sql,
> который задействуется при инициализации
> базы.
>
создал, бага 2171
Comment 21 Калюхович Юрий 2008-07-28 16:51:13 MSD
> правильным будет второй вариант

имеется ввиду вариант функции DROP_FUNCTION
 из комментария #17
Comment 22 Калюхович Юрий 2008-07-31 10:27:32 MSD
(In reply to comment #21)
> > правильным будет второй вариант
> 
> имеется ввиду вариант функции DROP_FUNCTION
>  из комментария #17
> 

этот же вариант функции должен быть и в selta_install.sql ?
Comment 23 Vitaly Lipatov 2008-07-31 13:55:15 MSD
Ну всё, всё необходимое для обновления внесено в 1.0.4