blob: eeef4406d70e22a16f85a933bc19c3c84cb1c150 [file] [log] [blame]
%{
/*
WARNING: DO NOT MODIFY THIS FILE:
Generated by /Users/yjin/hawq_main/src/include/catalog/calico.pl version 55
on Mon Aug 24 22:07:54 2015
ARGV: \-meta\ \/Users\/yjin\/hawq_main\/gpMgmt\/bin\/gppylib\/data\/2\.0\.json\ \-uniqdef\ uniqdef\.json\ \-basedef\ basedef\.json\ \-gperf\ gperf\.init\ \-infiles\ caql\.files
*/
/*-------------------------------------------------------------------------
*
* catquery.c
* general catalog table access methods (internal api)
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include <math.h>
#include <fcntl.h>
#include <locale.h>
#include <string.h>
#include <unistd.h>
#include "access/genam.h"
#include "access/heapam.h"
#include "access/relscan.h"
#include "access/transam.h"
#include "catalog/caqlparse.h"
#include "catalog/catalog.h"
#include "catalog/catquery.h"
#include "catalog/indexing.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_amop.h"
#include "catalog/pg_amproc.h"
#include "catalog/pg_appendonly_alter_column.h"
#include "catalog/pg_attrdef.h"
#include "catalog/pg_auth_members.h"
#include "catalog/pg_authid.h"
#include "catalog/pg_autovacuum.h"
#include "catalog/pg_cast.h"
#include "catalog/pg_class.h"
#include "catalog/pg_constraint.h"
#include "catalog/pg_conversion.h"
#include "catalog/pg_database.h"
#include "catalog/pg_depend.h"
#include "catalog/pg_description.h"
#include "catalog/pg_extprotocol.h"
#include "catalog/pg_exttable.h"
#include "catalog/pg_filespace.h"
#include "catalog/pg_filespace_entry.h"
#include "catalog/pg_inherits.h"
#include "catalog/pg_language.h"
#include "catalog/pg_largeobject.h"
#include "catalog/pg_listener.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_opclass.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_partition.h"
#include "catalog/pg_partition_rule.h"
#include "catalog/pg_pltemplate.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_resqueue.h"
#include "catalog/pg_rewrite.h"
#include "catalog/pg_shdepend.h"
#include "catalog/pg_shdescription.h"
#include "catalog/pg_statistic.h"
#include "catalog/pg_tablespace.h"
#include "catalog/pg_trigger.h"
#include "catalog/pg_user_mapping.h"
#include "catalog/pg_window.h"
#include "catalog/pg_tidycat.h"
#include "catalog/gp_configuration.h"
#include "catalog/gp_configuration.h"
#include "catalog/gp_segment_config.h"
#include "catalog/gp_san_config.h"
#include "catalog/gp_fastsequence.h"
#include "catalog/gp_master_mirroring.h"
#include "catalog/gp_persistent.h"
#include "catalog/gp_global_sequence.h"
#include "catalog/gp_version.h"
#include "catalog/toasting.h"
#include "catalog/gp_policy.h"
#include "miscadmin.h"
#include "storage/fd.h"
#include "utils/fmgroids.h"
#include "utils/relcache.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/inval.h"
#include "cdb/cdbpersistenttablespace.h"
#include "cdb/cdbvars.h"
/* ----------------------------------------------------------------
* cq_lookup()
* cq_lookup() defines a hash cookie for every cql() declaration. The
* cookie associates the caql string with a "base query" function
* [caql_basic_fn_#()] that constructs the scan for the query.
* caql_switch() dispatches on the cookie to the base query function.
* ----------------------------------------------------------------
*/
#ifdef NOT_USED
%}
struct caql_hash_cookie
{
const char *name; /* caql string */
int uniqquery_code; /* corresponding unique query */
int basequery_code; /* corresponding base query */
int bDelete; /* query performs DELETE */
int bCount; /* SELECT COUNT(*) (or DELETE) */
int bUpdate; /* SELECT ... FOR UPDATE */
int bInsert; /* INSERT INTO */
AttrNumber attnum; /* column number (or 0 if no column specified) */
};
%%
"SELECT 1", 1, 1, 0, 0, 0, 0, foo
%%
#endif /* NOT_USED */
/* NOTE: caql_iud_switch locking removed */
#define caql_iud_switch(pctx, isiud, oldtup, newtup, dontWait)
bool
is_builtin_object(cqContext *pCtx, HeapTuple tuple)
{
Oid result = InvalidOid;
if (!HeapTupleIsValid(tuple))
return true;
if (tuple->t_data->t_infomask & HEAP_HASOID)
result = HeapTupleGetOid(tuple);
else
{
switch(pCtx->cq_relationId)
{
case GpPolicyRelationId:
result = (Oid) ((FormData_gp_policy *) GETSTRUCT(tuple))->localoid;
break;
case FastSequenceRelationId:
result = (Oid) ((Form_gp_fastsequence) GETSTRUCT(tuple))->objid;
break;
case AggregateRelationId:
result = (Oid) ((Form_pg_aggregate) GETSTRUCT(tuple))->aggfnoid;
break;
case AccessMethodOperatorRelationId:
result = (Oid) ((Form_pg_amop) GETSTRUCT(tuple))->amopclaid;
break;
case AccessMethodProcedureRelationId:
result = (Oid) ((Form_pg_amproc) GETSTRUCT(tuple))->amopclaid;
break;
case AppendOnlyRelationId:
result = (Oid) ((Form_pg_appendonly) GETSTRUCT(tuple))->relid;
break;
case AttrDefaultRelationId:
result = (Oid) ((Form_pg_attrdef) GETSTRUCT(tuple))->adrelid;
break;
case AttributeRelationId:
result = (Oid) ((Form_pg_attribute) GETSTRUCT(tuple))->attrelid;
break;
case AttributeEncodingRelationId:
result = (Oid) ((Form_pg_attribute_encoding) GETSTRUCT(tuple))->attrelid;
break;
case AuthMemRelationId:
result = (Oid) ((Form_pg_auth_members) GETSTRUCT(tuple))->roleid;
break;
case AuthTimeConstraintRelationId:
result = (Oid) ((Form_pg_auth_time_constraint) GETSTRUCT(tuple))->authid;
break;
case DependRelationId:
result = (Oid) ((Form_pg_depend) GETSTRUCT(tuple))->objid;
break;
case DescriptionRelationId:
result = (Oid) ((Form_pg_description) GETSTRUCT(tuple))->objoid;
break;
case ExtTableRelationId:
result = (Oid) ((Form_pg_exttable) GETSTRUCT(tuple))->reloid;
break;
case FileSpaceEntryRelationId:
result = (Oid) ((Form_pg_filespace_entry) GETSTRUCT(tuple))->fsefsoid;
break;
case IndexRelationId:
result = (Oid) ((Form_pg_index) GETSTRUCT(tuple))->indexrelid;
break;
case InheritsRelationId:
result = (Oid) ((Form_pg_inherits) GETSTRUCT(tuple))->inhrelid;
break;
case PartitionEncodingRelationId:
result = (Oid) ((Form_pg_partition_encoding) GETSTRUCT(tuple))->parencoid;
break;
case PLTemplateRelationId:
{
char *name_str = pstrdup(NameStr(((Form_pg_pltemplate) GETSTRUCT(tuple))->tmplname));
if ((strcmp(name_str, "plpgsql") != 0) ||
(strcmp(name_str, "c") != 0) ||
(strcmp(name_str, "sql") != 0) ||
(strcmp(name_str, "internal") != 0))
result = InvalidOid;
break;
}
case TriggerRelationId:
result = (Oid) ((Form_pg_trigger) GETSTRUCT(tuple))->tgrelid;
break;
case RewriteRelationId:
result = (Oid) ((Form_pg_rewrite) GETSTRUCT(tuple))->ev_class;
break;
case ProcCallbackRelationId:
result = (Oid) ((Form_pg_proc_callback) GETSTRUCT(tuple))->profnoid;
break;
case SharedDependRelationId:
result = (Oid) ((Form_pg_shdepend) GETSTRUCT(tuple))->objid;
break;
case SharedDescriptionRelationId:
result = (Oid) ((Form_pg_shdescription) GETSTRUCT(tuple))->objoid;
break;
case StatLastOpRelationId:
result = (Oid) ((Form_pg_statlastop) GETSTRUCT(tuple))->objid;
break;
case StatLastShOpRelationId:
result = (Oid) ((Form_pg_statlastshop) GETSTRUCT(tuple))->objid;
break;
case StatisticRelationId:
result = (Oid) ((Form_pg_statistic) GETSTRUCT(tuple))->starelid;
break;
case TypeEncodingRelationId:
result = (Oid) ((Form_pg_type_encoding) GETSTRUCT(tuple))->typid;
break;
case WindowRelationId:
result = (Oid) ((Form_pg_window) GETSTRUCT(tuple))->winfnoid;
break;
default:
return false;
}
}
if (result > FirstNormalObjectId)
return false;
return true;
}
/* XXX XXX: temp fix for gp_distro reference in getoid_plus */
typedef FormData_gp_policy *Form_gp_distribution_policy;
/* ----------------------------------------------------------------
* caql_getoid_plus()
* Return an oid column from the first tuple and end the scan.
* Note: this works for regproc columns as well, but you should cast
* the output as RegProcedure.
* ----------------------------------------------------------------
*/
Oid caql_getoid_plus(cqContext *pCtx0, int *pFetchcount,
bool *pbIsNull, cq_list *pcql)
{
const char* caql_str = pcql->caqlStr;
const char* filenam = pcql->filename;
int lineno = pcql->lineno;
struct caql_hash_cookie *pchn = cq_lookup(caql_str, strlen(caql_str), pcql);
cqContext *pCtx;
cqContext cqc;
HeapTuple tuple;
Relation rel;
Oid result = InvalidOid;
if (NULL == pchn)
elog(ERROR, "invalid caql string: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
Assert(!pchn->bInsert); /* INSERT not allowed */
/* use the provided context, or provide a clean local ctx */
if (pCtx0)
pCtx = pCtx0;
else
pCtx = cqclr(&cqc);
pCtx = caql_switch(pchn, pCtx, pcql);
/* NOTE: caql_switch frees the pcql */
rel = pCtx->cq_heap_rel;
if (pFetchcount) *pFetchcount = 0;
if (pbIsNull) *pbIsNull = true;
/* use the SysCache */
if (pCtx->cq_usesyscache)
{
tuple = SearchSysCacheKeyArray(pCtx->cq_cacheId,
pCtx->cq_NumKeys,
pCtx->cq_cacheKeys);
}
else
{
tuple = systable_getnext(pCtx->cq_sysScan);
}
disable_catalog_check(pCtx, tuple);
if (HeapTupleIsValid(tuple))
{
if (pFetchcount) *pFetchcount = 1;
/* if attnum not set, (InvalidAttrNumber == 0)
* use tuple oid, else extract oid from column
* (includes ObjectIdAttributeNumber == -2)
*/
if (pchn->attnum <= InvalidAttrNumber)
{
if (pbIsNull) *pbIsNull = false;
result = HeapTupleGetOid(tuple);
}
else /* find oid column */
{
switch(pCtx->cq_relationId)
{
case GpPolicyRelationId: /* gp_distribution_policy */
{
switch(pchn->attnum)
{
case 1: /* localoid */
result = (Oid)
((Form_gp_distribution_policy)
GETSTRUCT(tuple))->localoid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end gp_distribution_policy */
break;
case FastSequenceRelationId: /* gp_fastsequence */
{
switch(pchn->attnum)
{
case 1: /* objid */
result = (Oid)
((Form_gp_fastsequence)
GETSTRUCT(tuple))->objid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end gp_fastsequence */
break;
case AggregateRelationId: /* pg_aggregate */
{
switch(pchn->attnum)
{
case 1: /* aggfnoid */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->aggfnoid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* aggtransfn */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->aggtransfn;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* agginvtransfn */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->agginvtransfn;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* aggprelimfn */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->aggprelimfn;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* agginvprelimfn */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->agginvprelimfn;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* aggfinalfn */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->aggfinalfn;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* aggsortop */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->aggsortop;
if (pbIsNull) *pbIsNull = false;
break;
case 8: /* aggtranstype */
result = (Oid)
((Form_pg_aggregate)
GETSTRUCT(tuple))->aggtranstype;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_aggregate */
break;
case AccessMethodRelationId: /* pg_am */
{
switch(pchn->attnum)
{
case 12: /* aminsert */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->aminsert;
if (pbIsNull) *pbIsNull = false;
break;
case 13: /* ambeginscan */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->ambeginscan;
if (pbIsNull) *pbIsNull = false;
break;
case 14: /* amgettuple */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amgettuple;
if (pbIsNull) *pbIsNull = false;
break;
case 15: /* amgetmulti */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amgetmulti;
if (pbIsNull) *pbIsNull = false;
break;
case 16: /* amrescan */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amrescan;
if (pbIsNull) *pbIsNull = false;
break;
case 17: /* amendscan */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amendscan;
if (pbIsNull) *pbIsNull = false;
break;
case 18: /* ammarkpos */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->ammarkpos;
if (pbIsNull) *pbIsNull = false;
break;
case 19: /* amrestrpos */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amrestrpos;
if (pbIsNull) *pbIsNull = false;
break;
case 20: /* ambuild */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->ambuild;
if (pbIsNull) *pbIsNull = false;
break;
case 21: /* ambulkdelete */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->ambulkdelete;
if (pbIsNull) *pbIsNull = false;
break;
case 22: /* amvacuumcleanup */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amvacuumcleanup;
if (pbIsNull) *pbIsNull = false;
break;
case 23: /* amcostestimate */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amcostestimate;
if (pbIsNull) *pbIsNull = false;
break;
case 24: /* amoptions */
result = (Oid)
((Form_pg_am)
GETSTRUCT(tuple))->amoptions;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_am */
break;
case AccessMethodOperatorRelationId: /* pg_amop */
{
switch(pchn->attnum)
{
case 1: /* amopclaid */
result = (Oid)
((Form_pg_amop)
GETSTRUCT(tuple))->amopclaid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* amopsubtype */
result = (Oid)
((Form_pg_amop)
GETSTRUCT(tuple))->amopsubtype;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* amopopr */
result = (Oid)
((Form_pg_amop)
GETSTRUCT(tuple))->amopopr;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_amop */
break;
case AccessMethodProcedureRelationId: /* pg_amproc */
{
switch(pchn->attnum)
{
case 1: /* amopclaid */
result = (Oid)
((Form_pg_amproc)
GETSTRUCT(tuple))->amopclaid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* amprocsubtype */
result = (Oid)
((Form_pg_amproc)
GETSTRUCT(tuple))->amprocsubtype;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* amproc */
result = (Oid)
((Form_pg_amproc)
GETSTRUCT(tuple))->amproc;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_amproc */
break;
case AppendOnlyRelationId: /* pg_appendonly */
{
switch(pchn->attnum)
{
case 1: /* relid */
result = (Oid)
((Form_pg_appendonly)
GETSTRUCT(tuple))->relid;
if (pbIsNull) *pbIsNull = false;
break;
case 10: /* segrelid */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 10, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 11: /* segidxid */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 11, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 12: /* blkdirrelid */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 12, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 13: /* blkdiridxid */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 13, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_appendonly */
break;
case AttrDefaultRelationId: /* pg_attrdef */
{
switch(pchn->attnum)
{
case 1: /* adrelid */
result = (Oid)
((Form_pg_attrdef)
GETSTRUCT(tuple))->adrelid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_attrdef */
break;
case AttributeRelationId: /* pg_attribute */
{
switch(pchn->attnum)
{
case 1: /* attrelid */
result = (Oid)
((Form_pg_attribute)
GETSTRUCT(tuple))->attrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* atttypid */
result = (Oid)
((Form_pg_attribute)
GETSTRUCT(tuple))->atttypid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_attribute */
break;
case AttributeEncodingRelationId: /* pg_attribute_encoding */
{
switch(pchn->attnum)
{
case 1: /* attrelid */
result = (Oid)
((Form_pg_attribute_encoding)
GETSTRUCT(tuple))->attrelid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_attribute_encoding */
break;
case AuthMemRelationId: /* pg_auth_members */
{
switch(pchn->attnum)
{
case 1: /* roleid */
result = (Oid)
((Form_pg_auth_members)
GETSTRUCT(tuple))->roleid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* member */
result = (Oid)
((Form_pg_auth_members)
GETSTRUCT(tuple))->member;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* grantor */
result = (Oid)
((Form_pg_auth_members)
GETSTRUCT(tuple))->grantor;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_auth_members */
break;
case AuthTimeConstraintRelationId: /* pg_auth_time_constraint */
{
switch(pchn->attnum)
{
case 1: /* authid */
result = (Oid)
((Form_pg_auth_time_constraint)
GETSTRUCT(tuple))->authid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_auth_time_constraint */
break;
case AuthIdRelationId: /* pg_authid */
{
switch(pchn->attnum)
{
case 12: /* rolresqueue */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 12, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_authid */
break;
case CastRelationId: /* pg_cast */
{
switch(pchn->attnum)
{
case 1: /* castsource */
result = (Oid)
((Form_pg_cast)
GETSTRUCT(tuple))->castsource;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* casttarget */
result = (Oid)
((Form_pg_cast)
GETSTRUCT(tuple))->casttarget;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* castfunc */
result = (Oid)
((Form_pg_cast)
GETSTRUCT(tuple))->castfunc;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_cast */
break;
case RelationRelationId: /* pg_class */
{
switch(pchn->attnum)
{
case 2: /* relnamespace */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->relnamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* reltype */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->reltype;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* relowner */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->relowner;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* relam */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->relam;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* relfilenode */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->relfilenode;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* reltablespace */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->reltablespace;
if (pbIsNull) *pbIsNull = false;
break;
case 10: /* reltoastrelid */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->reltoastrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 11: /* reltoastidxid */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->reltoastidxid;
if (pbIsNull) *pbIsNull = false;
break;
case 12: /* relaosegrelid */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->relaosegrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 13: /* relaosegidxid */
result = (Oid)
((Form_pg_class)
GETSTRUCT(tuple))->relaosegidxid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_class */
break;
case CompressionRelationId: /* pg_compression */
{
switch(pchn->attnum)
{
case 2: /* compconstructor */
result = (Oid)
((Form_pg_compression)
GETSTRUCT(tuple))->compconstructor;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* compdestructor */
result = (Oid)
((Form_pg_compression)
GETSTRUCT(tuple))->compdestructor;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* compcompressor */
result = (Oid)
((Form_pg_compression)
GETSTRUCT(tuple))->compcompressor;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* compdecompressor */
result = (Oid)
((Form_pg_compression)
GETSTRUCT(tuple))->compdecompressor;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* compvalidator */
result = (Oid)
((Form_pg_compression)
GETSTRUCT(tuple))->compvalidator;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* compowner */
result = (Oid)
((Form_pg_compression)
GETSTRUCT(tuple))->compowner;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_compression */
break;
case ConstraintRelationId: /* pg_constraint */
{
switch(pchn->attnum)
{
case 2: /* connamespace */
result = (Oid)
((Form_pg_constraint)
GETSTRUCT(tuple))->connamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* conrelid */
result = (Oid)
((Form_pg_constraint)
GETSTRUCT(tuple))->conrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* contypid */
result = (Oid)
((Form_pg_constraint)
GETSTRUCT(tuple))->contypid;
if (pbIsNull) *pbIsNull = false;
break;
case 8: /* confrelid */
result = (Oid)
((Form_pg_constraint)
GETSTRUCT(tuple))->confrelid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_constraint */
break;
case ConversionRelationId: /* pg_conversion */
{
switch(pchn->attnum)
{
case 2: /* connamespace */
result = (Oid)
((Form_pg_conversion)
GETSTRUCT(tuple))->connamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* conowner */
result = (Oid)
((Form_pg_conversion)
GETSTRUCT(tuple))->conowner;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* conproc */
result = (Oid)
((Form_pg_conversion)
GETSTRUCT(tuple))->conproc;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_conversion */
break;
case DatabaseRelationId: /* pg_database */
{
switch(pchn->attnum)
{
case 2: /* datdba */
result = (Oid)
((Form_pg_database)
GETSTRUCT(tuple))->datdba;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* datlastsysoid */
result = (Oid)
((Form_pg_database)
GETSTRUCT(tuple))->datlastsysoid;
if (pbIsNull) *pbIsNull = false;
break;
case 9: /* dattablespace */
result = (Oid)
((Form_pg_database)
GETSTRUCT(tuple))->dattablespace;
if (pbIsNull) *pbIsNull = false;
break;
case 10: /* dat2tablespace */
result = (Oid)
((Form_pg_database)
GETSTRUCT(tuple))->dat2tablespace;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_database */
break;
case DependRelationId: /* pg_depend */
{
switch(pchn->attnum)
{
case 1: /* classid */
result = (Oid)
((Form_pg_depend)
GETSTRUCT(tuple))->classid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* objid */
result = (Oid)
((Form_pg_depend)
GETSTRUCT(tuple))->objid;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* refclassid */
result = (Oid)
((Form_pg_depend)
GETSTRUCT(tuple))->refclassid;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* refobjid */
result = (Oid)
((Form_pg_depend)
GETSTRUCT(tuple))->refobjid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_depend */
break;
case DescriptionRelationId: /* pg_description */
{
switch(pchn->attnum)
{
case 1: /* objoid */
result = (Oid)
((Form_pg_description)
GETSTRUCT(tuple))->objoid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* classoid */
result = (Oid)
((Form_pg_description)
GETSTRUCT(tuple))->classoid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_description */
break;
case ExtprotocolRelationId: /* pg_extprotocol */
{
switch(pchn->attnum)
{
case 2: /* ptcreadfn */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 2, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 3: /* ptcwritefn */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 4: /* ptcvalidatorfn */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 5: /* ptcowner */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_extprotocol */
break;
case ExtTableRelationId: /* pg_exttable */
{
switch(pchn->attnum)
{
case 1: /* reloid */
result = (Oid)
((Form_pg_exttable)
GETSTRUCT(tuple))->reloid;
if (pbIsNull) *pbIsNull = false;
break;
case 8: /* fmterrtbl */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 8, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_exttable */
break;
case FileSpaceRelationId: /* pg_filespace */
{
switch(pchn->attnum)
{
case 2: /* fsowner */
result = (Oid)
((Form_pg_filespace)
GETSTRUCT(tuple))->fsowner;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* fsfsys */
result = (Oid)
((Form_pg_filespace)
GETSTRUCT(tuple))->fsfsys;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_filespace */
break;
case FileSpaceEntryRelationId: /* pg_filespace_entry */
{
switch(pchn->attnum)
{
case 1: /* fsefsoid */
result = (Oid)
((Form_pg_filespace_entry)
GETSTRUCT(tuple))->fsefsoid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_filespace_entry */
break;
case ForeignDataWrapperRelationId: /* pg_foreign_data_wrapper */
{
switch(pchn->attnum)
{
case 2: /* fdwowner */
result = (Oid)
((Form_pg_foreign_data_wrapper)
GETSTRUCT(tuple))->fdwowner;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* fdwvalidator */
result = (Oid)
((Form_pg_foreign_data_wrapper)
GETSTRUCT(tuple))->fdwvalidator;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_foreign_data_wrapper */
break;
case ForeignServerRelationId: /* pg_foreign_server */
{
switch(pchn->attnum)
{
case 2: /* srvowner */
result = (Oid)
((Form_pg_foreign_server)
GETSTRUCT(tuple))->srvowner;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* srvfdw */
result = (Oid)
((Form_pg_foreign_server)
GETSTRUCT(tuple))->srvfdw;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_foreign_server */
break;
case ForeignTableRelationId: /* pg_foreign_table */
{
switch(pchn->attnum)
{
case 1: /* reloid */
result = (Oid)
((Form_pg_foreign_table)
GETSTRUCT(tuple))->reloid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* server */
result = (Oid)
((Form_pg_foreign_table)
GETSTRUCT(tuple))->server;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_foreign_table */
break;
case IndexRelationId: /* pg_index */
{
switch(pchn->attnum)
{
case 1: /* indexrelid */
result = (Oid)
((Form_pg_index)
GETSTRUCT(tuple))->indexrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* indrelid */
result = (Oid)
((Form_pg_index)
GETSTRUCT(tuple))->indrelid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_index */
break;
case InheritsRelationId: /* pg_inherits */
{
switch(pchn->attnum)
{
case 1: /* inhrelid */
result = (Oid)
((Form_pg_inherits)
GETSTRUCT(tuple))->inhrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* inhparent */
result = (Oid)
((Form_pg_inherits)
GETSTRUCT(tuple))->inhparent;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_inherits */
break;
case LanguageRelationId: /* pg_language */
{
switch(pchn->attnum)
{
case 4: /* lanplcallfoid */
result = (Oid)
((Form_pg_language)
GETSTRUCT(tuple))->lanplcallfoid;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* lanvalidator */
result = (Oid)
((Form_pg_language)
GETSTRUCT(tuple))->lanvalidator;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_language */
break;
case LargeObjectRelationId: /* pg_largeobject */
{
switch(pchn->attnum)
{
case 1: /* loid */
result = (Oid)
((Form_pg_largeobject)
GETSTRUCT(tuple))->loid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_largeobject */
break;
case NamespaceRelationId: /* pg_namespace */
{
switch(pchn->attnum)
{
case 2: /* nspowner */
result = (Oid)
((Form_pg_namespace)
GETSTRUCT(tuple))->nspowner;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* nspdboid */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_namespace */
break;
case OperatorClassRelationId: /* pg_opclass */
{
switch(pchn->attnum)
{
case 1: /* opcamid */
result = (Oid)
((Form_pg_opclass)
GETSTRUCT(tuple))->opcamid;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* opcnamespace */
result = (Oid)
((Form_pg_opclass)
GETSTRUCT(tuple))->opcnamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* opcowner */
result = (Oid)
((Form_pg_opclass)
GETSTRUCT(tuple))->opcowner;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* opcintype */
result = (Oid)
((Form_pg_opclass)
GETSTRUCT(tuple))->opcintype;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* opckeytype */
result = (Oid)
((Form_pg_opclass)
GETSTRUCT(tuple))->opckeytype;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_opclass */
break;
case OperatorRelationId: /* pg_operator */
{
switch(pchn->attnum)
{
case 2: /* oprnamespace */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprnamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* oprowner */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprowner;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* oprleft */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprleft;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* oprright */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprright;
if (pbIsNull) *pbIsNull = false;
break;
case 8: /* oprresult */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprresult;
if (pbIsNull) *pbIsNull = false;
break;
case 9: /* oprcom */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprcom;
if (pbIsNull) *pbIsNull = false;
break;
case 10: /* oprnegate */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprnegate;
if (pbIsNull) *pbIsNull = false;
break;
case 11: /* oprlsortop */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprlsortop;
if (pbIsNull) *pbIsNull = false;
break;
case 12: /* oprrsortop */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprrsortop;
if (pbIsNull) *pbIsNull = false;
break;
case 13: /* oprltcmpop */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprltcmpop;
if (pbIsNull) *pbIsNull = false;
break;
case 14: /* oprgtcmpop */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprgtcmpop;
if (pbIsNull) *pbIsNull = false;
break;
case 15: /* oprcode */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprcode;
if (pbIsNull) *pbIsNull = false;
break;
case 16: /* oprrest */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprrest;
if (pbIsNull) *pbIsNull = false;
break;
case 17: /* oprjoin */
result = (Oid)
((Form_pg_operator)
GETSTRUCT(tuple))->oprjoin;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_operator */
break;
case PartitionRelationId: /* pg_partition */
{
switch(pchn->attnum)
{
case 1: /* parrelid */
result = (Oid)
((Form_pg_partition)
GETSTRUCT(tuple))->parrelid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_partition */
break;
case PartitionEncodingRelationId: /* pg_partition_encoding */
{
switch(pchn->attnum)
{
case 1: /* parencoid */
result = (Oid)
((Form_pg_partition_encoding)
GETSTRUCT(tuple))->parencoid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_partition_encoding */
break;
case PartitionRuleRelationId: /* pg_partition_rule */
{
switch(pchn->attnum)
{
case 1: /* paroid */
result = (Oid)
((Form_pg_partition_rule)
GETSTRUCT(tuple))->paroid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* parchildrelid */
result = (Oid)
((Form_pg_partition_rule)
GETSTRUCT(tuple))->parchildrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* parparentrule */
result = (Oid)
((Form_pg_partition_rule)
GETSTRUCT(tuple))->parparentrule;
if (pbIsNull) *pbIsNull = false;
break;
case 14: /* partemplatespace */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 14, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_partition_rule */
break;
case ProcedureRelationId: /* pg_proc */
{
switch(pchn->attnum)
{
case 2: /* pronamespace */
result = (Oid)
((Form_pg_proc)
GETSTRUCT(tuple))->pronamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* proowner */
result = (Oid)
((Form_pg_proc)
GETSTRUCT(tuple))->proowner;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* prolang */
result = (Oid)
((Form_pg_proc)
GETSTRUCT(tuple))->prolang;
if (pbIsNull) *pbIsNull = false;
break;
case 11: /* prorettype */
result = (Oid)
((Form_pg_proc)
GETSTRUCT(tuple))->prorettype;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_proc */
break;
case ProcCallbackRelationId: /* pg_proc_callback */
{
switch(pchn->attnum)
{
case 1: /* profnoid */
result = (Oid)
((Form_pg_proc_callback)
GETSTRUCT(tuple))->profnoid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* procallback */
result = (Oid)
((Form_pg_proc_callback)
GETSTRUCT(tuple))->procallback;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_proc_callback */
break;
case ResQueueRelationId: /* pg_resqueue */
{
switch(pchn->attnum)
{
case 2: /* rsq_parent */
result = (Oid)
((Form_pg_resqueue)
GETSTRUCT(tuple))->rsq_parent;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_resqueue */
break;
case ResQueueCapabilityRelationId: /* pg_resqueuecapability */
{
switch(pchn->attnum)
{
case 1: /* resqueueid */
result = (Oid)
((Form_pg_resqueuecapability)
GETSTRUCT(tuple))->resqueueid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_resqueuecapability */
break;
case RewriteRelationId: /* pg_rewrite */
{
switch(pchn->attnum)
{
case 2: /* ev_class */
result = (Oid)
((Form_pg_rewrite)
GETSTRUCT(tuple))->ev_class;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_rewrite */
break;
case SharedDependRelationId: /* pg_shdepend */
{
switch(pchn->attnum)
{
case 1: /* dbid */
result = (Oid)
((Form_pg_shdepend)
GETSTRUCT(tuple))->dbid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* classid */
result = (Oid)
((Form_pg_shdepend)
GETSTRUCT(tuple))->classid;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* objid */
result = (Oid)
((Form_pg_shdepend)
GETSTRUCT(tuple))->objid;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* refclassid */
result = (Oid)
((Form_pg_shdepend)
GETSTRUCT(tuple))->refclassid;
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* refobjid */
result = (Oid)
((Form_pg_shdepend)
GETSTRUCT(tuple))->refobjid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_shdepend */
break;
case SharedDescriptionRelationId: /* pg_shdescription */
{
switch(pchn->attnum)
{
case 1: /* objoid */
result = (Oid)
((Form_pg_shdescription)
GETSTRUCT(tuple))->objoid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* classoid */
result = (Oid)
((Form_pg_shdescription)
GETSTRUCT(tuple))->classoid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_shdescription */
break;
case StatLastOpRelationId: /* pg_stat_last_operation */
{
switch(pchn->attnum)
{
case 1: /* classid */
result = (Oid)
((Form_pg_statlastop)
GETSTRUCT(tuple))->classid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* objid */
result = (Oid)
((Form_pg_statlastop)
GETSTRUCT(tuple))->objid;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* stasysid */
result = (Oid)
((Form_pg_statlastop)
GETSTRUCT(tuple))->stasysid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_stat_last_operation */
break;
case StatLastShOpRelationId: /* pg_stat_last_shoperation */
{
switch(pchn->attnum)
{
case 1: /* classid */
result = (Oid)
((Form_pg_statlastshop)
GETSTRUCT(tuple))->classid;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* objid */
result = (Oid)
((Form_pg_statlastshop)
GETSTRUCT(tuple))->objid;
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* stasysid */
result = (Oid)
((Form_pg_statlastshop)
GETSTRUCT(tuple))->stasysid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_stat_last_shoperation */
break;
case StatisticRelationId: /* pg_statistic */
{
switch(pchn->attnum)
{
case 1: /* starelid */
result = (Oid)
((Form_pg_statistic)
GETSTRUCT(tuple))->starelid;
if (pbIsNull) *pbIsNull = false;
break;
case 10: /* staop1 */
result = (Oid)
((Form_pg_statistic)
GETSTRUCT(tuple))->staop1;
if (pbIsNull) *pbIsNull = false;
break;
case 11: /* staop2 */
result = (Oid)
((Form_pg_statistic)
GETSTRUCT(tuple))->staop2;
if (pbIsNull) *pbIsNull = false;
break;
case 12: /* staop3 */
result = (Oid)
((Form_pg_statistic)
GETSTRUCT(tuple))->staop3;
if (pbIsNull) *pbIsNull = false;
break;
case 13: /* staop4 */
result = (Oid)
((Form_pg_statistic)
GETSTRUCT(tuple))->staop4;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_statistic */
break;
case TableSpaceRelationId: /* pg_tablespace */
{
switch(pchn->attnum)
{
case 2: /* spcowner */
result = (Oid)
((Form_pg_tablespace)
GETSTRUCT(tuple))->spcowner;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* spcfsoid */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 7, &isnull);
if (!isnull)
result = DatumGetObjectId(d);
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_tablespace */
break;
case TriggerRelationId: /* pg_trigger */
{
switch(pchn->attnum)
{
case 1: /* tgrelid */
result = (Oid)
((Form_pg_trigger)
GETSTRUCT(tuple))->tgrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* tgfoid */
result = (Oid)
((Form_pg_trigger)
GETSTRUCT(tuple))->tgfoid;
if (pbIsNull) *pbIsNull = false;
break;
case 8: /* tgconstrrelid */
result = (Oid)
((Form_pg_trigger)
GETSTRUCT(tuple))->tgconstrrelid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_trigger */
break;
case TypeRelationId: /* pg_type */
{
switch(pchn->attnum)
{
case 2: /* typnamespace */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typnamespace;
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* typowner */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typowner;
if (pbIsNull) *pbIsNull = false;
break;
case 9: /* typrelid */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typrelid;
if (pbIsNull) *pbIsNull = false;
break;
case 10: /* typelem */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typelem;
if (pbIsNull) *pbIsNull = false;
break;
case 11: /* typinput */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typinput;
if (pbIsNull) *pbIsNull = false;
break;
case 12: /* typoutput */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typoutput;
if (pbIsNull) *pbIsNull = false;
break;
case 13: /* typreceive */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typreceive;
if (pbIsNull) *pbIsNull = false;
break;
case 14: /* typsend */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typsend;
if (pbIsNull) *pbIsNull = false;
break;
case 15: /* typanalyze */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typanalyze;
if (pbIsNull) *pbIsNull = false;
break;
case 19: /* typbasetype */
result = (Oid)
((Form_pg_type)
GETSTRUCT(tuple))->typbasetype;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_type */
break;
case TypeEncodingRelationId: /* pg_type_encoding */
{
switch(pchn->attnum)
{
case 1: /* typid */
result = (Oid)
((Form_pg_type_encoding)
GETSTRUCT(tuple))->typid;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_type_encoding */
break;
case UserMappingRelationId: /* pg_user_mapping */
{
switch(pchn->attnum)
{
case 1: /* umuser */
result = (Oid)
((Form_pg_user_mapping)
GETSTRUCT(tuple))->umuser;
if (pbIsNull) *pbIsNull = false;
break;
case 2: /* umserver */
result = (Oid)
((Form_pg_user_mapping)
GETSTRUCT(tuple))->umserver;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_user_mapping */
break;
case WindowRelationId: /* pg_window */
{
switch(pchn->attnum)
{
case 1: /* winfnoid */
result = (Oid)
((Form_pg_window)
GETSTRUCT(tuple))->winfnoid;
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* winfunc */
result = (Oid)
((Form_pg_window)
GETSTRUCT(tuple))->winfunc;
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* winprefunc */
result = (Oid)
((Form_pg_window)
GETSTRUCT(tuple))->winprefunc;
if (pbIsNull) *pbIsNull = false;
break;
case 8: /* winpretype */
result = (Oid)
((Form_pg_window)
GETSTRUCT(tuple))->winpretype;
if (pbIsNull) *pbIsNull = false;
break;
case 9: /* winfinfunc */
result = (Oid)
((Form_pg_window)
GETSTRUCT(tuple))->winfinfunc;
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not an oid: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_window */
break;
default:
elog(ERROR, "could not get column for relation: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
}
} /* end HeapTupleIsValid */
if (pCtx->cq_usesyscache)
{
if (HeapTupleIsValid(tuple))
ReleaseSysCache(tuple);
}
else
{
if (pFetchcount && HeapTupleIsValid(tuple))
{
if (HeapTupleIsValid(systable_getnext(pCtx->cq_sysScan)))
{
*pFetchcount = 2;
}
}
systable_endscan(pCtx->cq_sysScan);
}
caql_heapclose(pCtx);
return (result);
} /* end caql_getoid_plus */
/* ----------------------------------------------------------------
* caql_getoid_only()
* Return the oid of the first tuple and end the scan
* If pbOnly is not NULL, return TRUE if a second tuple is not found,
* else return FALSE
* ----------------------------------------------------------------
*/
Oid caql_getoid_only(cqContext *pCtx0, bool *pbOnly, cq_list *pcql)
{
const char* caql_str = pcql->caqlStr;
const char* filenam = pcql->filename;
int lineno = pcql->lineno;
struct caql_hash_cookie *pchn = cq_lookup(caql_str, strlen(caql_str), pcql);
cqContext *pCtx;
cqContext cqc;
HeapTuple tuple;
Relation rel;
Oid result = InvalidOid;
if (NULL == pchn)
elog(ERROR, "invalid caql string: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
Assert(!pchn->bInsert); /* INSERT not allowed */
/* use the provided context, or provide a clean local ctx */
if (pCtx0)
pCtx = pCtx0;
else
pCtx = cqclr(&cqc);
pCtx = caql_switch(pchn, pCtx, pcql);
/* NOTE: caql_switch frees the pcql */
rel = pCtx->cq_heap_rel;
if (pbOnly) *pbOnly = true;
/* use the SysCache */
if (pCtx->cq_usesyscache)
{
tuple = SearchSysCacheKeyArray(pCtx->cq_cacheId,
pCtx->cq_NumKeys,
pCtx->cq_cacheKeys);
disable_catalog_check(pCtx, tuple);
if (HeapTupleIsValid(tuple))
{
result = HeapTupleGetOid(tuple);
ReleaseSysCache(tuple);
/* only one */
}
caql_heapclose(pCtx);
return (result);
}
if (HeapTupleIsValid(tuple = systable_getnext(pCtx->cq_sysScan)))
{
disable_catalog_check(pCtx, tuple);
result = HeapTupleGetOid(tuple);
if (pbOnly)
{
*pbOnly =
!(HeapTupleIsValid(tuple =
systable_getnext(pCtx->cq_sysScan)));
}
}
systable_endscan(pCtx->cq_sysScan);
caql_heapclose(pCtx);
return (result);
}
/* ----------------------------------------------------------------
* caql_getcstring_plus()
* Return a cstring column from the first tuple and end the scan.
* ----------------------------------------------------------------
*/
char *caql_getcstring_plus(cqContext *pCtx0, int *pFetchcount,
bool *pbIsNull, cq_list *pcql)
{
const char* caql_str = pcql->caqlStr;
const char* filenam = pcql->filename;
int lineno = pcql->lineno;
struct caql_hash_cookie *pchn = cq_lookup(caql_str, strlen(caql_str), pcql);
cqContext *pCtx;
cqContext cqc;
HeapTuple tuple;
Relation rel;
char *result = NULL;
if (NULL == pchn)
elog(ERROR, "invalid caql string: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
Assert(!pchn->bInsert); /* INSERT not allowed */
/* use the provided context, or provide a clean local ctx */
if (pCtx0)
pCtx = pCtx0;
else
pCtx = cqclr(&cqc);
pCtx = caql_switch(pchn, pCtx, pcql);
/* NOTE: caql_switch frees the pcql */
rel = pCtx->cq_heap_rel;
if (pFetchcount) *pFetchcount = 0;
if (pbIsNull) *pbIsNull = true;
/* use the SysCache */
if (pCtx->cq_usesyscache)
{
tuple = SearchSysCacheKeyArray(pCtx->cq_cacheId,
pCtx->cq_NumKeys,
pCtx->cq_cacheKeys);
}
else
{
tuple = systable_getnext(pCtx->cq_sysScan);
}
disable_catalog_check(pCtx, tuple);
if (HeapTupleIsValid(tuple))
{
if (pFetchcount) *pFetchcount = 1;
switch(pCtx->cq_relationId)
{
case GpSegmentConfigRelationId: /* gp_segment_configuration */
{
switch(pchn->attnum)
{
case 5: /* hostname */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 6: /* address */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 6, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end gp_segment_configuration */
break;
case AggregateRelationId: /* pg_aggregate */
{
switch(pchn->attnum)
{
case 9: /* agginitval */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 9, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_aggregate */
break;
case AccessMethodRelationId: /* pg_am */
{
switch(pchn->attnum)
{
case 1: /* amname */
result = pstrdup(
NameStr(((Form_pg_am)
GETSTRUCT(tuple))->amname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_am */
break;
case AppendOnlyRelationId: /* pg_appendonly */
{
switch(pchn->attnum)
{
case 8: /* compresstype */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 8, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_appendonly */
break;
case AttrDefaultRelationId: /* pg_attrdef */
{
switch(pchn->attnum)
{
case 3: /* adbin */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 4: /* adsrc */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_attrdef */
break;
case AttributeRelationId: /* pg_attribute */
{
switch(pchn->attnum)
{
case 2: /* attname */
result = pstrdup(
NameStr(((Form_pg_attribute)
GETSTRUCT(tuple))->attname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_attribute */
break;
case AttributeEncodingRelationId: /* pg_attribute_encoding */
{
switch(pchn->attnum)
{
case 3: /* attoptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_attribute_encoding */
break;
case AuthIdRelationId: /* pg_authid */
{
switch(pchn->attnum)
{
case 1: /* rolname */
result = pstrdup(
NameStr(((Form_pg_authid)
GETSTRUCT(tuple))->rolname));
if (pbIsNull) *pbIsNull = false;
break;
case 9: /* rolpassword */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 9, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 11: /* rolconfig */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 11, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_authid */
break;
case RelationRelationId: /* pg_class */
{
switch(pchn->attnum)
{
case 1: /* relname */
result = pstrdup(
NameStr(((Form_pg_class)
GETSTRUCT(tuple))->relname));
if (pbIsNull) *pbIsNull = false;
break;
case 30: /* reloptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 30, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_class */
break;
case CompressionRelationId: /* pg_compression */
{
switch(pchn->attnum)
{
case 1: /* compname */
result = pstrdup(
NameStr(((Form_pg_compression)
GETSTRUCT(tuple))->compname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_compression */
break;
case ConstraintRelationId: /* pg_constraint */
{
switch(pchn->attnum)
{
case 1: /* conname */
result = pstrdup(
NameStr(((Form_pg_constraint)
GETSTRUCT(tuple))->conname));
if (pbIsNull) *pbIsNull = false;
break;
case 14: /* conbin */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 14, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 15: /* consrc */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 15, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_constraint */
break;
case ConversionRelationId: /* pg_conversion */
{
switch(pchn->attnum)
{
case 1: /* conname */
result = pstrdup(
NameStr(((Form_pg_conversion)
GETSTRUCT(tuple))->conname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_conversion */
break;
case DatabaseRelationId: /* pg_database */
{
switch(pchn->attnum)
{
case 1: /* datname */
result = pstrdup(
NameStr(((Form_pg_database)
GETSTRUCT(tuple))->datname));
if (pbIsNull) *pbIsNull = false;
break;
case 11: /* datconfig */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 11, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_database */
break;
case DescriptionRelationId: /* pg_description */
{
switch(pchn->attnum)
{
case 4: /* description */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_description */
break;
case ExtprotocolRelationId: /* pg_extprotocol */
{
switch(pchn->attnum)
{
case 1: /* ptcname */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 1, &isnull);
if (!isnull)
result = pstrdup(
NameStr(*(DatumGetName(d))));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_extprotocol */
break;
case ExtTableRelationId: /* pg_exttable */
{
switch(pchn->attnum)
{
case 2: /* location */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 2, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 4: /* fmtopts */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 5: /* command */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_exttable */
break;
case FileSpaceRelationId: /* pg_filespace */
{
switch(pchn->attnum)
{
case 1: /* fsname */
result = pstrdup(
NameStr(((Form_pg_filespace)
GETSTRUCT(tuple))->fsname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_filespace */
break;
case FileSpaceEntryRelationId: /* pg_filespace_entry */
{
switch(pchn->attnum)
{
case 3: /* fselocation */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_filespace_entry */
break;
case ForeignDataWrapperRelationId: /* pg_foreign_data_wrapper */
{
switch(pchn->attnum)
{
case 1: /* fdwname */
result = pstrdup(
NameStr(((Form_pg_foreign_data_wrapper)
GETSTRUCT(tuple))->fdwname));
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* fdwoptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_foreign_data_wrapper */
break;
case ForeignServerRelationId: /* pg_foreign_server */
{
switch(pchn->attnum)
{
case 1: /* srvname */
result = pstrdup(
NameStr(((Form_pg_foreign_server)
GETSTRUCT(tuple))->srvname));
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* srvtype */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 5: /* srvversion */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 7: /* srvoptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 7, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_foreign_server */
break;
case ForeignTableRelationId: /* pg_foreign_table */
{
switch(pchn->attnum)
{
case 3: /* tbloptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_foreign_table */
break;
case IndexRelationId: /* pg_index */
{
switch(pchn->attnum)
{
case 10: /* indexprs */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 10, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 11: /* indpred */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 11, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_index */
break;
case LanguageRelationId: /* pg_language */
{
switch(pchn->attnum)
{
case 1: /* lanname */
result = pstrdup(
NameStr(((Form_pg_language)
GETSTRUCT(tuple))->lanname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_language */
break;
case NamespaceRelationId: /* pg_namespace */
{
switch(pchn->attnum)
{
case 1: /* nspname */
result = pstrdup(
NameStr(((Form_pg_namespace)
GETSTRUCT(tuple))->nspname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_namespace */
break;
case OperatorClassRelationId: /* pg_opclass */
{
switch(pchn->attnum)
{
case 2: /* opcname */
result = pstrdup(
NameStr(((Form_pg_opclass)
GETSTRUCT(tuple))->opcname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_opclass */
break;
case OperatorRelationId: /* pg_operator */
{
switch(pchn->attnum)
{
case 1: /* oprname */
result = pstrdup(
NameStr(((Form_pg_operator)
GETSTRUCT(tuple))->oprname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_operator */
break;
case PartitionEncodingRelationId: /* pg_partition_encoding */
{
switch(pchn->attnum)
{
case 3: /* parencattoptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_partition_encoding */
break;
case PartitionRuleRelationId: /* pg_partition_rule */
{
switch(pchn->attnum)
{
case 4: /* parname */
result = pstrdup(
NameStr(((Form_pg_partition_rule)
GETSTRUCT(tuple))->parname));
if (pbIsNull) *pbIsNull = false;
break;
case 9: /* parrangestart */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 9, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 10: /* parrangeend */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 10, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 11: /* parrangeevery */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 11, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 12: /* parlistvalues */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 12, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 13: /* parreloptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 13, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_partition_rule */
break;
case PLTemplateRelationId: /* pg_pltemplate */
{
switch(pchn->attnum)
{
case 1: /* tmplname */
result = pstrdup(
NameStr(((Form_pg_pltemplate)
GETSTRUCT(tuple))->tmplname));
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* tmplhandler */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 4: /* tmplvalidator */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 5: /* tmpllibrary */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_pltemplate */
break;
case ProcedureRelationId: /* pg_proc */
{
switch(pchn->attnum)
{
case 1: /* proname */
result = pstrdup(
NameStr(((Form_pg_proc)
GETSTRUCT(tuple))->proname));
if (pbIsNull) *pbIsNull = false;
break;
case 16: /* proargnames */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 16, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 17: /* prosrc */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 17, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_proc */
break;
case ResQueueRelationId: /* pg_resqueue */
{
switch(pchn->attnum)
{
case 1: /* rsqname */
result = pstrdup(
NameStr(((Form_pg_resqueue)
GETSTRUCT(tuple))->rsqname));
if (pbIsNull) *pbIsNull = false;
break;
case 4: /* rsq_memory_limit_cluster */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 4, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 5: /* rsq_core_limit_cluster */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 7: /* rsq_allocation_policy */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 7, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 8: /* rsq_seg_resource_quota */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 8, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 11: /* rsq_status */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 11, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_resqueue */
break;
case ResQueueCapabilityRelationId: /* pg_resqueuecapability */
{
switch(pchn->attnum)
{
case 3: /* ressetting */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_resqueuecapability */
break;
case RewriteRelationId: /* pg_rewrite */
{
switch(pchn->attnum)
{
case 1: /* rulename */
result = pstrdup(
NameStr(((Form_pg_rewrite)
GETSTRUCT(tuple))->rulename));
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* ev_qual */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 6, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 7: /* ev_action */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 7, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_rewrite */
break;
case SharedDescriptionRelationId: /* pg_shdescription */
{
switch(pchn->attnum)
{
case 3: /* description */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_shdescription */
break;
case StatLastOpRelationId: /* pg_stat_last_operation */
{
switch(pchn->attnum)
{
case 3: /* staactionname */
result = pstrdup(
NameStr(((Form_pg_statlastop)
GETSTRUCT(tuple))->staactionname));
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* stausename */
result = pstrdup(
NameStr(((Form_pg_statlastop)
GETSTRUCT(tuple))->stausename));
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* stasubtype */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 6, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_stat_last_operation */
break;
case StatLastShOpRelationId: /* pg_stat_last_shoperation */
{
switch(pchn->attnum)
{
case 3: /* staactionname */
result = pstrdup(
NameStr(((Form_pg_statlastshop)
GETSTRUCT(tuple))->staactionname));
if (pbIsNull) *pbIsNull = false;
break;
case 5: /* stausename */
result = pstrdup(
NameStr(((Form_pg_statlastshop)
GETSTRUCT(tuple))->stausename));
if (pbIsNull) *pbIsNull = false;
break;
case 6: /* stasubtype */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 6, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_stat_last_shoperation */
break;
case StatisticRelationId: /* pg_statistic */
{
switch(pchn->attnum)
{
case 18: /* stavalues1 */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 18, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 19: /* stavalues2 */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 19, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 20: /* stavalues3 */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 20, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 21: /* stavalues4 */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 21, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_statistic */
break;
case TableSpaceRelationId: /* pg_tablespace */
{
switch(pchn->attnum)
{
case 1: /* spcname */
result = pstrdup(
NameStr(((Form_pg_tablespace)
GETSTRUCT(tuple))->spcname));
if (pbIsNull) *pbIsNull = false;
break;
case 3: /* spclocation */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 5: /* spcprilocations */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 5, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 6: /* spcmirlocations */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 6, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_tablespace */
break;
case TriggerRelationId: /* pg_trigger */
{
switch(pchn->attnum)
{
case 2: /* tgname */
result = pstrdup(
NameStr(((Form_pg_trigger)
GETSTRUCT(tuple))->tgname));
if (pbIsNull) *pbIsNull = false;
break;
case 7: /* tgconstrname */
result = pstrdup(
NameStr(((Form_pg_trigger)
GETSTRUCT(tuple))->tgconstrname));
if (pbIsNull) *pbIsNull = false;
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_trigger */
break;
case TypeRelationId: /* pg_type */
{
switch(pchn->attnum)
{
case 1: /* typname */
result = pstrdup(
NameStr(((Form_pg_type)
GETSTRUCT(tuple))->typname));
if (pbIsNull) *pbIsNull = false;
break;
case 22: /* typdefaultbin */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 22, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
case 23: /* typdefault */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 23, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_type */
break;
case TypeEncodingRelationId: /* pg_type_encoding */
{
switch(pchn->attnum)
{
case 2: /* typoptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 2, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_type_encoding */
break;
case UserMappingRelationId: /* pg_user_mapping */
{
switch(pchn->attnum)
{
case 3: /* umoptions */
{
bool isnull;
Datum d =
caql_getattr_internal(pCtx, tuple, 3, &isnull);
if (!isnull)
result = DatumGetCString(
DirectFunctionCall1(textout, d));
if (pbIsNull) *pbIsNull = isnull;
}
break;
default:
elog(ERROR, "column not a cstring: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end pg_user_mapping */
break;
default:
elog(ERROR, "could not get column for relation: %s\nfile: %s, line %d",
caql_str, filenam, lineno);
}
} /* end HeapTupleIsValid */
if (pCtx->cq_usesyscache)
{
if (HeapTupleIsValid(tuple))
ReleaseSysCache(tuple);
}
else
{
if (pFetchcount && HeapTupleIsValid(tuple))
{
if (HeapTupleIsValid(systable_getnext(pCtx->cq_sysScan)))
{
*pFetchcount = 2;
}
}
systable_endscan(pCtx->cq_sysScan);
}
caql_heapclose(pCtx);
return (result);
} /* end caql_getcstring_plus */
void
caql_logquery(const char *funcname, const char *filename, int lineno,
int uniqquery_code, Oid arg1)
{
}