Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по логике конструкции FOR SELECT / 20 сообщений из 20, страница 1 из 1
23.04.2014, 16:50:29
    #38623409
Interloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
Добрый день. Предположим, в теле цикла FOR SELECT могут создаваться записи, которые по смыслу попадают в выборку, задаваемую селектом в голове цикла. Вопрос: будут ли они включаться в цикл? Где в официальной документации можно прочитать про логику в таком случае?
...
Рейтинг: 0 / 0
23.04.2014, 16:51:52
    #38623414
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
...
Рейтинг: 0 / 0
23.04.2014, 16:55:07
    #38623422
Interloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
Допустим, уровень изоляции транзакций - Read Committed.
...
Рейтинг: 0 / 0
23.04.2014, 16:57:28
    #38623426
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
хинт для поиска "стабильный курсор" или его англоязычный аналог

обычно хинтом служит "ордер бай" натуралом
...
Рейтинг: 0 / 0
23.04.2014, 17:00:27
    #38623432
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
InterloperДопустим, уровень изоляции транзакций - Read Committed.
Тогда без разницы, что там появилось. Все таки рекомендуется тот сайт посещать чуть чаще, чем получив ссылку здесь.
...
Рейтинг: 0 / 0
23.04.2014, 17:02:04
    #38623436
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
wadmanInterloperДопустим, уровень изоляции транзакций - Read Committed.
Тогда без разницы, что там появилось. Все таки рекомендуется тот сайт посещать чуть чаще, чем получив ссылку здесь.
и почему мне кажется что уровень изоляции транзакции здесь не причем????
...
Рейтинг: 0 / 0
23.04.2014, 17:02:06
    #38623437
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
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
23.04.2014, 17:03:04
    #38623440
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
m7mwadmanпропущено...

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

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

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

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

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

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

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

Я работаю с 1.5
...
Рейтинг: 0 / 0
23.04.2014, 18:08:09
    #38623554
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
Симонов Денисв тройке и без 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
23.04.2014, 18:14:28
    #38623562
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
Таблоид- выдаёт около 87 тыс строк, причём при каждом новом запуске оно... разное! :-) PS. LI-T6.3.0.31071
не ушло в бесконечный цикл, и то уже хорошо
...
Рейтинг: 0 / 0
23.04.2014, 18:27:59
    #38623579
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
ТаблоидС саспендом вообще веселуха (да, я знаю, что он "недоделан", просто для
примера).
Он не "недоделан". В движке наоборот накручен довольно интересный код чтобы он работал
именно так как работает. И я не уверен, что имеет смысл делать как-то иначе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.04.2014, 18:32:35
    #38623584
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
Dimitry SibiryakovТаблоидС саспендом вообще веселуха (да, я знаю, что он "недоделан", просто для примера).Он не "недоделан". В движке наоборот накручен довольно интересный код чтобы он работал именно так как работает. И я не уверен, что имеет смысл делать как-то иначе.Мой ЦПУ отказывается понимать, почему на стабильность курсора так влияет именно suspend, а не что либо иное. Ну, передали кортеж клиенту и застыли в ожидании от него команды "давай еще" - и как это влиять может на "видимость / невидимость" ?
...
Рейтинг: 0 / 0
23.04.2014, 18:42:44
    #38623593
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
ТаблоидНу, передали кортеж клиенту и застыли в ожидании от него команды "давай еще"
- и как это влиять может на "видимость / невидимость" ?
suspend это не возврат из процедуры получения записи, это рекурсивный вызов кода внешнего
уровня вложенности. Этакая бутылка Клейна в действии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2014, 09:05:07
    #38623962
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
InterloperПочему, если в селекте задана сортировка, новые записи не будут подхватываться, а если не задана - будут?А подумать?
для сортировки натуралом сервер фетчит весь разалтсет в файл сортировки и потом отдает оттуда (а не набирая из исходных таблиц) данные в упорядоченном виде. Как-то так оно работает до тройки, в т.ч. и в полуторке.
...
Рейтинг: 0 / 0
24.04.2014, 09:31:24
    #38624001
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по логике конструкции FOR SELECT
Таблоид,

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


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