\c table_name_test_db;
set dolphin.lower_case_table_names TO 0;
CREATE TABLE Clstr_tst_s (rf_a SERIAL PRIMARY KEY,
b INT);
CREATE TABLE Clstr_tst (a SERIAL PRIMARY KEY,
b INT,
c TEXT,
d TEXT
);
CREATE INDEX Clstr_tst_b ON Clstr_tst (b);
CREATE INDEX Clstr_tst_c ON Clstr_tst (c);
CREATE INDEX Clstr_tst_c_b ON Clstr_tst (c,b);
CREATE INDEX Clstr_tst_b_c ON Clstr_tst (b,c);
INSERT INTO Clstr_tst_s (b) VALUES (0);
INSERT INTO Clstr_tst_s (b) SELECT b FROM Clstr_tst_s;
INSERT INTO Clstr_tst_s (b) SELECT b FROM Clstr_tst_s;
INSERT INTO Clstr_tst_s (b) SELECT b FROM Clstr_tst_s;
INSERT INTO Clstr_tst_s (b) SELECT b FROM Clstr_tst_s;
INSERT INTO Clstr_tst_s (b) SELECT b FROM Clstr_tst_s;
INSERT INTO Clstr_tst (b, c) VALUES (11, 'once');
INSERT INTO Clstr_tst (b, c) VALUES (10, 'diez');
INSERT INTO Clstr_tst (b, c) VALUES (31, 'treinta y uno');
INSERT INTO Clstr_tst (b, c) VALUES (22, 'veintidos');
INSERT INTO Clstr_tst (b, c) VALUES (3, 'tres');
INSERT INTO Clstr_tst (b, c) VALUES (20, 'veinte');
INSERT INTO Clstr_tst (b, c) VALUES (23, 'veintitres');
INSERT INTO Clstr_tst (b, c) VALUES (21, 'veintiuno');
INSERT INTO Clstr_tst (b, c) VALUES (4, 'cuatro');
INSERT INTO Clstr_tst (b, c) VALUES (14, 'catorce');
INSERT INTO Clstr_tst (b, c) VALUES (2, 'dos');
INSERT INTO Clstr_tst (b, c) VALUES (18, 'dieciocho');
INSERT INTO Clstr_tst (b, c) VALUES (27, 'veintisiete');
INSERT INTO Clstr_tst (b, c) VALUES (25, 'veinticinco');
INSERT INTO Clstr_tst (b, c) VALUES (13, 'trece');
INSERT INTO Clstr_tst (b, c) VALUES (28, 'veintiocho');
INSERT INTO Clstr_tst (b, c) VALUES (32, 'treinta y dos');
INSERT INTO Clstr_tst (b, c) VALUES (5, 'cinco');
INSERT INTO Clstr_tst (b, c) VALUES (29, 'veintinueve');
INSERT INTO Clstr_tst (b, c) VALUES (1, 'uno');
INSERT INTO Clstr_tst (b, c) VALUES (24, 'veinticuatro');
INSERT INTO Clstr_tst (b, c) VALUES (30, 'treinta');
INSERT INTO Clstr_tst (b, c) VALUES (12, 'doce');
INSERT INTO Clstr_tst (b, c) VALUES (17, 'diecisiete');
INSERT INTO Clstr_tst (b, c) VALUES (9, 'nueve');
INSERT INTO Clstr_tst (b, c) VALUES (19, 'diecinueve');
INSERT INTO Clstr_tst (b, c) VALUES (26, 'veintiseis');
INSERT INTO Clstr_tst (b, c) VALUES (15, 'quince');
INSERT INTO Clstr_tst (b, c) VALUES (7, 'siete');
INSERT INTO Clstr_tst (b, c) VALUES (16, 'dieciseis');
INSERT INTO Clstr_tst (b, c) VALUES (8, 'ocho');
INSERT INTO Clstr_tst (b, c, d) VALUES (6, 'seis', repeat('xyzzy', 100000));
CLUSTER Clstr_tst_c ON Clstr_tst;
SELECT a,b,c,substring(d for 30), length(d) from Clstr_tst ORDER BY a, b, c;
SELECT a,b,c,substring(d for 30), length(d) from Clstr_tst ORDER BY a;
SELECT a,b,c,substring(d for 30), length(d) from Clstr_tst ORDER BY b;
SELECT a,b,c,substring(d for 30), length(d) from Clstr_tst ORDER BY c;
SELECT a,b,c,substring(d for 30), length(d) from Clstr_tst ORDER BY a, b, c;
INSERT INTO Clstr_tst (b, c) VALUES (1111, 'this should fail');
SELECT conname FROM pg_constraint WHERE conrelid = 'Clstr_tst'::regclass
ORDER BY 1;
SELECT relname, relkind,
EXISTS(SELECT 1 FROM pg_class WHERE oid = c.reltoastrelid) AS hastoast
FROM pg_class c WHERE relname LIKE 'Clstr_tst%' ORDER BY relname;
SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2
WHERE pg_class.oid=indexrelid
AND indrelid=pg_class_2.oid
AND pg_class_2.relname = 'Clstr_tst'
AND indisclustered;
ALTER TABLE Clstr_tst CLUSTER ON Clstr_tst_b_c;
SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2
WHERE pg_class.oid=indexrelid
AND indrelid=pg_class_2.oid
AND pg_class_2.relname = 'Clstr_tst'
AND indisclustered;
ALTER TABLE Clstr_tst SET WITHOUT CLUSTER;
SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2
WHERE pg_class.oid=indexrelid
AND indrelid=pg_class_2.oid
AND pg_class_2.relname = 'Clstr_tst'
AND indisclustered;
CREATE USER Clstr_user PASSWORD 'ttest@123';
CREATE TABLE Clstr_1 (a INT PRIMARY KEY);
CREATE TABLE Clstr_2 (a INT PRIMARY KEY);
CREATE TABLE Clstr_3 (a INT PRIMARY KEY);
ALTER TABLE Clstr_1 OWNER TO Clstr_user;
ALTER TABLE Clstr_3 OWNER TO Clstr_user;
GRANT SELECT ON Clstr_2 TO Clstr_user;
INSERT INTO Clstr_1 VALUES (2);
INSERT INTO Clstr_1 VALUES (1);
INSERT INTO Clstr_2 VALUES (2);
INSERT INTO Clstr_2 VALUES (1);
INSERT INTO Clstr_3 VALUES (2);
INSERT INTO Clstr_3 VALUES (1);
CLUSTER Clstr_2;
CLUSTER Clstr_1_pkey ON Clstr_1;
CLUSTER Clstr_2 USING Clstr_2_pkey;
SELECT * FROM Clstr_1 UNION ALL
SELECT * FROM Clstr_2 UNION ALL
SELECT * FROM Clstr_3
ORDER BY 1;
DELETE FROM Clstr_1;
DELETE FROM Clstr_2;
DELETE FROM Clstr_3;
INSERT INTO Clstr_1 VALUES (2);
INSERT INTO Clstr_1 VALUES (1);
INSERT INTO Clstr_2 VALUES (2);
INSERT INTO Clstr_2 VALUES (1);
INSERT INTO Clstr_3 VALUES (2);
INSERT INTO Clstr_3 VALUES (1);
SET SESSION AUTHORIZATION Clstr_user PASSWORD 'ttest@123';
CLUSTER;
SELECT * FROM Clstr_1 UNION ALL
SELECT * FROM Clstr_2 UNION ALL
SELECT * FROM Clstr_3
ORDER BY 1;
DELETE FROM Clstr_1;
INSERT INTO Clstr_1 VALUES (2);
INSERT INTO Clstr_1 VALUES (1);
CLUSTER Clstr_1;
SELECT * FROM Clstr_1
ORDER BY 1;
CREATE TABLE clustertest (key_a int PRIMARY KEY);
INSERT INTO clustertest VALUES (10);
INSERT INTO clustertest VALUES (20);
INSERT INTO clustertest VALUES (30);
INSERT INTO clustertest VALUES (40);
INSERT INTO clustertest VALUES (50);
START TRANSACTION;
UPDATE clustertest SET key_a = 100 WHERE key_a = 10;
UPDATE clustertest SET key_a = 35 WHERE key_a = 40;
UPDATE clustertest SET key_a = 60 WHERE key_a = 50;
UPDATE clustertest SET key_a = 70 WHERE key_a = 60;
UPDATE clustertest SET key_a = 80 WHERE key_a = 70;
SELECT * FROM clustertest ORDER BY 1;
CLUSTER clustertest_pkey ON clustertest;
SELECT * FROM clustertest ORDER BY 1;
COMMIT;
SELECT * FROM clustertest ORDER BY 1;
RESET SESSION AUTHORIZATION;
SET SESSION AUTHORIZATION Clstr_user PASSWORD 'ttest@123';
create temp table Clstr_temp (col1 int primary key, col2 text);
insert into Clstr_temp values (2, 'two'), (1, 'one');
cluster Clstr_temp using Clstr_temp_pkey;
select * from Clstr_temp order by 1;
drop table Clstr_temp;
DROP TABLE Clstr_2;
DROP TABLE Clstr_tst_s;
\c -
RESET SESSION AUTHORIZATION;
DROP USER "Clstr_user" CASCADE;