Re[19]: А может вообще уйти с Firebird?
От: SmlMouse Забанен  
Дата: 20.09.07 23:49
Оценка:
Здравствуйте, IB, Вы писали:

IB>Да я что-то даже не увидел на что тут можно аргументировано возразить...

Да хотя бы на это:
    IBPP::Database database = IBPP::DatabaseFactory("", "test_alias", "sysdba", "masterkey");
    CHECK_IBPP(database->Connect());

    IBPP::Transaction tr1 = IBPP::TransactionFactory(database, IBPP::amWrite, IBPP::ilReadCommitted, IBPP::lrNoWait);
    IBPP::Transaction tr2 = IBPP::TransactionFactory(database, IBPP::amWrite, IBPP::ilReadCommitted, IBPP::lrNoWait);
    ////////////////////////////////////
    // Подход первый: две транзакции - первая читает, вторая пишет что прочиталось, 
    // первая опять читает.
    ////////////////////////////////////
    TRACE_PART(_T("1"));

    tr1->Start();
    tr2->Start();
    ////////////////////////////////////

    IBPP::Statement stmr_tr1 = IBPP::StatementFactory(database, tr1, _T("select * from test1 order by ID"));
    CHECK_IBPP(stmr_tr1->Execute());

    IBPP::Row rw;
    int iVal, iSum = 0; 
    TRACE_STM_START(stmr_tr1);
    while (stmr_tr1->Fetch(rw))
    {
        TRACE_ROW(rw);
        rw->Get(_T("cnt"), iVal);
        iSum += iVal;
    }
    stmr_tr1->Close();

    IBPP::Statement stmu_tr2 = IBPP::StatementFactory(database, tr2, _T("update test1 set cnt = %d where name = 'TOTAL' "), iSum);
    CHECK_IBPP(stmu_tr2->Execute());

    CHECK_IBPP(stmr_tr1->Execute());
    TRACE_STM_START(stmr_tr1);
    while (stmr_tr1->Fetch(rw))
    {
        TRACE_ROW(rw);
    }
    stmr_tr1->Close();

    ////////////////////////////////////
    tr2->Commit();
    ////////////////////////////////////

    CHECK_IBPP(stmr_tr1->Execute());
    TRACE_STM_START(stmr_tr1);
    while (stmr_tr1->Fetch(rw))
    {
        TRACE_ROW(rw);
    }
    stmr_tr1->Close();
    tr1->Commit();

    ////////////////////////////////////
    // подход два: обе пишут, одна откатилась, вторая - нет.
    ////////////////////////////////////

    TRACE_PART(_T("2"));
    tr1 = IBPP::TransactionFactory(database, IBPP::amWrite, IBPP::ilReadCommitted, IBPP::lrNoWait);
    tr2 = IBPP::TransactionFactory(database, IBPP::amWrite, IBPP::ilReadCommitted, IBPP::lrNoWait);

    stmr_tr1 = IBPP::StatementFactory(database, tr1, _T("update test1 set name = 'test' where ID = 1 "));
    CHECK_IBPP(stmr_tr1->Execute());
    stmr_tr1->Close();

    stmr_tr1 = IBPP::StatementFactory(database, tr1, _T("select * from test1 order by ID"));
    CHECK_IBPP(stmr_tr1->Execute());
    TRACE_STM_START(stmr_tr1);
    while (stmr_tr1->Fetch(rw))
    {
        TRACE_ROW(rw);
    }
    stmr_tr1->Close();
    
    stmu_tr2 = IBPP::StatementFactory(database, tr2, _T("update test2 set tf = 'f_' || cast(ID as VARCHAR(1)) "));
    CHECK_IBPP(stmu_tr2->Execute());
    stmu_tr2->Close();

    stmu_tr2 = IBPP::StatementFactory(database, tr2, _T("select * from test2 order by ID"));
    CHECK_IBPP(stmu_tr2->Execute());
    TRACE_STM_START(stmu_tr2);
    while (stmu_tr2->Fetch(rw))
    {
        TRACE_ROW(rw);
    }
    stmu_tr2->Close();

    tr1->Rollback();
    tr2->Commit();

    // И чё получилось?

    IBPP::Transaction tr3 = IBPP::TransactionFactory(database, IBPP::amRead, IBPP::ilReadCommitted, IBPP::lrNoWait);
    stmr_tr1 = IBPP::StatementFactory(database, tr3, _T("select * from test1 order by ID"));
    CHECK_IBPP(stmr_tr1->Execute());
    TRACE_STM_START(stmr_tr1);
    while (stmr_tr1->Fetch(rw))
    {
        TRACE_ROW(rw);
    }
    stmr_tr1->Close();

    stmu_tr2 = IBPP::StatementFactory(database, tr3, _T("select * from test2 order by ID"));
    CHECK_IBPP(stmu_tr2->Execute());
    TRACE_STM_START(stmu_tr2);
    while (stmu_tr2->Fetch(rw))
    {
        TRACE_ROW(rw);
    }
    stmu_tr2->Close();

    database->Disconnect();


Output:
//////////////////////////////////////////////////////////
// 1
//////////////////////////////////////////////////////////

TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL <null>

TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL <null>

TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL 87

//////////////////////////////////////////////////////////
// 2
//////////////////////////////////////////////////////////

TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 test 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL 87

TRACE for statement [select * from test2]
Fields:
ID [BIGINT] tf [VARCHAR(10)]
---------------------------------------
1 f_1
2 f_2
3 f_3
4 f_4

TRACE for statement [select * from test1 order by ID]
Fields:
ID [BIGINT] Name [VARCHAR(60)] Cnt [INTEGER]
------------------------------------------------------------
1 lksdjalksjahdlfjasf 33
2 slkdfhlgskdjgh 10
3 lskdfghldgf 44
4 TOTAL 87

TRACE for statement [select * from test2]
Fields:
ID [BIGINT] tf [VARCHAR(10)]
---------------------------------------
1 f_1
2 f_2
3 f_3
4 f_4
Re[21]: А может вообще уйти с Firebird?
От: _d_m_  
Дата: 21.09.07 04:10
Оценка: +1
Здравствуйте, IB, Вы писали:

IB>У IB-шников похоже просто комплекс какой-то.


Стопудово
Re[16]: А может вообще уйти с Firebird?
От: _d_m_  
Дата: 21.09.07 04:29
Оценка:
Здравствуйте, pnv82, Вы писали:

P>В какой-то момент времени, пользователь видит, что в справочнике номенклатуры ошибка — он открывает карточку соответствующего товара, и в транзакции Т2 исправляет название, после чего коммитит Т2. Заметим, эти изменения справочника должны остаться в БД, даже если пользователь откатит Т1. И только по завершению редактирования документа комитится Т1.

P>Т1 и Т2 как раз и есть, то, что называют параллельными транзакциями в этой ветке.

Офигеть, дайте две. Здесь вполне можно открыть второе соединение и там выполнить изменения справочника — какая здесь необходимость в параллельных транзакциях?

P>Так вот, подобный сценарий, в ФБ реализуется в рамках одного соединения, в то время как...

P>Говорить, что такой стиль разработки неверен — не стоит, в некоторых случая это более чем адекватно.

Стоит
Re[12]: А может вообще уйти с Firebird?
От: _d_m_  
Дата: 21.09.07 04:31
Оценка: +2 -3
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>... Иван, завязывай с линейным мышлением. На улице уже даже не объектно-ориентированное время. В один корпус кучу ядер интегрируют, а ты не можешь понять зачем несколько транзакций засовывают в одной трубе подключения.


Ага, "шизофрения — ваш выбор"

Не вижу связи между запихиванием ядер в один корпус и запихиванием транзакций в одно соединение. Вот она сила гигантов мысли...
Re[15]: А может вообще уйти с Firebird?
От: Andyshark  
Дата: 21.09.07 08:03
Оценка: +1
Здравствуйте, IZM, Вы писали:

IZM>Я вот только понять не могу зачем смотреть незакоммиченные данные из другой транзакции?


IZM>Пример:

IZM>1. Открывается подключение к базе данных Test и начинается транзакция. Уровень ее изоляции по умолчанию ReadCommitted
IZM>2. Открывается еще одно подключение и начинается еще одна транзакция. Уровень ее изоляции сделаем ReadUncommitted.
IZM>3. Из первой транзакции вставляется строка в таблицу Cat_Contr (контр агента добавили) коммит не делаем — может нам такой контр не нужен или это просто бухгалтер свои знания тестирует
IZM>4. Из второй транзакции выполняется чтение этой строки (Уровень изоляции позволяет читать незакоммиченные данные), далее их можно использовать дальше в других таблица. Но если первая транзакция сделает откат — целостность и согласованность данных можно потерять.

IZM>Если Вы хотите осложнять себе жизнь — пожалуйста


Интересно — а кто себе жизнь осложняет с помощью ReadUncommitted? Если я правильно напряг свои мозги то такого в IB/FB просто нет. И никто не смотрит незакомиченные данные ни в одном примере. Выборка и фетч делаются по ЗАКОМИЧЕННЫМ данным, т.е. они есть в БД, а в каком состоянии стартует транзакция на выборку мне например глубоко по барабану (тем более что можно и в SNAPSHOT стартовать ее, если делать запись данных в другой транзакции).

Вообще почитал, и мне стало интересно — а те кто пишут про просмотр "незакомиченных" данных при обычном селекте хоть что-нибудь про транзакции IB/FB знают или нет? Похоже что нет.

Вопрос на засыпку — какие типы транзакций существуют в IB/FB. Кто из тех кто против IB/FB сможет ответить? Или просто не знаете?
Re: А может вообще уйти с Firebird?
От: Andyshark  
Дата: 21.09.07 08:14
Оценка:
Здравствуйте, mmaxx, Вы писали:

M>Знаю, что тема не нова, но время не стоит на месте...


M>Может, насоветуете альтернативную СУБД:

M>* бесплатная;
M>* параллельные транзакции;
M>* хранимые процедуры, триггеры;
M>* защита от юзверя (что раздражает в Firebird — так это божественное всемогущие SYSDBA).

Интересно, а поменять всемогущего никак не пробовали? Или это бог неменяемый?
И чем FB не устраивает? Религия не позволяет? Причины есть которые обусловили такой вопрос?
Re[17]: А может вообще уйти с Firebird?
От: Ramzzes Россия http://ramzes.ws/
Дата: 21.09.07 08:25
Оценка: +1
Здравствуйте, _d_m_, Вы писали:

___>Офигеть, дайте две. Здесь вполне можно открыть второе соединение и там выполнить изменения справочника — какая здесь необходимость в параллельных транзакциях?


Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение?
Re[19]: А может вообще уйти с Firebird?
От: Ramzzes Россия http://ramzes.ws/
Дата: 21.09.07 09:30
Оценка: +1
Здравствуйте, IB, Вы писали:

IB>"(2) меняет данные на основании фетча из (1)" — означает, что (2) имеет доступ к незафиксированным данным из (1). Или есть какая-то другая, недоступная мне интерпретация данной фразы?


Простите за нескромный вопрос, вы знаете, что такое фетч? Если знаете, тогда объясните пожалуйста, какие в нем могут быть незафиксированные данные?

SM>> Так что пока я никак не могу увидеть, как транзакция (2) видит незафиксированные данные из (1).

IB>(2) видит данные из (1) в процессе работы (1) (до того как (1) зафиксировалась), это означает, что (2) видит незафиксированные данные (1) так как дать гарантию, что данные в (1) не менялись в процессе ее работы, никто не может.

Как так никто не может? А кто код программы, позвольте спросить, пишет? Генератор случайных чисел?

SM>> В транзакции (1) данные были зафетчены (забраны с сервера). Причем данные на состояние старта (1).

IB>Что мешает в момент старта (1) забрать данные с сервера и зафиксировать эту транзакцию, а потом начинать работать с (2)? Зачем держать транзакцию открытой, если по твоим же словам "commit/rolback (1) (не имеет значения, модификации не проводились)"?
IB>Что-то ты со своим примером сам запутался...

Кто же спорит, можно и так. Только почему вы позволяете себе утверждать, что если определенная задача в сервере X может быть решена способами A и B, а в сервере Y только способом B, то значит сервер X некошерный и способ A права на существование не имеет? Или разнообразие возможностей выполнения задачи с некоторого время является недостатком программы?

P.S. Только маленькая просьбочка... не нужно больше аргумента про "изнурительную многопоточность"... мы вчера полдня из под стола вылезти не в силах были, а нам работать надо...
Re[2]: А может вообще уйти с Firebird?
От: mmaxx  
Дата: 21.09.07 09:40
Оценка:
A>Интересно, а поменять всемогущего никак не пробовали? Или это бог неменяемый?
A>И чем FB не устраивает? Религия не позволяет? Причины есть которые обусловили такой вопрос?

Что-то я Вас недопонимаю... Куда Вы денетесь от SYSDBA? Если клиент не знает его пароля, он свободно переустановкой СУБД решит эту проблему и база как на ладони.
Ну а во-вторых, т. н. "параллельные транзакции" не поддерживаются его Data Provider-ом.

PS По божественным и религиозным вопросам Вы ошиблись форумом.
Re[3]: А может вообще уйти с Firebird?
От: Igor_123 Украина  
Дата: 21.09.07 09:55
Оценка:
Здравствуйте, mmaxx, Вы писали:

A>>Интересно, а поменять всемогущего никак не пробовали? Или это бог неменяемый?

A>>И чем FB не устраивает? Религия не позволяет? Причины есть которые обусловили такой вопрос?

M>Что-то я Вас недопонимаю... Куда Вы денетесь от SYSDBA? Если клиент не знает его пароля, он свободно переустановкой СУБД решит эту проблему и база как на ладони.

как это переустановка СУБД решит эту проблему???
для смены пароля нужно или присоедениться к БД под SYSDBA и тогда поменять пароль или пересоздать БД и перелить в неё данные, для чего нужно присоедениться с БД снять метаданные, выгрузить данные и все это можно только под учетной записью того, у кого есть права на все эти операции, и это у многих не SYSDBA
M>Ну а во-вторых, т. н. "параллельные транзакции" не поддерживаются его Data Provider-ом.
ну так затянувшаяся на третий день дисскусия по моему явно показала, что "паралельных" транзакций нет ни у каких серверов под НЕТ
M>PS По божественным и религиозным вопросам Вы ошиблись форумом.

что-же у всех с юмором
Удачи
... << RSDN@Home 1.2.0 alpha rev. 729>>
Re[4]: А может вообще уйти с Firebird?
От: Alex.Che  
Дата: 21.09.07 10:01
Оценка:
Привет, Igor_123!
Вы пишешь 21 сентября 2007:

[Sorry, skipped]
I> ну так затянувшаяся на третий день дисскусия по моему явно показала,
I> что "паралельных" транзакций нет ни у каких серверов под НЕТ

А спецификацией NET-провайдеров они предусмотрены?
Я не в курсе просто.
В спецификации OLE DB, их есть.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.1 beta
Re[18]: А может вообще уйти с Firebird?
От: kuj  
Дата: 21.09.07 10:26
Оценка: -2
Здравствуйте, Ramzzes, Вы писали:

R>Здравствуйте, _d_m_, Вы писали:


___>>Офигеть, дайте две. Здесь вполне можно открыть второе соединение и там выполнить изменения справочника — какая здесь необходимость в параллельных транзакциях?


R>Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение?


Бритву Оккама
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[5]: А может вообще уйти с Firebird?
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 21.09.07 10:26
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>А спецификацией NET-провайдеров они предусмотрены?

AC>Я не в курсе просто.
AC>В спецификации OLE DB, их есть.

Их и в ADODB нету. Но те кому они нужны — и через ADODB могут без проблем создавать и использовать несколько транзакций на одном соединении.

Как в прочем и управлять отдельными уровнями вложенных транзакций. Поддержка которых в ADODB ограничена тем, что BeginTrans возвращает номер уровня.

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

С ADO.NET для FB тоже самое. Тем более что есть исходники. И конкретные люди заинтересованные в развитии этого драйвера.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: А может вообще уйти с Firebird?
От: mmaxx  
Дата: 21.09.07 10:58
Оценка:
I_>как это переустановка СУБД решит эту проблему???
I_>для смены пароля нужно или присоедениться к БД под SYSDBA и тогда поменять пароль или пересоздать БД и перелить в неё данные, для чего нужно присоедениться с БД снять метаданные, выгрузить данные и все это можно только под учетной записью того, у кого есть права на все эти операции, и это у многих не SYSDBA

Продолжаю утверждать, что к базе на клиентской машине можно запросто получить полный доступ.

M>>PS По божественным и религиозным вопросам Вы ошиблись форумом.

I_>что-же у всех с юмором
I_>Удачи

И где я там шутку пропустил?..
Re[19]: А может вообще уйти с Firebird?
От: Ramzzes Россия http://ramzes.ws/
Дата: 21.09.07 10:59
Оценка: +1 -1
Здравствуйте, kuj, Вы писали:

R>>Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение?

kuj>Бритву Оккама

Пытаемся задавить интеллехтом? Напомню, форум по программированию, а не по толкованию философских принципов.

Вижу три критерия определения преимуществ:
— Наличие возможности.
— Удобство использования.
— Расход ресурсов.

Возможно кто-то добавит еще.

По существу дела есть что сказать? Без философских терминов?
Re: А может вообще уйти с Firebird?
От: AlexLinch Украина  
Дата: 21.09.07 11:15
Оценка: 5 (2) +1
Здравствуйте, mmaxx, Вы писали:

M>Может, насоветуете альтернативную СУБД:

Как уже было предложено: SQL Server 2005 Express (повторюсь)
M>* бесплатная;
да
M>* параллельные транзакции;
(есть). если я правильно понял, то нужно это:
BEGIN TRAN T1
UPDATE table1 ...
BEGIN TRAN M2 WITH MARK
UPDATE table2 ...
SELECT * from table1
COMMIT TRAN M2
UPDATE table3 ...
COMMIT TRAN T1


M>* хранимые процедуры, триггеры;

есть и хранимки и тригеры и функции...
M>* защита от юзверя (что раздражает в Firebird — так это божественное всемогущие SYSDBA).
чет не совсем понятен вопрос... Но, в MSSQLServere есть возможность работать как от имени пользователя сервера, так и от пользователя виндовс(настроить можно на групу пользователей винды)...
Re[5]: А может вообще уйти с Firebird?
От: Andyshark  
Дата: 21.09.07 12:16
Оценка:
Здравствуйте, mmaxx, Вы писали:

I_>>как это переустановка СУБД решит эту проблему???

I_>>для смены пароля нужно или присоедениться к БД под SYSDBA и тогда поменять пароль или пересоздать БД и перелить в неё данные, для чего нужно присоедениться с БД снять метаданные, выгрузить данные и все это можно только под учетной записью того, у кого есть права на все эти операции, и это у многих не SYSDBA

M>Продолжаю утверждать, что к базе на клиентской машине можно запросто получить полный доступ.


Вы вероятно имели ввиду работу с embedded версией в первую очередь? Так там вобще без пароля можно подключиться, проверка не проводится. Но это частный случай, и он сделан СПЕЦИАЛЬНО. А по поводу сервиса — насколько я помню работы в этом направлении ведутся. И никто не спорит что базу имея ее на руках можно открыть с помощью embedded версии или своим сервером. Но с другой стороны это и хорошо. А если Вы работаете в большой конторе, то кто вам мешает закрыться административно от хакеров? Есть рекомендации по работе с БД, и SYSDBA там указан, т.е. что с ним делать.

P.S. Сохранность информации можно достичь и другими способами, и никто не спрашивал как. А раздражение на SYSDBA надо было просто направить в русло смены его над другого, и все... Т.е. данная претензия просто непонятна, она показывает что Вы работал с БД не пытаясь углубиться в описания что и как делать. Попытка закрыть БД от пользователя не есть удобная вещь, т.к. если это программа на продажу Вас потом юзвери сьедят, если для внутреннего пользования — то совсем непонятно почему этот вопрос возник — административные рычаги никто не отменял.
Re[20]: А может вообще уйти с Firebird?
От: kuj  
Дата: 21.09.07 13:47
Оценка: -1
Здравствуйте, Ramzzes, Вы писали:

R>>>Объясните уж неверным, какое такое офигенное технологическое преимущество мы получаем, открывая в данном случае второе соединение?

kuj>>Бритву Оккама

R>Пытаемся задавить интеллехтом? Напомню, форум по программированию, а не по толкованию философских принципов.


R>Вижу три критерия определения преимуществ:

R>- Наличие возможности.
Возможность не есть преимущество. Я потому и упомянул принцип бритвы оккама.

R>- Удобство использования.

Спорно. У нас в проектах, например, повсеместно используется NHibernate. Он сам заботится о корректной организации транзакций.

R>- Расход ресурсов.

Опять же, весьма спорно. Если только Вы не выполняете десятки и сотни параллельных транзакций, а если выполняете... кхм, возможно стоит подумать об изменении архитектуры?
Во всех других случаях достаточно простейшего пулла соединений.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[20]: А может вообще уйти с Firebird?
От: IB Австрия http://rsdn.ru
Дата: 21.09.07 15:26
Оценка:
Здравствуйте, Ramzzes, Вы писали:

R> Если знаете, тогда объясните пожалуйста, какие в нем могут быть незафиксированные данные?

Очень просто. Фетчим данные на клиента, потом их меняем (те, которые отфестчили на клиента — неужели это так сложнопонять?), потом этими измененными данными пользуется другая транзакция.

R>Как так никто не может?

А вот так.

R> А кто код программы, позвольте спросить, пишет? Генератор случайных чисел?

Как правило генератор случайных чисел предсказуемее.

R> Только почему вы позволяете себе утверждать, что если определенная задача в сервере X может быть решена способами A и B, а в сервере Y только способом B, то значит сервер X некошерный и способ A права на существование не имеет?

Я утверждаю, что способ X — не кошерный, вне зависимости от сервера. Почему — я пытался объяснить неоднократно.
Возможно несколько коротко, но ребята объяснений было более чем достаточно и вообще я уже сутки как в отпуске.

R>мы вчера полдня из под стола вылезти не в силах были, а нам работать надо...

Нет, ребята, не вылезайте, лучше не надо.
Мы уже победили, просто это еще не так заметно...
Re[20]: А может вообще уйти с Firebird?
От: IB Австрия http://rsdn.ru
Дата: 21.09.07 15:29
Оценка:
Здравствуйте, SmlMouse, Вы писали:

SM> Ты думаешь, ответы будут различаться?

Понятия не имею, я же его спрашивал.

SM> Или меня боишься?

Есть чего?

SM> Ты уже показал, что за рамки своего опыта не можешь выйти даже мысленно.

Думаешь есть необходимость?

SM> Ну так его ещё и проектировать нужно под другие серваки.

Нда, я подозревал, что разработчики IB ленивее чем надо и н еучатся даже на положительном опыте..
Мы уже победили, просто это еще не так заметно...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.