cluster.out

来自「postgresql8.3.4源码,开源数据库」· OUT 代码 · 共 444 行 · 第 1/2 页

OUT
444
字号
 25 |   9 | nueve          |                                |        31 |   8 | ocho           |                                |         1 |  11 | once           |                                |        28 |  15 | quince         |                                |        32 |   6 | seis           | xyzzyxyzzyxyzzyxyzzyxyzzyxyzzy | 500000 29 |   7 | siete          |                                |        15 |  13 | trece          |                                |        22 |  30 | treinta        |                                |        17 |  32 | treinta y dos  |                                |         3 |  31 | treinta y uno  |                                |         5 |   3 | tres           |                                |        20 |   1 | uno            |                                |         6 |  20 | veinte         |                                |        14 |  25 | veinticinco    |                                |        21 |  24 | veinticuatro   |                                |         4 |  22 | veintidos      |                                |        19 |  29 | veintinueve    |                                |        16 |  28 | veintiocho     |                                |        27 |  26 | veintiseis     |                                |        13 |  27 | veintisiete    |                                |         7 |  23 | veintitres     |                                |         8 |  21 | veintiuno      |                                |         0 | 100 | in child table |                                |       (33 rows)-- Verify that foreign key link still worksINSERT INTO clstr_tst (b, c) VALUES (1111, 'this should fail');ERROR:  insert or update on table "clstr_tst" violates foreign key constraint "clstr_tst_con"DETAIL:  Key (b)=(1111) is not present in table "clstr_tst_s".SELECT conname FROM pg_constraint WHERE conrelid = 'clstr_tst'::regclassORDER BY 1;    conname     ---------------- clstr_tst_con clstr_tst_pkey(2 rows)SELECT relname, relkind,    EXISTS(SELECT 1 FROM pg_class WHERE oid = c.reltoastrelid) AS hastoastFROM pg_class c WHERE relname LIKE 'clstr_tst%' ORDER BY relname;       relname        | relkind | hastoast ----------------------+---------+---------- clstr_tst            | r       | t clstr_tst_a_seq      | S       | f clstr_tst_b          | i       | f clstr_tst_b_c        | i       | f clstr_tst_c          | i       | f clstr_tst_c_b        | i       | f clstr_tst_inh        | r       | t clstr_tst_pkey       | i       | f clstr_tst_s          | r       | f clstr_tst_s_pkey     | i       | f clstr_tst_s_rf_a_seq | S       | f(11 rows)-- Verify that indisclustered is correctly setSELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2WHERE pg_class.oid=indexrelid	AND indrelid=pg_class_2.oid	AND pg_class_2.relname = 'clstr_tst'	AND indisclustered;   relname   ------------- clstr_tst_c(1 row)-- Try changing indisclusteredALTER TABLE clstr_tst CLUSTER ON clstr_tst_b_c;SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2WHERE pg_class.oid=indexrelid	AND indrelid=pg_class_2.oid	AND pg_class_2.relname = 'clstr_tst'	AND indisclustered;    relname    --------------- clstr_tst_b_c(1 row)-- Try turning off all clusteringALTER TABLE clstr_tst SET WITHOUT CLUSTER;SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2WHERE pg_class.oid=indexrelid	AND indrelid=pg_class_2.oid	AND pg_class_2.relname = 'clstr_tst'	AND indisclustered; relname ---------(0 rows)-- Verify that clustering all tables does in fact cluster the right onesCREATE USER clstr_user;CREATE TABLE clstr_1 (a INT PRIMARY KEY);NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "clstr_1_pkey" for table "clstr_1"CREATE TABLE clstr_2 (a INT PRIMARY KEY);NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "clstr_2_pkey" for table "clstr_2"CREATE TABLE clstr_3 (a INT PRIMARY KEY);NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "clstr_3_pkey" for table "clstr_3"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 <tablename>" on a table that hasn't been clusteredCLUSTER clstr_2;ERROR:  there is no previously clustered index for table "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; a --- 1 2 1 2 2 1(6 rows)-- revert to the original stateDELETE 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);-- this user can only cluster clstr_1 and clstr_3, but the latter-- has not been clusteredSET SESSION AUTHORIZATION clstr_user;CLUSTER;SELECT * FROM clstr_1 UNION ALL  SELECT * FROM clstr_2 UNION ALL  SELECT * FROM clstr_3; a --- 1 2 2 1 2 1(6 rows)-- cluster a single table using the indisclustered bit previously setDELETE FROM clstr_1;INSERT INTO clstr_1 VALUES (2);INSERT INTO clstr_1 VALUES (1);CLUSTER clstr_1;SELECT * FROM clstr_1; a --- 1 2(2 rows)-- Test MVCC-safety of cluster. There isn't much we can do to verify the-- results with a single backend...CREATE TABLE clustertest (key int PRIMARY KEY);NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "clustertest_pkey" for table "clustertest"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);-- Use a transaction so that updates are not committed when CLUSTER sees 'emBEGIN;-- Test update where the old row version is found first in the scanUPDATE clustertest SET key = 100 WHERE key = 10;-- Test update where the new row version is found first in the scanUPDATE clustertest SET key = 35 WHERE key = 40;-- Test longer update chain UPDATE clustertest SET key = 60 WHERE key = 50;UPDATE clustertest SET key = 70 WHERE key = 60;UPDATE clustertest SET key = 80 WHERE key = 70;SELECT * FROM clustertest; key -----  20  30 100  35  80(5 rows)CLUSTER clustertest_pkey ON clustertest;SELECT * FROM clustertest; key -----  20  30  35  80 100(5 rows)COMMIT;SELECT * FROM clustertest; key -----  20  30  35  80 100(5 rows)-- clean up\c -DROP TABLE clustertest;DROP TABLE clstr_1;DROP TABLE clstr_2;DROP TABLE clstr_3;DROP USER clstr_user;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?