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

📄 pg.xs

📁 关系型数据库 Postgresql 6.5.2
💻 XS
📖 第 1 页 / 共 2 页
字号:
	int	fd	int	offset	int	whence	ALIAS:		PQlo_lseek = 1Oidlo_creat(conn, mode)	PGconn *	conn	int	mode	ALIAS:		PQlo_creat = 1intlo_tell(conn, fd)	PGconn *	conn	int	fd	ALIAS:		PQlo_tell = 1intlo_unlink(conn, lobjId)	PGconn *	conn	Oid	lobjId	ALIAS:		PQlo_unlink = 1Oidlo_import(conn, filename)	PGconn *	conn	char *	filename	ALIAS:		PQlo_import = 1intlo_export(conn, lobjId, filename)	PGconn *	conn	Oid	lobjId	char *	filename	ALIAS:		PQlo_export = 1PG_connconnectdb(conninfo)	char *	conninfo	CODE:		/* convert dbname to lower case if not surrounded by double quotes */		char *ptr = strstr(conninfo, "dbname");		if (ptr) {			ptr += 6;			while (*ptr && *ptr++ != '=') {				;			}			while (*ptr && (*ptr == ' ' || *ptr == '\t')) {				ptr++;			}			if (*ptr == '"') {				*ptr++ = ' ';				while (*ptr && *ptr != '"') {					ptr++;				}				if (*ptr == '"') {					*ptr++ = ' ';				}			} else {				while (*ptr && *ptr != ' ' && *ptr != '\t') {					*ptr = tolower(*ptr);					ptr++;				}			}		}		RETVAL = PQconnectdb((const char *)conninfo);	OUTPUT:		RETVALPG_connsetdbLogin(pghost, pgport, pgoptions, pgtty, dbname, login, pwd)	char *	pghost	char *	pgport	char *	pgoptions	char *	pgtty	char *	dbname	char *	login	char *	pwd	CODE:		RETVAL = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbname,							  login, pwd);	OUTPUT:		RETVALPG_connsetdb(pghost, pgport, pgoptions, pgtty, dbname)	char *	pghost	char *	pgport	char *	pgoptions	char *	pgtty	char *	dbname	CODE:		RETVAL = PQsetdb(pghost, pgport, pgoptions, pgtty, dbname);	OUTPUT:		RETVALHV *conndefaults()	CODE:		PQconninfoOption *infoOption;		RETVAL = newHV();                if (infoOption = PQconndefaults()) {			while (infoOption->keyword != NULL) {				if (infoOption->val != NULL) {					hv_store(RETVAL, infoOption->keyword, strlen(infoOption->keyword), newSVpv(infoOption->val, 0), 0);				} else {					hv_store(RETVAL, infoOption->keyword, strlen(infoOption->keyword), newSVpv("", 0), 0);				}				infoOption++;			}		}	OUTPUT:		RETVALMODULE = Pg		PACKAGE = PG_conn		PREFIX = PQPROTOTYPES: DISABLEvoidDESTROY(conn)	PG_conn	conn	CODE:		/* printf("DESTROY connection\n"); */		PQfinish(conn);voidPQreset(conn)	PG_conn	connintPQrequestCancel(conn)	PG_conn	connchar *PQdb(conn)	PG_conn	connchar *PQuser(conn)	PG_conn	connchar *PQpass(conn)	PG_conn	connchar *PQhost(conn)	PG_conn	connchar *PQport(conn)	PG_conn	connchar *PQtty(conn)	PG_conn	connchar *PQoptions(conn)	PG_conn	connConnStatusTypePQstatus(conn)	PG_conn	connchar *PQerrorMessage(conn)	PG_conn	connintPQsocket(conn)	PG_conn	connintPQbackendPID(conn)	PG_conn	connvoidPQtrace(conn, debug_port)	PG_conn	conn	FILE *	debug_portvoidPQuntrace(conn)	PG_conn	connPG_resultsPQexec(conn, query)	PG_conn	conn	char *	query	CODE:		RETVAL = (PG_results)calloc(1, sizeof(PGresults));		if (RETVAL) {			RETVAL->result = PQexec((PGconn *)conn, query);			if (!RETVAL->result) {				RETVAL->result = PQmakeEmptyPGresult((PGconn *)conn, PGRES_FATAL_ERROR);			}		}	OUTPUT:		RETVALvoidPQnotifies(conn)	PG_conn	conn	PREINIT:		PGnotify *notify;	PPCODE:		notify = PQnotifies(conn);		if (notify) {			XPUSHs(sv_2mortal(newSVpv((char *)notify->relname, 0)));			XPUSHs(sv_2mortal(newSViv(notify->be_pid)));			free(notify);		}intPQsendQuery(conn, query)	PG_conn	conn	char *	queryPG_resultsPQgetResult(conn)	PG_conn	conn	CODE:		RETVAL = (PG_results)calloc(1, sizeof(PGresults));		if (RETVAL) {			RETVAL->result = PQgetResult((PGconn *)conn);			if (!RETVAL->result) {				RETVAL->result = PQmakeEmptyPGresult((PGconn *)conn, PGRES_FATAL_ERROR);			}		}	OUTPUT:		RETVALintPQisBusy(conn)	PG_conn	connintPQconsumeInput(conn)	PG_conn	connintPQgetline(conn, string, length)	PREINIT:		SV *bufsv = SvROK(ST(1)) ? SvRV(ST(1)) : ST(1);	INPUT:		PG_conn	conn		int	length		char *	string = sv_grow(bufsv, length);	CODE:		RETVAL = PQgetline(conn, string, length);	OUTPUT:		RETVAL		stringintPQputline(conn, string)	PG_conn	conn	char *	stringintPQgetlineAsync(conn, buffer, bufsize)	PREINIT:		SV *bufsv = SvROK(ST(1)) ? SvRV(ST(1)) : ST(1);	INPUT:		PG_conn	conn		int	bufsize		char *	buffer = sv_grow(bufsv, bufsize);	CODE:		RETVAL = PQgetline(conn, buffer, bufsize);	OUTPUT:		RETVAL		bufferintPQendcopy(conn)	PG_conn	connPG_resultsPQmakeEmptyPGresult(conn, status)	PG_conn	conn	ExecStatusType	status	CODE:		RETVAL = (PG_results)calloc(1, sizeof(PGresults));		if (RETVAL) {			RETVAL->result = PQmakeEmptyPGresult((PGconn *)conn, status);		}	OUTPUT:		RETVALintlo_open(conn, lobjId, mode)	PG_conn	conn	Oid	lobjId	int	modeintlo_close(conn, fd)	PG_conn	conn	int	fdintlo_read(conn, fd, buf, len)	PREINIT:		SV *bufsv = SvROK(ST(2)) ? SvRV(ST(2)) : ST(2);	INPUT:		PG_conn	conn		int	fd		int	len		char *	buf = sv_grow(bufsv, len + 1);	CODE:		RETVAL = lo_read(conn, fd, buf, len);		if (RETVAL > 0) {			SvCUR_set(bufsv, RETVAL);			*SvEND(bufsv) = '\0';		}	OUTPUT:		RETVAL		bufintlo_write(conn, fd, buf, len)	PG_conn	conn	int	fd	char *	buf	int	lenintlo_lseek(conn, fd, offset, whence)	PG_conn	conn	int	fd	int	offset	int	whenceOidlo_creat(conn, mode)	PG_conn	conn	int	modeintlo_tell(conn, fd)	PG_conn	conn	int	fdintlo_unlink(conn, lobjId)	PG_conn	conn	Oid	lobjIdOidlo_import(conn, filename)	PG_conn	conn	char *	filenameintlo_export(conn, lobjId, filename)	PG_conn	conn	Oid	lobjId	char *	filenameMODULE = Pg		PACKAGE = PG_results		PREFIX = PQPROTOTYPES: DISABLEvoidDESTROY(res)	PG_results	res	CODE:		/* printf("DESTROY result\n"); */		PQclear(res->result);		Safefree(res);ExecStatusTypePQresultStatus(res)	PG_results	res	CODE:		RETVAL = PQresultStatus(res->result);	OUTPUT:		RETVALintPQntuples(res)	PG_results	res	CODE:		RETVAL = PQntuples(res->result);	OUTPUT:		RETVALintPQnfields(res)	PG_results	res	CODE:		RETVAL = PQnfields(res->result);	OUTPUT:		RETVALintPQbinaryTuples(res)	PG_results	res	CODE:		RETVAL = PQbinaryTuples(res->result);	OUTPUT:		RETVALchar *PQfname(res, field_num)	PG_results	res	int	field_num	CODE:		RETVAL = PQfname(res->result, field_num);	OUTPUT:		RETVALintPQfnumber(res, field_name)	PG_results	res	char *	field_name	CODE:		RETVAL = PQfnumber(res->result, field_name);	OUTPUT:		RETVALOidPQftype(res, field_num)	PG_results	res	int	field_num	CODE:		RETVAL = PQftype(res->result, field_num);	OUTPUT:		RETVALshortPQfsize(res, field_num)	PG_results	res	int	field_num	CODE:		RETVAL = PQfsize(res->result, field_num);	OUTPUT:		RETVALintPQfmod(res, field_num)	PG_results	res	int	field_num	CODE:		RETVAL = PQfmod(res->result, field_num);	OUTPUT:		RETVALchar *PQcmdStatus(res)	PG_results	res	CODE:		RETVAL = PQcmdStatus(res->result);	OUTPUT:		RETVALchar *PQoidStatus(res)	PG_results	res	CODE:		RETVAL = (char *)PQoidStatus(res->result);	OUTPUT:		RETVALchar *PQcmdTuples(res)	PG_results	res	CODE:		RETVAL = (char *)PQcmdTuples(res->result);	OUTPUT:		RETVALchar *PQgetvalue(res, tup_num, field_num)	PG_results	res	int	tup_num	int	field_num	CODE:		RETVAL = PQgetvalue(res->result, tup_num, field_num);	OUTPUT:		RETVALintPQgetlength(res, tup_num, field_num)	PG_results	res	int	tup_num	int	field_num	CODE:		RETVAL = PQgetlength(res->result, tup_num, field_num);	OUTPUT:		RETVALintPQgetisnull(res, tup_num, field_num)	PG_results	res	int	tup_num	int	field_num	CODE:		RETVAL = PQgetisnull(res->result, tup_num, field_num);	OUTPUT:		RETVALvoidPQfetchrow(res)	PG_results	res	PPCODE:		if (res && res->result) {			int cols = PQnfields(res->result);			if (PQntuples(res->result) > res->row) {				int col = 0;				EXTEND(sp, cols);				while (col < cols) {					if (PQgetisnull(res->result, res->row, col)) {						PUSHs(&sv_undef);					} else {						char *val = PQgetvalue(res->result, res->row, col);						PUSHs(sv_2mortal((SV*)newSVpv(val, 0)));					}					++col;				}				++res->row;			}		}voidPQprint(res, fout, header, align, standard, html3, expanded, pager, fieldSep, tableOpt, caption, ...)	FILE *	fout	PG_results	res	pqbool	header	pqbool	align	pqbool	standard	pqbool	html3	pqbool	expanded	pqbool	pager	char *	fieldSep	char *	tableOpt	char *	caption	PREINIT:		PQprintOpt ps;		int i;	CODE:		ps.header    = header;		ps.align     = align;		ps.standard  = standard;		ps.html3     = html3;		ps.expanded  = expanded;		ps.pager     = pager;		ps.fieldSep  = fieldSep;		ps.tableOpt  = tableOpt;		ps.caption   = caption;		Newz(0, ps.fieldName, items + 1 - 11, char*);		for (i = 11; i < items; i++) {			ps.fieldName[i - 11] = (char *)SvPV(ST(i), na);		}		PQprint(fout, res->result, &ps);		Safefree(ps.fieldName);voidPQdisplayTuples(res, fp, fillAlign, fieldSep, printHeader, quiet)	PG_results	res	FILE *	fp	int	fillAlign	char *	fieldSep	int	printHeader	int	quiet	CODE:		PQdisplayTuples(res->result, fp, fillAlign, (const char *)fieldSep, printHeader, quiet);voidPQprintTuples(res, fout, printAttName, terseOutput, width)	PG_results	res	FILE *	fout	int	printAttName	int	terseOutput	int	width	CODE:		PQprintTuples(res->result, fout, printAttName, terseOutput, width);

⌨️ 快捷键说明

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