This file is indexed.

/usr/include/postgres-xc/server/gtm/libpq-int.h is in postgres-xc-server-dev 1.1-2ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*-------------------------------------------------------------------------
 *
 * libpq-int.h
 *	  This file contains internal definitions meant to be used only by
 *	  the frontend libpq library, not by applications that call it.
 *
 *	  An application can include this file if it wants to bypass the
 *	  official API defined by libpq-fe.h, but code that does so is much
 *	  more likely to break across PostgreSQL releases than code that uses
 *	  only the official API.
 *
 * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 * Portions Copyright (c) 2010-2012 Postgres-XC Development Group
 *
 * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-int.h,v 1.139 2009/01/01 17:24:03 momjian Exp $
 *
 *-------------------------------------------------------------------------
 */

#ifndef LIBPQ_INT_H
#define LIBPQ_INT_H

#include <time.h>
#include <sys/types.h>
#include <sys/time.h>
#include "gtm/pqcomm.h"
#include "gtm/pqexpbuffer.h"
#include "gtm/gtm_client.h"
#include "gtm/gtm_c.h"

/*
 * GTM_Conn stores all the state data associated with a single connection
 * to a backend.
 */
struct gtm_conn
{
	/* Saved values of connection options */
	char		*pghost;			/* the machine on which the server is running */
	char		*pghostaddr;		/* the IPv4 address of the machine on which
									 * the server is running, in IPv4
									 * numbers-and-dots notation. Takes precedence
									 * over above. */
	char		*pgport;			/* the server's communication port */
	char		*connect_timeout;	/* connection timeout (numeric string) */
	char		*gc_node_name;		/* PGXC Node Name */
	int			remote_type;		/* is this a connection to/from a proxy ? */
	int			is_postmaster;		/* is this connection to/from a postmaster instance */

	/* Optional file to write trace info to */
	FILE		*Pfdebug;

	/* Status indicators */
	ConnStatusType	status;

	/* Connection data */
	int			sock;			/* Unix FD for socket, -1 if not connected */
	SockAddr	laddr;			/* Local address */
	SockAddr	raddr;			/* Remote address */

	/* Error info for GTM communication */
	GTM_PortLastCall	last_call;	/* Last syscall to this sock. */
	int					last_errno;	/* Last errno.  zero if the last call succeeds. */

	/* Transient state needed while establishing connection */
	struct addrinfo	*addrlist;	/* list of possible backend addresses */
	struct addrinfo	*addr_cur;	/* the one currently being tried */
	int		addrlist_family;	/* needed to know how to free addrlist */

	/* Buffer for data received from backend and not yet processed */
	char	*inBuffer;		/* currently allocated buffer */
	int		inBufSize;		/* allocated size of buffer */
	int		inStart;		/* offset to first unconsumed data in buffer */
	int		inCursor;		/* next byte to tentatively consume */
	int		inEnd;			/* offset to first position after avail data */

	/* Buffer for data not yet sent to backend */
	char	*outBuffer;		/* currently allocated buffer */
	int		outBufSize;		/* allocated size of buffer */
	int		outCount;		/* number of chars waiting in buffer */

	/* State for constructing messages in outBuffer */
	int		outMsgStart;	/* offset to msg start (length word); if -1,
							 * msg has no length word */
	int		outMsgEnd;		/* offset to msg end (so far) */

	/* Buffer for current error message */
	PQExpBufferData	errorMessage;		/* expansible string */

	/* Buffer for receiving various parts of messages */
	PQExpBufferData	workBuffer; /* expansible string */

	/* Pointer to the result of last operation */
	GTM_Result	*result;
};

/* === in fe-misc.c === */

 /*
  * "Get" and "Put" routines return 0 if successful, EOF if not. Note that for
  * Get, EOF merely means the buffer is exhausted, not that there is
  * necessarily any error.
  */
extern int	gtmpqCheckOutBufferSpace(size_t bytes_needed, GTM_Conn *conn);
extern int	gtmpqCheckInBufferSpace(size_t bytes_needed, GTM_Conn *conn);
extern int	gtmpqGetc(char *result, GTM_Conn *conn);
extern int	gtmpqPutc(char c, GTM_Conn *conn);
extern int	gtmpqGets(PQExpBuffer buf, GTM_Conn *conn);
extern int	gtmpqGets_append(PQExpBuffer buf, GTM_Conn *conn);
extern int	gtmpqPuts(const char *s, GTM_Conn *conn);
extern int	gtmpqGetnchar(char *s, size_t len, GTM_Conn *conn);
extern int	gtmpqPutnchar(const char *s, size_t len, GTM_Conn *conn);
extern int	gtmpqGetInt(int *result, size_t bytes, GTM_Conn *conn);
extern int	gtmpqPutInt(int value, size_t bytes, GTM_Conn *conn);
extern int	gtmpqPutMsgStart(char msg_type, bool force_len, GTM_Conn *conn);
extern int	gtmpqPutMsgEnd(GTM_Conn *conn);
extern int	gtmpqReadData(GTM_Conn *conn);
extern int	gtmpqFlush(GTM_Conn *conn);
extern int	gtmpqWait(int forRead, int forWrite, GTM_Conn *conn);
extern int	gtmpqWaitTimed(int forRead, int forWrite, GTM_Conn *conn,
			time_t finish_time);
extern int	gtmpqReadReady(GTM_Conn *conn);
extern int	gtmpqWriteReady(GTM_Conn *conn);

/*
 * In fe-protocol.c
 */
GTM_Result * GTMPQgetResult(GTM_Conn *conn);
extern int gtmpqGetError(GTM_Conn *conn, GTM_Result *result);
void gtmpqFreeResultData(GTM_Result *result, GTM_PGXCNodeType remote_type);

#define SOCK_ERRNO errno
#define SOCK_ERRNO_SET(e) (errno = (e))

#endif   /* LIBPQ_INT_H */