mirror of https://github.com/citusdata/citus.git
add rendezvous variable
parent
a5f4ef5943
commit
d157496513
|
@ -103,8 +103,8 @@ typedef struct IndexFetchColumnarData
|
|||
MemoryContext scanContext;
|
||||
} IndexFetchColumnarData;
|
||||
|
||||
|
||||
ColumnarTableSetOptions_hook_type ColumnarTableSetOptions_hook = NULL;
|
||||
/* available to other extensions using find_rendezvous_variable() */
|
||||
static ColumnarTableSetOptions_hook_type ColumnarTableSetOptions_hook = NULL;
|
||||
|
||||
static object_access_hook_type PrevObjectAccessHook = NULL;
|
||||
static ProcessUtility_hook_type PrevProcessUtilityHook = NULL;
|
||||
|
@ -1910,6 +1910,11 @@ ColumnarSubXactCallback(SubXactEvent event, SubTransactionId mySubid,
|
|||
void
|
||||
columnar_tableam_init()
|
||||
{
|
||||
ColumnarTableSetOptions_hook_type **ColumnarTableSetOptions_hook_ptr =
|
||||
(ColumnarTableSetOptions_hook_type **) find_rendezvous_variable(
|
||||
"ColumnarTableSetOptions_hook");
|
||||
*ColumnarTableSetOptions_hook_ptr = &ColumnarTableSetOptions_hook;
|
||||
|
||||
RegisterXactCallback(ColumnarXactCallback, NULL);
|
||||
RegisterSubXactCallback(ColumnarSubXactCallback, NULL);
|
||||
|
||||
|
|
|
@ -323,12 +323,6 @@ _PG_init(void)
|
|||
original_client_auth_hook = ClientAuthentication_hook;
|
||||
ClientAuthentication_hook = CitusAuthHook;
|
||||
|
||||
/*
|
||||
* When the options change on a columnar table, we may need to propagate
|
||||
* the changes to shards.
|
||||
*/
|
||||
ColumnarTableSetOptions_hook = ColumnarTableSetOptionsHook;
|
||||
|
||||
InitializeMaintenanceDaemon();
|
||||
|
||||
/* initialize coordinated transaction management */
|
||||
|
@ -357,7 +351,28 @@ _PG_init(void)
|
|||
{
|
||||
DoInitialCleanup();
|
||||
}
|
||||
columnar_init();
|
||||
|
||||
/*
|
||||
* For convenience and backwards compatibility, we avoid users
|
||||
* having to add both citus and columnar to
|
||||
* shared_preload_libraries by loading citus_columnar.so as
|
||||
* part of loading citus.so.
|
||||
*/
|
||||
load_file(COLUMNAR_LIB_NAME, false);
|
||||
|
||||
ColumnarTableSetOptions_hook_type **ColumnarTableSetOptions_hook_ptr =
|
||||
(ColumnarTableSetOptions_hook_type **) find_rendezvous_variable(
|
||||
"ColumnarTableSetOptions_hook");
|
||||
|
||||
/* rendezvous variable registered during columnar initialization */
|
||||
Assert(ColumnarTableSetOptions_hook_ptr != NULL);
|
||||
Assert(*ColumnarTableSetOptions_hook_ptr != NULL);
|
||||
|
||||
/*
|
||||
* Set the hook, so that when the options change on a columnar
|
||||
* table, we propagate the changes to shards.
|
||||
*/
|
||||
**ColumnarTableSetOptions_hook_ptr = ColumnarTableSetOptionsHook;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -205,7 +205,6 @@ extern int columnar_compression_level;
|
|||
|
||||
/* called when the user changes options on the given relation */
|
||||
typedef void (*ColumnarTableSetOptions_hook_type)(Oid relid, ColumnarOptions options);
|
||||
extern ColumnarTableSetOptions_hook_type ColumnarTableSetOptions_hook;
|
||||
|
||||
extern void columnar_init(void);
|
||||
extern void columnar_init_gucs(void);
|
||||
|
|
Loading…
Reference in New Issue