Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit60cd2f8

Browse files
committed
Test coverage for CREATE/ALTER FOREIGN DATA WRAPPER .. HANDLER.
Amit Langote, per a suggestion from Mark Dilger. Reviewed byMarc Dilger and Ashutosh Bapat.Discussion:http://postgr.es/m/CAFjFpReL0oeN7SCpnsEPbqJhB2Bp1wnH1uvbOF_w6KEuv6ZXvg@mail.gmail.com
1 parenteaa4070 commit60cd2f8

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+
CREATEFUNCTIONinvalid_fdw_handler() RETURNSint LANGUAGE SQLAS'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+
DROPFUNCTION 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)

[8]ページ先頭

©2009-2025 Movatter.jp