Skip to content

Commit 2b0bfab

Browse files
committed
fix #76: pass parent and partition schemas into callbacks params
1 parent 592efd0 commit 2b0bfab

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

expected/pathman_callbacks.out

Lines changed: 9 additions & 9 deletions
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,11 +97,11 @@ 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

src/partition_creation.c

Lines changed: 8 additions & 0 deletions
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

Lines changed: 12 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy