|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов ДенисНе совсем так. 1 диалект. В общем-то конечно не совсем тот же, но и не всегда BIGINT.Тогда лучше по диалектам отдельно расписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2015, 22:47 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоид, там не в диалекте дело. Если в 3 диалекте тип FLOAT будешь суммировать получится DOUBLE. Вот в 3 ем диалекте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2015, 22:55 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоид, добавил всё кроме агрегатов в оконных функциях. Во первых там не самое удачное место ибо описываются именно агрегатные функции, предложение окна там добавлено только потому что оно может использоваться. Во вторых надо дополнительно исследовать этот вопрос. Я ещё посмотрю что у других СУБД по этому поводу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 00:18 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
В раздел "Операторы управления пользователями" неплохо бы добавить, что: 1) усеров теперь можно вводить с non-ascii символами. Однако из-за вот этого: Код: plaintext 1. 2.
Для кириллицы отводится два байта на символ, поэтому вот этот вариант: Код: plaintext
Код: plaintext 1. 2. 3. 4.
2) непривилегированный усер может поменять свой пароль и атрибуты (firstname, lastname + теги): Код: plaintext 1. 2.
Но он не может сделать себя inactive или грохнуть - получит "no permission for <...> access to TABLE <...>". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 08:08 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
pg 230Замечание о равенстве Оператор "=", который явно используется во многих условиях соединении и неявно в соединениях именованными столбцами и естественных соединениях, только при сравнении значений со значениями. В соответствии со стандартом SQL, NULL не является значением и, следовательно, два значения NULL не равны и ни неравны друг с другом.В выделенном тексте пропущено какое-то слово. Может, имелось в виду это: "Оператор "=", который <...>, ДАЁТ ОЖИДАЕМЫЙ РЕЗУЛЬТАТ только при сравнении значений со значениями (а не с NULL)" - ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 08:48 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Не вижу в доке замечания о том, что в 3.0 запрещено юзать смешанные джойны. Об этом говорится в RN ("Prohibit Edgy Mixing of Implicit/Explicit Joins"), также см. CORE-2812 Ну, и пример для "забавы мозга" можно привести: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 08:59 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов Денисдобавил всё кроме агрегатов в оконных функциях.Про rank(), pg. 424, - что там, будешь исправлять фразу про его вычисление или так оставишь ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 09:16 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
ТаблоидСимонов Денисдобавил всё кроме агрегатов в оконных функциях.Про rank(), pg. 424, - что там, будешь исправлять фразу про его вычисление или так оставишь ? посмотрю ещё вечерком сегодня. Это из Release Notes вроде фраза. Надо бы посмотреть как оно описано в других СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 09:55 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоидpg 230Замечание о равенстве Оператор "=", который явно используется во многих условиях соединении и неявно в соединениях именованными столбцами и естественных соединениях, только при сравнении значений со значениями. В соответствии со стандартом SQL, NULL не является значением и, следовательно, два значения NULL не равны и ни неравны друг с другом.В выделенном тексте пропущено какое-то слово. Может, имелось в виду это: "Оператор "=", который <...>, ДАЁТ ОЖИДАЕМЫЙ РЕЗУЛЬТАТ только при сравнении значений со значениями (а не с NULL)" - ? это кривоватый перевод того что Paul писал. Посмотрю сегодня ещё раз как там в оригинале написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 09:56 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоид, про смешения джойнов я в обзоре фич FB3 писал. Там причём не все смешанные виды джойнов запрещены, а только самые кривые. Но лучше считать что все. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 10:07 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
ТаблоидВ раздел "Операторы управления пользователями" неплохо бы добавить, что: 1) усеров теперь можно вводить с non-ascii символами. Однако из-за вот этого: Код: plaintext 1. 2.
Для кириллицы отводится два байта на символ, поэтому вот этот вариант: Код: plaintext
эта байда не только для имён пользователей, но и для всех объектов метаданных. В тройке здесь вряд ли что-то правится будет. Может быть в 4ке перейдут на внутреннюю кодировку UTF-8 и увеличат максимальный размер идентификаторов. Таблоид2) непривилегированный усер может поменять свой пароль и атрибуты (firstname, lastname + теги): Но он не может сделать себя inactive или грохнуть - получит "no permission for <...> access to TABLE <...>". ну про грохнуть это в операторе DROP USER написано. Про INACTIVE добавлю ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 11:26 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
pg 310BEGIN ... END . . . Блоки могут быть вложенными, глубина вложения не ограничена.я бы не был столь категоричен :-) Хотя пример ниже - чистой воды издевательство и за гранью добра и зла, но таки вот: 1) батник, который генерит .sql-скрипт с begin-end блоками необходимого уровня вложенности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
При запуске его без параметров будет создан код в три уровня вложенности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
2) генерим теперь мега-монстра, задавая аргумент = 32000 (да, 32 тысячи уровней :)). Это будет файлик размером 2 Мб - см аттач. 3) запускаем на пустой базе: isql /3333:e30 -i nested_blocks.tmp Можно перед "3)" открыть соседнее окошко, чтобы глядеть, как будет меняться значение генератора по мере выполнения блока "в глубину". Только... никак оно не будут меняться! Примерно 30-40 сек значение по show sequ так и будет торчать в нуле, а затем команда 'show sequ' вообще перестанет что-либо выдавать - и наступит глухой висяк. Более того, с этого момента станет невозможным: 1) подключение к этой базе; 2) подключение или создание вообще любой другой базы по удаленному протоколу для данного инстанса ФБ (!) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:10 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоидчистой воды издевательство и за гранью добра и злаps. а еще и службу ФБ при этом не остановить, только килянием в PE... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:12 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
очередной вариант на тему "уложу сервер одним запросом"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:17 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоид, >BEGIN..END ты правда считаешь что такую ересь надо документировать? "Не ограничено" это в разумных пределах. Никто такую процедуру написать руками не сможет и да поддерживать её не реально. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:17 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
мало ему того, что разработчикам мозг выносит, так теперь и до парсера очередь дошла. снимите шляпы! обнажите головы! сейчас состоится вынос тела моцга! (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:21 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Если количество вложенных BEGIN..END превышает 10 уже стоит задуматься над сменой консерватории. Ну разбить процедуру на несколько, или может логические условия по возможности объединить. Теперь про скрипт создающий мегапроцедуры. Когда такое видишь уже начинаешь жалеть о том что лимит на текст запроса в 64K сняли. Хотя для пакетов это было необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:26 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Если бы "оно" в ответ на 32к уровней вывалилось с ошибкой, или с багчеком или вообще ФБ бы грохнулся, то я бы тихо промолчал :) Но тут - висяк, причём конкретный такой: ни к одной из баз подключиться больше не могу. При том, что проц не загружен, вообще. Такие вот делы... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:40 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоид, это не к доке вопросы. Пиши трекеру. Для execute block это может быть критично, для объектов метаданных нет, потому как создать объекты метаданных в FB3 может только SYSDBA, владелец базы, пользователь с ролью RDB$ADMIN и кому те выданы права grant create ... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 14:13 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов Денисэто не к доке вопросы. Пиши трекеру.Трекер я успею посетить, но к доке таки просьба есть: убери оттуда слова "глубина неограниченна". На вышеприведенном батнике у мну получается, что её лимит ~12240 уровня для 32 битного ФБ на винде, и вроде как свыше 15000 для 64-битного linux-инстанса. После незначительного превышения числа уровней (не до 32 к, конечно): 1) на винде лезет спасительное: Statement failed, SQLSTATE = HY001 Stack overflow. The resource requirements of the runtime stack have exceeded the memory available to it. ("спасительное" - потому что это гораздо лучше, чем глухой висяк!) 2) на линухе - печалька про "error reading data from connection". При этом создался коредамп размером 170 Мб, а каким будет размер у бактрассы - хз, до сих пор формируется, уже больше 350 Мб :) Так что пропиши, плз, что дескать "уровней может быть достаточно много, но не следует превышать их число разумным пределом (10-15)". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 14:47 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов ДенисПиши трекеру. Сбацал... Теперь побьют, наверное... С вердиктом "Won't fix" ... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 15:47 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоид Код: plaintext
Код: plaintext 1. 2. 3. 4.
Кто бы Trusted Auth потестировал, на предмет адекватности работы с длинными именами win-пользователей, типа "Фамилия Имя Отчество". Возможно там всё плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 16:17 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
pp 311-312IF ... THEN ... ELSE . . . IF (<condition>) THEN <compound_statement> [ELSE <compound_statement> . . . сompound_statement Оператор или блок операторовПосле выделенного слова предлагаю добавить: "(для ELSE - можно указать следующий IF)", т.е. я вот про это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 16:25 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
Таблоидpp 311-312IF ... THEN ... ELSE . . . IF (<condition>) THEN <compound_statement> [ELSE <compound_statement> . . . сompound_statement Оператор или блок операторовПосле выделенного слова предлагаю добавить: "(для ELSE - можно указать следующий IF)", т.е. я вот про это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
следующий IF как раз и является оператором. Не вижу противоречий ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 17:41 |
|
ANN Руководство по языку SQL СУБД Firebird 3.0
|
|||
---|---|---|---|
#18+
просто мысльКто бы Trusted Auth потестировал, на предмет адекватности работы с длинными именами win-пользователей, типа "Фамилия Имя Отчество". Возможно там всё плохо.У меня получился взлёт TrustedAuth только при выполнении следующих условий: 1) коннект идёт к localhost, а не к другому хосту. При попытке коннекта не к localhost - "your user name / password траляля, идите к вашему сисдбаю" и 2) имя OS-усера записано только в ascii-символах. Если оно есть "ВасисуалийПупка", то выдать его в isql'е не получится - malformed string (при том, что предварительно в консоли делаю chcp 1251 и коннект идёт с -ch win1251). Короче, кому интересно - трахайтесь сами с этим trusted auth, "изабэлло" гарантированно ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 18:10 |
|
|
start [/forum/topic.php?fid=40&msg=39014414&tid=1559924]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 296ms |
0 / 0 |