powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ANN Руководство по языку SQL СУБД Firebird 3.0
25 сообщений из 345, страница 4 из 14
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010021
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

хм... значит в Release Notes 2.1.6 и Language Reference Update 2.5 та же ошибка, потому как описание взято от туда. Надо бы уточнить с чего вдруг там так написали. В прочем я подозревал, что в этом месте что-то не то написано. Для RIGHT такая же байда
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010262
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О чём речь? О переводе термина statement ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010267
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmстр 374
Описании работы LEFT

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

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

На практике стандартное математическое округление.
test
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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



вот об этом
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010271
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, этот идиотизм не в мой огород, так что пофиг.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010273
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну я тебя и не обвинял. Это в английской версии такое написано
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010277
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я не про адресные обвинения.
Я такого текста просто вообще не
припомню, даже в оригинале -
только щас после ваших слов узнал.

Не знаю кому могла придти в голову
такая странная реализация (даже если
бы она на самом деле была) и нафига
её вообще нужно было в доку тащить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010291
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрал эту фигню из описания функций LEFT и RIGHT
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010292
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в раздел "Безопасность / Операторы управления усерами / create user" предлагаю добавить совет: поскольку снапшоты идут с неинициализированной базой sec3.fdb, а утилита gsec объявлена хромой уткой и когда-нить поедет на помойку, то можно использовать для инициализации sec3.fdb вот это:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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 эта утиль не нужна)
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010295
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Операторы DML / EXECUTE BLOCKВходные и выходные параметры
...
Если есть входные параметры, все становится сложнее: эти параметры должны
получить свои значения после подготовки оператора, но перед его выполнением.
Это требует специальных возможностей, которыми располагает не каждое клиентское
приложение (Например, ISQL такой возможности не предлагает ).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
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;

:-)
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010296
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

это возможности execute statement но уж никак не ISQL
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010301
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Безопасность / Изменение текущей ролиПараметры оператора SET ROLE

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
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>
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010322
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

согласен. Это надо бы удалить. По моему было в одной из ранних версий realese notes. Сейчас поглядел ничего такого не написано.
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39010325
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обновил
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39011440
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pp. 194-195Параметры оператора CREATE EXCEPTION

Внимание!
Если в тексте сообщения, встретится номер слота параметра больше 9, то
второй и последующий символ будут восприняты как литералы. Например,
@10 будет воспринято как @1, после которого следует литерал 0.Лучше привести пример какой-нить.
Типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
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  hvhvhv 0  hvhvhv 1

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

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
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>
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39011452
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидТ.е. никакой ошибки о несоотв-вии числа аргументов не вываливаетсяПотому что нет ошибки.
Твоё @10 интерпретируется как <параметр №1>0

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

ТаблоидПередадим ровно то число аргументов, что было указано в определении exception'aТы в тексте exception используешь 9 пар-ров (см. выше), а передаёшь - 11.
О чём тебе швабра (c) и сказала :)
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39011461
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаблоидПередадим ровно то число аргументов, что было указано в определении exception'aТы в тексте exception используешь 9 пар-ров (см. выше), а передаёшь - 11.
О чём тебе швабра (c) и сказала :)я вот про ЭТОТ вариант:

Таблоид
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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.
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39011478
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай вышенаписанное ещё раз. И ещё раз. И ещё раз...
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39011486
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

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

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

а то так можно дойти до того что демонстрировать все неверные операторы, коих может быть 100500 сочетаний
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39011492
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

тьфу блин. Не там ты читаешь. В CREATE EXCEPTION не всё написано, но там и не должно быть. Смотри PSQL оператор EXCEPTION ибо про USING основной текст там
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39013965
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидТипа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
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  hvhvhv 0  hvhvhv 1



добавил подобный пример, но не в оператор CREATE EXCEPTION, а в сам оператор EXCEPTION (глава PSQL)
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39013978
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pp 405-406 ("Агрегатные функции")SUM

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

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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
. . .
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39013989
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pg 422RANK
. . .
RANK() OVER ([<partition_exp>] [<order_exp>])
Тип возвращаемого результата: BIGINT
Описание:
Возвращает ранг каждой строки в секции результирующего набора. Ранг строки
вычисляется как единица плюс количество рангов, находящихся до этой строки .Примера тут не хватает, КМК. Типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
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>)".
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39013995
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pp 355-356 ("Таблица 8.1. Переменные пространства имён SYSTEM")NETWORK_PROTOCOL Протокол, используемый для соединения с базой
данных. Возможные значения: " TCPv4 ", "WNET", "XNET",
NULL.Я напоролся при анализе результатов какого-то теста, публикуемых периодически здесь , что значением может быть теперь и TCPv 6 .
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39014010
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидПодправить тут надо.
Внутри аналитической функции, например sum( <expr> )over(), выражение <expr> - может быть "просто" агрегатом, см ниже.


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

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

Код: sql
1.
select sum( max(code_horse) )over() from horse group by code_sex;



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

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


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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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

 [code=plaintext]
                    
...
Рейтинг: 0 / 0
ANN Руководство по языку SQL СУБД Firebird 3.0
    #39014011
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pg 357 ("Параметры функции RDB$SET_CONTEXT")Максимальное число переменных в рамках одного соединения равно 1000;Максимальное число контекстных переменных каждого вида (USER_SESSION, USER_TRANSACTION) ограничено числом 1000. Таким обр., соединение может установить до 1000 переменных, и транзакция, открытая этим соединением, также может установить "своих" переменных тоже 1000 штук. А если коннект создает сразу N транзакций, то макс. число контекстных переменных будет (1+N)*1000:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
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:

Код: plaintext
1.
2.
SESSION_VARS TRANSACTION_VARS
============ ================
        1000             3000
...
Рейтинг: 0 / 0
25 сообщений из 345, страница 4 из 14
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ANN Руководство по языку SQL СУБД Firebird 3.0
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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