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

Commit9905ac6

Browse files
committed
tests and fixes for validate_expression()
1 parenta27dfd6 commit9905ac6

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

‎expected/pathman_calamity.out‎

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,15 +297,23 @@ ERROR: relation "1" does not exist
297297
SELECT validate_relname(NULL);
298298
ERROR: relation should not be NULL
299299
/* check function validate_expression() */
300-
SELECT validate_expression('calamity.part_test');
301-
ERROR: function validate_expression(unknown) does not exist at character 51
302-
SELECT validate_expression('calamity.part_test', NULL);
300+
SELECT validate_expression(1::regclass, NULL);/* not ok */
301+
ERROR: relation "1" does not exist
302+
SELECT validate_expression(NULL::regclass, NULL);/* not ok */
303+
ERROR: 'relid' should not be NULL
304+
SELECT validate_expression('calamity.part_test', NULL);/* not ok */
303305
ERROR: 'expression' should not be NULL
304-
SELECT validate_expression('calamity.part_test', 'valval');
306+
SELECT validate_expression('calamity.part_test', 'valval');/* not ok */
305307
ERROR: cannot find type name for attribute "valval" of relation "part_test"
306-
SELECT validate_expression('calamity.part_test', 'random()');
308+
SELECT validate_expression('calamity.part_test', 'random()');/* not ok */
307309
ERROR: functions in partitioning expression must be marked IMMUTABLE
308-
SELECT validate_expression('calamity.part_test', 'val');
310+
SELECT validate_expression('calamity.part_test', 'val');/* OK */
311+
validate_expression
312+
---------------------
313+
314+
(1 row)
315+
316+
SELECT validate_expression('calamity.part_test', 'VaL');/* OK */
309317
validate_expression
310318
---------------------
311319

‎sql/pathman_calamity.sql‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,13 @@ SELECT validate_relname(1::REGCLASS);
141141
SELECT validate_relname(NULL);
142142

143143
/* check function validate_expression()*/
144-
SELECT validate_expression('calamity.part_test');
145-
SELECT validate_expression('calamity.part_test',NULL);
146-
SELECT validate_expression('calamity.part_test','valval');
147-
SELECT validate_expression('calamity.part_test','random()');
148-
SELECT validate_expression('calamity.part_test','val');
144+
SELECT validate_expression(1::regclass,NULL);/* not ok*/
145+
SELECT validate_expression(NULL::regclass,NULL);/* not ok*/
146+
SELECT validate_expression('calamity.part_test',NULL);/* not ok*/
147+
SELECT validate_expression('calamity.part_test','valval');/* not ok*/
148+
SELECT validate_expression('calamity.part_test','random()');/* not ok*/
149+
SELECT validate_expression('calamity.part_test','val');/* OK*/
150+
SELECT validate_expression('calamity.part_test','VaL');/* OK*/
149151

150152
/* check function get_number_of_partitions()*/
151153
SELECT get_number_of_partitions('calamity.part_test');

‎src/pl_funcs.c‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,12 @@ validate_expression(PG_FUNCTION_ARGS)
608608
char*expression;
609609

610610
/* Fetch relation's Oid */
611-
relid=PG_GETARG_OID(0);
611+
if (!PG_ARGISNULL(0))
612+
{
613+
relid=PG_GETARG_OID(0);
614+
}
615+
elseereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
616+
errmsg("'relid' should not be NULL")));
612617

613618
/* Protect relation from concurrent drop */
614619
LockRelationOid(relid,AccessShareLock);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp