|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
-> Т.е. оно так не потому что так типа правильно А как правильно и где это написано? > то мы бы получали то что ожидаем. Так ожидалку нужно починить, делов-то. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 16:33 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Ваня Сусанинчто они перевычисляются при каждом упоминании откуда это понеслось, что "они" не должны перевычисляться при каждом упоминании? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 16:40 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
kdv"они" не должны перевычисляться пофиг на перевычисление, это действительно особенность реализации. А вот неожиданный порядок сортировки в выводе результата очень даже можно посчитать багом. Ибо запрос не делает то, о чем его явно попросили. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 16:46 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам-> Т.е. оно так не потому что так типа правильно А как правильно и где это написано? > то мы бы получали то что ожидаем. Так ожидалку нужно починить, делов-то. dimitrkdv"они" не должны перевычисляться пофиг на перевычисление, это действительно особенность реализации. А вот неожиданный порядок сортировки в выводе результата очень даже можно посчитать багом. Ибо запрос не делает то, о чем его явно попросили. Гаджимурадов Рустам, истина вопиёт :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:00 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Ваня Сусанин, есть это там ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:27 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
-> истина вопиёт :) Кто вопиёт, где вопиёт, какая истина? :) Если истина это ДЕ, то "перевычисление, это особенность реализации". Если про сортировку (не по перевычислению), которая не работает - баг, конечно, хотя я не знаю о каком посте он говорит. Если же "не работает" сортировка по перевычислению - то лично я бы не согласился с ним, что это баг. Более того, лет эдак несколько назад он сам с собой тоже был несогласен, IIRC. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:28 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов ДенисВаня Сусанин, есть это тамКак-то не очень сильно бросилось в глаза - см аттач. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:33 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов Денисэто тебе так кажется Сам вижу) Симонов Денисgen_uuid() не детерминирована. Симонов ДенисВычисляемый столбец здесь по сути это ссылка на его выражение не более того. Избежать этого можно только для детерминированных функций. Проверил тезис про детерминированность. Взял пример функции из новой документации и просто подставил его вместо gen_uuid() в запрос. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
fn_t() отработал при каждом появлении f в запросе. Так что в данном случае дело не в детерминированности, а в "особенностях реализации" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:34 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Ваня Сусанин, не там ищешь. См. в CREATE FUNCTION заметку про DETERMINISTIC ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:39 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов Денис, Там не сказано, что из себя представляют, в плане детерминированности, существующие встроенные функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:47 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЕсли же "не работает" сортировка по перевычислению - то лично я бы не согласился с ним, что это баг. Более того, лет эдак несколько назад он сам с собой тоже был несогласен, IIRC. :) ну, это не ужас-ужас, конечно. Примерно на том же уровне безобразия, что и пресловутый "стабильный курсор". То, что 30 лет назад было "as designed", сейчас уже несколько по-другому выглядит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 17:49 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов Денисне там ищешь. См. в CREATE FUNCTION заметку про DETERMINISTICИз вот этого текста:Необязательное предложение DETERMINISTIC указывает, что функция детерминированная. Детерминированные функции каждый раз возвращают один и тот же результат <. . .> Примечание На самом деле в текущей версии Firebird, не существует кэша хранимых функций с маппингом входных аргументов на выходные значения. Указание инструкции "deterministic" на самом деле нечто вроде «обещания», что код функции будет возвращать одно и то же. В данный момент детерминистическая функция считается инвариантом и работает по тем же принципам, что и другие инварианты. Т.е. вычисляется и кэшируется на уровне текущего выполнения данного запроса.-- логически не получается вывести то поведение rand() & gen_uuid(), о котором говорится в данном топеге. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 18:12 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
dimitr> ну, это не ужас-ужас, конечно. Примерно на том же уровне безобразия Так ты определись ужо, это баг или нет. Баг - это однозначная ошибка, когда поведение отличается от документированного. > что и пресловутый "стабильный курсор" Угу. Вы вроде его "пофиксили" "изменили" в тройке - примерно по той же логике, с чем я и не согласен. Но спорить не буду, вам там виднее. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 20:20 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, если нарушаются декларативные правила языка, то это однозначный баг. Какие бы аргументы мы себе не придумывали на этот счет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 20:43 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Ваня Сусанин, мало ли недетерминированных функций можно придумать. Не ужели под каждую примечание нужно писать? Проще уж в одном месте описать. Если не согласен как в этом месте описано предложи как лучше. Всем. Все встроенные функции ничего о своей детерминированности не знают. Это чисто подсказка для PSQL функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2015, 22:54 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
dimitr> если нарушаются декларативные правила языка, то это однозначный баг. Это ты про select rand() order by rand() ? Ну хозяин барин, чё, не смею спорить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 00:17 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, в это виде однозначно ничего не нарушается. А вот так Код: sql 1.
уже спорный вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 00:24 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов Денисмало ли недетерминированных функций можно придумать. Не ужели под каждую примечание нужно писать? Можно и в одном абзаце описать, если их поведение однотипно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 10:06 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Энди Таккер, это проще описать в операторе SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 10:34 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамdimitr> если нарушаются декларативные правила языка, то это однозначный баг. Это ты про select rand() order by rand() ? Ну хозяин барин, чё, не смею спорить. Говорю серверу: дай мне 10 GEN_ID(G,1) и посортируй в обратном порядке: Код: sql 1.
...получаю не в том порядке что просил и с пропуском 10-ти значений, что я тоже не просил. Говорю серверу: дай мне 10 чётных GEN_ID(G,1): Код: sql 1.
...это вообще не компилится. Хоть это и другая тема, но тоже про неочевидные странности. А вот этот запрос что должен вернуть исходя из ваших знаний SQL? Код: sql 1.
Результат начинается не с 1, а с 231, и с инкрементом 3 для похоже всех значений кроме последнего. Для последнего инкремент 2: (..., 900, 903, 906, 909, 911). Итого 4 вызова на запись вместо одного. Инкремент в 3 говорит что внутри движка где-то кроме сортировки (которая дала начало с 231) сработало ещё что-то, что дало ещё +2 лишних GEN_ID(G,1) на каждую запись. GEN_ID(G,1) - вообще удобная штука оказалась чтобы смотреть сколько сейчас лишних вызовов делается, не гадая. CAST наверняка тоже перевычисляется при сортировках и при группировках по полю с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 10:44 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
-Говорю серверу: дай мне 10 GEN_ID(G,1) и посортируй в обратном порядке: Код: sql 1.
...получаю не в том порядке что просил и с пропуском 10-ти значений, что я тоже не просил. С натяжкой можно и багом назвать. Я уже говорил в текущей реализации Код: sql 1.
преобразуется в Код: sql 1.
-Говорю серверу: дай мне 10 чётных GEN_ID(G,1): Код: sql 1.
...это вообще не компилится. Хоть это и другая тема, но тоже про неочевидные странности. А это уже незнание языка SQL. -А вот этот запрос что должен вернуть исходя из ваших знаний SQL?[src sql] select GEN_ID(G, 1) from rdb$types group by 1 этот запрос глуп по определению -GEN_ID(G,1) - вообще удобная штука оказалась чтобы смотреть сколько сейчас лишних вызовов делается, не гадая. это да Таблоид с помощью этого много чего в работе оптимизатора постигает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 10:55 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов Денис-Говорю серверу: дай мне 10 чётных GEN_ID(G,1): Код: sql 1.
...это вообще не компилится. Хоть это и другая тема, но тоже про неочевидные странности. А это уже незнание языка SQL. А как на языке SQL будет "дай 100 GEN_ID(G,1), где значения не кратны 5" ? Хочется написать: Код: sql 1.
но стандарт не велит (хотя возможно у него на это есть причины, я не знаю). Можно EXECUTE BLOCK использовать, и там отфильтровать вручную, но это как-то... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
А если нужен order by desc? Отвлечённый вопрос: как снаружи посортировать результат EXECUTE BLOCK? Или как WHERE к нему приписать? Ну т.е. как это у хранимок происходит я знаю, а вот у анонимных блоков как? Напрашивается: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Но что-то не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 11:58 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
-А как на языке SQL будет "дай 100 GEN_ID(G,1), где значения не кратны 5" ? обычно для этого не надо более 100 раз дёргать генератор. А если нужен order by desc? > Отвлечённый вопрос: как снаружи посортировать результат EXECUTE BLOCK? вот так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
> Или как WHERE к нему приписать? Никак. Если надо вписывай внутрь EB P.S. Вопросы у тебя какие-то дурацкие. К практике отношения не имеют ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 12:17 |
|
СTE. Разъясните результат запроса.
|
|||
---|---|---|---|
#18+
Симонов Денис> в это виде однозначно ничего не нарушается. Симонов Денис> А вот так уже спорный вопрос Я об этом и говорил, это одно и то же. Кому спорный, кому нет - я же говорю ДЕ - хозяин барин, с текущим вектором развития я ничему не удивлюсь. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2015, 22:38 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1562737]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 167ms |
0 / 0 |