Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 60cd2f8

Browse files
committed
Test coverage for CREATE/ALTER FOREIGN DATA WRAPPER .. HANDLER.
Amit Langote, per a suggestion from Mark Dilger. Reviewed by Marc Dilger and Ashutosh Bapat. Discussion: http://postgr.es/m/CAFjFpReL0oeN7SCpnsEPbqJhB2Bp1wnH1uvbOF_w6KEuv6ZXvg@mail.gmail.com
1 parent eaa4070 commit 60cd2f8

File tree

5 files changed

+53
-6
lines changed

5 files changed

+53
-6
lines changed

src/test/regress/expected/foreign_data.out

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ CREATE FOREIGN DATA WRAPPER foo VALIDATOR postgresql_fdw_validator;
8989
postgresql | regress_foreign_data_user | - | postgresql_fdw_validator | | |
9090
(3 rows)
9191

92+
-- HANDLER related checks
93+
CREATE FUNCTION invalid_fdw_handler() RETURNS int LANGUAGE SQL AS 'SELECT 1;';
94+
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER invalid_fdw_handler; -- ERROR
95+
ERROR: function invalid_fdw_handler must return type fdw_handler
96+
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER invalid_fdw_handler; -- ERROR
97+
ERROR: conflicting or redundant options
98+
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler;
99+
DROP FOREIGN DATA WRAPPER test_fdw;
92100
-- ALTER FOREIGN DATA WRAPPER
93101
ALTER FOREIGN DATA WRAPPER foo; -- ERROR
94102
ERROR: syntax error at or near ";"
@@ -188,18 +196,26 @@ ALTER FOREIGN DATA WRAPPER foo RENAME TO foo1;
188196
(3 rows)
189197

190198
ALTER FOREIGN DATA WRAPPER foo1 RENAME TO foo;
199+
-- HANDLER related checks
200+
ALTER FOREIGN DATA WRAPPER foo HANDLER invalid_fdw_handler; -- ERROR
201+
ERROR: function invalid_fdw_handler must return type fdw_handler
202+
ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler HANDLER anything; -- ERROR
203+
ERROR: conflicting or redundant options
204+
ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler;
205+
WARNING: changing the foreign-data wrapper handler can change behavior of existing foreign tables
206+
DROP FUNCTION invalid_fdw_handler();
191207
-- DROP FOREIGN DATA WRAPPER
192208
DROP FOREIGN DATA WRAPPER nonexistent; -- ERROR
193209
ERROR: foreign-data wrapper "nonexistent" does not exist
194210
DROP FOREIGN DATA WRAPPER IF EXISTS nonexistent;
195211
NOTICE: foreign-data wrapper "nonexistent" does not exist, skipping
196212
\dew+
197-
List of foreign-data wrappers
198-
Name | Owner | Handler | Validator | Access privileges | FDW options | Description
199-
------------+---------------------------+---------+--------------------------+-------------------+------------------------------+-------------
200-
dummy | regress_foreign_data_user | - | - | | | useless
201-
foo | regress_test_role_super | - | - | | (b '3', c '4', a '2', d '5') |
202-
postgresql | regress_foreign_data_user | - | postgresql_fdw_validator | | |
213+
List of foreign-data wrappers
214+
Name | Owner | Handler | Validator | Access privileges | FDW options | Description
215+
------------+---------------------------+------------------+--------------------------+-------------------+------------------------------+-------------
216+
dummy | regress_foreign_data_user | - | - | | | useless
217+
foo | regress_test_role_super | test_fdw_handler | - | | (b '3', c '4', a '2', d '5') |
218+
postgresql | regress_foreign_data_user | - | postgresql_fdw_validator | | |
203219
(3 rows)
204220

205221
DROP ROLE regress_test_role_super; -- ERROR

src/test/regress/input/create_function_1.source

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ CREATE FUNCTION test_atomic_ops()
6262
AS '@libdir@/regress@DLSUFFIX@'
6363
LANGUAGE C;
6464

65+
-- Tests creating a FDW handler
66+
CREATE FUNCTION test_fdw_handler()
67+
RETURNS fdw_handler
68+
AS '@libdir@/regress@DLSUFFIX@', 'test_fdw_handler'
69+
LANGUAGE C;
70+
6571
-- Things that shouldn't work:
6672

6773
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL

src/test/regress/output/create_function_1.source

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ CREATE FUNCTION test_atomic_ops()
5555
RETURNS bool
5656
AS '@libdir@/regress@DLSUFFIX@'
5757
LANGUAGE C;
58+
-- Tests creating a FDW handler
59+
CREATE FUNCTION test_fdw_handler()
60+
RETURNS fdw_handler
61+
AS '@libdir@/regress@DLSUFFIX@', 'test_fdw_handler'
62+
LANGUAGE C;
5863
-- Things that shouldn't work:
5964
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
6065
AS 'SELECT ''not an integer'';';

src/test/regress/regress.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,3 +1096,10 @@ test_atomic_ops(PG_FUNCTION_ARGS)
10961096

10971097
PG_RETURN_BOOL(true);
10981098
}
1099+
1100+
PG_FUNCTION_INFO_V1(test_fdw_handler);
1101+
Datum
1102+
test_fdw_handler(PG_FUNCTION_ARGS)
1103+
{
1104+
PG_RETURN_NULL();
1105+
}

src/test/regress/sql/foreign_data.sql

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ RESET ROLE;
5151
CREATE FOREIGN DATA WRAPPER foo VALIDATOR postgresql_fdw_validator;
5252
\dew+
5353

54+
-- HANDLER related checks
55+
CREATE FUNCTION invalid_fdw_handler() RETURNS int LANGUAGE SQL AS 'SELECT 1;';
56+
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER invalid_fdw_handler; -- ERROR
57+
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER invalid_fdw_handler; -- ERROR
58+
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler;
59+
DROP FOREIGN DATA WRAPPER test_fdw;
60+
5461
-- ALTER FOREIGN DATA WRAPPER
5562
ALTER FOREIGN DATA WRAPPER foo; -- ERROR
5663
ALTER FOREIGN DATA WRAPPER foo VALIDATOR bar; -- ERROR
@@ -88,6 +95,12 @@ ALTER FOREIGN DATA WRAPPER foo RENAME TO foo1;
8895
\dew+
8996
ALTER FOREIGN DATA WRAPPER foo1 RENAME TO foo;
9097

98+
-- HANDLER related checks
99+
ALTER FOREIGN DATA WRAPPER foo HANDLER invalid_fdw_handler; -- ERROR
100+
ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler HANDLER anything; -- ERROR
101+
ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler;
102+
DROP FUNCTION invalid_fdw_handler();
103+
91104
-- DROP FOREIGN DATA WRAPPER
92105
DROP FOREIGN DATA WRAPPER nonexistent; -- ERROR
93106
DROP FOREIGN DATA WRAPPER IF EXISTS nonexistent;

0 commit comments

Comments
 (0)