powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по логике конструкции FOR SELECT
20 сообщений из 20, страница 1 из 1
Вопрос по логике конструкции FOR SELECT
    #38623409
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Предположим, в теле цикла FOR SELECT могут создаваться записи, которые по смыслу попадают в выборку, задаваемую селектом в голове цикла. Вопрос: будут ли они включаться в цикл? Где в официальной документации можно прочитать про логику в таком случае?
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623414
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623422
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим, уровень изоляции транзакций - Read Committed.
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623426
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хинт для поиска "стабильный курсор" или его англоязычный аналог

обычно хинтом служит "ордер бай" натуралом
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623432
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperДопустим, уровень изоляции транзакций - Read Committed.
Тогда без разницы, что там появилось. Все таки рекомендуется тот сайт посещать чуть чаще, чем получив ссылку здесь.
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623436
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanInterloperДопустим, уровень изоляции транзакций - Read Committed.
Тогда без разницы, что там появилось. Все таки рекомендуется тот сайт посещать чуть чаще, чем получив ссылку здесь.
и почему мне кажется что уровень изоляции транзакции здесь не причем????
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623437
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperДобрый день. Предположим, в теле цикла FOR SELECT могут создаваться записи, которые по смыслу попадают в выборку, задаваемую селектом в голове цикла. Вопрос: будут ли они включаться в цикл? Где в официальной документации можно прочитать про логику в таком случае?
http://tracker.firebirdsql.org/browse/CORE-3362

И там же:
CORE-2799 Changing sort directon in delete statement cause deletion of all records in table
CORE-634 Bad treatment of FIRST/SKIP in subselect
CORE-92 infinite insertion cycle
CORE-3317 Success of deleting rows depending on order

А самое лучшее - сделайте эксперимент самостоятельно.
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623440
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mwadmanпропущено...

Тогда без разницы, что там появилось. Все таки рекомендуется тот сайт посещать чуть чаще, чем получив ссылку здесь.
и почему мне кажется что уровень изоляции транзакции здесь не причем????
Упс... Упустил из виду, что в теле создаются. :)
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623447
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyхинт для поиска "стабильный курсор" или его англоязычный аналог

обычно хинтом служит "ордер бай" натуралом

Почему, если в селекте задана сортировка, новые записи не будут подхватываться, а если не задана - будут?
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623452
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,
провел эксперимент. Если нет сортировки, новые записи попадают в цикл, если есть - не попадают.
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623457
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperIvan_Pisarevskyхинт для поиска "стабильный курсор" или его англоязычный аналог

обычно хинтом служит "ордер бай" натуралом

Почему, если в селекте задана сортировка, новые записи не будут подхватываться, а если не задана - будут?

Насколько я понимаю:
При сортировке создаётся "временный файл" (если конечно в плане запроса стоит SORT) - и здесь результат вполне предсказуем
Если в плане запроса нет SORT то на самом деле результат непредсказуемый, что-то может подхватиться а что-то не подхватится
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623471
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

в тройке и без SORT не будут, но это если внутри FOR не делать SUSPEND. Правда она пока не зарелизена
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623522
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Я работаю с 1.5
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623554
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв тройке и без SORT не будут, но это если внутри FOR не делать SUSPEND. Правда она пока не зарелизенаС саспендом вообще веселуха (да, я знаю, что он "недоделан", просто для примера).
DDL:
Код: plaintext
1.
2.
3.
4.
recreate table t(x int);
create index t_x on t(x);
commit;
insert into t values(1);
commit;

Test:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
execute block returns (x int) as
begin
  for select x from t into x do
  begin
    insert into t values(2);
    suspend;
  end
end

- выдаёт около 87 тыс строк, причём при каждом новом запуске оно... разное! :-)

PS. LI-T6.3.0.31071
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623562
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид- выдаёт около 87 тыс строк, причём при каждом новом запуске оно... разное! :-) PS. LI-T6.3.0.31071
не ушло в бесконечный цикл, и то уже хорошо
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623579
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидС саспендом вообще веселуха (да, я знаю, что он "недоделан", просто для
примера).
Он не "недоделан". В движке наоборот накручен довольно интересный код чтобы он работал
именно так как работает. И я не уверен, что имеет смысл делать как-то иначе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623584
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидС саспендом вообще веселуха (да, я знаю, что он "недоделан", просто для примера).Он не "недоделан". В движке наоборот накручен довольно интересный код чтобы он работал именно так как работает. И я не уверен, что имеет смысл делать как-то иначе.Мой ЦПУ отказывается понимать, почему на стабильность курсора так влияет именно suspend, а не что либо иное. Ну, передали кортеж клиенту и застыли в ожидании от него команды "давай еще" - и как это влиять может на "видимость / невидимость" ?
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623593
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНу, передали кортеж клиенту и застыли в ожидании от него команды "давай еще"
- и как это влиять может на "видимость / невидимость" ?
suspend это не возврат из процедуры получения записи, это рекурсивный вызов кода внешнего
уровня вложенности. Этакая бутылка Клейна в действии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38623962
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperПочему, если в селекте задана сортировка, новые записи не будут подхватываться, а если не задана - будут?А подумать?
для сортировки натуралом сервер фетчит весь разалтсет в файл сортировки и потом отдает оттуда (а не набирая из исходных таблиц) данные в упорядоченном виде. Как-то так оно работает до тройки, в т.ч. и в полуторке.
...
Рейтинг: 0 / 0
Вопрос по логике конструкции FOR SELECT
    #38624001
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

потому что стабильность курсора в тройке обеспечена за счёт отката до промежуточных точек сохранения (SAVEPOINT), а SUSPEND разрывает этот SAVEPOINT.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по логике конструкции FOR SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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