mirror of
https://github.com/postgres/postgres.git
synced 2025-04-18 13:44:19 +03:00
It's weird to have the core regression tests depending on contrib code, and coverage testing shows that those test queries add nothing to the core-code coverage of the core tests. So pull those test bits out and put them into ordinary test scripts inside contrib/spi/, making that more like other contrib modules. Aside from being structurally nicer, anything we can take out of the core tests (which are executed multiple times per check-world run) and put into tests executed only once should be a win. It doesn't look like this change will buy a whole lot of milliseconds, but a cycle saved is a cycle earned. Also, there is some discussion around possibly removing refint and/or autoinc altogether. I don't know if that will happen, but we'd certainly need to decouple them from the core tests to do so. The tests for autoinc were quite intertwined with the undocumented "ttdummy" trigger in regress.c. That made the tests very hard to understand and contributed nothing to autoinc's testing either. So I just deleted ttdummy and rewrote the autoinc tests without it. I realized while doing this that the description of autoinc in the SGML docs is not a great description of what the function actually does, so the patch includes some updates to those docs. Author: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi> Discussion: https://postgr.es/m/3872677.1744077559@sss.pgh.pa.us
34 lines
597 B
SQL
34 lines
597 B
SQL
CREATE EXTENSION autoinc;
|
|
|
|
create sequence aitest_seq increment 10 start 0 minvalue 0;
|
|
|
|
create table aitest (
|
|
price_id int4,
|
|
price_val int4,
|
|
price_on int4
|
|
);
|
|
|
|
create trigger aiserial
|
|
before insert or update on aitest
|
|
for each row
|
|
execute procedure
|
|
autoinc (price_on, aitest_seq);
|
|
|
|
insert into aitest values (1, 1, null);
|
|
insert into aitest values (2, 2, 0);
|
|
insert into aitest values (3, 3, 1);
|
|
|
|
select * from aitest;
|
|
|
|
update aitest set price_on = 11;
|
|
|
|
select * from aitest;
|
|
|
|
update aitest set price_on = 0;
|
|
|
|
select * from aitest;
|
|
|
|
update aitest set price_on = null;
|
|
|
|
select * from aitest;
|