powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 3 Alpha: New public API
57 сообщений из 57, показаны все 3 страниц
Firebird 3 Alpha: New public API
    #38353270
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю релиз-ноты :
авторA new public API replaces the legacy one in new applications, especially object-oriented ones. The interface part
can be found in the header file Provider.h in the directory /include/firebird beneath the installation
root directory.
Нет там этого файла.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353336
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если исходники скачать?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353360
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА если исходники скачать?
В исходниках-то конечно есть.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353507
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

хоть скажи, где ты их искал и не нашел. В каких пакетах?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353514
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeНет там этого файла.странно: у мну есть, но только на линухе:
Код: plaintext
1.
/opt/fb30cs/include/firebird/Provider.h
А на виндузе - нету.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353525
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrNickDee,
хоть скажи, где ты их искал и не нашел. В каких пакетах?
Firebird-3.0.0.30566_0_Win32_Alpha1.exe
Firebird-3.0.0.30566-0_Win32_Alpha1.zip
Firebird-3.0.0.30566-0_x64_Alpha1.zip
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353529
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу, на винде про них забыли. Пардон.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353530
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeedimitrNickDee,
хоть скажи, где ты их искал и не нашел. В каких пакетах?
Firebird-3.0.0.30566_0_Win32_Alpha1.exe
Firebird-3.0.0.30566-0_Win32_Alpha1.zip
Firebird-3.0.0.30566-0_x64_Alpha1.zip
Ещё в exe и в zip несколько разный контент. Например в exe нет udr_engine.conf.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353577
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Дабы не открывать новый топик: неявная конвертация boolean к строке, это так задумано?
Код: sql
1.
2.
3.
4.
5.
6.
execute block as
declare variable bol boolean;
begin
  bol = TRUE;
  exception TEST_EXCEPTION using (bol);
end

и
Код: sql
1.
select '' || TRUE from rdb$database


выдаёт:

Код: plaintext
1.
Overflow occurred during data type conversion.
conversion error from string "BOOLEAN".
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353584
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

имею мнение, что неявно строка должна конвертироваться к булину, а не наоборот. Но это только если CAST в строку и из строки работают как ожидается.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353606
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrимею мнение, что неявно строка должна конвертироваться к булину, а не
наоборот.
При конкатенации?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353615
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrимею мнение, что неявно строка должна конвертироваться к булину, а не наоборот. Но это только если CAST в строку и из строки работают как ожидается.

В нижеследующем случае был бы согласен
Код: sql
1.
select * from rdb$database where rdb$character_set_name is TRUE


если бы не:
Код: plaintext
Invalid usage of boolean expression.

Когда в предикате where строки при сравнении конвертируются к числу - это понятно. Точнее для себя определил правило такой конвертации "к менее неоднозначному типу" и это кажется логичным.
А вот при операции склейки я бы ожидал приведения к строке или блобу.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353674
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,
в Provider.h есть код:
Код: plaintext
1.
2.
    virtual IStatement* FB_CARG prepare(IStatus* status, ITransaction* tra,
        unsigned int stmtLength, const char* sqlStmt, unsigned dialect, unsigned int flags) = 0;


Интересуют unsigned и unsigned int .
Я ведь правильно понимаю что они не различаются, причём на всех поддерживаемых платформах это будет 4 байта?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353699
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно интересует возможность вызова java-кода из обычной ХП, по аналогии с вызовами UDF'ок.

На странице 9 пдфника читаем:
3.0 RN New, object-oriented C++ APIs
Object-oriented C++ APIs enable external code routines to plug in and run safely inside Firebird engine
space, including (but not limited to):
• Stored procedures, triggers and functions written in Java , C++, ObjectPascal, etc.
А на страницах 20 и 28 впитываем про External Names и UDR (User Defined Routines):3.0 RN, page 20 External Names
An external name for the UDR engine is defined as
'<module name>!<routine name>!<misc info>'3.0 RN, page 28 Other New APIs
Other new APIs support various plug-ins by declaring the interfaces between the engine and the plug-in. Besides
pluggable authentication and pluggable encryption, Firebird 3 supports “external engines”, bridges between the
engine and the execution environments that can run UDR s: native code, Java and others.
Будет ли добавлен хоть какой-нить пример вызова java-кода из ФБ ? Пока что нарыл только вот это:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE PROCEDURE fieldCountExtern
(
dburlVARCHAR(256), 
user_nameVARCHAR(256), 
passwordVARCHAR(256)
) RETURNS (
V1VARCHAR(50),
V2INTEGER
) 
LANGUAGE JAVA
EXTERNAL NAME 'firebird.java.example.Examples.fieldNamesExtern';

(из отсюда ).
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353713
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(мысли вслух)RN, page 58 RETURNING Clause Value Can be Aliased
When using the RETURNING clause to return a value to the client, the value can now be passed under an alias.
Example Without and With Aliases
Код: plaintext
1.
2.
3.
  UPDATE T1 SET F2 = F2 * 10
    RETURNING OLD.F2, NEW.F2; -- without aliases
  UPDATE T1 SET F2 = F2 * 10
    RETURNING OLD.F2 OLD_F2, NEW.F2 AS NEW_F2; -- with aliases
- работает, проверил:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> update tu set f01=111, f02=222 where id=1 returning old.f01, old.f02;

PLAN (TU NATURAL)

         F01          F02
============ ============
         100          200

SQL> rollback;
SQL> update tu set f01=-f02, f02=-f01 where id=1 returning old.f01, old.f02;

PLAN (TU NATURAL)

         F01          F02
============ ============
         100          200


Напрашивается аналог для delete :
Код: sql
1.
SQL> delete from t1 where id=1 returning old.f01, old.f02;

Однако, "разбежитесь об забор":
Код: plaintext
1.
2.
3.
4.
5.
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-OLD.F01
-At line 1, column 50
Хотя буквально следующий подпараграф гласит, что в рамках курсора это возможно ("RETURNING Clause from Positioned Updates and Deletes").
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353716
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще.
2 all involved ! не проходите мимо вот это сувенира:RN, pg 60
OR'ed Parameter in WHERE Clause
Dmitry Yemanov
Performance for ( table.field = :param or :param = -1 ) in the WHERE clause was enhanced.
Работает действительно БЫСТРЕЕ, чем в ФБ 2.5.
И хотя пишет для выборки из ХП типа следующей:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
set term ^;
create or alter procedure orpartest (a_n01 int) returns(cnt int) as
begin
    for
        select count(*) from tbig b where b.n01=:a_n01 or :a_n01=-1
--        select count(*) from tbig b
--        where b.n01 between coalesce(:a_n01, -2147483648)
--                            and coalesce(:a_n01, 2147483647)
        into cnt
    do
        suspend;
end^
set term ;^
commit;

- что, дескать,
Код: plaintext
1.
2.
SQL> set stat on; set plan on; select * from orpartest(700);

PLAN (ORPARTEST  NATURAL )
- "не верь глазам своим!" (С)

Ибо тут волк в овечьей шкуре: он по индексу прёт (если тот имеется, конечно же):
Код: 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.
2013-08-03T01:12:40.1560 (1804:00F02A08) EXECUTE_PROCEDURE_FINISH
        perf30 (ATT_39, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:1180
                (TRA_109, CONCURRENCY | WAIT | READ_WRITE)

Procedure ORPARTEST:
param0 = integer, "700"

      0 ms

2013-08-03T01:12:40.1560 (1804:00F02A08) EXECUTE_STATEMENT_FINISH
        perf30 (ATT_39, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:1180
                (TRA_109, CONCURRENCY | WAIT | READ_WRITE)

Statement 346:
---------------------------------------------------------------
select * from orpartest(700)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (ORPARTEST NATURAL)
1 records fetched
     22 ms, 19848 fetch(es)

Table                             Natural     Index    Update
xpunge
*****************************************************************
TBIG                                           9916

В итоге, не надо больше извращаться с between и указанием лимитов для int/bigint чисел.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353736
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНапрашивается аналог для delete :
Код: sql
1.
SQL> delete from t1 where id=1 returning old.f01, old.f02;


Однако, "разбежитесь об забор":У тебя опять руки быстрее головы работают :)
Небось думал об этом ?
Код: sql
1.
SQL> delete from t1 where id=1 returning old.f1 old_f1, old.f2 old_f2;
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353771
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovdimitrимею мнение, что неявно строка должна конвертироваться к булину, а не
наоборот.
При конкатенации?
тьфу ты, о другом думал. Это я о сравнении, конечно же. При конкатенации булин надо бы уметь неявно приводить к строке, если таковое возможно через каст.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353772
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmКогда в предикате where строки при сравнении конвертируются к числу - это понятно. Точнее для себя определил правило такой конвертации "к менее неоднозначному типу" и это кажется логичным. А вот при операции склейки я бы ожидал приведения к строке или блобу.
согласен
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353773
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeИнтересуют unsigned и unsigned int .
Я ведь правильно понимаю что они не различаются, причём на всех поддерживаемых платформах это будет 4 байта?
правильно. По крайней мере, для всех поддерживаемых на текущий момент платформ.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353774
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид"не верь глазам своим!" (С)
приборы протри set explain включи
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353777
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladНебось думал об этом ?
Код: sql
1.
SQL> delete from t1 where id=1 returning old.f1 old_f1, old.f2 old_f2;

Именно об этом и думал, только поля назвал F 0 1, F 0 2.
Для delete не работает вот это (а хотелось бы):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> show table tu;
ID                              INTEGER Nullable
F 0 1                             INTEGER Nullable
F 0 2                             INTEGER Nullable
SQL> delete from tu where id=1 returning old.f 01  old_f1, old.f 0 2 old_f2;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-OLD.F 01 
-At line 1, column 61
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353779
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидДля delete не работает вот это (а хотелось бы)
а зачем тебе именно это? Чем не устраивает простое:

Код: sql
1.
delete from tu where id=1 returning f01 old_f1, f02 old_f2;


?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353780
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrприборы протри set explain включиИ ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> set stat on; set explain on; select * from orpartest(777);

Select Expression
    -> Procedure "ORPARTEST" Scan

         CNT
============
        9900

Current memory = 1274448
Delta memory = 574800
Max memory = 1274856
Elapsed time= 14.09 sec
Buffers = 65535
Reads = 9886
Writes 0
Fetches = 20249
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353783
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

план запросов внутри процедуры надо смотреть для оных запросов, а не для вызова процедуры
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353785
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
Код: sql
1.
delete from tu where id=1 returning f01 old_f1, f02 old_f2;

?вах... так надо без "old." указывать... Псип.

ЗЫ. А когда это сделали ? я вижу, что в 2.5.3.26682 уже работает.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353795
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

в 2.1 уже было так. И да, это описано в документации :-)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353797
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

А Alpha 2 будет выпущена как полноценный релиз? Или это временная версия, которая войдет в состав Beta 1?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353801
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

пока не знаю, будет зависеть от числа обнаруженных проблем
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353803
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

И сразу еще один вопрос: можно пофиксить CORE-3463 ? Ведь в этом случае появится возможность использовать такой же синтаксис и для доменов?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353821
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

навскидку вроде можно, но чуть позже, сейчас пока другие приоритеты
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353843
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrПри конкатенации булин надо бы уметь неявно приводить к строке, если таковое
возможно через каст.
Это должно бы быть возможно если в стандарте описываются строковые литералы для буля.
Иначе фиг знает что там использовать: 'TRUE'-'FALSE', 'T'-'F', '.T.'-'.F.', 'Y'-'N',
'0'-'1' или какую-то другую из тучи возможностей. Поэтому в своей софтине я лично
отказываюсь приводить буль к строке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353845
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭто должно бы быть возможно если в стандарте описываются строковые литералы для буля.
Иначе фиг знает что там использовать: 'TRUE'-'FALSE', 'T'-'F', '.T.'-'.F.', 'Y'-'N',
'0'-'1' или какую-то другую из тучи возможностей.
в релизнотах заявлен явный каст буля в строку и обратно. Что там выбрал Адриано из вышеперечисленного - ХЗ, но именно оно и должно использоваться при неявном преобразовании.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353973
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Однако, "разбежитесь об забор"

В трекер.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353981
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВ трекер
с какой радости?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353984
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм... Как интересно порядок постов поехал...

А почему для delete "old" не работает, кстати?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353987
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамА почему для delete "old" не работает, кстати?
а зачем он там нужен? В update/merge есть неоднозначность, там old/new нужны. А зачем они в insert/delete? Шобы було?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38353991
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> Шобы було?

Шобы одинаково було, наверное.
Поддержка обоих вариантов не помешает.
Да и вроде в RN по посту Таблоида так
написано (не проверял).

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38354645
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрю примеры использования нового API.
Пытаюсь понять почему в одном случае для получении типа из метаданных написано:
Код: plaintext
1.
  unsigned t = meta->getType(st, j); // 03.select.cpp


а в другом:
Код: plaintext
1.
  unsigned t = meta->getType(st, j) & ~1; // 04.print_table.cpp


Почему во втором случае необходимо занулить последний бит?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38354739
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

это не новшество нового АПИ, это признак nullable.
Иногда его сбрасывают, чтобы перебирать меньше типов.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38360347
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для SQL_VARYING функция IMessageMetadata.getSubType возвращает CharSet соединения, а IMessageMetadata.getCharSet возвращает 0.
Для SQL_BLOB sub_type 1 в getSubType прописано 1, а в getScale прописан CharSetId соединения.

select * from RDB$RELATIONS:
Name: RDB$VIEW_BLR, Type: SQL_BLOB, SubType: 2, IsNullable: True, Length: 8, Scale: 0, CharSet: 0
Name: RDB$VIEW_SOURCE, Type: SQL_BLOB, SubType: 1, IsNullable: True, Length: 8, Scale: 4, CharSet: 0
Name: RDB$DESCRIPTION, Type: SQL_BLOB, SubType: 1, IsNullable: True, Length: 8, Scale: 4, CharSet: 0
Name: RDB$RELATION_ID, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$SYSTEM_FLAG, Type: SQL_SHORT, SubType: 0, IsNullable: False, Length: 2, Scale: 0, CharSet: 0
Name: RDB$DBKEY_LENGTH, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$FORMAT, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$FIELD_ID, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$RELATION_NAME, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$SECURITY_CLASS, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$EXTERNAL_FILE, Type: SQL_VARYING, SubType: 0, IsNullable: True, Length: 255, Scale: 0, CharSet: 0
Name: RDB$RUNTIME, Type: SQL_BLOB, SubType: 5, IsNullable: True, Length: 8, Scale: 0, CharSet: 0
Name: RDB$EXTERNAL_DESCRIPTION, Type: SQL_BLOB, SubType: 8, IsNullable: True, Length: 8, Scale: 0, CharSet: 0
Name: RDB$OWNER_NAME, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$DEFAULT_CLASS, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$FLAGS, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$RELATION_TYPE, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0

Пробовал Альфу и последний снапшот.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38360375
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

методы IMessageMetadata - прямая калька с dsc_pub и в этом ничем не отличаются от старого АПИ, где было тоже самое. Можно было бы предположить, что в новом АПИ стоит учесть контекст (тип данных) и возвращать сразу правильную инфу. Вот только эмуляция старого АПИ в 3.0 построена поверх нового, так что тут могут быть сложности (придется "перекодировать" и туда и обратно).
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38360381
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подумал еще раз - наверное надо это в трекер занести. Сложности реализации это наша проблема, а такой геморрой с новым АПИ лишь отпугнет разрабочиков.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361096
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrСложности реализации это наша проблема, а такой геморрой с новым АПИ лишь отпугнет разрабочиков.
Если вы не будете перекодировать с языка внутренней кухни, то это придётся делать пользователям API :)
А про отпугнёт - это точно замечено. Причём людей с хорошей интуицией это отпугнёт ещё на этапе принятия решения об использовании API :)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361359
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё обратил внимание на такую вещь:
константы isc_info_tra_*, которые требуются для работы с ITransaction.getInfo, почему-то содержатся в src\jrd\inf_pub.h.

Я попытался понять, где заканчивается API и начинается ядро :) Что-то не очень получается.
В идеале хотел бы чтобы все нужные *.h файлы были в одной папке, чтобы эту папку положить в дистрибутив (для материализации в папке \Firebird_3_0\include), и чтобы там было всё, что нужно пользователю API, и не было ничего лишнего (т.е. того, что он не может использовать средствами API, т.е. каких-нибудь левых констант или структур).

Опять же как пользователь API прошу: дайте мне то, что мне нужно. И не надо мне показывать кишки, которые я никак использовать не смогу :) Если мне будут интересны кишки (которые я всё-равно никак использовать не смогу), то полезу в исходники :)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361400
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

Чего тебя вообще понесло вsrc\jrd\inf_pub.h ?

PS читай ibase.h в дистрибутиве, пользователь API :)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361522
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЧего тебя вообще понесло вsrc\jrd\inf_pub.h ?
Меня понесло в исходники отсутствие нового API в дистрибутиве. В исходниках я и застрял. И на ibase.h в дистрибутиве уже естественно не смотрю.
Может вы всё-таки положите новый API в include? :)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361530
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeМожет вы всё-таки положите новый API в include? :)
в где? Альфа-пакеты уже вышли, никто их подменять новыми не будет. Могу включить в снапшоты виндовые, если сильно попросишь :-)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361660
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrМогу включить в снапшоты виндовые, если сильно попросишь :-)
Вот я про них :)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38361663
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeedimitrМогу включить в снапшоты виндовые, если сильно попросишь :-)
Вот я про них :)
И 14684548 подправить было бы очень неплохо, чтобы не привыкать к плохому :)
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38362462
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeИ 14684548 подправить было бы очень неплохо, чтобы не привыкать к плохому :)
Свистните когда подправите, и я продолжу с новым API.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38376941
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr, hvlad

Как вот это должно выглядеть на Delphi?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
// Interface to work with status vector
// Created by master interface by request
// Also may be implemented on stack by internal FB code
class IStatus : public IDisposable
{
public:
	virtual void FB_CARG set(unsigned int length, const ISC_STATUS* value) = 0;
	virtual void FB_CARG set(const ISC_STATUS* value) = 0;
	virtual void FB_CARG init() = 0;

	virtual const ISC_STATUS* FB_CARG get() const = 0;
	virtual int FB_CARG isSuccess() const = 0;
};



Пробовал вот так

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  // Interface to work with status vector
  // Created by master interface by request
  // Also may be implemented on stack by internal FB code
  IStatus = class(IDisposable)
  public
	  procedure _set(length: ULong; const value: PISC_STATUS); overload; virtual; abstract;
	  procedure _set(const value: PISC_STATUS); overload; virtual; abstract;
	  procedure init(); virtual; abstract;

	  function get(): PISC_STATUS; virtual; abstract;
	  function isSuccess(): Integer; virtual; abstract;
  end;



Но при выполнении это падает. В лоб перевести не получается (set зарезервированное слово в Delphi)
Код: pascal
1.
procedure set(length: ULong; const value: PISC_STATUS); overload; virtual; abstract;



Вообще планируется ли включить в поставку заголовки для нового API для Delphi, а не только для C++?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38376948
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисКак вот это должно выглядеть на Delphi?
Соглашения о вызове для методов должны быть cdecl.

Симонов ДенисВообще планируется ли включить в поставку заголовки для нового API для Delphi, а не только для C++?
для python/perl/php и иже с ними тоже? В старом АПИ было все только для Си и никому это не помешало написать обертки под остальные языки.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38376953
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrСоглашения о вызове для методов должны быть cdecl.


Спасибо, это поправил. А то что метод set одноимённым сделать нельзя это нормально?
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38376955
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисКак вот это должно выглядеть на Delphi?
Смотри здесь: https://uib.svn.sourceforge.net/svnroot/uib/trunk
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38376958
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Спасибо. То что нужно. Не думал, что они так быстро с новой API будут работать.
...
Рейтинг: 0 / 0
Firebird 3 Alpha: New public API
    #38417749
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeДля SQL_VARYING функция IMessageMetadata.getSubType возвращает CharSet соединения, а IMessageMetadata.getCharSet возвращает 0.
Для SQL_BLOB sub_type 1 в getSubType прописано 1, а в getScale прописан CharSetId соединения.

select * from RDB$RELATIONS:
Name: RDB$VIEW_BLR, Type: SQL_BLOB, SubType: 2, IsNullable: True, Length: 8, Scale: 0, CharSet: 0
Name: RDB$VIEW_SOURCE, Type: SQL_BLOB, SubType: 1, IsNullable: True, Length: 8, Scale: 4, CharSet: 0
Name: RDB$DESCRIPTION, Type: SQL_BLOB, SubType: 1, IsNullable: True, Length: 8, Scale: 4, CharSet: 0
Name: RDB$RELATION_ID, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$SYSTEM_FLAG, Type: SQL_SHORT, SubType: 0, IsNullable: False, Length: 2, Scale: 0, CharSet: 0
Name: RDB$DBKEY_LENGTH, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$FORMAT, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$FIELD_ID, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$RELATION_NAME, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$SECURITY_CLASS, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$EXTERNAL_FILE, Type: SQL_VARYING, SubType: 0, IsNullable: True, Length: 255, Scale: 0, CharSet: 0
Name: RDB$RUNTIME, Type: SQL_BLOB, SubType: 5, IsNullable: True, Length: 8, Scale: 0, CharSet: 0
Name: RDB$EXTERNAL_DESCRIPTION, Type: SQL_BLOB, SubType: 8, IsNullable: True, Length: 8, Scale: 0, CharSet: 0
Name: RDB$OWNER_NAME, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$DEFAULT_CLASS, Type: SQL_TEXT, SubType: 4, IsNullable: True, Length: 124, Scale: 0, CharSet: 0
Name: RDB$FLAGS, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0
Name: RDB$RELATION_TYPE, Type: SQL_SHORT, SubType: 0, IsNullable: True, Length: 2, Scale: 0, CharSet: 0

Пробовал Альфу и последний снапшот.
Два месяца прошло. Работать с этим по-человечески так и нельзя. Диверсанты... :)
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 3 Alpha: New public API
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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