powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / возможно ли запросить SQL-диалект подключения?
25 сообщений из 63, страница 2 из 3
возможно ли запросить SQL-диалект подключения?
    #39807781
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискак можно перевести слова версия как диалект?

не ко мне вопрос.

предполагаю, что методом копипаста из функций execute_immed и prepare

но это не точно
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807784
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть и будет работать

мне сейчас некогда вникать в

Симонов ДенисПои идее в 4.0 могли бы версию XSQLDA поднять из-за того что размерность идентификаторов в XSQLVAR подросла

и как это может отразиться на существующих обычных клиентах

прохоже, сейчас это поле просто игнорируется, потому ч тоникаких других версий SQLDA не предусмотрено было вообще

но всегда ли так будет?...
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807789
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

сделай длинный идентификатор в 4.0 и попробуй открой в любом из существующих клиентов.

Если оно реально определено вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
typedef struct
{
	ISC_SHORT	sqltype;			/* datatype of field */
	ISC_SHORT	sqlscale;			/* scale factor */
	ISC_SHORT	sqlsubtype;			/* datatype subtype - currently BLOBs only */
	ISC_SHORT	sqllen;				/* length of data area */
	ISC_SCHAR*	sqldata;			/* address of data */
	ISC_SHORT*	sqlind;				/* address of indicator variable */
	ISC_SHORT	sqlname_length;		/* length of sqlname field */
	ISC_SCHAR	sqlname[32];		/* name of field, name length + space for NULL */
	ISC_SHORT	relname_length;		/* length of relation name */
	ISC_SCHAR	relname[32];		/* field's relation name + space for NULL */
	ISC_SHORT	ownname_length;		/* length of owner name */
	ISC_SCHAR	ownname[32];		/* relation's owner name + space for NULL */
	ISC_SHORT	aliasname_length;	/* length of alias name */
	ISC_SCHAR	aliasname[32];		/* relation's alias name + space for NULL */
} XSQLVAR;



то может случится маленькая неприятность
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807791
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

а у тебя нет ради интереса нигде нет FIBC ? на ibase.ru нету
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807794
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А впрочем не надо.

Я посмотрел в IBX XE2 - там ровно та же ошибка

В общем, автор FIBC накосячил на почве копипаста и нехватки документации

А IBX и FIB+ просто тупо продолжили традицию
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807797
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

....да я и в 3.0 не сильно заинтересован, пока мой баг не пофиксят, в чем не заинтересованы мечтающие о лаврах Оракла девелоперы

а вот IBExpert'e тема для проверки с FB4 :-)

И вообще, напишу я админам, чтобы этот кусок перетащили в другую ветку
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807804
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
29.04.2019 17:45, Arioch пишет:
> В общем, автор FIBC накосячил на почве копипаста и нехватки документации

API Guide есть в доке от IB5.Х и в доке от IB6.0
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807811
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

короче пока эту фичу с идентификаторами сделали для нового API где на эту структуру плевать, но его почти никто не использует. Будет ли оно нормально работать если подпихнуь ISC_SCHAR sqlname[253]; и др. не знаю
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807858
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий29.04.2019 17:45, Arioch пишет:
> В общем, автор FIBC накосячил на почве копипаста и нехватки документации

API Guide есть в доке от IB5.Х и в доке от IB6.0

Ну, может в IB 5.x был косяк ,и сервер реально требовал туда диалект подставлять? DDDDD
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807866
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Бздыц, в UIB тот же косяк...
Видимо Анри тупо использовал код FIBC/IBX за учебник, не проверяя...

придется искать API Guide современного Interbase и сверять с IB6.... Вдруг там реально не таК, как в FB
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807870
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
29.04.2019 19:02, Arioch пишет:
>
> придется искать API Guide современного Interbase

http://docs.embarcadero.com/products/interbase/IBXE/APIGuide.pdf
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807872
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

нужен человек, который ориентируется в C++ исходниках FB, чтобы он посмотрел где там реально реализация isc_dsql_execute2 и isc_dsql_execute - и что там происходит в пробелмным параметром.

Видимо в версиях от 0.x до 3.x он просто игнорируется нафиг
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807873
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. я отписался модерам, чтобы комменты про диалект и API отсюда перетащили туда, так что пока тут завязываем с этим - это уже не про IBE ,а про библиотеки в целом
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807874
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

спасибо
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807876
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Interbase Guide то же самое. Как и ожидалось ,но проверить не грех.

Вчитался лучше в "Specifies that the XSQLDA descriptor, rather than SQLDA, should be
used; set this value to 1."

Т.е. этот параметр - он просто boolean - ноль либо не ноль. Пока что.
Поэтому баг и не проявлялся.

Интересно, что там будет в FB4, Денис сказал, там SQLDA расширяли в плане длины названий, но возможно это ни на что на практике не влияет
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807915
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

опять ты исказил мои слова. Как раз SQLDA в 4.0 не расширяли. Поэтому на старом API длинные идентификаторы скорее всего работать не будут. А ещё сказал, что я не пробовал можно ли в старый API просто подсунуть структуру с расширенными полями под метаданные.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807936
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

там не надо быть мегашарящим см. https://github.com/FirebirdSQL/firebird/blob/master/src/yvalve/why.cpp

ищем поиском isc_dsql_execute и isc_dsql_execute2 и видим что на этот параметр кладётся болт. Всё твоя душа может быть спокойна
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807969
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

ты в ветке 2.х поищи для начала.

Я уже жевал всё это вот тут 21754815
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808023
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

спасибо, нашёл.

Arioch,

судя по всему этот параметр артефакт, говорит о том что надо использовать расширенный формат дескриптора. В >= 3.x он вообще игнорируется, в более ранних версиях используется. Но там в коде написано что-то в роде такого

Код: plaintext
1.
if (dialect >= DIALECT_xsqlda) <используем XSQLDA> else <используем SQLDA>



поэтому и работает корректно даже если туда передать sql диалект
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808029
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Ну исказил, так исказило. Распиши подробно, что ты имел в виду, чтобы и ежу было понятно.

А если тема того не стоит, чтобы ты подробно объяснял, то не стоит и того, чтобы я подробно угадывал.

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

Продолжаем раскопки....

1. Предварительно *очень* похоже на то, что и IBO так же вызывает эти функции.
Если так - то все Delphi-библиотеки в этом противоречат API Guide.

Но!

2. Mark Rottleveel раскопал исходники Borland Intebase 6 - и в тех исходниках как раз и название dialect.

Это, Денис, к твоему вопросу "как же можно было так перевести" - а запросто, с Си на Паскаль.

https://github.com/FirebirdSQL/x-cvs-interbase/blob/d1cd7082a7a6faa5cc8f2ef7dbcaa95f09ae0091/jrd/why.c#L2217

И вот тут уже даже интересно, вспомнят сегодня JS и AH какого чёрта они тогда думали, в те сумбурные дни IB6
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808030
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

что ты хочешь от меня? Я только сказал что XSQLDA не рассчитана на длинные идентификаторы, которые появились в 4.0. С новым API работает, как длинные идентификаторы использовать в старом понятия не имею. Я пока так далеко не заглядывал.

AriochПродолжаем раскопки....

а смысл? Влад в соседней теме всё разжевал. Ну назвал назвали лет 20 назад неаккуратно параметр диалектом, ну стали пихать туда не совсем то, и что работоспособность от этого не нарушилась
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808043
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВлад в соседней теме всё разжевал.

я не знаю, что такое соседняя тема в данном случае

но в API Guide судя по всему написана чушь, наполовину

в Delphi-библиотеках вызывается чушь, полностью

и да, пока что "работоспособность от этого не нарушилась"

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

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

копия переписки



Curiouser and curiouser!

so,

STATUS API_ROUTINE GDS_DSQL_EXECUTE2 (

uses "dialect" parameter THRICE

and all three times it is passing it down the chain to the UTLD_parse_sqlda(....)

However, so do but EVERYONE!

DSQL_INSERT for example

https://github.com/FirebirdSQL/x-cvs-interbase/blob/d1cd7082a7a6faa5cc8f2ef7dbcaa95f09ae0091/jrd/why.c#L3178

DSQL_EXECTE_IMMEDIATE2

https://github.com/FirebirdSQL/x-cvs-interbase/blob/d1cd7082a7a6faa5cc8f2ef7dbcaa95f09ae0091/jrd/why.c#L2496

So, whenever that parameter stands for SQL dialect or DA version - it is one and the same, source-wise.
And so either one part of API Guide or another is blatantly wrong...

Mark, you did found something!..


as expected, the said sources of dsql_execute_2 come from the very first github commit, so if there was something before it - it is lost in history.


Now, down the rabbit hole...

dsql/utld.c

Код: 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.
STATUS DLL_EXPORT UTLD_parse_sqlda (
    STATUS	*status,
    DASUP	dasup,
    USHORT	*blr_length,
    USHORT	*msg_type,
    USHORT	*msg_length,
    USHORT	dialect,
    XSQLDA	*xsqlda,
    USHORT	clause)

//   ....and....

if (!xsqlda)
    n = 0;
else
    if (dialect >= DIALECT_xsqlda)
        {
        if (xsqlda->version != SQLDA_VERSION1)
            return error_dsql_804 (status, gds__dsql_sqlda_err);
	n = xsqlda->sqld;
        }
    else
	{
	sqlda = (SQLDA*) xsqlda;
	n = sqlda->sqld;
	xsqlda = NULL;
	xvar = &xsqlvar;
	}



dsql/sqlda.h

Код: plaintext
1.
2.
3.
4.
/* SQLDA dialects */

#define DIALECT_sqlda	0
#define DIALECT_xsqlda	1



jrd/ibase.h

Код: plaintext
1.
2.
3.
#define SQLDA_VERSION1			1

#define SQL_DIALECT_V5			1/* meaning is same as DIALECT_xsqlda */



SO!

whenever that "dialect" is used in FBClient's DSQL API - it is the dialect (version) of data area - it is XSQLDA vs SQLDA, and it is never or next to never about the SQL dialect.

Those concepts could have been related, when conseived, but as IB6 was fleshed out they became different (or maybe even before it, i can find IB4 or IB5 to see API Guide of those, but don't want to).

I rest my case, Your Honor.


Всё, я спать хочу.

Рабочая гипотеза - ВЕЗДЕ в DSQL где в параметрах функций (непосредственно, а не через SPB/DPB флаги) указывается SQL Dialect - это ни разу не SQL диалект, а ВЕЗДЕ диалект SQL_DA.

Но при этом диалект SQLDA и версия SQLDA - разные понятия.

И указывать в параметрах DSQL_xxxxx ( .... dialect ....)
можно просто 1, можно DIALECT_xsqlda
А вот SQLDA_VERSION1 - семантически неверно. Другой enum-тип, так сказать.

В общем, в "спецификациях" тут - undefined behaviour

СЕЙЧАС диалект SQLDA делится на два класса - "<= 0" и ">=1".
Но ничего не сказано про будущее.

Никакого соответствия SQL Dialect и SQLDA Dialect не задано.
Половина клиентских библиотек делает так, а половина - этак.

В принципе в будущем это может выстрелить, если введут новый SQL Dialect, который с собой принесет новый SQL DA Dialect.
Половина библиотек будет работать, а половина тут же сломается.

Шансы может быть и невелики, хотя кажется Сибиряков хотел SQLDA расширять, но если явно это не проговорить - то и не нулевые.

Собственно, FB 1.x тоже в SQL позволял много вольностей, которые в 2.5/3 специально отслеживают и запрещают, хотя могли бы и дальше выполнять.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808054
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochВсё, я спать хочуНаконец-то
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808088
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808241
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениссудя по всему этот параметр артефакт, говорит о том что надо использовать расширенный формат дескриптора. В >= 3.x он вообще игнорируетсяв смысле, всегда юзается XSQLDA, независимо от того, что передаётся в da_version ?

кстати, в недрах IBX наблюдаю такое:
Код: pascal
1.
2.
3.
4.
5.
unit IBHeader;
...
const
  SQLDA_VERSION1 = 1; (* pre V6.0 SQLDA *)
  SQLDA_VERSION2 = 2; (*     V6.0 SQLDA *)


но hvlad приводит другие значения 21754815
Код: pascal
1.
2.
3.
// SQLDA dialects
const USHORT DIALECT_sqlda   = 0;
const USHORT DIALECT_xsqlda  = 1;


правда, у меня IBX не каноничный.
если у кого есть "свежие" IBX, посмотрите как там, плс.
(модуль IBHeader.pas)
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / возможно ли запросить SQL-диалект подключения?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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