without_oid.sql

来自「postgresql8.3.4源码,开源数据库」· SQL 代码 · 共 93 行

SQL
93
字号
---- WITHOUT OID------ This test tries to verify that WITHOUT OIDS actually saves space.-- On machines where MAXALIGN is 8, WITHOUT OIDS may or may not save any-- space, depending on the size of the tuple header + null bitmap.-- As of 8.3 we need a null bitmap of 8 or less bits for the difference-- to appear.--CREATE TABLE wi (i INT,                 n1 int, n2 int, n3 int, n4 int,                 n5 int, n6 int, n7 int) WITH OIDS;CREATE TABLE wo (i INT,                 n1 int, n2 int, n3 int, n4 int,                 n5 int, n6 int, n7 int) WITHOUT OIDS;INSERT INTO wi VALUES (1);  -- 1INSERT INTO wo SELECT i FROM wi;  -- 1INSERT INTO wo SELECT i+1 FROM wi;  -- 1+1=2INSERT INTO wi SELECT i+1 FROM wo;  -- 1+2=3INSERT INTO wi SELECT i+3 FROM wi;  -- 3+3=6INSERT INTO wo SELECT i+2 FROM wi;  -- 2+6=8INSERT INTO wo SELECT i+8 FROM wo;  -- 8+8=16INSERT INTO wi SELECT i+6 FROM wo;  -- 6+16=22INSERT INTO wi SELECT i+22 FROM wi;  -- 22+22=44INSERT INTO wo SELECT i+16 FROM wi;  -- 16+44=60INSERT INTO wo SELECT i+60 FROM wo;  -- 60+60=120INSERT INTO wi SELECT i+44 FROM wo;  -- 44+120=164INSERT INTO wi SELECT i+164 FROM wi;  -- 164+164=328INSERT INTO wo SELECT i+120 FROM wi;  -- 120+328=448INSERT INTO wo SELECT i+448 FROM wo;  -- 448+448=896INSERT INTO wi SELECT i+328 FROM wo;  -- 328+896=1224INSERT INTO wi SELECT i+1224 FROM wi;  -- 1224+1224=2448INSERT INTO wo SELECT i+896 FROM wi;  -- 896+2448=3344INSERT INTO wo SELECT i+3344 FROM wo;  -- 3344+3344=6688INSERT INTO wi SELECT i+2448 FROM wo;  -- 2448+6688=9136INSERT INTO wo SELECT i+6688 FROM wi WHERE i<=2448;  -- 6688+2448=9136SELECT count(oid) FROM wi;-- should failSELECT count(oid) FROM wo;VACUUM ANALYZE wi;VACUUM ANALYZE wo;SELECT min(relpages) < max(relpages), min(reltuples) - max(reltuples)  FROM pg_class WHERE relname IN ('wi', 'wo');DROP TABLE wi;DROP TABLE wo;---- WITH / WITHOUT OIDS in CREATE TABLE AS--CREATE TABLE create_table_test (    a int,    b int);COPY create_table_test FROM stdin;5	1010	15\.CREATE TABLE create_table_test2 WITH OIDS AS    SELECT a + b AS c1, a - b AS c2 FROM create_table_test;CREATE TABLE create_table_test3 WITHOUT OIDS AS    SELECT a + b AS c1, a - b AS c2 FROM create_table_test;SELECT count(oid) FROM create_table_test2;-- should failSELECT count(oid) FROM create_table_test3;PREPARE table_source(int) AS    SELECT a + b AS c1, a - b AS c2, $1 AS c3 FROM create_table_test;CREATE TABLE execute_with WITH OIDS AS EXECUTE table_source(1);CREATE TABLE execute_without WITHOUT OIDS AS EXECUTE table_source(2);SELECT count(oid) FROM execute_with;-- should failSELECT count(oid) FROM execute_without;DROP TABLE create_table_test;DROP TABLE create_table_test2;DROP TABLE create_table_test3;DROP TABLE execute_with;DROP TABLE execute_without;

⌨️ 快捷键说明

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