powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / execute statement on external с 4.0 к 3.0
15 сообщений из 15, страница 1 из 1
execute statement on external с 4.0 к 3.0
    #39880153
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
execute block
returns (
  s varchar(255)
)
as
begin
  execute statement 'select MON$ODS_MAJOR from mon$database'
  on external 'inet4://localhost:3053/test'
  as user 'sysdba' password 'masterkey'
  into s;
  suspend;
end



Код: plaintext
1.
2.
3.
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Execute statement error at transaction start :
335544331 : invalid format for transaction parameter block
Data source : Firebird::inet4://localhost:3053/test.

понятно, что это из-за того что я выполняю в транзакции Read Commited, которая по умолчанию ещё и READ CONSISTENCY

Это так и будет? Или всё таки будут обходные пути без изменения параметров транзакции?
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880167
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

хороший вопрос.
Какие предложения ?
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880174
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladКакие предложения ?

Вроде бы сервер должен игнорировать неизвестные ему параметры в dpb/tpb. Или там новый
формат tpb отрастили? Тогда придётся после коннекта выяснять версию (проще всего через
ODS) и переходить в режим совместимости.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880180
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

данунахер. сверху вниз зачем тестировать-то?
В фб 3 нет таких транзакций, которые есть в 4.0. Соответственно, отказать. Правильное сообщение, идите лесом.
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880237
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

да никто их специально не задаёт. Дело в

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
# ----------------------------
# Engine currently provides statement-level read consistency in READ COMMITTED
# mode by default. In this mode rec_version/no_rec_version transaction flags have
# no effect. Setting this parameter to 0 effectively reverts engine to legacy
# behavior.
# 
# CAUTION!
# There is no guarantee that legacy behavior will be available in future Firebird
# versions.
#
#	Type: boolean
#
#ReadConsistency = 1

Что вполне устраивает.

hvladКакие предложения ?

Есть разные варианты:

1. Сохранять изначальные tpb
2. Определять версию протокола/движка и менять параметр на совместимый, например rec_version
3. Поправить трёшку, чтобы isc_tpb_consistency принимался, но игнорировался
4. Дать возможность задавать параметры транзакции для execute statement on external

На мой взгляд самый правильный п.4, но он наиболее трудоёмкий
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880297
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

я вот тоже думаю про (2), но что тут считать совместимым пар-ром - это вопрос.
Приверженцы целостности потребуют тут snapshot, пофигистам достаточно read committed.
И с ним тоже нужно выбирать - rec_version или no_rec_version.

(1) не поможет, если в приложении изначально задано read_consistency

(3) 2.x тоже поправить ? И 1.5 ? ;)

(4) Это трудоёмко для прикладных прораммистов тоже - придётся везде проставлять эти пар-ры.
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880298
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvсверху вниз зачем тестировать-то?Как - зачем ? Что за вопрос вообще ?
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880384
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad(3) 2.x тоже поправить ? И 1.5 ? ;)

Я точно помню, что кто-то мне говорил, что неизвестные параметры должны игнорироваться в
любой версии. Кажется это был Джим. Или Аннушка...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880396
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я это помню только про DPB
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880400
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladя это помню только про DPB

Это да, но они же с TPB одного поля ягоды.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880404
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

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

И вот тебе кусок из fb1 (tra.c) (который мы ещё не успели безнадёжно испортить)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
static void transaction_options (
    TDBB	tdbb,
    TRA		transaction,
    UCHAR	*tpb,
    USHORT	tpb_length)
{
...
while (tpb < end)
    {
    switch (op = *tpb++)
	{
	case gds__tpb_consistency:
...

	default:
	    ERR_post (gds__bad_tpb_form, 0);
	}

...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880406
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladс чего бы это ? Правила для неизвестных эл-тов не обязаны совпадать.

Логично. У DPB это может быть необходимо из-за невозможности узнать версию сервера (и
поддерживаемые им тэги) перед подключением, а TPB ты составляешь уже после.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39880413
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladСимонов Денис,

я вот тоже думаю про (2), но что тут считать совместимым пар-ром - это вопрос.
Приверженцы целостности потребуют тут snapshot, пофигистам достаточно read committed.


Ну если остановиться на п.2, то snapshot логичен. Хотя это может вылезти где-то боком, но всё же лучше чем сейчас.
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39889483
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
hvladСимонов Денис,

я вот тоже думаю про (2), но что тут считать совместимым пар-ром - это вопрос.
Приверженцы целостности потребуют тут snapshot, пофигистам достаточно read committed.


Ну если остановиться на п.2, то snapshot логичен. Хотя это может вылезти где-то боком, но всё же лучше чем сейчас.Так и сделал, всем спасибо за обсуждение ;)
...
Рейтинг: 0 / 0
execute statement on external с 4.0 к 3.0
    #39889491
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

спасибо
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / execute statement on external с 4.0 к 3.0
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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