Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ROW_COUNT: что должно в нём быть в результате MERGE ?.. / 12 сообщений из 12, страница 1 из 1
23.04.2014, 16:08:25
    #38623322
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
... сейчас вот почему-то единица.
А правильно ли это ?

Вот пример:
Код: 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
23.04.2014, 16:13:51
    #38623334
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
Таблоид,

вот же ответ 15759144
...
Рейтинг: 0 / 0
23.04.2014, 16:20:14
    #38623349
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
Симонов Денис, 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
23.04.2014, 16:23:36
    #38623353
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
Таблоид,

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

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

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

на 2.5 тоже самое? В трекер надо, как мне видится.
...
Рейтинг: 0 / 0
23.04.2014, 18:17:15
    #38623568
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
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
23.04.2014, 18:23:32
    #38623573
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
Выскажу предположение, что в ROW_COUNT попадает значение последней подоперации INSERT или
UPDATE, поскольку каждая из них его сбрасывает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.04.2014, 18:41:23
    #38623591
MNF
MNF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ROW_COUNT: что должно в нём быть в результате MERGE ?..
Dimitry SibiryakovВыскажу предположение, что в ROW_COUNT попадает значение последней подоперации INSERT или
UPDATE, поскольку каждая из них его сбрасывает.


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


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