1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-15 03:41:20 +03:00

injection_points: Add tests for name limits

The maximum limits for point name, library name, function name and
private area size were not kept track of in the tests.  The new function
introduced in 16a2f70695 gives a way to trigger them.  This is not
critical but cheap to cover.

While on it, this commit cleans up some of the tests introduced by
16a2f70695 for NULL inputs by using more consistent argument values.
The coverage does not change, but it makes the whole less confusing with
argument values that are correct based their position in the SQL
function called.

Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Reviewed-by: Xuneng Zhou <xunengzhou@gmail.com>
Discussion: https://postgr.es/m/aRE7zhu6wOA29gFf@paquier.xyz
This commit is contained in:
Michael Paquier
2025-11-12 10:32:50 +09:00
parent 6e1535308c
commit fb9bff0454
2 changed files with 30 additions and 8 deletions

View File

@@ -308,14 +308,27 @@ SELECT injection_points_detach('TestConditionLocal1');
(1 row) (1 row)
-- Function variant for attach. -- Function variant for attach.
SELECT injection_points_attach(repeat('a', 64), 'injection_points',
'injection_notice', NULL);
ERROR: injection point name aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa too long (maximum of 63 characters)
SELECT injection_points_attach('TestInjectionNoticeFunc', repeat('a', 128),
'injection_notice', NULL);
ERROR: injection point library aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa too long (maximum of 127 characters)
SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
repeat('a', 128), NULL);
ERROR: injection point function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa too long (maximum of 127 characters)
SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
'injection_notice', repeat('a', 1025)::bytea);
ERROR: injection point data too long (maximum of 1024 bytes)
SELECT injection_points_attach(NULL, NULL, NULL, NULL); SELECT injection_points_attach(NULL, NULL, NULL, NULL);
ERROR: injection point name cannot be NULL ERROR: injection point name cannot be NULL
SELECT injection_points_attach('injection_points', NULL, NULL, NULL); SELECT injection_points_attach('TestInjectionNoticeFunc', NULL, NULL, NULL);
ERROR: injection point library cannot be NULL ERROR: injection point library cannot be NULL
SELECT injection_points_attach('injection_points', 'injection_notice', NULL, NULL); SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
NULL, NULL);
ERROR: injection point function cannot be NULL ERROR: injection point function cannot be NULL
SELECT injection_points_attach('TestInjectionNoticeFunc', SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
'injection_points', 'injection_notice', NULL); 'injection_notice', NULL);
injection_points_attach injection_points_attach
------------------------- -------------------------

View File

@@ -89,11 +89,20 @@ SELECT injection_points_attach('TestConditionLocal1', 'error');
SELECT injection_points_detach('TestConditionLocal1'); SELECT injection_points_detach('TestConditionLocal1');
-- Function variant for attach. -- Function variant for attach.
SELECT injection_points_attach(repeat('a', 64), 'injection_points',
'injection_notice', NULL);
SELECT injection_points_attach('TestInjectionNoticeFunc', repeat('a', 128),
'injection_notice', NULL);
SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
repeat('a', 128), NULL);
SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
'injection_notice', repeat('a', 1025)::bytea);
SELECT injection_points_attach(NULL, NULL, NULL, NULL); SELECT injection_points_attach(NULL, NULL, NULL, NULL);
SELECT injection_points_attach('injection_points', NULL, NULL, NULL); SELECT injection_points_attach('TestInjectionNoticeFunc', NULL, NULL, NULL);
SELECT injection_points_attach('injection_points', 'injection_notice', NULL, NULL); SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
SELECT injection_points_attach('TestInjectionNoticeFunc', NULL, NULL);
'injection_points', 'injection_notice', NULL); SELECT injection_points_attach('TestInjectionNoticeFunc', 'injection_points',
'injection_notice', NULL);
SELECT point_name, library, function FROM injection_points_list() SELECT point_name, library, function FROM injection_points_list()
ORDER BY point_name COLLATE "C"; ORDER BY point_name COLLATE "C";
SELECT injection_points_run('TestInjectionNoticeFunc', NULL); -- notice SELECT injection_points_run('TestInjectionNoticeFunc', NULL); -- notice