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

📄 oid.c

📁 关系型数据库 Postgresql 6.5.2
💻 C
字号:
/*------------------------------------------------------------------------- * * oid.c *	  Functions for the built-in type Oid. * * Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION *	  $Header: /usr/local/cvsroot/pgsql/src/backend/utils/adt/oid.c,v 1.23.2.1 1999/08/02 05:24:56 scrappy Exp $ * *------------------------------------------------------------------------- */#include "postgres.h"#include "utils/builtins.h"/***************************************************************************** *	 USER I/O ROUTINES														 * *****************************************************************************//* *		oid8in			- converts "num num ..." to internal form * *		Note: *				Fills any nonexistent digits with NULL oids. */Oid *oid8in(char *oidString){	Oid		   *result;	int			nums;	if (oidString == NULL)		return NULL;	result = (Oid *) palloc(sizeof(Oid[8]));	if ((nums = sscanf(oidString, "%u%u%u%u%u%u%u%u",					   &result[0],					   &result[1],					   &result[2],					   &result[3],					   &result[4],					   &result[5],					   &result[6],					   &result[7])) != 8)	{		do			result[nums++] = 0;		while (nums < 8);	}	return result;}/* *		oid8out - converts internal form to "num num ..." */char *oid8out(Oid *oidArray){	int			num;	Oid		   *sp;	char	   *rp;	char	   *result;	if (oidArray == NULL)	{		result = (char *) palloc(2);		result[0] = '-';		result[1] = '\0';		return result;	}	/* assumes sign, 10 digits, ' ' */	rp = result = (char *) palloc(8 * 12);	sp = oidArray;	for (num = 8; num != 0; num--)	{		ltoa(*sp++, rp);		while (*++rp != '\0')			;		*rp++ = ' ';	}	*--rp = '\0';	return result;}Oidoidin(char *s){	return int4in(s);}char *oidout(Oid o){	return int4out(o);}/***************************************************************************** *	 PUBLIC ROUTINES														 * *****************************************************************************//* * If you change this function, change heap_keytest() * because we have hardcoded this in there as an optimization */booloideq(Oid arg1, Oid arg2){	return arg1 == arg2;}booloidne(Oid arg1, Oid arg2){	return arg1 != arg2;}booloid8eq(Oid *arg1, Oid *arg2){	return (bool) (memcmp(arg1, arg2, 8 * sizeof(Oid)) == 0);}booloid8ne(Oid *arg1, Oid *arg2){	return (bool) (memcmp(arg1, arg2, 8 * sizeof(Oid)) != 0);}booloid8lt(Oid *arg1, Oid *arg2){	int			i;	for (i = 0; i < 8; i++)		if (!int4eq(arg1[i], arg2[i]))			return int4lt(arg1[i], arg2[i]);	return false;}booloid8le(Oid *arg1, Oid *arg2){	int			i;	for (i = 0; i < 8; i++)		if (!int4eq(arg1[i], arg2[i]))			return int4le(arg1[i], arg2[i]);	return true;}booloid8ge(Oid *arg1, Oid *arg2){	int			i;	for (i = 0; i < 8; i++)		if (!int4eq(arg1[i], arg2[i]))			return int4ge(arg1[i], arg2[i]);	return true;}booloid8gt(Oid *arg1, Oid *arg2){	int			i;	for (i = 0; i < 8; i++)		if (!int4eq(arg1[i], arg2[i]))			return int4gt(arg1[i], arg2[i]);	return false;}booloideqint4(Oid arg1, int32 arg2){/* oid is unsigned, but int4 is signed */	return arg2 >= 0 && arg1 == arg2;}boolint4eqoid(int32 arg1, Oid arg2){/* oid is unsigned, but int4 is signed */	return arg1 >= 0 && arg1 == arg2;}text *oid_text(Oid oid){	text	   *result;	int			len;	char	   *str;	str = oidout(oid);	len = (strlen(str) + VARHDRSZ);	result = palloc(len);	VARSIZE(result) = len;	memmove(VARDATA(result), str, (len - VARHDRSZ));	pfree(str);	return result;}	/* oid_text() */Oidtext_oid(text *string){	Oid			result;	int			len;	char	   *str;	len = (VARSIZE(string) - VARHDRSZ);	str = palloc(len + 1);	memmove(str, VARDATA(string), len);	*(str + len) = '\0';	result = oidin(str);	pfree(str);	return result;}	/* oid_text() */

⌨️ 快捷键说明

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