-- -- MISC -- -- -- BTREE -- UPDATE onek SET unique1 = onek.unique1 + 1; UPDATE onek SET unique1 = onek.unique1 - 1; -- -- BTREE partial -- -- UPDATE onek2 -- SET unique1 = onek2.unique1 + 1; --UPDATE onek2 -- SET unique1 = onek2.unique1 - 1; -- -- BTREE shutting out non-functional updates -- -- the following two tests seem to take a long time on some -- systems. This non-func update stuff needs to be examined -- more closely. - jolly (2/22/96) -- UPDATE tmp SET stringu1 = reverse_name(onek.stringu1) FROM onek WHERE onek.stringu1 = 'JBAAAA' and onek.stringu1 = tmp.stringu1; UPDATE tmp SET stringu1 = reverse_name(onek2.stringu1) FROM onek2 WHERE onek2.stringu1 = 'JCAAAA' and onek2.stringu1 = tmp.stringu1; DROP TABLE tmp; --UPDATE person* -- SET age = age + 1; --UPDATE person* -- SET age = age + 3 -- WHERE name = 'linda'; -- -- copy -- COPY onek TO '@abs_builddir@/results/onek.data'; DELETE FROM onek; COPY onek FROM '@abs_builddir@/results/onek.data'; SELECT unique1 FROM onek WHERE unique1 < 2 ORDER BY unique1; DELETE FROM onek2; COPY onek2 FROM '@abs_builddir@/results/onek.data'; SELECT unique1 FROM onek2 WHERE unique1 < 2 ORDER BY unique1; COPY BINARY stud_emp TO '@abs_builddir@/results/stud_emp.data'; DELETE FROM stud_emp; COPY BINARY stud_emp FROM '@abs_builddir@/results/stud_emp.data'; SELECT * FROM stud_emp; -- COPY aggtest FROM stdin; -- 56 7.8 -- 100 99.097 -- 0 0.09561 -- 42 324.78 -- . -- COPY aggtest TO stdout; -- -- inheritance stress test -- SELECT * FROM a_star*; SELECT * FROM b_star* x WHERE x.b = text 'bumble' or x.a < 3; SELECT class, a FROM c_star* x WHERE x.c ~ text 'hi'; SELECT class, b, c FROM d_star* x WHERE x.a < 100; SELECT class, c FROM e_star* x WHERE x.c NOTNULL; SELECT * FROM f_star* x WHERE x.c ISNULL; -- grouping and aggregation on inherited sets have been busted in the past... SELECT sum(a) FROM a_star*; SELECT class, sum(a) FROM a_star* GROUP BY class ORDER BY class; ALTER TABLE f_star RENAME COLUMN f TO ff; ALTER TABLE e_star* RENAME COLUMN e TO ee; ALTER TABLE d_star* RENAME COLUMN d TO dd; ALTER TABLE c_star* RENAME COLUMN c TO cc; ALTER TABLE b_star* RENAME COLUMN b TO bb; ALTER TABLE a_star* RENAME COLUMN a TO aa; SELECT class, aa FROM a_star* x WHERE aa ISNULL; -- As of Postgres 7.1, ALTER implicitly recurses, -- so this should be same as ALTER a_star* ALTER TABLE a_star RENAME COLUMN aa TO foo; SELECT class, foo FROM a_star* x WHERE x.foo >= 2; ALTER TABLE a_star RENAME COLUMN foo TO aa; SELECT * from a_star* WHERE aa < 1000; ALTER TABLE f_star ADD COLUMN f int4; UPDATE f_star SET f = 10; ALTER TABLE e_star* ADD COLUMN e int4; --UPDATE e_star* SET e = 42; SELECT * FROM e_star*; ALTER TABLE a_star* ADD COLUMN a text; -- That ALTER TABLE should have added TOAST tables. SELECT relname, reltoastrelid <> 0 AS has_toast_table FROM pg_class WHERE oid::regclass IN ('a_star', 'c_star') ORDER BY 1; --UPDATE b_star* -- SET a = text 'gazpacho' -- WHERE aa > 4; SELECT class, aa, a FROM a_star*; -- -- versions -- -- -- postquel functions -- -- -- mike does post_hacking, -- joe and sally play basketball, and -- everyone else does nothing. -- SELECT p.name, name(p.hobbies) FROM ONLY person p; -- -- as above, but jeff also does post_hacking. -- SELECT p.name, name(p.hobbies) FROM person* p; -- -- the next two queries demonstrate how functions generate bogus duplicates. -- this is a "feature" .. -- SELECT DISTINCT hobbies_r.name, name(hobbies_r.equipment) FROM hobbies_r ORDER BY 1,2; SELECT hobbies_r.name, (hobbies_r.equipment).name FROM hobbies_r; -- -- mike needs advil and peet's coffee, -- joe and sally need hightops, and -- everyone else is fine. -- SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM ONLY person p; -- -- as above, but jeff needs advil and peet's coffee as well. -- SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM person* p; -- -- just like the last two, but make sure that the target list fixup and -- unflattening is being done correctly. -- SELECT name(equipment(p.hobbies)), p.name, name(p.hobbies) FROM ONLY person p; SELECT (p.hobbies).equipment.name, p.name, name(p.hobbies) FROM person* p; SELECT (p.hobbies).equipment.name, name(p.hobbies), p.name FROM ONLY person p; SELECT name(equipment(p.hobbies)), name(p.hobbies), p.name FROM person* p; SELECT name(equipment(hobby_construct(text 'skywalking', text 'mer'))); SELECT name(equipment(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_1a(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_1b(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_1c(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_2a(text 'skywalking')); SELECT name(equipment_named_ambiguous_2b(text 'skywalking')); SELECT hobbies_by_name('basketball'); SELECT name, overpaid(emp.*) FROM emp; -- -- Try a few cases with SQL-spec row constructor expressions -- SELECT * FROM equipment(ROW('skywalking', 'mer')); SELECT name(equipment(ROW('skywalking', 'mer'))); SELECT *, name(equipment(h.*)) FROM hobbies_r h; SELECT *, (equipment(CAST((h.*) AS hobbies_r))).name FROM hobbies_r h; -- -- functional joins -- -- -- instance rules -- -- -- rewrite rules --