mirror of https://github.com/citusdata/citus.git
61 lines
2.1 KiB
C
61 lines
2.1 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* shardinterval_utils.h
|
|
*
|
|
* Declarations for public utility functions related to shard intervals.
|
|
*
|
|
* Copyright (c) Citus Data, Inc.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef SHARDINTERVAL_UTILS_H_
|
|
#define SHARDINTERVAL_UTILS_H_
|
|
|
|
#include "distributed/metadata_utility.h"
|
|
#include "distributed/metadata_cache.h"
|
|
#include "nodes/primnodes.h"
|
|
|
|
#define INVALID_SHARD_INDEX -1
|
|
|
|
/* OperatorCacheEntry contains information for each element in OperatorCache */
|
|
typedef struct ShardIntervalCompareFunctionCacheEntry
|
|
{
|
|
Var *partitionColumn;
|
|
char partitionMethod;
|
|
FmgrInfo *functionInfo;
|
|
} ShardIntervalCompareFunctionCacheEntry;
|
|
|
|
/*
|
|
* SortShardIntervalContext is the context parameter in SortShardIntervalArray
|
|
*/
|
|
typedef struct SortShardIntervalContext
|
|
{
|
|
FmgrInfo *comparisonFunction;
|
|
Oid collation;
|
|
} SortShardIntervalContext;
|
|
|
|
extern ShardInterval ** SortShardIntervalArray(ShardInterval **shardIntervalArray, int
|
|
shardCount, Oid collation,
|
|
FmgrInfo *shardIntervalSortCompareFunction);
|
|
extern int CompareShardIntervals(const void *leftElement, const void *rightElement,
|
|
SortShardIntervalContext *sortContext);
|
|
extern int CompareShardIntervalsById(const void *leftElement, const void *rightElement);
|
|
extern int CompareShardPlacementsByShardId(const void *leftElement,
|
|
const void *rightElement);
|
|
extern int CompareRelationShards(const void *leftElement,
|
|
const void *rightElement);
|
|
extern int ShardIndex(ShardInterval *shardInterval);
|
|
extern int CalculateUniformHashRangeIndex(int hashedValue, int shardCount);
|
|
extern ShardInterval * FindShardInterval(Datum partitionColumnValue,
|
|
CitusTableCacheEntry *cacheEntry);
|
|
extern int FindShardIntervalIndex(Datum searchedValue, CitusTableCacheEntry *cacheEntry);
|
|
extern int SearchCachedShardInterval(Datum partitionColumnValue,
|
|
ShardInterval **shardIntervalCache,
|
|
int shardCount, Oid shardIntervalCollation,
|
|
FmgrInfo *compareFunction);
|
|
extern bool SingleReplicatedTable(Oid relationId);
|
|
|
|
|
|
#endif /* SHARDINTERVAL_UTILS_H_ */
|