PostgreSQL Source Code: src/include/foreign/foreign.h File Reference (original) (raw)

Go to the source code of this file.

Data Structures
struct ForeignDataWrapper
struct ForeignServer
struct UserMapping
struct ForeignTable
Macros
#define MappingUserName(userid) (OidIsValid(userid) ? GetUserNameFromId(userid, false) : "public")
#define FSV_MISSING_OK 0x01
#define FDW_MISSING_OK 0x01
Typedefs
typedef struct ForeignDataWrapper ForeignDataWrapper
typedef struct ForeignServer ForeignServer
typedef struct UserMapping UserMapping
typedef struct ForeignTable ForeignTable
Functions
ForeignServer * GetForeignServer (Oid serverid)
ForeignServer * GetForeignServerExtended (Oid serverid, bits16 flags)
ForeignServer * GetForeignServerByName (const char *srvname, bool missing_ok)
UserMapping * GetUserMapping (Oid userid, Oid serverid)
ForeignDataWrapper * GetForeignDataWrapper (Oid fdwid)
ForeignDataWrapper * GetForeignDataWrapperExtended (Oid fdwid, bits16 flags)
ForeignDataWrapper * GetForeignDataWrapperByName (const char *fdwname, bool missing_ok)
ForeignTable * GetForeignTable (Oid relid)
List * GetForeignColumnOptions (Oid relid, AttrNumber attnum)
Oid get_foreign_data_wrapper_oid (const char *fdwname, bool missing_ok)
Oid get_foreign_server_oid (const char *servername, bool missing_ok)

FDW_MISSING_OK

#define FDW_MISSING_OK 0x01

FSV_MISSING_OK

#define FSV_MISSING_OK 0x01

MappingUserName

ForeignDataWrapper

ForeignServer

ForeignTable

UserMapping

get_foreign_data_wrapper_oid()

Oid get_foreign_data_wrapper_oid ( const char * fdwname,
bool missing_ok
)

Definition at line 682 of file foreign.c.

683{

685

687 Anum_pg_foreign_data_wrapper_oid,

691 (errcode(ERRCODE_UNDEFINED_OBJECT),

692 errmsg("foreign-data wrapper \"%s\" does not exist",

693 fdwname)));

694 return oid;

695}

#define OidIsValid(objectId)

int errcode(int sqlerrcode)

int errmsg(const char *fmt,...)

#define ereport(elevel,...)

static Datum CStringGetDatum(const char *X)

#define GetSysCacheOid1(cacheId, oidcol, key1)

References CStringGetDatum(), ereport, errcode(), errmsg(), ERROR, GetSysCacheOid1, and OidIsValid.

Referenced by convert_foreign_data_wrapper_name(), get_object_address_unqualified(), and GetForeignDataWrapperByName().

get_foreign_server_oid()

Oid get_foreign_server_oid ( const char * servername,
bool missing_ok
)

Definition at line 705 of file foreign.c.

706{

708

709 oid = GetSysCacheOid1(FOREIGNSERVERNAME, Anum_pg_foreign_server_oid,

713 (errcode(ERRCODE_UNDEFINED_OBJECT),

714 errmsg("server \"%s\" does not exist", servername)));

715 return oid;

716}

References CStringGetDatum(), ereport, errcode(), errmsg(), ERROR, GetSysCacheOid1, and OidIsValid.

Referenced by convert_server_name(), CreateForeignServer(), get_object_address_unqualified(), and GetForeignServerByName().

GetForeignColumnOptions()

Definition at line 293 of file foreign.c.

294{

298 bool isnull;

299

304 elog(ERROR, "cache lookup failed for attribute %d of relation %u",

307 tp,

308 Anum_pg_attribute_attfdwoptions,

309 &isnull);

310 if (isnull)

312 else

314

316

318}

#define HeapTupleIsValid(tuple)

static Datum Int16GetDatum(int16 X)

static Datum ObjectIdGetDatum(Oid X)

List * untransformRelOptions(Datum options)

void ReleaseSysCache(HeapTuple tuple)

Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)

HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)

References attnum, elog, ERROR, HeapTupleIsValid, Int16GetDatum(), NIL, ObjectIdGetDatum(), options, ReleaseSysCache(), SearchSysCache2(), SysCacheGetAttr(), and untransformRelOptions().

Referenced by deparseAnalyzeSql(), deparseColumnRef(), and get_file_fdw_attribute_options().

GetForeignDataWrapper()

Definition at line 38 of file foreign.c.

39{

41}

ForeignDataWrapper * GetForeignDataWrapperExtended(Oid fdwid, bits16 flags)

References GetForeignDataWrapperExtended().

Referenced by AlterForeignServer(), AlterForeignServerOwner_internal(), AlterUserMapping(), ATExecAlterColumnGenericOptions(), ATExecGenericOptions(), CreateForeignTable(), CreateUserMapping(), fileGetOptions(), get_connect_string(), GetForeignDataWrapperByName(), and ImportForeignSchema().

GetForeignDataWrapperByName()

ForeignDataWrapper * GetForeignDataWrapperByName ( const char * fdwname,
bool missing_ok
)

GetForeignDataWrapperExtended()

Definition at line 50 of file foreign.c.

51{

56 bool isnull;

57

59

61 {

63 elog(ERROR, "cache lookup failed for foreign-data wrapper %u", fdwid);

64 return NULL;

65 }

66

68

70 fdw->fdwid = fdwid;

71 fdw->owner = fdwform->fdwowner;

73 fdw->fdwhandler = fdwform->fdwhandler;

75

76

78 tp,

79 Anum_pg_foreign_data_wrapper_fdwoptions,

80 &isnull);

81 if (isnull)

83 else

85

87

88 return fdw;

89}

static void * GETSTRUCT(const HeapTupleData *tuple)

char * pstrdup(const char *in)

FormData_pg_foreign_data_wrapper * Form_pg_foreign_data_wrapper

HeapTuple SearchSysCache1(int cacheId, Datum key1)

References elog, ERROR, FDW_MISSING_OK, ForeignDataWrapper::fdwhandler, ForeignDataWrapper::fdwid, ForeignDataWrapper::fdwname, ForeignDataWrapper::fdwvalidator, GETSTRUCT(), HeapTupleIsValid, NameStr, NIL, ObjectIdGetDatum(), ForeignDataWrapper::options, ForeignDataWrapper::owner, palloc(), pstrdup(), ReleaseSysCache(), SearchSysCache1(), SysCacheGetAttr(), and untransformRelOptions().

Referenced by GetForeignDataWrapper(), getObjectDescription(), and getObjectIdentityParts().

GetForeignServer()

Definition at line 112 of file foreign.c.

113{

115}

ForeignServer * GetForeignServerExtended(Oid serverid, bits16 flags)

References GetForeignServerExtended().

Referenced by ATExecAlterColumnGenericOptions(), ATExecGenericOptions(), fileGetOptions(), get_batch_size_option(), GetForeignServerByName(), getObjectDescription(), getObjectIdentityParts(), GetUserMapping(), make_new_connection(), pgfdw_reject_incomplete_xact_state_change(), postgresAcquireSampleRowsFunc(), postgresExecForeignTruncate(), postgresGetForeignRelSize(), postgresImportForeignSchema(), and postgresIsForeignRelUpdatable().

GetForeignServerByName()

ForeignServer * GetForeignServerByName ( const char * srvname,
bool missing_ok
)

Definition at line 183 of file foreign.c.

184{

186

188 return NULL;

189

191}

Oid get_foreign_server_oid(const char *servername, bool missing_ok)

ForeignServer * GetForeignServer(Oid serverid)

References get_foreign_server_oid(), GetForeignServer(), and OidIsValid.

Referenced by AlterUserMapping(), CreateForeignTable(), CreateUserMapping(), get_connect_string(), get_object_address_usermapping(), ImportForeignSchema(), postgres_fdw_disconnect(), and RemoveUserMapping().

GetForeignServerExtended()

Definition at line 124 of file foreign.c.

125{

130 bool isnull;

131

133

135 {

137 elog(ERROR, "cache lookup failed for foreign server %u", serverid);

138 return NULL;

139 }

140

142

146 server->owner = serverform->srvowner;

147 server->fdwid = serverform->srvfdw;

148

149

151 tp,

152 Anum_pg_foreign_server_srvtype,

153 &isnull);

155

156

158 tp,

159 Anum_pg_foreign_server_srvversion,

160 &isnull);

162

163

165 tp,

166 Anum_pg_foreign_server_srvoptions,

167 &isnull);

168 if (isnull)

170 else

172

174

175 return server;

176}

#define TextDatumGetCString(d)

FormData_pg_foreign_server * Form_pg_foreign_server

References elog, ERROR, ForeignServer::fdwid, FSV_MISSING_OK, GETSTRUCT(), HeapTupleIsValid, NameStr, NIL, ObjectIdGetDatum(), ForeignServer::options, ForeignServer::owner, palloc(), pstrdup(), ReleaseSysCache(), SearchSysCache1(), ForeignServer::serverid, ForeignServer::servername, ForeignServer::servertype, ForeignServer::serverversion, SysCacheGetAttr(), TextDatumGetCString, and untransformRelOptions().

Referenced by disconnect_cached_connections(), GetForeignServer(), getObjectDescription(), getObjectIdentityParts(), and postgres_fdw_get_connections_internal().

GetForeignTable()

Definition at line 255 of file foreign.c.

256{

261 bool isnull;

262

265 elog(ERROR, "cache lookup failed for foreign table %u", relid);

267

269 ft->relid = relid;

270 ft->serverid = tableform->ftserver;

271

272

274 tp,

275 Anum_pg_foreign_table_ftoptions,

276 &isnull);

277 if (isnull)

279 else

281

283

284 return ft;

285}

FormData_pg_foreign_table * Form_pg_foreign_table

References elog, ERROR, GETSTRUCT(), HeapTupleIsValid, NIL, ObjectIdGetDatum(), ForeignTable::options, palloc(), ReleaseSysCache(), ForeignTable::relid, SearchSysCache1(), ForeignTable::serverid, SysCacheGetAttr(), and untransformRelOptions().

Referenced by check_selective_binary_conversion(), create_foreign_modify(), deparseRelation(), fileGetOptions(), get_batch_size_option(), postgresAcquireSampleRowsFunc(), postgresAnalyzeForeignTable(), postgresBeginDirectModify(), postgresBeginForeignScan(), postgresExecForeignTruncate(), postgresGetAnalyzeInfoForForeignTable(), postgresGetForeignRelSize(), and postgresIsForeignRelUpdatable().

GetUserMapping()

Definition at line 201 of file foreign.c.

202{

205 bool isnull;

207

211

213 {

214

218 }

219

221 {

223

225 (errcode(ERRCODE_UNDEFINED_OBJECT),

226 errmsg("user mapping not found for user \"%s\", server \"%s\"",

228 }

229

234

235

237 tp,

238 Anum_pg_user_mapping_umoptions,

239 &isnull);

240 if (isnull)

242 else

244

246

247 return um;

248}

#define MappingUserName(userid)

FormData_pg_user_mapping * Form_pg_user_mapping

References ereport, errcode(), errmsg(), ERROR, GetForeignServer(), GETSTRUCT(), HeapTupleIsValid, InvalidOid, MappingUserName, NIL, ObjectIdGetDatum(), UserMapping::options, palloc(), ReleaseSysCache(), SearchSysCache2(), UserMapping::serverid, ForeignServer::servername, SysCacheGetAttr(), UserMapping::umid, untransformRelOptions(), and UserMapping::userid.

Referenced by create_foreign_modify(), get_connect_string(), postgresAcquireSampleRowsFunc(), postgresAnalyzeForeignTable(), postgresBeginDirectModify(), postgresBeginForeignScan(), postgresExecForeignTruncate(), postgresGetAnalyzeInfoForForeignTable(), postgresGetForeignRelSize(), and postgresImportForeignSchema().