Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Приветствую. Ещё вот такая проблемка... Нижеприведённый фрагмент нормально работает на 7, но на 10 в последней строке выдаёт ошибку -958. Кто как считает, в которой версии баг, а которая работает правильно? $EXECUTE IMMEDIATE "BEGIN WORK"; $EXECUTE IMMEDIATE "CREATE TEMP TABLE lvo ( i INT, f char( 16 ) ) WITH NO LOG"; $EXECUTE IMMEDIATE "INSERT INTO lvo VALUES ( 1, 'A' )"; $DECLARE sel CURSOR WITH HOLD FOR SELECT f INTO :f FROM lvo; $OPEN sel; $FETCH sel; $EXECUTE IMMEDIATE "ROLLBACK"; $EXECUTE IMMEDIATE "BEGIN WORK"; $EXECUTE IMMEDIATE "CREATE TEMP TABLE lvo ( id INT ) WITH NO LOG"; P.S. Что-то такое я уже встречал на 9, но там create temp table проходил, а валилось на следующей команде - create index на эту таблицу - правда не помню точно с какой ошибкой, non-exclusive access, по-моему. Но зато хорошо помню, что проблему обещали устранить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2008, 17:35 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Считаю , что TEMP TABLE принадлежит сессии, а не транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2008, 19:01 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Leonid VorontsovПриветствую. Ещё вот такая проблемка... Нижеприведённый фрагмент нормально работает на 7, но на 10 в последней строке выдаёт ошибку -958. Кто как считает, в которой версии баг, а которая работает правильно? $EXECUTE IMMEDIATE "BEGIN WORK"; $EXECUTE IMMEDIATE "CREATE TEMP TABLE lvo ( i INT, f char( 16 ) ) WITH NO LOG"; $EXECUTE IMMEDIATE "INSERT INTO lvo VALUES ( 1, 'A' )"; $DECLARE sel CURSOR WITH HOLD FOR SELECT f INTO :f FROM lvo; $OPEN sel; $FETCH sel; $EXECUTE IMMEDIATE "ROLLBACK"; $EXECUTE IMMEDIATE "BEGIN WORK"; $EXECUTE IMMEDIATE "CREATE TEMP TABLE lvo ( id INT ) WITH NO LOG"; P.S. Что-то такое я уже встречал на 9, но там create temp table проходил, а валилось на следующей команде - create index на эту таблицу - правда не помню точно с какой ошибкой, non-exclusive access, по-моему. Но зато хорошо помню, что проблему обещали устранить... а помоему ИМХО тут все соответствует описанию ошибки finderr 958 This statement tries to create a table with the name that is shown, but a temporary table with that name already exists. Only one temporary table with a given name can exist in a session . Вы хотите чтобы таблица существовала на протяжении транзакции и по комиту (откату) удалялась? Мне кажется так нельзя, во всяком случае я нигде в документации по Informix невидел описания временных таблиц живущих только на протяжении транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2008, 19:06 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
> TEMP TABLE принадлежит сессии, а не транзакции "Как прикажешь тебя понимать, Саид?" (c) > Only one temporary table with a given name can exist in a session. Ребята, там же rollback! Попробуйте сами открыть транзакцию, создать temp таблицу, а потом отрулить её – что получилось? Правильно! – Создание таблицы отрулилось. Попробуйте теперь сделать select или drop – получите SQL:-206, ISAM:-111. Не так? > Вы хотите чтобы таблица существовала на протяжении транзакции и по комиту (откату) > удалялась? "М-м... Не угадываете." (c) Я хочу, чтобы по коммиту создание таблицы подтверждалось, а по откату – откатывалось. Только и всего. Более того, проблема проявляется только если курсор объявляется with hold. По-моему, это всё-таки баг... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 12:37 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Предлагается перед ROLLBACK поставить CLOSE sel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:15 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Leonid Vorontsov> Я хочу, чтобы по коммиту создание таблицы подтверждалось, а по откату – откатывалось. Только и всего. Более того, проблема проявляется только если курсор объявляется with hold. По-моему, это всё-таки баг... А если временную таблицу сделать логируемой ? Может тогда она откатится полностью, вместе с созданием ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2008, 13:37 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Именно. Таблица не откатывается по причине "WITH NO LOG". Кстати, очень удобно для некоторых случаев. И именно так работало и на 7-ке. У меня есть один код, который еще с 7.24 версии работает. Создается темп табличка с WITH NO LOG, в которой ведется протокол работы. В случае любых проблем срабатывает ROLLBACK и протокол из временной таблички переносится в постоянный. Код пережил кучу апгрейдов сервера, сейчас работает на 10-ке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:22 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
> Предлагается перед ROLLBACK поставить CLOSE sel. Да, так работает. > А если временную таблицу сделать логируемой ? Да, и так тоже работает. Именно поэтому я и утверждаю, что это баг. Господа, вы поймите меня правильно, проблема не в том, как обойти – как раз это я могу сделать и сам. Проблема в том, что вот уже около 10 лет эксплуатируется система, состоящая из порядка 600000 строк исходного кода, и чтобы найти и подправить все места где используется подобный приём, нужно либо просмотреть глазами все эти исходники, либо перетестировать всю функциональность... > Таблица не откатывается по причине "WITH NO LOG". "Вы всё неправильно понимаете." (c) Не откатываются изменения данных – тут я согласен, очень удобно для протоколирования (но таблица должна быть создана до транзакции). Но само создание таблицы должно откатиться! Что, в общем-то, и происходит – удалить таблицу нельзя, её нет. Но как-то не до конца, что-то у него там не очищается из-за hold курсора... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 12:40 |
|
||
|
Ещё о различиях 7->10
|
|||
|---|---|---|---|
|
#18+
Leonid Vorontsov> Предлагается перед ROLLBACK поставить CLOSE sel. Да, так работает.... Насколько я понимаю, так и надо было делать с самого начала, а не надеятся, что система во время отката все сделает сама и корректно. Если это не сделали ранее, значит надо сделать теперь, при миграции. Leonid VorontsovПроблема в том, что вот уже около 10 лет эксплуатируется система, состоящая из порядка 600000 строк исходного кода, и чтобы найти и подправить все места где используется подобный приём, нужно либо просмотреть глазами все эти исходники, либо перетестировать всю функциональность... Именно "перетестировать всю функциональность" и не верить сказкам маркетологов, что переход сложной системы на более высокую версию будет мгновенным. Нам везло (или системы писались достаточно корректно с использованием серверов приложений) и переводы нескольких систем с 7.31 на 9.30 и одной с 9.30 на 10.0 происходили практически безболезненно, но проверять приходилось почти все. Во втором случае было откорректировано всего пару запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 13:40 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=44&tid=1608187]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 349ms |

| 0 / 0 |
