Use one of not-null unique keys to identify rows when the target table doesn't

have a primary key. Some of users want to use not-null unique keys rather than
primary keys because postgres doesn't support REINDEX PRIMARY KEY CONCURRENTLY.

- Support 9.1dev.
- Improve Makefile to use PGXS automatically.
This commit is contained in:
Takahiro Itagaki
2011-01-06 09:35:15 +00:00
parent d8d39cc948
commit 232c9bb6c9
9 changed files with 95 additions and 15 deletions

View File

@ -130,3 +130,19 @@ SELECT oid, relname
WHERE relkind = 'r'
AND reltoastrelid <> 0
AND reltoastrelid NOT IN (SELECT oid FROM pg_class WHERE relkind = 't');
--
-- NOT NULL UNIQUE
--
CREATE TABLE tbl_nn (col1 int NOT NULL, col2 int NOT NULL);
CREATE TABLE tbl_uk (col1 int NOT NULL, col2 int , UNIQUE(col1, col2));
CREATE TABLE tbl_nn_uk (col1 int NOT NULL, col2 int NOT NULL, UNIQUE(col1, col2));
CREATE TABLE tbl_pk_uk (col1 int NOT NULL, col2 int NOT NULL, PRIMARY KEY(col1, col2), UNIQUE(col2, col1));
\! pg_reorg --dbname=contrib_regression --no-order --table=tbl_nn
-- => ERROR
\! pg_reorg --dbname=contrib_regression --no-order --table=tbl_uk
-- => ERROR
\! pg_reorg --dbname=contrib_regression --no-order --table=tbl_nn_uk
-- => OK
\! pg_reorg --dbname=contrib_regression --no-order --table=tbl_pk_uk
-- => OK