From 3301c83536e9da1e573e24ded2e610062dbf9cdc Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Wed, 19 Oct 2011 20:55:56 -0400 Subject: [PATCH] Add some more regression tests for DROP IF EXISTS. KaiGai Kohei --- src/test/regress/expected/drop_if_exists.out | 146 ++++++++++++++++++- src/test/regress/sql/drop_if_exists.sql | 130 ++++++++++++++++- 2 files changed, 264 insertions(+), 12 deletions(-) diff --git a/src/test/regress/expected/drop_if_exists.out b/src/test/regress/expected/drop_if_exists.out index 2a23b4cfe6..4a500e6b76 100644 --- a/src/test/regress/expected/drop_if_exists.out +++ b/src/test/regress/expected/drop_if_exists.out @@ -61,10 +61,6 @@ CREATE domain test_domain_exists as int not null check (value > 0); DROP DOMAIN IF EXISTS test_domain_exists; DROP DOMAIN test_domain_exists; ERROR: type "test_domain_exists" does not exist --- drop the table -DROP TABLE IF EXISTS test_exists; -DROP TABLE test_exists; -ERROR: table "test_exists" does not exist --- --- role/user/group --- @@ -89,3 +85,145 @@ DROP GROUP IF EXISTS tg1, tg2; NOTICE: role "tg2" does not exist, skipping DROP GROUP tg1; ERROR: role "tg1" does not exist +-- collation +DROP COLLATION test_collation_exists; +ERROR: collation "test_collation_exists" for encoding "UTF8" does not exist +DROP COLLATION IF EXISTS test_collation_exists; +NOTICE: collation "test_collation_exists" does not exist, skipping +CREATE COLLATION test_collation_exists FROM "POSIX"; +DROP COLLATION test_collation_exists; +-- conversion +DROP CONVERSION test_conversion_exists; +ERROR: conversion "test_conversion_exists" does not exist +DROP CONVERSION IF EXISTS test_conversion_exists; +NOTICE: conversion "test_conversion_exists" does not exist, skipping +CREATE CONVERSION test_conversion_exists + FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; +DROP CONVERSION test_conversion_exists; +-- text search parser +DROP TEXT SEARCH PARSER test_tsparser_exists; +ERROR: text search parser "test_tsparser_exists" does not exist +DROP TEXT SEARCH PARSER IF EXISTS test_tsparser_exists; +NOTICE: text search parser "test_tsparser_exists" does not exist, skipping +-- text search dictionary +DROP TEXT SEARCH DICTIONARY test_tsdict_exists; +ERROR: text search dictionary "test_tsdict_exists" does not exist +DROP TEXT SEARCH DICTIONARY IF EXISTS test_tsdict_exists; +NOTICE: text search dictionary "test_tsdict_exists" does not exist, skipping +CREATE TEXT SEARCH DICTIONARY test_tsdict_exists ( + Template=ispell, + DictFile=ispell_sample, + AffFile=ispell_sample +); +DROP TEXT SEARCH DICTIONARY test_tsdict_exists; +-- test search template +DROP TEXT SEARCH TEMPLATE test_tstemplate_exists; +ERROR: text search template "test_tstemplate_exists" does not exist +DROP TEXT SEARCH TEMPLATE IF EXISTS test_tstemplate_exists; +NOTICE: text search template "test_tstemplate_exists" does not exist, skipping +-- text search configuration +DROP TEXT SEARCH CONFIGURATION test_tsconfig_exists; +ERROR: text search configuration "test_tsconfig_exists" does not exist +DROP TEXT SEARCH CONFIGURATION IF EXISTS test_tsconfig_exists; +NOTICE: text search configuration "test_tsconfig_exists" does not exist, skipping +CREATE TEXT SEARCH CONFIGURATION test_tsconfig_exists (COPY=english); +DROP TEXT SEARCH CONFIGURATION test_tsconfig_exists; +-- extension +DROP EXTENSION test_extension_exists; +ERROR: extension "test_extension_exists" does not exist +DROP EXTENSION IF EXISTS test_extension_exists; +NOTICE: extension "test_extension_exists" does not exist, skipping +-- functions +DROP FUNCTION test_function_exists(); +ERROR: function test_function_exists() does not exist +DROP FUNCTION IF EXISTS test_function_exists(); +NOTICE: function test_function_exists() does not exist, skipping +DROP FUNCTION test_function_exists(int, text, int[]); +ERROR: function test_function_exists(integer, text, integer[]) does not exist +DROP FUNCTION IF EXISTS test_function_exists(int, text, int[]); +NOTICE: function test_function_exists(pg_catalog.int4,text,pg_catalog.int4[]) does not exist, skipping +-- aggregate +DROP AGGREGATE test_aggregate_exists(*); +ERROR: aggregate test_aggregate_exists(*) does not exist +DROP AGGREGATE IF EXISTS test_aggregate_exists(*); +NOTICE: aggregate test_aggregate_exists() does not exist, skipping +DROP AGGREGATE test_aggregate_exists(int); +ERROR: aggregate test_aggregate_exists(integer) does not exist +DROP AGGREGATE IF EXISTS test_aggregate_exists(int); +NOTICE: aggregate test_aggregate_exists(pg_catalog.int4) does not exist, skipping +-- operator +DROP OPERATOR @#@ (int, int); +ERROR: operator does not exist: integer @#@ integer +DROP OPERATOR IF EXISTS @#@ (int, int); +NOTICE: operator @#@ does not exist, skipping +CREATE OPERATOR @#@ + (leftarg = int8, rightarg = int8, procedure = int8xor); +DROP OPERATOR @#@ (int8, int8); +-- language +DROP LANGUAGE test_language_exists; +ERROR: language "test_language_exists" does not exist +DROP LANGUAGE IF EXISTS test_language_exists; +NOTICE: language "test_language_exists" does not exist, skipping +-- cast +DROP CAST (text AS text); +ERROR: cast from type text to type text does not exist +DROP CAST IF EXISTS (text AS text); +NOTICE: cast from type text to type text does not exist, skipping +-- trigger +DROP TRIGGER test_trigger_exists ON test_exists; +ERROR: trigger "test_trigger_exists" for table "test_exists" does not exist +DROP TRIGGER IF EXISTS test_trigger_exists ON test_exists; +NOTICE: trigger "test_trigger_exists" for table "test_exists" does not exist, skipping +DROP TRIGGER test_trigger_exists ON no_such_table; +ERROR: relation "no_such_table" does not exist +DROP TRIGGER IF EXISTS test_trigger_exists ON no_such_table; +ERROR: relation "no_such_table" does not exist +CREATE TRIGGER test_trigger_exists + BEFORE UPDATE ON test_exists + FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); +DROP TRIGGER test_trigger_exists ON test_exists; +-- rule +DROP RULE test_rule_exists ON test_exists; +ERROR: rule "test_rule_exists" for relation "test_exists" does not exist +DROP RULE IF EXISTS test_rule_exists ON test_exists; +NOTICE: rule "test_rule_exists" for relation "test_exists" does not exist, skipping +DROP RULE test_rule_exists ON no_such_table; +ERROR: relation "no_such_table" does not exist +DROP RULE IF EXISTS test_rule_exists ON no_such_table; +ERROR: relation "no_such_table" does not exist +CREATE RULE test_rule_exists AS ON INSERT TO test_exists + DO INSTEAD + INSERT INTO test_exists VALUES (NEW.a, NEW.b || NEW.a::text); +DROP RULE test_rule_exists ON test_exists; +-- foreign data wrapper +DROP FOREIGN DATA WRAPPER test_fdw_exists; +ERROR: foreign-data wrapper "test_fdw_exists" does not exist +DROP FOREIGN DATA WRAPPER IF EXISTS test_fdw_exists; +NOTICE: foreign-data wrapper "test_fdw_exists" does not exist, skipping +-- foreign server +DROP SERVER test_server_exists; +ERROR: server "test_server_exists" does not exist +DROP SERVER IF EXISTS test_server_exists; +NOTICE: server "test_server_exists" does not exist, skipping +-- operator class +DROP OPERATOR CLASS test_operator_class USING btree; +ERROR: operator class "test_operator_class" does not exist for access method "btree" +DROP OPERATOR CLASS IF EXISTS test_operator_class USING btree; +NOTICE: operator class "test_operator_class" does not exist for access method "btree" +DROP OPERATOR CLASS test_operator_class USING no_such_am; +ERROR: access method "no_such_am" does not exist +DROP OPERATOR CLASS IF EXISTS test_operator_class USING no_such_am; +ERROR: access method "no_such_am" does not exist +-- operator family +DROP OPERATOR FAMILY test_operator_family USING btree; +ERROR: operator family "test_operator_family" does not exist for access method "btree" +DROP OPERATOR FAMILY IF EXISTS test_operator_family USING btree; +ERROR: operator family "test_operator_family" does not exist for access method "btree" +DROP OPERATOR FAMILY test_operator_family USING no_such_am; +ERROR: access method "no_such_am" does not exist +DROP OPERATOR FAMILY IF EXISTS test_operator_family USING no_such_am; +ERROR: access method "no_such_am" does not exist +-- drop the table +DROP TABLE IF EXISTS test_exists; +DROP TABLE test_exists; +ERROR: table "test_exists" does not exist diff --git a/src/test/regress/sql/drop_if_exists.sql b/src/test/regress/sql/drop_if_exists.sql index 3d7e46cf2e..f4a0ab16cb 100644 --- a/src/test/regress/sql/drop_if_exists.sql +++ b/src/test/regress/sql/drop_if_exists.sql @@ -82,14 +82,6 @@ DROP DOMAIN IF EXISTS test_domain_exists; DROP DOMAIN test_domain_exists; --- drop the table - - -DROP TABLE IF EXISTS test_exists; - -DROP TABLE test_exists; - - --- --- role/user/group --- @@ -115,3 +107,125 @@ DROP GROUP tg2; DROP GROUP IF EXISTS tg1, tg2; DROP GROUP tg1; + +-- collation +DROP COLLATION test_collation_exists; +DROP COLLATION IF EXISTS test_collation_exists; +CREATE COLLATION test_collation_exists FROM "POSIX"; +DROP COLLATION test_collation_exists; + +-- conversion +DROP CONVERSION test_conversion_exists; +DROP CONVERSION IF EXISTS test_conversion_exists; +CREATE CONVERSION test_conversion_exists + FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; +DROP CONVERSION test_conversion_exists; + +-- text search parser +DROP TEXT SEARCH PARSER test_tsparser_exists; +DROP TEXT SEARCH PARSER IF EXISTS test_tsparser_exists; + +-- text search dictionary +DROP TEXT SEARCH DICTIONARY test_tsdict_exists; +DROP TEXT SEARCH DICTIONARY IF EXISTS test_tsdict_exists; +CREATE TEXT SEARCH DICTIONARY test_tsdict_exists ( + Template=ispell, + DictFile=ispell_sample, + AffFile=ispell_sample +); +DROP TEXT SEARCH DICTIONARY test_tsdict_exists; + +-- test search template +DROP TEXT SEARCH TEMPLATE test_tstemplate_exists; +DROP TEXT SEARCH TEMPLATE IF EXISTS test_tstemplate_exists; + +-- text search configuration +DROP TEXT SEARCH CONFIGURATION test_tsconfig_exists; +DROP TEXT SEARCH CONFIGURATION IF EXISTS test_tsconfig_exists; +CREATE TEXT SEARCH CONFIGURATION test_tsconfig_exists (COPY=english); +DROP TEXT SEARCH CONFIGURATION test_tsconfig_exists; + +-- extension +DROP EXTENSION test_extension_exists; +DROP EXTENSION IF EXISTS test_extension_exists; + +-- functions +DROP FUNCTION test_function_exists(); +DROP FUNCTION IF EXISTS test_function_exists(); + +DROP FUNCTION test_function_exists(int, text, int[]); +DROP FUNCTION IF EXISTS test_function_exists(int, text, int[]); + +-- aggregate +DROP AGGREGATE test_aggregate_exists(*); +DROP AGGREGATE IF EXISTS test_aggregate_exists(*); + +DROP AGGREGATE test_aggregate_exists(int); +DROP AGGREGATE IF EXISTS test_aggregate_exists(int); + +-- operator +DROP OPERATOR @#@ (int, int); +DROP OPERATOR IF EXISTS @#@ (int, int); +CREATE OPERATOR @#@ + (leftarg = int8, rightarg = int8, procedure = int8xor); +DROP OPERATOR @#@ (int8, int8); + +-- language +DROP LANGUAGE test_language_exists; +DROP LANGUAGE IF EXISTS test_language_exists; + +-- cast +DROP CAST (text AS text); +DROP CAST IF EXISTS (text AS text); + +-- trigger +DROP TRIGGER test_trigger_exists ON test_exists; +DROP TRIGGER IF EXISTS test_trigger_exists ON test_exists; + +DROP TRIGGER test_trigger_exists ON no_such_table; +DROP TRIGGER IF EXISTS test_trigger_exists ON no_such_table; + +CREATE TRIGGER test_trigger_exists + BEFORE UPDATE ON test_exists + FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); +DROP TRIGGER test_trigger_exists ON test_exists; + +-- rule +DROP RULE test_rule_exists ON test_exists; +DROP RULE IF EXISTS test_rule_exists ON test_exists; + +DROP RULE test_rule_exists ON no_such_table; +DROP RULE IF EXISTS test_rule_exists ON no_such_table; + +CREATE RULE test_rule_exists AS ON INSERT TO test_exists + DO INSTEAD + INSERT INTO test_exists VALUES (NEW.a, NEW.b || NEW.a::text); +DROP RULE test_rule_exists ON test_exists; + +-- foreign data wrapper +DROP FOREIGN DATA WRAPPER test_fdw_exists; +DROP FOREIGN DATA WRAPPER IF EXISTS test_fdw_exists; + +-- foreign server +DROP SERVER test_server_exists; +DROP SERVER IF EXISTS test_server_exists; + +-- operator class +DROP OPERATOR CLASS test_operator_class USING btree; +DROP OPERATOR CLASS IF EXISTS test_operator_class USING btree; + +DROP OPERATOR CLASS test_operator_class USING no_such_am; +DROP OPERATOR CLASS IF EXISTS test_operator_class USING no_such_am; + +-- operator family +DROP OPERATOR FAMILY test_operator_family USING btree; +DROP OPERATOR FAMILY IF EXISTS test_operator_family USING btree; + +DROP OPERATOR FAMILY test_operator_family USING no_such_am; +DROP OPERATOR FAMILY IF EXISTS test_operator_family USING no_such_am; + +-- drop the table + +DROP TABLE IF EXISTS test_exists; + +DROP TABLE test_exists; -- GitLab