powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / глюки с временными таблицами
21 сообщений из 21, страница 1 из 1
глюки с временными таблицами
    #39650364
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
глюки с временными таблицами
хотел было использовать новый синтаксис с курсорами, но не тут то было (Firebird 3.0.3)
вот набросал небольшой пример.
как вы думаете каков результат?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create procedure test
returns (id integer)
as
declare gtt_cursor cursor for (select id from gtt_table);
begin
  /*create global temporary table gtt_table(id integer) on commit preserve rows*/
  delete from gtt_table;
  insert into gtt_table(id) values(1);
  insert into gtt_table(id) values(2);

  open gtt_cursor;
  while (true) do
  begin
    fetch gtt_cursor into :id;
    if (row_count = 0) then
      leave;
    suspend;
  end
  close gtt_cursor;

  for select id from gtt_table into :id do suspend;
end
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650366
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeone,

главное неявные курсоры работают стабильно и предсказуемое. А вот явные там какая-то случайная хрень.
Жди пока Влад придёт, ну или сразу пиши в трекер
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650376
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём собсно суть бага?
С GTT не работает или с
курсорами 0 возвращает?

P.S. Должно быть 4 записи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650379
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

там

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  open gtt_cursor;
  while (true) do
  begin
    fetch gtt_cursor into :id;
    if (row_count = 0) then
      leave;
    suspend;
  end
  close gtt_cursor;



случайную белиберду выдаёт. То 1, то 2, а то и 3 записи
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650380
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если GTT заменить на обычную - корректно работает ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650383
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

нет. Походу опять стабильность курсора. Надо бы на снапшоте попробовать, Влад что-то там правил
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650384
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отбой. В снапшотах 3.0.4.32980 исправлено.
Походу вот это было http://tracker.firebirdsql.org/browse/CORE-5773
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650450
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что интересно, если удалить последнюю строчку в процедуре, то ничего не выдает
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650452
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeoneесли удалить последнюю строчку в процедуре, то ничего не выдает

Всё правильно. Стабильность курсора базируется на относительном счёте сейфпоинтов (минус
один от текущего, минус два от текущего и т.д.). Поэтому она глючит на запросах, которые
не создают нового сейфпоинта. Как Влад выкрутился - понятия не имею. Может, перевёл на
абсолютный счёт по номерам, может ещё что выдумал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650458
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeone,

когда я проводил эксперимент без последней строчки на 3.0.3 у меня каждый раз разное количество строк было от 1 до 3.
В снапшотах вроде всё правильно работает
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39650460
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денису меня каждый раз разное количество строк было от 1 до 3.

Это из-за delete в начале.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715741
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вышел Firebird 3.0.4, всех поздравляю!
Правда проблема с курсором обозначенная как http://tracker.firebirdsql.org/browse/CORE-5773
так и осталась, к сожалению.
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715761
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeoneПравда проблема с курсором обозначенная как http://tracker.firebirdsql.org/browse/CORE-5773
так и осталась, к сожалению.Да ну
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715767
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeone,

что не так? Твой пример работает как ожидается в 3.0.4
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715958
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ожидается:
1
2
выдает:
<null>

Даже IBExpert со мной согласен, при отладке ожидает увидеть:
1
2

:)
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715961
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это без последней строчки, конечно, забыл сказать
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715963
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create procedure test
returns (id integer)
as
declare gtt_cursor cursor for (select id from gtt_table);
begin
  /*create global temporary table gtt_table(id integer) on commit preserve rows*/
  delete from gtt_table;
  insert into gtt_table(id) values(1);
  insert into gtt_table(id) values(2);

  open gtt_cursor;
  while (true) do
  begin
    fetch gtt_cursor into :id;
    if (row_count = 0) then
      leave;
    suspend;
  end
  close gtt_cursor;

  -- for select id from gtt_table into :id do suspend;
end
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715964
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот 21442644 пример выдаёт 4 записи
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715970
someonesomeone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тысяча извинений, не на том сервере проверял, респект разработчикам!
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715972
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeone,

и вот что самое забавное 21701259 выдаёт 2 записи 1 и 2
...
Рейтинг: 0 / 0
глюки с временными таблицами
    #39715974
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
someonesomeone,

бывает
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / глюки с временными таблицами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]