⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freefuncs.c

📁 关系型数据库 Postgresql 6.5.2
💻 C
📖 第 1 页 / 共 2 页
字号:
 /*------------------------------------------------------------------------- * * freefuncs.c *	  Free functions for Postgres tree nodes. * * Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION *	  $Header: /usr/local/cvsroot/pgsql/src/backend/nodes/freefuncs.c,v 1.19 1999/05/26 12:55:20 momjian Exp $ * *------------------------------------------------------------------------- */#include <stdio.h>#include <string.h>#include "postgres.h"#include "nodes/pg_list.h"#include "nodes/execnodes.h"#include "nodes/plannodes.h"#include "nodes/parsenodes.h"#include "nodes/primnodes.h"#include "nodes/relation.h"#include "utils/syscache.h"#include "utils/builtins.h"		/* for namecpy */#include "utils/elog.h"#include "utils/palloc.h"#include "catalog/pg_type.h"#include "storage/lmgr.h"#include "optimizer/planmain.h"/* **************************************************************** *					 plannodes.h free functions * **************************************************************** */static void freeObject(void *obj);/* ---------------- *		FreePlanFields * *		This function frees the fields of the Plan node.  It is used by *		all the free functions for classes which inherit node Plan. * ---------------- */static voidFreePlanFields(Plan *node){	freeObject(node->targetlist);	freeObject(node->qual);	freeObject(node->lefttree);	freeObject(node->righttree);	freeList(node->extParam);	freeList(node->locParam);	freeList(node->chgParam);	freeObject(node->initPlan);	freeList(node->subPlan);}/* ---------------- *		_freePlan * ---------------- */static void_freePlan(Plan *node){	/* ----------------	 *	free the node superclass fields	 * ----------------	 */	FreePlanFields(node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	pfree(node);}/* ---------------- *		_freeResult * ---------------- */static void_freeResult(Result *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->resconstantqual);	pfree(node);}/* ---------------- *		_freeAppend * ---------------- */static void_freeAppend(Append *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->appendplans);	freeObject(node->unionrtables);	freeObject(node->inheritrtable);	pfree(node);}/* ---------------- *		FreeScanFields * *		This function frees the fields of the Scan node.  It is used by *		all the free functions for classes which inherit node Scan. * ---------------- */static voidFreeScanFields(Scan *node){}/* ---------------- *		_freeScan * ---------------- */static void_freeScan(Scan *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeScanFields((Scan *) node);	pfree(node);}/* ---------------- *		_freeSeqScan * ---------------- */static void_freeSeqScan(SeqScan *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeScanFields((Scan *) node);	pfree(node);}/* ---------------- *		_freeIndexScan * ---------------- */static void_freeIndexScan(IndexScan *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeScanFields((Scan *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeList(node->indxid);	freeObject(node->indxqual);	freeObject(node->indxqualorig);	pfree(node);}/* ---------------- *		FreeJoinFields * *		This function frees the fields of the Join node.  It is used by *		all the free functions for classes which inherit node Join. * ---------------- */static voidFreeJoinFields(Join *node){	/* nothing extra */	return;}/* ---------------- *		_freeJoin * ---------------- */static void_freeJoin(Join *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeJoinFields(node);	pfree(node);}/* ---------------- *		_freeNestLoop * ---------------- */static void_freeNestLoop(NestLoop *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeJoinFields((Join *) node);	pfree(node);}/* ---------------- *		_freeMergeJoin * ---------------- */static void_freeMergeJoin(MergeJoin *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeJoinFields((Join *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->mergeclauses);	pfree(node);}/* ---------------- *		_freeHashJoin * ---------------- */static void_freeHashJoin(HashJoin *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeJoinFields((Join *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->hashclauses);	pfree(node);}/* ---------------- *		FreeNonameFields * *		This function frees the fields of the Noname node.	It is used by *		all the free functions for classes which inherit node Noname. * ---------------- */static voidFreeNonameFields(Noname *node){	return;}/* ---------------- *		_freeNoname * ---------------- */static void_freeNoname(Noname *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeNonameFields(node);	pfree(node);}/* ---------------- *		_freeMaterial * ---------------- */static void_freeMaterial(Material *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeNonameFields((Noname *) node);	pfree(node);}/* ---------------- *		_freeSort * ---------------- */static void_freeSort(Sort *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeNonameFields((Noname *) node);	pfree(node);}/* ---------------- *		_freeGroup * ---------------- */static void_freeGroup(Group *node){	FreePlanFields((Plan *) node);	pfree(node->grpColIdx);	pfree(node);}/* --------------- *	_freeAgg * -------------- */static void_freeAgg(Agg *node){	FreePlanFields((Plan *) node);	freeList(node->aggs);	pfree(node);}/* --------------- *	_freeGroupClause * -------------- */static void_freeGroupClause(GroupClause *node){	pfree(node);}/* ---------------- *		_freeUnique * ---------------- */static void_freeUnique(Unique *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	FreeNonameFields((Noname *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	if (node->uniqueAttr)		pfree(node->uniqueAttr);	pfree(node);}/* ---------------- *		_freeHash * ---------------- */static void_freeHash(Hash *node){	/* ----------------	 *	free node superclass fields	 * ----------------	 */	FreePlanFields((Plan *) node);	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->hashkey);	pfree(node);}static void_freeSubPlan(SubPlan *node){	freeObject(node->plan);	freeObject(node->rtable);	freeList(node->setParam);	freeList(node->parParam);	freeObject(node->sublink);	pfree(node);}/* **************************************************************** *					   primnodes.h free functions * **************************************************************** *//* ---------------- *		_freeResdom * ---------------- */static void_freeResdom(Resdom *node){	if (node->resname != NULL)		pfree(node->resname);	pfree(node);}static void_freeFjoin(Fjoin *node){	freeObject(node->fj_innerNode);	pfree(node->fj_results);	pfree(node->fj_alwaysDone);	pfree(node);}/* ---------------- *		_freeExpr * ---------------- */static void_freeExpr(Expr *node){	freeObject(node->oper);	freeObject(node->args);	pfree(node);}/* ---------------- *		_freeVar * ---------------- */static void_freeVar(Var *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	pfree(node);}static void_freeFcache(FunctionCachePtr ptr){	if (ptr->argOidVect)		pfree(ptr->argOidVect);	if (ptr->nullVect)		pfree(ptr->nullVect);	if (ptr->src)		pfree(ptr->src);	if (ptr->bin)		pfree(ptr->bin);	if (ptr->func_state)		pfree(ptr->func_state);	if (ptr->setArg)		pfree(ptr->setArg);	pfree(ptr);}/* ---------------- *		_freeOper * ---------------- */static void_freeOper(Oper *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	if (node->op_fcache)		_freeFcache(node->op_fcache);	pfree(node);}/* ---------------- *		_freeConst * ---------------- */static void_freeConst(Const *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	if (!node->constbyval)		pfree((void *) node->constvalue);	pfree(node);}/* ---------------- *		_freeParam * ---------------- */static void_freeParam(Param *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	if (node->paramname != NULL)		pfree(node->paramname);	freeObject(node->param_tlist);	pfree(node);}/* ---------------- *		_freeFunc * ---------------- */static void_freeFunc(Func *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->func_tlist);	freeObject(node->func_planlist);	if (node->func_fcache)		_freeFcache(node->func_fcache);	pfree(node);}/* ---------------- *		_freeAggref * ---------------- */static void_freeAggref(Aggref *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	pfree(node->aggname);	freeObject(node->target);	pfree(node);}/* ---------------- *		_freeSubLink * ---------------- */static void_freeSubLink(SubLink *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->lefthand);	freeObject(node->oper);	freeObject(node->subselect);	pfree(node);}/* ---------------- *		_freeCaseExpr * ---------------- */static void_freeCaseExpr(CaseExpr *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->arg);	freeObject(node->args);	freeObject(node->defresult);	pfree(node);}/* ---------------- *		_freeCaseWhen * ---------------- */static void_freeCaseWhen(CaseWhen *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	freeObject(node->expr);	freeObject(node->result);	pfree(node);}static void_freeArray(Array *node){	/* ----------------	 *	free remainder of node	 * ----------------	 */	pfree(node);}static void_freeArrayRef(ArrayRef *node)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -