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

📄 outfuncs.c

📁 关系型数据库 Postgresql 6.5.2
💻 C
📖 第 1 页 / 共 3 页
字号:
					 node->right_type);}/* *	RestrictInfo is a subclass of Node. */static void_outRestrictInfo(StringInfo str, RestrictInfo *node){	appendStringInfo(str, " RESTRICTINFO :clause ");	_outNode(str, node->clause);	appendStringInfo(str,					 " :selectivity %f :notclause %s :indexids ",					 node->selectivity,					 node->notclause ? "true" : "false");	_outNode(str, node->indexids);	appendStringInfo(str, " :mergejoinorder ");	_outNode(str, node->mergejoinorder);	appendStringInfo(str, " :hashjoinoperator %u ", node->hashjoinoperator);}/* *	JoinMethod is a subclass of Node. */static void_outJoinMethod(StringInfo str, JoinMethod *node){	appendStringInfo(str, " JOINMETHOD :jmkeys ");	_outNode(str, node->jmkeys);	appendStringInfo(str, " :clauses ");	_outNode(str, node->clauses);}/* * HashInfo is a subclass of JoinMethod. */static void_outHashInfo(StringInfo str, HashInfo *node){	appendStringInfo(str, " HASHINFO :hashop %u :jmkeys ", node->hashop);	_outNode(str, node->jmethod.jmkeys);	appendStringInfo(str, " :clauses ");	_outNode(str, node->jmethod.clauses);}/* *	JoinInfo is a subclass of Node. */static void_outJoinInfo(StringInfo str, JoinInfo *node){	appendStringInfo(str, " JINFO :unjoined_relids ");	_outIntList(str, node->unjoined_relids);	appendStringInfo(str, " :jinfo_restrictinfo ");	_outNode(str, node->jinfo_restrictinfo);	appendStringInfo(str, " :mergejoinable %s :hashjoinable %s ",					 node->mergejoinable ? "true" : "false",					 node->hashjoinable ? "true" : "false");}/* * Print the value of a Datum given its type. */static void_outDatum(StringInfo str, Datum value, Oid type){	char	   *s;	Size		length,				typeLength;	bool		byValue;	int			i;	/*	 * find some information about the type and the "real" length of the	 * datum.	 */	byValue = get_typbyval(type);	typeLength = get_typlen(type);	length = datumGetSize(value, type, byValue, typeLength);	if (byValue)	{		s = (char *) (&value);		appendStringInfo(str, " %d [ ", length);		for (i = 0; i < sizeof(Datum); i++)			appendStringInfo(str, " %d ", (int) (s[i]));		appendStringInfo(str, "] ");	}	else	{							/* !byValue */		s = (char *) DatumGetPointer(value);		if (!PointerIsValid(s))			appendStringInfo(str, " 0 [ ] ");		else		{			/*			 * length is unsigned - very bad to do < comparison to -1			 * without casting it to int first!! -mer 8 Jan 1991			 */			if (((int) length) <= -1)				length = VARSIZE(s);			appendStringInfo(str, " %d [ ", length);			for (i = 0; i < length; i++)				appendStringInfo(str, " %d ", (int) (s[i]));			appendStringInfo(str, "] ");		}	}}static void_outIter(StringInfo str, Iter *node){	appendStringInfo(str, " ITER :iterexpr ");	_outNode(str, node->iterexpr);}static void_outStream(StringInfo str, Stream *node){	appendStringInfo(str,					 " STREAM :pathptr @ 0x%x :cinfo @ 0x%x :clausetype %d :upstream @ 0x%x ",					 (int) node->pathptr,					 (int) node->cinfo,					 (int) node->clausetype,					 (int) node->upstream);	appendStringInfo(str,		   " :downstream @ 0x%x :groupup %d :groupcost %f :groupsel %f ",					 (int) node->downstream,					 node->groupup,					 node->groupcost,					 node->groupsel);}static void_outAExpr(StringInfo str, A_Expr *node){	appendStringInfo(str, "EXPR ");	switch (node->oper)	{		case AND:			appendStringInfo(str, "AND");			break;		case OR:			appendStringInfo(str, "OR");			break;		case NOT:			appendStringInfo(str, "NOT");			break;		case ISNULL:			appendStringInfo(str, "ISNULL");			break;		case NOTNULL:			appendStringInfo(str, "NOTNULL");			break;		default:			appendStringInfo(str, stringStringInfo(node->opname));			break;	}	_outNode(str, node->lexpr);	_outNode(str, node->rexpr);	return;}static void_outValue(StringInfo str, Value *value){	switch (value->type)	{			case T_String:			appendStringInfo(str, " \"%s\" ", stringStringInfo(value->val.str));			break;		case T_Integer:			appendStringInfo(str, " %ld ", value->val.ival);			break;		case T_Float:			appendStringInfo(str, " %f ", value->val.dval);			break;		default:			break;	}	return;}static void_outIdent(StringInfo str, Ident *node){	appendStringInfo(str, " IDENT \"%s\" ", stringStringInfo(node->name));	return;}static void_outAttr(StringInfo str, Attr *node){	List	   *l;	appendStringInfo(str, " ATTR \"%s\" ", stringStringInfo(node->relname));	appendStringInfo(str, "(");	foreach(l, node->attrs)	{		_outNode(str, lfirst(l));		if (lnext(l))			appendStringInfo(str, ",");	}	appendStringInfo(str, ")");	return;}static void_outAConst(StringInfo str, A_Const *node){	appendStringInfo(str, "CONST ");	_outValue(str, &(node->val));	return;}static void_outConstraint(StringInfo str, Constraint *node){	appendStringInfo(str, " %s :type", stringStringInfo(node->name));	switch (node->contype)	{		case CONSTR_PRIMARY:			appendStringInfo(str, " PRIMARY KEY ");			_outNode(str, node->keys);			break;		case CONSTR_CHECK:			appendStringInfo(str, " CHECK %s", stringStringInfo(node->def));			break;		case CONSTR_DEFAULT:			appendStringInfo(str, " DEFAULT %s", stringStringInfo(node->def));			break;		case CONSTR_NOTNULL:			appendStringInfo(str, " NOT NULL ");			break;		case CONSTR_UNIQUE:			appendStringInfo(str, " UNIQUE ");			_outNode(str, node->keys);			break;		default:			appendStringInfo(str, "<unrecognized constraint>");			break;	}	return;}static void_outCaseExpr(StringInfo str, CaseExpr *node){	appendStringInfo(str, "CASE ");	_outNode(str, node->args);	appendStringInfo(str, " :default ");	_outNode(str, node->defresult);	return;}static void_outCaseWhen(StringInfo str, CaseWhen *node){	appendStringInfo(str, " WHEN ");	_outNode(str, node->expr);	appendStringInfo(str, " :then ");	_outNode(str, node->result);	return;}/* * _outNode - *	  converts a Node into ascii string and append it to 'str' */static void_outNode(StringInfo str, void *obj){	if (obj == NULL)	{		appendStringInfo(str, "<>");		return;	}	if (nodeTag(obj) == T_List)	{		List	   *l;		appendStringInfo(str, "(");		foreach(l, (List *) obj)		{			_outNode(str, lfirst(l));			if (lnext(l))				appendStringInfo(str, " ");		}		appendStringInfo(str, ")");	}	else	{		appendStringInfo(str, "{");		switch (nodeTag(obj))		{			case T_CreateStmt:				_outCreateStmt(str, obj);				break;			case T_IndexStmt:				_outIndexStmt(str, obj);				break;			case T_ColumnDef:				_outColumnDef(str, obj);				break;			case T_TypeName:				_outTypeName(str, obj);				break;			case T_IndexElem:				_outIndexElem(str, obj);				break;			case T_Query:				_outQuery(str, obj);				break;			case T_SortClause:				_outSortClause(str, obj);				break;			case T_GroupClause:				_outGroupClause(str, obj);				break;			case T_Plan:				_outPlan(str, obj);				break;			case T_Result:				_outResult(str, obj);				break;			case T_Append:				_outAppend(str, obj);				break;			case T_Join:				_outJoin(str, obj);				break;			case T_NestLoop:				_outNestLoop(str, obj);				break;			case T_MergeJoin:				_outMergeJoin(str, obj);				break;			case T_HashJoin:				_outHashJoin(str, obj);				break;			case T_Scan:				_outScan(str, obj);				break;			case T_SeqScan:				_outSeqScan(str, obj);				break;			case T_IndexScan:				_outIndexScan(str, obj);				break;			case T_Noname:				_outNoname(str, obj);				break;			case T_Sort:				_outSort(str, obj);				break;			case T_Agg:				_outAgg(str, obj);				break;			case T_Group:				_outGroup(str, obj);				break;			case T_Unique:				_outUnique(str, obj);				break;			case T_Hash:				_outHash(str, obj);				break;			case T_SubPlan:				_outSubPlan(str, obj);				break;			case T_Resdom:				_outResdom(str, obj);				break;			case T_Fjoin:				_outFjoin(str, obj);				break;			case T_Expr:				_outExpr(str, obj);				break;			case T_Var:				_outVar(str, obj);				break;			case T_Const:				_outConst(str, obj);				break;			case T_Aggref:				_outAggref(str, obj);				break;			case T_SubLink:				_outSubLink(str, obj);				break;			case T_Array:				_outArray(str, obj);				break;			case T_ArrayRef:				_outArrayRef(str, obj);				break;			case T_Func:				_outFunc(str, obj);				break;			case T_Oper:				_outOper(str, obj);				break;			case T_Param:				_outParam(str, obj);				break;			case T_EState:				_outEState(str, obj);				break;			case T_RelOptInfo:				_outRelOptInfo(str, obj);				break;			case T_TargetEntry:				_outTargetEntry(str, obj);				break;			case T_RangeTblEntry:				_outRangeTblEntry(str, obj);				break;			case T_RowMark:				_outRowMark(str, obj);				break;			case T_PathOrder:				_outPathOrder(str, obj);				break;			case T_Path:				_outPath(str, obj);				break;			case T_IndexPath:				_outIndexPath(str, obj);				break;			case T_NestPath:				_outNestPath(str, obj);				break;			case T_MergePath:				_outMergePath(str, obj);				break;			case T_HashPath:				_outHashPath(str, obj);				break;			case T_OrderKey:				_outOrderKey(str, obj);				break;			case T_JoinKey:				_outJoinKey(str, obj);				break;			case T_MergeOrder:				_outMergeOrder(str, obj);				break;			case T_RestrictInfo:				_outRestrictInfo(str, obj);				break;			case T_JoinMethod:				_outJoinMethod(str, obj);				break;			case T_HashInfo:				_outHashInfo(str, obj);				break;			case T_JoinInfo:				_outJoinInfo(str, obj);				break;			case T_Iter:				_outIter(str, obj);				break;			case T_Stream:				_outStream(str, obj);				break;			case T_Integer:			case T_String:			case T_Float:				_outValue(str, obj);				break;			case T_A_Expr:				_outAExpr(str, obj);				break;			case T_Ident:				_outIdent(str, obj);				break;			case T_A_Const:				_outAConst(str, obj);				break;			case T_Constraint:				_outConstraint(str, obj);				break;			case T_CaseExpr:				_outCaseExpr(str, obj);				break;			case T_CaseWhen:				_outCaseWhen(str, obj);				break;			case T_VariableSetStmt:				break;			case T_SelectStmt:				_outSelectStmt(str, obj);				break;			case T_FuncCall:				_outFuncCall(str, obj);				break;			case T_Attr:				_outAttr(str, obj);				break;			default:				elog(NOTICE, "_outNode: don't know how to print type %d ",					 nodeTag(obj));				break;		}		appendStringInfo(str, "}");	}	return;}/* * nodeToString - *	   returns the ascii representation of the Node as a palloc'd string */char *nodeToString(void *obj){	StringInfoData str;	/* see stringinfo.h for an explanation of this maneuver */	initStringInfo(&str);	_outNode(&str, obj);	return str.data;}

⌨️ 快捷键说明

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