mirror of https://github.com/postgres/postgres
Update output to new psql conventions.
This commit is contained in:
parent
6033cfd429
commit
9c1b29816e
|
@ -1,14 +1,20 @@
|
|||
QUERY: CREATE AGGREGATE newavg (
|
||||
sfunc1 = int4pl, basetype = int4, stype1 = int4,
|
||||
--
|
||||
-- CREATE_AGGREGATE
|
||||
--
|
||||
-- all functions CREATEd
|
||||
CREATE AGGREGATE newavg (
|
||||
sfunc1 = int4pl, basetype = int4, stype1 = int4,
|
||||
sfunc2 = int4inc, stype2 = int4,
|
||||
finalfunc = int4div,
|
||||
initcond1 = '0', initcond2 = '0'
|
||||
);
|
||||
QUERY: CREATE AGGREGATE newsum (
|
||||
sfunc1 = int4pl, basetype = int4, stype1 = int4,
|
||||
-- sfunc1 (value-dependent) only
|
||||
CREATE AGGREGATE newsum (
|
||||
sfunc1 = int4pl, basetype = int4, stype1 = int4,
|
||||
initcond1 = '0'
|
||||
);
|
||||
QUERY: CREATE AGGREGATE newcnt (
|
||||
sfunc2 = int4inc, basetype = int4, stype2 = int4,
|
||||
-- sfunc2 (value-independent) only
|
||||
CREATE AGGREGATE newcnt (
|
||||
sfunc2 = int4inc, basetype = int4, stype2 = int4,
|
||||
initcond2 = '0'
|
||||
);
|
||||
|
|
|
@ -1,22 +1,61 @@
|
|||
QUERY: CREATE INDEX onek_unique1 ON onek USING btree(unique1 int4_ops);
|
||||
QUERY: CREATE INDEX onek_unique2 ON onek USING btree(unique2 int4_ops);
|
||||
QUERY: CREATE INDEX onek_hundred ON onek USING btree(hundred int4_ops);
|
||||
QUERY: CREATE INDEX onek_stringu1 ON onek USING btree(stringu1 name_ops);
|
||||
QUERY: CREATE INDEX tenk1_unique1 ON tenk1 USING btree(unique1 int4_ops);
|
||||
QUERY: CREATE INDEX tenk1_unique2 ON tenk1 USING btree(unique2 int4_ops);
|
||||
QUERY: CREATE INDEX tenk1_hundred ON tenk1 USING btree(hundred int4_ops);
|
||||
QUERY: CREATE INDEX tenk2_unique1 ON tenk2 USING btree(unique1 int4_ops);
|
||||
QUERY: CREATE INDEX tenk2_unique2 ON tenk2 USING btree(unique2 int4_ops);
|
||||
QUERY: CREATE INDEX tenk2_hundred ON tenk2 USING btree(hundred int4_ops);
|
||||
QUERY: CREATE INDEX rix ON road USING btree (name text_ops);
|
||||
QUERY: CREATE INDEX iix ON ihighway USING btree (name text_ops);
|
||||
QUERY: CREATE INDEX six ON shighway USING btree (name text_ops);
|
||||
QUERY: CREATE INDEX bt_i4_index ON bt_i4_heap USING btree (seqno int4_ops);
|
||||
QUERY: CREATE INDEX bt_name_index ON bt_name_heap USING btree (seqno name_ops);
|
||||
QUERY: CREATE INDEX bt_txt_index ON bt_txt_heap USING btree (seqno text_ops);
|
||||
QUERY: CREATE INDEX bt_f8_index ON bt_f8_heap USING btree (seqno float8_ops);
|
||||
QUERY: CREATE INDEX rect2ind ON fast_emp4000 USING rtree (home_base bigbox_ops);
|
||||
QUERY: CREATE INDEX hash_i4_index ON hash_i4_heap USING hash (random int4_ops);
|
||||
QUERY: CREATE INDEX hash_name_index ON hash_name_heap USING hash (random name_ops);
|
||||
QUERY: CREATE INDEX hash_txt_index ON hash_txt_heap USING hash (random text_ops);
|
||||
QUERY: CREATE INDEX hash_f8_index ON hash_f8_heap USING hash (random float8_ops);
|
||||
--
|
||||
-- CREATE_INDEX
|
||||
-- Create ancillary data structures (i.e. indices)
|
||||
--
|
||||
--
|
||||
-- BTREE
|
||||
--
|
||||
CREATE INDEX onek_unique1 ON onek USING btree(unique1 int4_ops);
|
||||
CREATE INDEX onek_unique2 ON onek USING btree(unique2 int4_ops);
|
||||
CREATE INDEX onek_hundred ON onek USING btree(hundred int4_ops);
|
||||
CREATE INDEX onek_stringu1 ON onek USING btree(stringu1 name_ops);
|
||||
CREATE INDEX tenk1_unique1 ON tenk1 USING btree(unique1 int4_ops);
|
||||
CREATE INDEX tenk1_unique2 ON tenk1 USING btree(unique2 int4_ops);
|
||||
CREATE INDEX tenk1_hundred ON tenk1 USING btree(hundred int4_ops);
|
||||
CREATE INDEX tenk2_unique1 ON tenk2 USING btree(unique1 int4_ops);
|
||||
CREATE INDEX tenk2_unique2 ON tenk2 USING btree(unique2 int4_ops);
|
||||
CREATE INDEX tenk2_hundred ON tenk2 USING btree(hundred int4_ops);
|
||||
CREATE INDEX rix ON road USING btree (name text_ops);
|
||||
CREATE INDEX iix ON ihighway USING btree (name text_ops);
|
||||
CREATE INDEX six ON shighway USING btree (name text_ops);
|
||||
--
|
||||
-- BTREE ascending/descending cases
|
||||
--
|
||||
-- we load int4/text from pure descending data (each key is a new
|
||||
-- low key) and name/f8 from pure ascending data (each key is a new
|
||||
-- high key). we had a bug where new low keys would sometimes be
|
||||
-- "lost".
|
||||
--
|
||||
CREATE INDEX bt_i4_index ON bt_i4_heap USING btree (seqno int4_ops);
|
||||
CREATE INDEX bt_name_index ON bt_name_heap USING btree (seqno name_ops);
|
||||
CREATE INDEX bt_txt_index ON bt_txt_heap USING btree (seqno text_ops);
|
||||
CREATE INDEX bt_f8_index ON bt_f8_heap USING btree (seqno float8_ops);
|
||||
--
|
||||
-- BTREE partial indices
|
||||
-- partial indices are not supported in PostgreSQL
|
||||
--
|
||||
--CREATE INDEX onek2_u1_prtl ON onek2 USING btree(unique1 int4_ops)
|
||||
-- where onek2.unique1 < 20 or onek2.unique1 > 980;
|
||||
--CREATE INDEX onek2_u2_prtl ON onek2 USING btree(unique2 int4_ops)
|
||||
-- where onek2.stringu1 < 'B';
|
||||
-- EXTEND INDEX onek2_u2_prtl where onek2.stringu1 < 'C';
|
||||
-- EXTEND INDEX onek2_u2_prtl;
|
||||
-- CREATE INDEX onek2_stu1_prtl ON onek2 USING btree(stringu1 name_ops)
|
||||
-- where onek2.stringu1 >= 'J' and onek2.stringu1 < 'K';
|
||||
--
|
||||
-- RTREE
|
||||
--
|
||||
-- rtrees use a quadratic page-splitting algorithm that takes a
|
||||
-- really, really long time. we don't test all rtree opclasses
|
||||
-- in the regression test (we check them USING the sequoia 2000
|
||||
-- benchmark).
|
||||
--
|
||||
CREATE INDEX rect2ind ON fast_emp4000 USING rtree (home_base bigbox_ops);
|
||||
--
|
||||
-- HASH
|
||||
--
|
||||
CREATE INDEX hash_i4_index ON hash_i4_heap USING hash (random int4_ops);
|
||||
CREATE INDEX hash_name_index ON hash_name_heap USING hash (random name_ops);
|
||||
CREATE INDEX hash_txt_index ON hash_txt_heap USING hash (random text_ops);
|
||||
CREATE INDEX hash_f8_index ON hash_f8_heap USING hash (random float8_ops);
|
||||
-- CREATE INDEX hash_ovfl_index ON hash_ovfl_heap USING hash (x int4_ops);
|
||||
|
|
|
@ -1,135 +1,151 @@
|
|||
QUERY: INSERT INTO tenk2 VALUES (tenk1.*);
|
||||
QUERY: SELECT * INTO TABLE onek2 FROM onek;
|
||||
QUERY: INSERT INTO fast_emp4000 VALUES (slow_emp4000.*);
|
||||
QUERY: SELECT *
|
||||
--
|
||||
-- CREATE_MISC
|
||||
--
|
||||
-- CLASS POPULATION
|
||||
-- (any resemblance to real life is purely coincidental)
|
||||
--
|
||||
INSERT INTO tenk2 VALUES (tenk1.*);
|
||||
SELECT * INTO TABLE onek2 FROM onek;
|
||||
INSERT INTO fast_emp4000 VALUES (slow_emp4000.*);
|
||||
SELECT *
|
||||
INTO TABLE Bprime
|
||||
FROM tenk1
|
||||
WHERE unique2 < 1000;
|
||||
QUERY: INSERT INTO hobbies_r (name, person)
|
||||
INSERT INTO hobbies_r (name, person)
|
||||
SELECT 'posthacking', p.name
|
||||
FROM person* p
|
||||
WHERE p.name = 'mike' or p.name = 'jeff';
|
||||
QUERY: INSERT INTO hobbies_r (name, person)
|
||||
INSERT INTO hobbies_r (name, person)
|
||||
SELECT 'basketball', p.name
|
||||
FROM person p
|
||||
WHERE p.name = 'joe' or p.name = 'sally';
|
||||
QUERY: INSERT INTO hobbies_r (name) VALUES ('skywalking');
|
||||
QUERY: INSERT INTO equipment_r (name, hobby) VALUES ('advil', 'posthacking');
|
||||
QUERY: INSERT INTO equipment_r (name, hobby) VALUES ('peet''s coffee', 'posthacking');
|
||||
QUERY: INSERT INTO equipment_r (name, hobby) VALUES ('hightops', 'basketball');
|
||||
QUERY: INSERT INTO equipment_r (name, hobby) VALUES ('guts', 'skywalking');
|
||||
QUERY: SELECT *
|
||||
INSERT INTO hobbies_r (name) VALUES ('skywalking');
|
||||
INSERT INTO equipment_r (name, hobby) VALUES ('advil', 'posthacking');
|
||||
INSERT INTO equipment_r (name, hobby) VALUES ('peet''s coffee', 'posthacking');
|
||||
INSERT INTO equipment_r (name, hobby) VALUES ('hightops', 'basketball');
|
||||
INSERT INTO equipment_r (name, hobby) VALUES ('guts', 'skywalking');
|
||||
SELECT *
|
||||
INTO TABLE ramp
|
||||
FROM road
|
||||
WHERE name ~ '.*Ramp';
|
||||
QUERY: INSERT INTO ihighway
|
||||
SELECT *
|
||||
FROM road
|
||||
INSERT INTO ihighway
|
||||
SELECT *
|
||||
FROM road
|
||||
WHERE name ~ 'I- .*';
|
||||
QUERY: INSERT INTO shighway
|
||||
SELECT *
|
||||
FROM road
|
||||
INSERT INTO shighway
|
||||
SELECT *
|
||||
FROM road
|
||||
WHERE name ~ 'State Hwy.*';
|
||||
QUERY: UPDATE shighway
|
||||
UPDATE shighway
|
||||
SET surface = 'asphalt';
|
||||
QUERY: INSERT INTO a_star (class, a) VALUES ('a', 1);
|
||||
QUERY: INSERT INTO a_star (class, a) VALUES ('a', 2);
|
||||
QUERY: INSERT INTO a_star (class) VALUES ('a');
|
||||
QUERY: INSERT INTO b_star (class, a, b) VALUES ('b', 3, 'mumble'::text);
|
||||
QUERY: INSERT INTO b_star (class, a) VALUES ('b', 4);
|
||||
QUERY: INSERT INTO b_star (class, b) VALUES ('b', 'bumble'::text);
|
||||
QUERY: INSERT INTO b_star (class) VALUES ('b');
|
||||
QUERY: INSERT INTO c_star (class, a, c) VALUES ('c', 5, 'hi mom'::name);
|
||||
QUERY: INSERT INTO c_star (class, a) VALUES ('c', 6);
|
||||
QUERY: INSERT INTO c_star (class, c) VALUES ('c', 'hi paul'::name);
|
||||
QUERY: INSERT INTO c_star (class) VALUES ('c');
|
||||
QUERY: INSERT INTO d_star (class, a, b, c, d)
|
||||
INSERT INTO a_star (class, a) VALUES ('a', 1);
|
||||
INSERT INTO a_star (class, a) VALUES ('a', 2);
|
||||
INSERT INTO a_star (class) VALUES ('a');
|
||||
INSERT INTO b_star (class, a, b) VALUES ('b', 3, 'mumble'::text);
|
||||
INSERT INTO b_star (class, a) VALUES ('b', 4);
|
||||
INSERT INTO b_star (class, b) VALUES ('b', 'bumble'::text);
|
||||
INSERT INTO b_star (class) VALUES ('b');
|
||||
INSERT INTO c_star (class, a, c) VALUES ('c', 5, 'hi mom'::name);
|
||||
INSERT INTO c_star (class, a) VALUES ('c', 6);
|
||||
INSERT INTO c_star (class, c) VALUES ('c', 'hi paul'::name);
|
||||
INSERT INTO c_star (class) VALUES ('c');
|
||||
INSERT INTO d_star (class, a, b, c, d)
|
||||
VALUES ('d', 7, 'grumble'::text, 'hi sunita'::name, '0.0'::float8);
|
||||
QUERY: INSERT INTO d_star (class, a, b, c)
|
||||
INSERT INTO d_star (class, a, b, c)
|
||||
VALUES ('d', 8, 'stumble'::text, 'hi koko'::name);
|
||||
QUERY: INSERT INTO d_star (class, a, b, d)
|
||||
INSERT INTO d_star (class, a, b, d)
|
||||
VALUES ('d', 9, 'rumble'::text, '1.1'::float8);
|
||||
QUERY: INSERT INTO d_star (class, a, c, d)
|
||||
INSERT INTO d_star (class, a, c, d)
|
||||
VALUES ('d', 10, 'hi kristin'::name, '10.01'::float8);
|
||||
QUERY: INSERT INTO d_star (class, b, c, d)
|
||||
INSERT INTO d_star (class, b, c, d)
|
||||
VALUES ('d', 'crumble'::text, 'hi boris'::name, '100.001'::float8);
|
||||
QUERY: INSERT INTO d_star (class, a, b)
|
||||
INSERT INTO d_star (class, a, b)
|
||||
VALUES ('d', 11, 'fumble'::text);
|
||||
QUERY: INSERT INTO d_star (class, a, c)
|
||||
INSERT INTO d_star (class, a, c)
|
||||
VALUES ('d', 12, 'hi avi'::name);
|
||||
QUERY: INSERT INTO d_star (class, a, d)
|
||||
INSERT INTO d_star (class, a, d)
|
||||
VALUES ('d', 13, '1000.0001'::float8);
|
||||
QUERY: INSERT INTO d_star (class, b, c)
|
||||
INSERT INTO d_star (class, b, c)
|
||||
VALUES ('d', 'tumble'::text, 'hi andrew'::name);
|
||||
QUERY: INSERT INTO d_star (class, b, d)
|
||||
INSERT INTO d_star (class, b, d)
|
||||
VALUES ('d', 'humble'::text, '10000.00001'::float8);
|
||||
QUERY: INSERT INTO d_star (class, c, d)
|
||||
INSERT INTO d_star (class, c, d)
|
||||
VALUES ('d', 'hi ginger'::name, '100000.000001'::float8);
|
||||
QUERY: INSERT INTO d_star (class, a) VALUES ('d', 14);
|
||||
QUERY: INSERT INTO d_star (class, b) VALUES ('d', 'jumble'::text);
|
||||
QUERY: INSERT INTO d_star (class, c) VALUES ('d', 'hi jolly'::name);
|
||||
QUERY: INSERT INTO d_star (class, d) VALUES ('d', '1000000.0000001'::float8);
|
||||
QUERY: INSERT INTO d_star (class) VALUES ('d');
|
||||
QUERY: INSERT INTO e_star (class, a, c, e)
|
||||
INSERT INTO d_star (class, a) VALUES ('d', 14);
|
||||
INSERT INTO d_star (class, b) VALUES ('d', 'jumble'::text);
|
||||
INSERT INTO d_star (class, c) VALUES ('d', 'hi jolly'::name);
|
||||
INSERT INTO d_star (class, d) VALUES ('d', '1000000.0000001'::float8);
|
||||
INSERT INTO d_star (class) VALUES ('d');
|
||||
INSERT INTO e_star (class, a, c, e)
|
||||
VALUES ('e', 15, 'hi carol'::name, '-1'::int2);
|
||||
QUERY: INSERT INTO e_star (class, a, c)
|
||||
INSERT INTO e_star (class, a, c)
|
||||
VALUES ('e', 16, 'hi bob'::name);
|
||||
QUERY: INSERT INTO e_star (class, a, e)
|
||||
INSERT INTO e_star (class, a, e)
|
||||
VALUES ('e', 17, '-2'::int2);
|
||||
QUERY: INSERT INTO e_star (class, c, e)
|
||||
INSERT INTO e_star (class, c, e)
|
||||
VALUES ('e', 'hi michelle'::name, '-3'::int2);
|
||||
QUERY: INSERT INTO e_star (class, a)
|
||||
INSERT INTO e_star (class, a)
|
||||
VALUES ('e', 18);
|
||||
QUERY: INSERT INTO e_star (class, c)
|
||||
INSERT INTO e_star (class, c)
|
||||
VALUES ('e', 'hi elisa'::name);
|
||||
QUERY: INSERT INTO e_star (class, e)
|
||||
INSERT INTO e_star (class, e)
|
||||
VALUES ('e', '-4'::int2);
|
||||
QUERY: INSERT INTO f_star (class, a, c, e, f)
|
||||
INSERT INTO f_star (class, a, c, e, f)
|
||||
VALUES ('f', 19, 'hi claire'::name, '-5'::int2, '(1,3),(2,4)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, a, c, e)
|
||||
INSERT INTO f_star (class, a, c, e)
|
||||
VALUES ('f', 20, 'hi mike'::name, '-6'::int2);
|
||||
QUERY: INSERT INTO f_star (class, a, c, f)
|
||||
INSERT INTO f_star (class, a, c, f)
|
||||
VALUES ('f', 21, 'hi marcel'::name, '(11,44),(22,55),(33,66)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, a, e, f)
|
||||
INSERT INTO f_star (class, a, e, f)
|
||||
VALUES ('f', 22, '-7'::int2, '(111,555),(222,666),(333,777),(444,888)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, c, e, f)
|
||||
VALUES ('f', 'hi keith'::name, '-8'::int2,
|
||||
INSERT INTO f_star (class, c, e, f)
|
||||
VALUES ('f', 'hi keith'::name, '-8'::int2,
|
||||
'(1111,3333),(2222,4444)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, a, c)
|
||||
INSERT INTO f_star (class, a, c)
|
||||
VALUES ('f', 24, 'hi marc'::name);
|
||||
QUERY: INSERT INTO f_star (class, a, e)
|
||||
INSERT INTO f_star (class, a, e)
|
||||
VALUES ('f', 25, '-9'::int2);
|
||||
QUERY: INSERT INTO f_star (class, a, f)
|
||||
VALUES ('f', 26, '(11111,33333),(22222,44444)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, c, e)
|
||||
INSERT INTO f_star (class, a, f)
|
||||
VALUES ('f', 26, '(11111,33333),(22222,44444)'::polygon);
|
||||
INSERT INTO f_star (class, c, e)
|
||||
VALUES ('f', 'hi allison'::name, '-10'::int2);
|
||||
QUERY: INSERT INTO f_star (class, c, f)
|
||||
INSERT INTO f_star (class, c, f)
|
||||
VALUES ('f', 'hi jeff'::name,
|
||||
'(111111,333333),(222222,444444)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, e, f)
|
||||
INSERT INTO f_star (class, e, f)
|
||||
VALUES ('f', '-11'::int2, '(1111111,3333333),(2222222,4444444)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class, a) VALUES ('f', 27);
|
||||
QUERY: INSERT INTO f_star (class, c) VALUES ('f', 'hi carl'::name);
|
||||
QUERY: INSERT INTO f_star (class, e) VALUES ('f', '-12'::int2);
|
||||
QUERY: INSERT INTO f_star (class, f)
|
||||
INSERT INTO f_star (class, a) VALUES ('f', 27);
|
||||
INSERT INTO f_star (class, c) VALUES ('f', 'hi carl'::name);
|
||||
INSERT INTO f_star (class, e) VALUES ('f', '-12'::int2);
|
||||
INSERT INTO f_star (class, f)
|
||||
VALUES ('f', '(11111111,33333333),(22222222,44444444)'::polygon);
|
||||
QUERY: INSERT INTO f_star (class) VALUES ('f');
|
||||
QUERY: INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
|
||||
INSERT INTO f_star (class) VALUES ('f');
|
||||
--
|
||||
-- ARRAYS
|
||||
--
|
||||
--
|
||||
-- only this array as a 0-based 'e', the others are 1-based.
|
||||
-- 'e' is also a large object.
|
||||
--
|
||||
INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
|
||||
VALUES ('{1,2,3,4,5}', '{{{},{1,2}}}', '{}', '{}', '{}', '{}');
|
||||
QUERY: UPDATE arrtest SET e[0] = '1.1';
|
||||
QUERY: UPDATE arrtest SET e[1] = '2.2';
|
||||
QUERY: INSERT INTO arrtest (a, b[2][2][1], c, d, e, f, g)
|
||||
VALUES ('{11,12,23}', '{{3,4},{4,5}}', '{"foobar"}',
|
||||
UPDATE arrtest SET e[0] = '1.1';
|
||||
UPDATE arrtest SET e[1] = '2.2';
|
||||
INSERT INTO arrtest (a, b[2][2][1], c, d, e, f, g)
|
||||
VALUES ('{11,12,23}', '{{3,4},{4,5}}', '{"foobar"}',
|
||||
'{{"elt1", "elt2"}}', '{"3.4", "6.7"}',
|
||||
'{"abc","abcdefgh"}', '{"abc","abcdefgh"}');
|
||||
QUERY: INSERT INTO arrtest (a, b[1][2][2], c, d[2][1])
|
||||
INSERT INTO arrtest (a, b[1][2][2], c, d[2][1])
|
||||
VALUES ('{}', '{3,4}', '{foo,bar}', '{bar,foo}');
|
||||
QUERY: CREATE TABLE iportaltest (
|
||||
i int4,
|
||||
d float4,
|
||||
--
|
||||
-- for internal portal (cursor) tests
|
||||
--
|
||||
CREATE TABLE iportaltest (
|
||||
i int4,
|
||||
d float4,
|
||||
p polygon
|
||||
);
|
||||
QUERY: INSERT INTO iportaltest (i, d, p)
|
||||
INSERT INTO iportaltest (i, d, p)
|
||||
VALUES (1, 3.567, '(3.0,1.0),(4.0,2.0)'::polygon);
|
||||
QUERY: INSERT INTO iportaltest (i, d, p)
|
||||
INSERT INTO iportaltest (i, d, p)
|
||||
VALUES (2, 89.05, '(4.0,2.0),(3.0,1.0)'::polygon);
|
||||
|
|
|
@ -1,25 +1,28 @@
|
|||
QUERY: CREATE OPERATOR ## (
|
||||
--
|
||||
-- CREATE_OPERATOR
|
||||
--
|
||||
CREATE OPERATOR ## (
|
||||
leftarg = path,
|
||||
rightarg = path,
|
||||
procedure = path_inter,
|
||||
commutator = ##
|
||||
commutator = ##
|
||||
);
|
||||
QUERY: CREATE OPERATOR <% (
|
||||
CREATE OPERATOR <% (
|
||||
leftarg = point,
|
||||
rightarg = widget,
|
||||
procedure = pt_in_widget,
|
||||
commutator = >% ,
|
||||
negator = >=%
|
||||
negator = >=%
|
||||
);
|
||||
QUERY: CREATE OPERATOR @#@ (
|
||||
rightarg = int4,
|
||||
procedure = int4fac
|
||||
CREATE OPERATOR @#@ (
|
||||
rightarg = int4, -- left unary
|
||||
procedure = int4fac
|
||||
);
|
||||
QUERY: CREATE OPERATOR #@# (
|
||||
leftarg = int4,
|
||||
procedure = int4fac
|
||||
CREATE OPERATOR #@# (
|
||||
leftarg = int4, -- right unary
|
||||
procedure = int4fac
|
||||
);
|
||||
QUERY: CREATE OPERATOR #%# (
|
||||
leftarg = int4,
|
||||
procedure = int4fac
|
||||
CREATE OPERATOR #%# (
|
||||
leftarg = int4, -- right unary
|
||||
procedure = int4fac
|
||||
);
|
||||
|
|
|
@ -1,169 +1,192 @@
|
|||
QUERY: CREATE TABLE hobbies_r (
|
||||
name text,
|
||||
--
|
||||
-- CREATE_TABLE
|
||||
--
|
||||
--
|
||||
-- CLASS DEFINITIONS
|
||||
--
|
||||
CREATE TABLE hobbies_r (
|
||||
name text,
|
||||
person text
|
||||
);
|
||||
QUERY: CREATE TABLE equipment_r (
|
||||
CREATE TABLE equipment_r (
|
||||
name text,
|
||||
hobby text
|
||||
);
|
||||
QUERY: CREATE TABLE onek (
|
||||
CREATE TABLE onek (
|
||||
unique1 int4,
|
||||
unique2 int4,
|
||||
two int4,
|
||||
two int4,
|
||||
four int4,
|
||||
ten int4,
|
||||
ten int4,
|
||||
twenty int4,
|
||||
hundred int4,
|
||||
thousand int4,
|
||||
twothousand int4,
|
||||
fivethous int4,
|
||||
tenthous int4,
|
||||
odd int4,
|
||||
odd int4,
|
||||
even int4,
|
||||
stringu1 name,
|
||||
stringu2 name,
|
||||
string4 name
|
||||
);
|
||||
QUERY: CREATE TABLE tenk1 (
|
||||
CREATE TABLE tenk1 (
|
||||
unique1 int4,
|
||||
unique2 int4,
|
||||
two int4,
|
||||
two int4,
|
||||
four int4,
|
||||
ten int4,
|
||||
ten int4,
|
||||
twenty int4,
|
||||
hundred int4,
|
||||
thousand int4,
|
||||
twothousand int4,
|
||||
fivethous int4,
|
||||
tenthous int4,
|
||||
odd int4,
|
||||
odd int4,
|
||||
even int4,
|
||||
stringu1 name,
|
||||
stringu2 name,
|
||||
string4 name
|
||||
);
|
||||
QUERY: CREATE TABLE tenk2 (
|
||||
CREATE TABLE tenk2 (
|
||||
unique1 int4,
|
||||
unique2 int4,
|
||||
two int4,
|
||||
four int4,
|
||||
ten int4,
|
||||
ten int4,
|
||||
twenty int4,
|
||||
hundred int4,
|
||||
thousand int4,
|
||||
twothousand int4,
|
||||
twothousand int4,
|
||||
fivethous int4,
|
||||
tenthous int4,
|
||||
odd int4,
|
||||
odd int4,
|
||||
even int4,
|
||||
stringu1 name,
|
||||
stringu2 name,
|
||||
string4 name
|
||||
);
|
||||
QUERY: CREATE TABLE person (
|
||||
CREATE TABLE person (
|
||||
name text,
|
||||
age int4,
|
||||
age int4,
|
||||
location point
|
||||
);
|
||||
QUERY: CREATE TABLE emp (
|
||||
CREATE TABLE emp (
|
||||
salary int4,
|
||||
manager name
|
||||
) INHERITS (person);
|
||||
QUERY: CREATE TABLE student (
|
||||
CREATE TABLE student (
|
||||
gpa float8
|
||||
) INHERITS (person);
|
||||
QUERY: CREATE TABLE stud_emp (
|
||||
CREATE TABLE stud_emp (
|
||||
percent int4
|
||||
) INHERITS (emp, student);
|
||||
QUERY: CREATE TABLE city (
|
||||
CREATE TABLE city (
|
||||
name name,
|
||||
location box,
|
||||
budget city_budget
|
||||
);
|
||||
QUERY: CREATE TABLE dept (
|
||||
CREATE TABLE dept (
|
||||
dname name,
|
||||
mgrname text
|
||||
);
|
||||
QUERY: CREATE TABLE slow_emp4000 (
|
||||
CREATE TABLE slow_emp4000 (
|
||||
home_base box
|
||||
);
|
||||
QUERY: CREATE TABLE fast_emp4000 (
|
||||
CREATE TABLE fast_emp4000 (
|
||||
home_base box
|
||||
);
|
||||
QUERY: CREATE TABLE road (
|
||||
CREATE TABLE road (
|
||||
name text,
|
||||
thepath path
|
||||
);
|
||||
QUERY: CREATE TABLE ihighway () INHERITS (road);
|
||||
QUERY: CREATE TABLE shighway (
|
||||
CREATE TABLE ihighway () INHERITS (road);
|
||||
CREATE TABLE shighway (
|
||||
surface text
|
||||
) INHERITS (road);
|
||||
QUERY: CREATE TABLE real_city (
|
||||
pop int4,
|
||||
CREATE TABLE real_city (
|
||||
pop int4,
|
||||
cname text,
|
||||
outline path
|
||||
);
|
||||
QUERY: CREATE TABLE a_star (
|
||||
class char,
|
||||
a int4
|
||||
--
|
||||
-- test the "star" operators a bit more thoroughly -- this time,
|
||||
-- throw in lots of NULL fields...
|
||||
--
|
||||
-- a is the type root
|
||||
-- b and c inherit from a (one-level single inheritance)
|
||||
-- d inherits from b and c (two-level multiple inheritance)
|
||||
-- e inherits from c (two-level single inheritance)
|
||||
-- f inherits from e (three-level single inheritance)
|
||||
--
|
||||
CREATE TABLE a_star (
|
||||
class char,
|
||||
a int4
|
||||
);
|
||||
QUERY: CREATE TABLE b_star (
|
||||
b text
|
||||
CREATE TABLE b_star (
|
||||
b text
|
||||
) INHERITS (a_star);
|
||||
QUERY: CREATE TABLE c_star (
|
||||
c name
|
||||
CREATE TABLE c_star (
|
||||
c name
|
||||
) INHERITS (a_star);
|
||||
QUERY: CREATE TABLE d_star (
|
||||
d float8
|
||||
CREATE TABLE d_star (
|
||||
d float8
|
||||
) INHERITS (b_star, c_star);
|
||||
QUERY: CREATE TABLE e_star (
|
||||
e int2
|
||||
CREATE TABLE e_star (
|
||||
e int2
|
||||
) INHERITS (c_star);
|
||||
QUERY: CREATE TABLE f_star (
|
||||
f polygon
|
||||
CREATE TABLE f_star (
|
||||
f polygon
|
||||
) INHERITS (e_star);
|
||||
QUERY: CREATE TABLE aggtest (
|
||||
a int2,
|
||||
b float4
|
||||
CREATE TABLE aggtest (
|
||||
a int2,
|
||||
b float4
|
||||
);
|
||||
QUERY: CREATE TABLE arrtest (
|
||||
a int2[],
|
||||
b int4[][][],
|
||||
c name[],
|
||||
d text[][],
|
||||
e float8[],
|
||||
f char(5)[],
|
||||
g varchar(5)[]
|
||||
CREATE TABLE arrtest (
|
||||
a int2[],
|
||||
b int4[][][],
|
||||
c name[],
|
||||
d text[][],
|
||||
e float8[],
|
||||
f char(5)[],
|
||||
g varchar(5)[]
|
||||
);
|
||||
QUERY: CREATE TABLE hash_i4_heap (
|
||||
CREATE TABLE hash_i4_heap (
|
||||
seqno int4,
|
||||
random int4
|
||||
);
|
||||
QUERY: CREATE TABLE hash_name_heap (
|
||||
CREATE TABLE hash_name_heap (
|
||||
seqno int4,
|
||||
random name
|
||||
);
|
||||
QUERY: CREATE TABLE hash_txt_heap (
|
||||
CREATE TABLE hash_txt_heap (
|
||||
seqno int4,
|
||||
random text
|
||||
);
|
||||
QUERY: CREATE TABLE hash_f8_heap (
|
||||
CREATE TABLE hash_f8_heap (
|
||||
seqno int4,
|
||||
random float8
|
||||
);
|
||||
QUERY: CREATE TABLE bt_i4_heap (
|
||||
-- don't include the hash_ovfl_heap stuff in the distribution
|
||||
-- the data set is too large for what it's worth
|
||||
--
|
||||
-- CREATE TABLE hash_ovfl_heap (
|
||||
-- x int4,
|
||||
-- y int4
|
||||
-- );
|
||||
CREATE TABLE bt_i4_heap (
|
||||
seqno int4,
|
||||
random int4
|
||||
);
|
||||
QUERY: CREATE TABLE bt_name_heap (
|
||||
CREATE TABLE bt_name_heap (
|
||||
seqno name,
|
||||
random int4
|
||||
);
|
||||
QUERY: CREATE TABLE bt_txt_heap (
|
||||
CREATE TABLE bt_txt_heap (
|
||||
seqno text,
|
||||
random int4
|
||||
);
|
||||
QUERY: CREATE TABLE bt_f8_heap (
|
||||
seqno float8,
|
||||
CREATE TABLE bt_f8_heap (
|
||||
seqno float8,
|
||||
random int4
|
||||
);
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
QUERY: CREATE TYPE widget (
|
||||
internallength = 24,
|
||||
--
|
||||
-- CREATE_TYPE
|
||||
--
|
||||
CREATE TYPE widget (
|
||||
internallength = 24,
|
||||
input = widget_in,
|
||||
output = widget_out,
|
||||
alignment = double
|
||||
);
|
||||
QUERY: CREATE TYPE city_budget (
|
||||
internallength = 16,
|
||||
input = int44in,
|
||||
output = int44out,
|
||||
CREATE TYPE city_budget (
|
||||
internallength = 16,
|
||||
input = int44in,
|
||||
output = int44out,
|
||||
element = int4
|
||||
);
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
QUERY: CREATE VIEW street AS
|
||||
SELECT r.name, r.thepath, c.cname AS cname
|
||||
--
|
||||
-- CREATE_VIEW
|
||||
-- Virtual class definitions
|
||||
-- (this also tests the query rewrite system)
|
||||
--
|
||||
CREATE VIEW street AS
|
||||
SELECT r.name, r.thepath, c.cname AS cname
|
||||
FROM road r, real_city c
|
||||
WHERE c.outline ## r.thepath;
|
||||
QUERY: CREATE VIEW iexit AS
|
||||
SELECT ih.name, ih.thepath,
|
||||
CREATE VIEW iexit AS
|
||||
SELECT ih.name, ih.thepath,
|
||||
interpt_pp(ih.thepath, r.thepath) AS exit
|
||||
FROM ihighway ih, ramp r
|
||||
WHERE ih.thepath ## r.thepath;
|
||||
QUERY: CREATE VIEW toyemp AS
|
||||
CREATE VIEW toyemp AS
|
||||
SELECT name, age, location, 12*salary AS annualsal
|
||||
FROM emp;
|
||||
|
|
|
@ -1,58 +1,118 @@
|
|||
QUERY: select 1
|
||||
--
|
||||
-- errors.source
|
||||
--
|
||||
-- $Header: /cvsroot/pgsql/src/test/regress/expected/errors.out,v 1.15 2000/01/05 17:31:08 thomas Exp $
|
||||
|
||||
-- bad in postquel, but ok in postsql
|
||||
select 1
|
||||
--
|
||||
-- UNSUPPORTED STUFF
|
||||
|
||||
-- doesn't work
|
||||
-- attachas nonesuch
|
||||
--
|
||||
-- doesn't work
|
||||
-- notify pg_class
|
||||
--
|
||||
--
|
||||
-- RETRIEVE
|
||||
|
||||
-- missing relation name
|
||||
select
|
||||
-- no such relation
|
||||
select * from nonesuch;
|
||||
ERROR: parser: parse error at or near "select"
|
||||
QUERY: select nonesuch from pg_database;
|
||||
-- bad name in target list
|
||||
select nonesuch from pg_database;
|
||||
ERROR: attribute 'nonesuch' not found
|
||||
QUERY: select * from pg_database where nonesuch = pg_database.datname;
|
||||
-- bad attribute name on lhs of operator
|
||||
select * from pg_database where nonesuch = pg_database.datname;
|
||||
ERROR: attribute 'nonesuch' not found
|
||||
QUERY: select * from pg_database where pg_database.datname = nonesuch;
|
||||
-- bad attribute name on rhs of operator
|
||||
select * from pg_database where pg_database.datname = nonesuch;
|
||||
ERROR: attribute 'nonesuch' not found
|
||||
QUERY: select distinct on foobar from pg_database;
|
||||
-- bad select distinct on syntax, distinct attribute missing
|
||||
select distinct on foobar from pg_database;
|
||||
ERROR: parser: parse error at or near "from"
|
||||
QUERY: select distinct on foobar * from pg_database;
|
||||
-- bad select distinct on syntax, distinct attribute not in target list
|
||||
select distinct on foobar * from pg_database;
|
||||
ERROR: All fields in the UNIQUE ON clause must appear in the target list
|
||||
QUERY: delete from;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: delete from nonesuch;
|
||||
--
|
||||
-- DELETE
|
||||
|
||||
-- missing relation name (this had better not wildcard!)
|
||||
delete from;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- no such relation
|
||||
delete from nonesuch;
|
||||
ERROR: Relation 'nonesuch' does not exist
|
||||
QUERY: drop table;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop table nonesuch;
|
||||
--
|
||||
-- DESTROY
|
||||
|
||||
-- missing relation name (this had better not wildcard!)
|
||||
drop table;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- no such relation
|
||||
drop table nonesuch;
|
||||
ERROR: Relation 'nonesuch' does not exist
|
||||
QUERY: alter table rename;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: alter table nonesuch rename to newnonesuch;
|
||||
--
|
||||
-- RENAME
|
||||
|
||||
-- relation renaming
|
||||
-- missing relation name
|
||||
alter table rename;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- no such relation
|
||||
alter table nonesuch rename to newnonesuch;
|
||||
ERROR: Relation 'nonesuch' does not exist
|
||||
QUERY: alter table nonesuch rename to stud_emp;
|
||||
-- no such relation
|
||||
alter table nonesuch rename to stud_emp;
|
||||
ERROR: Relation 'nonesuch' does not exist
|
||||
QUERY: alter table stud_emp rename to pg_stud_emp;
|
||||
-- system relation
|
||||
alter table stud_emp rename to pg_stud_emp;
|
||||
ERROR: renamerel: Illegal class name: "pg_stud_emp" -- pg_ is reserved for system catalogs
|
||||
QUERY: alter table stud_emp rename to aggtest;
|
||||
-- conflict
|
||||
alter table stud_emp rename to aggtest;
|
||||
ERROR: renamerel: relation "aggtest" exists
|
||||
QUERY: alter table stud_emp rename to stud_emp;
|
||||
-- self-conflict
|
||||
alter table stud_emp rename to stud_emp;
|
||||
ERROR: renamerel: relation "stud_emp" exists
|
||||
QUERY: alter table nonesuchrel rename column nonesuchatt to newnonesuchatt;
|
||||
-- attribute renaming
|
||||
-- no such relation
|
||||
alter table nonesuchrel rename column nonesuchatt to newnonesuchatt;
|
||||
ERROR: Relation 'nonesuchrel' does not exist
|
||||
QUERY: alter table emp rename column nonesuchatt to newnonesuchatt;
|
||||
-- no such attribute
|
||||
alter table emp rename column nonesuchatt to newnonesuchatt;
|
||||
ERROR: renameatt: attribute "nonesuchatt" nonexistent
|
||||
QUERY: alter table emp rename column salary to manager;
|
||||
-- conflict
|
||||
alter table emp rename column salary to manager;
|
||||
ERROR: renameatt: attribute "manager" exists
|
||||
QUERY: alter table emp rename column salary to oid;
|
||||
-- conflict
|
||||
alter table emp rename column salary to oid;
|
||||
ERROR: renameatt: attribute "oid" exists
|
||||
QUERY: abort;
|
||||
--
|
||||
-- TRANSACTION STUFF
|
||||
|
||||
-- not in a xact
|
||||
NOTICE: UserAbortTransactionBlock and not in in-progress state
|
||||
QUERY: end;
|
||||
abort;
|
||||
-- not in a xact
|
||||
NOTICE: EndTransactionBlock and not inprogress/abort state
|
||||
QUERY: create aggregate newavg1 (sfunc1 = int4pl,
|
||||
end;
|
||||
--
|
||||
-- DEFINE AGGREGATE
|
||||
|
||||
-- left out finalfunc
|
||||
create aggregate newavg1 (sfunc1 = int4pl,
|
||||
basetype = int4,
|
||||
stype1 = int4,
|
||||
sfunc2 = int4inc,
|
||||
stype2 = int4,
|
||||
stype2 = int4,
|
||||
initcond1 = '0',
|
||||
initcond2 = '0');
|
||||
ERROR: AggregateCreate: Aggregate must have final function with both transition functions
|
||||
QUERY: create aggregate newavg2 (sfunc1 = int4pl,
|
||||
-- sfunc return type disagreement
|
||||
create aggregate newavg2 (sfunc1 = int4pl,
|
||||
basetype = int4,
|
||||
stype1 = int4,
|
||||
sfunc2 = int2inc,
|
||||
|
@ -61,7 +121,8 @@ QUERY: create aggregate newavg2 (sfunc1 = int4pl,
|
|||
initcond1 = '0',
|
||||
initcond2 = '0');
|
||||
ERROR: AggregateCreate: 'int4div'('int4','int2') does not exist
|
||||
QUERY: create aggregate newavg3 (sfunc1 = int4pl,
|
||||
-- sfunc/finalfunc type disagreement
|
||||
create aggregate newavg3 (sfunc1 = int4pl,
|
||||
basetype = int4,
|
||||
stype1 = int4,
|
||||
sfunc2 = int4inc,
|
||||
|
@ -70,79 +131,133 @@ QUERY: create aggregate newavg3 (sfunc1 = int4pl,
|
|||
initcond1 = '0',
|
||||
initcond2 = '0');
|
||||
ERROR: AggregateCreate: 'int2div'('int4','int4') does not exist
|
||||
QUERY: create aggregate newcnt1 (sfunc2 = int4inc,
|
||||
-- left out basetype
|
||||
create aggregate newcnt1 (sfunc2 = int4inc,
|
||||
stype2 = int4,
|
||||
initcond2 = '0');
|
||||
ERROR: Define: "basetype" unspecified
|
||||
QUERY: create aggregate newcnt1 (sfunc2 = int4inc,
|
||||
-- left out initcond2 (for sfunc2)
|
||||
create aggregate newcnt1 (sfunc2 = int4inc,
|
||||
basetype = int4,
|
||||
stype2 = int4);
|
||||
ERROR: AggregateCreate: transition function 2 MUST have an initial value
|
||||
QUERY: drop index;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop index 314159;
|
||||
--
|
||||
-- REMOVE INDEX
|
||||
|
||||
-- missing index name
|
||||
drop index;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- bad index name
|
||||
drop index 314159;
|
||||
ERROR: parser: parse error at or near "314159"
|
||||
QUERY: drop index nonesuch;
|
||||
-- no such index
|
||||
drop index nonesuch;
|
||||
ERROR: index "nonesuch" nonexistent
|
||||
QUERY: drop aggregate;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop aggregate 314159;
|
||||
--
|
||||
-- REMOVE AGGREGATE
|
||||
|
||||
-- missing aggregate name
|
||||
drop aggregate;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- bad aggregate name
|
||||
drop aggregate 314159;
|
||||
ERROR: parser: parse error at or near "314159"
|
||||
QUERY: drop aggregate nonesuch;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop aggregate newcnt1;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop aggregate newcnt nonesuch;
|
||||
-- no such aggregate
|
||||
drop aggregate nonesuch;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- missing aggregate type
|
||||
drop aggregate newcnt1;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- bad aggregate type
|
||||
drop aggregate newcnt nonesuch;
|
||||
ERROR: RemoveAggregate: type 'nonesuch' does not exist
|
||||
QUERY: drop aggregate newcnt float4;
|
||||
-- no such aggregate for type
|
||||
drop aggregate newcnt float4;
|
||||
ERROR: RemoveAggregate: aggregate 'newcnt' for 'float4' does not exist
|
||||
QUERY: drop function ();
|
||||
--
|
||||
-- REMOVE FUNCTION
|
||||
|
||||
-- missing function name
|
||||
drop function ();
|
||||
ERROR: parser: parse error at or near "("
|
||||
QUERY: drop function 314159();
|
||||
-- bad function name
|
||||
drop function 314159();
|
||||
ERROR: parser: parse error at or near "314159"
|
||||
QUERY: drop function nonesuch();
|
||||
-- no such function
|
||||
drop function nonesuch();
|
||||
ERROR: RemoveFunction: function 'nonesuch()' does not exist
|
||||
QUERY: drop type;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop type 314159;
|
||||
--
|
||||
-- REMOVE TYPE
|
||||
|
||||
-- missing type name
|
||||
drop type;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- bad type name
|
||||
drop type 314159;
|
||||
ERROR: parser: parse error at or near "314159"
|
||||
QUERY: drop type nonesuch;
|
||||
-- no such type
|
||||
drop type nonesuch;
|
||||
ERROR: RemoveType: type 'nonesuch' does not exist
|
||||
QUERY: drop operator;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop operator equals;
|
||||
--
|
||||
-- DROP OPERATOR
|
||||
|
||||
-- missing everything
|
||||
drop operator;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- bad operator name
|
||||
drop operator equals;
|
||||
ERROR: parser: parse error at or near "equals"
|
||||
QUERY: drop operator ===;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop operator int4, int4;
|
||||
-- missing type list
|
||||
drop operator ===;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- missing parentheses
|
||||
drop operator int4, int4;
|
||||
ERROR: parser: parse error at or near "int4"
|
||||
QUERY: drop operator (int4, int4);
|
||||
-- missing operator name
|
||||
drop operator (int4, int4);
|
||||
ERROR: parser: parse error at or near "("
|
||||
QUERY: drop operator === ();
|
||||
-- missing type list contents
|
||||
drop operator === ();
|
||||
ERROR: parser: parse error at or near ")"
|
||||
QUERY: drop operator === (int4);
|
||||
-- no such operator
|
||||
drop operator === (int4);
|
||||
ERROR: parser: argument type missing (use NONE for unary operators)
|
||||
QUERY: drop operator === (int4, int4);
|
||||
-- no such operator by that name
|
||||
drop operator === (int4, int4);
|
||||
ERROR: RemoveOperator: binary operator '===' taking 'int4' and 'int4' does not exist
|
||||
QUERY: drop operator = (nonesuch);
|
||||
-- no such type1
|
||||
drop operator = (nonesuch);
|
||||
ERROR: parser: argument type missing (use NONE for unary operators)
|
||||
QUERY: drop operator = ( , int4);
|
||||
-- no such type1
|
||||
drop operator = ( , int4);
|
||||
ERROR: parser: parse error at or near ","
|
||||
QUERY: drop operator = (nonesuch, int4);
|
||||
-- no such type1
|
||||
drop operator = (nonesuch, int4);
|
||||
ERROR: RemoveOperator: type 'nonesuch' does not exist
|
||||
QUERY: drop operator = (int4, nonesuch);
|
||||
-- no such type2
|
||||
drop operator = (int4, nonesuch);
|
||||
ERROR: RemoveOperator: type 'nonesuch' does not exist
|
||||
QUERY: drop operator = (int4, );
|
||||
-- no such type2
|
||||
drop operator = (int4, );
|
||||
ERROR: parser: parse error at or near ")"
|
||||
QUERY: drop rule;
|
||||
ERROR: parser: parse error at or near ";"
|
||||
QUERY: drop rule 314159;
|
||||
--
|
||||
-- DROP RULE
|
||||
|
||||
-- missing rule name
|
||||
drop rule;
|
||||
ERROR: parser: parse error at or near ""
|
||||
-- bad rule name
|
||||
drop rule 314159;
|
||||
ERROR: parser: parse error at or near "314159"
|
||||
QUERY: drop rule nonesuch;
|
||||
-- no such rule
|
||||
drop rule nonesuch;
|
||||
ERROR: Rule or view 'nonesuch' not found
|
||||
QUERY: drop tuple rule nonesuch;
|
||||
-- bad keyword
|
||||
drop tuple rule nonesuch;
|
||||
ERROR: parser: parse error at or near "tuple"
|
||||
QUERY: drop instance rule nonesuch;
|
||||
-- no such rule
|
||||
drop instance rule nonesuch;
|
||||
ERROR: parser: parse error at or near "instance"
|
||||
QUERY: drop rewrite rule nonesuch;
|
||||
-- no such rule
|
||||
drop rewrite rule nonesuch;
|
||||
ERROR: parser: parse error at or near "rewrite"
|
||||
|
|
|
@ -1,44 +1,56 @@
|
|||
QUERY: VACUUM;
|
||||
QUERY: SELECT relname, relhasindex
|
||||
VACUUM;
|
||||
--
|
||||
-- sanity check, if we don't have indices the test will take years to
|
||||
-- complete.
|
||||
--
|
||||
SELECT relname, relhasindex
|
||||
FROM pg_class
|
||||
WHERE relhasindex
|
||||
ORDER BY relname;
|
||||
relname |relhasindex
|
||||
--------------+-----------
|
||||
bt_f8_heap |t
|
||||
bt_i4_heap |t
|
||||
bt_name_heap |t
|
||||
bt_txt_heap |t
|
||||
fast_emp4000 |t
|
||||
hash_f8_heap |t
|
||||
hash_i4_heap |t
|
||||
hash_name_heap|t
|
||||
hash_txt_heap |t
|
||||
ihighway |t
|
||||
onek |t
|
||||
pg_aggregate |t
|
||||
pg_am |t
|
||||
pg_amop |t
|
||||
pg_attrdef |t
|
||||
pg_attribute |t
|
||||
pg_class |t
|
||||
pg_description|t
|
||||
pg_group |t
|
||||
pg_index |t
|
||||
pg_inherits |t
|
||||
pg_language |t
|
||||
pg_listener |t
|
||||
pg_opclass |t
|
||||
pg_operator |t
|
||||
pg_proc |t
|
||||
pg_relcheck |t
|
||||
pg_rewrite |t
|
||||
pg_statistic |t
|
||||
pg_trigger |t
|
||||
pg_type |t
|
||||
road |t
|
||||
shighway |t
|
||||
tenk1 |t
|
||||
tenk2 |t
|
||||
(35 rows)
|
||||
relname | relhasindex
|
||||
---------------------+-------------
|
||||
bt_f8_heap | t
|
||||
bt_i4_heap | t
|
||||
bt_name_heap | t
|
||||
bt_txt_heap | t
|
||||
fast_emp4000 | t
|
||||
hash_f8_heap | t
|
||||
hash_i4_heap | t
|
||||
hash_name_heap | t
|
||||
hash_txt_heap | t
|
||||
ihighway | t
|
||||
num_exp_add | t
|
||||
num_exp_div | t
|
||||
num_exp_ln | t
|
||||
num_exp_log10 | t
|
||||
num_exp_mul | t
|
||||
num_exp_power_10_ln | t
|
||||
num_exp_sqrt | t
|
||||
num_exp_sub | t
|
||||
onek | t
|
||||
pg_aggregate | t
|
||||
pg_am | t
|
||||
pg_amop | t
|
||||
pg_attrdef | t
|
||||
pg_attribute | t
|
||||
pg_class | t
|
||||
pg_description | t
|
||||
pg_group | t
|
||||
pg_index | t
|
||||
pg_inherits | t
|
||||
pg_language | t
|
||||
pg_listener | t
|
||||
pg_opclass | t
|
||||
pg_operator | t
|
||||
pg_proc | t
|
||||
pg_relcheck | t
|
||||
pg_rewrite | t
|
||||
pg_statistic | t
|
||||
pg_trigger | t
|
||||
pg_type | t
|
||||
road | t
|
||||
shighway | t
|
||||
tenk1 | t
|
||||
tenk2 | t
|
||||
(43 rows)
|
||||
|
||||
|
|
|
@ -1,190 +1,262 @@
|
|||
QUERY: create table pkeys (pkey1 int4 not null, pkey2 text not null);
|
||||
QUERY: create table fkeys (fkey1 int4, fkey2 text, fkey3 int);
|
||||
QUERY: create table fkeys2 (fkey21 int4, fkey22 text, pkey23 int not null);
|
||||
QUERY: create index fkeys_i on fkeys (fkey1, fkey2);
|
||||
QUERY: create index fkeys2_i on fkeys2 (fkey21, fkey22);
|
||||
QUERY: create index fkeys2p_i on fkeys2 (pkey23);
|
||||
QUERY: insert into pkeys values (10, '1');
|
||||
QUERY: insert into pkeys values (20, '2');
|
||||
QUERY: insert into pkeys values (30, '3');
|
||||
QUERY: insert into pkeys values (40, '4');
|
||||
QUERY: insert into pkeys values (50, '5');
|
||||
QUERY: insert into pkeys values (60, '6');
|
||||
QUERY: create unique index pkeys_i on pkeys (pkey1, pkey2);
|
||||
QUERY: create trigger check_fkeys_pkey_exist
|
||||
before insert or update on fkeys
|
||||
for each row
|
||||
execute procedure
|
||||
--
|
||||
-- TRIGGERS
|
||||
--
|
||||
create table pkeys (pkey1 int4 not null, pkey2 text not null);
|
||||
create table fkeys (fkey1 int4, fkey2 text, fkey3 int);
|
||||
create table fkeys2 (fkey21 int4, fkey22 text, pkey23 int not null);
|
||||
create index fkeys_i on fkeys (fkey1, fkey2);
|
||||
create index fkeys2_i on fkeys2 (fkey21, fkey22);
|
||||
create index fkeys2p_i on fkeys2 (pkey23);
|
||||
insert into pkeys values (10, '1');
|
||||
insert into pkeys values (20, '2');
|
||||
insert into pkeys values (30, '3');
|
||||
insert into pkeys values (40, '4');
|
||||
insert into pkeys values (50, '5');
|
||||
insert into pkeys values (60, '6');
|
||||
create unique index pkeys_i on pkeys (pkey1, pkey2);
|
||||
--
|
||||
-- For fkeys:
|
||||
-- (fkey1, fkey2) --> pkeys (pkey1, pkey2)
|
||||
-- (fkey3) --> fkeys2 (pkey23)
|
||||
--
|
||||
create trigger check_fkeys_pkey_exist
|
||||
before insert or update on fkeys
|
||||
for each row
|
||||
execute procedure
|
||||
check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');
|
||||
QUERY: create trigger check_fkeys_pkey2_exist
|
||||
before insert or update on fkeys
|
||||
for each row
|
||||
create trigger check_fkeys_pkey2_exist
|
||||
before insert or update on fkeys
|
||||
for each row
|
||||
execute procedure check_primary_key ('fkey3', 'fkeys2', 'pkey23');
|
||||
QUERY: create trigger check_fkeys2_pkey_exist
|
||||
before insert or update on fkeys2
|
||||
for each row
|
||||
execute procedure
|
||||
--
|
||||
-- For fkeys2:
|
||||
-- (fkey21, fkey22) --> pkeys (pkey1, pkey2)
|
||||
--
|
||||
create trigger check_fkeys2_pkey_exist
|
||||
before insert or update on fkeys2
|
||||
for each row
|
||||
execute procedure
|
||||
check_primary_key ('fkey21', 'fkey22', 'pkeys', 'pkey1', 'pkey2');
|
||||
QUERY: create trigger check_pkeys_fkey_cascade
|
||||
before delete or update on pkeys
|
||||
for each row
|
||||
execute procedure
|
||||
check_foreign_key (2, 'cascade', 'pkey1', 'pkey2',
|
||||
--
|
||||
-- For pkeys:
|
||||
-- ON DELETE/UPDATE (pkey1, pkey2) CASCADE:
|
||||
-- fkeys (fkey1, fkey2) and fkeys2 (fkey21, fkey22)
|
||||
--
|
||||
create trigger check_pkeys_fkey_cascade
|
||||
before delete or update on pkeys
|
||||
for each row
|
||||
execute procedure
|
||||
check_foreign_key (2, 'cascade', 'pkey1', 'pkey2',
|
||||
'fkeys', 'fkey1', 'fkey2', 'fkeys2', 'fkey21', 'fkey22');
|
||||
QUERY: create trigger check_fkeys2_fkey_restrict
|
||||
--
|
||||
-- For fkeys2:
|
||||
-- ON DELETE/UPDATE (pkey23) RESTRICT:
|
||||
-- fkeys (fkey3)
|
||||
--
|
||||
create trigger check_fkeys2_fkey_restrict
|
||||
before delete or update on fkeys2
|
||||
for each row
|
||||
for each row
|
||||
execute procedure check_foreign_key (1, 'restrict', 'pkey23', 'fkeys', 'fkey3');
|
||||
QUERY: insert into fkeys2 values (10, '1', 1);
|
||||
QUERY: insert into fkeys2 values (30, '3', 2);
|
||||
QUERY: insert into fkeys2 values (40, '4', 5);
|
||||
QUERY: insert into fkeys2 values (50, '5', 3);
|
||||
QUERY: insert into fkeys2 values (70, '5', 3);
|
||||
insert into fkeys2 values (10, '1', 1);
|
||||
insert into fkeys2 values (30, '3', 2);
|
||||
insert into fkeys2 values (40, '4', 5);
|
||||
insert into fkeys2 values (50, '5', 3);
|
||||
-- no key in pkeys
|
||||
insert into fkeys2 values (70, '5', 3);
|
||||
ERROR: check_fkeys2_pkey_exist: tuple references non-existing key in pkeys
|
||||
QUERY: insert into fkeys values (10, '1', 2);
|
||||
QUERY: insert into fkeys values (30, '3', 3);
|
||||
QUERY: insert into fkeys values (40, '4', 2);
|
||||
QUERY: insert into fkeys values (50, '5', 2);
|
||||
QUERY: insert into fkeys values (70, '5', 1);
|
||||
insert into fkeys values (10, '1', 2);
|
||||
insert into fkeys values (30, '3', 3);
|
||||
insert into fkeys values (40, '4', 2);
|
||||
insert into fkeys values (50, '5', 2);
|
||||
-- no key in pkeys
|
||||
insert into fkeys values (70, '5', 1);
|
||||
ERROR: check_fkeys_pkey_exist: tuple references non-existing key in pkeys
|
||||
QUERY: insert into fkeys values (60, '6', 4);
|
||||
-- no key in fkeys2
|
||||
insert into fkeys values (60, '6', 4);
|
||||
ERROR: check_fkeys_pkey2_exist: tuple references non-existing key in fkeys2
|
||||
QUERY: delete from pkeys where pkey1 = 30 and pkey2 = '3';
|
||||
NOTICE: check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
|
||||
delete from pkeys where pkey1 = 30 and pkey2 = '3';
|
||||
ERROR: check_fkeys2_fkey_restrict: tuple referenced in fkeys
|
||||
QUERY: delete from pkeys where pkey1 = 40 and pkey2 = '4';
|
||||
NOTICE: check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
|
||||
NOTICE: check_pkeys_fkey_cascade: 1 tuple(s) of fkeys2 are deleted
|
||||
QUERY: update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 50 and pkey2 = '5';
|
||||
delete from pkeys where pkey1 = 40 and pkey2 = '4';
|
||||
NOTICE: check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
|
||||
update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 50 and pkey2 = '5';
|
||||
ERROR: check_fkeys2_fkey_restrict: tuple referenced in fkeys
|
||||
QUERY: update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 10 and pkey2 = '1';
|
||||
NOTICE: check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
|
||||
NOTICE: check_pkeys_fkey_cascade: 1 tuple(s) of fkeys2 are deleted
|
||||
QUERY: DROP TABLE pkeys;
|
||||
QUERY: DROP TABLE fkeys;
|
||||
QUERY: DROP TABLE fkeys2;
|
||||
QUERY: create sequence ttdummy_seq increment 10 start 0 minvalue 0;
|
||||
QUERY: create table tttest (
|
||||
price_id int4,
|
||||
price_val int4,
|
||||
update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 10 and pkey2 = '1';
|
||||
DROP TABLE pkeys;
|
||||
DROP TABLE fkeys;
|
||||
DROP TABLE fkeys2;
|
||||
-- -- I've disabled the funny_dup17 test because the new semantics
|
||||
-- -- of AFTER ROW triggers, which get now fired at the end of a
|
||||
-- -- query allways, cause funny_dup17 to enter an endless loop.
|
||||
-- --
|
||||
-- -- Jan
|
||||
--
|
||||
-- create table dup17 (x int4);
|
||||
--
|
||||
-- create trigger dup17_before
|
||||
-- before insert on dup17
|
||||
-- for each row
|
||||
-- execute procedure
|
||||
-- funny_dup17 ()
|
||||
-- ;
|
||||
--
|
||||
-- insert into dup17 values (17);
|
||||
-- select count(*) from dup17;
|
||||
-- insert into dup17 values (17);
|
||||
-- select count(*) from dup17;
|
||||
--
|
||||
-- drop trigger dup17_before on dup17;
|
||||
--
|
||||
-- create trigger dup17_after
|
||||
-- after insert on dup17
|
||||
-- for each row
|
||||
-- execute procedure
|
||||
-- funny_dup17 ()
|
||||
-- ;
|
||||
-- insert into dup17 values (13);
|
||||
-- select count(*) from dup17 where x = 13;
|
||||
-- insert into dup17 values (13);
|
||||
-- select count(*) from dup17 where x = 13;
|
||||
--
|
||||
-- DROP TABLE dup17;
|
||||
create sequence ttdummy_seq increment 10 start 0 minvalue 0;
|
||||
create table tttest (
|
||||
price_id int4,
|
||||
price_val int4,
|
||||
price_on int4,
|
||||
price_off int4 default 999999
|
||||
);
|
||||
QUERY: create trigger ttdummy
|
||||
create trigger ttdummy
|
||||
before delete or update on tttest
|
||||
for each row
|
||||
execute procedure
|
||||
for each row
|
||||
execute procedure
|
||||
ttdummy (price_on, price_off);
|
||||
QUERY: create trigger ttserial
|
||||
create trigger ttserial
|
||||
before insert or update on tttest
|
||||
for each row
|
||||
execute procedure
|
||||
for each row
|
||||
execute procedure
|
||||
autoinc (price_on, ttdummy_seq);
|
||||
QUERY: insert into tttest values (1, 1, null);
|
||||
QUERY: insert into tttest values (2, 2, null);
|
||||
QUERY: insert into tttest values (3, 3, 0);
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
2| 2| 20| 999999
|
||||
3| 3| 30| 999999
|
||||
insert into tttest values (1, 1, null);
|
||||
insert into tttest values (2, 2, null);
|
||||
insert into tttest values (3, 3, 0);
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
2 | 2 | 20 | 999999
|
||||
3 | 3 | 30 | 999999
|
||||
(3 rows)
|
||||
|
||||
QUERY: delete from tttest where price_id = 2;
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
3| 3| 30| 999999
|
||||
2| 2| 20| 40
|
||||
delete from tttest where price_id = 2;
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
3 | 3 | 30 | 999999
|
||||
2 | 2 | 20 | 40
|
||||
(3 rows)
|
||||
|
||||
QUERY: select * from tttest where price_off = 999999;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
3| 3| 30| 999999
|
||||
-- what do we see ?
|
||||
-- get current prices
|
||||
select * from tttest where price_off = 999999;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
3 | 3 | 30 | 999999
|
||||
(2 rows)
|
||||
|
||||
QUERY: update tttest set price_val = 30 where price_id = 3;
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
2| 2| 20| 40
|
||||
3| 30| 50| 999999
|
||||
3| 3| 30| 50
|
||||
-- change price for price_id == 3
|
||||
update tttest set price_val = 30 where price_id = 3;
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
2 | 2 | 20 | 40
|
||||
3 | 30 | 50 | 999999
|
||||
3 | 3 | 30 | 50
|
||||
(4 rows)
|
||||
|
||||
QUERY: update tttest set price_id = 5 where price_id = 3;
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
2| 2| 20| 40
|
||||
3| 3| 30| 50
|
||||
5| 30| 60| 999999
|
||||
3| 30| 50| 60
|
||||
-- now we want to change pric_id in ALL tuples
|
||||
-- this gets us not what we need
|
||||
update tttest set price_id = 5 where price_id = 3;
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
2 | 2 | 20 | 40
|
||||
3 | 3 | 30 | 50
|
||||
5 | 30 | 60 | 999999
|
||||
3 | 30 | 50 | 60
|
||||
(5 rows)
|
||||
|
||||
QUERY: select set_ttdummy(0);
|
||||
set_ttdummy
|
||||
-----------
|
||||
1
|
||||
-- restore data as before last update:
|
||||
select set_ttdummy(0);
|
||||
set_ttdummy
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
QUERY: delete from tttest where price_id = 5;
|
||||
QUERY: update tttest set price_off = 999999 where price_val = 30;
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
2| 2| 20| 40
|
||||
3| 3| 30| 50
|
||||
3| 30| 50| 999999
|
||||
delete from tttest where price_id = 5;
|
||||
update tttest set price_off = 999999 where price_val = 30;
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
2 | 2 | 20 | 40
|
||||
3 | 3 | 30 | 50
|
||||
3 | 30 | 50 | 999999
|
||||
(4 rows)
|
||||
|
||||
QUERY: update tttest set price_id = 5 where price_id = 3;
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
1| 1| 10| 999999
|
||||
2| 2| 20| 40
|
||||
5| 3| 30| 50
|
||||
5| 30| 50| 999999
|
||||
-- and try change price_id now!
|
||||
update tttest set price_id = 5 where price_id = 3;
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
1 | 1 | 10 | 999999
|
||||
2 | 2 | 20 | 40
|
||||
5 | 3 | 30 | 50
|
||||
5 | 30 | 50 | 999999
|
||||
(4 rows)
|
||||
|
||||
QUERY: select set_ttdummy(1);
|
||||
set_ttdummy
|
||||
-----------
|
||||
0
|
||||
-- isn't it what we need ?
|
||||
select set_ttdummy(1);
|
||||
set_ttdummy
|
||||
-------------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
QUERY: update tttest set price_on = -1 where price_id = 1;
|
||||
-- we want to correct some "date"
|
||||
update tttest set price_on = -1 where price_id = 1;
|
||||
ERROR: ttdummy (tttest): you can't change price_on and/or price_off columns (use set_ttdummy)
|
||||
QUERY: select set_ttdummy(0);
|
||||
set_ttdummy
|
||||
-----------
|
||||
1
|
||||
-- but this doesn't work
|
||||
-- try in this way
|
||||
select set_ttdummy(0);
|
||||
set_ttdummy
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
QUERY: update tttest set price_on = -1 where price_id = 1;
|
||||
QUERY: select * from tttest;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
2| 2| 20| 40
|
||||
5| 3| 30| 50
|
||||
5| 30| 50| 999999
|
||||
1| 1| -1| 999999
|
||||
update tttest set price_on = -1 where price_id = 1;
|
||||
select * from tttest;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
2 | 2 | 20 | 40
|
||||
5 | 3 | 30 | 50
|
||||
5 | 30 | 50 | 999999
|
||||
1 | 1 | -1 | 999999
|
||||
(4 rows)
|
||||
|
||||
QUERY: select * from tttest where price_on <= 35 and price_off > 35 and price_id = 5;
|
||||
price_id|price_val|price_on|price_off
|
||||
--------+---------+--------+---------
|
||||
5| 3| 30| 50
|
||||
-- isn't it what we need ?
|
||||
-- get price for price_id == 5 as it was @ "date" 35
|
||||
select * from tttest where price_on <= 35 and price_off > 35 and price_id = 5;
|
||||
price_id | price_val | price_on | price_off
|
||||
----------+-----------+----------+-----------
|
||||
5 | 3 | 30 | 50
|
||||
(1 row)
|
||||
|
||||
QUERY: drop table tttest;
|
||||
QUERY: drop sequence ttdummy_seq;
|
||||
drop table tttest;
|
||||
drop sequence ttdummy_seq;
|
||||
|
|
Loading…
Reference in New Issue