Skip to content

Commit 5d62358

Browse files
committed
Merge branch 'master' of github.com:postgrespro/pg_pathman
2 parents dd4b33b + 07ad611 commit 5d62358

File tree

5 files changed

+62
-10
lines changed

5 files changed

+62
-10
lines changed

expected/pathman_callbacks.out

+32-10
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ SELECT set_init_callback('callbacks.abc',
2727

2828
INSERT INTO callbacks.abc VALUES (123, 1);
2929
INSERT INTO callbacks.abc VALUES (223, 1); /* show warning */
30-
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_3", "range_max": "301", "range_min": "201"}
30+
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_3", "range_max": "301", "range_min": "201", "parent_schema": "callbacks", "partition_schema": "callbacks"}
3131
SELECT set_spawn_using_bgw('callbacks.abc', true);
3232
set_spawn_using_bgw
3333
---------------------
@@ -54,21 +54,21 @@ SELECT set_spawn_using_bgw('callbacks.abc', false);
5454
(1 row)
5555

5656
SELECT append_range_partition('callbacks.abc');
57-
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_5", "range_max": "501", "range_min": "401"}
57+
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_5", "range_max": "501", "range_min": "401", "parent_schema": "callbacks", "partition_schema": "callbacks"}
5858
append_range_partition
5959
------------------------
6060
callbacks.abc_5
6161
(1 row)
6262

6363
SELECT prepend_range_partition('callbacks.abc');
64-
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_6", "range_max": "1", "range_min": "-99"}
64+
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_6", "range_max": "1", "range_min": "-99", "parent_schema": "callbacks", "partition_schema": "callbacks"}
6565
prepend_range_partition
6666
-------------------------
6767
callbacks.abc_6
6868
(1 row)
6969

7070
SELECT add_range_partition('callbacks.abc', 501, 602);
71-
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_7", "range_max": "602", "range_min": "501"}
71+
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_7", "range_max": "602", "range_min": "501", "parent_schema": "callbacks", "partition_schema": "callbacks"}
7272
add_range_partition
7373
---------------------
7474
callbacks.abc_7
@@ -97,16 +97,38 @@ SELECT set_init_callback('callbacks.abc',
9797
(1 row)
9898

9999
SELECT create_hash_partitions('callbacks.abc', 'a', 5);
100-
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_0"}
101-
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_1"}
102-
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_2"}
103-
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_3"}
104-
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_4"}
100+
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_0", "parent_schema": "callbacks", "partition_schema": "callbacks"}
101+
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_1", "parent_schema": "callbacks", "partition_schema": "callbacks"}
102+
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_2", "parent_schema": "callbacks", "partition_schema": "callbacks"}
103+
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_3", "parent_schema": "callbacks", "partition_schema": "callbacks"}
104+
WARNING: callback arg: {"parent": "abc", "parttype": "1", "partition": "abc_4", "parent_schema": "callbacks", "partition_schema": "callbacks"}
105105
create_hash_partitions
106106
------------------------
107107
5
108108
(1 row)
109109

110+
DROP TABLE callbacks.abc CASCADE;
111+
NOTICE: drop cascades to 5 other objects
112+
/* create table in public schema */
113+
CREATE TABLE abc(a serial, b int);
114+
SELECT set_init_callback('abc',
115+
'callbacks.abc_on_part_created_callback');
116+
set_init_callback
117+
-------------------
118+
119+
(1 row)
120+
121+
SELECT create_range_partitions('abc', 'a', 1, 100, 2);
122+
NOTICE: sequence "abc_seq" does not exist, skipping
123+
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_1", "range_max": "101", "range_min": "1", "parent_schema": "public", "partition_schema": "public"}
124+
WARNING: callback arg: {"parent": "abc", "parttype": "2", "partition": "abc_2", "range_max": "201", "range_min": "101", "parent_schema": "public", "partition_schema": "public"}
125+
create_range_partitions
126+
-------------------------
127+
2
128+
(1 row)
129+
130+
DROP TABLE abc CASCADE;
131+
NOTICE: drop cascades to 2 other objects
110132
DROP SCHEMA callbacks CASCADE;
111-
NOTICE: drop cascades to 8 other objects
133+
NOTICE: drop cascades to 2 other objects
112134
DROP EXTENSION pg_pathman CASCADE;

sql/pathman_callbacks.sql

+9
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ SELECT set_init_callback('callbacks.abc',
4343
'callbacks.abc_on_part_created_callback');
4444
SELECT create_hash_partitions('callbacks.abc', 'a', 5);
4545

46+
DROP TABLE callbacks.abc CASCADE;
47+
48+
/* create table in public schema */
49+
CREATE TABLE abc(a serial, b int);
50+
SELECT set_init_callback('abc',
51+
'callbacks.abc_on_part_created_callback');
52+
SELECT create_range_partitions('abc', 'a', 1, 100, 2);
53+
54+
DROP TABLE abc CASCADE;
4655

4756
DROP SCHEMA callbacks CASCADE;
4857
DROP EXTENSION pg_pathman CASCADE;

src/partition_creation.c

+8
Original file line numberDiff line numberDiff line change
@@ -1444,8 +1444,12 @@ invoke_init_callback_internal(init_callback_params *cb_params)
14441444

14451445
JSB_INIT_VAL(&key, WJB_KEY, "parent");
14461446
JSB_INIT_VAL(&val, WJB_VALUE, get_rel_name_or_relid(parent_oid));
1447+
JSB_INIT_VAL(&key, WJB_KEY, "parent_schema");
1448+
JSB_INIT_VAL(&val, WJB_VALUE, get_namespace_name(get_rel_namespace(parent_oid)));
14471449
JSB_INIT_VAL(&key, WJB_KEY, "partition");
14481450
JSB_INIT_VAL(&val, WJB_VALUE, get_rel_name_or_relid(partition_oid));
1451+
JSB_INIT_VAL(&key, WJB_KEY, "partition_schema");
1452+
JSB_INIT_VAL(&val, WJB_VALUE, get_namespace_name(get_rel_namespace(partition_oid)));
14491453
JSB_INIT_VAL(&key, WJB_KEY, "parttype");
14501454
JSB_INIT_VAL(&val, WJB_VALUE, PartTypeToCString(PT_HASH));
14511455

@@ -1469,8 +1473,12 @@ invoke_init_callback_internal(init_callback_params *cb_params)
14691473

14701474
JSB_INIT_VAL(&key, WJB_KEY, "parent");
14711475
JSB_INIT_VAL(&val, WJB_VALUE, get_rel_name_or_relid(parent_oid));
1476+
JSB_INIT_VAL(&key, WJB_KEY, "parent_schema");
1477+
JSB_INIT_VAL(&val, WJB_VALUE, get_namespace_name(get_rel_namespace(parent_oid)));
14721478
JSB_INIT_VAL(&key, WJB_KEY, "partition");
14731479
JSB_INIT_VAL(&val, WJB_VALUE, get_rel_name_or_relid(partition_oid));
1480+
JSB_INIT_VAL(&key, WJB_KEY, "partition_schema");
1481+
JSB_INIT_VAL(&val, WJB_VALUE, get_namespace_name(get_rel_namespace(partition_oid)));
14741482
JSB_INIT_VAL(&key, WJB_KEY, "parttype");
14751483
JSB_INIT_VAL(&val, WJB_VALUE, PartTypeToCString(PT_RANGE));
14761484
JSB_INIT_VAL(&key, WJB_KEY, "range_min");

src/utils.c

+12
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,18 @@ get_rel_name_or_relid(Oid relid)
234234
return relname;
235235
}
236236

237+
char *
238+
get_qualified_rel_name_or_relid(Oid relid)
239+
{
240+
char *relname = get_rel_name(relid);
241+
char *namespace = get_namespace_name(get_rel_namespace(relid));
242+
243+
if (!relname)
244+
return DatumGetCString(DirectFunctionCall1(oidout,
245+
ObjectIdGetDatum(relid)));
246+
return psprintf("%s.%s", namespace, relname);
247+
}
248+
237249

238250
#if PG_VERSION_NUM < 90600
239251
/*

src/utils.h

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ List * list_reverse(List *l);
3939
*/
4040
Oid get_rel_owner(Oid relid);
4141
char * get_rel_name_or_relid(Oid relid);
42+
char * get_qualified_rel_name_or_relid(Oid relid);
4243
Oid get_attribute_type(Oid relid, const char *attname, bool missing_ok);
4344
#if PG_VERSION_NUM < 90600
4445
char get_rel_persistence(Oid relid);

0 commit comments

Comments
 (0)