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

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

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

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

ах вот какой синтаксис....
тьфу, все пробовал это не попробовал.

> эксперт выставит диалект соединения равным диалекту базы.

даже если пользователь СПЕЦИАЛЬНО ввёл override ???
а можно это поправить ?

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

Кстати, а как вообще это может быть, что "эксперт выставит диалект соединения равным диалекту базы." ?

Чтобы узнать диалект БД - ты должен сначала к ней подключиться, а потом ПОСЛЕ подключения запросить диалект через API или MON$DATABASE.
А чтобы менять диалект подключения - надо ещё ДО самого подключения.
Курица и яйцо.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807706
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё ты пишешь, что сам документацией не занимаешься, и если её надо править - чтобы я в другое место писал

а в какое?
на форуме регаться и в IBExpert Bug Reports ? или есть более прямые пути?

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

тот, который через isc_DPB_sql_dialect 1 задаётся

в доках ничего не нашёл

c:\Program Files\Firebird\Firebird_2_1\doc\sql.extensions\README.context_variables2.txt
c:\Program Files\Firebird\Firebird_2_1\doc\README.monitoring_tables.txt
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807712
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochКстати, а как вообще это может быть, что "эксперт выставит диалект соединения равным диалекту базы." ?

Чтобы узнать диалект БД - ты должен сначала к ней подключиться, а потом ПОСЛЕ подключения запросить диалект через API или MON$DATABASE.
А чтобы менять диалект подключения - надо ещё ДО самого подключения.


В компонентах доступа "диалект подключения" - это просто переменная, которую можно изменить в любое время. Значение этой переменной передается некоторым API-функциям вроде isc_dsql_execute.
Трогать я там ничего не буду.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807716
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertВ компонентах доступа "диалект подключения" - это просто переменная, которую можно изменить в любое время

по здравому смыслу - она либо не используется, либо используется неявно при постройке DPB

жаль, что не будешь

тогда ты и AV не пофиксишь, если в generateDPB(...) соваться не хочешь
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807718
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
Обсуждали уже
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807720
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochи ещё ты пишешь, что сам документацией не занимаешься, и если её надо править - чтобы я в другое место писал

а в какое?
на форуме регаться и в IBExpert Bug Reports ? или есть более прямые пути?

На сайте должен быть адрес для обратной связи.

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

Ты действительно думаешь, что я в одиночку могу и эксперт вылизать, и ваши претензии к документации немцам транслировать?
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807726
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochIBExpertВ компонентах доступа "диалект подключения" - это просто переменная, которую можно изменить в любое время

по здравому смыслу - она либо не используется, либо используется неявно при постройке DPB

Нафиг фантазировать? Посмотри синтаксис той же isc_dsql_execute.
Эксперт коннектится, проверяет диалект базы и устанавливает значение этой переменной. Все.

Ariochтогда ты и AV не пофиксишь, если в generateDPB(...) соваться не хочешь

Это как раз несложно пофиксить.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807727
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ISC_STATUS ISC_EXPORT isc_dsql_execute(ISC_STATUS*,
									   isc_tr_handle*,
									   isc_stmt_handle*,
									   unsigned short,
									   XSQLDA*);

ISC_STATUS ISC_EXPORT isc_dsql_execute2(ISC_STATUS*,
										isc_tr_handle*,
										isc_stmt_handle*,
										unsigned short,
										XSQLDA*,
										XSQLDA*);



нет тут никакого диалекта

только database handle

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#define SQLDA_VERSION1          1

typedef struct
{
        ISC_SHORT       version;                        
        ISC_SCHAR       sqldaid[8];                     
        ISC_LONG        sqldabc;                        
        ISC_SHORT       sqln;                           
        ISC_SHORT       sqld;                           
        XSQLVAR sqlvar[1];                      
} XSQLDA;



и тут нет

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

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

Код: plaintext
1.
2.
3.
4.
isc_dsql_execute_immediate
...
dialect unsigned short •Indicates the SQL dialect of statement
•Must be less than or equal to the SQL dialect of the client



"dialect of the client" - шикарная фраза, об неё уже спотыкались когда-то
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807734
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochнет тут никакого диалекта


Это у тебя нет. У меня есть:

Код: pascal
1.
2.
3.
4.
5.
Tisc_dsql_execute = function    (status_vector            : PISC_STATUS;
				 tran_handle              : PISC_TR_HANDLE;
                                 stmt_handle              : PISC_STMT_HANDLE;
                                 dialect                  : UShort;
                                 xsqlda                   : PXSQLDA): ISC_STATUS;
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807737
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Ariochнет тут никакого диалекта

плохо смотришь

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ISC_STATUS isc_dsql_prepare(
  ISC_STATUS *status_vector,
  isc_tr_handle *trans_handle,
  isc_stmt_handle *stmt_handle,  
  unsigned short length,
  char *statement,
  unsigned short dialect,
  XSQLDA *xsqlda);
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807744
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertAriochнет тут никакого диалекта


Это у тебя нет. У меня есть:

Код: pascal
1.
2.
3.
4.
5.
Tisc_dsql_execute = function    (status_vector            : PISC_STATUS;
				 tran_handle              : PISC_TR_HANDLE;
                                 stmt_handle              : PISC_STMT_HANDLE;
                                 dialect                  : UShort;
                                 xsqlda                   : PXSQLDA): ISC_STATUS;



Это уже творчество... Бузаджи, кажется.

В ibase.h такого нет - ни в 2.1, ни в 2.5.8, ни в 3.0.4

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

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

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


Симонов ДенисSQL диалект подключения влияет только на интерпретацию роли при самом и не хранится в свойствах подключения

а как он на роль влияет ?
в API Guide такого не нашёл

зато в API Guide в трёх местах есть загадочное "Must be less than or equal to the SQL dialect of the client "
и да, помню когда то об этот коан уже спотыкались....

три места - это prepare, execute_immed и execute_immed2

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

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


Это у тебя нет. У меня есть:

Код: pascal
1.
2.
3.
4.
5.
Tisc_dsql_execute = function    (status_vector            : PISC_STATUS;
				 tran_handle              : PISC_TR_HANDLE;
                                 stmt_handle              : PISC_STMT_HANDLE;
                                 dialect                  : UShort;
                                 xsqlda                   : PXSQLDA): ISC_STATUS;



Погоди-погоди, FIBC/FIB+ туда реально диалект БД пихают ?????

Это не диалект БД, это диалект SQLDA !!!!

API Guide PDFISC_STATUS isc_dsql_execute(
ISC_STATUS *status_vector,
isc_tr_handle *trans_handle,
isc_stmt_handle *stmt_handle,
unsigned short da_version,
XSQLDA *xsqlda);

Parameter Type Description
status_vector ISC_STATUS * Pointer to the error status vector
trans_handle isc_tr_handle * Pointer to a transaction handle whose value has been set
by a previous isc_start_transaction() call; trans_handle
returns an error if NULL
stmt_handle isc_stmt_handle * Pointer to a statement handle previously allocated with
isc_dsql_allocate_statement() or
isc_dsql_alloc_statement2(); returns an error in
status_vector if NULL
da_version unsigned short Indicates the version of the extended SQL descriptor area
( XSQLDA ) passed to the function; set this value to 1

xsqlda XSQLDA * Pointer to a previously allocated XSQLDA used for input


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

квотирование - это DSQL
CREATE ROLE и ля-ля-ля

но это уже ПОСЛЕ подключения

а НА ЭТАПЕ подключения ещё никакого DSQL нет

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

как можно перевести слова версия как диалект? Пои идее в 4.0 могли бы версию XSQLDA поднять из-за того что размерность идентификаторов в XSQLVAR подросла, но на это вроде как забили. Впрочем никто не мешает запихать туда другую структуру, уж не знаю отработает ли оно правильно в старом API
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807774
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,
кавычки нет, регистрочувствительность имеет
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39807780
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochПогоди-погоди, FIBC/FIB+ туда реально диалект БД пихают ?????

Это не диалект БД, это диалект SQLDA !!!!


Мне пофигу. Версия SQLDA есть в xsqlda, которая передается следующим параметром.
Не морочь мне голову, короче. 20 лет оно работает и пусть дальше так и работает.
...
Рейтинг: 0 / 0
возможно ли запросить 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
возможно ли запросить SQL-диалект подключения?
    #39808254
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

это разные вещи.

DIALECT_* - это с какой структурой работаем (sqlda vs xsqlda). Одновременно он совпадает с SQL-диалектом в API-вызовах. DIALECT_xsqlda равен DIALECT_V5, т.е. XSQLDA ассоциируется со всеми новыми API-вызовами, где есть диалект. А DIALECT_sqlda равен нулю и ассоциируется со старыми API-вызовами (без _dsql_ в названии). В ФБ-сервере нулевой диалект трактуется как отсутствующий, т.е. клиент ничего не знает о диалектах. Для сервера есть два вида клиентов: (dialect == DIALECT_sqlda) и (dialect >= DIALECT_xsqlda).

А SQLDA_VERSION* - это версия XSQLDA (у SQLDA нет поля версии). Причем существует только SQLDA_VERSION1, упоминаний SQLDA_VERSION2 у нас нет от слова совсем. У борманов SQLDA_VERSION2 это скорее всего длинные метаданные.

Как-то так (с)
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808258
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr, спасибо!
немного прояснилось.

для 4-ки с длинными идентификаторами метаданных
не планируется новая версия XSQLDA?

ибо в текущей версии XSQLVAR под идентификаторы
отводится жестко 32 символа (31 + #0)
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808259
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийв смысле, всегда юзается XSQLDA, независимо от того, что передаётся в da_version ?

судя по всему да https://github.com/FirebirdSQL/firebird/blob/B3_0_Release/src/yvalve/why.cpp#L2141

Мимопроходящийкстати, в недрах IBX наблюдаю такое:

SQLDA диалект и версия это разные вещи. Первое относится к тому какая структура используется

https://github.com/FirebirdSQL/firebird/blob/B3_0_Release/src/dsql/sqlda.h

или

https://github.com/FirebirdSQL/firebird/blob/B3_0_Release/src/dsql/sqlda_pub.h

Если посмотреть внимательней, то поле version есть только в XSQLDA. Очевидно Борманы его задействовали когда длину идентификаторов увеличили (они это раньше сделали то ли в 7.0, то ли в 7.1, то ли в 7.5)
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808261
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот пока писал ответили :)
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808262
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дабы всё упростить (или усложнить, кому как) - уточню: сервер понятия не имеет про SQLDA\XSQLDA, про них знает только fbclient.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808267
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrА SQLDA_VERSION* - это версия XSQLDA (у SQLDA нет поля версии). Причем существует только SQLDA_VERSION1, упоминаний SQLDA_VERSION2 у нас нет от слова совсем.как оказалось, в моём IBX тоже юзается исключительно SQLDA_VERSION1, а SQLDA_VERSION2 только задекларирован, но нигде не фигурирует.
кстати, комментарии опосля декларации вводят в заблуждение,
ибо утверждается, что SQLDA_VERSION1 это " pre V6.0 SQLDA ", а
SQLDA_VERSION2 это " V6.0 SQLDA ".
и то, и другое неверно .
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808272
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийSQLDA_VERSION2 только задекларирован, но нигде не фигурирует.

А сама XSQLDA2 там задекларирована?

Я сильно надеюсь, что в Firebird поддержка удлинённых имён (если) будет сделана либо точно
так же, либо нормально.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808274
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

да всё верно, глянул исходники новых IBX, там вся разница в том что для XSQLDA2 они используют XSQLVAR2, где длина идентификаторов 68 байт. В остальном всё одинаково.
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808275
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
30.04.2019 13:00, Симонов Денис пишет:
> да всё верно, глянул исходники новых IBX, там вся разница в том что для XSQLDA2 они используют XSQLVAR2, где длина идентификаторов 68 байт. В остальном всё одинаково.

нет бы сразу заюзать PChar, вместо статичного массива Char.
оно конечно тоже имеет тенденцию к геморрою, но другого плана.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808281
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЯ сильно надеюсь, что в Firebird поддержка удлинённых имён (если) будет сделана либо точно
так же, либо нормально.

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

Как и сказал МП: вполне нормально будет PChar, указывающий на внутренние структуры
клиента. Заодно зарезервировать место под схему, алиасы и прочую дребедень. О выравнивании
можно не заботиться, оно всё равно загублено sqldata и sqlind. Зато хорошо бы позаботиться
о совместимости с XSQLVAR1 про которую Борланды забыли.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808296
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совместимость с Interbase API это хорошо: позволит использовать готовый код.
Совместимость с XSQLVAR1 (в том числе по размеру) это хорошо: позволит создавать
универсальный код.


Если нет времени всё это хорошо продумать, то лучше вообще не париться, а тупо обрезать не
влезшие имена. Меньшее зло.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
возможно ли запросить SQL-диалект подключения?
    #39808315
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли нет времени всё это хорошо продумать, то лучше вообще не париться, а тупо обрезать не
влезшие имена. Меньшее зло.

Да, как-то так :)

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


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