Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
Есть SQL-запрос, который покажет SQL-диалект соединения (не БД, а именно соединения) ?

c:\Program Files\Firebird\Firebird_2_1\doc\README.monitoring_tables.txt
c:\Program Files\Firebird\Firebird_2_1\doc\sql.extensions\README.context_variables2.txt
5 дек 18, 13:49    [21754325]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
В смысле, в этих файлах, ничего такого не нашёл
5 дек 18, 13:50    [21754326]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59452
Нет.

P.S. IIRC был тикет, с просьбой добавить
это в MON$ATTACHMENTS - завотируй.

Posted via ActualForum NNTP Server 1.5

5 дек 18, 14:04    [21754355]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Диалект клиента знает только клиент, серверу он пофиг.
Клиент передаёт его в каждый запрос во время препаре.
Во время коннекта он влияет только на обработку переданного в DPB имени роли.

Сама постановка вопроса говорит о проблемах в консерватории, как минимум о не понимании что такое диалект.
5 дек 18, 14:16    [21754377]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

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

не будет этого в мониторинге.
5 дек 18, 14:19    [21754385]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59452
hvlad> Диалект клиента знает только клиент, серверу он пофиг.

Почему это пофиг? Обработку (в т.ч. возврат ошибок) делает сервер.

> Клиент передаёт его в каждый запрос во время препаре.

Я знаю, prepare, execcute/open и чего-то там ещё,
хотя лично мне в голову не пришло бы соединяться
с одним диалектом, а потом работать с другим.

А в чем проблема показывать его в мониторинге,
чем это чревато, почему такая категоричность?

Posted via ActualForum NNTP Server 1.5

5 дек 18, 15:15    [21754489]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Гаджимурадов Рустам
hvlad> Диалект клиента знает только клиент, серверу он пофиг.

Почему это пофиг?
Потому что это никак ни на что не влияет за пределами препарирования конкретного запроса.
Гаджимурадов Рустам
Я знаю, prepare, execcute/open и чего-то там ещё
Нет, получается не знаешь. Только препаре.
Гаджимурадов Рустам
А в чем проблема показывать его в мониторинге,
чем это чревато, почему такая категоричность?
Потому что серверу пофиг, он не хранит это значение, нигде. Оно ему не нужно.
5 дек 18, 15:58    [21754601]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59452
hvlad> Потому что это никак ни на что не влияет за
hvlad> пределами препарирования конкретного запроса.

Я не понял, на что ты пытаешься намекнуть.
ОК, за пределами не влияет, но из этого никак
не следует, что само знание "с каким диалектом
это выполнялось" не может быть интересно.
С т.з. клиента - да, возможно, звучит абсурдно
(а возможно, нет), но с т.з. DBA/DBD - вполне
может иметь значение.

hvlad> Нет, получается не знаешь. Только препаре.

Ну мог и попутать чего по памяти, я говорил по
API-функциям, в которых был соотв. параметр,
их там (во времена IB6) было штуки 3-4, может
кроме preapre в остальных это уже игнорируется.

> Потому что серверу пофиг ... Оно ему не нужно.

Ну т.е. это из разряда идеологических/архитектурных.

Posted via ActualForum NNTP Server 1.5

5 дек 18, 16:54    [21754692]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Гаджимурадов Рустам
Я не понял, на что ты пытаешься намекнуть.
Я не намекаю, я прямо говорю - нет никакого клиентского диалекта с точки зрения сервера.
Нет такого св-ва у соединения. Чарсет - есть, имя юзера\роли - есть, "клиентского диалекта" - нет.
И не было никогда.

Гаджимурадов Рустам
знание "с каким диалектом это выполнялось"
Это бессмыслица.
Ты ещё раз показываешь, что понятия не имеешь, о чём говоришь.

Гаджимурадов Рустам
Ну мог и попутать чего по памяти, я говорил по
API-функциям, в которых был соотв. параметр,
их там (во времена IB6) было штуки 3-4, может
кроме preapre в остальных это уже игнорируется.
Диалект как пар-р есть только у препаре.
В Борландовской доке по IB6 были баги, когда версию XSQLDA называли диалектом.
Но если попробовать включить мозг, то станет ясно, что для fetch\execute нет никакого смысла указывать диалект.
Ибо диалект влияет только на обработку текста запроса (и с кого-то бодуна на имя роли при коннекте, но то такэ).
Если продолжить пользоваться мозгом, то станет очевидно, что на уровне коннекта движок понятия не имеет про "диалект клиента".
Иначе незачем пихать его в препаре...

Ничего, что я прямо, без намёков ? :)
5 дек 18, 17:19    [21754729]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Dimitry Sibiryakov
Member

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

hvlad
В Борландовской доке по IB6 были баги, когда версию XSQLDA называли диалектом.
Но если попробовать включить мозг, то станет ясно, что для fetch\execute нет никакого
смысла указывать диалект.

Если включить мозг, то обнаружится, что версия XSQLDA содержится в самой XSQLDA и
отдельное её указание смысла не имеет от слова "совсем".

А баг в доке был как раз обратный: "версией SQLDA" называли параметр, который
использовался для указания диалекта.

Posted via ActualForum NNTP Server 1.5

5 дек 18, 17:25    [21754735]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Dimitry Sibiryakov,

всё не так. Следи за руками (со включённым мозгом, по возможности):

В доке по IB6 (которую я вижу сейчас) есть такие описания пар-ров, связанные с диалектами:

а) da_version

unsigned short
Indicates the version of the extended SQL descriptor area
(XSQLDA) passed to the function; set this value to 1

Используется в описании:
isc_dsql_describe(), isc_dsql_describe_bind(), isc_dsql_execute(), isc_dsql_execute2(), isc_dsql_fetch()

Здесь da_version указывает на тип SQLDA\XSQLDA

+
// SQLDA dialects

const USHORT DIALECT_sqlda	= 0;
const USHORT DIALECT_xsqlda	= 1;


б) dialect

unsigned short
Indicates the SQL dialect of statement
Must be less than or equal to the SQL dialect of the client

Используется в описании:
isc_dsql_prepare(), isc_dsql_execute_immediate(), isc_dsql_exec_immed2()

Здесь dialect указывает на SQL диалект клиента

+
/***************************/
/* SQL Dialects            */
/***************************/

#define SQL_DIALECT_V5				1	/* meaning is same as DIALECT_xsqlda */
#define SQL_DIALECT_V6_TRANSITION	2	/* flagging anything that is delimited
										   by double quotes as an error and
										   flagging keyword DATE as an error */
#define SQL_DIALECT_V6				3	/* supports SQL delimited identifier,
										   SQLDATE/DATE, TIME, TIMESTAMP,
										   CURRENT_DATE, CURRENT_TIME,
										   CURRENT_TIMESTAMP, and 64-bit exact
										   numeric type */
#define SQL_DIALECT_CURRENT		SQL_DIALECT_V6	/* latest IB DIALECT */


Так вот, ошибка есть в описании isc_dsql_execute_immediate() и isc_dsql_exec_immed2() - здесь dialect используется в обоих смыслах.
5 дек 18, 18:22    [21754815]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Мимопроходящий
Member

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

05.12.2018 18:22, hvlad пишет:

> Так вот, ошибка есть в описании isc_dsql_execute_immediate() и isc_dsql_exec_immed2() - здесь dialect используется в обоих смыслах.

так они ж не препарируются

Posted via ActualForum NNTP Server 1.5

5 дек 18, 18:32    [21754820]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Мимопроходящий
05.12.2018 18:22, hvlad пишет:

> Так вот, ошибка есть в описании isc_dsql_execute_immediate() и isc_dsql_exec_immed2() - здесь dialect используется в обоих смыслах.

так они ж не препарируются
execute immediate == prepare + execute в одном флаконе
5 дек 18, 19:48    [21754891]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59452
Мда, уровень риторики впечатляющий,
уступает только уровню раздувания щёк. :)

hvlad> Нет такого св-ва у соединения.

У соединения нет, у запроса - есть. Что это меняет?
Ну будет свойство не в attachments, а в statements.

> Это бессмыслица. Ты ещё раз показываешь,
> что понятия не имеешь, о чём говоришь.

А по сути ответить? От диалекта зависит вернёт препаре ошибку
или нет, например. Соответственно, это может быть интересно
DBA/DBD (а уж если ПО не "своё" - то тем более).

hvlad> Диалект как пар-р есть только у препаре.
hvlad> Так вот, ошибка есть в описании isc_dsql_execute_immediate() и
hvlad> isc_dsql_exec_immed2() - здесь dialect используется в обоих смыслах.


Про ошибки и баги верю (хотя не понял, что значит "в обоих смыслах"),
но это претензии не ко мне. В любом случае, на сабж это не влияет, кроме
как на ЧСВ.

Posted via ActualForum NNTP Server 1.5

6 дек 18, 11:42    [21755576]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Симонов Денис
Member

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

я честно говоря не понимаю зачем оно тебе надо. Ну обломается клиент получит ошибку, сразу видно не с тем диалектом запрос препарирует. Не получил, значит всё нормально у него работает
6 дек 18, 12:06    [21755607]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Гаджимурадов Рустам
Мда, уровень риторики впечатляющий,
уступает только уровню раздувания щёк. :)
Вот именно поэтому я с тобой практически не разговариваю.
Щёки мешают.
6 дек 18, 12:06    [21755608]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
Гаджимурадов Рустам
хотя лично мне в голову не пришло бы соединяться
с одним диалектом, а потом работать с другим.


Так там по другому происходит. База создается в одном диалекте, а соединение проводится в другом.

Да, возможно, "с точки зрения сервера" диалект существует у конкретной команды ,а не у соединения, но

1) в mon$statements я тоже смотрел - там тоже про диалект ни слова. Почему бы тогда туда не добавить?

2) как я уже давно говорил, никто не мешает клиенту сделать rdb$set_context и сообщить серверу диалект - для диагностических целей, потому как у новичков периодически возникают такие проблемы, например https://stackoverflow.com/q/53620203/976391
Кроме принципиальной нелюбви Firebird к новичкам, конечно. Пусть им будет труднее, чтобы не лезли на свет.

hvlad
нет никакого клиентского диалекта с точки зрения сервера


Типа Firebird Server делает одна контора, а Firebird Client - другая, и они ну совсем не дружат, ага.


hvlad
Must be less than or equal to the SQL dialect of the client


Забавная фраза. А что такое "диалект клиента" в виду того, что "диалекта соединения не существует" ?


Симонов Денис
разу видно не с тем диалектом запрос препарирует


Это тебе видно.
Человеку, начинающему работать с Firebird это не видно. Он вообще такого слова не знает.
Особенно если прикладное ПО не позволяет выставить диалект либо это хз гд запрятано и надо несколько часов по всему интернету искать.

Возможность третьему лицу сказать новичку "сделай вот так и узнаешь - такая причина или другая" - это хорошо, для новичков.
Но новички - это почему-то плохо, для Firebird Team...
6 дек 18, 12:23    [21755629]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Симонов Денис
Member

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

Arioch
Забавная фраза. А что такое "диалект клиента" в виду того, что "диалекта соединения не существует" ?


Влад тебе говорит нет у соединения такого свойства как диалект. Это клиентские компоненты подставляют своё свойство "диалект" в isc_dsql_prepare()

Arioch
Человеку, начинающему работать с Firebird это не видно. Он вообще такого слова не знает.
Особенно если прикладное ПО не позволяет выставить диалект либо это хз гд запрятано и надо несколько часов по всему интернету искать.


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

MySQL, Oracle, Postgres тоже иногда заставляют лазить по интернету в поисках ответов казалось бы на простые вопросы.
6 дек 18, 12:36    [21755656]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
Симонов Денис
Влад тебе говорит нет у соединения такого свойства как диалект. Это клиентские компоненты подставляют своё свойство "диалект" в isc_dsql_prepare()


это не отвечает на вопрос "что такое диалект клиента" и "почему меньше или равно"

Симонов Денис
MySQL, Oracle, Postgres тоже иногда заставляют лазить по интернету в поисках ответов казалось бы на простые вопросы


Только они не говорят, что это хорошо.
6 дек 18, 12:37    [21755661]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Симонов Денис
Member

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

никто не говорит что это хорошо. ИХМО диалект это вообще архаизм и не самое удачное изобретение. Но обратная совместимость требует.
А чтобы стать профи нужен пытливый ум и минимум 5 лет практики. Если новичок при первой же проблеме бежит, то это его проблема, не стать ему профессионалом. И это не только в Firebird.
6 дек 18, 12:52    [21755682]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

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

Во-первых, говорите открытым текстом - 21733150
Во-вторых, в самом отношении к подобным вопросам за все последние годы. Последний пример - 21755524. Да как это шко-ло-ло смеет не знать самого Пешкова.

Как только возникает просьба облегчить диагностику - сразу "не хрен никому помогать, пусть мучаются, мы же 10 лет назад мучались, теперь пусть они мучаются".


Симонов Денис
ИХМО диалект это вообще архаизм и не самое удачное изобретение.


Казалось бы тем более, нужно помогать новичкам, во всех местах где это "не самое удачное изобретение" может вылезти.
Казалось бы. Потому что в реальности почти всегда решается задача "как послать новичков на х.... на другие БД по процедурным основнаиям"
6 дек 18, 13:01    [21755696]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
hvlad
Member

Откуда:
Сообщений: 10053
Arioch
Кроме принципиальной нелюбви Firebird к новичкам, конечно. Пусть им будет труднее, чтобы не лезли на свет.
Ты сам себе это придумал и пропагандируешь.

Arioch
Типа Firebird Server делает одна контора, а Firebird Client - другая, и они ну совсем не дружат, ага.
Чё сказать-то хотел ?

Arioch
hvlad
Must be less than or equal to the SQL dialect of the client


Забавная фраза. А что такое "диалект клиента" в виду того, что "диалекта соединения не существует" ?
Спроси документописателей в Борланде.

Возможно, они под "диалектом клиента" понимают возможности этого клиента работать с определёнными типами данных.
Зачем они сделали это через то, что сделали - тоже вопрос в туда же.
Я здесь всего лишь показываю, как оно на самом деле, а не в документации.
Могу не показывать, если тебе от этого сносит крышу.
6 дек 18, 13:06    [21755701]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
А вот кстати

http://www.ibase.ru/files/firebird/langref25rus/index.html
"SQL диалект может быть определён как на уровне базы данных, так и на уровне соединения с базой данных"

hvlad
Сама постановка вопроса [о диалекте уровня соединения] говорит о проблемах в консерватории, как минимум о не понимании что такое диалект.


Precious.
6 дек 18, 13:08    [21755705]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
Нет, я это просто вижу год за годом, а вам "своё - не пахнет".

Что у вас замечательно выходит посылать всех нафиг под таким соусом "клиентами файёрбёрд мы, проект файрбёрд, не занимаемся, ищё тех, кто занимается, а нам пофигу"
6 дек 18, 13:10    [21755707]     Ответить | Цитировать Сообщить модератору
 Re: Выяснить запросом диалект соединения?  [new]
Arioch
Member

Откуда:
Сообщений: 10176
"Диалект при соединении с базой данных должен быть таким же, как и базы данных. Исключением является случай миграции с 1-го в 3-й диалект, когда в строке соединения с базой данных используется 2-й диалект."

Это бы это было так, что сервер бы выдавал ошибку, при попытке выставить в соединении другой диалект, чем у БД.
Но этого не происходит.
Значит ошибка либо в доке, либо в сервере.
6 дек 18, 13:12    [21755711]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить