Re: Как правильно ограничивать глубину в CTE

2007-06-05 Пенетрантность sasha
Тебе сказать сколько раз этот трактор похерил CTE ? :) Индексы + представления тоже его рук дело? Интересно просто :-)

Re: Как правильно ограничивать глубину в CTE

2007-06-05 Пенетрантность Vlad Horsun
sasha ... Тебе сказать сколько раз этот трактор похерил CTE ? :) Индексы + представления тоже его рук дело? Это ты о чём ? Интересно просто :-) Читай коммиты, сопоставляй ;) -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-06-05 Пенетрантность sasha
Это ты о чём ? Да я там багрепорт оформил - в запросах с представлениями совсем не используются индексы. И к стати такие чудеса. Я там видать вместо английского це поставил русскую с. Ну и теперь какая-то фигня твориться. Если в трекере смотреть, то заместо русской буквы вопрос. А в

Re: Как правильно ограничивать глубину в CTE

2007-06-05 Пенетрантность Alexandr Kochmin
s Баги на багтрекер куда слать? :-))) s ты эта, смотри не убей трекер. Он тока нормально стал работать, без зависаний. -- С уважением Кочмин Александр Firebird Foundation associate member #257

Re: Как правильно ограничивать глубину в CTE

2007-06-05 Пенетрантность Vlad Horsun
sasha ... Это ты о чём ? Да я там багрепорт оформил - в запросах с представлениями совсем не используются индексы. И к стати такие чудеса. Я там видать вместо английского це поставил русскую с. Ну и теперь какая-то фигня твориться. Если в трекере смотреть, то заместо русской буквы

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Tonal
Tonal пишет: sasha пишет: а если через get_context, set_context? А как это может помочь? WITH RECURSIVE TR AS ( SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL and RDB$SET_CONTEXT('USER_TRANSACTION', 'Level', 0); UNION ALL SELECT T.*, TR.LEV + 1 AS LEV FROM Tree T, TR WHERE

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Tonal
Horsun Vlad пишет: Во-вторых, это закладывается на порядок вычисления условий Дык вычисления булевых выражений вродь сокращенные. Причём тут это ? Или в данном случае на порядок это не влияет? Есть большая разница в данном случае между AND RDB$SET_CONTEXT('USER_TRANSACTION',

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Horsun Vlad
Tonal ... Horsun Vlad пишет: Во-вторых, это закладывается на порядок вычисления условий Дык вычисления булевых выражений вродь сокращенные. Причём тут это ? Или в данном случае на порядок это не влияет? Есть большая разница в данном случае между AND

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Boulitchev Aleksey
Не вполне ясно вот что: действительно ли в булевских выражениях порядок вычисления не определён? Т.е. если у меня условие: where DOC_ID is not null and MY_COOL_UDF(DOC_ID) то MY_COOL_UDF(DOC_ID) может вызваться для аргумента null? а почему нет? особенно если оптимизатор решит что так

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Horsun Vlad
Tonal ... Ошибся чуток: Да не, не чуток :) Во-первых, вот так : WITH RECURSIVE TR AS ( SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL AND RDB$SET_CONTEXT('USER_TRANSACTION', 'Level', 0) = 0 UNION ALL SELECT T.*, TR.LEV + 1 AS LEV FROM Tree T, TR WHERE

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность sasha
Адназначна ;) Это уже рюшечки, есть и более важные дела А на Адриано нельзя повесить никак? Всё равно он пашет как трактор :-))) У меня такое впечатление что ему всё равно что делать и сколько. ;-)

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Tonal
sasha пишет: Даты не понял ничего. Надо чтобы количество записей, прочитанных сервером, было равно кол-ву записей, возвращённых запросом. А у нас оптимизатор лажается на запросах типа WHERE 1 = 0 и перелопачивает всю таблицу. Поэтому для всех максимальных уровней сервер будет перелопачивать

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность sasha
Про [MAX LEVEL N] - мне кажеться, лучшей была бы возможность явно указать условие завершения рекурсии. Например: WITH RECURSIVE [ON condition] В твоём случае как раз WITH RECURSIVE ON TR.LEV 5 Так предложи. Там в трекере можно комментарии писать. Правда Влад наверное не обрадуется :-)

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность sasha
Та не, что-то вы путаете. Никакие извращения с контекстами тут не могут помочь в принципе. Они будут делать то же самое что делал запрос без контекстов, т.е. перебирать на листовых элементах все подэлемнты. Запусти что-то типа SELECT * FROM TABLE WHERE 0 = 1 и посмотри статистику - всю твою

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Tonal
Horsun Vlad пишет: Во-вторых, это закладывается на порядок вычисления условий Дык вычисления булевых выражений вродь сокращенные. Или в данном случае на порядок это не влияет? В-третьих, это всё равно не позволит избежать чтения записей с уровня 5 Ну дык с 6-го то читать уже не будет?

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Horsun Vlad
sasha ... Про [MAX LEVEL N] - мне кажеться, лучшей была бы возможность явно указать условие завершения рекурсии. Например: WITH RECURSIVE [ON condition] В твоём случае как раз WITH RECURSIVE ON TR.LEV 5 Так предложи. Там в трекере можно комментарии писать. Правда Влад наверное не

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Horsun Vlad
sasha ... Честно говоря меня бы без всяких MAX LEVEL вполне устроило бы если б оптимизатор подправили. Вот это и нужно 'лоббировать' Оно конечно удобннее писать с MAX LEVEL или условием в заголовке CTE, но не более. Именно - не более ;) -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность sasha
Вот это и нужно 'лоббировать' Дак а кто я такой чтоб лоббировать? :-) Я вон Цизару никак не могу доказать что так с дбкеями проблема. До сих пор ему кажеся что там всё в шоколаде...

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность Horsun Vlad
sasha ... Адназначна ;) Это уже рюшечки, есть и более важные дела А на Адриано нельзя повесить никак? Всё равно он пашет как трактор :-))) Тебе сказать сколько раз этот трактор похерил CTE ? :) Или кто 'виноват' в юникодных 'проблемах' ? У меня такое впечатление что ему всё равно

Re: Как правильно ограничивать глубину в CTE

2007-06-01 Пенетрантность sasha
Честно говоря меня бы без всяких MAX LEVEL вполне устроило бы если б оптимизатор подправили. Оно конечно удобннее писать с MAX LEVEL или условием в заголовке CTE, но не более.

Re: Как правильно ограничивать глубину в CTE

2007-05-31 Пенетрантность sasha
а если через get_context, set_context? А как это может помочь?

Re: Как правильно ограничивать глубину в CTE

2007-05-31 Пенетрантность Tonal
sasha пишет: а если через get_context, set_context? А как это может помочь? WITH RECURSIVE TR AS ( SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL and RDB$SET_CONTEXT('USER_TRANSACTION', 'Level', 0); UNION ALL SELECT T.*, TR.LEV + 1 AS LEV FROM Tree T, TR WHERE PARENT_ID =

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность Vlad Horsun
Dmitry Voroshin ... Horsun Vlad ... WITH RECURSIVE [MAX LEVEL N] но баба яга была против А что нам говорит стандарт? Насколько я помню, там такого нет И это был главный аргумент Бабы Яги? Ужо не помню. Но и в трекере ничё не вижу ;) -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность sasha
Но и в трекере ничё не вижу ;) Как-то даже не удобно твои идеи за свои выдавать ;-)

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность Vlad Horsun
sasha ... Но и в трекере ничё не вижу ;) Как-то даже не удобно твои идеи за свои выдавать ;-) Они не мои :) -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность sasha
Они не мои :) Написал. Только не MAX LEVEL, а MAX DEEP - мне так больше нравится ;-)

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность Vlad Horsun
sasha ... Они не мои :) Написал. Только не MAX LEVEL, а MAX DEEP - мне так больше нравится ;-) Нафига нам новое ключевое слово ? -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность sasha
Нафига нам новое ключевое слово ? Я не знал что LEVEL ключевое. Нельзя им просто словом быть? В общем тебе виднее ;-)

Re: Как правильно ограничивать глубину в CTE

2007-05-30 Пенетрантность Dmitry Voroshin
Oleg Deribas [EMAIL PROTECTED] сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED] Hello, Dmitry Voroshin said the following on 30.05.2007 12:02: Что за лажа с кодировкой... Включи запретить использование 8-битных символов в заголовках Счас проверим. Снёс свой финдовый

Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность sasha
Я тут мудрил, химичил, деже небольшой Featuire request в трекер написал, но тем не меннее нормального пути так и не нашёл. Задача простая - ограничить глубину возвращаемого дерева. Если написать так: WITH RECURSIVE TR AS ( SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL UNION

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность Horsun Vlad
sasha ... Я тут мудрил, химичил, деже небольшой Featuire request в трекер написал, но тем не меннее нормального пути так и не нашёл. Задача простая - ограничить глубину возвращаемого дерева. Если написать так: WITH RECURSIVE TR AS ( SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность sasha
WITH RECURSIVE [MAX LEVEL N] но баба яга была против О, так это ж то что надо!!! А кто она, эта Яга? :-)

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность Horsun Vlad
sasha ... WITH RECURSIVE [MAX LEVEL N] но баба яга была против О, так это ж то что надо!!! А кто она, эта Яга? :-) Она в отпуске ;) -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность sasha
Эх, что-то не весело совсем :-(

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность Dmitry Voroshin
Horsun Vlad [EMAIL PROTECTED] сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED] sasha ... WITH RECURSIVE [MAX LEVEL N] но баба яга была против А что нам говорит стандарт?

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность Konstantin R. Beliaev
sasha wrote: Может у кого есть идея как ещё такой CTE написать чтобы быстрее было? А мож в таблицу добавить поле DEEP и на триггерах его заполнять? ну а потом в условие его пихать

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность Horsun Vlad
Dmitry Voroshin ... Horsun Vlad ... sasha ... WITH RECURSIVE [MAX LEVEL N] но баба яга была против А что нам говорит стандарт? Насколько я помню, там такого нет -- Хорсун Влад

Re: Как правильно ограничивать глубину в CTE

2007-05-29 Пенетрантность sasha
А мож в таблицу добавить поле DEEP и на триггерах его заполнять? ну а потом в условие его пихать У нас такое не прокатит.