powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ROW_COUNT: что должно в нём быть в результате MERGE ?..
12 сообщений из 12, страница 1 из 1
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623322
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... сейчас вот почему-то единица.
А правильно ли это ?

Вот пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
recreate table t1(id int primary key using index t1_pk, x int);
recreate table t2(id int primary key using index t2_pk, x int);
commit;
insert into t1 select row_number()over(), rand()*100 from rdb$types rows 10;
commit;
insert into t2 select row_number()over(), rand()*100 from rdb$types rows 50;
commit;
set term ^;
execute block returns(processed_rows int) as
begin
  merge into t1 t using t2 s on t.id=s.id
  when MATCHED then update set t.x=t.x+s.x
  when NOT matched then insert values(s.id, s.x);
  processed_rows = row_count;
  suspend;
end
set term ;^
rollback;

-- вернёт 1.

ИМХО, merge всегда пробегает по всем строкам источника, так что логичнее было бы возвращать то число строк, которое "пробежали".
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623334
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

вот же ответ 15759144
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623349
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, http://www.firebirdsql.org/refdocs/langrefupd25-row_count.html In a FOR SELECT loop, ROW_COUNT is incremented with every iteration (starting at 0 before the first).
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623353
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

хм... ну может быть и бага. Хотя для MERGE КМК правильней ввести три контекстные переменные row_inserted, row_updated и row_deleted ибо неплохо бы знать сколько записей попало под каждое из условий в merge
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623361
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROW_COUNT после MERGE вообще не должен возвращать число прочитанных записей источника, он возвращает число вставленных/измененных записей
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623370
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, dimitr!
You wrote on 23 апреля 2014 г. 16:29:30:

dimitr> ROW_COUNT после MERGE вообще не должен возвращать число прочитанных
> записей источника, он возвращает число вставленных/измененных записей
наверное вставленных + измененных ?
или как?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623376
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

начиная с тройки должно вставленных + измененных + удалённых
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623395
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrROW_COUNT после MERGE вообще не должен возвращать число прочитанных записей источника, он возвращает число вставленных/измененных записейНу так у мну в примере 40 строк добавилось и 10 изменилось. А "барометр" показывает, что только 1.
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623551
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

на 2.5 тоже самое? В трекер надо, как мне видится.
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623568
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrна 2.5 тоже самое? В трекер надо, как мне видится.Да, по кр мере на LI-V2.5.3.26744 - тоже самое.
Код: 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.
29.
30.
Database:  192.168.0.220/3253:/var/db/fb25/production25.fdb
SQL> create sequence g;
SQL> recreate table t1(id int primary key using index t1_pk, x int);
SQL> recreate table t2(id int primary key using index t2_pk, x int);
SQL> commit;
SQL>
SQL> insert into t1 select gen_id(g,1), rand()*100 from rdb$types rows 10;
SQL> commit;
SQL>
SQL> alter sequence g restart with 0;
SQL> commit;
SQL>
SQL> insert into t2 select gen_id(g,1), rand()*100 from rdb$types rows 50;
SQL> commit;
SQL>
SQL> set term ^;
SQL> execute block returns(processed_rows int) as
CON> begin
CON>   merge into t1 t using t2 s on t.id=s.id
CON>   when MATCHED then update set t.x=t.x+s.x
CON>   when NOT matched then insert values(s.id, s.x);
CON>   processed_rows = row_count;
CON>   suspend;
CON> end
CON> ^set term ;^

PROCESSED_ROWS
==============
             1

SQL> rollback;
http://tracker.firebirdsql.org/browse/CORE-4400
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623573
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выскажу предположение, что в ROW_COUNT попадает значение последней подоперации INSERT или
UPDATE, поскольку каждая из них его сбрасывает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ROW_COUNT: что должно в нём быть в результате MERGE ?..
    #38623591
Фотография MNF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВыскажу предположение, что в ROW_COUNT попадает значение последней подоперации INSERT или
UPDATE, поскольку каждая из них его сбрасывает.


В ROW_COUNT для MERGE непонятно что отображается. hvlad давал ссылку на стандарт... но до трекера я так и не добрался. Спасибо Таблоид'у - актуализировал
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ROW_COUNT: что должно в нём быть в результате MERGE ?..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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