Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5 6 7 8 9 10 11      [все]
 ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Выпущена предварительная версия документации по языку SQL СУБД Firebird 3 Beta 2. Самую свежую версию документации можно скачать здесь langref30.

Внимание документация может содержать множество ошибок поскольку официальный Language Reference Update ещё не выпущен.
Замечания и предложения по улучшению приветствуются.
8 май 15, 10:07    [17616521]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
Первый нах!!!!

Руководство по языку SQL СУБД Firebird
Денис Симонов, Пол Винкенуг, Дмитрий Филиппов, Дмитрий Еманов, Томас Воинк, Александр
Карпейкин, Денис Симонов, Александр Карпейкин, Дмитрий Кузьменко, Алексей Ковязин
8 май 15, 10:17    [17616573]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Gallemar,

это проблема со стилями в DocBook. Там по умолчанию авторов и редакторов фигачат в одну строчку. Да и вообще редактор только один. Подумаю как это поправить. Сейчас самое важное замечания по содержимому
8 май 15, 10:22    [17616613]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Денис,

добавь, плз, в файлы по 2.5 и 3.0 в разделы "Соединения именованными столбами" и "Естественные соединения" замечание о том, что они доступны только в третьем диалекте. В первом получаем по лбу:
SQL error code = -901.
feature is not supported in dialect 1.
8 май 15, 14:01    [17617996]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

добавил
8 май 15, 15:10    [17618469]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
И еще одна хотелка: добавль, плз, в доку по 2.5, что результат аггрегатной ф-ции COUNT(*) есть... INT (т.е. максимум для него = 2^32-1!).

Вот проверочка для этого дела:

create table test(id bigint, fx int, fs smallint);
commit;
set sqlda_display;
set planonly;

select
count( id ) cnt_agg
,sum( id ) sum_agg_n64
,sum( fx ) sum_agg_n32
,sum( fs ) sum_agg_n16
from test;


Output:

INPUT  SQLDA version: 1 sqln: 10 sqld: 0

PLAN (TEST NATURAL)

OUTPUT SQLDA version: 1 sqln: 20 sqld: 4
01: sqltype: 496 LONG sqlscale: 0 sqlsubtype: 0 sqllen: 4
: name: (0) alias: (7)CNT_AGG
: table: (0) owner: (0)
02: sqltype: 581 INT64 Nullable sqlscale: 0 sqlsubtype: 0 sqllen: 8
: name: (0) alias: (11)SUM_AGG_N64
: table: (0) owner: (0)
03: sqltype: 581 INT64 Nullable sqlscale: 0 sqlsubtype: 0 sqllen: 8
: name: (0) alias: (11)SUM_AGG_N32
: table: (0) owner: (0)
04: sqltype: 581 INT64 Nullable sqlscale: 0 sqlsubtype: 0 sqllen: 8
: name: (0) alias: (11)SUM_AGG_N16
: table: (0) owner: (0)

И подправлено сиё безобразие только в 3.0.
8 май 15, 15:17    [17618526]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

посмотрел там так и написано

стр. 353
...
Тип возвращаемого значения INTEGER.
10 май 15, 21:26    [17624204]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
alexl06
Member

Откуда:
Сообщений: 17
Добрый день!
Стр.43
Два раза повторяется следующее:

Поиск сотрудников, имена которых состоят из 5 букв, начинающихся с букв «Sm» и
заканчивающихся на «th». В данном случае предикат будет истинен для имен «Smith»
и «Smyth».

SELECT
first_name
FROM
employee
WHERE first_name LIKE 'Sm_th'
15 май 15, 11:16    [17643811]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
alexl06,

спасибо. Поправил.
15 май 15, 18:08    [17646951]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Денис,

добавь, плз, на странице 122 в табличку с макс. длиной индексируемой строки в зав. от набора символов еще и вот это:

для 6 байтов символ:
page_sizemax_len
4096169
8192339
16384682
Это актуально для любителей поиграться с case-insens & accent-insens текстом:
-- page_size = 8K
SQL> recreate table test(x varchar(339) character set utf8 unique collate unicode_ci_ai); rollback;
SQL> recreate table test(x varchar(340) character set utf8 unique collate unicode_ci_ai); rollback;
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-key size exceeds implementation restriction for index "RDB$1"

-- page_size = 16K
SQL> recreate table test(x varchar(681) character set utf8 unique collate unicode_ci_ai); rollback;
SQL> recreate table test(x varchar(682) character set utf8 unique collate unicode_ci_ai); rollback;
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-key size exceeds implementation restriction for index "RDB$5"

Да и вообще, формулу можно туда же вкрячить:

max_key_length = floor( (page_size / 4 - 9) / N )

где N = число байтов на представление символа
18 май 15, 14:43    [17655807]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

эта формула эмпирическим путём выведена или есть источник?
18 май 15, 19:15    [17657638]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
эта формула эмпирическим путём выведена или есть источник?
сначала эмпирическим, потом я вспомнил, что ДС мне тут как-то вправлял моцг на эту тему, а потом вгляделся в ТВОЙ ЖЕ текст в PDF'нике, и понял, что там есть всё для того, что бы её вывести :-)
18 май 15, 19:51    [17657771]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

добавил
19 май 15, 07:11    [17658827]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26709
up, ибо Beta 2, пора начинать массово тестировать, и читать доку.
7 июн 15, 13:06    [17741529]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
-
Guest
kdv
up, ибо Beta 2, пора начинать массово тестировать, и читать доку.

Не стыкуется. На firebirdsql.org ничего нет. Разработчики молчат.
8 июн 15, 10:56    [17743471]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
-,

ДЕ сказал что вот вот выйдет
8 июн 15, 11:09    [17743529]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Ritter
Member

Откуда: Россия, Воронеж
Сообщений: 63
Не стыкуется. На firebirdsql.org ничего нет. Разработчики молчат.

Из файла http://web.firebirdsql.org/download/snapshot_builds/win/3.0/Firebird-3.0.0.31855-ChangeLog.txt:
<<
2015-06-02 11:07 dimitr
M doc/WhatsNew
Updated the docs for Beta 2.
>>
8 июн 15, 11:19    [17743573]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
-
Guest
Ritter
Из файла http://web.firebirdsql.org/download/snapshot_builds/win/3.0/Firebird-3.0.0.31855-ChangeLog.txt:
<<
2015-06-02 11:07 dimitr
M doc/WhatsNew
Updated the docs for Beta 2.
>>

<<
2015-03-18 17:22 dimitr
M doc/WhatsNew
Updated the docs for Beta 2.
>>
8 июн 15, 13:54    [17744499]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
-
Guest
Симонов Денис
ДЕ сказал что вот вот выйдет

Мало ли что ДЕ кому-то сказал, или сказал но не в этом смысле :)
Пока ведь нельзя скачать откуда положено, и начать тестировать? Нельзя. Поэтому предложение kdv начать тестировать выглядит как... короче для каждого оно выглядит по-своему, но общее одно - оно вводит в заблуждение. Зачем?
8 июн 15, 14:03    [17744566]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
-,

все спокойно могут скачать снапшот и тестировать. Некоторые это делают ещё с 1 альфы.
8 июн 15, 14:06    [17744588]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
-
Пока ведь нельзя скачать откуда положено, и начать тестировать? Нельзя.
Чё-чё ?..
8 июн 15, 14:08    [17744607]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
miwaonline
Member

Откуда:
Сообщений: 2232
Таблоид
-
Пока ведь нельзя скачать откуда положено, и начать тестировать? Нельзя.
Чё-чё ?..

Обострение в анонимусов.
8 июн 15, 14:10    [17744623]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28460

Hello, Miwaonline!
You wrote on 8 июня 2015 г. 14:12:22:

Miwaonline
> Обострение в анонимусов.

мочить казлов! (с)

Posted via ActualForum NNTP Server 1.5

8 июн 15, 14:11    [17744634]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26709
-
но общее одно - оно вводит в заблуждение. Зачем?

снапшот 3.0.0.31855 от позавчера уже пишет что он Beta 2. Сейчас в снапшотах обновленный билд 31868. Ну и что?
Или вы хотите сказать, что бета-2 в снапшотах обновляться не будет, и все тестеры Беты 2 будут жрать кактус до появления Release Candidate 1 ?
8 июн 15, 14:20    [17744678]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
-
Guest
kdv
Или вы хотите сказать, что бета-2 в снапшотах обновляться не будет, и все тестеры Беты 2 будут жрать кактус до появления Release Candidate 1 ?

kdv
up, ибо Beta 2, пора начинать массово тестировать, и читать доку.

Это как-будто два разных человека писали. Одному, с точки зрения тестирования, не важны все эти бэты и кандидаты. А другому, с той же точки зрения, важны (ибо Beta 2). Понятно что я буду тестировать так, как мне удобно. А что делать тем, кто ещё прислушивается к старшим? Бежать тестировать Beta2, ибо важно? Или не бежать тестировать Beta2, ибо любой снапшот сойдёт?
9 июн 15, 09:05    [17747759]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
hvlad
Member

Откуда:
Сообщений: 9313
-,

ты чего добиваешься-то ?
+

PS NickDee, не ты ли это ?
9 июн 15, 09:17    [17747798]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
-
Guest
hvlad
ты чего добиваешься-то ?
А на что похоже?
9 июн 15, 09:34    [17747846]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
hvlad
Member

Откуда:
Сообщений: 9313
-
hvlad
ты чего добиваешься-то ?
А на что похоже?
На неумный троллинг
9 июн 15, 09:49    [17747897]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
-
Guest
hvlad
-
пропущено...
А на что похоже?
На неумный троллинг

Влад, за 15 лет не реализован мультипоточный суперсервер. А спеси иногда будто пупы земли. Так как вы троллите своих пользователей, так вообще мало кто троллит. Это просто какой-то небесный уровень троллинга - на протяжении многих лет вызывать у пользователей определённые ожидания, не исполнять их, и не испытывать по этому поводу вины, а наоборот - вести себя так, будто вы всё делаете реально классно, что позволяет вам без зазрения совести ставить пользователей в различные позы.

Как вам такое? Тоже троллинг? Или правда жизни?
9 июн 15, 11:50    [17748721]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
miwaonline
Member

Откуда:
Сообщений: 2232
Мимопроходящий
Hello, Miwaonline!
You wrote on 8 июня 2015 г. 14:12:22:

Miwaonline
> Обострение в анонимусов.

мочить казлов! (с)

Зачем? Только посмотрите, какой интересный экземпляр попался. В отличие от многих других - да того же Йо!-шки - даже пишет без ошибок. Если повезет, еще и с нестабильного курсора начнет покровы срывать
9 июн 15, 12:00    [17748780]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
-,

какое прокачанное ЧСВ, говорить за всех пользователей. В какие именно позы поставили лично тебя? Тебе кто-то не давал пользоваться CS/SC все эти годы? Хотя троллям всегда важны шашечки, а не ехать.
9 июн 15, 12:02    [17748790]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
-,

ну так помог бы. Языком чесать все горазды.

А многопоточный SS начали делать только 5 лет назад. А до этого другие задачи решали.
Распараллеливаемый SS обещали в FB 3. Но поскольку это не сделать быстро, а пользователи требовали новые версии, то FB 3 откладывался 2 раза. Первый раз когда решили выпустить 2.1 (это то что не успели сделать в 2.0), второй когда 2.5. Кроме того, в трёшке много нового помимо общего кэша.

P.S. И вообще хорош оффтопить.
9 июн 15, 12:09    [17748835]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28460

гоните его нах.
это примитивное трололо.

Posted via ActualForum NNTP Server 1.5

9 июн 15, 12:20    [17748888]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26709
-
Влад, за 15 лет не реализован мультипоточный суперсервер

1. за 15 лет (по факту - за 12-13) сделано дофига чего другого
2. Борланд, убив Classic в 2000 году, выпустил худо-бедно SMP суперсервер в 2002 году (версия 7.0), а по факту рабочий SMP суперсервер у них вышел только в версии 7.5, в 2004 году. И то, SMP допиливалось в 2007 и 2009 версиях (2006 и 2008 годы соответственно)

-
А спеси иногда будто пупы земли.

где?

-
на протяжении многих лет вызывать у пользователей определённые ожидания, не исполнять их, и не испытывать по этому поводу вины

это про какие "ожидания"? SMP суперсервера? Не припомню таких обещаний. Вулкан - был, все видели что это такое. Про SMP супер только в тройке обещали. Классик вполне поддерживается, да и с ним каких-то проблем нет, чтобы прямо вот ожидать SMP супер как манну небесную.

-
Одному, с точки зрения тестирования, не важны все эти бэты и кандидаты.

на дурачка похоже. масштабное тестирование открывается с Beta 2. Потому что следом идет RC, а потом релиз.
Ясно что в Beta 2 будут какие-то ошибки, которые будут исправлять снапшотами. Не хочешь тестировать - не тестируй.
9 июн 15, 13:32    [17749380]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg. 19
NCHAR
Представляет собой символьный тип данных фиксированной длины с
предопределенным набором символов ISO8859_1
. . .
Аналогичный тип данных доступен для строкового типа переменной длины: NATIONAL
CHARACTER VARYING (NVARCHAR).

Денис, а в где ты про этот nVARchar увидел материал ? Ибо я что-то не могу вот этого понять:
SQL> recreate table test(s nchar(10));
SQL> recreate table test(s nvarchar(10));
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 31
-(
SQL> recreate table test(s nvarchar);
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -607
-Invalid command
-Specified domain or source column NVARCHAR does not exist
(результат одинаковый что в 2.5, что в 3.0)
11 июн 15, 13:09    [17759822]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

эту часть не я писал. Уточню этот вопрос
11 июн 15, 13:25    [17759942]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
насколько помню, в синтаксисе есть "NATIONAL CHARACTER VARYING" но нет "NVARCHAR"
11 июн 15, 13:34    [17760010]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
dimitr,

а кстати почему? Нам то этот тип конечно до лампочки, а вот тем кто захочет использовать придётся писать аж три слова вместо одного.
11 июн 15, 13:46    [17760117]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
> в синтаксисе есть "NATIONAL CHARACTER VARYING" но нет "NVARCHAR"
Да, так и есть. Спс.
11 июн 15, 13:49    [17760148]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
pg. 19
NCHAR
Представляет собой символьный тип данных фиксированной длины с
предопределенным набором символов ISO8859_1
. . .
Аналогичный тип данных доступен для строкового типа переменной длины: NATIONAL
CHARACTER VARYING (NVARCHAR).

Денис, а в где ты про этот nVARchar увидел материал ? Ибо я что-то не могу вот этого понять:


убрал эту фигню в скобках
11 июн 15, 23:36    [17762854]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1213
Меня смущает вот этот абзац

"Для регистронезависимого поиска можно воспользоваться функцией UPPER:
WHERE UPPER(name) = UPPER(:flt_name)

Для строк с набором символов WIN1251 можно для этих же целей воспользоваться предложением COLLATE PXW_CYRL.
Пример:
WHERE  FIRST_NAME COLLATE PXW_CYRL >= :FLT_NAME
"
Возникает мысль что результаты
WHERE UPPER(name) > UPPER(:flt_name)
и
WHERE  FIRST_NAME COLLATE PXW_CYRL > :FLT_NAME COLLATE PXW_CYRL
всегда будут совпадать
(неважно какая операция сравнения =,>,<,....)

Ну собственно вопросы:
Для 3-ки это действительно так?
Я неправильно интерпретирую прочитанное?
"Мутно" написано?
12 июн 15, 08:50    [17763288]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

Описание системных таблиц: RDB$FIELDS.RDB$FIELD_TYPE - а куда делись такие типы как:
9 - QUAD
10 - FLOAT
В RDB$TYPES эти типы описаны.

И еще - был вроде еще:
11 - DOUBLE PRECISION (сейчас 27)
Не могут ли появится поля с типом 11 при b/r со старых версий?
12 июн 15, 11:10    [17763465]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

То же самое - для поля RDB$FIELDS.RDB$ENTERNAL_TYPE
12 июн 15, 11:13    [17763474]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

RDB$RELATIONS.RDB$RELATION_TYPE - типы таблиц GTT (4,5) - пропущены, см. RDB$TYPES.
12 июн 15, 11:22    [17763493]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

RDB$TYPES.RDB$FIELD_NAME - это скорее не имя столбца - это имя типа.
12 июн 15, 11:26    [17763502]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
DarkMaster
Симонов Денис,

RDB$RELATIONS.RDB$RELATION_TYPE - типы таблиц GTT (4,5) - пропущены, см. RDB$TYPES.


Еще пропущен тип таблиц EXTERNAL (2).
12 июн 15, 11:30    [17763508]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Для таблиц мониторинга - MON$TRANSACTIONS.MON$STATE - пропущен STALLED (3).

Кстати, вот такое утверждение "Системные таблицы содержат префикс RDB$ в имени" - оно не совсем верно:
- есть системные таблицы мониторинга, которые MON$.
- признак "системной" таблицы - это RDB$SYSTEM_FLAG и только он - ничего не мешает сделать свою RDB$MY_TABLE
- прямым апдейтом записи мы можем любую таблицу превратить в "системную", что наблюдаем на примере IBE (его IBE$xxx)

И кстати утверждение, что если домен начинается с RDB$ (это я про RDB$FIELDS) - то он сгенерирован системой - также неверно.

Вообще, строить поведение исходя из названий (наш пресловутый префикс) - неверно.
12 июн 15, 11:52    [17763561]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster
Кстати, вот такое утверждение "Системные таблицы содержат префикс RDB$ в имени" - оно не совсем верно:
- есть системные таблицы мониторинга, которые MON$.

это таблицы мониторинга, они хоть и системные но не содержат описание схемы. И у меня они выделены в отдельный раздел.
Грубо говоря наши RDB$ таблицы это information_schema. Не надо читать как таблицы сождержащие префикс RDB$ являются системными.

DarkMaster
- признак "системной" таблицы - это RDB$SYSTEM_FLAG и только он - ничего не мешает сделать свою RDB$MY_TABLE

конечно. Тут нет утверждения что каждая таблица с префиксом RDB$ является системной.

DarkMaster
- прямым апдейтом записи мы можем любую таблицу превратить в "системную", что наблюдаем на примере IBE (его IBE$xxx)

В системную она никак не превратится. Это так IBE только думает, потому что он заточен считать системными все таблицы с долларом в имени. Даже если изменить флаг RDB$SYSTEM_FLAG апдейтом таблицы RDB$RELATIONS она всё равно не будет системной. Кстати в тройке такой трюк не пройдёт.

DarkMaster
И кстати утверждение, что если домен начинается с RDB$ (это я про RDB$FIELDS) - то он сгенерирован системой - также неверно.

Такого утверждения там нет. Есть утверждение что если домен сгенерирован системой то он будет иметь префикс RDB$. Обратное из этого никак не следует.
[/quot]

Если где то действительно есть предложение о том что если таблица/поле имеет такой-то префикс, то она системная. Покажи мне его.
12 июн 15, 12:48    [17763682]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster
Симонов Денис,

Описание системных таблиц: RDB$FIELDS.RDB$FIELD_TYPE - а куда делись такие типы как:
9 - QUAD
10 - FLOAT
В RDB$TYPES эти типы описаны.

И еще - был вроде еще:
11 - DOUBLE PRECISION (сейчас 27)
Не могут ли появится поля с типом 11 при b/r со старых версий?


QUAD это внутренние потороха. Могут появиться UDF. Да и то видел только внутрях. Когда и где ты видел домен/поле с таким типом?

Про FLOAT каюсь позабыл. Добавлю. Про 11 ничего не могу сказать.
12 июн 15, 12:51    [17763691]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster
Симонов Денис,

То же самое - для поля RDB$FIELDS.RDB$ENTERNAL_TYPE


там тем более QUAD не появится. Про FLOAT снова позабыл. И ещё надо BLOB выкинуть не может быть их во внешних таблицах. CSTRING вроде тоже не может как и в обычных таблицах.
12 июн 15, 12:57    [17763709]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster
Симонов Денис,

RDB$RELATIONS.RDB$RELATION_TYPE - типы таблиц GTT (4,5) - пропущены, см. RDB$TYPES.


про это поле там вообще фигня написана. Поправлю
12 июн 15, 13:00    [17763718]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster
Для таблиц мониторинга - MON$TRANSACTIONS.MON$STATE - пропущен STALLED (3).

Не 3 а 2. Кстати какой физический смысл STALLED транзакции?
12 июн 15, 13:08    [17763732]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис
DarkMaster
Кстати, вот такое утверждение "Системные таблицы содержат префикс RDB$ в имени"

это таблицы мониторинга, они хоть и системные но не содержат описание схемы. И у меня они выделены в отдельный раздел.
Грубо говоря наши RDB$ таблицы это information_schema.


Ну вот не знаю. Может просто формулировку сменить на "системные таблицы/имена, создаваемые сервером обычно содержат префикс RDB$"? А насчет MON$ - ну это все ж таблицы специального типа VIRTUAL и они вроде как тоже к information_schema относятся. Кстати, ничто не мешает в будущем появится префиксам типа SYS$, REPL$ и т.п.


DarkMaster
- прямым апдейтом записи мы можем любую таблицу превратить в "системную", что наблюдаем на примере IBE (его IBE$xxx)

В системную она никак не превратится. Это так IBE только думает, потому что он заточен считать системными все таблицы с долларом в имени. Даже если изменить флаг RDB$SYSTEM_FLAG апдейтом таблицы RDB$RELATIONS она всё равно не будет системной. Кстати в тройке такой трюк не пройдёт.
[/quot]

А, действительно - IBE свои таблицы видно по имени распознает - погорячился. Но насчет того, что IBE все таблицы с долларом в имени к системным относит - тут ты поспешил ;)

Симонов Денис
Если где то действительно есть предложение о том что если таблица/поле имеет такой-то префикс, то она системная. Покажи мне его.


Можно просто сменить формулировку, а то некоторая путаница получается.
12 июн 15, 13:20    [17763760]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

QUAD - таки да, создать домен с таким типом не получится, проверил.
12 июн 15, 13:28    [17763775]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster
Для таблиц мониторинга - MON$TRANSACTIONS.MON$STATE - пропущен STALLED (2).


это значение похоже для столбца другой таблицы MON$STATEMENTS.

автор
Состояние оператора STALLED возникает только для недовыбранных курсоров, т.е. в перерывах между получением клиентом порций данных (fetches), пока он обрабатывает предыдущую порцию.


Что это такое для транзакций хз. Наверное для них он и не возникает.
12 июн 15, 13:51    [17763823]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

Нашел упоминания о QUAD здесь:

http://www.alberton.info/firebird_sql_meta_info.html#.VXq6K-afcYk
http://mc-computing.com/databases/firebird/DatabaseExplorer.html
http://citforum.ru/database/interbase/interbase_01.shtml

Все статьи старые. Возможно для QUAD следует сделать сноску, что оно либо не используется, либо относится к внутренним потрохам сервера.
12 июн 15, 13:59    [17763851]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
hvlad
Member

Откуда:
Сообщений: 9313
Симонов Денис,

STALLED - это состояние "приостановлено". Возможно для запроса, который начал своё
выполнение, еще не завершил его, но в данный момент не выполняется. Например ждёт
входных параметров или очередного фетча от клиента.
12 июн 15, 14:36    [17763949]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
hvlad,

Кстати,а в MON$TRANSACTIONS состояние LIMBO отображается?
12 июн 15, 15:07    [17764040]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
hvlad
Member

Откуда:
Сообщений: 9313
DarkMaster
hvlad,

Кстати,а в MON$TRANSACTIONS состояние LIMBO отображается?
В MON$TRANSACTIONS, по-построению, могут отражаться только активные тр-ции.
Тр-ция в состоянии LIMBO - не активна - в том смысле, что такого run-time объекта в памяти движка нет.
12 июн 15, 15:12    [17764052]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster,

обновил доку
12 июн 15, 16:35    [17764432]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Симонов Денис,

Угу, сейчас качну, спасибо...
12 июн 15, 16:44    [17764460]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1213
так никто и не ответил 17763288
15 июн 15, 08:38    [17770578]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57687
m7m> так никто и не ответил 17763288

Если ничего не изменилось, то должно быть да.
Можешь сам проверить, это не сложно.

Другое дело, что лично я не вижу смысла сегодня
цепляться за этот PXW_CYRL да и вообще описывать
его в доке не в спец.разделе про коллейты.

Posted via ActualForum NNTP Server 1.5

15 июн 15, 08:54    [17770598]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1213
Гаджимурадов Рустам
m7m> так никто и не ответил 17763288

Если ничего не изменилось, то должно быть да.
Можешь сам проверить, это не сложно.

Другое дело, что лично я не вижу смысла сегодня
цепляться за этот PXW_CYRL да и вообще описывать
его в доке не в спец.разделе про коллейты.


Да, это ответ на какой из вопросов
1 - Для 3-ки это действительно так?
2 - Я неправильно интерпретирую прочитанное?
3 - "Мутно" написано?

зы. PXW_CYRL мне как-то побоку, цепляюсь за выделенный кусок
" Для строк с набором символов WIN1251 можно для этих же целей воспользоваться предложением COLLATE PXW_CYRL."
ну естественно в контексте того что написано в доке
15 июн 15, 09:24    [17770649]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
m7m
Меня смущает вот этот абзац

"Для регистронезависимого поиска можно воспользоваться функцией UPPER:
WHERE UPPER(name) = UPPER(:flt_name)

Для строк с набором символов WIN1251 можно для этих же целей воспользоваться предложением COLLATE PXW_CYRL.
Пример:
WHERE  FIRST_NAME COLLATE PXW_CYRL >= :FLT_NAME
"
Возникает мысль что результаты
WHERE UPPER(name) > UPPER(:flt_name)
и
WHERE  FIRST_NAME COLLATE PXW_CYRL > :FLT_NAME COLLATE PXW_CYRL
всегда будут совпадать
(неважно какая операция сравнения =,>,<,....)

Ну собственно вопросы:
Для 3-ки это действительно так?
Я неправильно интерпретирую прочитанное?
"Мутно" написано?


А что тут отвечать то. Не означает. В тройке по этому поводу ничего не менялось
15 июн 15, 09:34    [17770676]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1213
Симонов Денис
А что тут отвечать то. Не означает. В тройке по этому поводу ничего не менялось

Ну дык поправьте тогда
15 июн 15, 09:37    [17770685]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
m7m,

я не знаю что там поправить. Для поиска без учёта регистра пользоваться PXW_CYRL можно. Но это никак не означает что сам порядок сравнения будет в точности соответствовать тому что получается при использовании UPPER.

Или ты имеешь ввиду следующий за этим пример не к месту?
15 июн 15, 09:40    [17770699]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1213
Симонов Денис
m7m,

я не знаю что там поправить. Для поиска без учёта регистра пользоваться PXW_CYRL можно. Но это никак не означает что сам порядок сравнения будет в точности соответствовать тому что получается при использовании UPPER.

Или ты имеешь ввиду следующий за этим пример не к месту?

Да именно примеры, убрать их нафиг ибо вводят в заблуждение
15 июн 15, 10:01    [17770786]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Ну вот Beta 2 вышла официально.
4 июл 15, 10:40    [17851710]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
CREATE SHADOW, pg. 69:

Создать теневую копию могут:
• владелец базы данных;
• пользователь SYSDBA;
• любой пользователь, подключенный с ролью RDB$ADMIN (роль должна быть
назначена пользователю);
• пользователь операционной системы root (Linux);
• администраторы Windows, если используется доверительная авторизация


Добавить бы надо про юзера, которому грантована роль 'alter database' (непосредственно или через роль):
C:\...> isql -q
connect '/3333:e30' user sysdba password 'masterkey';
set wng off;
create role bkr;
create or alter user bku password '123';
commit;

revoke all on all from bku;
revoke all on all from bkr;

grant alter database to role bkr;
grant bkr to bku;
commit;

show grants;
commit;

connect '/3333:e30' user bku password '123' role bkr;

select current_user, current_role from rdb$database;

create shadow 1 'c:\temp\e30.shd.1';
commit;

SQL> show database;

Output:

. . .
/* Grant permissions for this database */
GRANT BKR TO BKU
GRANT ALTER DATABASE TO ROLE BKR

USER ROLE
=============================== ==========
BKU BKR

Database: /3333:e30
Owner: SYSDBA
Shadow 1: "C:\TEMP\E30.SHD.1" auto
. . .
12 июл 15, 11:50    [17882044]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

добавил, но выложить смогу только к следующим выходным. Ибо инет здесь слишком медленный и нестабильный.

Также добавил примечания про права на индексы и таблицы относительно GRANT ALTER TABLE.

ещё собираюсь немного дописать про оператор SELECT: добавить туда примеры с оконными функциями (сейчас только в описании этих функций есть), про взаимодействие оконных функций с GROUP BY (т.е. когда они ещё остаются разрешёнными в SELECT). Про многократное исполнение вычисляемых выражений из DT и GTT уже добавил.

Ну и стили подгоняю ближе к ReleaseNotes.

P.S. По 2.5 теперь дока будет по структуре и оформлению полностью идентичная той что сделана для трёшки.
12 июл 15, 12:57    [17882178]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
выложил обещанное обновление
17 июл 15, 13:50    [17904372]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
afgm
Member

Откуда:
Сообщений: 547
стр 313
неверная расшифровка

WHILE (<condition>) DO
<compound_statement>
...
select_stmt Оператор SELECT.
17 июл 15, 14:23    [17904588]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
afgm
Member

Откуда:
Сообщений: 547
стр 374
Описании работы LEFT

В случае если числовой параметр не будет целым числом, к нему будет применено
банковское округление: то есть

0,5 станет 0,
1,5 станет 2,
2,5 станет 2,
3,5 станет 4, ...

На практике стандартное математическое округление.
+ test
with A(inp_val, out_val) as
(
    select 0.5, 0 from rdb$database
    union all
    select 1.5, 2 from rdb$database
    union all
    select 2.5, 2 from rdb$database
    union all
    select 3.5, 4 from rdb$database
)
,
B as
(
  select inp_val, out_val, left('1234567890', inp_val) part_of_string from A
)
select inp_val, out_val, part_of_string, character_length(part_of_string) from B
17 июл 15, 15:19    [17904887]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
afgm
стр 313
неверная расшифровка


спасибо, поправил
17 июл 15, 15:30    [17904931]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
afgm,

хм... значит в Release Notes 2.1.6 и Language Reference Update 2.5 та же ошибка, потому как описание взято от туда. Надо бы уточнить с чего вдруг там так написали. В прочем я подозревал, что в этом месте что-то не то написано. Для RIGHT такая же байда
17 июл 15, 15:38    [17904958]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57687
О чём речь? О переводе термина statement ?

Posted via ActualForum NNTP Server 1.5

17 июл 15, 20:09    [17905907]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
afgm
стр 374
Описании работы LEFT

В случае если числовой параметр не будет целым числом, к нему будет применено
банковское округление: то есть

0,5 станет 0,
1,5 станет 2,
2,5 станет 2,
3,5 станет 4, ...

На практике стандартное математическое округление.
+ test
with A(inp_val, out_val) as
(
    select 0.5, 0 from rdb$database
    union all
    select 1.5, 2 from rdb$database
    union all
    select 2.5, 2 from rdb$database
    union all
    select 3.5, 4 from rdb$database
)
,
B as
(
  select inp_val, out_val, left('1234567890', inp_val) part_of_string from A
)
select inp_val, out_val, part_of_string, character_length(part_of_string) from B


вот об этом
17 июл 15, 20:32    [17905965]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57687
А, этот идиотизм не в мой огород, так что пофиг.

Posted via ActualForum NNTP Server 1.5

17 июл 15, 20:42    [17905998]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Гаджимурадов Рустам,

ну я тебя и не обвинял. Это в английской версии такое написано
17 июл 15, 20:48    [17906013]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57687
Да я не про адресные обвинения.
Я такого текста просто вообще не
припомню, даже в оригинале -
только щас после ваших слов узнал.

Не знаю кому могла придти в голову
такая странная реализация (даже если
бы она на самом деле была) и нафига
её вообще нужно было в доку тащить.

Posted via ActualForum NNTP Server 1.5

17 июл 15, 21:08    [17906070]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
убрал эту фигню из описания функций LEFT и RIGHT
17 июл 15, 22:08    [17906190]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
в раздел "Безопасность / Операторы управления усерами / create user" предлагаю добавить совет: поскольку снапшоты идут с неинициализированной базой sec3.fdb, а утилита gsec объявлена хромой уткой и когда-нить поедет на помойку, то можно использовать для инициализации sec3.fdb вот это:

gsec -display -database .\security3.fdb
Install incomplete, please read the Compatibility chapter in the release notes for this version

echo create user SYSDBA password 'masterkey'; show users; set list on; select * from sec$users; | isql -user sysdba .\security3.fdb
Users in the database
2 #SYSDBA

SEC$USER_NAME SYSDBA
SEC$FIRST_NAME <null>
SEC$MIDDLE_NAME <null>
SEC$LAST_NAME <null>
SEC$ACTIVE <true>
SEC$ADMIN <true>
SEC$DESCRIPTION <null>
SEC$PLUGIN Srp

gsec -display -database .\security3.fdb
user name uid gid admin full name
------------------------------------------------------------------------------------------------
SYSDBA 0 0
(два вызова gsec приведены только для иллюстрации; для прописки sysdba эта утиль не нужна)
17 июл 15, 22:15    [17906203]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Операторы DML / EXECUTE BLOCK
Входные и выходные параметры
...
Если есть входные параметры, все становится сложнее: эти параметры должны
получить свои значения после подготовки оператора, но перед его выполнением.
Это требует специальных возможностей, которыми располагает не каждое клиентское
приложение (Например, ISQL такой возможности не предлагает)
.
create sequence g;
recreate table test(id int, x int);
commit;
insert into test select gen_id(g,1), 100 from rdb$types rows 8;
commit;

set term ^;
execute block as
begin
execute statement (
'execute block(a int = ?, b int = ?) as '
|| 'begin '
|| ' update test set x = x/2 '
|| ' where abs(id) between :a and :b; '
|| 'end') (2, 5);
end
^
set term ;^
commit;
select * from test;

:-)
17 июл 15, 22:30    [17906243]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

это возможности execute statement но уж никак не ISQL
17 июл 15, 22:38    [17906273]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Безопасность / Изменение текущей роли
Параметры оператора SET ROLE

В то время как CURRENT_ROLE возможно изменить с помощью оператора
SET ROLE, ее не всегда возможно вернуть обратно той же командой,
потому что она выполняет проверку прав доступа.
Не понял про выделенное. Её и вернуть можно, и даже отменить незавершенные изменения, выполненные в предыдущей роли, даже если характер этих изменений таков, что они недоступны для той роли, куда возвращаемся:

C:\MIX\firebird\QA\fbt-repo\tmp>isql /3333:e30
Database: /3333:e30
SQL> create table test1(id int);
SQL> create role boss;
SQL> create role acnt;
SQL> create or alter user ozzy password '123' revoke admin role;
SQL> set wng off;
SQL> revoke all on all from public;
SQL> revoke all on all from boss;
SQL> revoke all on all from acnt;
SQL> revoke all on all from ozzy;
SQL> commit;
SQL> grant insert, select on test1 to boss;
SQL> grant select on test1 to acnt;
SQL> grant boss to ozzy;
SQL> grant acnt to ozzy;
SQL> commit;
SQL> show grants;

/* Grant permissions for this database */
GRANT SELECT ON TEST1 TO ROLE ACNT
GRANT INSERT, SELECT ON TEST1 TO ROLE BOSS
GRANT ACNT TO OZZY
GRANT BOSS TO OZZY
SQL> commit; connect '/3333:e30' user ozzy password '123';
Database: '/3333:e30', User: ozzy
SQL> set role boss;
SQL> select current_role from rdb$database;

ROLE
===============================
BOSS

SQL> insert into test1 values(1);
SQL> set role acnt;
SQL> select current_role from rdb$database;

ROLE
===============================
ACNT

SQL> insert into test1 values(2);
Statement failed, SQLSTATE = 28000
no permission for INSERT access to TABLE TEST1
SQL> select * from test1;

ID
============
1

SQL> savepoint sp_acnt;
SQL> set role boss;
SQL> insert into test1 values(2);
SQL> insert into test1 values(3);
SQL> set role acnt;
SQL> select * from test1;

ID
============
1
2
3

SQL> rollback to sp_acnt;
SQL> select * from test1;

ID
============
1

SQL>
17 июл 15, 22:57    [17906352]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

согласен. Это надо бы удалить. По моему было в одной из ранних версий realese notes. Сейчас поглядел ничего такого не написано.
18 июл 15, 00:42    [17906697]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
обновил
18 июл 15, 00:52    [17906710]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pp. 194-195
Параметры оператора CREATE EXCEPTION

Внимание!
Если в тексте сообщения, встретится номер слота параметра больше 9, то
второй и последующий символ будут восприняты как литералы. Например,
@10 будет воспринято как @1, после которого следует литерал 0.
Лучше привести пример какой-нить.
Типа такого:
SQL> create exception ex1 'something wrong in @1 @2 @3 @4 @5 @6 @7 @8 @9 @10 @11';
SQL> -- А теперь вызовем это исключение, но не с 11 аргументами, а с 9:
SQL> execute block as
CON> begin
CON> exception ex1 using ('hvhvhv','zxcv2','hgfd03','q04','q05','q06','bebebe7','gagaga8','mememe9');
CON> end^
Statement failed, SQLSTATE = HY000
exception 1
-EX1
-something wrong in hvhvhv zxcv2 hgfd03 q04 q05 q06 bebebe7 gagaga8 mememe9 hvhvhv0 hvhvhv1

Т.е. никакой ошибки о несоотв-вии числа аргументов не вываливается, но текст сообщения при этом явно кривой.

И еще. Передадим ровно то число аргументов, что было указано в определении exception'a:

SQL> create exception ex1 'something wrong in @1 @2 @3 @4 @5 @6 @7 @8 @9 @10 @11';
SQL> set term ^;
SQL> execute block as
CON> begin
CON> exception ex1 using ('q01','q02','q03','q04','q05','q06','q07','q08','q09','q10','q11');
CON> end^
Statement failed, SQLSTATE = 07002
Number of arguments (11) exceeds the maximum (9) number of EXCEPTION USING arguments
SQL>
20 июл 15, 15:04    [17913238]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
hvlad
Member

Откуда:
Сообщений: 9313
Таблоид
Т.е. никакой ошибки о несоотв-вии числа аргументов не вываливается
Потому что нет ошибки.
Твоё @10 интерпретируется как <параметр №1>0

Таблоид
но текст сообщения при этом явно кривой
Он именно такой, как описано в доке.

Таблоид
Передадим ровно то число аргументов, что было указано в определении exception'a
Ты в тексте exception используешь 9 пар-ров (см. выше), а передаёшь - 11.
О чём тебе швабра (c) и сказала :)
20 июл 15, 15:12    [17913295]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
hvlad
Таблоид
Передадим ровно то число аргументов, что было указано в определении exception'a
Ты в тексте exception используешь 9 пар-ров (см. выше), а передаёшь - 11.
О чём тебе швабра (c) и сказала :)
я вот про ЭТОТ вариант:

Таблоид
SQL> create exception ex1 'something wrong in @1 @2 @3 @4 @5 @6 @7 @8 @9 @10 @11';
SQL> set term ^;
SQL> execute block as
CON> begin
CON> exception ex1 using ('q01','q02','q03','q04','q05','q06','q07','q08','q09','q10','q11');
CON> end^
Statement failed, SQLSTATE = 07002
Number of arguments (11) exceeds the maximum (9) number of EXCEPTION USING arguments
-- тут 11 параметров, а не 9.
20 июл 15, 15:20    [17913335]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
hvlad
Member

Откуда:
Сообщений: 9313
Читай вышенаписанное ещё раз. И ещё раз. И ещё раз...
20 июл 15, 15:27    [17913370]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

1 пример привести в качестве демонстрации сказанного. Второй не имеет ибо выше написано

автор
Максимальный номер параметра равен 9;


а то так можно дойти до того что демонстрировать все неверные операторы, коих может быть 100500 сочетаний
20 июл 15, 15:31    [17913390]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3 Beta  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

тьфу блин. Не там ты читаешь. В CREATE EXCEPTION не всё написано, но там и не должно быть. Смотри PSQL оператор EXCEPTION ибо про USING основной текст там
20 июл 15, 15:34    [17913409]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
Типа такого:
SQL> create exception ex1 'something wrong in @1 @2 @3 @4 @5 @6 @7 @8 @9 @10 @11';
SQL> -- А теперь вызовем это исключение, но не с 11 аргументами, а с 9:
SQL> execute block as
CON> begin
CON> exception ex1 using ('hvhvhv','zxcv2','hgfd03','q04','q05','q06','bebebe7','gagaga8','mememe9');
CON> end^
Statement failed, SQLSTATE = HY000
exception 1
-EX1
-something wrong in hvhvhv zxcv2 hgfd03 q04 q05 q06 bebebe7 gagaga8 mememe9 hvhvhv0 hvhvhv1



добавил подобный пример, но не в оператор CREATE EXCEPTION, а в сам оператор EXCEPTION (глава PSQL)
22 июл 15, 21:34    [17923256]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pp 405-406 ("Агрегатные функции")
SUM

Синтаксис:
SUM([ALL | DISTINCT] <expr>)
[OVER ([<partition_exp>] [<order_exp>])]

Агрегатные функции в качестве выражения не допускаются.
Тип возвращаемого результата: тот же что и аргумент функции expr.
Подправить тут надо.
Внутри аналитической функции, например sum( <expr> )over(), выражение <expr> - может быть "просто" агрегатом, см ниже.
И еще: тип возврата - всегда BIGINT, а не "тот же что и аргумент функции expr".


SQL> recreate table test(x smallint);
SQL> set sqlda_display on;

SQL> select sum( sum(x) )over() from test;
. . .
OUTPUT message field count: 1
01: sqltype: 580 INT64 Nullable scale: 0 subtype: 0 len: 8
. . .

SQL> select sum(x) from test;
. . .
01: sqltype: 580 INT64 Nullable scale: 0 subtype: 0 len: 8
. . .

SQL> select sum(x)over() from test;
. . .
01: sqltype: 580 INT64 Nullable scale: 0 subtype: 0 len: 8
. . .
22 июл 15, 21:54    [17923297]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg 422
RANK
. . .
RANK() OVER ([<partition_exp>] [<order_exp>])
Тип возвращаемого результата: BIGINT
Описание:
Возвращает ранг каждой строки в секции результирующего набора. Ранг строки
вычисляется как единица плюс количество рангов, находящихся до этой строки.
Примера тут не хватает, КМК. Типа такого:
SQL> recreate table test(id int primary key, x int, y int);
SQL> recreate sequence g;
SQL> insert into test values(gen_id(g,1), 1, 10);
SQL> insert into test values(gen_id(g,1), 1, 10);
SQL> insert into test values(gen_id(g,1), 1, 10);
SQL> insert into test values(gen_id(g,1), 1, 10);
SQL> insert into test values(gen_id(g,1), 1, 11);
SQL> insert into test values(gen_id(g,1), 1, 12);
SQL> insert into test values(gen_id(g,1), 2, 21);
SQL> insert into test values(gen_id(g,1), 2, 21);
SQL> insert into test values(gen_id(g,1), 2, 21);
SQL> insert into test values(gen_id(g,1), 3, 31);
SQL> insert into test values(gen_id(g,1), 3, 31);
SQL> insert into test values(gen_id(g,1), 3, 32);
SQL> insert into test values(gen_id(g,1), 3, 33);
SQL> insert into test values(gen_id(g,1), 3, 34);
SQL> select t.*,rank()over(partition by x order by y) from test t;

ID X Y RANK
============ ============ ============ =====================
1 1 10 1
2 1 10 1
3 1 10 1
4 1 10 1
5 1 11 5
6 1 12 6
7 2 21 1
8 2 21 1
9 2 21 1
10 3 31 1
11 3 31 1
12 3 32 3
13 3 33 4
14 3 34 5

И фразу о том, как вычисляется rank(), я бы написал так: "строки с одинаковыми значениями <order_expr> получают одинаковый ранг (в пределах группы <partition_exp>, если она указана). Ранг строки, у которой <order_expr> отличается от N строк, находящихся выше неё, вычисляется как 1 + N (также в пределах группы <partition_exp>)".
22 июл 15, 22:16    [17923351]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pp 355-356 ("Таблица 8.1. Переменные пространства имён SYSTEM")
NETWORK_PROTOCOL Протокол, используемый для соединения с базой
данных. Возможные значения: "TCPv4", "WNET", "XNET",
NULL.
Я напоролся при анализе результатов какого-то теста, публикуемых периодически здесь, что значением может быть теперь и TCPv6.
22 июл 15, 22:24    [17923376]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
Подправить тут надо.
Внутри аналитической функции, например sum( <expr> )over(), выражение <expr> - может быть "просто" агрегатом, см ниже.


Мочь то может. Вот только зачем?

И даже может вот так работать

select sum( max(code_horse) )over() from horse group by code_sex;


что уже полезней. Если это не ошибка то допишу. Но тогда надо и другие варианты исследовать

Таблоид
И еще: тип возврата - всегда BIGINT, а не "тот же что и аргумент функции expr".


Не совсем так. 1 диалект. В общем-то конечно не совсем тот же, но и не всегда BIGINT. Понятное дело что значение того типа который получается по масштабу будет больше вмещать

SQL> set sqlda_display on;
SQL> select sum(0.23465) over() from rdb$fields rows 1;

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 480 DOUBLE Nullable scale: 7 subtype: 0 len: 8
: name: SUM alias: SUM
: table: owner:

SUM
=======================
1082.205799999979500000

 


        
22 июл 15, 22:45    [17923477]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg 357 ("Параметры функции RDB$SET_CONTEXT")
Максимальное число переменных в рамках одного соединения равно 1000;
Максимальное число контекстных переменных каждого вида (USER_SESSION, USER_TRANSACTION) ограничено числом 1000. Таким обр., соединение может установить до 1000 переменных, и транзакция, открытая этим соединением, также может установить "своих" переменных тоже 1000 штук. А если коннект создает сразу N транзакций, то макс. число контекстных переменных будет (1+N)*1000:
set term ^;
execute block returns(session_vars int, transaction_vars int)
as
declare n int = 1000;
declare i int;
declare k int;
begin
i = 1;
while(i <= n) do
begin
execute statement 'select rdb$set_context(''USER_SESSION'',''VAR_ATT'||i||''', '||i||') from rdb$database' into k;
i = i+1;
end
i = 1;
while(i <= n) do
begin
execute statement 'select rdb$set_context(''USER_TRANSACTION'',''VAR_TX1_'||i||''', '||i||') from rdb$database' into k;
i = i+1;
end

in autonomous transaction do
begin
i = 1;
while(i <= n) do
begin
execute statement 'select rdb$set_context(''USER_TRANSACTION'',''VAR_TX2_'||i||''', '||i||') from rdb$database' into k;
i = i+1;
end

in autonomous transaction do
begin
i = 1;
while(i <= n) do
begin
execute statement 'select rdb$set_context(''USER_TRANSACTION'',''VAR_TX3_'||i||''', '||i||') from rdb$database' into k;
i = i+1;
end
select
count( iif(c.mon$attachment_id is not null, mon$variable_value, null) )
,count( iif(c.mon$attachment_id is not null, null, mon$variable_value) )
from mon$context_variables c
into session_vars, transaction_vars;
end
end
suspend;
end
^
set term ^;

Output:

SESSION_VARS TRANSACTION_VARS
============ ================
1000 3000
22 июл 15, 22:45    [17923478]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
Не совсем так. 1 диалект. В общем-то конечно не совсем тот же, но и не всегда BIGINT.
Тогда лучше по диалектам отдельно расписать.
22 июл 15, 22:47    [17923484]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

там не в диалекте дело. Если в 3 диалекте тип FLOAT будешь суммировать получится DOUBLE. Вот в 3 ем диалекте

SQL> set sqlda_display on;
SQL> select sum(0.23465) over() from rdb$fields rows 1;

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 580 INT64 Nullable scale: -5 subtype: 0 len: 8
: name: SUM alias: SUM
: table: owner:

SUM
=====================
45.28745

SQL> select sum(cast(0.23465 as float)) over() from rdb$fields rows 1;

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 480 DOUBLE Nullable scale: 0 subtype: 0 len: 8
: name: SUM alias: SUM
: table: owner:

SUM
=======================
45.28745017945766

SQL>
22 июл 15, 22:55    [17923528]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

добавил всё кроме агрегатов в оконных функциях. Во первых там не самое удачное место ибо описываются именно агрегатные функции, предложение окна там добавлено только потому что оно может использоваться. Во вторых надо дополнительно исследовать этот вопрос. Я ещё посмотрю что у других СУБД по этому поводу.
23 июл 15, 00:18    [17923883]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
В раздел "Операторы управления пользователями" неплохо бы добавить, что:

1) усеров теперь можно вводить с non-ascii символами. Однако из-за вот этого:
SQL> show table sec$users;
SEC$USER_NAME (RDB$USER) CHAR(31) CHARACTER SET UNICODE_FSS Nullable
. . .
-- максимальная длина логина будет определяться тем, сколько байт отводится на 1 символ в unicode-кодировке.
Для кириллицы отводится два байта на символ, поэтому вот этот вариант:
SQL> create or alter user "ВасяПупкинКулха" password '123';
-- прокатывает, а вот этот обломится:
SQL> create or alter user "ВасяПупкинКулхац" password '123';
Statement failed, SQLSTATE = 22001
arithmetic exception, numeric overflow, or string truncation
-string right truncation
-expected length 31, actual 16
(перед этими танцами, конечно, необходимо делать chcp 1251 и запускать isql -ch win1251, либо делатьв isql'e до коннекта 'set names win1251'; иначе прилетит швабра 'malformed string').

2) непривилегированный усер может поменять свой пароль и атрибуты (firstname, lastname + теги):
SQL> alter user "ВасисуалийПупка" firstname 'Vasisualiy';
SQL> alter user "ВасисуалийПупка" password '000';
SQL> alter user "ВасисуалийПупка" tags( city = 'Balaha', favorite_group = 'Deep Purple');

Но он не может сделать себя inactive или грохнуть - получит "no permission for <...> access to TABLE <...>".
23 июл 15, 08:08    [17924173]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg 230
Замечание о равенстве

Оператор "=", который явно используется во многих условиях соединении и неявно
в соединениях именованными столбцами и естественных соединениях, только при
сравнении значений со значениями.
В соответствии со стандартом SQL, NULL не
является значением и, следовательно, два значения NULL не равны и ни неравны
друг с другом.
В выделенном тексте пропущено какое-то слово. Может, имелось в виду это: "Оператор "=", который <...>, ДАЁТ ОЖИДАЕМЫЙ РЕЗУЛЬТАТ только при сравнении значений со значениями (а не с NULL)" - ?
23 июл 15, 08:48    [17924214]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Не вижу в доке замечания о том, что в 3.0 запрещено юзать смешанные джойны. Об этом говорится в RN ("Prohibit Edgy Mixing of Implicit/Explicit Joins"), также см. CORE-2812
Ну, и пример для "забавы мозга" можно привести:

recreate table t1(id int); 
commit;
insert into t1 values( 1 );
commit;
select a.id from t1 a, t1 b join t1 c on a.id=c.id where a.id=b.id; -- этот завалится
select a.id from t1 b, t1 a join t1 c on a.id=c.id where a.id=b.id; -- а этот - отработает без ошибок :-)
23 июл 15, 08:59    [17924238]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
добавил всё кроме агрегатов в оконных функциях.
Про rank(), pg. 424, - что там, будешь исправлять фразу про его вычисление или так оставишь ?
23 июл 15, 09:16    [17924299]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
Симонов Денис
добавил всё кроме агрегатов в оконных функциях.
Про rank(), pg. 424, - что там, будешь исправлять фразу про его вычисление или так оставишь ?


посмотрю ещё вечерком сегодня. Это из Release Notes вроде фраза. Надо бы посмотреть как оно описано в других СУБД.
23 июл 15, 09:55    [17924460]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
pg 230
Замечание о равенстве

Оператор "=", который явно используется во многих условиях соединении и неявно
в соединениях именованными столбцами и естественных соединениях, только при
сравнении значений со значениями.
В соответствии со стандартом SQL, NULL не
является значением и, следовательно, два значения NULL не равны и ни неравны
друг с другом.
В выделенном тексте пропущено какое-то слово. Может, имелось в виду это: "Оператор "=", который <...>, ДАЁТ ОЖИДАЕМЫЙ РЕЗУЛЬТАТ только при сравнении значений со значениями (а не с NULL)" - ?


это кривоватый перевод того что Paul писал. Посмотрю сегодня ещё раз как там в оригинале написано.
23 июл 15, 09:56    [17924468]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

про смешения джойнов я в обзоре фич FB3 писал. Там причём не все смешанные виды джойнов запрещены, а только самые кривые. Но лучше считать что все.
23 июл 15, 10:07    [17924500]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
В раздел "Операторы управления пользователями" неплохо бы добавить, что:

1) усеров теперь можно вводить с non-ascii символами. Однако из-за вот этого:
SQL> show table sec$users;
SEC$USER_NAME (RDB$USER) CHAR(31) CHARACTER SET UNICODE_FSS Nullable
. . .
-- максимальная длина логина будет определяться тем, сколько байт отводится на 1 символ в unicode-кодировке.
Для кириллицы отводится два байта на символ, поэтому вот этот вариант:
SQL> create or alter user "ВасяПупкинКулха" password '123';


эта байда не только для имён пользователей, но и для всех объектов метаданных. В тройке здесь вряд ли что-то правится будет. Может быть в 4ке перейдут на внутреннюю кодировку UTF-8 и увеличат максимальный размер идентификаторов.

Таблоид
2) непривилегированный усер может поменять свой пароль и атрибуты (firstname, lastname + теги):
Но он не может сделать себя inactive или грохнуть - получит "no permission for <...> access to TABLE <...>".


ну про грохнуть это в операторе DROP USER написано. Про INACTIVE добавлю
23 июл 15, 11:26    [17924850]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg 310
BEGIN ... END
. . .
Блоки могут быть вложенными, глубина вложения не ограничена.
я бы не был столь категоричен :-)
Хотя пример ниже - чистой воды издевательство и за гранью добра и зла, но таки вот:

1) батник, который генерит .sql-скрипт с begin-end блоками необходимого уровня вложенности:
@echo off
setlocal enabledelayedexpansion enableextensions
cls
set fq=%1
if .%fq%.==.. set fq=3
set sql=%~n0.tmp

del %sql% 2>nul
echo recreate exception ex_test 'Hi from Mariana Trench, depth=@1';>>%sql%
echo recreate sequence g;>>%sql%
echo commit;>>%sql%
echo set term ^^;>>%sql%
echo execute block as>>%sql%
echo declare n int = 0;>>%sql%
echo begin>>%sql%
for /l %%i in (1, 1, %fq%) do (
echo begin -- level = %%i>>%sql%
echo n = gen_id(g, 1^);>>%sql%
)
for /l %%i in (%fq%, -1, 1) do (
if .%%i.==.%fq%. echo exception ex_test using( n ^);>>%sql%
echo end -- level = %%i>>%sql%
)

echo end^^>>%sql%
echo set term ;^^>>%sql%
echo commit;>>%sql%

При запуске его без параметров будет создан код в три уровня вложенности:
+
recreate exception ex_test 'Hi from Mariana Trench, depth=@1';
recreate sequence g;
commit;
set term ^;
execute block as
declare n int = 0;
begin
begin -- level = 1
n = gen_id(g, 1);
begin -- level = 2
n = gen_id(g, 1);
begin -- level = 3
n = gen_id(g, 1);
exception ex_test using( n );
end -- level = 3
end -- level = 2
end -- level = 1
end^
set term ;^
commit;


2) генерим теперь мега-монстра, задавая аргумент = 32000 (да, 32 тысячи уровней :)). Это будет файлик размером 2 Мб - см аттач.
3) запускаем на пустой базе: isql /3333:e30 -i nested_blocks.tmp

Можно перед "3)" открыть соседнее окошко, чтобы глядеть, как будет меняться значение генератора по мере выполнения блока "в глубину".
Только... никак оно не будут меняться! Примерно 30-40 сек значение по show sequ так и будет торчать в нуле, а затем команда 'show sequ' вообще перестанет что-либо выдавать - и наступит глухой висяк. Более того, с этого момента станет невозможным:
1) подключение к этой базе;
2) подключение или создание вообще любой другой базы по удаленному протоколу для данного инстанса ФБ (!)

К сообщению приложен файл (nested_blocks.tmp.rar - 42Kb) cкачать
23 июл 15, 13:10    [17925353]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Таблоид
чистой воды издевательство и за гранью добра и зла
ps. а еще и службу ФБ при этом не остановить, только килянием в PE...
23 июл 15, 13:12    [17925361]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 7826
очередной вариант на тему "уложу сервер одним запросом"?
23 июл 15, 13:17    [17925379]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

>BEGIN..END

ты правда считаешь что такую ересь надо документировать? "Не ограничено" это в разумных пределах. Никто такую процедуру написать руками не сможет и да поддерживать её не реально.
23 июл 15, 13:17    [17925383]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28460

мало ему того, что разработчикам мозг выносит, так теперь и до парсера очередь дошла.

снимите шляпы! обнажите головы! сейчас состоится вынос тела моцга! (с)

Posted via ActualForum NNTP Server 1.5

23 июл 15, 13:21    [17925413]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Если количество вложенных BEGIN..END превышает 10 уже стоит задуматься над сменой консерватории. Ну разбить процедуру на несколько, или может логические условия по возможности объединить.

Теперь про скрипт создающий мегапроцедуры. Когда такое видишь уже начинаешь жалеть о том что лимит на текст запроса в 64K сняли. Хотя для пакетов это было необходимо.
23 июл 15, 13:26    [17925442]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Если бы "оно" в ответ на 32к уровней вывалилось с ошибкой, или с багчеком или вообще ФБ бы грохнулся, то я бы тихо промолчал :)
Но тут - висяк, причём конкретный такой: ни к одной из баз подключиться больше не могу. При том, что проц не загружен, вообще.
Такие вот делы...
23 июл 15, 13:40    [17925507]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

это не к доке вопросы. Пиши трекеру.

Для execute block это может быть критично, для объектов метаданных нет, потому как создать объекты метаданных в FB3 может только SYSDBA, владелец базы, пользователь с ролью RDB$ADMIN и кому те выданы права grant create ...
23 июл 15, 14:13    [17925638]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
это не к доке вопросы. Пиши трекеру.
Трекер я успею посетить, но к доке таки просьба есть: убери оттуда слова "глубина неограниченна". На вышеприведенном батнике у мну получается, что её лимит ~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 июл 15, 14:47    [17925755]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
Пиши трекеру.
Сбацал... Теперь побьют, наверное... С вердиктом "Won't fix" ...
23 июл 15, 15:47    [17926174]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
просто мысль
Guest
Таблоид
SQL> create or alter user "ВасяПупкинКулха" password '123';
-- прокатывает, а вот этот обломится:
SQL> create or alter user "ВасяПупкинКулхац" password '123';
Statement failed, SQLSTATE = 22001
arithmetic exception, numeric overflow, or string truncation
-string right truncation
-expected length 31, actual 16

Кто бы Trusted Auth потестировал, на предмет адекватности работы с длинными именами win-пользователей, типа "Фамилия Имя Отчество". Возможно там всё плохо.
23 июл 15, 16:17    [17926378]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pp 311-312
IF ... THEN ... ELSE
. . .
IF (<condition>)
THEN <compound_statement>
[ELSE <compound_statement>
. . .
сompound_statement Оператор или блок операторов
После выделенного слова предлагаю добавить: "(для ELSE - можно указать следующий IF)", т.е. я вот про это:
execute block returns(how_much varchar(20)) as
declare n int;
begin
n = rand()*1000;
if (n < 100) then how_much = 'poor';
else if ( n < 300 ) then how_much = 'middle';
else if ( n < 700 ) then how_much = 'optimal';
else how_much = 'high';
suspend;
end
23 июл 15, 16:25    [17926439]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
pp 311-312
IF ... THEN ... ELSE
. . .
IF (<condition>)
THEN <compound_statement>
[ELSE <compound_statement>
. . .
сompound_statement Оператор или блок операторов
После выделенного слова предлагаю добавить: "(для ELSE - можно указать следующий IF)", т.е. я вот про это:
execute block returns(how_much varchar(20)) as
declare n int;
begin
n = rand()*1000;
if (n < 100) then how_much = 'poor';
else if ( n < 300 ) then how_much = 'middle';
else if ( n < 700 ) then how_much = 'optimal';
else how_much = 'high';
suspend;
end


следующий IF как раз и является оператором. Не вижу противоречий
23 июл 15, 17:41    [17926896]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
просто мысль
Кто бы Trusted Auth потестировал, на предмет адекватности работы с длинными именами win-пользователей, типа "Фамилия Имя Отчество". Возможно там всё плохо.
У меня получился взлёт TrustedAuth только при выполнении следующих условий:
1) коннект идёт к localhost, а не к другому хосту. При попытке коннекта не к localhost - "your user name / password траляля, идите к вашему сисдбаю"
и
2) имя OS-усера записано только в ascii-символах. Если оно есть "ВасисуалийПупка", то выдать его в isql'е не получится - malformed string (при том, что предварительно в консоли делаю chcp 1251 и коннект идёт с -ch win1251).

Короче, кому интересно - трахайтесь сами с этим trusted auth, "изабэлло" гарантированно )
23 июл 15, 18:10    [17927023]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Таблоид
1) коннект идёт к localhost, а не к другому хосту. При попытке коннекта не к localhost - "your user name / password траляля, идите к вашему сисдбаю"
По этому пункту отбой: на удалённой машине был неверно вбит кириллический OS-user, который должен был лезть к ней. Но с malformed string трабла осталась, так что создал CORE-4885
23 июл 15, 20:02    [17927294]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
просто мысль
Guest
Таблоид
Короче, кому интересно - трахайтесь сами с этим trusted auth, "изабэлло" гарантированно )

Имхо это нужно добавить в документацию, в раздел known issues. А то человек прочитает документацию и ему покажется что оно работает всегда. А оно оказывается не всегда.
Я например был бы рад прочитать о всех кnown issues в специальном разделе документации.
23 июл 15, 20:15    [17927323]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
просто мысль
Таблоид
Короче, кому интересно - трахайтесь сами с этим trusted auth, "изабэлло" гарантированно )

Имхо это нужно добавить в документацию, в раздел known issues. А то человек прочитает документацию и ему покажется что оно работает всегда. А оно оказывается не всегда.
Я например был бы рад прочитать о всех кnown issues в специальном разделе документации.
Пока что рано создавать эти самые known issues, т.к. внутри 3.0 еще многое чего может поменяться до её выпуска.
Заскорузлые баги / багофичи смотрите в трекере, ставьте фильтр по project = 'core', issue type = {'Bug', 'Improvement'}, status = 'Open' и, если нужно 'created before'.
ЗЫ. А самое лучшее - поставьте 3.0 у себя и начинайте изгаляться над ней. Время пришло, уже RC1 в снапшотах :-)
23 июл 15, 20:36    [17927373]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
просто мысль
Guest
Таблоид
просто мысль
пропущено...

Имхо это нужно добавить в документацию, в раздел known issues. А то человек прочитает документацию и ему покажется что оно работает всегда. А оно оказывается не всегда.
Я например был бы рад прочитать о всех кnown issues в специальном разделе документации.
Пока что рано создавать эти самые known issues, т.к. внутри 3.0 еще многое чего может поменяться до её выпуска.

Может и рано, но я совершенно точно предпочёл бы увидеть актуальные кnown issues в документации поставляемой с релизом.
23 июл 15, 22:25    [17927649]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
просто мысль,

3.0 не релиз ещё. Там ставятся в примечание только то что совершенно точно не будет исправлено к релизу.
24 июл 15, 00:13    [17927966]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
2 таблоид - ты вроде предлагал описать compatibility issues именно для тройки. Возьмешься их хотя бы перечислить? В отдельной ветке или в личке.
24 июл 15, 09:41    [17928532]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
dimitr
2 таблоид - ты вроде предлагал описать compatibility issues именно для тройки. Возьмешься их хотя бы перечислить? В отдельной ветке или в личке.
попробую; черновик сначала пришлю тебе в личку. Но и Дениса тоже припахать сюда надо, у него в голове больше такой инфы сидит :-)
24 июл 15, 10:03    [17928615]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
Внутри аналитической функции, например sum( <expr> )over(), выражение <expr> - может быть "просто" агрегатом, см ниже.
И еще: тип возврата - всегда BIGINT, а не "тот же что и аргумент функции expr".


SQL> recreate table test(x smallint);
SQL> set sqlda_display on;

SQL> select sum( sum(x) )over() from test;
. . .


вау! Оно даже вот так работает

select
  code_horse,
  avg(height_horse),
  rank() over(order by avg(height_horse)) as r
from measure
where height_horse is not null
group by code_horse


В общем буду думать как это описать. Причём судя по плану сначала делается агрегирование, а потом поверх него уже окно строится. Возьму на заметку. Ибо раньше для таких случаев использовал DT или CTE
24 июл 15, 10:33    [17928739]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
pg 230
Замечание о равенстве

Оператор "=", который явно используется во многих условиях соединении и неявно
в соединениях именованными столбцами и естественных соединениях, только при
сравнении значений со значениями.
В соответствии со стандартом SQL, NULL не
является значением и, следовательно, два значения NULL не равны и ни неравны
друг с другом.
В выделенном тексте пропущено какое-то слово. Может, имелось в виду это: "Оператор "=", который <...>, ДАЁТ ОЖИДАЕМЫЙ РЕЗУЛЬТАТ только при сравнении значений со значениями (а не с NULL)" - ?


В оригинале было
автор
The “=” operator, which is explicitly used in many conditional joins and implicitly in named column
joins and natural joins, only matches values to values.


так как ты написал в принципе верно
24 июл 15, 16:14    [17931080]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Решил вот так написать

автор
Оператор "=", который явно используется во многих условиях соединении и неявно в соединениях именованными столбцами и естественных соединениях, сравнивает только значения со значениями.
24 июл 15, 16:37    [17931195]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Последние два слова ("со значениями") - лишние.

Posted via ActualForum NNTP Server 1.5

24 июл 15, 17:13    [17931484]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Прибейте там упоминание про NULL гвоздями - обязательно найдутся умельцы.
24 июл 15, 18:11    [17931761]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
DarkMaster,

оно там есть. Абзац полностью звучит так

Замечание о равенстве
Оператор "=", который явно используется во многих условиях соединении и неявно
в соединениях именованными столбцами и естественных соединениях, сравнивает
только значения со значениями. В соответствии со стандартом SQL, NULL не является
значением и, следовательно, два значения NULL не равны и ни неравны друг с другом.
Если необходимо, чтобы значения NULL соответствовали друг другу при объединении,
используйте оператор IS NOT DISTINCT FROM. Этот оператор возвращает истину,
если операнды имеют то же значение, или, если оба они равны NULL.

SELECT *
FROM A
JOIN B ON A.id IS NOT DISTINCT FROM B.code


это вообще про предложение JOIN
24 июл 15, 18:18    [17931782]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Мелочёвка, но таки подправить надо.

Вот тута:
267
UPDATE target[[AS] alias] 
SET col= newval[, col= newval...]
. . .
- всё хорошо.

А вот тута:
275
MERGE INTO target[AS target_alias] 
USING <source>[AS source_alias]
ON <join condition>
<merge when>[<merge when>...]
. . .
- не хватает "[" & "]" вокруг "AS", т.к. это слово необязательное везде и всегда.
24 июл 15, 22:44    [17932722]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
По mon$attachments, mon$memory_usage, mon$io_stats, mon$record_stats и появившейся в 3.0 таблице mon$table_stats можно закинуть в доку пару примеров ? Они мне зело помогли, когда искал buttleneck'и в oltp-emul тесте:
1. Снимок с детализацией по таблицам:
select
        t.mon$table_name
        ,r.mon$record_inserts
        ,r.mon$record_updates
        ,r.mon$record_deletes
        ,r.mon$record_backouts
        ,r.mon$record_purges
        ,r.mon$record_expunges
        -----------
        ,r.mon$record_seq_reads
        ,r.mon$record_idx_reads
        ,r.mon$record_rpt_reads
        ,r.mon$backversion_reads
        ,r.mon$fragment_reads
        -----------
        ,r.mon$record_locks
        ,r.mon$record_waits
        ,r.mon$record_conflicts
        ------------
        ,a.mon$stat_id
    from mon$record_stats r
    join mon$table_stats t on r.mon$stat_id = t.mon$record_stat_id
    join mon$attachments a on t.mon$stat_id = a.mon$stat_id
    where
        a.mon$attachment_id = current_connection
    ;


2. Снимок обобщённых данных по текущему коннекту (БЕЗ детализации по таблицам):
select
        -- mon$io_stats:
         i.mon$page_reads
        ,i.mon$page_writes
        ,i.mon$page_fetches
        ,i.mon$page_marks
        -- mon$record_stats:     
        ,r.mon$record_inserts
        ,r.mon$record_updates
        ,r.mon$record_deletes
        ,r.mon$record_backouts
        ,r.mon$record_purges
        ,r.mon$record_expunges
        ,r.mon$record_seq_reads
        ,r.mon$record_idx_reads
    
        ,r.mon$record_rpt_reads
        ,r.mon$backversion_reads
        ,r.mon$fragment_reads
    
        ,r.mon$record_locks
        ,r.mon$record_waits
        ,r.mon$record_conflicts
        ------------------------
        ,u.mon$memory_used
        ,u.mon$memory_allocated
        ,a.mon$stat_id
        ,a.mon$server_pid
    from mon$attachments a
    left join mon$memory_usage u on a.mon$stat_id=u.mon$stat_id
    left join mon$io_stats i on a.mon$stat_id=i.mon$stat_id     
    left join mon$record_stats r on a.mon$stat_id=r.mon$stat_id     
    where     
      a.mon$attachment_id = current_connection
   ;
24 июл 15, 23:04    [17932790]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
194
Параметры оператора SET GENERATOR
seq_name Имя последовательности (генератора).
new_val Новое значение последовательности (генератора). 64 битное целое в
диапазоне от -2^63..2^63+1
Денис, подправь, плз: макс. bigint есть 2^63-1 (9,223,372,036,854,775,807)
29 июл 15, 09:04    [17948228]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

попправлю
29 июл 15, 09:12    [17948244]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
624
Пример E.8. Получение уровня изолированности текущей
транзакций
SELECTMON$ISOLATION_MODE
FROMMON$TRANSACTIONS
WHEREMON$TRANSACTION_ID = CURRENT_TRANSACTION
"Вредный" пример, ибо за ним будут лезть и копипастить в код и грузить бедный сервак лишним запросом к mon$ :-)
А между тем, уровень изолированности определять лучше так:
rdb$get_context('SYSTEM','ISOLATION_LEVEL')

Лучше записать в доку запрос типа "отобрать инфу по всем аттачам, которые стартовали транзакции с режимом, отличающимся от RO/RC"
select a.* 
from mon$attachments a 
join mon$transactions t using (mon$attachment_id) 
where NOT (t.mon$read_only=1 and t.mon$isolation_mode>=2 );
29 июл 15, 09:26    [17948314]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

можно и такой.

Ты мне вот что скажи

CORE-4881
Increase maximum string literal length to 64K (bytes) while setting a lower limit (of characters) for multibyte charsets based on their max char. length (UTF-8 literals will be limited to 16383 characters)

опять трекер в дауне

Это реально только для литералов? Что там с CHAR/VARCHAR переменными и столбцам таблиц?
Снапшоты под винду сейчас не строятся, пока сам проверить не могу.
29 июл 15, 09:32    [17948338]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
Симонов Денис,

только для литералов
29 июл 15, 13:11    [17949722]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
383
Параметры функции SUBSTRING
str Выражение строкового типа.
startpos Позиция, с которой начинается извлечение подстроки
Целочисленное выражение.
length Длина возвращаемой подстроки. Целочисленное выражение.
Какое именно целочисленное ? У мну получается, что только до 2^31-1 там всё пучком, а дальше -
Statement failed, SQLSTATE = 22003
arithmetic exception, numeric overflow, or string truncation
-numeric value is out of range

Так что, если не будет сбацано, то лучше правду там писать: int, и не более :-)
30 июл 15, 15:53    [17955902]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Таблоид
лучше правду там писать: int

Ты не поверишь, но "int" и есть "целое".

Posted via ActualForum NNTP Server 1.5

30 июл 15, 15:59    [17955965]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

а дальше BLOB пока размер больше не может быть
30 июл 15, 16:01    [17955993]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Dimitry Sibiryakov,

а smallint, bigint - чо, дробные ?
30 июл 15, 16:20    [17956145]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
а дальше BLOB пока размер больше не может быть
Может. Тест сделай, как я в тикете написал.
30 июл 15, 16:20    [17956153]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Таблоид
а smallint, bigint - чо, дробные ?

Они так, погулять вышли.

Posted via ActualForum NNTP Server 1.5

30 июл 15, 16:32    [17956226]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

тут есть кое-что про блобы >2G

http://firebirder.ru/firebird_and_large_blob#comments

Судя по комментам это надолго. По крайней мере не в FB3
30 июл 15, 16:42    [17956310]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Но читать и писать такие блобы ничто не мешает.

Posted via ActualForum NNTP Server 1.5

30 июл 15, 16:48    [17956343]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Dimitry Sibiryakov,

Согласен. Но вот обрабатывать их строковыми функциями, особенно SUBSTRING ... Даже если это сделают, то только спровоцирует некоторых, которые потом будут жаловаться на дикие тормоза, когда FB уйдёт в своп.

Хотя для CHAR_LENGTH, BIT_LENGTH и OCTET_LENGTH выходной результат теперь BIGINT, но они по крайней мере не создают новый BLOB
30 июл 15, 17:01    [17956406]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
только спровоцирует некоторых, которые потом будут жаловаться на дикие тормоза, когда FB уйдёт в своп
Это будут _ИХ_ проблемы, а не ФБ. Если в СУБД явно не запрещено создавать такие блобы, то почему должны быть запрещены вспомогательные операции с ними ? Давайте тогда вообще запретим конкатенацию blob-переменных, а то ведь она тоже "временные пухлости" в базе создаёт. Или вообще запросы с кросс-джойнами отменим, а то ФБ тормозить начнёт :)
30 июл 15, 17:11    [17956474]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Обновил документацию
30 июл 15, 23:31    [17957805]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
Обновил документацию
А ты будешь что-нить менять в доке по вот этим вопросам (про оконные ф-ции и юзание внутри их агрегатов, про rank() etc):
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17923351
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17928739
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17923477
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17923528

- ?

И еще.
32
Строковые литералы
Строковые литералы могут содержать произвольные символы. Весь литерал
заключается в апострофы. Апостроф внутри символьного литерала должен
повторяться два раза, чтобы отличить его от признака завершения литерала.
Максимальная длина строкового литерала составляет 64 КБайт.
1) Бравур на тему "произвольные символы" слегка настораживает. Ты ведь при чарсете коннекта = win1251 не воткнёшь символ евро в литерал ? Т.е. я к тому, что надо про чарсет коннекта упомянуть. Кроме того, создать литералы такой длины в мультибайтовой кодировке не удастся. Например, unicode-строка, в которой все символы требуют для кодирования три байта, может создана только до 16383 символов, и это будет 49149 октета (а не "64 Кбайт").
2) Точное значение максимального числа октетов, которые можно затолкать в строковый литерал, равно 65535, т.к. это 2^16-1. Лучше записать именно это число, а не "64 КБайт".
31 июл 15, 13:10    [17959679]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
А ты будешь что-нить менять в доке по вот этим вопросам (про оконные ф-ции и юзание внутри их агрегатов, про rank() etc):
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17923351
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17928739
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17923477
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1155625&msg=17923528


да. Но про агрегаты внутри окна я ещё не решил куда воткнуть, точно не в описание агрегатных функций. Пока там есть одно изменение. см. секцию "Оконные (аналитические) функции", где расписаны параметры и написано что использовать агрегаты можно. Это бы снабдить примерчиком конечно. Но я думаю один пример мало чем поможет, там очень много ограничений на этот счёт, когда этот агрегат не сам по себе, а с предложением GROUP BY, что гораздо полезнее. Вот здесь надо бы уже пару абзацов написать, когда это позволяется, а когда нет, и про то что агрегатная функция будет выполнена раньше построения окна.

Таблоид
И еще.
32
Строковые литералы
Строковые литералы могут содержать произвольные символы. Весь литерал
заключается в апострофы. Апостроф внутри символьного литерала должен
повторяться два раза, чтобы отличить его от признака завершения литерала.
Максимальная длина строкового литерала составляет 64 КБайт.
1) Бравур на тему "произвольные символы" слегка настораживает. Ты ведь при чарсете коннекта = win1251 не воткнёшь символ евро в литерал ? Т.е. я к тому, что надо про чарсет коннекта упомянуть. Кроме того, создать литералы такой длины в мультибайтовой кодировке не удастся. Например, unicode-строка, в которой все символы требуют для кодирования три байта, может создана только до 16383 символов, и это будет 49149 октета (а не "64 Кбайт").
2) Точное значение максимального числа октетов, которые можно затолкать в строковый литерал, равно 65535, т.к. это 2^16-1. Лучше записать именно это число, а не "64 КБайт".


По поводу произвольных символов. Там довольно много вариантов. Если этот литерал посылается с клиента, то да символы ограничены чарсетом коннекта. А вот внутри ХП ты можешь разные кодировки применять. Да и вообще указывать кодировку по месту. Так что лучше здесь оставить как есть.

По поводу 64K, наверное проще действительно написать 65535 байт. Про количество символов лучше не писать. Это и так разжёвывается чуть выше, где говорится о кодировках.
31 июл 15, 13:30    [17959769]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
Симонов Денис
Если этот литерал посылается с клиента, то да символы ограничены чарсетом коннекта. А вот внутри ХП ты можешь разные кодировки применять. Да и вообще указывать кодировку по месту.

внутри ХП литерал может использовать только символы чарсета, в каком эта ХП создавалась. Либо да, указать "по месту".

я бы написал: "Строковые литералы могут содержать произвольные символы, допустимые для применяемой/используемой кодировки". А уж каким образом применяемой/используемой - это оставить за кадром.
31 июл 15, 14:00    [17960001]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
dimitr,

да так будет лучше всего
31 июл 15, 14:09    [17960062]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
обновил документацию.
2 авг 15, 13:33    [17965811]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид
pg 310
BEGIN ... END
. . .
Блоки могут быть вложенными, глубина вложения не ограничена.
я бы не был столь категоричен :-)


Адриано решил ограничить вложенность 512 уровнями. Добавлено в документацию.
6 авг 15, 22:43    [17986341]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Мелочь:
pg 350
Параметры оператора POST_EVENT SHADOW
event_name Имя события, ограничено 64 символами.
Описание:
Оператор POST_EVENT сообщает о событии менеджеру событий, который сохраняет
его в таблице событий.
Очепятка какая-то, видимо из-за копипаста. 'SHADOW' тут как-то странновато выглядит... ;-)
28 авг 15, 18:15    [18083028]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

поправил
31 авг 15, 22:59    [18093358]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
добавлены изменения из последнего снапшота, касающиеся DDL триггеров
3 сен 15, 21:19    [18105647]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
142
5. Триггеры на события ALTER и DROP обычно не запускаются. Если объект не
существует. Исключения описаны в пункте 6.
Напомнило что-то: "я тебя потом... поцелую... если захочешь..." (к/ф) - запятую бы надо перед "если"... :-)
4 сен 15, 17:18    [18110203]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Таблоид
запятую бы надо перед "если"...

Получится ещё хуже: "иногда они запускаются даже если объект не существует". А это уже
прямая дорога в трекер.

Posted via ActualForum NNTP Server 1.5

4 сен 15, 17:21    [18110235]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
142
8. Для упакованных процедур и функций не запускаются индивидуальные триггеры
{CREATE | ALTER | DROP} {PROCEDURE | FUNCTION}.
- может, лучше так: "для процедур и функций в составе пакетов", т.е. как в доке:
doc\sql.extensions\README.ddl_triggers.txt
8) Packaged procedures and triggers do not fire individual {CREATE | ALTER | DROP} {PROCEDURE | FUNCTION} triggers.
- ?
А то что-то про архиваторы и степень компрессии мысли идут... :-)
4 сен 15, 17:23    [18110253]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

да чёто фигня какая-то. Должно быть "если объект не существует, то триггеры на события ALTER и DROP не запускаются. ..."
поправлю
4 сен 15, 17:25    [18110266]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

я ещё изменения вносил по поводу размера страницы по умолчанию в CREATE DATABASE. Теперь она 8192. Вроде больше она нигде всплыть не должна.
4 сен 15, 17:45    [18110452]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Симонов Денис
Должно быть "если объект не существует, то триггеры на события ALTER и
DROP не запускаются. ..."

Кэп, а ты уже написал, что для DELETE и UPDATE, которые не изменили ни одной строчки,
триггера тоже не запускаются?..

Posted via ActualForum NNTP Server 1.5

4 сен 15, 18:24    [18110661]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Dimitry Sibiryakov,

это Адриано написал вообще-то. Предложение имеет смысл для операторов CREATE OR ALTER и RECREATE.
4 сен 15, 19:19    [18110868]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Dimitry Sibiryakov,

на самом деле со следующим пунктом звучит вполне нормально


5. Если объект метаданных не существует, то обычно триггеры на события ALTER и DROP не запускаются. Исключения описаны в пункте 6.

6. Исключением из правила 5 являются BEFORE ALTER/DROP USER триггеры, которые будут вызваны, даже если имя пользователя не существует. Это вызвано тем, что эти команды выполняются для базы данных безопасности, для которой не делается проверка существования пользователей перед их выполнением. Данное поведение, вероятно, будет отличаться для встроенных пользователей, поэтому не пишите код, который зависит от этого.
4 сен 15, 19:24    [18110886]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

поправил
4 сен 15, 19:33    [18110919]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Обновлена документация по 2.5 и 3.0. Изменения коснулись главы PSQL. Прежде всего структуры и общего описания языка.
6 сен 15, 18:24    [18115437]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Идущий лесом
Guest
Опечатки в Руководстве 3.0 страницах 45-46

Таблица 3.7. Описание формата даты и времени

1.
Год из 4ех цифр - ужасно не по-русски. Места хватает, чтобы написать
"Год из черырёх цифр"

2.
Год из 2ух цифр (00-99). - исправляем на
"Последние две цифры года (00-99)"

3.
лидирующие и завещающие пробелы игнорируются
"завещающие" на завершающие


Эти же опечатки присутствуют и в Руководстве 2.5, на странице 39
10 сен 15, 14:54    [18133145]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Идущий лесом
Guest
сам влепил опечатку четырёх
10 сен 15, 15:06    [18133242]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
обновлено
14 сен 15, 23:28    [18149093]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
MNF
Member

Откуда: с глобуса
Сообщений: 1497
Таблица 2.8
10 окт 15, 16:44    [18262510]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
MNF
Member

Откуда: с глобуса
Сообщений: 1497
MNF
Таблица 2.8

4-я колонка, диалект неверно указан.
10 окт 15, 16:45    [18262511]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
MNF,

исправил. Кроме того, перенесены дополнения и улучшения из документации по 2.5
11 окт 15, 00:01    [18263464]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
В документацию внесены изменения связанные с внедрением 64 битных номеров транзакций. См. CORE-4965
20 окт 15, 11:37    [18301449]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
исправил несколько мелких ошибок
10 ноя 15, 23:07    [18397546]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
исправил несколько мелких ошибок, улучшил оформление и добавил про права CREATE/ALTER/DROP DATABASE
22 ноя 15, 19:10    [18456331]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
c 220
При создании сортировки можно указать учитываются ли конечные пробелы при сравнении.
Если указана опция NO PAD, то конечные пробелы при сравнении учитываются. Если указана
опция PAD SPACE, то конечные пробелы при сравнении не учитываются
.

Тут надо подправить: при проверке на равенство или ">" / "<" / between - да, действительно не учитываются.
А вот при использовании like, containing & starting with - еще как учтутся.

create collation nums_coll for utf8 from unicode pad space case insensitive 'NUMERIC-SORT=1';
commit;

set list on;
select
'|'||s1||'|' as s1
,'|'||s2||'|' as s2
,iif(s1 = s2, 1, 0) as "s1=s2"
,iif( s1 containing s2, 1, 0) as "s1 containing s2"
,iif( s1 starting with s2, 1, 0) as "s1 starting with s2"
,iif( s1 like s2, 1, 0) as "s1 like s2"
,iif( s2 like s1, 1, 0) as "s2 like s1"
from (
select
_utf8 'qWE ' collate nums_coll as s1
,_utf8 'qwe ' collate nums_coll as s2
from rdb$database
);

Output:
S1                              |qWE |
S2 |qwe |
s1=s2 1
s1 containing s2 0
s1 starting with s2 0
s1 like s2 0
s2 like s1 0


ЗЫ. А также в описание like (pg 66) и containing (pg 69) можно тоже добавить про эту их фичу (учёт trailing-пробелов, незав. от чарсета и коллации).
27 ноя 15, 16:04    [18482406]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

like, starting with и containing это не сравнение строк. Сюда же можно и similar to включить.

Таблоид
ЗЫ. А также в описание like (pg 66) и containing (pg 69) можно тоже добавить про эту их фичу (учёт trailing-пробелов, незав. от чарсета и коллации).


это можно
30 ноя 15, 20:16    [18494278]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Энди Таккер
Member

Откуда:
Сообщений: 363
"Руководство по языку SQL СУБД Firebird 3.0", стр. 531.
В следующих верВиях поддержка SQLCODE может полностью прекратиться.
1 дек 15, 18:18    [18498957]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Энди Таккер
Member

Откуда:
Сообщений: 363
"Руководство по языку SQL СУБД Firebird 3.0",
стр. 146
В таблице 4.22 содержимое первой колонки выходит за её границы.
стр. 148
При создании триггера каждое событие (INSERT, UPDATE или DELETE) не должЕН упоминаться более одного раза.
5 дек 15, 09:10    [18517206]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Энди Таккер,

поправил.

Таблоид,

в LIKE и CONTAINING добавил про учёт конечных пробелов.
5 дек 15, 16:52    [18518095]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg 284 select ... from ...into :var
pg 355 for select ... from ...into :var

Не вижу там предупреждения, что если :var был до этого установлен чему-то not-null, а выборка не вернула ни одной строки, то этот :var останется равным прежнему значению, т.е. не обnull'ится.
Или плохо ищу ?
5 дек 15, 20:04    [18518690]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Arioch
Member

Откуда:
Сообщений: 9144
c 220
При создании сортировки можно указать учитываются ли конечные пробелы при сравнении.
Если указана опция NO PAD, то конечные пробелы при сравнении учитываются. Если указана
опция PAD SPACE, то конечные пробелы при сравнении не учитываются
.


Симонов Денис
like, starting with и containing это не сравнение строк. Сюда же можно и similar to включить


Тогда желательно там же это добавить как сноску. Лучше лишний раз повторить, чем потом "а вот 100 страниц назад..."
7 дек 15, 12:49    [18523638]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Граур Станислав
Member

Откуда:
Сообщений: 871
Наверное, об этом уже писали, но на всякий случай:

На странице 29
Числа типа SMALLINT находятся в диапазоне 2^-16 .. 2^16 - 1, или -32 768 .. 32 767


а должно быть
Числа типа SMALLINT находятся в диапазоне -2^15 .. 2^15 - 1

Аналогично для Integer и BigInt - страницы 29-30
21 дек 15, 07:20    [18586665]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Граур Станислав,

мне почему-то казалось что я это уже исправлял. Оказалось нет. Исправлю
21 дек 15, 08:06    [18586723]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
поправил для 2.5 и 3.0
21 дек 15, 08:25    [18586761]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
стр 71
Создание регулярных выражений
В регулярных выражениях большинство символов представляет сами себя. Единственное
исключение — специальные символы (special character):
[ ] ( ) | ^ - + * % _ ? {
и управляющие символы, если они заданы.
Пропущена закрывающая фигурная скобка. Она, как оказалось, тоже требует '\':
+ 2.5
C:\MIX\firebird\OLTPTEST>isql /3255:"C:\MIX\firebird\OLTPTEST\OLTP25{smaLL}.FDB"
Database: /3255:C:\MIX\firebird\OLTPTEST\OLTP25{smaLL}.FDB, User: SYSDBA
SQL> set list on;
SQL> select mon$database_name from mon$database;

MON$DATABASE_NAME C:\MIX\FIREBIRD\OLTPTEST\OLTP25{SMALL}.FDB


SQL> set list on; select 1 from mon$database where mon$database_name similar to '%[\\/](OLTP25\{SMALL\}).FDB' escape '\';

CONSTANT 1


SQL> set list on; select 1 from mon$database where mon$database_name similar to '%[\\/](OLTP25\{SMALL}).FDB' escape '\';

Statement failed, SQLSTATE = 42000
Invalid SIMILAR TO pattern
+ 3.0
C:\MIX\firebird\OLTPTEST>isql /3333:"C:\MIX\firebird\OLTPTEST\OLTP30{smaLL}.FDB"
Database: /3333:C:\MIX\firebird\OLTPTEST\OLTP30{smaLL}.FDB, User: SYSDBA
SQL> set list on;
SQL> select mon$database_name from mon$database;

MON$DATABASE_NAME

===============================================================================
C:\MIX\FIREBIRD\OLTPTEST\OLTP30{SMALL}.FDB


SQL> set list on; select 1 from mon$database where mon$database_name similar to '%[\\/](OLTP30\{SMALL\}).FDB' escape '\';

CONSTANT 1


SQL> set list on; select 1 from mon$database where mon$database_name similar to '%[\\/](OLTP30\{SMALL}).FDB' escape '\';

Statement failed, SQLSTATE = 42000
Invalid SIMILAR TO pattern
Проверено на:
WI-V2.5.5.26952
WI-V3.0.0.32239
25 дек 15, 19:23    [18611083]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

поправил
25 дек 15, 22:18    [18611723]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Денис,

Точно поправил ? я вот скачал только что отсюда (2.5 и 3.0 соотв-но):

https://www.assembla.com/spaces/firebird-russian-documentation/documents/a79eFIzQqr5io3acwqjQXA/download/a79eFIzQqr5io3acwqjQXA

https://www.assembla.com/spaces/firebird-russian-documentation/documents/dbyddG3Vmr5lSgacwqjQXA/download/dbyddG3Vmr5lSgacwqjQXA

- и как-то не бросилось в глаза... Или ссылки опять на старьё указывают ?
25 дек 15, 22:54    [18611890]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

там на титульной странице дата правки стоит. Да и на странице 71 сейчас обе фигурные скобки
25 дек 15, 23:54    [18612124]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
dennis-r
Member

Откуда:
Сообщений: 204
Стр. 297 Синтаксис UPDATE OR INSERT: пропущено слово INTO
UPDATE OR INSERT target [(<column_list>)] 
28 дек 15, 15:18    [18618686]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
dennis-r,

спасибо. Исправлю
28 дек 15, 15:32    [18618767]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
dennis-r,

исправил
28 дек 15, 21:36    [18620236]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
улучшил навигацию по таблицам мониторинга и системным таблицам
2 мар 16, 22:40    [18889755]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
чччД
Guest
Страница 319.

Типы хранимых процедур
Существуют два вида хранимых процедур — выполняемые хранимые процедуры (executable
stored procedures) и селективные процедуры (selectable stored procedures).


Очень хорошо, что процедуры стали называться "селективными" (раньше назывались "процедуры выбора").

Однако, в следующем абзаце они снова становятся "процедурами выбора".


Страница 319, 3й абзац снизу

Хранимые процедуры выбора
Хранимые процедуры выбора обычно осуществляют выборку данных из базы данных,
возвращает при этом произвольное количество строк. /* Кроме того, предложение не согласовано:"хранимые - возвращает" .*/
...
Страница 319, последний абзац
Процедуры выбора могут иметь входные параметры и выходное множество, заданное в
предложении RETURNS заголовка процедуры.


Страница 320, первый абзац
Обращение к хранимой процедуре выбора осуществляется при помощи оператора SELECT
(см. Выборка из селективной хранимой процедуры). См. пример создания хранимой процедуры
выбора
в конце раздела CREATE PROCEDURE главы «Операторы DDL».



Страница 320, 2й абзац
Синтаксис создания выполняемых хранимых процедур и процедур выбора ничем не


Страница 320, 4й абзац
Заголовок хранимой процедуры обязательно содержит имя процедуры, которое должно
быть уникальным среди имён хранимых процедур, таблиц и представлений. В нем так
же может быть описано некоторое количество входных и выходных параметров. Входные
параметры перечисляются после имени процедуры внутри пары скобок. Выходные параметры,
которые являются обязательными для процедур выбора, перечисляются внутри пары скобок
в предложении RETURNS.


Страница 351, 2й абзац снизу
Пример 6.17. Использование оператора EXIT в процедуре выбора.

Страница 352, 2й абзац снизу
Пример 6.18. Использование оператора SUSPEND в процедуре выбора.


Страница 359
Оператор FOR SELECT выбирает очередную строку из таблицы (представления, хранимой
процедуры выбора)


Страница 517, 2й абзац снизу
Для хранимых процедур привилегия EXECUTE позволяет не только выполнять хранимые
процедуры, но и делать выборку данных из процедур выбора (с помощью оператора SELECT).


Страница 660, таблица, 2я строка снизу
автор
1 — хранимая процедура выбора
(содержит в своём составе
оператор SUSPEND);
4 мар 16, 19:02    [18898355]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
чччД,

поправил
4 мар 16, 21:56    [18898966]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
чччД
Guest
Стр 319, 3й абзац снизу.
Селективные хранимые процедуры обычно осуществляют выборку данных из базы данных,
возвращает при этом произвольное количество строк.


Грамматическая ошибка. Правильные варианты:

1. Селективные хранимые процедуры обычно осуществляют выборку данных из базы данных,
возвращают при этом произвольное количество строк.
2. Селективные хранимые процедуры обычно осуществляют выборку данных из базы данных,
возвращая при этом произвольное количество строк.
5 мар 16, 22:12    [18901738]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
чччД
Guest
То же самое - в руководстве FB 2.5, на стр 256.
5 мар 16, 22:14    [18901745]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Денис, а не добавить ли в доку некоторые нюансы про переменную row_count ?
5 мар 16, 22:39    [18901838]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

можно и добавить.
5 мар 16, 22:45    [18901870]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
чччД,

поправил

Таблоид,

добавил
8 мар 16, 15:08    [18908175]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Minkus
Member

Откуда:
Сообщений: 66
WinSspi надо Win_Sspi
стр.117 Compatibility Issues.
10 мар 16, 23:53    [18917916]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Minkus,

вот ведь странный человек. Открываем 117 страницу Руководство по языку SQL СУБД Firebird 3.0 и видим, что никакого "Compatibility Issues." там нет.

Баги в Release Notes надо сообщать сюда
11 мар 16, 08:48    [18918263]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

По какому принципу выстроены подразделы в DDL/DML? Лично я бы ожидал их отсортированными
по алфавиту. Сейчас минуту тупо пялился на список, пытаясь найти TABLE сразу перед TRIGGER...

Posted via ActualForum NNTP Server 1.5

11 мар 16, 16:21    [18920701]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Dimitry Sibiryakov,

особого порядка нет. А так в порядке того как обычно создаются объекты БД. Т.е до базы данных не создашь ничего, домены до таблиц, вьюхи на основе таблиц, потом триггеры... Хотя это не везде соблюдается. В принципе PDF содержит закладки (оглавление слева) по которому можно быстро переходить. В алфавитном индексе можно вообще все оператору по алфавиту смотреть. Но если есть идеи что улучшить предлагайте.
11 мар 16, 16:47    [18920864]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Симонов Денис
В принципе PDF содержит закладки (оглавление слева)

Вот на него-то я и пялился. Обычно там всё-таки слова по алфавиту, для быстрого поиска.

Posted via ActualForum NNTP Server 1.5

11 мар 16, 16:53    [18920897]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
стр 297, UPDATE
Синтаксис: 

UPDATE target[[AS] alias]
SET col= newval[, col= newval...]
[WHERE {search-conditions| CURRENT OF cursorname}]
[PLAN plan_items]
[ORDER BY sort_items]
[ROWS m[TO n]]
[RETURNING <returning_list>[INTO <variables>]]
. . .
Кляуза PLAN - указана, но пример с ней (именно для UPDATE) - стыдливо пропущен, объяснения даны для WHERE и затем перепрыгивают на ORDER BY
А я тут немного попытал кое-кого, и выяснилось вдруг, что можно указывать планы не только для примитивных update/delete случаев, но и в "сложносочетанных травмах", типа такой:
+
    recreate table company(id int not null primary key, contact_id int, company_name varchar(60));
recreate table contact(id int not null primary key using index contact_id, contact_name varchar(60));
alter table company add constraint company_fk foreign key(contact_id) references contact(id);
commit;

insert into contact values(1, '+784956253581, Vovan');
insert into contact values(2, '+375172223217, Shurik');
insert into contact values(3, '+380442057337, Vitalik');

insert into company values(100, 1, 'Pepsico, Inc.');
insert into company values(101, 1, '');
insert into company values(102, 2, 'Balaha, Inc.');
insert into company values(103, 2, '');
insert into company values(104, 2, null);
insert into company values(105, 3, null);
insert into company values(106, 3, 'Firebird Foundation');
commit;

set list on;

select c.*
from company c order by c.id;

set plan on;
set count on;

update company c set c.company_name =
( select k.contact_name
from contact k
where k.id = c.contact_id
PLAN (K INDEX (CONTACT_ID))
)
where c.company_name is null or c.company_name = ''
PLAN (C NATURAL)
;

set plan off;
set count off;

select c.*
from company c order by c.id;
2 Денис: добавь в копилку, плз (2.5 & 3.0). Авось пригодится.
17 мар 16, 08:21    [18941257]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

про планы в подзапросах вообще ничего не сказано. На выходных постараюсь добавить. И про update/delete тоже

Тем не менее такие запросы как этот

SELECT *
FROM COLOR
WHERE EXISTS(
             SELECT *
             FROM HORSE
             WHERE HORSE.CODE_COLOR = COLOR.CODE_COLOR
             PLAN (HORSE INDEX (FK_HORSE_COLOR)))
PLAN(COLOR NATURAL) 


через некоторое время могут перестать работать с таким планом, если in/exists начнут выполняться как полу-джойн.
17 мар 16, 09:45    [18941466]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
могут перестать работать с таким планом
Это уже будут проблемы индейцев, которые всунули PLAN-кляузу. Главное - зафиксировать в доке пример её применения, а про последствия можно и страшилку-предупреждалку красным цветом показать.
17 мар 16, 09:53    [18941497]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

это мои домыслы. Как появится ДЕ скажет точно.
17 мар 16, 10:01    [18941534]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
явные планы - зло :-) Уже сейчас они не работают на запросах сложнее линейных джойнов. Насчет semi-joins - можно просто их не применять, если указан явный план. Но если в целом говорить, то в будущем может что угодно отломиться на этот счет.
17 мар 16, 10:49    [18941776]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28460

Hello, Dimitr!
You wrote on 17 марта 2016 г. 11:31:01:

Dimitr
> Но если в целом говорить, то в будущем может что угодно отломиться на этот счет.

знаем. помним. 15 лет уже как ;)

Posted via ActualForum NNTP Server 1.5

17 мар 16, 11:32    [18942072]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
dimitr
явные планы - зло :-) Уже сейчас они не работают на запросах сложнее линейных джойнов.

вот поэтому ждёмс нормальных хинтов. То же зло, но иногда необходимое. Кстати в планах на FB4 я их не заметил.
17 мар 16, 13:33    [18942898]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
поэтому ждёмс нормальных хинтов. То же зло, но иногда необходимое.
Когда в будущем нормальные хинты появятся -тогда и будущую доку (для соотв. версии ФБ) можно будет подправить. Выкинуть PLAN, добавить всякие там insert /*+ append */ into ...
А пока лучше добить работающими фрагментами кода ту, что имеем. С указанием страшилок, что "планы - это ууу! не хорошо!" и т.п.
ИМХО.
17 мар 16, 14:13    [18943205]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28460

Таблоид, +100500!

Posted via ActualForum NNTP Server 1.5

17 мар 16, 14:19    [18943248]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

будет, не волнуйся.
17 мар 16, 14:44    [18943438]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
pg. 507
ALTER USER
Назначение: Изменение учётной записи пользователя Firebird.
Доступно в: DSQL.
Синтаксис:
ALTER {USER username| CURRENT USER}
{
[SET]
[PASSWORD 'password']
[FIRSTNAME 'firstname']
[MIDDLENAME 'middlename']
[LASTNAME 'lastname']
[ACTIVE | INACTIVE]
[TAGS (<tag>| DROP tagname[, <tag>| DROP tagname...] )]
}
[USING PLUGIN 'pluginname']
[{GRANT | REVOKE} ADMIN ROLE];
Из синтаксиса вроде бы понятно, что кляузу password "лучше" указывать первой, но явно об этом не говорится (или же нельзя это выразить данной нотацией - не знаю :)).
Так что лучше об этом заявить во всеуслышание:

SQL> create user foo password '123';
SQL> alter user foo firstname 'john' password 'bar' lastname 'smith';
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 33
-password
SQL> alter user foo firstname 'john' lastname 'smith' password 'bar';
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 50
-password
SQL> alter user foo password 'bar' firstname 'john' lastname 'smith';
SQL> -- только так прокатит --
18 мар 16, 15:05    [18948663]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28460

Hello, Таблоид!
You wrote on 18 марта 2016 г. 15:11:49:

Таблоид
> только так прокатит
дык это глюк

Posted via ActualForum NNTP Server 1.5

18 мар 16, 15:11    [18948715]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Мимопроходящий
дык это глюк

+1
В трекер, не в доку.

Posted via ActualForum NNTP Server 1.5

18 мар 16, 15:15    [18948754]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Сбацал.
18 мар 16, 16:41    [18949502]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Не знаю, куда лучше добавить: в "Соединения именованными столбами" (стр. 254) или же в "Неоднозначные имена полей в соединениях" (стр. 258), но суть в следующем:
SQL> recreate table t1(x int unique);
SQL> recreate table t2(x int unique);
SQL> set plan on;
SQL> select 1 from t1 a join t2 b on a.x=b.x where x = 0;
Statement failed, SQLSTATE = 42702
Dynamic SQL Error
-SQL error code = -204
-Ambiguous field name between table T2 and table T1
-X
/* да, так и должно быть*/

SQL> select 1 from t1 a join t2 b using(x) where x = 0;
PLAN JOIN (A NATURAL, B INDEX (RDB$2))
/* :::NB::: здесь будет NATURAL по одной из таблиц, хотя наверняка ожидалось PLAN JOIN (A INDEX (...), B INDEX (...))*/

SQL> select 1 from t1 a join t2 b using(x) where a.x = 0; -- или 'b.x'
PLAN JOIN (A INDEX (RDB$1), B INDEX (RDB$2))
/* ожидался, вероятно, именно этот план - см тж след. запрос */

SQL> select 1 from t1 a join t2 b using(x) where b.x = 0;
PLAN JOIN (A INDEX (RDB$1), B INDEX (RDB$2))

ИТОГО: граждане, будьте бдительны. Если юзаете using-способ соединения, то в where-секции столбы надо всё равно снабжать префиксами, если не хотите вдруг натуралов :-)

Объяснение смотрим тут: http://tracker.firebirdsql.org/browse/CORE-5040 (dimitr, 03/Apr/16 10:49 AM).

2 Денис: добавь, плз, в виде примера-предупреждалки в доку как по 3.0 так и по 2.5.
3 апр 16, 15:08    [19011004]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

ИХМО неоднозначные поля в WHERE не должны допускаться.
3 апр 16, 15:15    [19011014]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Arioch
Member

Откуда:
Сообщений: 9144
Симонов Денис,

так в случае "using(x)" они перестали быть неоднозначными

разумеется если не ввести в запрос третью таблицу ,в колторой ТОЖЕ есть столбец x

кстати, о третьей таблице ( с идентичным первым двум определением )...

select 1 from t1 a join t2 b using(x) join t3 c using(x) 
- интересно, это отработает? с кем будут сервер связывать c.x - с a.x или с b.x ?
4 апр 16, 13:44    [19014246]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Arioch,

да я всё равно добавлю примечание. Впрочем там работы несколько побольше, ибо кое-какие исправления надо внести из английской версии, обновление которой недавно вышло. Просто высказал своё мнение
4 апр 16, 14:18    [19014448]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Boolean, pg 41
Предикаты могут использовать оператор IS [NOT] для проверки соответствия. Например, field1
IS FALSE или field1 IS NOT TRUE
.
Примечание
• Представлен в API типом FB_BOOLEAN и константами FB_TRUE и FB_FALSE;
• Операторы эквивалентности (=, !=, <> и др.) допустимы во всех сравнениях;
• Значение TRUE больше чем FALSE;
. . .
Оператор 'IS', в отличие от "=", весьма привередлив: ему надо, чтобы сразу после него был только литерал TRUE | FALSE | UNKNOWN (записанный именно так, без апострофов), и ничего более.
Например, нельзя делать так:
select false is 'true' from rdb$database;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 17
-'true'

select false is (true) from rdb$database;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 17
-(

А вот с заменой 'IS' на '=' - всё прокатит ОК.
Надо бы добавить сиё в доку.
10 апр 16, 01:18    [19037869]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

я похоже забыл там ссылку добавить на описание предиката IS (Общие элементы языка/Предикаты/Другие предикаты сравнения/IS p. 80)

Добавлю ссылку и эту оговорку в этом предикате сделаю.
10 апр 16, 12:07    [19038470]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

добавил примечание про IS и про USING. Кроме того перенёс некоторые улучшения из английской версии LR, самое главное из которых касается особенностей задания чисел в 16ричном виде
10 апр 16, 18:47    [19039202]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Поправил приоритет операторов так чтобы описание соответствовало текущему положению вещей.
Задуматься об этом заставил тикет CORE-5193

Итак какой ответ должен быть

select not false = true is not unknown from rdb$database;


Согласно текущему приоритету по типам операторов:
1. Конкатенация
2. Арифметические
3. Сравнения
4. Логические

IS - это оператор сравнения, поэтому

not false = true is not unknown

эквивалентно
not ((false = true) is not unknown) => not (false is not unknown) => not true => false


Я предположил, что оператор IS должен обладать большим приоритетом, чем =, а потому
not (false = (true is not unknown)) => not (false = true) => not false => true

Что Адриано моментально сделал. А вот теперь я сомневаюсь.

А что насчёт этого говорит стандарт?
12 апр 16, 14:41    [19047506]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937
Симонов Денис
IS - это оператор сравнения

За стандарт не скажу, но http://www.tutorialspoint.com/sql/sql-operators.htm придерживается другого мнения.
12 апр 16, 15:18    [19047806]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Dimitry Sibiryakov
http://www.tutorialspoint.com/sql/sql-operators.htm придерживается другого мнения.
Мну кажется, что у них нет мнения про 'IS', от слова "вообще" (см аттачик).

К сообщению приложен файл. Размер - 47Kb
12 апр 16, 15:48    [19048016]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Таблоид
Member

Откуда:
Сообщений: 9454
Блог
Симонов Денис
А что насчёт этого говорит стандарт?
А ничего не говорит: про это приоритеты boolean операций он как-то стыдливо помалкивает ;-)

К сообщению приложен файл. Размер - 112Kb
12 апр 16, 15:54    [19048059]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Таблоид,

моё ИХМО. IS это один и тот же оператор что для BOOLEAN, что для проверки NULL.

В том же тикете я привёл как это сделано в PG. Сначала у них было так
http://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html#SQL-PRECEDENCE-TABLE
потом с какого-то перепугу они изменили вот так
http://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html#SQL-PRECEDENCE-TABLE

Причём Адриано тоже соосторожничал. Фикс применил только для FB4, но не тройки.
12 апр 16, 16:04    [19048125]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Dimitry Sibiryakov,

тут кстати важно не куда, они отнесли оператор IS (я с ними не согласен, ибо логические операторы это те что делаются над логическими значениями, а не те что дают логический результат), а конкретно приоритет одного оператора над другим. Что у них не описано.
12 апр 16, 16:08    [19048159]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Arioch
Member

Откуда:
Сообщений: 9144
Симонов Денис
Что Адриано моментально сделал


он в трекере вроде ничего не делал, просто со всеми согласился, в основном с ПостГрессом :-)
12 апр 16, 16:14    [19048196]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
Arioch,

да ну. Fix Versions 4.0 Alpha видишь? Можешь ещё в GIT по четвёрке изменения посмотреть
12 апр 16, 16:19    [19048231]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Arioch
Member

Откуда:
Сообщений: 9144
Симонов Денис,

ну я на вкладку commits заглянул - там пусто было

может быть вам стоит как-нибудь настроить https://marketplace.atlassian.com/plugins/com.xiplink.jira.git.jira_git_plugin/server/overview
12 апр 16, 16:25    [19048260]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6700
Arioch
может быть вам стоит как-нибудь настроить

портируй его на нашу версию JIRA сначала, умник...
12 апр 16, 19:10    [19049110]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
CyberMax
Member

Откуда: Хабаровск
Сообщений: 1089
Стр. 20. "Вопросы, не связанные с SQL в данном документе не рассматриваются." Должно быть "Вопросы, не связанные с SQL, в данном документе не рассматриваются."

Стр. 20.
"Симонов Денис;
• Винкенуг Пол;
• Дмитрий Филиппов;
• Дмитрий Еманов;"
Почему у Винкенуга и Симонова сначала фамилия, потом имя, а у всех остальных сначала имя, потом фамилия?

Стр. 22 "Оба языковых подмножества, как DSQL, так и PSQL полностью...". Надо "Оба языковых подмножества, как DSQL, так и PSQL, полностью...".
20 апр 16, 10:10    [19080768]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
документация обновлена
9 май 16, 20:32    [19150721]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
fb user
Guest
LR
ROUND...
Тип возвращаемого результата: INTEGER, масштабируемый BIGINT, DOUBLE PRECISION

Для ROUND(1.25, 0) тип NUMERIC(18, 2).
18 авг 16, 08:45    [19555462]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
fb user,

здесь нет противоречий
"масштабируемый BIGINT" это и есть NUMERIC(18, x), хотя возможно можно было бы написать NUMERIC(18, x). Подумаю на выходных
18 авг 16, 09:26    [19555580]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
fb user
Guest
Результат зависит от типа первого аргумента и наличия второго.
SELECT

ROUND(1), -- INTEGER
ROUND(1,0), -- INTEGER

ROUND(4000000000), -- BIGINT
ROUND(4000000000,0), -- BIGINT

ROUND(CAST(1 AS SMALLINT)), -- SMALLINT
ROUND(CAST(1 AS SMALLINT), 0), -- SMALLINT

ROUND(CAST(1 AS INTEGER)),  -- INTEGER
ROUND(CAST(1 AS INTEGER), 0),  -- INTEGER

ROUND(CAST(1 AS BIGINT)),   -- BIGINT
ROUND(CAST(1 AS BIGINT), 0),   -- BIGINT

ROUND(1.5), -- BIGINT
ROUND(1.5, 0), -- NUMERIC(18,1)

ROUND(CAST(1.5 AS FLOAT)),  -- FLOAT
ROUND(CAST(1.5 AS FLOAT), 0),  -- FLOAT

ROUND(CAST(1.5 AS DOUBLE PRECISION)), -- DOUBLE PRECISION
ROUND(CAST(1.5 AS DOUBLE PRECISION), 0), -- DOUBLE PRECISION

ROUND(CAST(1.5 AS NUMERIC(1,1))),  -- NUMERIC(4,0)
ROUND(CAST(1.5 AS NUMERIC(1,1)), 0),  -- NUMERIC(4,1)

ROUND(CAST(1.5 AS NUMERIC(5,1))),  -- NUMERIC(9,0)
ROUND(CAST(1.5 AS NUMERIC(5,1)), 0),  -- NUMERIC(9,1)

ROUND(CAST(1.5 AS NUMERIC(10,1))), -- NUMERIC(18,0)
ROUND(CAST(1.5 AS NUMERIC(10,1)), 0), -- NUMERIC(18,1)

ROUND(CAST(1.5 AS DECIMAL(1,1))),  -- DECIMAL(9!,0)
ROUND(CAST(1.5 AS DECIMAL(1,1)), 0),  -- DECIMAL(9!,1)

ROUND(CAST(1.5 AS DECIMAL(5,1))),  -- DECIMAL(9,0)
ROUND(CAST(1.5 AS DECIMAL(5,1)), 0),  -- DECIMAL(9,1)

ROUND(CAST(1.5 AS DECIMAL(10,1))),  -- DECIMAL(18,0)
ROUND(CAST(1.5 AS DECIMAL(10,1)), 0)  -- DECIMAL(18,1)

FROM RDB$DATABASE


Из шаблона выпадает вот это:
ROUND(1.5), -- BIGINT
ROUND(1.5, 0), -- NUMERIC(18,1)
И обратите внимание на странность с типом выражения "1.5". Я попробовал кастовать его ко всем типам, но так и не получил BIGINT в качестве типа результата.

Hint: в IBExpert типы данных можно смотреть наведением мышки на заголовок или перейдя в режим формы.
18 авг 16, 11:28    [19556355]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
doos
Member

Откуда: Ленинградская обл.
Сообщений: 134
Опечатка.
стр. 27:

Блочные комментарии начинается с символов /* и заканчивается символами */. Блочные
комментарии могут содержать текст произвольной длины и занимать несколько строк.
24 янв 17, 08:02    [20138045]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
doos,

спасибо, исправлю
24 янв 17, 09:39    [20138223]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
doos
Member

Откуда: Ленинградская обл.
Сообщений: 134
Симонов Денис,

Здравствуйте!
стр. 69:

Подзапросы, используемые в предикатах поиска, кроме предикатов существования и
количественных предикатов, должны возвращать скалярное результат, то есть не более...
26 янв 17, 13:34    [20148923]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
doos,

исправлено

https://github.com/sim1984/langref30/releases/tag/langref30
29 янв 17, 11:21    [20158228]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dnico
Member

Откуда: Москва
Сообщений: 3152
Опечатка.
NEW.CHANGE_DATE = CAST('now' AS TIMESTANP);
16 фев 17, 14:03    [20217740]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
зеленый админ
Member

Откуда:
Сообщений: 246
Мне кажется, что для новичка фраза 'Процедурный SQL является расширением Динамического SQL' является ошибкой. Как минимум
PSQL не поддерживает DDL, что нужно обворачивать в EXECUTE STATEMENT...
17 апр 17, 20:29    [20408915]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26709
зеленый админ,

"динамический SQL" - это DSQL, подмножество DML.
DDL это Data Definition Language, в противоположность DML - Data Manipulation Language.
Причем, DDL частично поддерживается в PSQL.

С терминологией "Динамического SQL" на самом деле не очень хорошо. Базово это считается "не статический SQL", т.е. выполняемый через execute immediate, prepare, и в том числе execute statement.
Но в Firebird вообще весь sql выполняется через prepare и компиляцию в псевдокод BLR, поэтому, получается что он весь динамический.

IBM, например, статическим sql называет те операторы, которые обрабатываются препроцессором Embedded SQL (через EXEC SQL).

Если же доболтаться до того, что статический SQL - это тот, который не компилируется при передаче на сервер, то тогда view, триггеры и процедуры в Firebird - это и есть статический SQL. А все остальное - динамический.
В общем, забей.
18 апр 17, 03:03    [20409365]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43937

Дима, будь проще: всё, что не ESQL - DSQL. То есть разница чисто между компиляцией при
компиляции приложения и интерпретацией при его выполнении.

Posted via ActualForum NNTP Server 1.5

18 апр 17, 11:55    [20410225]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26709
Dimitry Sibiryakov
всё, что не ESQL - DSQL

да.
18 апр 17, 12:39    [20410417]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
зеленый админ
Member

Откуда:
Сообщений: 246
Еще маленькая очепятка:

в доке указано для FK, что

REFERENCES other_table [(<col_list>)] [<using_index>]
[ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
| CHECK (<check_condition>)


однако на практике [<using_index>] предикат должен быть обязательно после [ON DELETE/UPDATE ...]
23 апр 17, 23:08    [20427457]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
зеленый админ
Member

Откуда:
Сообщений: 246
kdv
зеленый админ,

"динамический SQL" - это DSQL, подмножество DML.
...
В общем, забей.


Там не совсем важно, что автора понимают под DSQL и PSQL. Куда гораздо важнее, что автора структуировали документ так, что каждая команда явна описана как доступная из той или иной категории. Тогда предлагаю для всех DDL, где написано, что команда доступна в DSQL, применить сноску, что, мол, в PSQL она доступна через execute statement...
23 апр 17, 23:17    [20427480]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
зеленый админ,

я это проверю и внесу правки если действительно так
24 апр 17, 09:19    [20427741]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
doos
Member

Откуда: Ленинградская обл.
Сообщений: 134
Симонов Денис,

Руководство по языку
SQL СУБД Firebird 4.0
30 марта 2017 — v.0000-1 для Firebird 4.0 Alpha 1

Случайно не 30 апреля?
2 май 17, 13:34    [20449935]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
doos,

ты прав. Там от 30 апреля. Я как раз описание DECFLOAT добавлял. Но там пока куча ошибок может быть. Всё таки это даже не альфа версия.
2 май 17, 13:36    [20449948]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
зеленый админ
Member

Откуда:
Сообщений: 246
Ошибки в документации по встроенным фунуциям.
1)
FB_DOC
Написание 'NOW' зависит от регистра

хотя по аналогии со всеми не зависит

2) 'TOMORROW', 'YERSTERDAY' - напишите аналогичное
FB_DOC
Написание 'xxx' не зависит от регистра, при
преобразовании в дату функция игнорирует все пробелы слева и справа от слова.

по аналогии с 'TODAY' и 'NOW'
14 май 17, 10:33    [20479805]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7424
зеленый админ,

это не я писал. Проверю что там с регистром и исправлю как должно быть
14 май 17, 10:57    [20479824]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 359
Симонов Денис,

автор
Над документом работали:
Денис Симонов, ...
Редактор:
Симонов Денис

"Имя Фимилия" и "Фамилия Имя"
Наверное лучше привести к одному виду?
18 май 17, 17:56    [20493815]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 3.0  [new]
мастер_ёда
Member

Откуда:
Сообщений: 9
стр.291 два идентичных примера

-----------------

Примеры:
Следующий запрос возвращает все строки кроме первых 10, упорядоченных по столбцу COL1:
SELECT *
FROM T1
ORDER BY COL1
OFFSET 10 ROWS

В этом примере возвращается первые 10 строк, упорядоченных по столбцу COL1:
SELECT *
FROM T1
ORDER BY COL1
OFFSET 10 ROWS

---------------------
22 ноя 17, 07:21    [20974058]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5 6 7 8 9 10 11      [все]
Все форумы / Firebird, InterBase Ответить