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

Commit497ab20

Browse files
committed
Return private function for cached cooked key to fix tests coverage
1 parent38b48da commit497ab20

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

‎expected/pathman_column_type.out

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,33 @@ SELECT context, entries FROM pathman_cache_stats ORDER BY context;
2828
partition status cache | 3
2929
(4 rows)
3030

31-
/* change column's type (should flush caches) */
31+
/*
32+
* Get parsed and analyzed expression.
33+
*/
34+
CREATE FUNCTION get_cached_partition_cooked_key(REGCLASS)
35+
RETURNS TEXT AS 'pg_pathman', 'get_cached_partition_cooked_key_pl'
36+
LANGUAGE C STRICT;
3237
SELECT get_partition_cooked_key('test_column_type.test'::REGCLASS);
3338
get_partition_cooked_key
3439
-----------------------------------------------------------------------------------------------------------------------
3540
{VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 8}
3641
(1 row)
3742

43+
SELECT get_cached_partition_cooked_key('test_column_type.test'::REGCLASS);
44+
get_cached_partition_cooked_key
45+
-----------------------------------------------------------------------------------------------------------------------
46+
{VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 8}
47+
(1 row)
48+
3849
SELECT get_partition_key_type('test_column_type.test'::REGCLASS);
3950
get_partition_key_type
4051
------------------------
4152
integer
4253
(1 row)
4354

55+
/* change column's type (should also flush caches) */
4456
ALTER TABLE test_column_type.test ALTER val TYPE NUMERIC;
45-
/* check that expression has been built */
57+
/* check thatcorrectexpression has been built */
4658
SELECT get_partition_key_type('test_column_type.test'::REGCLASS);
4759
get_partition_key_type
4860
------------------------
@@ -55,6 +67,13 @@ SELECT get_partition_cooked_key('test_column_type.test'::REGCLASS);
5567
{VAR :varno 1 :varattno 1 :vartype 1700 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 8}
5668
(1 row)
5769

70+
SELECT get_cached_partition_cooked_key('test_column_type.test'::REGCLASS);
71+
get_cached_partition_cooked_key
72+
-------------------------------------------------------------------------------------------------------------------------
73+
{VAR :varno 1 :varattno 1 :vartype 1700 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 1 :location 8}
74+
(1 row)
75+
76+
DROP FUNCTION get_cached_partition_cooked_key(REGCLASS);
5877
/* make sure that everything works properly */
5978
SELECT * FROM test_column_type.test;
6079
val

‎sql/pathman_column_type.sql

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,25 @@ SELECT create_range_partitions('test_column_type.test', 'val', 1, 10, 10);
1717
SELECT*FROMtest_column_type.test;
1818
SELECT context, entriesFROM pathman_cache_statsORDER BY context;
1919

20-
/* change column's type (should flush caches)*/
20+
/*
21+
* Get parsed and analyzed expression.
22+
*/
23+
CREATEFUNCTIONget_cached_partition_cooked_key(REGCLASS)
24+
RETURNSTEXTAS'pg_pathman','get_cached_partition_cooked_key_pl'
25+
LANGUAGE C STRICT;
26+
2127
SELECT get_partition_cooked_key('test_column_type.test'::REGCLASS);
28+
SELECT get_cached_partition_cooked_key('test_column_type.test'::REGCLASS);
2229
SELECT get_partition_key_type('test_column_type.test'::REGCLASS);
30+
31+
/* change column's type (should also flush caches)*/
2332
ALTERTABLEtest_column_type.test ALTER val TYPENUMERIC;
2433

25-
/* check that expression has been built*/
34+
/* check thatcorrectexpression has been built*/
2635
SELECT get_partition_key_type('test_column_type.test'::REGCLASS);
2736
SELECT get_partition_cooked_key('test_column_type.test'::REGCLASS);
37+
SELECT get_cached_partition_cooked_key('test_column_type.test'::REGCLASS);
38+
DROPFUNCTION get_cached_partition_cooked_key(REGCLASS);
2839

2940
/* make sure that everything works properly*/
3041
SELECT*FROMtest_column_type.test;

‎src/pl_funcs.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
PG_FUNCTION_INFO_V1(get_number_of_partitions_pl );
4949
PG_FUNCTION_INFO_V1(get_partition_key_type_pl );
5050
PG_FUNCTION_INFO_V1(get_partition_cooked_key_pl );
51+
PG_FUNCTION_INFO_V1(get_cached_partition_cooked_key_pl );
5152
PG_FUNCTION_INFO_V1(get_parent_of_partition_pl );
5253
PG_FUNCTION_INFO_V1(get_base_type_pl );
5354
PG_FUNCTION_INFO_V1(get_tablespace_pl );
@@ -171,6 +172,26 @@ get_partition_cooked_key_pl(PG_FUNCTION_ARGS)
171172
PG_RETURN_TEXT_P(CStringGetTextDatum(cooked_cstr));
172173
}
173174

175+
/*
176+
* Return cached cooked partition key.
177+
*
178+
* Used in tests for invalidation.
179+
*/
180+
Datum
181+
get_cached_partition_cooked_key_pl(PG_FUNCTION_ARGS)
182+
{
183+
Oidrelid=PG_GETARG_OID(0);
184+
PartRelationInfo*prel;
185+
Datumres;
186+
187+
prel=get_pathman_relation_info(relid);
188+
shout_if_prel_is_invalid(relid,prel,PT_ANY);
189+
res=CStringGetTextDatum(nodeToString(prel->expr));
190+
close_pathman_relation_info(prel);
191+
192+
PG_RETURN_TEXT_P(res);
193+
}
194+
174195
/*
175196
* Extract basic type of a domain.
176197
*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp