【资源池化多机并行bugfix】

1.修复spqplugin&dolphin编译冲突
2.解决orca memory leak
3.Q8数据不一致问题解决
This commit is contained in:
Mijamind
2023-10-17 14:31:14 +08:00
committed by quemingjian (C)
parent ea7ff3627b
commit 656e011efd
11 changed files with 141 additions and 15 deletions

View File

@ -39,9 +39,6 @@
#define SRC_INCLUDE_KNL_KNL_SESSION_ATTR_MPP_H_
#include "knl/knl_guc/knl_guc_common.h"
#ifdef PGXC
#include "pgxc/nodemgr.h"
#endif
struct NodeDefinition;

View File

@ -2667,6 +2667,7 @@ typedef struct knl_u_mot_context {
namespace spqdxl {
class CDXLMemoryManager;
class CDXLTokens;
class CParseHandlerFactory;
}
namespace spqos {
@ -2674,6 +2675,8 @@ namespace spqos {
class CMemoryPoolManager;
class CWorkerPoolManager;
template <class T, class K>class CCache;
class CCacheFactory;
class CMessageRepository;
}
namespace spqmd {
@ -2682,6 +2685,7 @@ namespace spqmd {
namespace spqopt {
class CMDKey;
class CXformFactory;
}
@ -2694,6 +2698,7 @@ typedef struct knl_u_spq_context {
uintptr_t m_ulpShutdownDXL;
void *m_pstrmap;
void *m_pxmlszmap;
void *m_token_parse_handler_func_map;
spqos::CMemoryPool* m_mp;
spqdxl::CDXLMemoryManager* m_dxl_memory_manager;
/* memory pool manager */
@ -2702,12 +2707,19 @@ typedef struct knl_u_spq_context {
spqos::CWorkerPoolManager* m_worker_pool_manager;
/* mdcache */
spqos::CCache<spqmd::IMDCacheObject *, spqopt::CMDKey *> *m_pcache;
/* cache factory */
spqos::CCacheFactory* m_factory;
spqos::CMessageRepository *m_repository;
/* CXformFactory */
spqos::CMemoryPool* m_xform_mp;
spqopt::CXformFactory* m_pxff;
uint64 m_ullCacheQuota;
int spq_node_all_configs_size;
int spq_node_configs_size;
MemoryContext spq_worker_context;
MemoryContext s_tupSerMemCtxt;
int32 spq_max_tuple_chunk_size;
bool spq_opt_initialized;
} knl_u_spq_context;
#endif

View File

@ -217,4 +217,9 @@ extern bool queryIsReadOnly(Query* query);
typedef PlannedStmt* (*plannerFunc)(Query* parse, int cursorOptions, ParamListInfo boundParams);
#ifdef USE_SPQ
extern List* spq_get_distributekey_from_tlist(
PlannerInfo* root, List* tlist, List* groupcls, double rows, double* result_multiple, void* skew_info = NULL);
#endif
#endif /* PLANNER_H */

View File

@ -83,4 +83,7 @@ extern Node* coerce_to_target_charset(Node* expr, int target_charset, Oid target
extern Node *transferConstToAconst(Node *node);
extern Const* setValueToConstExpr(SetVariableExpr* set);
#ifdef USE_SPQ
extern bool get_cast_func(Oid oidSrc, Oid oidDest, bool *is_binary_coercible, Oid *oidCastFunc, CoercionPathType *pathtype);
#endif
#endif /* PARSE_COERCE_H */

View File

@ -249,4 +249,9 @@ extern void ConstructSliceBoundary(ExecNodes* en);
extern Expr* pgxc_find_distcol_expr(void* query, Index varno, AttrNumber attrNum, Node* quals);
extern bool IsFunctionShippable(Oid foid);
#ifdef USE_SPQ
extern bool IsSpqTypeDistributable(Oid colType);
#endif
#endif /* LOCATOR_H */

View File

@ -19,9 +19,6 @@
#include "catalog/pg_workload_group.h"
#include "catalog/pg_app_workloadgroup_mapping.h"
#include "catalog/pgxc_node.h"
#ifdef USE_SPQ
#include "parser/parse_coerce.h"
#endif
/* Result list element for get_op_btree_interpretation */
typedef struct OpBtreeInterpretation {
@ -225,7 +222,7 @@ extern char get_typecategory(Oid typid);
#ifdef USE_SPQ
/* comparison types */
typedef enum CmpType {
typedef enum SPQCmpType {
CmptEq, // equality
CmptNEq, // inequality
CmptLT, // less than
@ -233,7 +230,7 @@ typedef enum CmpType {
CmptGT, // greater than
CmptGEq, // greater or equal to
CmptOther // other operator
} CmpType;
} SPQCmpType;
#define ATTSTATSSLOT_VALUES 0x01
#define ATTSTATSSLOT_NUMBERS 0x02
@ -268,7 +265,6 @@ extern bool index_exists(Oid oid);
extern bool aggregate_exists(Oid oid);
extern Oid get_aggregate(const char *aggname, Oid oidType);
extern bool function_exists(Oid oid);
extern bool get_cast_func(Oid oidSrc, Oid oidDest, bool *is_binary_coercible, Oid *oidCastFunc, CoercionPathType *pathtype);
extern bool check_constraint_exists(Oid oidCheckconstraint);
extern char *get_check_constraint_name(Oid oidCheckconstraint);
extern Oid get_check_constraint_relid(Oid oidCheckconstraint);
@ -277,8 +273,8 @@ extern Node *get_check_constraint_expr_tree(Oid oidCheckconstraint);
extern bool operator_exists(Oid oid);
extern bool relation_exists(Oid oid);
extern bool type_exists(Oid oid);
extern CmpType get_comparison_type(Oid oidOp);
extern Oid get_comparison_operator(Oid oidLeft, Oid oidRight, CmpType cmpt);
extern SPQCmpType get_comparison_type(Oid oidOp);
extern Oid get_comparison_operator(Oid oidLeft, Oid oidRight, SPQCmpType cmpt);
extern bool has_subclass_slow(Oid relationId);
extern List *get_operator_opfamilies(Oid opno);
extern List *get_index_opfamilies(Oid oidIndex);